diff --git a/java/README.md b/java/README.md index 66f8205fc9154f4bd05608306f01782c41ae0231..f1e9184dca3d8125ccd9a29537bf29b41751c4ec 100644 --- a/java/README.md +++ b/java/README.md @@ -2,15 +2,6 @@ For per-module licenses, see LICENSE.md file in each directory. # Docker -Some modules are now setup to generate docker containers. This includes: - -* lc-esp-engine -* lc-telemetry-faketsdb-service -* lc-telemetry-historian-service -* lc-telemetry-monitor -* lc-stack-dns -* lc-stack-zero-beacon - To build a module as a docker container, run: * gradle build dockerfile docker diff --git a/java/docker.sh b/java/docker.sh deleted file mode 100644 index edfdfaf59c684c719eabf1f2fe11c3156f3b6741..0000000000000000000000000000000000000000 --- a/java/docker.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -for d in *-svc; do - echo $d - (cd $d ; gradle build dockerfile dockerpush) -done - diff --git a/java/keystore/UTC--2022-03-30T23-25-32.462178000Z--6bdb22c0897cc0d0dbf3942b33e28adf3c6f98be b/java/keystore/UTC--2022-03-30T23-25-32.462178000Z--6bdb22c0897cc0d0dbf3942b33e28adf3c6f98be deleted file mode 100644 index e648caab19d8a6488e4080764f4d99f33bc89ebf..0000000000000000000000000000000000000000 --- a/java/keystore/UTC--2022-03-30T23-25-32.462178000Z--6bdb22c0897cc0d0dbf3942b33e28adf3c6f98be +++ /dev/null @@ -1 +0,0 @@ -{"address":"6bdb22c0897cc0d0dbf3942b33e28adf3c6f98be","crypto":{"cipher":"aes-128-ctr","ciphertext":"66af1afe503ee3fbf5ba392dbb47b6dcf28ef2a0baf3dc1f675ab2cad4a7cb68","cipherparams":{"iv":"ba37a95d01647d9abe82ccac4cc3930f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"d0dece6fe789c87cc148d5c57e8562bbc286d81bfb56dea6f1e766b0df728a56"},"mac":"5fc34a0d8131f76e32de83316d04c4f0ea52918670d53156bc873bbf61e79688"},"id":"79d389fb-ae87-4714-8817-fc46597b2387","version":3} \ No newline at end of file diff --git a/java/lc-amf/build.gradle b/java/lc-amf/build.gradle deleted file mode 100644 index 3a1a10dda1c058c904e08f5f4cbd7a29f59f9c67..0000000000000000000000000000000000000000 --- a/java/lc-amf/build.gradle +++ /dev/null @@ -1,22 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -group 'leighco' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-mecha') - api 'org.roaringbitmap:RoaringBitmap:0.9.36' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-amf/src/main/java/lc/amf/MessageChain.java b/java/lc-amf/src/main/java/lc/amf/MessageChain.java deleted file mode 100644 index b7801e5fe83c88318cb32bf4e53144c5876369ed..0000000000000000000000000000000000000000 --- a/java/lc-amf/src/main/java/lc/amf/MessageChain.java +++ /dev/null @@ -1,46 +0,0 @@ -package lc.amf; - -import org.roaringbitmap.RoaringBitmap; - -import java.util.HashMap; - -/** - * A message index represents a series of messages which have been sent from one party to another. - * - * @author C. Alexander Leigh - */ -public class MessageChain { - private final int sourceAddress; - private final int destAddress; - - private int highWaterMark = -1; - private final RoaringBitmap index; - private final HashMap messages = new HashMap<>(); - - public MessageChain(int sourceAddress, int destAddress) { - this.sourceAddress = sourceAddress; - this.destAddress = destAddress; - index = new RoaringBitmap(); - } - - /** - * Returns true if this chain contains the given message. - */ - public boolean contains(int sequence) { - return index.contains(sequence); - } - - public void set(Integer msgNum, E msg) { - index.add(msgNum); - messages.put(msgNum, msg); - if (msgNum > highWaterMark) highWaterMark = msgNum; - } - - public int getHighWaterMark() { - return highWaterMark; - } - - protected int getIndexSizeInBytes() { - return index.getSizeInBytes(); - } -} diff --git a/java/lc-amf/src/test/java/lc/amf/MessageChainTest.java b/java/lc-amf/src/test/java/lc/amf/MessageChainTest.java deleted file mode 100644 index ec1d9b6793ceb9c9423b4eeca4f8159cc5f90ae7..0000000000000000000000000000000000000000 --- a/java/lc-amf/src/test/java/lc/amf/MessageChainTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package lc.amf; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class MessageChainTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(MessageChainTest.class); - - @Test - public void testMessageSet() { - MessageChain chain = new MessageChain<>(0, 1); - - assertEquals(-1, chain.getHighWaterMark()); - chain.set(2, "Hello World"); - assertEquals(2, chain.getHighWaterMark()); - chain.set(4, "Advance To Rally Charlie"); - assertEquals(4, chain.getHighWaterMark()); - - assert (chain.contains(2)); - assert (chain.contains(4)); - assert (!chain.contains(3)); - - logger.info("Chain size: {} bytes", chain.getIndexSizeInBytes()); - } - - @Test - public void sizeTest() { - MessageChain chain = new MessageChain<>(0, 1); - for (int ctr = 1; ctr <= 300; ctr++) { - int num = (int) (Math.random() * 1000); - chain.set(num, "Hello World"); - } - logger.info("Chain size: {} bytes", chain.getIndexSizeInBytes()); - } -} diff --git a/java/lc-astro-indi/.gitignore b/java/lc-astro-indi/.gitignore deleted file mode 100644 index ede7310f5aa22a8bb16f7393dedac5d9b0cba2c9..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -kabe.log -velocity.log -.DS_Store -statistic.xml -.gradle -/*/build/ -/build/ -gradle-app.setting -!gradle-wrapper.jar -.gradletasknamecache -.idea/ -*.iml -out/ -.cache -node_modules -/*/.idea -.vi -/*/graph.eo -.vai -graph.bak -.idea -tests.vai -vds.log -hosts.json -tests.vai.old \ No newline at end of file diff --git a/java/lc-astro-indi/LICENSE.md b/java/lc-astro-indi/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-astro-indi/README.txt b/java/lc-astro-indi/README.txt deleted file mode 100644 index 933d7e795b5c199c2882b04dfbdcd69131e9775d..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/README.txt +++ /dev/null @@ -1 +0,0 @@ -Astronomy control software peculiar to INDI. \ No newline at end of file diff --git a/java/lc-astro-indi/build.gradle b/java/lc-astro-indi/build.gradle deleted file mode 100644 index dce48123824b899597f39cc44484a1b5937e2f6d..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() - maven { - url "https://oss.sonatype.org/content/repositories/snapshots" - } -} - -dependencies { - api project(':lc-astro') - api group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' - api group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.15' - api group: 'javax.websocket', name: 'javax.websocket-api', version: '1.1' - api group: 'org.glassfish.tyrus', name: 'tyrus-client', version: '1.17' - api group: 'commons-codec', name: 'commons-codec', version: '1.15' -} \ No newline at end of file diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/AstroClient.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/AstroClient.java deleted file mode 100644 index 18772da8dcf294e4129a5b46fa821d8873281d07..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/AstroClient.java +++ /dev/null @@ -1,99 +0,0 @@ -package lc.astro.indi; - -import lc.astro.indi.base.Constants; -import lc.astro.indi.client.INDIDevice; -import lc.astro.indi.client.INDIServerConnection; -import lc.astro.indi.client.INDIServerConnectionListener; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.IOException; -import java.util.Date; - -public class AstroClient implements INDIServerConnectionListener { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(AstroClient.class); - - static { - INDIURLStreamHandlerFactory.init(); - } - - private INDIServerConnection currentConnection; - - public AstroClient(String host, int port) { - currentConnection = new INDIServerConnection(host, port); - - // Listen to all server events - currentConnection.addINDIServerConnectionListener(this); - - try { - currentConnection.connect(); - currentConnection.askForDevices(); // Ask for all the devices. - } catch (IOException e) { - logger.error("Problem with the connection: " + host + ":" + port, e); - } - } - - public static void main(String[] args) { - if (args.length < 1 || args.length > 2) { - printErrorMessageAndExit(); - } - - String host = args[0]; - int port = Constants.INDI_DEFAULT_PORT; - - if (args.length > 1) { - try { - port = Integer.parseInt(args[1]); - } catch (NumberFormatException e) { - printErrorMessageAndExit(); - } - } - - new AstroClient(host, port); - } - - private static void printErrorMessageAndExit() { - System.out.println("The program must be called in the following way:"); - - System.out.println("> java SimpleINDIClient host [port]\n where"); - System.out.println(" host - is the INDI Server to connect to"); - System.out.println(" port - is the INDI Server port. If not present the default port (" + - Constants.INDI_DEFAULT_PORT + ") will be used.\n"); - - System.exit(-1); - } - - @Override - public void newDevice(INDIServerConnection connection, INDIDevice device) { - // We just simply listen to this Device - System.out.println("New device: " + device.getName()); - - // Enable receiving BLOBs from this Device - try { - device.blobsEnable(Constants.BLOBEnables.ALSO); - } catch (IOException e) { - e.printStackTrace(); - } - - device.addINDIDeviceListener(new DebugListener(device)); - } - - @Override - public void removeDevice(INDIServerConnection connection, INDIDevice device) { - // We just remove ourselves as a listener of the removed device - System.out.println("Device Removed: " + device.getName()); - } - - @Override - public void connectionLost(INDIServerConnection connection) { - System.out.println("Connection lost. Bye"); - - System.exit(-1); - } - - @Override - public void newMessage(INDIServerConnection connection, Date timestamp, String message) { - System.out.println("New Server Message: " + timestamp + " - " + message); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/DebugListener.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/DebugListener.java deleted file mode 100644 index c128efb4fcbee13692c0020ac1502d5688c32964..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/DebugListener.java +++ /dev/null @@ -1,46 +0,0 @@ -package lc.astro.indi; - -import lc.astro.indi.client.INDIDevice; -import lc.astro.indi.client.INDIDeviceListener; -import lc.astro.indi.client.INDIProperty; -import lc.astro.indi.client.INDIPropertyListener; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -/** - * This class implements a debug listener for INDI devices, and simply outputs their properties and changes. - * - * @author Alex Leigh - */ -public class DebugListener implements INDIDeviceListener { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DebugListener.class); - private final INDIDevice dev; - - public DebugListener(INDIDevice dev) { - this.dev = dev; - } - - @Override - public void newProperty(INDIDevice indiDevice, INDIProperty indiProperty) { - logger.info("newProp: [dev: {}] [name: {}] [values: {}]", - indiDevice.getName(), indiProperty.getName(), indiProperty.getValuesAsString()); - indiProperty.addINDIPropertyListener(new INDIPropertyListener() { - @Override - public void propertyChanged(INDIProperty property) { - logger.info("Property changed. [dev: {}] [name: {}] [value: {}]", - indiDevice.getName(), property.getName(), property.getValuesAsString()); - } - }); - } - - @Override - public void removeProperty(INDIDevice indiDevice, INDIProperty indiProperty) { - logger.info("removeProperty: [device: {}] [name: {}]", indiDevice.getName(), indiProperty); - - } - - @Override - public void messageChanged(INDIDevice indiDevice) { - logger.info("Message: [dev: {}] [msg: {}]", indiDevice.getName(), indiDevice.getLastMessage()); - } -} \ No newline at end of file diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/ClassInstantiator.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/ClassInstantiator.java deleted file mode 100644 index 48ef1582ab3227717dd48e9ac18d626f4ccd1847..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/ClassInstantiator.java +++ /dev/null @@ -1,119 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; - -/** - * A class to instantiate other classes based on their name and constructor - * parameters. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public final class ClassInstantiator { - - /** - * A logger for the errors. - */ - private static final Logger LOG = LoggerFactory.getLogger(ClassInstantiator.class); - - /** - * A private constructor to avoid instantiating this utility class. - */ - private ClassInstantiator() { - } - - /** - * Instantiates an object from a list of possible classes. The object will - * be of the class of the first instantiable class in an array. - * - * @param possibleClassNames An array of class names from which to try to instantiate a - * object. - * @param arguments The arguments for the constructors. - * @return The first object that can be instantiated from a list of classes. - * @throws INDIException if there is no suitable class to be instantiated. - */ - public static Object instantiate(final String[] possibleClassNames, final Object[] arguments) throws INDIException { - /* - * Class[] argumentClasses = new Class[arguments.length]; for (int i = - * 0; i < argumentClasses.length; i++) { argumentClasses[i] = - * arguments[i].getClass(); } - */ - - for (String className : possibleClassNames) { - try { - Class theClass = Class.forName(className); - Constructor[] constructors = theClass.getConstructors(); - - Constructor constructor = getSuitableConstructor(constructors, arguments); - Object obj = constructor.newInstance(arguments); - - return obj; // If the object could be instantiated return it. - } catch (ClassNotFoundException ex) { - LOG.error("Could not instantiate", ex); - } catch (InstantiationException ex) { - LOG.error("Could not instantiate", ex); - } catch (IllegalAccessException ex) { - LOG.error("Could not instantiate", ex); - } catch (InvocationTargetException ex) { - LOG.error("Could not instantiate", ex); - } - } - - throw new INDIException("No suitable class to instantiate. Probably some libraries are missing in the classpath."); - } - - /** - * Gets a suitable Constructor from a list. It check for the parameters to - * coincide with a list of parameter classes. - * - * @param constructors The list of constructors from which to get a suitable one. - * @param arguments The array of parameters objects for the constructor. - * @return The first suitable constructor for a set of parameters. - * @throws INDIException If no suitable constructor is found. - */ - private static Constructor getSuitableConstructor(final Constructor[] constructors, final Object[] arguments) throws INDIException { - for (Constructor c : constructors) { - Class[] cClassParam = c.getParameterTypes(); - boolean match = true; - if (cClassParam.length != arguments.length) { - match = false; - } - for (int h = 0; h < arguments.length; h++) { - if (!cClassParam[h].isInstance(arguments[h])) { - match = false; - } - } - - if (match) { - return c; - } - } - - throw new INDIException("No suitable class to instantiate. Probably some libraries are missing in the classpath."); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/Constants.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/Constants.java deleted file mode 100644 index 1427ce887c31fe3052e48ab598c70b929780d67a..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/Constants.java +++ /dev/null @@ -1,516 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A class representing a some Constants and convenience functions to deal with - * them used in several parts of the INDI for Java libraries. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public final class Constants { - - /** - * The default port for the INDI protocol. - */ - public static final int INDI_DEFAULT_PORT = 7624; - - /** - * Default size for buffers. - */ - public static final int BUFFER_SIZE = 1000000; - - /** - * The number of milliseconds used in the dinamic wait for property methods. - */ - public static final int WAITING_INTERVAL = 500; - - /** - * Milliseconds in a second. - */ - public static final int MILLISECONDS_IN_A_SECOND = 1000; - - /** - * A private constructor to avoid instantiating this utility class. - */ - private Constants() { - } - - /** - * Possible Light State Values. - */ - public enum LightStates { - - /** - * Idle State. - */ - IDLE, - /** - * Ok State. - */ - OK, - /** - * Busy State. - */ - BUSY, - /** - * Alert State. - */ - ALERT - } - - ; - - /** - * Parses a Light State. - * - * @param state a string representation of the Light State to be parsed - * ("Alert" or "Busy" or "Ok" or "Idle"). - * @return The parsed Light State - */ - public static LightStates parseLightState(final String state) { - if (state.compareTo("Alert") == 0) { - return LightStates.ALERT; - } else if (state.compareTo("Busy") == 0) { - return LightStates.BUSY; - } else if (state.compareTo("Ok") == 0) { - return LightStates.OK; - } else if (state.compareTo("Idle") == 0) { - return LightStates.IDLE; - } - - throw new IllegalArgumentException("Invalid LightState String: '" + state + "'"); - } - - /** - * Checks if a string corresponds to a valid LightState. - * - * @param state The string to check - * @return true if it corresponds to a valid LightState. - * false otherwise. - */ - public static boolean isValidLightState(final String state) { - try { - parseLightState(state); - } catch (IllegalArgumentException e) { - return false; - } - - return true; - } - - /** - * Gets a String representation of the Light State. - * - * @param lightState The Light State - * @return A String representation of the Light State - */ - public static String getLightStateAsString(final LightStates lightState) { - if (lightState == LightStates.ALERT) { - return "Alert"; - } else if (lightState == LightStates.BUSY) { - return "Busy"; - } else if (lightState == LightStates.OK) { - return "Ok"; - } else if (lightState == LightStates.IDLE) { - return "Idle"; - } - - return ""; - } - - /** - * Possible Switch Status Values. - */ - public enum SwitchStatus { - - /** - * Off Status. - */ - OFF, - /** - * On Status. - */ - ON - } - - ; - - /** - * Parses a Switch Status. - * - * @param status a string representation of the Switch Status to be parsed - * ("Off" or "On"). - * @return The parsed Switch Status - */ - public static SwitchStatus parseSwitchStatus(final String status) { - if (status.compareTo("Off") == 0) { - return SwitchStatus.OFF; - } else if (status.compareTo("On") == 0) { - return SwitchStatus.ON; - } - - throw new IllegalArgumentException("Invalid SwitchStatus String: '" + status + "'"); - } - - /** - * Checks if a string corresponds to a valid SwitchStatus. - * - * @param status The string to check - * @return true if it corresponds to a valid SwitchStatus. - * false otherwise. - */ - public static boolean isValidSwitchStatus(final String status) { - try { - parseSwitchStatus(status); - } catch (IllegalArgumentException e) { - return false; - } - - return true; - } - - /** - * Gets a String representation of the Switch Status. - * - * @param switchStatus The Switch Status - * @return A String representation of the Switch Status - */ - public static String getSwitchStatusAsString(final SwitchStatus switchStatus) { - if (switchStatus == SwitchStatus.ON) { - return "On"; - } else if (switchStatus == SwitchStatus.OFF) { - return "Off"; - } - - return ""; - } - - /** - * Possible perimssions for a INDI Property. - */ - public enum PropertyPermissions { - - /** - * Read Only. - */ - RO, - /** - * Read Write. - */ - RW, - /** - * Write Only. - */ - WO - } - - ; - - /** - * Parses a Property Permission. - * - * @param permission a string representation of the Property Permission to be - * parsed ("ro" or "rw" or "wo"). - * @return The parsed Property Permission - */ - public static PropertyPermissions parsePropertyPermission(final String permission) { - if (permission.compareTo("ro") == 0) { - return PropertyPermissions.RO; - } else if (permission.compareTo("rw") == 0) { - return PropertyPermissions.RW; - } else if (permission.compareTo("wo") == 0) { - return PropertyPermissions.WO; - } - - throw new IllegalArgumentException("Invalid PropertyPermissions String: '" + permission + "'"); - } - - /** - * Checks if a string corresponds to a valid PropertyPermission. - * - * @param permission The string to check - * @return true if it corresponds to a valid - * PropertyPermission. false otherwise. - */ - public static boolean isValidPropertyPermission(final String permission) { - try { - parsePropertyPermission(permission); - } catch (IllegalArgumentException e) { - return false; - } - - return true; - } - - /** - * Gets a String representation of the Property Permission. - * - * @param permission The Property Permission - * @return A String representation of the Property Permission. - */ - public static String getPropertyPermissionAsString(final PropertyPermissions permission) { - if (permission == PropertyPermissions.RO) { - return "ro"; - } else if (permission == PropertyPermissions.RW) { - return "rw"; - } else if (permission == PropertyPermissions.WO) { - return "wo"; - } - - return ""; - } - - /** - * Possible States for a INDI Property. - */ - public enum PropertyStates { - - /** - * Idle. - */ - IDLE, - /** - * Ok. - */ - OK, - /** - * Busy. - */ - BUSY, - /** - * Alert. - */ - ALERT - } - - ; - - /** - * Parses a Property State. - * - * @param state a string representation of the Property State to be parsed - * ("Alert" or "Busy" or "Ok" or "Idle"). - * @return The parsed Property State - */ - public static PropertyStates parsePropertyState(final String state) { - if (state.compareTo("Alert") == 0) { - return PropertyStates.ALERT; - } else if (state.compareTo("Busy") == 0) { - return PropertyStates.BUSY; - } else if (state.compareTo("Ok") == 0) { - return PropertyStates.OK; - } else if (state.compareTo("Idle") == 0) { - return PropertyStates.IDLE; - } - - throw new IllegalArgumentException("Invalid PropertyState String: '" + state + "'"); - } - - /** - * Checks if a string corresponds to a valid PropertyState. - * - * @param state The string to check - * @return true if it corresponds to a valid PropertyState. - * false otherwise. - */ - public static boolean isValidPropertyState(final String state) { - try { - parsePropertyState(state); - } catch (IllegalArgumentException e) { - return false; - } - - return true; - } - - /** - * Gets a String representation of the Property State. - * - * @param propertyState The Property State - * @return A String representation of the Property State - */ - public static String getPropertyStateAsString(final PropertyStates propertyState) { - if (propertyState == PropertyStates.ALERT) { - return "Alert"; - } else if (propertyState == PropertyStates.BUSY) { - return "Busy"; - } else if (propertyState == PropertyStates.OK) { - return "Ok"; - } else if (propertyState == PropertyStates.IDLE) { - return "Idle"; - } - - return ""; - } - - /** - * Possible selection rules for a Switch Property. - */ - public enum SwitchRules { - - /** - * One of many (one and just one). - */ - ONE_OF_MANY, - /** - * At most one (zero or one). - */ - AT_MOST_ONE, - /** - * Any of many (zero or more). - */ - ANY_OF_MANY - } - - ; - - /** - * Parses a Switch Rule. - * - * @param rule a string representation of the Switch Rule to be parsed - * ("OneOfMany" or "AtMostOne" or "AnyOfMany"). - * @return The Switch Rule - */ - public static SwitchRules parseSwitchRule(final String rule) { - if (rule.compareTo("OneOfMany") == 0) { - return SwitchRules.ONE_OF_MANY; - } else if (rule.compareTo("AtMostOne") == 0) { - return SwitchRules.AT_MOST_ONE; - } else if (rule.compareTo("AnyOfMany") == 0) { - return SwitchRules.ANY_OF_MANY; - } - - throw new IllegalArgumentException("Invalid SwitchRules String: '" + rule + "'"); - } - - /** - * Checks if a string corresponds to a valid SwitchRule. - * - * @param rule The string to check - * @return true if it corresponds to a valid SwitchRule. - * false otherwise. - */ - public static boolean isValidSwitchRule(final String rule) { - try { - parseSwitchRule(rule); - } catch (IllegalArgumentException e) { - return false; - } - - return true; - } - - /** - * Gets a String representation of the Switch Rule. - * - * @param rule The Switch Rule - * @return A String representation of the Switch Rule. - */ - public static String getSwitchRuleAsString(final SwitchRules rule) { - if (rule == SwitchRules.ONE_OF_MANY) { - return "OneOfMany"; - } else if (rule == SwitchRules.AT_MOST_ONE) { - return "AtMostOne"; - } else if (rule == SwitchRules.ANY_OF_MANY) { - return "AnyOfMany"; - } - - return ""; - } - - /** - * Possible selection rules for a Switch Property. - */ - public enum BLOBEnables { - - /** - * Never (no BLOB values are sent). - */ - NEVER, - /** - * Also (every value is sent). - */ - ALSO, - /** - * Only (just the BLOB values are sent). - */ - ONLY - } - - ; - - /** - * Parses a BLOB Enable. - * - * @param blobEnable a string representation of the BLOB Enable to be parsed - * ("Never" or "Also" or "Only"). - * @return The BLOB Enable - */ - public static BLOBEnables parseBLOBEnable(final String blobEnable) { - if (blobEnable.compareTo("Never") == 0) { - return BLOBEnables.NEVER; - } else if (blobEnable.compareTo("Also") == 0) { - return BLOBEnables.ALSO; - } else if (blobEnable.compareTo("Only") == 0) { - return BLOBEnables.ONLY; - } - - throw new IllegalArgumentException("Invalid BLOBEnable String: '" + blobEnable + "'"); - } - - /** - * Checks if a string corresponds to a valid blobEnable. - * - * @param blobEnable The string to check - * @return true if it corresponds to a valid blobEnable. - * false otherwise. - */ - public static boolean isValidBLOBEnable(final String blobEnable) { - try { - parseBLOBEnable(blobEnable); - } catch (IllegalArgumentException e) { - return false; - } - - return true; - } - - /** - * Gets a String representation of the BLOB Enable. - * - * @param blobEnable The blobEnable - * @return A String representation of the BLOB Enable. - */ - public static String getBLOBEnableAsString(final BLOBEnables blobEnable) { - if (blobEnable == BLOBEnables.NEVER) { - return "Never"; - } else if (blobEnable == BLOBEnables.ALSO) { - return "Also"; - } else if (blobEnable == BLOBEnables.ONLY) { - return "Only"; - } - - return ""; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/FileUtils.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/FileUtils.java deleted file mode 100644 index fc4b2b0ee19fd398104a7d69d29908a18122b1f5..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/FileUtils.java +++ /dev/null @@ -1,109 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.File; - -/** - * A class to help dealing with Files and Directories. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public final class FileUtils { - - /** - * A private constructor to avoid instantiating this utility class. - */ - private FileUtils() { - } - - /** - * the current indi base directory. - */ - private static File baseDirectory; - - /** - * Gets the base directory while auxiliary files for the I4J library should - * be stored. This directory is ~/.i4j . In case of that directory not - * existing, the directory is created. Every axiliary file produced by the - * library should be written in this directory. - * - * @return The base directory for I4J auxiliary files. - */ - public static File getI4JBaseDirectory() { - if (baseDirectory == null) { - String userDirName = System.getProperty("user.home"); - File userDir = new File(userDirName); - File i4jDir = new File(userDir, ".i4j"); - if (!i4jDir.exists()) { - boolean created = i4jDir.mkdir(); - if (!created) { - throw new IllegalStateException("can not create indi base directory!" + i4jDir.getAbsolutePath()); - } - } - baseDirectory = i4jDir; - } - return baseDirectory; - } - - /** - * redirect the indi base directory to an other location. the directory - * itself will be created if non existent but the parent directory must - * exist. - * - * @param newBaseDirectory the new indi base directory. - */ - public static void setI4JBaseDirectory(String newBaseDirectory) { - File i4jDir = new File(newBaseDirectory).getAbsoluteFile(); - if (!i4jDir.exists()) { - boolean created = i4jDir.mkdir(); - if (!created) { - throw new IllegalStateException("can not create indi base directory!" + i4jDir.getAbsolutePath()); - } - } - baseDirectory = i4jDir; - } - - /** - * Gets the extension of a given file. - * - * @param file The file from which to get the extension. - * @return The extension of the file. If the file has no extension it - * returns a empty String: "" - */ - public static String getExtensionOfFile(File file) { - String ext = null; - String s = file.getName(); - int i = s.lastIndexOf('.'); - - if (i > 0 && i < s.length() - 1) { - ext = s.substring(i + 1); - } - - if (ext == null) { - return ""; - } - - return ext; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIBLOBValue.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIBLOBValue.java deleted file mode 100644 index c35ac7f178543af093cea73649f8ec4a4bd58c41..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIBLOBValue.java +++ /dev/null @@ -1,156 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.OneBlob; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.Serializable; -import java.util.zip.DataFormatException; -import java.util.zip.Inflater; - -/** - * A class representing a INDI BLOB Value (some bytes and a format). - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDIBLOBValue implements Serializable { - - /** - * Serialization id. - */ - private static final long serialVersionUID = 2475720079344574791L; - - /** - * The BLOB data. - */ - private final byte[] blobData; - - /** - * The format of the data. - */ - private final String format; - - /** - * Constructs a new BLOB Value from its coresponding bytes and format. - * - * @param blobData the data for the BLOB - * @param format the format of the data - */ - public INDIBLOBValue(final byte[] blobData, final String format) { - this.format = format; - this.blobData = blobData; - } - - /** - * Constructs a new BLOB Value from a XML <oneBLOB> element. - * - * @param xml the <oneBLOB> XML element - */ - public INDIBLOBValue(final OneBlob xml) { - int size = 0; - String f; - - try { - String s = xml.getSize().trim(); - size = Integer.parseInt(s); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Size number not correct"); - } - - if (xml.getFormat() == null) { - throw new IllegalArgumentException("No format attribute"); - } - - f = xml.getFormat().trim(); - - byte[] val = xml.getByteContent(); - - if (f.endsWith(".z")) { // gzipped. Decompress - Inflater decompresser = new Inflater(); - decompresser.setInput(val); - - byte[] newvalue = new byte[size]; - - try { - decompresser.inflate(newvalue); - - val = newvalue; - } catch (DataFormatException e) { - throw new IllegalArgumentException("Not correctly GZIPped"); - } - - decompresser.end(); - - f = f.substring(0, f.length() - 2); - } - - if (val.length != size) { - throw new IllegalArgumentException("Size of BLOB not correct"); - } - - format = f; - blobData = val; - } - - /** - * Gets the BLOB data. - * - * @return the BLOB data - */ - public final byte[] getBlobData() { - return blobData; - } - - /** - * Gets the BLOB data format. - * - * @return the BLOB data format - */ - public final String getFormat() { - return format; - } - - /** - * Gets the size of the BLOB data. - * - * @return the size of the BLOB data - */ - public final int getSize() { - return blobData.length; - } - - /** - * Save the BLOB Data to a file. - * - * @param file The file to which to save the BLOB data. - * @throws IOException if there is some problem writting the file. - */ - public final void saveBLOBData(final File file) throws IOException { - try (FileOutputStream fos = new FileOutputStream(file)) { - fos.write(blobData); - } - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIDate.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIDate.java deleted file mode 100644 index 7b9ebaaa68ef9d91a57bd302b2001ac180b617f7..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIDate.java +++ /dev/null @@ -1,364 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A class which is the equivalent representation of utc date in the structure - * ln_date in libnova (http://libnova.sourceforge.net/). This is the Human - * readable (easy printf) date format used by libnova. It's always in UTC. - * - * @author Gerrit Viola [gerrit.viola at web.de] and S. Alonso (Zerjillo) - * [zerjioi at ugr.es] - */ -public class INDIDate { - - /** - * The years component of the Date. - */ - private int years; - - /** - * The months component of the Date. - */ - private int months; - - /** - * The days component of the Date. - */ - private int days; - - /** - * The hours component of the Date. - */ - private int hours; - - /** - * The minutes component of the Date. - */ - private int minutes; - - /** - * The seconds component of the Date. - */ - private double seconds; - - /** - * January month number. - */ - private static final int JANUARY = 1; - - /** - * February month number. - */ - private static final int FEBRUARY = 2; - - /** - * March month number. - */ - private static final int MARCH = 3; - - /** - * April month number. - */ - private static final int APRIL = 4; - - /** - * May month number. - */ - private static final int MAY = 5; - - /** - * June month number. - */ - private static final int JUNE = 6; - - /** - * July month number. - */ - private static final int JULY = 7; - - /** - * August month number. - */ - private static final int AUGUST = 8; - - /** - * September month number. - */ - private static final int SEPTEMBER = 9; - - /** - * October month number. - */ - private static final int OCTOBER = 10; - - /** - * November month number. - */ - private static final int NOVEMBER = 11; - - /** - * December month number. - */ - private static final int DECEMBER = 12; - - /** - * The number of days in January, March, May, July, August, October, - * December. - */ - private static final int DAYS_LONG_MONTH = 31; - - /** - * The number of days in April, June, September, November. - */ - private static final int DAYS_SHORT_MONTH = 30; - - /** - * The number of days in February (on a non Leap Year). - */ - private static final int DAYS_FEBRUARY = 28; - - /** - * The number of days in February (on a Leap Year). - */ - private static final int DAYS_FEBRUARY_LEAP_YEAR = 29; - - /** - * Number of years that have to pass for the next Leap Year. - */ - private static final int YEARS_FOR_LEAP_YEAR = 4; - - /** - * The number of horus in a day. - */ - private static final int HOURS_PER_DAY = 24; - - /** - * The number of minutes in a hour. - */ - private static final int MINUTES_PER_HOUR = 60; - - /** - * The number of seconds in a minute. - */ - private static final int SECONDS_PER_MINUTE = 60; - - /** - * Constructs a new Date whose components are 0000/01/01 00:00:00.0. - */ - public INDIDate() { - initializeComponents(); - } - - /** - * Constructs a new Date whose components are partially specified. Hours, - * minutes and seconds are initialized at 00:00:00.0. - * - * @param years The years component of the Date. All values are valid. - * @param months The months component of the Date. Mut be in the range 1 - * (January) - 12 (December). - * @param days The days component of the Date. Must be in the 1-28,29,30,31 - * range (depending on the months and years). - */ - public INDIDate(final int years, final int months, final int days) { - initializeComponents(); - - setYears(years); - setMonths(months); - setDays(days); - } - - /** - * Constructs a new Date whose components are partially specified. Hours, - * minutes and seconds are initialized at 00:00:00.0. - * - * @param years The years component of the Date. All values are valid. - * @param months The months component of the Date. Mut be in the range 1 - * (January) - 12 (December). - * @param days The days component of the Date. Must be in the 1-28,29,30,31 - * range (depending on the months and years). - * @param hours The hours component of the Date. Must be in the 0-23 range. - * @param minutes The minutes component of the Date. Must be in the 0-59 range. - * @param seconds The seconds component of the Date. Must be in the 0-59.999999 - * range. - */ - public INDIDate(final int years, final int months, final int days, final int hours, final int minutes, final double seconds) { - initializeComponents(); - - setYears(years); - setMonths(months); - setDays(days); - setHours(hours); - setMinutes(minutes); - setSeconds(seconds); - } - - /** - * Initilizes the components to "0000/01/01 00:00:00.0". - */ - private void initializeComponents() { - years = 0; - months = 1; - days = 1; - hours = 0; - minutes = 0; - seconds = 0; - } - - /** - * Gets the years component of the Date. - * - * @return The years component of the Date. - */ - public final int getYears() { - return years; - } - - /** - * Sets the years component of the Date. - * - * @param years The years component of the Date. All values are valid. - */ - public final void setYears(final int years) { - this.years = years; - } - - /** - * Gets the months component of the Date. - * - * @return The months component of the Date. - */ - public final int getMonths() { - return months; - } - - /** - * Sets the months component of the Date. - * - * @param months The months component of the Date. Must be in the range 1 - * (January) - 12 (December). - */ - public final void setMonths(final int months) { - if (months >= JANUARY && months <= DECEMBER) { - this.months = months; - } - } - - /** - * Gets the days component of the Date. - * - * @return The days component of the Date. - */ - public final int getDays() { - return days; - } - - /** - * Sets the days component of the Date. - * - * @param days The days component of the Date. Must be in the 1-28,29,30,31 - * range (depending on the months and years). - */ - public final void setDays(final int days) { - if (days < 1) { - return; - } - - if (days <= DAYS_FEBRUARY) { - this.days = days; - } else if ((months == JANUARY || months == MARCH || months == MAY || months == JULY || months == AUGUST || months == OCTOBER || months == DECEMBER) - && days <= DAYS_LONG_MONTH) { - this.days = days; - } else if ((months == APRIL || months == JUNE || months == SEPTEMBER || months == NOVEMBER) && days <= DAYS_SHORT_MONTH) { - this.days = days; - } else if (months == FEBRUARY && years % YEARS_FOR_LEAP_YEAR == 0 && days <= DAYS_FEBRUARY_LEAP_YEAR) { - this.days = days; - } - } - - /** - * Gets the hours component of the Date. - * - * @return The hours component of the Date. - */ - public final int getHours() { - return hours; - } - - /** - * Sets the hours component of the Date. - * - * @param hours The hours component of the Date. Must be in the 0-23 range. - */ - public final void setHours(final int hours) { - if (hours >= 0 && hours < HOURS_PER_DAY) { - this.hours = hours; - } - } - - /** - * Gets the minutes component of the Date. - * - * @return The minutes component of the Date. - */ - public final int getMinutes() { - return minutes; - } - - /** - * Sets the minutes component of the Date. - * - * @param minutes The minutes component of the Date. Must be in the 0-59 range. - */ - public final void setMinutes(final int minutes) { - if (minutes >= 0 && minutes < MINUTES_PER_HOUR) { - this.minutes = minutes; - } - } - - /** - * Gets the seconds component of the Date. - * - * @return The seconds component of the Date. - */ - public final double getSeconds() { - return seconds; - } - - /** - * Sets the seconds component of the Date. - * - * @param seconds The seconds component of the Date. Must be in the 0-59.999999 - * range. - */ - public final void setSeconds(final double seconds) { - if (seconds >= 0 && seconds < SECONDS_PER_MINUTE) { - this.seconds = seconds; - } - } - - @Override - public final String toString() { - return years + "/" + months + "/" + days + " " + hours + ":" + minutes + ":" + seconds; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIDateFormat.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIDateFormat.java deleted file mode 100644 index b683807de8a12695a739069e08c3b9582f1c100d..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIDateFormat.java +++ /dev/null @@ -1,117 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * A simple class to format and parse INDI timestamps. Attention - * SimpleDateFormat is not thread save thats why this is a per thread singleton. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public final class INDIDateFormat { - - /** - * Thread local current, to protect the simple date formatters against multi - * treading problems. - */ - private static ThreadLocal format = new ThreadLocal<>(); - - /** - * The first possible format for INDI timestamps. - */ - private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); - - /** - * The second possible format for INDI timestamps. - */ - private SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); - - /** - * A private constructor to avoid instantiating this utility class. - */ - private INDIDateFormat() { - } - - /** - * @return the INDIDateformat for the current thread. - */ - public static INDIDateFormat dateFormat() { - INDIDateFormat result = format.get(); - if (result == null) { - result = new INDIDateFormat(); - format.set(result); - } - return result; - } - - /** - * Parses a timestamp expressed in the INDI format. If the timestamp does - * not have the correct format it returns the current timestamp. - * - * @param time the timestamp to be parsed - * @return the parsed timestamp or the current timestamp if the format of - * the time is not correct. - */ - public Date parseTimestamp(final String time) { - Date timestamp; - if (time != null && !time.isEmpty()) { - try { - timestamp = dateFormat.parse(time); - } catch (ParseException e) { - try { - timestamp = dateFormat2.parse(time); - } catch (ParseException ee) { - timestamp = new Date(); // Not correct format, returning - // current timestamp. - } - } - } else { - timestamp = new Date(); - } - return timestamp; - } - - /** - * Formats a timestamp according to the INDI format. - * - * @param timestamp the timestamp to be formmated - * @return the formatted timestamp - */ - public String formatTimestamp(final Date timestamp) { - return dateFormat.format(timestamp); - } - - /** - * Gets the current timestamp in form of a String according to the INDI - * specification. - * - * @return the current timestamp according to the INDI specification. - */ - public String getCurrentTimestamp() { - return formatTimestamp(new Date()); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIException.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIException.java deleted file mode 100644 index f73b1269ee129dab577ad093e04136753a276f37..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIException.java +++ /dev/null @@ -1,55 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A class representing a generic INDI Exception. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDIException extends Exception { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * Creates a INDI Exception. - * - * @param msg The message for the exception. - */ - public INDIException(final String msg) { - super(msg); - } - - /** - * Creates a INDI Exception. - * - * @param msg The message for the exception. - * @param cause The cause for the exception. - */ - public INDIException(final String msg, Throwable cause) { - super(msg, cause); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIProtocolParser.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIProtocolParser.java deleted file mode 100644 index 861248eb797ebc6da244eef2f9b0016b650a9013..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIProtocolParser.java +++ /dev/null @@ -1,58 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.INDIProtocol; -import lc.astro.indi.protocol.api.INDIInputStream; - -import java.io.IOException; - -/** - * A interface representing a generic INDI Protocol Parser. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - * @author Richard van Nieuwenhoven - * @author Alex Leigh - */ -public interface INDIProtocolParser { - - /** - * Parses a protocol message. - * - * @param message The protocol message to parse. - */ - void processProtokolMessage(INDIProtocol message); - - /** - * Gets the input stream from where the messages will be read. - * - * @return The input stream from where the messages will be read. - */ - INDIInputStream getInputStream(); - - /** - * Called when the reader finishes the readings (communications broken / - * stopped). - */ - void finishReader() throws IOException; -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIProtocolReader.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIProtocolReader.java deleted file mode 100644 index d119994bb77f303d9906f71b334e587d6f52e8cb..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDIProtocolReader.java +++ /dev/null @@ -1,92 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.INDIProtocol; -import lc.astro.indi.protocol.api.INDIInputStream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; - -/** - * A class that reads from a input stream and sends the read messages to a - * parser. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - * @author Alex Leigh - */ -public class INDIProtocolReader extends Thread { - - /** - * A logger for the errors. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIProtocolReader.class); - - /** - * The parser to which the messages will be sent. - */ - private INDIProtocolParser parser; - - /** - * Used to friendly stop the reader. - */ - private boolean stop; - - /** - * Creates the reader. - * - * @param parser The parser to which the readed messages will be sent. - * @param name the thread name to use. - */ - public INDIProtocolReader(final INDIProtocolParser parser, String name) { - super(name); - this.parser = parser; - } - - /** - * The main body of the reader. - */ - @Override - public final void run() { - try (INDIInputStream inputStream = parser.getInputStream()) { - INDIProtocol readObject = inputStream.readObject(); - while (!stop && readObject != null) { - parser.processProtokolMessage(readObject); - readObject = inputStream.readObject(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Sets the stop parameter. If set to true the reader will - * gracefully stop after the next read. - * - * @param stop The stop parameter - */ - public final void setStop(final boolean stop) { - this.stop = stop; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDISexagesimalFormatter.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDISexagesimalFormatter.java deleted file mode 100644 index 445996b8788ed162a8f8deb30eef356b9365b56b..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/INDISexagesimalFormatter.java +++ /dev/null @@ -1,425 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.Serializable; -import java.util.Formatter; -import java.util.Locale; -import java.util.NoSuchElementException; -import java.util.StringTokenizer; - -/** - * A class to format and parse numbers in sexagesimal format. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDISexagesimalFormatter implements Serializable { - - /** - * the serial version id. - */ - private static final long serialVersionUID = -3904216502728630808L; - - /** - * The format to be used. It must begin with %, end with m and specifies a - * length and fractionLength in the form length.fractionLength. Valid - * fractionLengths are 3, 5, 6, 8 and 9. For example %5.3m. - */ - private String format; - - /** - * The length of the format. - */ - private int length; - - /** - * The fraction length. - */ - private int fractionLength; - - /** - * Fraction Length 3. - */ - private static final int FL3 = 3; - - /** - * Fraction Length 5. - */ - private static final int FL5 = 5; - - /** - * Fraction Length 6. - */ - private static final int FL6 = 6; - - /** - * Fraction Length 8. - */ - private static final int FL8 = 8; - - /** - * Fraction Length 9. - */ - private static final int FL9 = 9; - - /** - * Minutes in a hour. - */ - private static final double MINUTES_PER_HOUR = 60.0; - - /** - * Seconds in a hour. - */ - private static final double SECONDS_PER_HOUR = 3600.0; - - /** - * Seconds in a minute. - */ - private static final double SECONDS_PER_MINUTE = 60.0; - - /** - * Zero Negative. - */ - private static final double ZERO_NEG = -0.; - - /** - * Constructs an instance of INDISexagesimalFormatter with a - * particular format. Throws IllegalArgumentException if the format is not - * correct: begins with %, ends with m and specifies a length and - * fractionLength in the form length.fractionLength. Valid fractionLengths - * are 3, 5, 6, 8 and 9. For example %5.3m. - * - * @param format The desired format - */ - public INDISexagesimalFormatter(final String format) { - this.format = format; - - checkFormat(); - } - - /** - * Gets the format of this formatter. - * - * @return the format of this formatter. - */ - public final String getFormat() { - return format; - } - - /** - * Checks the specified format string. Throws IllegalArgumentException if - * the format string is not valid: begins with %, ends with m and specifies - * a length and fractionLength in the form length.fractionLength. Valid - * fractionLengths are 3, 5, 6, 8 and 9. For example %5.3m. - */ - private void checkFormat() { - if (!format.startsWith("%")) { - throw new IllegalArgumentException("Number format not starting with %"); - } - - if (!format.endsWith("m")) { - throw new IllegalArgumentException("Sexagesimal format not recognized (not ending m)"); - } - - String remaining = format.substring(1, format.length() - 1); - - int dotPos = remaining.indexOf("."); - - if (dotPos == -1) { - throw new IllegalArgumentException("Sexagesimal format not correct (no dot)"); - } - - String l = remaining.substring(0, dotPos); - String frLength = remaining.substring(dotPos + 1); - - try { - length = Integer.parseInt(l); - fractionLength = Integer.parseInt(frLength); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Illegal sexagesimal length or fraction length"); - } - - if (fractionLength != FL3 && fractionLength != FL5 && fractionLength != FL6 && fractionLength != FL8 && fractionLength != FL9) { - throw new IllegalArgumentException("Illegal sexagesimal fraction length"); - } - } - - /** - * Parses a sexagesimal newNumber. DO NOT USE IT. THIS IS A PRELIMINARY - * VERSION AND DOES NOT WORK AS EXPECTED. THIS METHOD WILL DISAPEAR IN - * FUTURE VERSIONS OF THE CLASS. - * - * @param number NOT USED - * @return NOT USED - * @deprecated - */ - @Deprecated - public final double parseSexagesimal2(final String number) { - String newNumber = number.replace(' ', ':'); - newNumber = newNumber.replace(';', ':'); - - if (newNumber.indexOf(":") == -1) { // If there are no separators maybe - // they have sent just a single - // double - try { - double n = Double.parseDouble(newNumber); - - return n; - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Sexagesimal number format not correct (not even single number)"); - } - } - - StringTokenizer st = new StringTokenizer(newNumber, ":", false); - - double degrees = 0; - double minutes = 0; - double seconds = 0; - - try { - String aux = st.nextToken().trim(); - - if (aux.length() > 0) { - degrees = Double.parseDouble(aux); - } - - aux = st.nextToken().trim(); - - if (aux.length() > 0) { - minutes = Double.parseDouble(aux); - } - - if (fractionLength > FL5) { - aux = st.nextToken().trim(); - - if (aux.length() > 0) { - seconds = Double.parseDouble(aux); - } - } - - } catch (NoSuchElementException e) { - throw new IllegalArgumentException("Sexagesimal number format not correct"); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Sexagesimal number component not correct"); - } - - double res = degrees; - if (degrees > 0) { - res += minutes / MINUTES_PER_HOUR + seconds / SECONDS_PER_HOUR; - } else { - res -= minutes / MINUTES_PER_HOUR + seconds / SECONDS_PER_HOUR; - } - - return res; - } - - /** - * Parses a sexagesimal newNumber. The input String is - * formatted as a maximum of three doubles separated by : ; or a blank - * space. The first newNumber represents the newNumber of degrees, the - * second is the newNumber of minutes and the third is the newNumber of - * seconds. - * - * @param number The newNumber to be parsed. - * @return The parsed double. - */ - public final double parseSexagesimal(final String number) { - String newNumber = number.trim(); - - if (newNumber.isEmpty()) { - throw new IllegalArgumentException("Empty number"); - } - - newNumber = newNumber.replace(' ', ':'); - newNumber = newNumber.replace(';', ':'); - - int charCount = newNumber.length() - newNumber.replaceAll(":", "").length(); - - if (charCount > 2) { - throw new IllegalArgumentException("Too many components for the sexagesimal formatter"); - } - - double degrees = 0; - double minutes = 0; - double seconds = 0; - - StringTokenizer st = new StringTokenizer(newNumber, ":", false); - - String d = st.nextToken().trim(); - - try { - degrees = Double.parseDouble(d); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Number format incorrect"); - } - - if (st.hasMoreTokens()) { - String m = st.nextToken().trim(); - - try { - minutes = Double.parseDouble(m); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Minutes format incorrect"); - } - - if (minutes < 0) { - throw new IllegalArgumentException("Minutes cannot be negative"); - } - - if (st.hasMoreTokens()) { - String s = st.nextToken().trim(); - - try { - seconds = Double.parseDouble(s); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Seconds format incorrect"); - } - - if (seconds < 0) { - throw new IllegalArgumentException("Seconds cannot be negative"); - } - } - } - - double res = degrees; - if (Double.valueOf(degrees).compareTo(ZERO_NEG) > 0) { - res += minutes / MINUTES_PER_HOUR + seconds / SECONDS_PER_HOUR; - } else { - res -= minutes / MINUTES_PER_HOUR + seconds / SECONDS_PER_HOUR; - } - - return res; - } - - /** - * Fomats a newNumber according to the newNumber format os this formatter. - * - * @param number the newNumber to be formatted. - * @return The formatted newNumber as a String. - */ - public final String format(final Double number) { - int sign = 1; - if (number < 0) { - sign = -1; - } - - double newNumber = Math.abs(number); - - String fractionalPart = ":"; - - int integerPart; - - integerPart = (int) Math.floor(newNumber); - - double fractional = Math.abs(newNumber - integerPart); - - if (fractionLength < FL6) { - double minutes = fractional * SECONDS_PER_MINUTE; - - String form = "%02.0f"; - if (fractionLength == FL5) { - form = "%04.1f"; - } - - Formatter formatter = new Formatter(Locale.US); - String newMinutes = formatter.format(form, minutes).toString(); - - if (Double.parseDouble(newMinutes) >= MINUTES_PER_HOUR) { - minutes = 0.0; - integerPart++; - } - - formatter = new Formatter(Locale.US); - fractionalPart += formatter.format(form, minutes); - } else { - double minutes = Math.floor(fractional * MINUTES_PER_HOUR); - - double rest = fractional - minutes / SECONDS_PER_MINUTE; - - double seconds = rest * SECONDS_PER_HOUR; - - String form = "%02.0f"; - if (fractionLength == FL8) { - form = "%04.1f"; - } else if (fractionLength == FL9) { - form = "%05.2f"; - } - - Formatter formatter = new Formatter(Locale.US); - String newSeconds = formatter.format(form, seconds).toString(); - - if (Double.parseDouble(newSeconds) >= SECONDS_PER_MINUTE) { - seconds = 0.0; - minutes++; - } - - formatter = new Formatter(Locale.US); - String newMinutes = formatter.format("%02.0f", minutes).toString(); - - if (Double.parseDouble(newMinutes) >= MINUTES_PER_HOUR) { - minutes = 0.0; - integerPart++; - } - - formatter = new Formatter(Locale.US); - fractionalPart += formatter.format("%02.0f:" + form, minutes, seconds); - } - - String res = integerPart + fractionalPart; - - if (sign < 0) { - res = "-" + res; - } - - res = padLeft(res, length); - - return res; - } - - /** - * Pads a String to the left with spaces. - * - * @param s The String to be padded. - * @param n The maximum size of the padded String. - * @return The padded String - */ - private String padLeft(final String s, final int n) { - if (s.length() >= n) { - return s; - } - - int nSpaces = n - s.length(); - - if (nSpaces <= 0) { - return s; - } - - StringBuilder spacesBuffer = new StringBuilder(nSpaces); - for (int i = 0; i < nSpaces; i++) { - spacesBuffer.append(" "); - } - String spaces = spacesBuffer.toString(); - - return spaces + s; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/XMLToString.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/base/XMLToString.java deleted file mode 100644 index 25ee5bba08a25b9d835cd6cb6d77a1e9951441fc..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/base/XMLToString.java +++ /dev/null @@ -1,77 +0,0 @@ -package lc.astro.indi.base; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Element; - -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.StringWriter; - -/** - * A class to transforms XML Elements into Strings. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public final class XMLToString { - - /** - * A logger for the errors. - */ - private static final Logger LOG = LoggerFactory.getLogger(XMLToString.class); - - /** - * A private constructor to avoid instantiating this utility class. - */ - private XMLToString() { - } - - /** - * Transforms a XML Element into a String. - * - * @param xml The XML Element - * @return A String representing the XML Element - */ - public static String transform(final Element xml) { - try { - TransformerFactory transFactory = TransformerFactory.newInstance(); - - Transformer transformer = transFactory.newTransformer(); - - StringWriter buffer = new StringWriter(); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - transformer.transform(new DOMSource(xml), new StreamResult(buffer)); - String str = buffer.toString(); - return str; - } catch (Exception e) { - LOG.error("Problem transforming XML to String", e); - } - - return ""; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIBLOBElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIBLOBElement.java deleted file mode 100644 index 9b17819213d0ca3448ad2830cc4f1219cd824b96..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIBLOBElement.java +++ /dev/null @@ -1,184 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.INDIBLOBValue; -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.DefBlob; -import lc.astro.indi.protocol.OneBlob; -import lc.astro.indi.protocol.OneElement; - -/** - * A class representing a INDI BLOB Element. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDIBLOBElement extends INDIElement { - - /** - * The current value of the BLOB Element. - */ - private INDIBLOBValue value; - - /** - * The current desired value of the BLOB Element. - */ - private INDIBLOBValue desiredValue; - - /** - * A UI component that can be used in graphical interfaces for this BLOB - * Element. - */ - private INDIElementListener uiComponent; - - /** - * Constructs an instance of INDIBLOBElement. Usually called - * from a INDIProperty. - * - * @param xml A XML Element <defBLOB> describing the BLOB - * Element. - * @param property The INDIProperty to which the Element belongs. - */ - protected INDIBLOBElement(DefBlob xml, INDIBLOBProperty property) { - super(xml, property); - - desiredValue = null; - - value = new INDIBLOBValue(new byte[0], ""); - } - - @Override - public INDIBLOBValue getValue() { - return value; - } - - /** - * Sets the current value of this BLOB Element. It is assummed that the XML - * Element is really describing the new value for this particular BLOB - * Element. - *

- * This method will notify the change of the value to the listeners. - *

- * Throws IllegalArgumentException if the xml is not well - * formed (no size, no format or incorrectly coded data - * - * @param xml A XML Element <oneBLOB> describing the Element. - */ - @Override - public void setValue(OneElement xml) { - value = new INDIBLOBValue((OneBlob) xml); - - notifyListeners(); - } - - @Override - public INDIElementListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIElementListener(uiComponent); - } - uiComponent = INDIViewCreator.getDefault().createBlobElementView(this, getProperty().getPermission()); - addINDIElementListener(uiComponent); - return uiComponent; - } - - /** - * Checks if a desired value would be correct to be applied to the BLOB - * Element. - * - * @param valueToCheck The value to be checked. - * @return true if the valueToCheck is a - * INDIBLOBValue. false otherwise - * @throws INDIValueException if valueToCheck is null. - */ - @Override - public boolean checkCorrectValue(Object valueToCheck) throws INDIValueException { - if (valueToCheck == null) { - throw new IllegalArgumentException("null value"); - } - if (!(valueToCheck instanceof INDIBLOBValue)) { - return false; - } - return true; - } - - @Override - public String getNameAndValueAsString() { - return getName() + " - BLOB format: " + this.getValue().getFormat() + " - BLOB Size: " + this.getValue().getSize(); - } - - @Override - public INDIBLOBValue getDesiredValue() { - return desiredValue; - } - - @Override - public void setDesiredValue(Object desiredValue) throws INDIValueException { - INDIBLOBValue b = null; - try { - b = (INDIBLOBValue) desiredValue; - } catch (ClassCastException e) { - throw new INDIValueException(this, "Value for a BLOB Element must be a INDIBLOBValue"); - } - - this.desiredValue = b; - } - - @Override - public boolean isChanged() { - return desiredValue != null; - } - - /** - * Returns the XML code <oneBLOB> representing this BLOB Element with - * a new desired value (a INDIBLOBValue). Resets the desired - * value. - * - * @return the XML code <oneBLOB> representing the BLOB - * Element with a new value. - * @see #setDesiredValue - */ - @Override - protected OneElement getXMLOneElementNewValue() { - INDIBLOBValue ibv = desiredValue; - - OneBlob result = new OneBlob().setName(getName()).setByteContent(value.getBlobData()).setFormat(ibv.getFormat()); - - desiredValue = null; - - return result; - } - - @Override - public String toString() { - if (this.getValue().getSize() > 0) { - return this.getValue().getFormat() + " (" + this.getValue().getSize() + " bytes)"; - } - - return ""; - } - - @Override - public String getValueAsString() { - return "BLOB format: " + this.getValue().getFormat() + " - BLOB Size: " + this.getValue().getSize(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIBLOBProperty.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIBLOBProperty.java deleted file mode 100644 index 00fd56edda39a628978841c78e34db4949c91349..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIBLOBProperty.java +++ /dev/null @@ -1,109 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.*; - -/** - * A class representing a INDI BLOB Property. - *

- * It implements a listener mechanism to notify changes in its Elements. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDIBLOBProperty extends INDIProperty { - - /** - * A UI component that can be used in graphical interfaces for this BLOB - * Property. - */ - private INDIPropertyListener uiComponent; - - /** - * Constructs an instance of INDIBLOBProperty. - * INDIBLOBPropertys are not usually directly instantiated. - * Usually used by INDIDevice. - * - * @param xml A XML Element <defBLOBVector> describing - * the Property. - * @param device The INDIDevice to which this Property belongs. - */ - protected INDIBLOBProperty(DefBlobVector xml, INDIDevice device) { - super(xml, device); - - for (DefElement element : xml.getElements()) { - if (element instanceof DefBlob) { - String name = element.getName(); - - INDIElement iel = getElement(name); - - if (iel == null) { // Does not exist - INDIBLOBElement ite = new INDIBLOBElement((DefBlob) element, this); - addElement(ite); - } - } - - } - } - - @Override - protected void update(SetVector xml) { - super.update(xml, OneBlob.class); - } - - /** - * Gets the opening XML Element <newBLOBVector> for this Property. - * - * @return the opening XML Element <newBLOBVector> for this Property. - */ - @Override - protected NewVector getXMLPropertyChangeInit() { - return new NewBlobVector(); - - } - - @Override - public INDIPropertyListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIPropertyListener(uiComponent); - } - uiComponent = INDIViewCreator.getDefault().createBlobPropertyView(this); - addINDIPropertyListener(uiComponent); - - return uiComponent; - } - - /** - * Gets a particular Element of this Property by its name. - * - * @param name The name of the Element to be returned - * @return The Element of this Property with the given name. - * null if there is no Element with that - * name. - */ - @Override - public INDIBLOBElement getElement(String name) { - return super.getElement(name); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIDevice.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIDevice.java deleted file mode 100644 index f266a2b814a054287c4c1f98047e8b27218d0f10..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIDevice.java +++ /dev/null @@ -1,622 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L INDI for Java Client Library %% Copyright (C) 2013 - 2014 indiforjava %% - * This program is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser 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 General - * Lesser Public License for more details. You should have received a copy of - * the GNU General Lesser Public License along with this program. If not, see - * . #L% - */ - -import lc.astro.indi.base.Constants; -import lc.astro.indi.base.Constants.BLOBEnables; -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.*; - -import static lc.astro.indi.base.INDIDateFormat.dateFormat; - -/** - * A class representing a INDI Device. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - * @author Richard van Nieuwenhoven - */ -public class INDIDevice { - - /** - * A logger for the errors. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIDevice.class); - - /** - * The name of the Device. - */ - private String name; - - /** - * The Server Connection to which this Device Belongs. - */ - private INDIServerConnection server; - - /** - * The collection of properties for this Device. - */ - private Map> properties; - - /** - * The list of Listeners of this Device. - */ - private List listeners; - - /** - * A UI component that can be used in graphical interfaces for this Device. - */ - private INDIDeviceListener uiComponent; - - /** - * The timestamp for the last message. - */ - private Date timestamp; - - /** - * The last message of this Device. - */ - private String message; - - /** - * The number of BLOBProperties in this Device. - */ - private int blobCount; - - /** - * Constructs an instance of INDIDevice. Usually called from a - * INDIServerConnection. - * - * @param name the name of this Device - * @param server the Server Connection of this Device - * @see INDIServerConnection - */ - protected INDIDevice(String name, INDIServerConnection server) { - this.name = name; - this.server = server; - - properties = new LinkedHashMap>(); - - listeners = new ArrayList(); - - timestamp = new Date(); - message = ""; - blobCount = 0; - } - - /** - * Adds a new listener to this Device. - * - * @param listener the listener to be added. - */ - public void addINDIDeviceListener(INDIDeviceListener listener) { - listeners.add(listener); - } - - /** - * Removes a listener from this Device. - * - * @param listener the listener to be removed. - */ - public void removeINDIDeviceListener(INDIDeviceListener listener) { - listeners.remove(listener); - } - - /** - * Notifies the listeners of a new INDIProperty. - * - * @param property The new property - */ - private void notifyListenersNewProperty(INDIProperty property) { - for (INDIDeviceListener l : new ArrayList<>(listeners)) { - l.newProperty(this, property); - } - } - - /** - * Notifies the listeners of a removed INDIProperty. - * - * @param property The removed property - */ - private void notifyListenersDeleteProperty(INDIProperty property) { - for (INDIDeviceListener l : new ArrayList<>(listeners)) { - - l.removeProperty(this, property); - } - } - - /** - * Notifies the listeners that the message of this Device has changed. - */ - private void notifyListenersMessageChanged() { - for (INDIDeviceListener l : new ArrayList<>(listeners)) { - l.messageChanged(this); - } - } - - /** - * Sends the appropriate message to the Server to establish a particular - * BLOB policy (BLOBEnable) for the Device. - * - * @param enable The BLOB policy. - * @throws IOException if there is some problem sending the message. - */ - public void blobsEnable(BLOBEnables enable) throws IOException { - sendMessageToServer(new EnableBLOB().setDevice(getName()).setTextContent(Constants.getBLOBEnableAsString(enable))); - } - - /** - * Sends the appropriate message to the Server to establish a particular - * BLOB policy (BLOBEnable) for the Device and a particular Property. - * - * @param enable The BLOB policy. - * @param property The Property of the Device to listen to. - * @throws IOException if there is some problem sending the message. - */ - public void blobsEnable(BLOBEnables enable, INDIProperty property) throws IOException { - if (properties.containsValue(property) && property instanceof INDIBLOBProperty) { - sendMessageToServer(new EnableBLOB().setDevice(getName()).setName(property.getName()).setTextContent(Constants.getBLOBEnableAsString(enable))); - } - } - - /** - * Sends the appropriate message to the Server to disallow the receipt of - * BLOB property changes. - * - * @throws IOException if there is some problem sending the message. - * @deprecated Replaced by - * {@link #blobsEnable(Constants.BLOBEnables)} - */ - @Deprecated - public void blobsEnableNever() throws IOException { - sendMessageToServer(new EnableBLOB().setDevice(getName()).setTextContent("Never")); - } - - /** - * Sends the appropriate message to the Server to allow the receipt of BLOB - * property changes along with any other property types. - * - * @throws IOException if there is some problem sending the message. - * @deprecated Replaced by - * {@link #blobsEnable(Constants.BLOBEnables)} - */ - @Deprecated - public void blobsEnableAlso() throws IOException { - sendMessageToServer(new EnableBLOB().setDevice(getName()).setTextContent("Also")); - } - - /** - * Sends the appropriate message to the Server to allow the receipt of just - * BLOB property changes. - * - * @throws IOException if there is some problem sending the message. - * @deprecated Replaced by - * {@link #blobsEnable(Constants.BLOBEnables)} - */ - @Deprecated - public void blobsEnableOnly() throws IOException { - sendMessageToServer(new EnableBLOB().setDevice(getName()).setTextContent("Only")); - } - - /** - * Sends the appropriate message to the Server to disallow the receipt of a - * particular BLOB property changes. - * - * @param property the BLOB property - * @throws IOException if there is some problem sending the message. - * @deprecated Replaced by - * {@link #blobsEnable(Constants.BLOBEnables, INDIProperty)} - */ - @Deprecated - public void blobsEnableNever(INDIBLOBProperty property) throws IOException { - sendMessageToServer(new EnableBLOB().setDevice(getName()).setName(property.getName()).setTextContent("Never")); - } - - /** - * Sends the appropriate message to the Server to allow the receipt of a - * particular BLOB property changes along with any other property types. - * - * @param property the BLOB property - * @throws IOException if there is some problem sending the message. - * @deprecated Replaced by - * {@link #blobsEnable(Constants.BLOBEnables, INDIProperty)} - */ - @Deprecated - public void blobsEnableAlso(INDIBLOBProperty property) throws IOException { - sendMessageToServer(new EnableBLOB().setDevice(getName()).setName(property.getName()).setTextContent("Also")); - } - - /** - * Sends the appropriate message to the Server to allow the receipt of just - * a particular BLOB property changes. - * - * @param property the BLOB property - * @throws IOException if there is some problem sending the message. - * @deprecated Replaced by - * {@link #blobsEnable(Constants.BLOBEnables, INDIProperty)} - */ - @Deprecated - public void blobsEnableOnly(INDIBLOBProperty property) throws IOException { - sendMessageToServer(new EnableBLOB().setDevice(getName()).setName(property.getName()).setTextContent("Only")); - } - - /** - * Gets the last message received from the Device. - * - * @return the last message received. - */ - public String getLastMessage() { - return message; - } - - /** - * Gets the timestamp of the last received message. - * - * @return the timestamp of the last received message. - */ - public Date getTimestamp() { - return timestamp; - } - - /** - * Gets the name of the Device. - * - * @return the name of the Device. - */ - public String getName() { - return name; - } - - /** - * Processes a XML message received for this Device and stores and notifies - * the listeners if there is some message attribute in them. - * - * @param xml the XML message to be processed. - */ - protected void messageReceived(INDIProtocol xml) { - if (xml.hasMessage()) { - String time = xml.getTimestamp(); - - timestamp = dateFormat().parseTimestamp(time); - - message = xml.getMessage(); - - notifyListenersMessageChanged(); - } - } - - /** - * Processes a XML <delProperty>. It removes the appropriate Property - * from the list of Properties. - * - * @param xml the XML message to be processed. - */ - protected void deleteProperty(DelProperty xml) { - String propertyName = xml.getName(); - - if (!(propertyName.length() == 0)) { - messageReceived(xml); - - INDIProperty p = getProperty(propertyName); - - if (p != null) { - removeProperty(p); - } - } - } - - /** - * This function waits until a Property with a propertyName - * exists in this device and returns it. The wait is dinamic, so it should - * be called from a different Thread or the app will freeze until the - * property exists. - * - * @param propertyName The propertyName of the Property to wait for. - * @return The Property once it exists in this device. - */ - public INDIProperty waitForProperty(String propertyName) { - return waitForProperty(propertyName, Integer.MAX_VALUE); - } - - /** - * This function waits until a Property with a propertyName - * exists in this device and returns it. The wait is dinamic, so it should - * be called from a different Thread or the app will freeze until the - * property exists or the maxWait number of seconds have - * elapsed. - * - * @param propertyName The propertyName of the Property to wait for. - * @param maxWait Maximum number of seconds to wait for the Property - * @return The Property once it exists in this Device or null - * if the maximum wait is achieved. - */ - public INDIProperty waitForProperty(String propertyName, int maxWait) { - INDIProperty p = null; - - long startTime = new Date().getTime(); - boolean timeElapsed = false; - - while (p == null && !timeElapsed) { - p = this.getProperty(propertyName); - - if (p == null) { - try { - Thread.sleep(Constants.WAITING_INTERVAL); - } catch (InterruptedException e) { - LOG.warn("sleep interrupted", e); - } - } - - long endTime = new Date().getTime(); - - if ((endTime - startTime) / Constants.MILLISECONDS_IN_A_SECOND > maxWait) { - timeElapsed = true; - } - } - - return p; - } - - /** - * Processes a XML <setXXXVector>. It updates the appropiate Property. - * - * @param xml the XML message to be processed. - */ - protected void updateProperty(SetVector xml) { - String propertyName = xml.getName(); - - if (!propertyName.isEmpty()) { - // check message - messageReceived(xml); - - INDIProperty p = getProperty(propertyName); - - if (p != null) { // If it does not exist else ignore - if (p instanceof INDITextProperty && xml instanceof SetTextVector) { - p.update(xml); - } else if (p instanceof INDINumberProperty && xml instanceof SetNumberVector) { - p.update(xml); - } else if (p instanceof INDISwitchProperty && xml instanceof SetSwitchVector) { - p.update(xml); - } else if (p instanceof INDILightProperty && xml instanceof SetLightVector) { - p.update(xml); - } else if (p instanceof INDIBLOBProperty && xml instanceof SetBlobVector) { - p.update(xml); - } - } - } - } - - /** - * Processes a XML <newXXXVector>. It creates and adds the appropiate - * Property. - * - * @param xml The XML message to be processed. - */ - protected void addProperty(DefVector xml) { - String propertyName = xml.getName(); - - if (!propertyName.isEmpty()) { - messageReceived(xml); - - INDIProperty p = getProperty(propertyName); - - if (p == null) { // If it does not exist - try { - if (xml instanceof DefSwitchVector) { - INDISwitchProperty sp = new INDISwitchProperty((DefSwitchVector) xml, this); - addProperty(sp); - notifyListenersNewProperty(sp); - } else if (xml instanceof DefTextVector) { - INDITextProperty tp = new INDITextProperty((DefTextVector) xml, this); - addProperty(tp); - notifyListenersNewProperty(tp); - } else if (xml instanceof DefNumberVector) { - INDINumberProperty np = new INDINumberProperty((DefNumberVector) xml, this); - addProperty(np); - notifyListenersNewProperty(np); - } else if (xml instanceof DefLightVector) { - INDILightProperty lp = new INDILightProperty((DefLightVector) xml, this); - addProperty(lp); - notifyListenersNewProperty(lp); - } else if (xml instanceof DefBlobVector) { - INDIBLOBProperty bp = new INDIBLOBProperty((DefBlobVector) xml, this); - addProperty(bp); - notifyListenersNewProperty(bp); - } - } catch (IllegalArgumentException e) { - LOG.error("Some problem with the parameters", e); - } - } - } - } - - /** - * Gets the number of BLOB properties in this Device. - * - * @return the number of BLOB properties in this Device. - */ - public int getBLOBCount() { - return blobCount; - } - - /** - * Adds a Property to the properties list and updates the BLOB count if - * necessary. - * - * @param property The property to be added. - */ - private void addProperty(INDIProperty property) { - properties.put(property.getName(), property); - - if (property instanceof INDIBLOBProperty) { - blobCount++; - } - } - - /** - * Removes a Property from the properties list and updates the BLOB count if - * necessary. - * - * @param property The property to be removed. - */ - private void removeProperty(INDIProperty property) { - properties.remove(property.getName()); - - if (property instanceof INDIBLOBProperty) { - blobCount--; - } - - notifyListenersDeleteProperty(property); - } - - /** - * Gets the Server Connection of this Device. - * - * @return the Server Connection of this Device. - */ - public INDIServerConnection getServer() { - return server; - } - - /** - * Gets a Property by its propertyName. - * - * @param propertyName the propertyName of the Property to be retrieved. - * @return the Property with the propertyName or - * null if there is no Property with that propertyName. - */ - public INDIProperty getProperty(String propertyName) { - return properties.get(propertyName); - } - - /** - * Gets a list of group names for all the properties. - * - * @return the list of group names for all the properties of the device. - */ - public List getGroupNames() { - ArrayList groupNames = new ArrayList(); - for (INDIProperty p : properties.values()) { - String groupName = p.getGroup(); - - if (!groupNames.contains(groupName)) { - groupNames.add(groupName); - } - } - return groupNames; - } - - /** - * Gets a list of all the properties of the device. - * - * @return the list of Properties belonging to the device - */ - public List> getAllProperties() { - return new ArrayList>(properties.values()); - } - - /** - * Gets a list of properties belonging to a group. - * - * @param groupName the name of the group - * @return the list of Properties belonging to the group - */ - public List> getPropertiesOfGroup(String groupName) { - ArrayList> props = new ArrayList>(); - - for (INDIProperty p : props) { - if (p.getGroup().compareTo(groupName) == 0) { - props.add(p); - } - } - return props; - } - - /** - * A convenience method to get the Element of a Property by specifiying - * their names. - * - * @param propertyName the name of the Property. - * @param elementName the name of the Element. - * @return the Element with elementName as name of the property - * with propertyName as name. - */ - public INDIElement getElement(String propertyName, String elementName) { - INDIProperty p = getProperty(propertyName); - - if (p == null) { - return null; - } - - return p.getElement(elementName); - } - - /** - * Sends a XML message to the Server. - * - * @param xmlMessage the message to be sent. - * @throws IOException if there is some problem with the connection to the server. - */ - protected void sendMessageToServer(INDIProtocol xmlMessage) throws IOException { - server.sendMessageToServer(xmlMessage); - } - - /** - * Gets a default UI component to handle the repesentation and control of - * this Device. The panel is registered as a listener of this Device. Please - * note that the UI class must implement INDIDeviceListener. The component - * will be chosen depending on the loaded UI libraries (I4JClientUI, - * I4JAndroid, etc). Note that a casting of the returned value must be done. - * If a previous component has been asked, it will be dregistered as a - * listener. So, only one default component will listen to the device. - * - * @return A UI component that handles this Device. - * @throws INDIException if no uiComponent is found in the classpath. - */ - public INDIDeviceListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIDeviceListener(uiComponent); - } - uiComponent = INDIViewCreator.getDefault().createDeviceView(this); - addINDIDeviceListener(uiComponent); - return uiComponent; - } - - /** - * Gets a List with all the Properties of this Device. - * - * @return the List of Properties belonging to this Device. - */ - public List> getPropertiesAsList() { - return new ArrayList>(properties.values()); - } - - /** - * Gets the names of the Properties of this Device. - * - * @return the names of the Properties of this Device. - */ - public String[] getPropertyNames() { - List names = new ArrayList<>(); - for (INDIProperty indiProperty : properties.values()) { - names.add(indiProperty.getName()); - } - return names.toArray(new String[names.size()]); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIDeviceListener.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIDeviceListener.java deleted file mode 100644 index 5a069615317c483eb0375f75be38873cf616948e..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIDeviceListener.java +++ /dev/null @@ -1,54 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A interface to be notified about changes in a INDIDevice. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public interface INDIDeviceListener { - - /** - * Called when a new Property is added to the Device. - * - * @param device The Device on which the Property has been addded. - * @param property The Property that has been added. - */ - void newProperty(INDIDevice device, INDIProperty property); - - /** - * Called when a Property is removed from a Device. - * - * @param device The Device to which the Property has been removed. - * @param property The Property that has been removed. - */ - void removeProperty(INDIDevice device, INDIProperty property); - - /** - * Called when the message for a Device has changed. - * - * @param device The device to which the message has changed. - */ - void messageChanged(INDIDevice device); -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIElement.java deleted file mode 100644 index 812c554e022caf809ee5fb074283d6f64450e4ca..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIElement.java +++ /dev/null @@ -1,241 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.DefElement; -import lc.astro.indi.protocol.OneElement; - -import java.util.ArrayList; - -/** - * A class representing a INDI Element. The subclasses - * INDIBLOBElement, INDILightElement, - * INDINumberElement, INDISwitchElement and - * INDITextElement define the basic Elements that a INDI Property - * may contain according to the INDI protocol. - *

- * It implements a listener mechanism to notify changes in its value. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public abstract class INDIElement { - - /** - * The property to which this Element belongs. - */ - private INDIProperty property; - - /** - * The name of the Element. - */ - private String name; - - /** - * The label of the Element. - */ - private String label; - - /** - * The list of listeners of this Element. - */ - private ArrayList listeners; - - /** - * Constructs an instance of INDIElement. Called by its - * sub-classes. INDIElements are not usually directly - * instantiated. Usually used by INDIProperty. Throws - * IllegalArgumentException if the XML Element is not well formed (does not - * contain a name attribute). - * - * @param xml A XML Element <defXXX> describing the - * Element. - * @param property The INDIProperty to which this Element belongs. - */ - protected INDIElement(DefElement xml, INDIProperty property) { - this.property = property; - - name = xml.getName(); - - if (name.length() == 0) { - throw new IllegalArgumentException("No name for Element"); - } - - label = xml.getLabel(); - - if (label.length() == 0) { // If empty we use the name - label = name; - } - - listeners = new ArrayList(); - } - - /** - * Adds a new listener that will be notified on this Element value changes. - * - * @param listener The listener to add. - */ - public void addINDIElementListener(INDIElementListener listener) { - listeners.add(listener); - } - - /** - * Removes a listener from the listeners list. This listener will no longer - * be notified of changes of this Element. - * - * @param listener The listener to remove. - */ - public void removeINDIElementListener(INDIElementListener listener) { - listeners.remove(listener); - } - - /** - * Notifies the listeners about changes of the value of the Element. - */ - protected void notifyListeners() { - for (INDIElementListener l : new ArrayList<>(listeners)) { - l.elementChanged(this); - } - } - - /** - * Gets the label of the Element. - * - * @return The label of the Element. - */ - public String getLabel() { - return label; - } - - /** - * Gets the name of the Element. - * - * @return The name of the Element. - */ - public String getName() { - return name; - } - - /** - * Gets the Property to which this Element belongs. - * - * @return The property to which this Element belongs. - */ - public INDIProperty getProperty() { - return property; - } - - /** - * Gets the current value of the Element. - * - * @return The current value of the Element. - */ - public abstract Object getValue(); - - /** - * Gets the current value of the Element as a String. - * - * @return The current value of the Element as a String. - */ - public abstract String getValueAsString(); - - /** - * Sets the current value of the Element. It is assummed that the XML - * Element is really describing the new value for this particular Element. - *

- * This method will notify the change of the value to the listeners. - * - * @param xml A XML Element <oneXXX> describing the Element. - */ - protected abstract void setValue(OneElement xml); - - /** - * Gets the desired value of the Element. - * - * @return The current desiredvalue of the Element. null if it - * is not setted. - */ - public abstract Object getDesiredValue(); - - /** - * Sets the desired value of the Element to desiredValue. - * - * @param desiredValue The desired value for the property. - * @throws INDIValueException if the desiredValue is not of the correct type - * for the Element. - */ - public abstract void setDesiredValue(Object desiredValue) throws INDIValueException; - - /** - * Returns true if the desiredValue has been - * setted (and thus if it should be send to the Driver). - * - * @return true if the desiredValue has been setted. - * false otherwise. - */ - public abstract boolean isChanged(); - - /** - * Gets a default UI component to handle the repesentation and control of - * this Element. The panel is registered as a listener of this Element. - * Please note that the UI class must implement INDIElementListener. The - * component will be chosen depending on the loaded UI libraries - * (I4JClientUI, I4JAndroid, etc). Note that a casting of the returned value - * must be done. If a previous UI element has been asked, it will be - * discarded and de-registered as listener. So, only one default UI element - * will be active. - * - * @return A UI component that handles this Element. - * @throws INDIException if there is a problem instantiating the Component. - */ - public abstract INDIElementListener getDefaultUIComponent() throws INDIException; - - /** - * Checks if a desired value would be correct to be applied to the Element - * according to its definition and limits. - * - * @param desiredValue The value to be checked. - * @return true if the desiredValue would be - * acceptable to be applied to the element. false - * otherwise. - * @throws INDIValueException if the desiredValue is not correct. - */ - public abstract boolean checkCorrectValue(Object desiredValue) throws INDIValueException; - - /** - * Returns the XML code <oneXXX> representing this Element with a new - * desired value). The desired value is reseted. - * - * @return the XML code <oneXXX> representing the Element - * with a new value. - * @see #setDesiredValue - */ - protected abstract OneElement getXMLOneElementNewValue(); - - /** - * Gets the name of the element and its current value. - * - * @return a String with the name of the Element and Its Value - */ - public abstract String getNameAndValueAsString(); -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIElementListener.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIElementListener.java deleted file mode 100644 index a085b6810c7df230a7a937140b7a5e6e7cf79e0b..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIElementListener.java +++ /dev/null @@ -1,38 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A interface to be notified about changes in a INDIElement. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public interface INDIElementListener { - - /** - * The method that will be called when a INDIElement changes. - * - * @param element the element that has changed. - */ - void elementChanged(INDIElement element); -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDILightElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDILightElement.java deleted file mode 100644 index 76c000ebf61701d4e4b82070ed935199577618aa..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDILightElement.java +++ /dev/null @@ -1,176 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.Constants.LightStates; -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.DefLight; -import lc.astro.indi.protocol.OneElement; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A class representing a INDI Light Element. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDILightElement extends INDIElement { - - /** - * A logger for the errors. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDILightElement.class); - - /** - * Current State value for this Light Element. - */ - private LightStates state; - - /** - * A UI component that can be used in graphical interfaces for this Light - * Element. - */ - private INDIElementListener uiComponent; - - /** - * Constructs an instance of INDILightElement. Usually called - * from a INDIProperty. Throws IllegalArgumentException if the - * XML Element is not well formed or the value is not a valid one. - * - * @param xml A XML Element <defLight> describing the - * Light Element. - * @param property The INDIProperty to which the Element belongs. - */ - protected INDILightElement(DefLight xml, INDILightProperty property) { - super(xml, property); - setValue(xml.getTextContent()); - } - - @Override - public LightStates getValue() { - return state; - } - - /** - * Sets the current value of this Light Element. It is assummed that the XML - * Element is really describing the new value for this particular Light - * Element. Throws IllegalArgumentException if the xml is not - * well formed (the light status is not correct). - *

- * This method will notify the change of the value to the listeners. - * - * @param xml A XML Element <oneLight> describing the Element. - */ - @Override - protected void setValue(OneElement xml) { - setValue(xml.getTextContent()); - notifyListeners(); - } - - /** - * Sets the state of the Light Element. Throws IllegalArgumentException if - * the new state is not correct ("Idle" or "Ok" or "Busy" or "Alert"). - * - * @param newState The new state of the Light Element - */ - private void setValue(String newState) { - if (newState.compareTo("Idle") == 0) { - state = LightStates.IDLE; - } else if (newState.compareTo("Ok") == 0) { - state = LightStates.OK; - } else if (newState.compareTo("Busy") == 0) { - state = LightStates.BUSY; - } else if (newState.compareTo("Alert") == 0) { - state = LightStates.ALERT; - } else { - throw new IllegalArgumentException("Illegal Light Status"); - } - } - - @Override - public INDIElementListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIElementListener(uiComponent); - } - uiComponent = INDIViewCreator.getDefault().createLightElementView(this, getProperty().getPermission()); - - addINDIElementListener(uiComponent); - - return uiComponent; - } - - /** - * Always returns true. This method should never be called as lights cannot - * be setted by a client. - * - * @param desiredValue DO NOT USE - * @return true - * @throws INDIValueException NEVER THROWN - */ - @Override - public boolean checkCorrectValue(Object desiredValue) throws INDIValueException { - return true; // Nothing to check - } - - @Override - public String getNameAndValueAsString() { - return getName() + " - " + getValue(); - } - - @Override - public Object getDesiredValue() { - throw new UnsupportedOperationException("Lights have no desired value"); - } - - @Override - public void setDesiredValue(Object desiredValue) throws INDIValueException { - throw new INDIValueException(this, "Lights cannot be set."); - } - - @Override - public boolean isChanged() { - return false; // Lights cannot be changed - } - - /** - * Always returns an empty "" String. This method should never - * be called as lights cannot be setted by a client. - * - * @return ""; - */ - @Override - protected OneElement getXMLOneElementNewValue() { - LOG.error("changed but not possible, it should not be possible to change a light!"); - return null; - } - - @Override - public String toString() { - return getName() + ": " + getValue(); - } - - @Override - public String getValueAsString() { - return getValue() + ""; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDILightProperty.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDILightProperty.java deleted file mode 100644 index 0453a5c2e2d05743a9b559e2f1df02e06599de16..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDILightProperty.java +++ /dev/null @@ -1,139 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.Constants.PropertyPermissions; -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A class representing a INDI Light Property. - *

- * It implements a listener mechanism to notify changes in its Elements. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDILightProperty extends INDIProperty { - - /** - * A logger for the errors. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDILightProperty.class); - - /** - * A UI component that can be used in graphical interfaces for this Light - * Property. - */ - private INDIPropertyListener uiComponent; - - /** - * Constructs an instance of INDILightProperty. - * INDILightPropertys are not usually directly instantiated. - * Usually used by INDIDevice. - * - * @param xml A XML Element <defLightVector> describing - * the Property. - * @param device The INDIDevice to which this Property belongs. - */ - protected INDILightProperty(DefLightVector xml, INDIDevice device) { - super(xml, device); - for (DefElement element : xml.getElements()) { - if (element instanceof DefLight) { - String name = element.getName(); - - INDIElement iel = getElement(name); - - if (iel == null) { // Does not exist - INDILightElement ite = new INDILightElement((DefLight) element, this); - addElement(ite); - } - } - } - } - - @Override - protected void update(SetVector el) { - super.update(el, OneLight.class); - } - - /** - * Always sets the permission to Read Only as lights may not change. - * - * @param permission ignored. - */ - @Override - protected void setPermission(PropertyPermissions permission) { - super.setPermission(PropertyPermissions.RO); - } - - /** - * Sets the timeout to 0 as lights may not change. - * - * @param timeout ignored. - */ - @Override - protected void setTimeout(int timeout) { - super.setTimeout(0); - } - - /** - * Gets an empty String as Light Properties cannot be changed - * by clients. - * - * @return "" a empty String - */ - @Override - protected NewVector getXMLPropertyChangeInit() { - LOG.error("changed but not possible, it should not be possible to change a light!"); - // A light cannot change - return null; - } - - @Override - public INDIPropertyListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIPropertyListener(uiComponent); - } - - uiComponent = INDIViewCreator.getDefault().createLightPropertyView(this); - - addINDIPropertyListener(uiComponent); - - return uiComponent; - } - - /** - * Gets a particular Element of this Property by its name. - * - * @param name The name of the Element to be returned - * @return The Element of this Property with the given name. - * null if there is no Element with that - * name. - */ - @Override - public INDILightElement getElement(String name) { - return super.getElement(name); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDINumberElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDINumberElement.java deleted file mode 100644 index d82bec36a4010bd968feaa8c72568276f27b775d..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDINumberElement.java +++ /dev/null @@ -1,362 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.INDIException; -import lc.astro.indi.base.INDISexagesimalFormatter; -import lc.astro.indi.protocol.DefNumber; -import lc.astro.indi.protocol.OneElement; -import lc.astro.indi.protocol.OneNumber; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Formatter; -import java.util.Locale; - -/** - * A class representing a INDI Number Element. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - * @author Alex Leigh - */ -public class INDINumberElement extends INDIElement { - - /** - * A logger for the errors. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDINumberElement.class); - - /** - * The current value of this Number Element. - */ - private double value; - - /** - * The current desired value for the Element. - */ - private Double desiredValue; - - /** - * The number format of this Number Element. - */ - private String numberFormat; - - /** - * The step for this Number Element. - */ - private double step; - - /** - * A formatter used to parse and format the values. - */ - private INDISexagesimalFormatter sFormatter; - - /** - * A UI component that can be used in graphical interfaces for this Number - * Element. - */ - private INDIElementListener uiComponent; - - /** - * Constructs an instance of INDINumberElement. Usually called - * from a INDIProperty. - * - * @param xml A XML Element <defNumber> describing the - * Number Element. - * @param property The INDIProperty to which the Element belongs. - */ - protected INDINumberElement(DefNumber xml, INDINumberProperty property) { - super(xml, property); - desiredValue = null; - setNumberFormat(xml.getFormat()); - setStep(xml.getStep()); - setValue(xml.getTextContent()); - } - - /** - * Set the number format for this Number Element. - * - * @param newNumberFormat The new number format. - */ - private void setNumberFormat(String newNumberFormat) { - if (newNumberFormat.endsWith("m")) { - sFormatter = new INDISexagesimalFormatter(newNumberFormat); - } - - // Correct for Java format strings. - if (newNumberFormat.equals("%0.f") || newNumberFormat.equals("%.f")) { - newNumberFormat = "%.0f"; - } - - numberFormat = newNumberFormat; - } - - /** - * Gets the number format of this Number Element. - * - * @return the number format of this Number Element. - */ - public String getNumberFormat() { - return numberFormat; - } - - /** - * Gets the step for this Number Element. - * - * @return The step for this Number Element. - */ - public double getStep() { - return step; - } - - /** - * Gets the step for this Number Element formated as a String according to - * the number format. - * - * @return The step for this Number Element formatted as a String. - */ - public String getStepAsString() { - return getNumberAsString(getStep()); - } - - /** - * Gets the value of this Number Element formated as a String according to - * the number format. - * - * @return The value of this Number Element formatted as a String. - */ - @Override - public String getValueAsString() { - return getNumberAsString(getValue()); - } - - /** - * Returns a number formatted according to the Number Format of this Number - * Element. - * - * @param number the number to be formatted. - * @return the number formatted according to the Number Format of this - * Number Element. - */ - private String getNumberAsString(double number) { - String aux; - - if (numberFormat.endsWith("m")) { - aux = sFormatter.format(number); - } else { - Formatter formatter = new Formatter(Locale.US); - LOG.debug("Attempting to format: [format: {}] [num: {}]", getNumberFormat(), number); - aux = formatter.format(getNumberFormat(), number).toString(); - formatter.close(); - } - - return aux; - } - - @Override - public Double getValue() { - return value; - } - - /** - * Sets the current value of this Number Element. It is assummed that the - * XML Element is really describing the new value for this particular Number - * Element. - *

- * This method will notify the change of the value to the listeners. - *

- * Throws IllegalArgumentException if the xml is not well - * formed (the value is not a correct number or it is not in the [min, max] - * range). - * - * @param xml A XML Element <oneNumber> describing the Element. - */ - @Override - protected void setValue(OneElement xml) { - setValue(xml.getTextContent()); - notifyListeners(); - } - - /** - * Sets the step of this Number Element. - * - * @param stepS A String with the step value of this Number Element - */ - private void setStep(String stepS) { - step = parseNumber(stepS); - } - - /** - * Sets the value of this Number Element. - * - * @param valueS A String with the new value of this Number Element - */ - private void setValue(String valueS) { - value = parseNumber(valueS); - } - - /** - * Parses a number according to the Number Format of this Number Element. - * Throws IllegalArgumentException if the number is not - * correctly formatted. - * - * @param number The number to be parsed. - * @return the parsed number - */ - private double parseNumber(String number) { - double res; - - if (numberFormat.endsWith("m")) { - res = sFormatter.parseSexagesimal(number); - } else { - try { - res = Double.parseDouble(number); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Number value not correct"); - } - } - - return res; - } - - @Override - public INDIElementListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIElementListener(uiComponent); - } - uiComponent = INDIViewCreator.getDefault().createNumberElementView(this, getProperty().getPermission()); - addINDIElementListener(uiComponent); - - return uiComponent; - } - - /** - * Checks if a desired valueToCheck would be correct to be applied to the - * Number Element. - * - * @param valueToCheck The valueToCheck to be checked (usually a String, but can be a - * Double). - * @return true if the valueToCheck is a valid - * Double or a correct String according to the Number Format. - * false otherwise. - * @throws INDIValueException if valueToCheck is null or if it is - * not a Double or a correctly formatted String. - */ - @Override - public boolean checkCorrectValue(Object valueToCheck) throws INDIValueException { - if (valueToCheck == null) { - throw new INDIValueException(this, "null value"); - } - - double d; - - if (valueToCheck instanceof Double) { - d = ((Double) valueToCheck).doubleValue(); - } else { - if (valueToCheck instanceof String) { - String val = (String) valueToCheck; - try { - d = parseNumber(val); - } catch (IllegalArgumentException e) { - throw new INDIValueException(this, e.getMessage()); - } - } else { - throw new INDIValueException(this, "The number value is not correct (not Double nor String)"); - } - } - - return true; - } - - @Override - public String getNameAndValueAsString() { - return getName() + " - " + this.getValueAsString(); - } - - @Override - public Double getDesiredValue() { - return desiredValue; - } - - @Override - public void setDesiredValue(Object desiredValue) throws INDIValueException { - if (desiredValue instanceof String) { - setDesiredValueAsString((String) desiredValue); - } else if (desiredValue instanceof Double) { - setDesiredValueAsdouble(((Double) desiredValue).doubleValue()); - } else { - throw new INDIValueException(this, "Value for a Number Element must be a String or a Double"); - } - } - - /** - * Sets the desired value from a String. - * - * @param newDesiredValue The new desired Value - * @throws INDIValueException if the desired value not in range - */ - private void setDesiredValueAsString(String newDesiredValue) throws INDIValueException { - double dd = parseNumber(newDesiredValue); - - desiredValue = new Double(dd); - } - - /** - * Sets the desired value from a double. - * - * @param newDesiredValue The new desired Value - * @throws INDIValueException if the desired value not in range - */ - private void setDesiredValueAsdouble(double newDesiredValue) throws INDIValueException { - double dd = newDesiredValue; - - desiredValue = new Double(dd); - } - - @Override - public boolean isChanged() { - return desiredValue != null; - } - - /** - * Returns the XML code <oneNumber> representing this Number Element - * with a new desired value. Resets the desired value. - * - * @return the XML code <oneNumber> representing this - * Number Element with a new value. - * @see #setDesiredValue - */ - @Override - protected OneNumber getXMLOneElementNewValue() { - OneNumber xml = new OneNumber().setName(getName()).setTextContent(Double.toString(desiredValue.doubleValue())); - - desiredValue = null; - - return xml; - } - - @Override - public String toString() { - return this.getNumberAsString(value).trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDINumberProperty.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDINumberProperty.java deleted file mode 100644 index 6ae6173864a40c52f833a2f0cfd03f27381f1831..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDINumberProperty.java +++ /dev/null @@ -1,105 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.*; - -/** - * A class representing a INDI Number Property. - *

- * It implements a listener mechanism to notify changes in its Elements. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDINumberProperty extends INDIProperty { - - /** - * A UI component that can be used in graphical interfaces for this Number - * Property. - */ - private INDIPropertyListener uiComponent; - - /** - * Constructs an instance of INDINumberProperty. - * INDINumberPropertys are not usually directly instantiated. - * Usually used by INDIDevice. - * - * @param xml A XML Element <defNumberVector> describing - * the Property. - * @param device The INDIDevice to which this Property belongs. - */ - protected INDINumberProperty(DefNumberVector xml, INDIDevice device) { - super(xml, device); - for (DefElement element : xml.getElements()) { - if (element instanceof DefNumber) { - String name = element.getName(); - INDIElement iel = getElement(name); - if (iel == null) { // Does not exist - INDINumberElement ine = new INDINumberElement((DefNumber) element, this); - addElement(ine); - } - } - } - } - - @Override - protected void update(SetVector el) { - super.update(el, OneNumber.class); - } - - /** - * Gets the opening XML Element <newNumberVector> for this Property. - * - * @return the opening XML Element <newNumberVector> for this - * Property. - */ - @Override - protected NewVector getXMLPropertyChangeInit() { - return new NewNumberVector(); - } - - @Override - public INDIPropertyListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIPropertyListener(uiComponent); - } - uiComponent = INDIViewCreator.getDefault().createNumberPropertyView(this); - addINDIPropertyListener(uiComponent); - - return uiComponent; - } - - /** - * Gets a particular Element of this Property by its name. - * - * @param name The name of the Element to be returned - * @return The Element of this Property with the given name. - * null if there is no Element with that - * name. - */ - @Override - public INDINumberElement getElement(String name) { - return super.getElement(name); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIProperty.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIProperty.java deleted file mode 100644 index b413bc2a57965bc5861b74b7be12bc23a94f1cfd..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIProperty.java +++ /dev/null @@ -1,513 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L INDI for Java Client Library %% Copyright (C) 2013 - 2014 indiforjava %% - * This program is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser 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 General - * Lesser Public License for more details. You should have received a copy of - * the GNU General Lesser Public License along with this program. If not, see - * . #L% - */ - -import lc.astro.indi.base.Constants; -import lc.astro.indi.base.Constants.PropertyPermissions; -import lc.astro.indi.base.Constants.PropertyStates; -import lc.astro.indi.base.INDIException; -import lc.astro.indi.properties.INDIStandardElement; -import lc.astro.indi.properties.INDIStandardProperty; -import lc.astro.indi.protocol.DefVector; -import lc.astro.indi.protocol.NewVector; -import lc.astro.indi.protocol.OneElement; -import lc.astro.indi.protocol.SetVector; - -import java.io.IOException; -import java.util.*; - -import static lc.astro.indi.base.INDIDateFormat.dateFormat; - -/** - * A class representing a INDI Property. The subclasses - * INDIBLOBProperty, INDILightProperty, - * INDINumberProperty, INDISwitchProperty and - * INDITextProperty define the basic Properties that a INDI Devices - * may contain according to the INDI protocol. - *

- * It implements a listener mechanism to notify changes in its Elements. - * - * @param the elements that occure in the property. - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - * @author Alex Leigh - */ -public abstract class INDIProperty implements Iterable { - - /** - * The INDI Device to which this property belongs. - */ - private INDIDevice device; - - /** - * This property name. - */ - private String name; - - /** - * This property label. - */ - private String label; - - /** - * The group to which this Property might be assigned. - */ - private String group; - - /** - * The current state of this Property. - */ - private PropertyStates state; - - /** - * The permission of this Property. - */ - private PropertyPermissions permission; - - /** - * The timeout of this Property. - */ - private int timeout; - - /** - * A list of elements for this Property. - */ - private Map elements; - - /** - * The list of listeners of this Property. - */ - private List listeners; - - /** - * Constructs an instance of INDIProperty. Called by its - * sub-classes. INDIPropertys are not usually directly - * instantiated. Usually used by INDIDevice. Throws - * IllegalArgumentException if the XML Property is not well formed (does not - * contain a name attribute or the permissions are not - * correct). - * - * @param xml A XML Element <defXXXVector> describing the - * Property. - * @param device The INDIDevice to which this Property belongs. - */ - protected INDIProperty(DefVector xml, INDIDevice device) { - - this.device = device; - name = xml.getName(); - if (name.isEmpty()) { // If no name, ignore - throw new IllegalArgumentException("No name for the Property"); - } - label = xml.getLabel(); - if (label.isEmpty()) { // If no label copy from name - this.label = name; - } - group = xml.getGroup(); - if (group.isEmpty()) { // If no group, create default group - group = "Unsorted"; - } - String sta = xml.getState(); - setState(sta); - if (this instanceof INDITextProperty || this instanceof INDINumberProperty // - || this instanceof INDISwitchProperty || this instanceof INDIBLOBProperty) { - - permission = Constants.parsePropertyPermission(xml.getPerm()); - - String to = xml.getTimeout(); - - if (!to.isEmpty()) { - setTimeout(to); - } else { - timeout = 0; - } - } - - if (this.getClass() == INDILightProperty.class) { - timeout = 0; - permission = PropertyPermissions.RO; - } - - this.elements = new LinkedHashMap(); - - this.listeners = new ArrayList(); - } - - /** - * Updates the values of its elements according to some XML data. Subclasses - * of INDIProperty must implement this method to really do the - * parsing and update (usually calling update(Element, String) - * ). - * - * @param xml A XML Element <setXXXVector> to which the - * property must be updated. - */ - protected abstract void update(SetVector xml); - - /** - * Updates the values of its elements according to some XML data. Subclasses - * of INDIProperty usually call this method from - * update(Element) to really do the parsing and update. - * - * @param xml A XML Element <setXXXVector> to which the - * property must be updated. - * @param childNodesType The real XML type of xml, that is, one of - * <setBLOBVector>, - * <setLightVector>, - * <setNumberVector>, - * <setSwitchVector> or - * <setTextVector>. - */ - protected void update(SetVector xml, Class childNodesType) { - try { - String sta = xml.getState(); - if (!(sta.length() == 0)) { - setState(sta); - } - String to = xml.getTimeout(); - if (!(to == null || to.length() == 0)) { - setTimeout(to); - } - for (OneElement element : xml.getElements()) { - if (childNodesType.isAssignableFrom(element.getClass())) { - String ename = element.getName(); - Element iel = getElement(ename); - if (iel != null) { - // It already exists else ignore - iel.setValue(element); - } - } - } - } catch (IllegalArgumentException e) { - // If there was some problem parsing then set to alert - state = PropertyStates.ALERT; - } - notifyListeners(); - } - - /** - * Sets the state of this property. - * - * @param newState The new state for this Property in form of a String: - * Idle, Ok, Busy or - * Alert. - */ - private void setState(String newState) { - state = Constants.parsePropertyState(newState); - } - - /** - * Sets the current timeout for this Property. Throws - * IllegalArgumentException if the format of the timeout is not correct (a - * positive integer). - * - * @param newTimeout The new current timeout. - */ - private void setTimeout(String newTimeout) { - try { - timeout = Integer.parseInt(newTimeout); - - if (timeout < 0) { - throw new IllegalArgumentException("Illegal timeout for the Property"); - } - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Illegal timeout for the Property"); - } - } - - /** - * Gets the Device that owns this Property. - * - * @return the Device that owns this Property - */ - public INDIDevice getDevice() { - return device; - } - - /** - * Gets the Group to which this property might be assigned. - * - * @return the group to which this property might be assigned. - */ - public String getGroup() { - return group; - } - - /** - * Gets the timeout for this Property. - * - * @return the timeout for this Property. - */ - public int getTimeout() { - return timeout; - } - - /** - * Gets the label for this Property. - * - * @return the label for this Property. - */ - public String getLabel() { - return label; - } - - /** - * Gets the name of this Property. - * - * @return the name of this Property - */ - public String getName() { - return name; - } - - /** - * Gets the number of Elements in this Property. - * - * @return the number of Elements in this Property. - */ - public int getElementCount() { - return elements.size(); - } - - /** - * Gets the Permission of this Property. - * - * @return the Permission of this Property. - */ - public PropertyPermissions getPermission() { - return permission; - } - - /** - * Gets the State of this Property. - * - * @return the State of this Property. - */ - public PropertyStates getState() { - return state; - } - - /** - * Sets the timeout of this property. - * - * @param timeout the new timeout for this Property. - */ - protected void setTimeout(int timeout) { - this.timeout = timeout; - } - - /** - * Sets the State of this Property. The listeners are notified of this - * change. - * - * @param state the new State of this Property. - */ - protected void setState(PropertyStates state) { - this.state = state; - - notifyListeners(); - } - - /** - * Sets the Permission of this Property. - * - * @param permission the new Permission for this Property. - */ - protected void setPermission(PropertyPermissions permission) { - this.permission = permission; - } - - /** - * Adds a new Element to this Property. - * - * @param element the Element to be added. - */ - protected void addElement(Element element) { - elements.put(element.getName(), element); - } - - /** - * Gets a particular Element of this Property by its elementName. - * - * @param elementName The elementName of the Element to be returned - * @return The Element of this Property with the given - * elementName. null if there is no - * Element with that elementName. - */ - public Element getElement(String elementName) { - return elements.get(elementName); - } - - /** - * Gets a particular Element of this Property by its elementName. - * - * @param elementName The elementName of the Element to be returned - * @return The Element of this Property with the given - * elementName. null if there is no - * Element with that elementName. - */ - public Element getElement(INDIStandardElement elementName) { - return elements.get(elementName.name()); - } - - /** - * Gets a particular Element of this Property by its elementName. - * - * @param elementName The elementName of the Element to be returned - * @return The Element of this Property with the given - * elementName. null if there is no - * Element with that elementName. - */ - public Element getElement(INDIStandardProperty elementName) { - return elements.get(elementName.name()); - } - - /** - * Gets a ArrayList with all the Elements of this Property. - * - * @return the ArrayList of Elements belonging to this - * Property. - */ - public List getElementsAsList() { - return new ArrayList(elements.values()); - } - - /** - * Tests and changes the desired values of the the Elements of this - * Property. If there are new desired values for any Elements the XML code - * to produce the change is sent to the INDI Driver. If communication is - * successful the state of the property is set to "Busy". - * - * @throws INDIValueException if some of the desired values are not correct or if the - * Property is Read Only. - * @throws IOException if there is some communication problem with the INDI driver - * connection. - */ - public void sendChangesToDriver() throws INDIValueException, IOException { - if (permission == PropertyPermissions.RO) { - throw new INDIValueException(null, "The property is read only"); - } - int changedElements = 0; - NewVector xml = getXMLPropertyChangeInit(); - for (Element el : this) { - if (el.isChanged()) { - changedElements++; - xml.getElements().add(el.getXMLOneElementNewValue()); - } - } - if (changedElements > 0) { - setState(PropertyStates.BUSY); - xml.setDevice(getDevice().getName()); - xml.setName(getName()); - xml.setTimestamp(dateFormat().getCurrentTimestamp()); - device.sendMessageToServer(xml); - } - } - - /** - * Adds a new listener to this Property. - * - * @param listener the listener to be added. - */ - public void addINDIPropertyListener(INDIPropertyListener listener) { - listeners.add(listener); - } - - /** - * Removes a listener from this Property. - * - * @param listener the listener to be removed. - */ - public void removeINDIPropertyListener(INDIPropertyListener listener) { - listeners.remove(listener); - } - - /** - * Notifies all the listeners about the changes in the Property. - */ - private void notifyListeners() { - for (INDIPropertyListener l : new ArrayList(listeners)) { - l.propertyChanged(this); - } - } - - /** - * Gets the opening XML Element <newXXXVector> for this Property. - * - * @return the opening XML Element <newXXXVector> for this Property. - */ - protected abstract NewVector getXMLPropertyChangeInit(); - - /** - * Gets a default UI component to handle the repesentation and control of - * this Property. The panel is registered as a listener of this Property. - * Please note that the UI class must implement INDIPropertyListener. The - * component will be chosen depending on the loaded UI libraries - * (I4JClientUI, I4JAndroid, etc). Note that a casting of the returned value - * must be done. If a previous default component has been requested, the - * previous one will be deregistered. So, only one default component will - * listen for the property. - * - * @return A UI component that handles this Property. - * @throws INDIException if there is a problem instantiating an UI component for a - * Property. - */ - public abstract INDIPropertyListener getDefaultUIComponent() throws INDIException; - - /** - * Gets the names of the Elements of this Property. - * - * @return the names of the Elements of this Property. - */ - public String[] getElementNames() { - List names = new ArrayList<>(); - for (Element l : this) { - names.add(l.getName()); - } - return names.toArray(new String[names.size()]); - } - - /** - * Returns a String with the name of the Property, its state and its - * elements and values. - * - * @return a String representation of the property and its values. - */ - public String getNameStateAndValuesAsString() { - StringBuffer aux = new StringBuffer(getName()).append(" - ").append(getState()).append("\n"); - for (Element l : this) { - aux.append(" ").append(l.getNameAndValueAsString()).append("\n"); - } - return aux.toString(); - } - - /** - * Gets the values of the Property as a String. - * - * @return A String representation of the value of the Property. - */ - public String getValuesAsString() { - StringBuffer aux = new StringBuffer("["); - for (Element l : this) { - if (aux.length() > 1) { - aux.append(','); - } - aux.append(l); - } - return aux.append("]").toString(); - } - - @Override - public Iterator iterator() { - return elements.values().iterator(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIPropertyListener.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIPropertyListener.java deleted file mode 100644 index f0499dbe44f6f8f11573c2caaa46a9f5993752d1..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIPropertyListener.java +++ /dev/null @@ -1,38 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A interface to be notified about changes in a INDIProperty. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public interface INDIPropertyListener { - - /** - * The method that will be called when a INDIProperty changes. - * - * @param property the property that has changed. - */ - void propertyChanged(INDIProperty property); -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIServerConnection.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIServerConnection.java deleted file mode 100644 index 8d3eb60091f7604cc688b08ecf2708162c83c740..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIServerConnection.java +++ /dev/null @@ -1,648 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.Constants; -import lc.astro.indi.base.INDIProtocolParser; -import lc.astro.indi.base.INDIProtocolReader; -import lc.astro.indi.protocol.*; -import lc.astro.indi.protocol.api.INDIConnection; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.url.INDIURLStreamHandler; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.Closeable; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.*; - -import static lc.astro.indi.base.INDIDateFormat.dateFormat; - -/** - * A class representing a INDI Server Connection. Usually this is the entry - * point for any INDI Client to connect to the server, retrieve all devices and - * properties and so on. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - * @author Richard van Nieuwenhoven - * @author Alex Leigh - */ -public class INDIServerConnection implements INDIProtocolParser, Closeable { - - /** - * The logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIServerConnection.class); - - /** - * The url of the Connection. - */ - private final URL indiUrl; - /** - * The set of the devices associated to this Connection. - */ - private final Map devices = new LinkedHashMap(); - /** - * The socket used in the Connection. - */ - private INDIConnection connection = null; - /** - * A reader to read from the Connection. - */ - private INDIProtocolReader reader = null; - /** - * The list of Listeners of this Connection. - */ - private List listeners = new ArrayList(); - - /** - * Constructs an instance of INDIServerConnection. The - * Connection is NOT stablished. - * - * @param name The elementName of the Connection. - * @param host The host of the Connection. - * @param port The port of the Connection. - */ - public INDIServerConnection(String name, String host, int port) { - this(host, port); - } - - /** - * Constructs an instance of INDIServerConnection with no - * elementName. The Connection is NOT stablished. - * - * @param host The host of the Connection. - * @param port The port of the Connection. - */ - public INDIServerConnection(String host, int port) { - try { - indiUrl = new URL(INDIURLStreamHandler.PROTOCOL, host, port, "/"); - } catch (MalformedURLException e) { - throw new IllegalArgumentException("illegal indi url", e); - } - } - - /** - * Constructs an instance of INDIServerConnection with no - * elementName. The parameter can take the form of an indi uri. If the URI - * is not correct it will be used as the host of the connection. The - * Connection is NOT stablished. - * - * @param uri The INDIURI that specifies the parameters of the Connection. - * If the URI is not correct it will be used as the host of the - * connection and the default port will be used. - */ - public INDIServerConnection(String uri) { - this(openConnection(uri)); - } - - /** - * create a new server connection based on a indiconnection. - * - * @param connection the indi connection to base on. - */ - public INDIServerConnection(INDIConnection connection) { - indiUrl = connection.getURL(); - this.connection = connection; - } - - /** - * open a indi connection to the specified uri. - * - * @param uri the uri to parse and connect to - * @return the initalized connection. - */ - private static INDIConnection openConnection(String uri) { - try { - return (INDIConnection) new URL(uri).openConnection(); - } catch (Exception e) { - throw new IllegalArgumentException("the specified uri is not a legal indi url", e); - } - } - - /** - * This function waits until a Device with a deviceName exists - * in this Connection and returns it. The wait is dinamic, so it should be - * called from a different Thread or the app will freeze until the Device - * exists. - * - * @param deviceName The deviceName of the evice to wait for. - * @return The Device once it exists in this Connection. - */ - public INDIDevice waitForDevice(String deviceName) { - return waitForDevice(deviceName, Integer.MAX_VALUE); - } - - /** - * This function waits until a Device with a deviceName exists - * in this Connection and returns it. The wait is dinamic, so it should be - * called from a different Thread or the app will freeze until the Device - * exists or the maxWait number of seconds have elapsed. - * - * @param deviceName The deviceName of the device to wait for. - * @param maxWait Maximum number of seconds to wait for the Device - * @return The Device once it exists in this Connection or null - * if the maximum wait is achieved. - */ - public INDIDevice waitForDevice(String deviceName, int maxWait) { - INDIDevice d = null; - - long startTime = new Date().getTime(); - boolean timeElapsed = false; - - while (d == null && !timeElapsed) { - d = this.getDevice(deviceName); - - if (d == null) { - try { - Thread.sleep(Constants.WAITING_INTERVAL); - } catch (InterruptedException e) { - LOG.warn("sleep interrupted", e); - } - } - - long endTime = new Date().getTime(); - - if ((endTime - startTime) / Constants.MILLISECONDS_IN_A_SECOND > maxWait) { - timeElapsed = true; - } - } - - return d; - } - - /** - * Connects to the INDI Server. - * - * @throws IOException if there is some problem connecting to the Server. - */ - public void connect() throws IOException { - if (connection == null) { - connection = (INDIConnection) indiUrl.openConnection(); - } - if (reader == null) { - reader = new INDIProtocolReader(this, "client reader " + connection.getURL()); - reader.start(); - } - } - - /** - * Determines if the Connection is stablished of not. - * - * @return true if the Connection is stablished. - * false otherwise. - */ - public boolean isConnected() { - if (connection == null) { - return false; - } - - return true; - } - - /** - * Sends the appropriate message to the INDI Server to be notified about the - * Devices of the Server. - * - * @throws IOException if there is some problem with the Connection. - */ - public void askForDevices() throws IOException { - sendMessageToServer(new GetProperties().setVersion("1.7")); - } - - /** - * Sends the appropriate message to the INDI Server to be notified about a - * particular Device of the Server. - * - * @param device the Device elementName that is asked for. - * @throws IOException if there is some problem with the Connection. - */ - public void askForDevices(String device) throws IOException { - sendMessageToServer(new GetProperties().setVersion("1.7").setDevice(device)); - } - - /** - * Sends the appropriate message to the INDI Server to be notified about a - * particular Property of a particular Device of the Server. - * - * @param device the Device elementName of whose property is asked for. - * @param propertyName the Property elementName that is asked for. - * @throws IOException if there is some problem with the Connection. - */ - public void askForDevices(String device, String propertyName) throws IOException { - sendMessageToServer(new GetProperties().setVersion("1.7").setDevice(device).setName(propertyName)); - } - - /** - * Sends a xmlMessage message to the server. - * - * @param xmlMessage the message to be sent. - * @throws IOException if there is some problem with the Connection. - */ - protected void sendMessageToServer(INDIProtocol xmlMessage) throws IOException { - connection.getINDIOutputStream().writeObject(xmlMessage); - } - - @Override - public void finishReader() throws IOException { - close(); - } - - /** - * Adds a new Device to this Connection and notifies the listeners. - * - * @param device the device to be added. - */ - private void addDevice(INDIDevice device) { - devices.put(device.getName(), device); - - notifyListenersNewDevice(device); - } - - /** - * Gets a particular Device by its elementName. - * - * @param deviceName the deviceName of the Device - * @return the Device with the deviceName or null - * if there is no Device with that deviceName. - */ - public INDIDevice getDevice(String deviceName) { - return devices.get(deviceName); - } - - /** - * A convenience method to get the Property of a Device by specifiying their - * names. - * - * @param deviceName the elementName of the Device. - * @param propertyName the elementName of the Property. - * @return the Property with propertyName as elementName of the - * device with deviceName as elementName. - */ - public INDIProperty getProperty(String deviceName, String propertyName) { - INDIDevice d = getDevice(deviceName); - if (d == null) { - return null; - } - return d.getProperty(propertyName); - } - - /** - * A convenience method to get the Element of a Property of a Device by - * specifiying their names. - * - * @param deviceName the elementName of the Property. - * @param propertyName the elementName of the Element. - * @param elementName the elementName of the Element. - * @return the Element with a elementName as a elementName of a - * Property with propertyName as elementName of the - * device with deviceName as elementName. - */ - public INDIElement getElement(String deviceName, String propertyName, String elementName) { - INDIDevice d = getDevice(deviceName); - - if (d == null) { - return null; - } - - return d.getElement(propertyName, elementName); - } - - @Override - public void processProtokolMessage(INDIProtocol xml) { - if (xml instanceof DefVector) { - addProperty((DefVector) xml); - } else if (xml instanceof SetVector) { - updateProperty((SetVector) xml); - } else if (xml instanceof Message) { - messageReceived((Message) xml); - } else if (xml instanceof DelProperty) { - deleteProperty((DelProperty) xml); - } - } - - /** - * Parses a XML <delProperty> element and notifies the listeners. - * - * @param xml The element to be parsed. - */ - private void deleteProperty(DelProperty xml) { - if (xml.hasDevice()) { - String deviceName = xml.getDevice(); - - INDIDevice d = getDevice(deviceName); - - if (d != null) { - String propertyName = xml.getName(); - - if (propertyName != null && !propertyName.isEmpty()) { - d.deleteProperty(xml); - } else { - deleteDevice(d); - } - } else { - deleteAllDevices(); - } - } - } - - /** - * Deletes all the Devices from the Connection and notifies the listeners. - */ - private void deleteAllDevices() { - Iterator devs = devices.values().iterator(); - - while (!devs.hasNext()) { - deleteDevice(devs.next()); - } - } - - /** - * Deletes a Device from the Connection and notifies the listeners. - * - * @param device the Device to be removed. - */ - private void deleteDevice(INDIDevice device) { - devices.remove(device.getName()); - - notifyListenersRemoveDevice(device); - } - - /** - * Parses a XML <message> element and notifies the listeners if - * appropriate. - * - * @param xml The XML to be parsed. - */ - private void messageReceived(Message xml) { - if (xml.hasDevice()) { - String deviceName = xml.getDevice(); - INDIDevice d = getDevice(deviceName); - if (d != null) { - d.messageReceived(xml); - } - } else { // Global message from server - if (xml.hasMessage()) { - Date timestamp = dateFormat().parseTimestamp(xml.getTimestamp()); - notifyListenersNewMessage(timestamp, xml.getMessage()); - } - } - } - - /** - * Parses a XML <defXXXVector> element. - * - * @param xml the element to be parsed. - */ - private void addProperty(DefVector xml) { - String deviceName = xml.getDevice(); - - INDIDevice d = getDevice(deviceName); - - if (d == null) { - d = new INDIDevice(deviceName, this); - addDevice(d); - } - - d.addProperty(xml); - } - - /** - * Parses a XML <setXXXVector> element. - * - * @param el the element to be parsed. - */ - private void updateProperty(SetVector el) { - String deviceName = el.getDevice(); - - INDIDevice d = getDevice(deviceName); - - if (d != null) { // If device does no exist ignore - d.updateProperty(el); - } - } - - /** - * Adds a new listener to this Connection. - * - * @param listener the listener to be added. - */ - public void addINDIServerConnectionListener(INDIServerConnectionListener listener) { - listeners.add(listener); - } - - /** - * Removes a listener from this Connection. - * - * @param listener the listener to be removed. - */ - public void removeINDIServerConnectionListener(INDIServerConnectionListener listener) { - listeners.remove(listener); - } - - /** - * Adds a listener to all the Devices from this Connection. - * - * @param listener the listener to add - */ - public void addINDIDeviceListenerToAllDevices(INDIDeviceListener listener) { - List l = getDevicesAsList(); - - for (int i = 0; i < l.size(); i++) { - INDIDevice d = l.get(i); - - d.addINDIDeviceListener(listener); - } - } - - /** - * Removes a listener from all the Devices from this Connection. - * - * @param listener the listener to remove - */ - public void removeINDIDeviceListenerFromAllDevices(INDIDeviceListener listener) { - List l = getDevicesAsList(); - - for (int i = 0; i < l.size(); i++) { - INDIDevice d = l.get(i); - - d.removeINDIDeviceListener(listener); - } - } - - /** - * Gets the names of the Devices of this Connection. - * - * @return the names of the Devices of this Connection. - */ - public String[] getDeviceNames() { - List l = getDevicesAsList(); - - String[] names = new String[l.size()]; - - for (int i = 0; i < l.size(); i++) { - names[i] = l.get(i).getName(); - } - - return names; - } - - /** - * Gets a List with all the Devices of this Connection. - * - * @return the List of Devices belonging to this Connection. - */ - public List getDevicesAsList() { - return new ArrayList(devices.values()); - } - - /** - * A convenience method to add a listener to a Device (identified by its - * elementName) of this Connection. - * - * @param deviceName the Device elementName to which add the listener - * @param listener the listener to add - */ - public void addINDIDeviceListener(String deviceName, INDIDeviceListener listener) { - INDIDevice d = getDevice(deviceName); - - if (d == null) { - return; - } - - d.addINDIDeviceListener(listener); - } - - /** - * A convenience method to remove a listener from a Device (identified by - * its elementName) of this Connection. - * - * @param deviceName the Device elementName to which remove the listener - * @param listener the listener to remove - */ - public void removeINDIDeviceListener(String deviceName, INDIDeviceListener listener) { - INDIDevice d = getDevice(deviceName); - - if (d == null) { - return; - } - - d.removeINDIDeviceListener(listener); - } - - /** - * Notifies the listeners about a new Device. - * - * @param device the new Device. - */ - private void notifyListenersNewDevice(INDIDevice device) { - ArrayList lCopy = new ArrayList<>(listeners); - - for (int i = 0; i < lCopy.size(); i++) { - INDIServerConnectionListener l = lCopy.get(i); - - l.newDevice(this, device); - } - } - - /** - * Notifies the listeners about a Device that is removed. - * - * @param device the removed device. - */ - private void notifyListenersRemoveDevice(INDIDevice device) { - ArrayList lCopy = new ArrayList<>(listeners); - - for (int i = 0; i < lCopy.size(); i++) { - INDIServerConnectionListener l = lCopy.get(i); - - l.removeDevice(this, device); - } - } - - /** - * Notifies the listeners when the Connection is lost. - */ - private void notifyListenersConnectionLost() { - ArrayList lCopy = new ArrayList<>(listeners); - - for (int i = 0; i < lCopy.size(); i++) { - INDIServerConnectionListener l = lCopy.get(i); - l.connectionLost(this); - } - } - - /** - * Notifies the listeners about a new Server message. - * - * @param timestamp the timestamp of the message. - * @param message the message. - */ - protected void notifyListenersNewMessage(Date timestamp, String message) { - ArrayList lCopy = new ArrayList<>(listeners); - - for (int i = 0; i < lCopy.size(); i++) { - INDIServerConnectionListener l = lCopy.get(i); - - l.newMessage(this, timestamp, message); - } - } - - /** - * Gets the input stream of this Connection. - * - * @return The input stream of this Connection. - */ - @Override - public INDIInputStream getInputStream() { - try { - return connection.getINDIInputStream(); - } catch (IOException e) { - return null; - } - } - - @Override - public String toString() { - return getClass().getSimpleName() + "(" + indiUrl + ")"; - } - - /** - * @return the url behind the server connection. - */ - public URL getURL() { - return indiUrl; - } - - @Override - public void close() throws IOException { - if (connection != null) { - connection = null; - devices.clear(); - notifyListenersConnectionLost(); - connection.close(); - } - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIServerConnectionListener.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIServerConnectionListener.java deleted file mode 100644 index 2b76b65ed753706ce11d256c06d243aa7700f03f..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIServerConnectionListener.java +++ /dev/null @@ -1,66 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.Date; - -/** - * A interface to be notified about changes in a - * INDIServerConnection. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public interface INDIServerConnectionListener { - - /** - * Called when a new Device is added to the Connection. - * - * @param connection The connection to which the device is added. - * @param device The device that has been added. - */ - void newDevice(INDIServerConnection connection, INDIDevice device); - - /** - * Called when a device is removed from the Connection. - * - * @param connection The Connection from which the device is being removed. - * @param device The device being removed. - */ - void removeDevice(INDIServerConnection connection, INDIDevice device); - - /** - * Called when the connection is lost (explicity or not). - * - * @param connection The connection that has been lost. - */ - void connectionLost(INDIServerConnection connection); - - /** - * Called when the message of the Connection is changed. - * - * @param connection The Connection of whose message has changed. - * @param timestamp The timestamp of the message. - * @param message The message. - */ - void newMessage(INDIServerConnection connection, Date timestamp, String message); -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDISwitchElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDISwitchElement.java deleted file mode 100644 index abefc8e84a2eec786f4eabc74c6e9639e1212c73..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDISwitchElement.java +++ /dev/null @@ -1,194 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.Constants; -import lc.astro.indi.base.Constants.SwitchStatus; -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.DefSwitch; -import lc.astro.indi.protocol.OneElement; -import lc.astro.indi.protocol.OneSwitch; - -/** - * A class representing a INDI Switch Element. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDISwitchElement extends INDIElement { - - /** - * A UI component that can be used in graphical interfaces for this Switch - * Element. - */ - private INDIElementListener uiComponent; - - /** - * Current Status value for this Switch Element. - */ - private SwitchStatus status; - - /** - * Current desired status value for this Switch Element. - */ - private SwitchStatus desiredStatus; - - /** - * Constructs an instance of INDISwitchElement. Usually called - * from a INDIProperty. Throws IllegalArgumentException if the - * XML Element is not well formed (switch value not correct). - * - * @param xml A XML Element <defSwitch> describing the - * Switch Element. - * @param property The INDIProperty to which the Element belongs. - */ - protected INDISwitchElement(DefSwitch xml, INDISwitchProperty property) { - super(xml, property); - desiredStatus = null; - setValue(xml.getTextContent()); - } - - @Override - public SwitchStatus getValue() { - return status; - } - - /** - * Sets the current value of this Switch Element. It is assummed that the - * XML Element is really describing the new value for this particular Switch - * Element. - *

- * This method will notify the change of the value to the listeners. - * - * @param xml A XML Element <oneSwitch> describing the Element. - */ - @Override - protected void setValue(OneElement xml) { - setValue(xml.getTextContent()); - - notifyListeners(); - } - - /** - * Sets the value of the Switch Property. Throws IllegalArgumentException if - * the new status is not a correct one ("On" or "Off") - * - * @param newStatus the new status of the property - */ - private void setValue(String newStatus) { - if (newStatus.compareTo("Off") == 0) { - status = SwitchStatus.OFF; - } else if (newStatus.compareTo("On") == 0) { - status = SwitchStatus.ON; - } else { - throw new IllegalArgumentException("Illegal Switch Status"); - } - } - - @Override - public INDIElementListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIElementListener(uiComponent); - } - uiComponent = INDIViewCreator.getDefault().createSwitchElementView(this, getProperty().getPermission()); - addINDIElementListener(uiComponent); - return uiComponent; - } - - /** - * Checks if a desired value would be correct to be applied to the Switch - * Element, that is a SwitchStatus object. - * - * @param desiredValue The value to be checked. - * @return true if the desiredValue is a - * SwitchStatus. false otherwise. - * @throws INDIValueException if desiredValue is null. - */ - @Override - public boolean checkCorrectValue(Object desiredValue) throws INDIValueException { - if (desiredValue == null) { - throw new INDIValueException(this, "null value"); - } - - if (desiredValue instanceof SwitchStatus) { - return true; - } - - return false; - } - - @Override - public String getNameAndValueAsString() { - return getName() + " - " + getValue(); - } - - @Override - public SwitchStatus getDesiredValue() { - if (desiredStatus == null) { // Maybe there is no desired status, but - // should be sent - return status; - } - - return desiredStatus; - } - - @Override - public void setDesiredValue(Object desiredValue) throws INDIValueException { - SwitchStatus ss = null; - try { - ss = (SwitchStatus) desiredValue; - } catch (ClassCastException e) { - throw new INDIValueException(this, "Value for a Switch Element must be a SwitchStatus"); - } - - desiredStatus = ss; - } - - @Override - public boolean isChanged() { - return true; // Always true to send all the elements in a switch - // property - } - - /** - * Returns the XML code <oneSwitch> representing this Switch Element - * with a new value (a SwitchStatus). Resets the desired - * status. - * - * @return the XML code <oneSwitch> representing this - * Switch Element with a new value. - * @see #setDesiredValue - */ - @Override - protected OneElement getXMLOneElementNewValue() { - OneSwitch xml = new OneSwitch().setName(getName()).setTextContent(Constants.getSwitchStatusAsString(desiredStatus)); - - desiredStatus = null; - - return xml; - } - - @Override - public String getValueAsString() { - return getValue() + ""; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDISwitchProperty.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDISwitchProperty.java deleted file mode 100644 index ca3d0c895fd12e14849b3a429eb48c1e20dd1cc1..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDISwitchProperty.java +++ /dev/null @@ -1,240 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.Constants.PropertyPermissions; -import lc.astro.indi.base.Constants.PropertyStates; -import lc.astro.indi.base.Constants.SwitchRules; -import lc.astro.indi.base.Constants.SwitchStatus; -import lc.astro.indi.base.INDIException; -import lc.astro.indi.properties.INDIStandardProperty; -import lc.astro.indi.protocol.*; - -/** - * A class representing a INDI Switch Property. - *

- * It implements a listener mechanism to notify changes in its Elements. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDISwitchProperty extends INDIProperty { - - /** - * A UI component that can be used in graphical interfaces for this Switch - * Property. - */ - private INDIPropertyListener uiComponent; - - /** - * The current Rule for this Switch Property. - */ - private SwitchRules rule; - - /** - * Constructs an instance of INDISwitchProperty. - * INDISwitchPropertys are not usually directly instantiated. - * Usually used by INDIDevice. Throws IllegalArgumentException - * if the XML Property is not well formed (for example if the Elements are - * not well formed or if the Rule is not valid). - * - * @param xml A XML Element <defSwitchVector> describing - * the Property. - * @param device The INDIDevice to which this Property belongs. - */ - protected INDISwitchProperty(DefSwitchVector xml, INDIDevice device) { - super(xml, device); - String rul = xml.getRule(); - if (rul.compareTo("OneOfMany") == 0) { - rule = SwitchRules.ONE_OF_MANY; - } else if (rul.compareTo("AtMostOne") == 0) { - rule = SwitchRules.AT_MOST_ONE; - } else if (rul.compareTo("AnyOfMany") == 0) { - rule = SwitchRules.ANY_OF_MANY; - } else { - throw new IllegalArgumentException("Illegal Rule for the Switch Property"); - } - for (DefElement element : xml.getElements()) { - if (element instanceof DefSwitch) { - String name = element.getName(); - - INDIElement iel = getElement(name); - - if (iel == null) { // Does not exist - INDISwitchElement ite = new INDISwitchElement((DefSwitch) element, this); - addElement(ite); - } - } - } - if (!checkCorrectValues()) { - if (getSelectedCount() != 0) { // Sometimes de CONFIG_PROCESS is not - // correct at the beginning. skip - throw new IllegalArgumentException("Illegal initial value for Switch Property"); - } - setState(PropertyStates.ALERT); - } - } - - @Override - protected void update(SetVector el) { - super.update(el, OneSwitch.class); - - if (!checkCorrectValues()) { - setState(PropertyStates.ALERT); - } - } - - /** - * Gets the current Rule for this Switch Property. - * - * @return the current Rule for this Switch Property - */ - public SwitchRules getRule() { - return rule; - } - - /** - * Sets the Permission of this Property. If set to Write Only it defaults to - * Read Only (Switch properties cannot be Read Only). - * - * @param permission the new Permission for this Property. - */ - @Override - protected void setPermission(PropertyPermissions permission) { - if (permission == PropertyPermissions.WO) { - super.setPermission(PropertyPermissions.RO); - } else { - super.setPermission(permission); - } - } - - /** - * Checks if the Rule of this Switch property holds. - * - * @return true if the values of the Elements of this Property - * comply with the Rule. false otherwise. - */ - private boolean checkCorrectValues() { - if (getState() == PropertyStates.OK) { - - int selectedCount = getSelectedCount(); - - if (rule == SwitchRules.ONE_OF_MANY && selectedCount != 1) { - return false; - } - - if (rule == SwitchRules.AT_MOST_ONE && selectedCount > 1) { - return false; - } - } - - return true; - } - - /** - * Gets the number of selected Switch Elements. - * - * @return the number of selected Elements. - */ - private int getSelectedCount() { - int selectedCount = 0; - for (INDISwitchElement el : this) { - if (el.getValue() == SwitchStatus.ON) { - selectedCount++; - } - } - return selectedCount; - } - - /** - * Gets the opening XML Element <newSwitchVector> for this Property. - * - * @return the opening XML Element <newSwitchVector> for this - * Property. - */ - @Override - protected NewVector getXMLPropertyChangeInit() { - return new NewSwitchVector(); - } - - @Override - public INDIPropertyListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIPropertyListener(uiComponent); - } - uiComponent = INDIViewCreator.getDefault().createSwitchPropertyView(this); - addINDIPropertyListener(uiComponent); - - return uiComponent; - } - - /** - * Gets a particular Element of this Property by its name. - * - * @param name The name of the Element to be returned - * @return The Element of this Property with the given name. - * null if there is no Element with that - * name. - */ - @Override - public final INDISwitchElement getElement(String name) { - return super.getElement(name); - } - - /** - * Gets a particular Element of this Property by its name. - * - * @param name The name of the Element to be returned - * @return The Element of this Property with the given name. - * null if there is no Element with that - * name. - */ - @Override - public final INDISwitchElement getElement(INDIStandardProperty name) { - return super.getElement(name.name()); - } - - /** - * Gets the values of the Property as a String. - * - * @return A String representation of the value of the Property. - */ - @Override - public String getValuesAsString() { - StringBuffer aux = new StringBuffer(); - int n = 0; - for (INDISwitchElement element : this) { - if (element.getValue() == SwitchStatus.ON) { - if (n != 0) { - aux.append(", "); - } - n++; - aux.append(element.getLabel()); - } - } - if (n > 1) { - aux.insert(0, "["); - aux.append("]"); - } - return aux.toString(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDITextElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDITextElement.java deleted file mode 100644 index a69e4217f97125102efa96d4edbd91623181a860..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDITextElement.java +++ /dev/null @@ -1,175 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.DefText; -import lc.astro.indi.protocol.OneElement; -import lc.astro.indi.protocol.OneText; - -/** - * A class representing a INDI Text Element. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDITextElement extends INDIElement { - - /** - * The current value of the Text Element. - */ - private String value; - - /** - * The current desired value for the Text Element. - */ - private String desiredValue; - - /** - * A UI component that can be used in graphical interfaces for this Text - * Element. - */ - private INDIElementListener uiComponent; - - /** - * Constructs an instance of INDITextElement. Usually called - * from a INDIProperty. - * - * @param xml A XML Element <defText> describing the Text - * Element. - * @param property The INDIProperty to which the Element belongs. - */ - protected INDITextElement(DefText xml, INDITextProperty property) { - super(xml, property); - desiredValue = null; - value = xml.getTextContent(); - } - - @Override - public String getValue() { - return value; - } - - /** - * Sets the current value of this Text Element. It is assummed that the XML - * Element is really describing the new value for this particular Text - * Element. - *

- * This method will notify the change of the value to the listeners. - * - * @param xml A XML Element <oneText> describing the Element. - */ - @Override - protected void setValue(OneElement xml) { - value = xml.getTextContent(); - notifyListeners(); - } - - @Override - public INDIElementListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIElementListener(uiComponent); - } - - uiComponent = INDIViewCreator.getDefault().createTextElementView(this, getProperty().getPermission()); - addINDIElementListener(uiComponent); - - return uiComponent; - } - - /** - * Checks if a desired value would be correct to be applied to the Text - * Element. - * - * @param valueToCheck The value to be checked. - * @return true if the valueToCheck is a - * String. false otherwise. - * @throws INDIValueException if valueToCheck is null. - */ - @Override - public boolean checkCorrectValue(Object valueToCheck) throws INDIValueException { - if (valueToCheck == null) { - throw new INDIValueException(this, "null value"); - } - - if (valueToCheck instanceof String) { - return true; - } - - return false; - } - - @Override - public String getNameAndValueAsString() { - return getName() + " - " + getValue(); - } - - @Override - public String getDesiredValue() { - return desiredValue; - } - - @Override - public void setDesiredValue(Object desiredValue) throws INDIValueException { - String v = null; - - try { - v = (String) desiredValue; - } catch (ClassCastException e) { - throw new INDIValueException(this, "Value for a Text Element must be a String"); - } - - this.desiredValue = v; - } - - @Override - public boolean isChanged() { - return desiredValue != null; - } - - /** - * Returns the XML code <oneText> representing this Text Element with - * a new desired value (a String). Resets the desired value. - * - * @return the XML code <oneText> representing the Text - * Element with a new value. - * @see #setDesiredValue - */ - @Override - protected OneElement getXMLOneElementNewValue() { - OneText xml = new OneText().setName(getName()).setTextContent(desiredValue); - - desiredValue = null; - - return xml; - } - - @Override - public String toString() { - return value; - } - - @Override - public String getValueAsString() { - return getValue(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDITextProperty.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDITextProperty.java deleted file mode 100644 index 57965e133988933fb044841f48fe6ff231854480..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDITextProperty.java +++ /dev/null @@ -1,108 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.INDIException; -import lc.astro.indi.protocol.*; - -/** - * A class representing a INDI Text Property. - *

- * It implements a listener mechanism to notify changes in its Elements. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDITextProperty extends INDIProperty { - - /** - * A UI component that can be used in graphical interfaces for this Text - * Property. - */ - private INDIPropertyListener uiComponent; - - /** - * Constructs an instance of INDITextProperty. - * INDITextPropertys are not usually directly instantiated. - * Usually used by INDIDevice. Throws IllegalArgumentException - * if the XML Property is not well formed (for example if the Elements are - * not well formed). - * - * @param xml A XML Element <defTextVector> describing - * the Property. - * @param device The INDIDevice to which this Property belongs. - */ - protected INDITextProperty(DefTextVector xml, INDIDevice device) { - super(xml, device); - for (DefElement element : xml.getElements()) { - if (element instanceof DefText) { - String name = element.getName(); - INDIElement iel = getElement(name); - if (iel == null) { // Does not exist - INDITextElement ite = new INDITextElement((DefText) element, this); - addElement(ite); - } - } - - } - } - - @Override - protected void update(SetVector el) { - super.update(el, OneText.class); - } - - /** - * Gets the opening XML Element <newTextVector> for this Property. - * - * @return the opening XML Element <newTextVector> for this Property. - */ - @Override - protected NewVector getXMLPropertyChangeInit() { - return new NewTextVector(); - } - - @Override - public INDIPropertyListener getDefaultUIComponent() throws INDIException { - if (uiComponent != null) { - removeINDIPropertyListener(uiComponent); - } - - uiComponent = INDIViewCreator.getDefault().createTextPropertyView(this); - addINDIPropertyListener(uiComponent); - - return uiComponent; - } - - /** - * Gets a particular Element of this Property by its name. - * - * @param name The name of the Element to be returned - * @return The Element of this Property with the given name. - * null if there is no Element with that - * name. - */ - @Override - public final INDITextElement getElement(String name) { - return super.getElement(name); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIValueException.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIValueException.java deleted file mode 100644 index 0d754c4123e97322db423bee8e8bde48d5e6f5f8..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIValueException.java +++ /dev/null @@ -1,64 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.INDIException; - -/** - * A class representing an exception on the value of a INDIElement. - * - * @author S. Alonso (Zerjillo) [zerjioi at ugr.es] - */ -public class INDIValueException extends INDIException { - - /** - * serialisation version. - */ - private static final long serialVersionUID = -3338903931160160408L; - - /** - * The element that produced the exception. - */ - private INDIElement element; - - /** - * Constructs an instance of INDIValueException with the - * specified detail message. - * - * @param element The element that produced the error. - * @param msg the detail message. - */ - public INDIValueException(INDIElement element, String msg) { - super(msg); - this.element = element; - } - - /** - * Gets the INDIElement that produced the exception. - * - * @return the INDIElement that produced the exception - */ - public INDIElement getINDIElement() { - return element; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIViewCreator.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIViewCreator.java deleted file mode 100644 index 0482ba0092c993a29486118acdada1a62b3f8d1c..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIViewCreator.java +++ /dev/null @@ -1,188 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.Constants.PropertyPermissions; -import lc.astro.indi.base.INDIException; - -import java.util.Iterator; -import java.util.ServiceLoader; - -/** - * The view createtion factory, uses the service loader pattern to get the - * correct implementor for the current situation. - * - * @author Richard van Nieuwenhoven - */ -public final class INDIViewCreator { - - /** - * The dummy creator when nothing was found, this one is used that does - * "nothing". - */ - private static final class DummyViewCreator implements INDIViewCreatorInterface { - - @Override - public INDIPropertyListener createTextPropertyView(INDITextProperty indiProperty) throws INDIException { - return DUMMY_PROPERTY_LISTENER; - } - - @Override - public INDIElementListener createTextElementView(INDITextElement indiTextElement, PropertyPermissions permission) throws INDIException { - return DUMMY_ELEMENT_LISTENER; - } - - @Override - public INDIPropertyListener createSwitchPropertyView(INDISwitchProperty indiProperty) throws INDIException { - return DUMMY_PROPERTY_LISTENER; - } - - @Override - public INDIElementListener createSwitchElementView(INDISwitchElement indiSwitchElement, PropertyPermissions permission) throws INDIException { - return DUMMY_ELEMENT_LISTENER; - } - - @Override - public INDIPropertyListener createNumberPropertyView(INDINumberProperty indiProperty) throws INDIException { - return DUMMY_PROPERTY_LISTENER; - } - - @Override - public INDIElementListener createNumberElementView(INDINumberElement indiNumberElement, PropertyPermissions permission) throws INDIException { - return DUMMY_ELEMENT_LISTENER; - } - - @Override - public INDIPropertyListener createLightPropertyView(INDILightProperty indiProperty) throws INDIException { - return DUMMY_PROPERTY_LISTENER; - } - - @Override - public INDIElementListener createLightElementView(INDILightElement indiLightElement, PropertyPermissions permission) throws INDIException { - return DUMMY_ELEMENT_LISTENER; - } - - @Override - public INDIDeviceListener createDeviceListener(INDIDevice indiDevice) throws INDIException { - return DUMMY_DEVICE_LISTENER; - } - - @Override - public INDIPropertyListener createBlobPropertyView(INDIBLOBProperty indiProperty) throws INDIException { - return DUMMY_PROPERTY_LISTENER; - } - - @Override - public INDIElementListener createBlobElementView(INDIBLOBElement indiblobElement, PropertyPermissions permission) throws INDIException { - return DUMMY_ELEMENT_LISTENER; - } - - @Override - public INDIDeviceListener createDeviceView(INDIDevice indiDevice) throws INDIException { - return DUMMY_DEVICE_LISTENER; - } - } - - /** - * Dummy device listener, that does nothing. - */ - private static final class DummyDeviceListener implements INDIDeviceListener { - - @Override - public void removeProperty(INDIDevice device, INDIProperty property) { - } - - @Override - public void newProperty(INDIDevice device, INDIProperty property) { - } - - @Override - public void messageChanged(INDIDevice device) { - } - } - - /** - * Dummy element listener, that does nothing. - */ - private static final class DummyElementListener implements INDIElementListener { - - @Override - public void elementChanged(INDIElement element) { - } - } - - /** - * Dummy property listener, that does nothing. - */ - private static final class DummyPropertyListener implements INDIPropertyListener { - - @Override - public void propertyChanged(INDIProperty property) { - } - } - - /** - * static cached dummy device listener. - */ - private static final DummyDeviceListener DUMMY_DEVICE_LISTENER = new DummyDeviceListener(); - - /** - * static cached dummy property listener. - */ - private static final DummyPropertyListener DUMMY_PROPERTY_LISTENER = new DummyPropertyListener(); - - /** - * static cached dummy element listener. - */ - private static final DummyElementListener DUMMY_ELEMENT_LISTENER = new DummyElementListener(); - - /** - * the staticaly cached creator interface resolved using the serviceloader - * pattern. - */ - private static INDIViewCreatorInterface creatorInterface; - - /** - * utility class should never be instanciated. - */ - private INDIViewCreator() { - } - - /** - * @return the default implementation dependeing on what is first available - * in the classpath. - */ - public static INDIViewCreatorInterface getDefault() { - if (creatorInterface == null) { - ServiceLoader loader = ServiceLoader.load(INDIViewCreatorInterface.class); - Iterator iterator = loader.iterator(); - if (iterator.hasNext()) { - creatorInterface = iterator.next(); - } - if (creatorInterface == null) { - creatorInterface = new DummyViewCreator(); - } - } - return creatorInterface; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIViewCreatorInterface.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIViewCreatorInterface.java deleted file mode 100644 index 647342675b404b27a2aa7a11ad062756fbe75f55..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/client/INDIViewCreatorInterface.java +++ /dev/null @@ -1,149 +0,0 @@ -package lc.astro.indi.client; - -/* - * #%L - * INDI for Java Client Library - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.base.Constants.PropertyPermissions; -import lc.astro.indi.base.INDIException; - -/** - * The view creator factory interface. implementors are used to create views for - * different types of gui views like swing / androis / javafx or swt. - * - * @author Richard van Nieuwenhoven - */ -public interface INDIViewCreatorInterface { - - /** - * create a device listener for the device. - * - * @param indiDevice the device to listen to - * @return the created device listener - * @throws INDIException if something unexpected went wrong. - */ - INDIDeviceListener createDeviceListener(INDIDevice indiDevice) throws INDIException; - - /** - * Create the view for a blob element with the specified permissions. - * - * @param indiblobElement the blob element to create a view for - * @param permission the permissions for the parent property - * @return the element listener around the view - * @throws INDIException if something unexpected went wrong. - */ - INDIElementListener createBlobElementView(INDIBLOBElement indiblobElement, PropertyPermissions permission) throws INDIException; - - /** - * Create the view for a light element with the specified permissions. - * - * @param indiLightElement the light element to create a view for - * @param permission the permissions for the parent property - * @return the element listener around the view - * @throws INDIException if something unexpected went wrong. - */ - INDIElementListener createLightElementView(INDILightElement indiLightElement, PropertyPermissions permission) throws INDIException; - - /** - * Create the view for a number element with the specified permissions. - * - * @param indiNumberElement the number element to create a view for - * @param permission the permissions for the parent property - * @return the element listener around the view - * @throws INDIException if something unexpected went wrong. - */ - INDIElementListener createNumberElementView(INDINumberElement indiNumberElement, PropertyPermissions permission) throws INDIException; - - /** - * Create the view for a switch element with the specified permissions. - * - * @param indiSwitchElement the switch element to create a view for - * @param permission the permissions for the parent property - * @return the element listener around the view - * @throws INDIException if something unexpected went wrong. - */ - INDIElementListener createSwitchElementView(INDISwitchElement indiSwitchElement, PropertyPermissions permission) throws INDIException; - - /** - * Create the view for a text element with the specified permissions. - * - * @param indiTextElement the text element to create a view for - * @param permission the permissions for the parent property - * @return the element listener around the view - * @throws INDIException if something unexpected went wrong. - */ - INDIElementListener createTextElementView(INDITextElement indiTextElement, PropertyPermissions permission) throws INDIException; - - /** - * Create the view for a blob property. - * - * @param indiProperty the blob property to create the view for. - * @return the property listener of the view. - * @throws INDIException if something unexpected went wrong. - */ - INDIPropertyListener createBlobPropertyView(INDIBLOBProperty indiProperty) throws INDIException; - - /** - * Create the view for a number property. - * - * @param indiProperty the number property to create the view for. - * @return the property listener of the view. - * @throws INDIException if something unexpected went wrong. - */ - INDIPropertyListener createNumberPropertyView(INDINumberProperty indiProperty) throws INDIException; - - /** - * Create the view for a text property. - * - * @param indiProperty the text property to create the view for. - * @return the property listener of the view. - * @throws INDIException if something unexpected went wrong. - */ - INDIPropertyListener createTextPropertyView(INDITextProperty indiProperty) throws INDIException; - - /** - * Create the view for a switch property. - * - * @param indiProperty the switch property to create the view for. - * @return the property listener of the view. - * @throws INDIException if something unexpected went wrong. - */ - INDIPropertyListener createSwitchPropertyView(INDISwitchProperty indiProperty) throws INDIException; - - /** - * Create the view for a light property. - * - * @param indiProperty the light property to create the view for. - * @return the property listener of the view. - * @throws INDIException if something unexpected went wrong. - */ - INDIPropertyListener createLightPropertyView(INDILightProperty indiProperty) throws INDIException; - - /** - * create the view for a device. - * - * @param indiDevice the device to create the view for. - * @return the device listener for the view - * @throws INDIException if something unexpected went wrong. - */ - INDIDeviceListener createDeviceView(INDIDevice indiDevice) throws INDIException; - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIDeviceDescriptor.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIDeviceDescriptor.java deleted file mode 100644 index 59a72f1c877c16b59c54d42c7a3d97f6a5161320..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIDeviceDescriptor.java +++ /dev/null @@ -1,253 +0,0 @@ -package lc.astro.indi.properties; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2012 - 2015 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.*; - -import static lc.astro.indi.properties.INDIStandardProperty.*; - -/** - * This enumeration list allows the detectction what kind of device a device is - * depending on the available properties. - * - * @author Richard van Nieuwenhoven - */ -public enum INDIDeviceDescriptor { - /** - * telescope device. - */ - TELESCOPE(present(EQUATORIAL_EOD_COORD), present(ON_COORD_SET), present(TELESCOPE_MOTION_NS), present(TELESCOPE_MOTION_WE), present(TELESCOPE_TIMED_GUIDE_NS), - present(TELESCOPE_TIMED_GUIDE_WE), present(TELESCOPE_SLEW_RATE), present(TELESCOPE_PARK), present(TELESCOPE_ABORT_MOTION), present(TELESCOPE_TRACK_RATE), - present(TELESCOPE_INFO), present(EQUATORIAL_COORD), present(HORIZONTAL_COORD)), - /** - * ccd device. - */ - CCD(present(CCDn_FRAME), present(CCDn_EXPOSURE), present(CCDn_ABORT_EXPOSURE), present(CCDn_FRAME), present(CCDn_TEMPERATURE), present(CCDn_COOLER), - present(CCDn_COOLER_POWER), present(CCDn_FRAME_TYPE), present(CCDn_BINNING), present(CCDn_COMPRESSION), present(CCDn_FRAME_RESET), present(CCDn_INFO), - present(CCDn_CFA), present(CCDn)), - /** - * filter device. - */ - FILTER(present(FILTER_SLOT), present(FILTER_NAME), missing(EQUATORIAL_EOD_COORD), missing(EQUATORIAL_COORD), missing(HORIZONTAL_COORD), missing(CCDn_FRAME)), - /** - * focuser device. - */ - FOCUSER(present(ABS_FOCUS_POSITION), missing(EQUATORIAL_EOD_COORD), missing(EQUATORIAL_COORD), missing(HORIZONTAL_COORD), missing(CCDn_FRAME)), - /** - * dome device. - */ - DOME(present(DOME_SPEED), present(DOME_MOTION), present(DOME_TIMER), present(REL_DOME_POSITION), present(ABS_DOME_POSITION), present(DOME_ABORT_MOTION), - present(DOME_SHUTTER), present(DOME_GOTO), present(DOME_PARAMS), present(DOME_AUTOSYNC), present(DOME_MEASUREMENTS)), - /** - * location device. - */ - LOCATION(present(GEOGRAPHIC_COORD), missing(EQUATORIAL_EOD_COORD), missing(EQUATORIAL_COORD), missing(HORIZONTAL_COORD), missing(CCDn_FRAME)), - /** - * weather device. - */ - WEATHER(present(ATMOSPHERE), missing(EQUATORIAL_EOD_COORD), missing(EQUATORIAL_COORD), missing(HORIZONTAL_COORD), missing(CCDn_FRAME)), - /** - * time device. - */ - TIME(present(TIME_UTC), missing(EQUATORIAL_EOD_COORD), missing(EQUATORIAL_COORD), missing(HORIZONTAL_COORD), missing(CCDn_FRAME)), - /** - * switch device. - */ - SWITCH(present(SWITCH_MODULE), missing(EQUATORIAL_EOD_COORD), missing(EQUATORIAL_COORD), missing(HORIZONTAL_COORD), missing(CCDn_FRAME)), - - /** - * an unknown device, no standard properties. - */ - UNKNOWN(); - - /** - * Description of a property that should be availabe or missing in a device. - */ - private static final class Description { - - /** - * should the property be there or not. - */ - private final boolean present; - - /** - * name of the property. - */ - private final String name; - - /** - * @return if the property should be there or just not. - */ - private boolean isPresent() { - return present; - } - - /** - * constructor. - * - * @param name the name of the property. - * @param present should it be present or not present. - */ - private Description(String name, boolean present) { - this.name = name; - this.present = present; - } - } - - /** - * a match during the search for devices. - */ - private static class Match { - - /** - * the matching descriptor. - */ - private final INDIDeviceDescriptor descriptor; - - /** - * how good does the device match? the higher the better. - */ - private final int matchPoints; - - /** - * constructor for the Match. - * - * @param descriptor the matching descriptor. - * @param matchPoints how good does the device match? the higher the better. - */ - public Match(INDIDeviceDescriptor descriptor, int matchPoints) { - this.descriptor = descriptor; - this.matchPoints = matchPoints; - } - } - - /** - * properties that describe a device. - */ - private final Description[] propertyDescription; - - /** - * @return properties that describe a device. - */ - private Description[] getPropertyDescription() { - return propertyDescription; - } - - /** - * construct a device description based on avaiable and not available - * properties. - * - * @param propertyDescription the properties that describe a device. - */ - private INDIDeviceDescriptor(Description... propertyDescription) { - this.propertyDescription = propertyDescription; - } - - /** - * the property that should be present in a device. - * - * @param property the property - * @return the description. - */ - private static Description present(INDIStandardProperty property) { - return new Description(property.name(), true); - } - - /** - * the property that should be missing in a device. - * - * @param property the property - * @return the description. - */ - private static Description missing(INDIStandardProperty property) { - return new Description(property.name(), false); - } - - /** - * Analyze a list of properties and depending on the presence or not - * Presence of properties try to detect the type of device something is. - * - * @param properties the available list of properties. - * @return the enumeration that describes the device type. - */ - public static INDIDeviceDescriptor[] detectDeviceType(Collection properties) { - Set indexedProperties = unfifyPropertyNames(properties); - List matches = new LinkedList<>(); - for (INDIDeviceDescriptor device : values()) { - int points = 0; - for (Description property : device.getPropertyDescription()) { - if (property.isPresent()) { - // the presence of a property counts as a point. - if (indexedProperties.contains(property.name)) { - points++; - } - } else { - // the presence of a missing property is absolute (no - // match). - if (indexedProperties.contains(property.name)) { - points = Integer.MIN_VALUE; - break; - } - } - } - if (points > 0) { - matches.add(new Match(device, points)); - } - } - Collections.sort(matches, new Comparator() { - - @Override - public int compare(Match o1, Match o2) { - return o1.matchPoints - o2.matchPoints; - } - }); - INDIDeviceDescriptor[] result = new INDIDeviceDescriptor[matches.size()]; - for (int index = 0; index < result.length; index++) { - result[index] = matches.get(index).descriptor; - } - return result; - } - - /** - * take the list of strings and rename each to a naming that is compatible - * with the device list. So all upper cases and all digits to a small 'n'. - * - * @param properties the list of properties to convert - * @return the new unified list. - */ - private static Set unfifyPropertyNames(Collection properties) { - Set indexedProperties = new HashSet<>(); - for (String string : properties) { - StringBuffer buffer = new StringBuffer(); - for (char character : string.toCharArray()) { - if (Character.isDigit(character)) { - buffer.append('n'); - } else { - buffer.append(Character.toUpperCase(character)); - } - } - indexedProperties.add(buffer.toString()); - } - return indexedProperties; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIStandardElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIStandardElement.java deleted file mode 100644 index c478757b65bf55eafb62e8d4f2c42e535bb7bd94..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIStandardElement.java +++ /dev/null @@ -1,505 +0,0 @@ -package lc.astro.indi.properties; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2012 - 2015 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * statndard element names. - * - * @author Richard van Nieuwenhoven - */ -public enum INDIStandardElement { - /** - * Abort CCD exposure/any motion. - */ - ABORT, - /** - * Stop telescope rapidly, but gracefully. - */ - ABORT_MOTION, - /** - * text element of the active ccd. - */ - ACTIVE_CCD, - /** - * text element of the active dome. - */ - ACTIVE_DOME, - /** - * text element of the active filter. - */ - ACTIVE_FILTER, - /** - * text element of the active focuser. - */ - ACTIVE_FOCUSER, - /** - * text element of the active location provider. - */ - ACTIVE_LOCATION, - /** - * text element of the active switch provider. some drivers need a switch do - * do something, this property allows you to select the driver to provide - * the switch. - */ - ACTIVE_SWITCH, - /** - * text element of the active telescope. - */ - ACTIVE_TELESCOPE, - /** - * text element of the current time provider. - */ - ACTIVE_TIME, - /** - * text element of the active weather provider. - */ - ACTIVE_WEATHER, - /** - * Altitude, degrees above horizon. - */ - ALT, - /** - * If dome is slaved, AUTOSYNC_THRESHOLD is the number of acceptable azimuth - * degrees error between reported and requested dome position. Once the - * difference between target and current dome positions exceed this value, - * the dome shall be commanded to move to the target position. - */ - AUTOSYNC_THRESHOLD, - /** - * Azimuth, degrees E of N. - */ - AZ, - /** - * Bits per pixel. - */ - CCD_BITSPERPIXEL, - /** - * Compress CCD frame. - */ - CCD_COMPRESS, - /** - * Percentage % of Cooler Power utilized. - */ - CCD_COOLER_VALUE, - /** - * Expose the CCD chip for CCD_EXPOSURE_VALUE seconds. - */ - CCD_EXPOSURE_VALUE, - /** - * Resolution x. - */ - CCD_MAX_X, - /** - * Resolution y. - */ - CCD_MAX_Y, - /** - * CCD pixel size in microns. - */ - CCD_PIXEL_SIZE, - /** - * Pixel size X, microns. - */ - CCD_PIXEL_SIZE_X, - /** - * Pixel size Y, microns. - */ - CCD_PIXEL_SIZE_Y, - /** - * Send raw CCD frame. - */ - CCD_RAW, - /** - * CCD chip temperature in degrees Celsius. - */ - CCD_TEMPERATURE_VALUE, - /** - * CFA X Offset. - */ - CFA_OFFSET_X, - /** - * CFA Y Offset. - */ - CFA_OFFSET_Y, - /** - * CFA Filter type (e.g. RGGB). - */ - CFA_TYPE, - /** - * switch element to establish connection to device. - */ - CONNECT, - /** - * Turn cooler off. - */ - COOLER_OFF, - /** - * Turn cooler on. - */ - COOLER_ON, - /** - * This element represents the declination of the pointing direction. - */ - DEC, - /** - * switch element to establish Disconnect the device. - */ - DISCONNECT, - /** - * Dome radius (m). - */ - DM_DOME_RADIUS, - /** - * Displacement to the east of the mount center (m). - */ - DM_EAST_DISPLACEMENT, - /** - * Displacement to the north of the mount center (m). - */ - DM_NORTH_DISPLACEMENT, - /** - * Distance from the optical axis to the mount center (m). - */ - DM_OTA_OFFSET, - /** - * UP displacement of the mount center (m). - */ - DM_UP_DISPLACEMENT, - /** - * Move dome to DOME_ABSOLUTE_POSITION absolute azimuth angle in degrees. - */ - DOME_ABSOLUTE_POSITION, - /** - * Disable dome slaving. - */ - DOME_AUTOSYNC_DISABLE, - /** - * Enable dome slaving. - */ - DOME_AUTOSYNC_ENABLE, - /** - * Move dome counter clockwise, looking down. - */ - DOME_CCW, - /** - * Move dome Clockwise, looking down. - */ - DOME_CW, - /** - * Go to home position. - */ - DOME_HOME, - /** - * Go to park position. - */ - DOME_PARK, - /** - * Move DOME_RELATIVE_POSITION degrees azimuth in the direction of - * DOME_MOTION. - */ - DOME_RELATIVE_POSITION, - /** - * Dome shutter width (m). - */ - DOME_SHUTTER_WIDTH, - /** - * Set dome speed in RPM. - */ - DOME_SPEED_VALUE, - /** - * Move the dome in the direction of DOME_MOTION at rate DOME_SPEED for - * DOME_TIMER_VALUE milliseconds. - */ - DOME_TIMER_VALUE, - /** - * number element of the Site elevation, meters. - */ - ELEV, - /** - * The filter wheel's current slot name. - */ - FILTER_NAME_VALUE, - /** - * The filter wheel's current slot number. Important: Filter numbers start - * from 1 to N. - */ - FILTER_SLOT_VALUE, - /** - * Absolute position Ticks. - */ - FOCUS_ABSOLUTE_POSITION, - /** - * Focus inward. - */ - FOCUS_INWARD, - /** - * Focus outward. - */ - FOCUS_OUTWARD, - /** - * Move # of ticks in FOCUS_MOTION direction. - */ - FOCUS_RELATIVE_POSITION, - /** - * Set focuser speed to SPEED. - */ - FOCUS_SPEED_VALUE, - /** - * Focus in the direction of FOCUS_MOTION at rate FOCUS_SPEED for - * FOCUS_TIMER_VALUE milliseconds. - */ - FOCUS_TIMER_VALUE, - /** - * Take a bias frame exposure. - */ - FRAME_BIAS, - /** - * Take a dark frame exposure. - */ - FRAME_DARK, - /** - * Take a flat field frame exposure. - */ - FRAME_FLAT, - /** - * Take a light frame exposure. - */ - FRAME_LIGHT, - /** - * Guide telescope aperture, mm. - */ - GUIDER_APERTURE, - /** - * Guider telescope focal length, mm. - */ - GUIDER_FOCAL_LENGTH, - /** - * Frame height in pixels. - */ - HEIGHT, - /** - * Dome home position in absolute degrees azimuth. - */ - HOME_POSITION, - /** - * Horizontal binning. - */ - HOR_BIN, - /** - * number element of the humidity Percentage %. - */ - HUMIDITY, - /** - * number element of the Site latitude (-90 to +90), degrees +N. - */ - LAT, - /** - * number element of the Site longitude (0 to 360), degrees +E. - */ - LONG, - /** - * number property of the Weather conditions. - */ - /** - * number element of the Local sidereal time HH:MM:SS. - */ - LST, - /** - * Move the telescope toward East. - */ - MOTION_EAST, - /** - * Move the telescope toward North. - */ - MOTION_NORTH, - /** - * Move the telescope toward South. - */ - MOTION_SOUTH, - /** - * Move the telescope toward West. - */ - MOTION_WEST, - /** - * property is no General Element. - */ - NONE, - /** - * text element of the UTC offset, in hours +E. - */ - OFFSET, - /** - * Park the telescope to HOME position. - */ - PARK, - /** - * Dome parking position in absolute degrees azimuth. - */ - PARK_POSITION, - /** - * text element of the connection port of to the device. - */ - PORT, - /** - * number element of the pressure in hPa. - */ - PRESSURE, - /** - * This element represents the right ascension of the pointing direction. - */ - RA, - /** - * Reset CCD frame to default X,Y,W, and H settings. Set binning to 1x1. - */ - RESET, - /** - * Close dome shutter. - */ - SHUTTER_CLOSE, - /** - * Open dome shutter. - */ - SHUTTER_OPEN, - /** - * Slew to a coordinate and stop. - */ - SLEW, - /** - * Slow speed. - */ - SLEW_CENTERING, - /** - * Medium speed. - */ - SLEW_FIND, - /** - * 0.5x to 1.0x sidereal rate or slowest possible speed. - */ - SLEW_GUIDE, - /** - * Maximum speed. - */ - SLEW_MAX, - /** - * generic SWICH element. - */ - SWITCHn, - /** - * Accept current coordinate as correct. - */ - SYNC, - /** - * Telescope aperture, mm. - */ - TELESCOPE_APERTURE, - /** - * Telescope focal length, mm. - */ - TELESCOPE_FOCAL_LENGTH, - /** - * number element of the temperature in Kelvin. - */ - TEMPERATURE, - /** - * Guide the scope east for TIMED_GUIDE_E milliseconds. - */ - TIMED_GUIDE_E, - /** - * Guide the scope north for TIMED_GUIDE_N milliseconds. - */ - TIMED_GUIDE_N, - /** - * Guide the scope south for TIMED_GUIDE_S milliseconds. - */ - TIMED_GUIDE_S, - /** - * Guide the scope west for TIMED_GUIDE_W milliseconds. - */ - TIMED_GUIDE_W, - /** - * Slew to a coordinate and track. - */ - TRACK, - /** - * Custom track rate. This element is optional. - */ - - TRACK_CUSTOM, - /** - * Track at lunar rate. - */ - TRACK_LUNAR, - /** - * Track at sidereal rate. - */ - TRACK_SIDEREAL, - /** - * Track at solar rate. - */ - TRACK_SOLAR, - /** - * Unpark the telescope. - */ - UNPARK, - /** - * switch element of the Send blob to client and save it locally as well. - */ - UPLOAD_BOTH, - /** - * switch element of the Send BLOB to client. - */ - UPLOAD_CLIENT, - /** - * text element of the Upload directory if the BLOB is saved locally. - */ - UPLOAD_DIR, - /** - * switch element of the Save BLOB locally. - */ - UPLOAD_LOCAL, - /** - * text element of the Prefix used when saving filename. - */ - UPLOAD_PREFIX, - /** - * text element of the UTC time in ISO 8601 format. - */ - UTC, - /** - * Vertical binning. - */ - VER_BIN, - /** - * Frame width in pixels. - */ - WIDTH, - /** - * Left-most pixel position. - */ - X, - /** - * Top-most pixel position. - */ - Y, - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIStandardProperty.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIStandardProperty.java deleted file mode 100644 index f2c79c59e09f2fc28e3a68c6f69d0ee32214a8b4..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/properties/INDIStandardProperty.java +++ /dev/null @@ -1,305 +0,0 @@ -package lc.astro.indi.properties; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2012 - 2015 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import static lc.astro.indi.properties.INDIStandardElement.*; - -/** - * The following tables describe standard properties pertaining to generic - * devices and class-specific devices like telescope, CCDs...etc. The name of a - * standard property and its members must be strictly reserved in all drivers. - * However, it is permissible to change the label element of properties. You can - * find numerous uses of the standard properties in the INDI library driver - * repository. We use enum instead of constants to be better able to trace the - * references. - * - * @author Richard van Nieuwenhoven - * @see http://indilib.org/develop/developer-manual/101-standard-properties.html - */ -public enum INDIStandardProperty { - /** - * property is no General Property. - */ - NONE, - /** - * the switch property to connect the driver to the device. - */ - CONNECTION(CONNECT, DISCONNECT), - /** - * the device text property of the connection port of to the device. - */ - DEVICE_PORT(PORT), - /** - * number property of the Local sidereal time HH:MM:SS. - */ - TIME_LST(LST), - /** - * text property of the UTC Time & Offset. - */ - TIME_UTC(UTC, OFFSET), - /** - * number property of the Earth geodetic coordinate. - */ - GEOGRAPHIC_COORD(LAT, LONG, ELEV), - /** - * Equatorial astrometric epoch of date coordinate. - */ - EQUATORIAL_EOD_COORD(RA, DEC), - /** - * Equatorial astrometric J2000 coordinate. - */ - EQUATORIAL_COORD(RA, DEC), - /** - * Weather conditions. - */ - ATMOSPHERE(TEMPERATURE, PRESSURE, HUMIDITY), - /** - * upload settings for blobs. - */ - UPLOAD_MODE(UPLOAD_CLIENT, UPLOAD_LOCAL, UPLOAD_BOTH), - /** - * settings for the upload mode local. - */ - UPLOAD_SETTINGS(UPLOAD_DIR, UPLOAD_PREFIX), - /** - * topocentric coordinate. - */ - HORIZONTAL_COORD(ALT, AZ), - /** - * Action device takes when sent any *_COORD property. - */ - ON_COORD_SET(SLEW, TRACK, SYNC), - /** - * Move telescope north or south. - */ - TELESCOPE_MOTION_NS(MOTION_NORTH, MOTION_SOUTH), - /** - * Move telescope west or east. - */ - TELESCOPE_MOTION_WE(MOTION_WEST, MOTION_EAST), - /** - * Timed pulse guide in north/south direction. - */ - TELESCOPE_TIMED_GUIDE_NS(TIMED_GUIDE_N, TIMED_GUIDE_S), - /** - * Timed pulse guide in west/east direction. - */ - TELESCOPE_TIMED_GUIDE_WE(TIMED_GUIDE_W, TIMED_GUIDE_E), - /** - * Multiple switch slew rate. The driver can define as many switches as - * desirable, but at minimum should implement the four switches below. - */ - TELESCOPE_SLEW_RATE(SLEW_GUIDE, SLEW_CENTERING, SLEW_FIND, SLEW_MAX), - /** - * Park and unpark the telescope. - */ - TELESCOPE_PARK(PARK, UNPARK), - /** - * Stop telescope rapidly, but gracefully. - */ - TELESCOPE_ABORT_MOTION(ABORT_MOTION), - /** - * tracking speed of the scope. - */ - TELESCOPE_TRACK_RATE(TRACK_SIDEREAL, TRACK_SOLAR, TRACK_LUNAR, TRACK_CUSTOM), - /** - * information about the telescope. - */ - TELESCOPE_INFO(TELESCOPE_APERTURE, TELESCOPE_FOCAL_LENGTH, GUIDER_APERTURE, GUIDER_FOCAL_LENGTH), - /** - * Expose the CCD chip for CCD_EXPOSURE_VALUE seconds. - */ - CCDn_EXPOSURE(CCD_EXPOSURE_VALUE), - /** - * Abort CCD exposure. - */ - CCDn_ABORT_EXPOSURE(ABORT), - /** - * CCD frame size. - */ - CCDn_FRAME(X, Y, WIDTH, HEIGHT), - /** - * CCD chip temperature in degrees Celsius. - */ - CCDn_TEMPERATURE(CCD_TEMPERATURE_VALUE), - /** - * CCD Cooler control. - */ - CCDn_COOLER(COOLER_ON, COOLER_OFF), - /** - * Percentage % of Cooler Power utilized. - */ - CCDn_COOLER_POWER(CCD_COOLER_VALUE), - /** - * frame exposure type. - */ - CCDn_FRAME_TYPE(FRAME_LIGHT, FRAME_BIAS, FRAME_DARK, FRAME_FLAT), - /** - * ccd binning. - */ - CCDn_BINNING(HOR_BIN, VER_BIN), - /** - * ccd frame compression. - */ - CCDn_COMPRESSION(CCD_COMPRESS, CCD_RAW), - /** - * Reset CCD frame to default X,Y,W, and H settings. Set binning to 1x1. - */ - CCDn_FRAME_RESET(RESET), - /** - * CCD informations. - */ - CCDn_INFO(CCD_MAX_X, CCD_MAX_Y, CCD_PIXEL_SIZE, CCD_PIXEL_SIZE_X, CCD_PIXEL_SIZE_Y, CCD_BITSPERPIXEL), - /** - * Color Filter Array information if the CCD produces a bayered image. - * Debayering performed at client side. - */ - CCDn_CFA(CFA_OFFSET_X, CFA_OFFSET_Y, CFA_TYPE), - /** - * CCD1 for primary CCD, CCD2 for guider CCD.Binary fits data encoded in - * base64. The CCD1.format is used to indicate the data type (e.g. ".fits"). - */ - CCDn, - /** - * The filter wheel's current slot number. Important: Filter numbers start - * from 1 to N. - */ - FILTER_SLOT(FILTER_SLOT_VALUE), - /** - * The filter wheel's current slot name. - */ - FILTER_NAME(FILTER_NAME_VALUE), - /** - * Select focus speed from 0 to N where 0 maps to no motion, and N maps to - * the fastest speed possible. - */ - FOCUS_SPEED(FOCUS_SPEED_VALUE), - /** - * focuser motion. - */ - FOCUS_MOTION(FOCUS_INWARD, FOCUS_OUTWARD), - /** - * Focus in the direction of FOCUS_MOTION at rate FOCUS_SPEED for - * FOCUS_TIMER_VALUE milliseconds. - */ - FOCUS_TIMER(FOCUS_TIMER_VALUE), - /** - * Relative position. - */ - REL_FOCUS_POSITION(FOCUS_RELATIVE_POSITION), - /** - * Absolute position. - */ - ABS_FOCUS_POSITION(FOCUS_ABSOLUTE_POSITION), - - /** - * abort the focuser motion. - */ - FOCUS_ABORT_MOTION(ABORT), - /** - * Set dome speed in RPM. - */ - DOME_SPEED(DOME_SPEED_VALUE), - /** - * Move dome, looking down. - */ - DOME_MOTION(DOME_CW, DOME_CCW), - /** - * Move the dome in the direction of DOME_MOTION at rate DOME_SPEED for - * DOME_TIMER_VALUE milliseconds. - */ - DOME_TIMER(DOME_TIMER_VALUE), - /** - * Relative position. - */ - REL_DOME_POSITION(DOME_RELATIVE_POSITION), - /** - * Absolute position. - */ - ABS_DOME_POSITION(DOME_ABSOLUTE_POSITION), - /** - * Abort dome motion. - */ - DOME_ABORT_MOTION(ABORT), - /** - * dome shutter controll. - */ - DOME_SHUTTER(SHUTTER_OPEN, SHUTTER_CLOSE), - /** - * Dome go to position. - */ - DOME_GOTO(DOME_HOME, DOME_PARK), - /** - * Dome position parameters. - */ - DOME_PARAMS(HOME_POSITION, PARK_POSITION, AUTOSYNC_THRESHOLD), - /** - * (Dis/En)able dome slaving. - */ - DOME_AUTOSYNC(DOME_AUTOSYNC_ENABLE, DOME_AUTOSYNC_DISABLE), - /** - * Dome mesurements / dimentions. - */ - DOME_MEASUREMENTS(DM_DOME_RADIUS, DOME_SHUTTER_WIDTH, DM_NORTH_DISPLACEMENT, DM_EAST_DISPLACEMENT, DM_UP_DISPLACEMENT, DM_OTA_OFFSET), - /** - * text property of the Name of active devices. If defined, at least one - * member below must be defined in the vector.ACTIVE_DEVICES is used to aid - * clients in automatically providing the users with a list of active - * devices (i.e. CONNECTION is ON) whenever needed. For example, a CCD - * driver may define ACTIVE_DEVICES property with one member: - * ACTIVE_TELESCOPE. Suppose that the client is also running LX200 Basic - * driver to control the telescope. If the telescope is connected, the - * client may automatically fill the ACTIVE_TELESCOPE field or provide a - * drop-down list of active telescopes to select from. Once set, the CCD - * driver may record, for example, the telescope name, RA, DEC, among other - * metadata once it captures an image. Therefore, ACTIVE_DEVICES is - * primarily used to link together different classes of devices to exchange - * information if required. - */ - ACTIVE_DEVICES(ACTIVE_TELESCOPE, ACTIVE_CCD, ACTIVE_FILTER, ACTIVE_FOCUSER, ACTIVE_DOME, ACTIVE_LOCATION, ACTIVE_WEATHER, ACTIVE_TIME, ACTIVE_SWITCH), - /** - * generic SWICH property. - */ - SWITCH_MODULE(SWITCHn); - - /** - * standard elements of this property. - */ - private final INDIStandardElement[] elements; - - /** - * constructor. - * - * @param elements standard elements of the property. - */ - INDIStandardProperty(INDIStandardElement... elements) { - this.elements = elements; - } - - /** - * @return the array of elements this property generally has. - */ - public final INDIStandardElement[] elements() { - return this.elements; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefBlob.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefBlob.java deleted file mode 100644 index 93ffa5d85d75474f72058803d810f6dce7b8ab07..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefBlob.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defBLOB") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - DefElement.class -}) -public class DefBlob extends DefElement { - - @Override - public boolean isBlob() { - return true; - } - - @Override - public boolean isDefBlobElement() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefBlobVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefBlobVector.java deleted file mode 100644 index 1968a4bf231fd364dd2df5091390949928c73591..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefBlobVector.java +++ /dev/null @@ -1,49 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defBLOBVector") -public class DefBlobVector extends DefVector { - - @Override - public boolean isBlob() { - return true; - } - - @Override - public boolean isDefBlobVector() { - return true; - } - - @Override - public boolean isVector() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefElement.java deleted file mode 100644 index 5c16e6078e9ccc2c31af146dbff01fdeb2d9c3d1..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefElement.java +++ /dev/null @@ -1,107 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @param type for the builder - * @author Richard van Nieuwenhoven - */ -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - DefElement.class -}) -public abstract class DefElement extends INDIProtocol { - - /** - * INDI XML protocol label attribute. - */ - @XStreamAsAttribute - private String label; - - /** - * the text content value of the element. - */ - private String textContent; - - /** - * @return label attribute of the element . - */ - public String getLabel() { - return label; - } - - @Override - public boolean isDef() { - return true; - } - - @Override - public boolean isElement() { - return true; - } - - /** - * sets the label attribute of the element. - * - * @param newLabel the label to set. - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setLabel(String newLabel) { - this.label = newLabel; - return (T) this; - } - - /** - * @return the text content of the element. - */ - public String getTextContent() { - return textContent; - } - - /** - * set the test content of the element. - * - * @param newTextContent the new text content value. - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setTextContent(String newTextContent) { - this.textContent = newTextContent; - return (T) this; - } - - @Override - public T trim() { - this.label = trim(this.label); - this.textContent = trim(this.textContent); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefLight.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefLight.java deleted file mode 100644 index c8731300593f9421c710c201afb433b4769e878a..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefLight.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defLight") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - DefElement.class -}) -public class DefLight extends DefElement { - - @Override - public boolean isDefLightElement() { - return true; - } - - @Override - public boolean isLight() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefLightVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefLightVector.java deleted file mode 100644 index 4aaf0ac03c0010010546785464a7e309ec3510a3..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefLightVector.java +++ /dev/null @@ -1,45 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defLightVector") -public class DefLightVector extends DefVector { - - @Override - public boolean isDefLightElement() { - return true; - } - - @Override - public boolean isDefLightVector() { - return true; - } - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefNumber.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefNumber.java deleted file mode 100644 index 85c52306935bde4bf4f06ee2ab219ca497f0e278..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefNumber.java +++ /dev/null @@ -1,158 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defNumber") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - DefElement.class -}) -public class DefNumber extends DefElement { - - /** - * the format element attribute. - */ - @XStreamAsAttribute - private String format; - - /** - * the max element attribute. - */ - @XStreamAsAttribute - private String max; - - /** - * the min element attribute. - */ - @XStreamAsAttribute - private String min; - - /** - * The step element attribute. - */ - @XStreamAsAttribute - private String step; - - /** - * @return the format element attribute. - */ - public String getFormat() { - return format; - } - - /** - * @return the max element attribute. - */ - public String getMax() { - return max; - } - - /** - * @return the min element attribute. - */ - public String getMin() { - return min; - } - - /** - * @return the step element attribute. - */ - public String getStep() { - return step; - } - - @Override - public boolean isDefNumberElement() { - return true; - } - - @Override - public boolean isNumber() { - return true; - } - - /** - * set the format element atttribute. - * - * @param newFormat the new format value - * @return this for builder pattern. - */ - public DefNumber setFormat(String newFormat) { - format = newFormat; - return this; - } - - /** - * set the max element atttribute. - * - * @param newMax the new max value - * @return this for builder pattern. - */ - public DefNumber setMax(String newMax) { - max = newMax; - return this; - } - - /** - * set the min element atttribute. - * - * @param newMin the new min value - * @return this for builder pattern. - */ - public DefNumber setMin(String newMin) { - min = newMin; - return this; - } - - /** - * set the step element atttribute. - * - * @param newLeft the new step value - * @return this for builder pattern. - */ - public DefNumber setStep(String newLeft) { - step = newLeft; - return this; - } - - @Override - public DefNumber trim() { - min = trim(min); - max = trim(max); - format = trim(format); - step = trim(step); - return super.trim(); - } - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefNumberVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefNumberVector.java deleted file mode 100644 index 37cccb660bbdc127479c4911164af38350af451e..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefNumberVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defNumberVector") -public class DefNumberVector extends DefVector { - - @Override - public boolean isDefNumberVector() { - return true; - } - - @Override - public boolean isNumber() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefSwitch.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefSwitch.java deleted file mode 100644 index 926a68dad7c23d34119e02c2b4036d8fa07d12fd..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefSwitch.java +++ /dev/null @@ -1,42 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defSwitch") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - DefElement.class -}) -public class DefSwitch extends DefElement { - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefSwitchVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefSwitchVector.java deleted file mode 100644 index 675a26e25921187496b554f2af57ecd7dbfd83e1..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefSwitchVector.java +++ /dev/null @@ -1,75 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defSwitchVector") -public class DefSwitchVector extends DefVector { - - /** - * the rule element attribute. - */ - @XStreamAsAttribute - private String rule; - - @Override - public boolean isDefSwitchVector() { - return true; - } - - @Override - public boolean isSwitch() { - return true; - } - - /** - * @return the rule element attribute. - */ - public String getRule() { - return rule; - } - - /** - * set the rule element atttribute. - * - * @param newRule the new rule value - * @return this for builder pattern. - */ - public DefSwitchVector setRule(String newRule) { - rule = newRule; - return this; - } - - @Override - public DefSwitchVector trim() { - rule = trim(rule); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefText.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefText.java deleted file mode 100644 index 6736ca0fa36b04bf3d106ee001d255235ddf359c..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefText.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defText") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - DefElement.class -}) -public class DefText extends DefElement { - - @Override - public boolean isDefTextElement() { - return true; - } - - @Override - public boolean isText() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefTextVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefTextVector.java deleted file mode 100644 index 95c85420cbb3a3dd9c625813dde4c8c2b43356b2..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefTextVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("defTextVector") -public class DefTextVector extends DefVector { - - @Override - public boolean isDefTextVector() { - return true; - } - - @Override - public boolean isText() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefVector.java deleted file mode 100644 index 54560a181d97ca545cd82096ea5adea9f3b557a4..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DefVector.java +++ /dev/null @@ -1,193 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L INDI Protocol implementation %% Copyright (C) 2012 - 2014 indiforjava %% - * This program is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser 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 General - * Lesser Public License for more details. You should have received a copy of - * the GNU General Lesser Public License along with this program. If not, see - * . #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamImplicit; - -import java.util.ArrayList; -import java.util.List; - -/** - * This class represents an INDI XML protocol element. - * - * @param type for the builder - * @author Richard van Nieuwenhoven - */ -public abstract class DefVector extends INDIProtocol { - - /** - * the group element attribute. - */ - @XStreamAsAttribute - private String group; - - /** - * the label element attribute. - */ - @XStreamAsAttribute - private String label; - - /** - * the perm element attribute. - */ - @XStreamAsAttribute - private String perm; - - /** - * the state element attribute. - */ - @XStreamAsAttribute - private String state; - - /** - * the timeout element attribute. - */ - @XStreamAsAttribute - private String timeout; - - /** - * the child elements of the vector. - */ - @XStreamImplicit - private List> elements; - - /** - * @return the group element attribute. - */ - public String getGroup() { - return group; - } - - /** - * @return the label element attribute. - */ - public String getLabel() { - return label; - } - - /** - * @return the perm element attribute. - */ - public String getPerm() { - return perm; - } - - /** - * @return the state element attribute. - */ - public String getState() { - return state; - } - - /** - * @return the timeout element attribute. - */ - public String getTimeout() { - return timeout; - } - - @Override - public boolean isDef() { - return true; - } - - @Override - public boolean isVector() { - return true; - } - - /** - * set the group element atttribute. - * - * @param newGroup the new group value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setGroup(String newGroup) { - this.group = newGroup; - return (T) this; - } - - /** - * set the label element atttribute. - * - * @param newLabel the new label value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setLabel(String newLabel) { - this.label = newLabel; - return (T) this; - } - - /** - * set the perm element atttribute. - * - * @param newPerm the new perm value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setPerm(String newPerm) { - this.perm = newPerm; - return (T) this; - } - - /** - * set the state element atttribute. - * - * @param newState the new state value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setState(String newState) { - this.state = newState; - return (T) this; - } - - /** - * set the timeout element atttribute. - * - * @param newTimeout the new timeout value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setTimeout(String newTimeout) { - this.timeout = newTimeout; - return (T) this; - } - - /** - * @return the list of element children of this element. - */ - public List> getElements() { - if (elements == null) { - elements = new ArrayList<>(); - } - return elements; - } - - @Override - public T trim() { - this.group = trim(this.group); - this.label = trim(this.label); - this.perm = trim(this.perm); - this.state = trim(this.state); - this.timeout = trim(this.timeout); - for (DefElement element : getElements()) { - element.trim(); - } - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DelProperty.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DelProperty.java deleted file mode 100644 index 970d92ab06fa7b1d070d94bcc7331ea77db03279..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/DelProperty.java +++ /dev/null @@ -1,65 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("delProperty") -public class DelProperty extends INDIProtocol { - - /** - * the version attribute of the element. - */ - @XStreamAsAttribute - private String version; - - /** - * @return the version attribute of the element. - */ - public String getVersion() { - return version; - } - - /** - * set the version attribute of the element. - * - * @param newVersion the new attibute version value - * @return this for builder pattern. - */ - public DelProperty setVersion(String newVersion) { - version = newVersion; - return this; - } - - @Override - public DelProperty trim() { - version = trim(version); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/EnableBLOB.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/EnableBLOB.java deleted file mode 100644 index 0a09d1971f4ba6de45e31e884c1fa5880637b751..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/EnableBLOB.java +++ /dev/null @@ -1,75 +0,0 @@ -package lc.astro.indi.protocol; - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("enableBLOB") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - EnableBLOB.class -}) -public class EnableBLOB extends INDIProtocol { - - @Override - public boolean isEnableBLOB() { - return true; - } - - /** - * the text content value of the element. - */ - private String textContent; - - /** - * @return the text content of the element. - */ - public String getTextContent() { - return textContent; - } - - /** - * set the test content of the element. - * - * @param newTextContent the new text content value. - * @return this for builder pattern. - */ - public EnableBLOB setTextContent(String newTextContent) { - textContent = newTextContent; - return this; - } - - @Override - public EnableBLOB trim() { - textContent = trim(textContent); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/GetProperties.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/GetProperties.java deleted file mode 100644 index eaeef51f0291aef9cb1707e2811088996b1de119..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/GetProperties.java +++ /dev/null @@ -1,96 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("getProperties") -public class GetProperties extends INDIProtocol { - - /** - * the property attribute of the element. - */ - @XStreamAsAttribute - private String property; - - /** - * the version attribute of the element. - */ - @XStreamAsAttribute - private String version; - - /** - * @return the property attribute of the element. - */ - public String getProperty() { - if (property == null) { - return ""; - } - return property.trim(); - } - - /** - * @return the version attribute of the element. - */ - public String getVersion() { - if (version == null) { - return ""; - } - return version; - } - - /** - * set the property attribute of the element. - * - * @param newProperty the new attibute property value - * @return this for builder pattern. - */ - public GetProperties setProperty(String newProperty) { - property = newProperty; - return this; - } - - /** - * set the version attribute of the element. - * - * @param newVersion the new attibute version value - * @return this for builder pattern. - */ - public GetProperties setVersion(String newVersion) { - version = newVersion; - return this; - } - - @Override - public GetProperties trim() { - property = trim(property); - version = trim(version); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/INDIProtocol.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/INDIProtocol.java deleted file mode 100644 index a8486c1754b11da50a5d021692b640ea57898ab6..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/INDIProtocol.java +++ /dev/null @@ -1,472 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L INDI Protocol implementation %% Copyright (C) 2012 - 2014 indiforjava %% - * This program is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser 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 General - * Lesser Public License for more details. You should have received a copy of - * the GNU General Lesser Public License along with this program. If not, see - * . #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import lc.astro.indi.protocol.io.INDIProtocolFactory; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; - -/** - * This class represents an INDI XML protocol element. - * - * @param type for the builder - * @author Richard van Nieuwenhoven - */ -public abstract class INDIProtocol { - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * the device element attribute. - */ - @XStreamAsAttribute - private String device; - - /** - * the name element attribute. - */ - @XStreamAsAttribute - private String name; - - /** - * the message element attribute. - */ - @XStreamAsAttribute - private String message; - - /** - * the timestamp attribute of the element. - */ - @XStreamAsAttribute - private String timestamp; - - /** - * @return the message element attribute. - */ - public final String getMessage() { - return message; - } - - /** - * @return the timestamp attribute of the element. - */ - public final String getTimestamp() { - return timestamp; - } - - /** - * set the max message atttribute. - * - * @param newMessage the new message value - * @return this for builder pattern. - */ - - @SuppressWarnings("unchecked") - public T setMessage(String newMessage) { - this.message = newMessage; - return (T) this; - } - - /** - * set the timestamp attribute of the element. - * - * @param newTimestamp the new attibute timestamp value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setTimestamp(String newTimestamp) { - this.timestamp = newTimestamp; - return (T) this; - } - - /** - * @return the name element attribute. - */ - public String getName() { - return name; - } - - /** - * @return is this a blob element. - */ - public boolean isBlob() { - return false; - } - - /** - * @return is this a definition element. - */ - public boolean isDef() { - return false; - } - - /** - * @return is this a definition blob element. - */ - public boolean isDefBlobElement() { - return false; - } - - /** - * @return is this a definition blob vector. - */ - public boolean isDefBlobVector() { - return false; - } - - /** - * @return is this a definition element. - */ - public boolean isDefElement() { - return false; - } - - /** - * @return is this a definition light element. - */ - public boolean isDefLightElement() { - return false; - } - - /** - * @return is this a definition light vector. - */ - public boolean isDefLightVector() { - return false; - } - - /** - * @return is this a definition number element. - */ - public boolean isDefNumberElement() { - return false; - } - - /** - * @return is this a definition number vector. - */ - public boolean isDefNumberVector() { - return false; - } - - /** - * @return is this a definition switch vector. - */ - public boolean isDefSwitchVector() { - return false; - } - - /** - * @return is this a definition text element. - */ - public boolean isDefTextElement() { - return false; - } - - /** - * @return is this a definition text vector. - */ - public boolean isDefTextVector() { - return false; - } - - /** - * @return is this a definition vector. - */ - public boolean isDefVector() { - return false; - } - - /** - * @return is this a definition element. - */ - public boolean isElement() { - return false; - } - - /** - * @return is this a enable blob message. - */ - public boolean isEnableBLOB() { - return false; - } - - /** - * @return is this a get properties. - */ - public boolean isGetProperties() { - return false; - } - - /** - * @return is this a light element. - */ - public boolean isLight() { - return false; - } - - /** - * @return is this a new properties. - */ - public boolean isNew() { - return false; - } - - /** - * @return is this a new properties. - */ - public boolean isNewBlobVector() { - return false; - } - - /** - * @return is this a n ewproperties. - */ - public boolean isNewLightVector() { - return false; - } - - /** - * @return is this a new properties. - */ - public boolean isNewNumberVector() { - return false; - } - - /** - * @return is this a new properties. - */ - public boolean isNewSwitchVector() { - return false; - } - - /** - * @return is this a new properties. - */ - public boolean isNewTextVector() { - return false; - } - - /** - * @return is this a new properties. - */ - public boolean isNewVector() { - return false; - } - - /** - * @return is this a number element. - */ - public boolean isNumber() { - return false; - } - - /** - * @return is this a one element. - */ - public boolean isOne() { - return false; - } - - /** - * @return is this a one blob element. - */ - public boolean isOneBlob() { - return false; - } - - /** - * @return is this a one element. - */ - public boolean isOneElement() { - return false; - } - - /** - * @return is this a one light element. - */ - public boolean isOneLight() { - return false; - } - - /** - * @return is this a one number element. - */ - public boolean isOneNumber() { - return false; - } - - /** - * @return is this a one text element. - */ - public boolean isOneText() { - return false; - } - - /** - * @return is this a set element. - */ - public boolean isSet() { - return false; - } - - /** - * @return is this a set blob vector. - */ - public boolean isSetBlobVector() { - return false; - } - - /** - * @return is this a set light vector. - */ - public boolean isSetLightVector() { - return false; - } - - /** - * @return is this a set number vector. - */ - public boolean isSetNumberVector() { - return false; - } - - /** - * @return is this a set switch vector. - */ - public boolean isSetSwitchVector() { - return false; - } - - /** - * @return is this a set text vector. - */ - public boolean isSetTextVector() { - return false; - } - - /** - * @return is this a set vector. - */ - public boolean isSetVector() { - return false; - } - - /** - * @return is this a switch. - */ - public boolean isSwitch() { - return false; - } - - /** - * @return is this a text element. - */ - public boolean isText() { - return false; - } - - /** - * @return is this a vector. - */ - public boolean isVector() { - return false; - } - - /** - * set the name element attribute. - * - * @param newName the new name of the attribute. - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setName(String newName) { - this.name = newName; - return (T) this; - } - - /** - * set the device element atttribute. - * - * @param newDevice the new device value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public final T setDevice(String newDevice) { - this.device = newDevice; - return (T) this; - } - - /** - * @return the device element attribute. - */ - public final String getDevice() { - return device; - } - - @Override - public String toString() { - return INDIProtocolFactory.toString(this); - } - - /** - * @return true when a non empty name is available. - */ - public boolean hasName() { - return getName() != null && !getName().trim().isEmpty(); - } - - /** - * @return true when a non empty device is available. - */ - public boolean hasDevice() { - return getDevice() != null && !getDevice().trim().isEmpty(); - } - - /** - * @return true when a non empty message is available. - */ - public boolean hasMessage() { - return getMessage() != null && !getMessage().trim().isEmpty(); - } - - /** - * thrim all strings in the structure so all places working with the object - * do not have to trim any stings. - * - * @return myself - */ - public T trim() { - this.name = trim(this.name); - this.device = trim(this.device); - this.message = trim(this.message); - this.timestamp = trim(this.timestamp); - return (T) this; - } - - /** - * Trim one value but keep it null when it was null. - * - * @param value the value to trim - * @return the trimmed string or null. - */ - protected String trim(String value) { - if (value != null) { - return value.trim(); - } - return null; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/Message.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/Message.java deleted file mode 100644 index 4f0c6cf04f6efe58b964c72879c20d75aa5dba6b..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/Message.java +++ /dev/null @@ -1,35 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("message") -public class Message extends INDIProtocol { - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewBlobVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewBlobVector.java deleted file mode 100644 index 503daaadea98584b4bc2990f6d589d92c4932835..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewBlobVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("newBLOBVector") -public class NewBlobVector extends NewVector { - - @Override - public boolean isBlob() { - return true; - } - - @Override - public boolean isNewBlobVector() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewLightVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewLightVector.java deleted file mode 100644 index 01e63b4d41a09dba755ba185e25a3915dc9fedb8..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewLightVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("newLightVector") -public class NewLightVector extends NewVector { - - @Override - public boolean isLight() { - return true; - } - - @Override - public boolean isNewLightVector() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewNumberVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewNumberVector.java deleted file mode 100644 index 97e094c17ba6a48d763a98aa704ebfedf8cd18d0..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewNumberVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("newNumberVector") -public class NewNumberVector extends NewVector { - - @Override - public boolean isNewNumberVector() { - return true; - } - - @Override - public boolean isNumber() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewSwitchVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewSwitchVector.java deleted file mode 100644 index 34eae071787f0ad76c6707e238fa4024a080d0d7..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewSwitchVector.java +++ /dev/null @@ -1,75 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("newSwitchVector") -public class NewSwitchVector extends NewVector { - - /** - * the rule attribute of the element. - */ - @XStreamAsAttribute - private String rule; - - /** - * @return the rule attribute of the element. - */ - public String getRule() { - return rule; - } - - @Override - public boolean isNewSwitchVector() { - return true; - } - - @Override - public boolean isSwitch() { - return true; - } - - /** - * set the rule attribute of the element. - * - * @param newRule the new value for the rule attribute. - * @return this for builder pattern. - */ - public NewSwitchVector setRule(String newRule) { - rule = newRule; - return this; - } - - @Override - public NewSwitchVector trim() { - rule = trim(rule); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewTextVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewTextVector.java deleted file mode 100644 index c55c62adbd9e65e7511f96847f951b6609edae4a..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewTextVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("newTextVector") -public class NewTextVector extends NewVector { - - @Override - public boolean isNewTextVector() { - return true; - } - - @Override - public boolean isText() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewVector.java deleted file mode 100644 index 538148040bdca78880017828fbc086ccee17044a..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/NewVector.java +++ /dev/null @@ -1,136 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamImplicit; - -import java.util.ArrayList; -import java.util.List; - -/** - * This class represents an INDI XML protocol element. - * - * @param type for the builder - * @author Richard van Nieuwenhoven - */ -public abstract class NewVector extends INDIProtocol { - - /** - * the child elements of the vector. - */ - @XStreamImplicit - private List> elements; - - /** - * the state attribute of the element. - */ - @XStreamAsAttribute - private String state; - - /** - * the timeout attribute of the element. - */ - @XStreamAsAttribute - private String timeout; - - /** - * add one element to the list. - * - * @param element the element to add. - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T addElement(OneElement element) { - getElements().add(element); - return (T) this; - } - - /** - * @return the list of element children of this element. - */ - public List> getElements() { - if (elements == null) { - elements = new ArrayList<>(); - } - return elements; - } - - /** - * @return the state attribute of the element. - */ - public String getState() { - return state; - } - - /** - * @return the timeout attribute of the element. - */ - public String getTimeout() { - return timeout; - } - - @Override - public boolean isNew() { - return true; - } - - @Override - public boolean isNewVector() { - return true; - } - - /** - * set the state attribute of the element. - * - * @param newState the new attibute state value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setState(String newState) { - this.state = newState; - return (T) this; - } - - /** - * set the timeout attribute of the element. - * - * @param newTimeout the new attibute timeout value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setTimeout(String newTimeout) { - this.timeout = newTimeout; - return (T) this; - } - - @Override - public T trim() { - this.state = trim(this.state); - this.timeout = trim(this.timeout); - for (OneElement element : getElements()) { - element.trim(); - } - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneBlob.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneBlob.java deleted file mode 100644 index ca0fc77473e49482f18a4bfe400a1279b11b91aa..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneBlob.java +++ /dev/null @@ -1,124 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("oneBLOB") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "byteContent" -}, types = { - OneBlob.class -}) -public class OneBlob extends OneElement { - - /** - * The byte content of the blob. Attention the textContent should not be - * used in the blob! - */ - @XStreamConverter(lc.astro.indi.protocol.converter.EncodedByteArrayConverter.class) - private byte[] byteContent; - - /** - * the format attribute of the element. - */ - private String format; - - /** - * the size attribute of the element. - */ - private String size; - - /** - * @return the byte content of the element. - */ - public byte[] getByteContent() { - return byteContent; - } - - /** - * @return the format attribute of the element. - */ - public String getFormat() { - return format; - } - - /** - * @return the size attribute of the element. - */ - public String getSize() { - return size; - } - - @Override - public boolean isBlob() { - return true; - } - - @Override - public boolean isOneBlob() { - return true; - } - - /** - * set the byte content of the element. (and use the length to set the - * size). - * - * @param newByteContent the new byte content. - * @return this for builder pattern. - */ - public OneBlob setByteContent(byte[] newByteContent) { - byteContent = newByteContent; - if (byteContent != null) { - size = Integer.toString(byteContent.length); - } else { - size = Integer.toString(0); - } - return this; - } - - /** - * set the format attribute of the element. - * - * @param newFormat the new format value of the element. - * @return this for builder pattern. - */ - public OneBlob setFormat(String newFormat) { - format = newFormat; - return this; - } - - @Override - public OneBlob trim() { - format = trim(format); - size = trim(size); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneElement.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneElement.java deleted file mode 100644 index 3841ea689271a4d0add73d333cce3ca58022334b..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneElement.java +++ /dev/null @@ -1,75 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @param type for the builder - * @author Richard van Nieuwenhoven - */ -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - OneElement.class -}) -public abstract class OneElement extends INDIProtocol { - - /** - * the text content value of the element. - */ - private String textContent; - - /** - * @return the text content of the element. - */ - public String getTextContent() { - return textContent; - } - - @Override - public boolean isOne() { - return true; - } - - /** - * set the test content of the element. - * - * @param newTextContent the new text content value. - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setTextContent(String newTextContent) { - this.textContent = newTextContent; - return (T) this; - } - - @Override - public T trim() { - this.textContent = trim(this.textContent); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneLight.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneLight.java deleted file mode 100644 index 54e65e882101ea0cfc56ece9d0727fd5251b0789..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneLight.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("oneLight") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - OneElement.class -}) -public class OneLight extends OneElement { - - @Override - public boolean isLight() { - return true; - } - - @Override - public boolean isOneLight() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneNumber.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneNumber.java deleted file mode 100644 index f9c967de08e9fdc3c1090fc289d69a9b16639a9f..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneNumber.java +++ /dev/null @@ -1,107 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("oneNumber") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - OneElement.class -}) -public class OneNumber extends OneElement { - - /** - * the max attribute of the element. - */ - @XStreamAsAttribute - private String max; - - /** - * the min attribute of the element. - */ - @XStreamAsAttribute - private String min; - - /** - * @return the max attribute of the element. - */ - public String getMax() { - return max; - } - - /** - * @return the min attribute of the element. - */ - public String getMin() { - return min; - } - - @Override - public boolean isNumber() { - return true; - } - - @Override - public boolean isOneNumber() { - return true; - } - - /** - * set the max attribute of the element. - * - * @param newMax the new max attribute value of the element - * @return this for builder pattern. - */ - public OneNumber setMax(String newMax) { - max = newMax; - return this; - } - - /** - * set the min attribute of the element. - * - * @param newMin the new min attribute value of the element - * @return this for builder pattern. - */ - public OneNumber setMin(String newMin) { - min = newMin; - return this; - } - - @Override - public OneNumber trim() { - min = trim(min); - max = trim(max); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneSwitch.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneSwitch.java deleted file mode 100644 index fdcea605dac6afca34e00dfdabb79c77d675105f..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneSwitch.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("oneSwitch") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - OneElement.class -}) -public class OneSwitch extends OneElement { - - @Override - public boolean isLight() { - return true; - } - - @Override - public boolean isOneLight() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneText.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneText.java deleted file mode 100644 index aef71cbae98daf5743e32586f5c0fc91776328bd..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/OneText.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("oneText") -@XStreamConverter(value = ToAttributedValueConverter.class, strings = { - "textContent" -}, types = { - OneElement.class -}) -public class OneText extends OneElement { - - @Override - public boolean isOneText() { - return true; - } - - @Override - public boolean isText() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetBlobVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetBlobVector.java deleted file mode 100644 index 868dd550725d2d4691d2e6397a5e63e4b134cbec..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetBlobVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("setBLOBVector") -public class SetBlobVector extends SetVector { - - @Override - public boolean isBlob() { - return true; - } - - @Override - public boolean isSetBlobVector() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetLightVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetLightVector.java deleted file mode 100644 index 3677ef230d5b66fe7b62c2b1ea2a49a4d18bd549..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetLightVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("setLightVector") -public class SetLightVector extends SetVector { - - @Override - public boolean isLight() { - return true; - } - - @Override - public boolean isSetLightVector() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetNumberVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetNumberVector.java deleted file mode 100644 index b8816a58b3bff96a5ce5c1e028d53e24128fb8e8..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetNumberVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("setNumberVector") -public class SetNumberVector extends SetVector { - - @Override - public boolean isNumber() { - return true; - } - - @Override - public boolean isSetNumberVector() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetSwitchVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetSwitchVector.java deleted file mode 100644 index 960c6b9e2e8874d567011f468581b396de4b49a0..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetSwitchVector.java +++ /dev/null @@ -1,75 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("setSwitchVector") -public class SetSwitchVector extends SetVector { - - /** - * the rule attribute of the element. - */ - @XStreamAsAttribute - private String rule; - - /** - * @return the rule attribute of the element. - */ - public String getRule() { - return rule; - } - - @Override - public boolean isSetSwitchVector() { - return true; - } - - @Override - public boolean isSwitch() { - return true; - } - - /** - * set the rule attribute of the element. - * - * @param newRule the new value for the rule attribute. - * @return this for builder pattern. - */ - public SetSwitchVector setRule(String newRule) { - rule = newRule; - return this; - } - - @Override - public SetSwitchVector trim() { - rule = trim(rule); - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetTextVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetTextVector.java deleted file mode 100644 index 1e09cf11191b83a13150cbadd3324d8ffb5ef1b6..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetTextVector.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAlias; - -/** - * This class represents an INDI XML protocol element. - * - * @author Richard van Nieuwenhoven - */ -@XStreamAlias("setTextVector") -public class SetTextVector extends SetVector { - - @Override - public boolean isSetTextVector() { - return true; - } - - @Override - public boolean isText() { - return true; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetVector.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetVector.java deleted file mode 100644 index 8c50c06ee6bb56b1133b215709641fd610cff29f..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/SetVector.java +++ /dev/null @@ -1,136 +0,0 @@ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamImplicit; - -import java.util.ArrayList; -import java.util.List; - -/** - * This class represents an INDI XML protocol element. - * - * @param type for the builder - * @author Richard van Nieuwenhoven - */ -public abstract class SetVector extends INDIProtocol { - - /** - * the child elements of the vector. - */ - @XStreamImplicit - private List> elements; - - /** - * the state attribute of the element. - */ - @XStreamAsAttribute - private String state; - - /** - * the timeout attribute of the element. - */ - @XStreamAsAttribute - private String timeout; - - /** - * add one element to the list. - * - * @param element the element to add. - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T addElement(OneElement element) { - getElements().add(element); - return (T) this; - } - - /** - * @return the list of element children of this element. - */ - public List> getElements() { - if (elements == null) { - elements = new ArrayList<>(); - } - return elements; - } - - /** - * @return the state attribute of the element. - */ - public String getState() { - return state; - } - - /** - * @return the timeout attribute of the element. - */ - public String getTimeout() { - return timeout; - } - - @Override - public boolean isSet() { - return true; - } - - @Override - public boolean isSetVector() { - return true; - } - - /** - * set the state attribute of the element. - * - * @param newState the new attibute state value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setState(String newState) { - this.state = newState; - return (T) this; - } - - /** - * set the timeout attribute of the element. - * - * @param newTimeout the new attibute timeout value - * @return this for builder pattern. - */ - @SuppressWarnings("unchecked") - public T setTimeout(String newTimeout) { - this.timeout = newTimeout; - return (T) this; - } - - @Override - public T trim() { - this.state = trim(this.state); - this.timeout = trim(this.timeout); - for (OneElement element : getElements()) { - element.trim(); - } - return super.trim(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIConnection.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIConnection.java deleted file mode 100644 index 10595ccfa9f4de8118151fcd2bfcfb6f3c555d2c..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIConnection.java +++ /dev/null @@ -1,60 +0,0 @@ -package lc.astro.indi.protocol.api; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.IOException; -import java.net.URL; - -/** - * Abstract interface that defines a indi protocol connection. The different - * implementations must provide and deliver the stream of indi objects. The - * difference betreen the implementations will be the means of transport. - * - * @author Richard van Nieuwenhoven - */ -public interface INDIConnection { - - /** - * @return the input stream of indi protokol objects. - * @throws IOException if there was a connection problem. - */ - INDIInputStream getINDIInputStream() throws IOException; - - /** - * @return the output stream of indi protokol objects. - * @throws IOException if there was a connection problem. - */ - INDIOutputStream getINDIOutputStream() throws IOException; - - /** - * close the connection together with the in and output stream. - * - * @throws IOException if there was a connection problem. - */ - void close() throws IOException; - - /** - * @return the url representing this connection. - */ - URL getURL(); -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIInputStream.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIInputStream.java deleted file mode 100644 index c326698198a4e663682147a4b17c24e5dd99d9e7..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIInputStream.java +++ /dev/null @@ -1,52 +0,0 @@ -package lc.astro.indi.protocol.api; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.INDIProtocol; - -import java.io.Closeable; -import java.io.IOException; - -/** - * INDI Input stream interface to read indi protocol object from a stream. - * - * @author Richard van Nieuwenhoven - * @author Alex Leigh - */ -public interface INDIInputStream extends Closeable { - - /** - * closes the underlaying input stream. - * - * @throws IOException when something went wrong with the underlaying input stream. - */ - void close() throws IOException; - - /** - * @return the next indi protocol object from the stream. (blocking till the - * next is available or null at end of stream) - * @throws IOException if something went wrong with the desiralisation or the - * underlaying stream. - */ - INDIProtocol readObject() throws IOException; -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIOutputStream.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIOutputStream.java deleted file mode 100644 index 4ebe6d91d7a589681ed365e1506e3da559714ec3..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/api/INDIOutputStream.java +++ /dev/null @@ -1,50 +0,0 @@ -package lc.astro.indi.protocol.api; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.INDIProtocol; - -import java.io.IOException; - -/** - * INDI Output stream interface to write indi protocol object to a stream. - * - * @author Richard van Nieuwenhoven - */ -public interface INDIOutputStream { - - /** - * close the underlaying output stream. - * - * @throws IOException when something went wrong with the underlaying output stream. - */ - void close() throws IOException; - - /** - * Write an INDI protocol object to the output stream. (and flush it) - * - * @param element the element to write - * @throws IOException when something went wrong with the underlaying output stream. - */ - void writeObject(INDIProtocol element) throws IOException; -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/converter/EncodedByteArrayConverter.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/converter/EncodedByteArrayConverter.java deleted file mode 100644 index c6d0e3e9d87cc5ffefaf113272ef4a8bbf100de6..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/converter/EncodedByteArrayConverter.java +++ /dev/null @@ -1,68 +0,0 @@ -package lc.astro.indi.protocol.converter; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.converters.Converter; -import com.thoughtworks.xstream.converters.MarshallingContext; -import com.thoughtworks.xstream.converters.SingleValueConverter; -import com.thoughtworks.xstream.converters.UnmarshallingContext; -import com.thoughtworks.xstream.io.HierarchicalStreamReader; -import com.thoughtworks.xstream.io.HierarchicalStreamWriter; -import org.apache.commons.codec.Charsets; -import org.apache.commons.codec.binary.Base64; - -/** - * The cunking of the normal xstream base64 encoder is not good in our case so - * we use the commons encoding one. - * - * @author Richard van Nieuwenhoven - */ -public class EncodedByteArrayConverter implements Converter, SingleValueConverter { - - @Override - public boolean canConvert(@SuppressWarnings("rawtypes") Class type) { - return type.isArray() && type.getComponentType().equals(byte.class); - } - - @Override - public Object fromString(String str) { - return Base64.decodeBase64(str); - } - - @Override - public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { - writer.setValue(toString(source)); - - } - - @Override - public String toString(Object obj) { - return new String(Base64.encodeBase64((byte[]) obj), Charsets.UTF_8); - } - - @Override - public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { - return fromString(reader.getValue()); - } - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIInputStreamImpl.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIInputStreamImpl.java deleted file mode 100644 index 6f86c03a6d88197638dd12b3c2596b2b868ae1bd..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIInputStreamImpl.java +++ /dev/null @@ -1,93 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.INDIProtocol; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; - -/** - * Input stream of INDIProtocol objects. deserialized from a xml stream. - * - * @author Richard van Nieuwenhoven - */ -public class INDIInputStreamImpl extends InputStream implements INDIInputStream { - - /** - * logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIInputStreamImpl.class); - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * The xstream object input stream that deserializes the INDIProtocol - * objects. - */ - private final ObjectInputStream in; - - /** - * create an INDI inputstream over an object input stream. - * - * @param in the object input stream - * @throws IOException when something with the underlaying stream went wrong. - */ - protected INDIInputStreamImpl(ObjectInputStream in) throws IOException { - this.in = in; - } - - @Override - public void close() throws IOException { - in.close(); - } - - @Override - public int read() throws IOException { - throw new IOException("not supported method"); - } - - @Override - public INDIProtocol readObject() throws IOException { - try { - INDIProtocol readObject = (INDIProtocol) in.readObject(); - readObject.trim(); - if (LOG.isTraceEnabled()) { - LOG.trace("received indi object " + readObject); - } - return readObject; - } catch (EOFException e) { - return null; - } catch (ClassNotFoundException e) { - throw new IOException("could not deserialize xml", e); - } - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIOutputStreamImpl.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIOutputStreamImpl.java deleted file mode 100644 index b724ba393daefce20325c6f30e4de5aade2f7d2e..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIOutputStreamImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.core.util.CustomObjectOutputStream; -import lc.astro.indi.protocol.INDIProtocol; -import lc.astro.indi.protocol.api.INDIOutputStream; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.io.OutputStream; - -/** - * OutPut stream of INDIProtocol objects. Serialized to a xml stream. - * - * @author Richard van Nieuwenhoven - */ -public class INDIOutputStreamImpl extends OutputStream implements INDIOutputStream { - - /** - * logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIOutputStreamImpl.class); - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * The xstream serializer. - */ - private CustomObjectOutputStream out; - - /** - * Constructor of the indi output stream. - * - * @param out the underlaying stream - * @throws IOException when something went wrong with the underlaying output stream. - */ - protected INDIOutputStreamImpl(CustomObjectOutputStream out) throws IOException { - this.out = out; - } - - @Override - public void close() throws IOException { - out.close(); - } - - @Override - public void write(int b) throws IOException { - throw new IOException("not supported method"); - } - - @Override - public synchronized void writeObject(INDIProtocol element) throws IOException { - if (LOG.isTraceEnabled()) { - LOG.trace("sending indi object " + element); - } - out.writeObject(element); - out.flush(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIPipedConnections.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIPipedConnections.java deleted file mode 100644 index dda21a4991126da33e32e42d256ac2a88275dd05..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIPipedConnections.java +++ /dev/null @@ -1,264 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.INDIProtocol; -import lc.astro.indi.protocol.api.INDIConnection; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.api.INDIOutputStream; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.concurrent.LinkedBlockingQueue; - -/** - * Create two connected INDI protocol streams that have a blocking connection, - * reading a protokol object will block until one becomes available. - * - * @author Richard van Nieuwenhoven - */ -public final class INDIPipedConnections { - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * The one end of a piped connection. - */ - private static final class INDIPipedConnection implements INDIConnection { - - /** - * a closed indicator to indicate the connection was closed. - */ - private boolean closed = false; - - /** - * the input stream of the connection. - */ - private INDIInputStream inputStream; - - /** - * the output stream of the connection. - */ - private INDIOutputStream outputStream; - - /** - * constructor of the piped connection with the in and out blocking - * queue s as a parameter. - * - * @param inputQueue the blocking input queue - * @param outputQueue the blocking output queue - */ - public INDIPipedConnection(final LinkedBlockingQueue> inputQueue, final LinkedBlockingQueue> outputQueue) { - inputStream = new INDIPipedInputStream(inputQueue, this); - outputStream = new INDIPipedOutputStream(outputQueue, this); - } - - /** - * close the connection. - */ - @Override - public void close() { - closed = true; - } - - @Override - public INDIInputStream getINDIInputStream() throws IOException { - return inputStream; - } - - @Override - public INDIOutputStream getINDIOutputStream() throws IOException { - return outputStream; - } - - /** - * @return is the connection closed. - */ - public boolean isClosed() { - return closed; - } - - @Override - public URL getURL() { - try { - return new URL("indi:///?pipe"); - } catch (MalformedURLException e) { - LOG.error("illegal std url, should never happen!", e); - return null; - } - } - } - - /** - * This class wrapes an INDIInputstream around a blocking queue. - */ - private static final class INDIPipedInputStream implements INDIInputStream { - - /** - * the parent connection this end is part of. - */ - private final INDIPipedConnection connection; - - /** - * the wrapped blocking queue. - */ - private final LinkedBlockingQueue> inputQueue; - - /** - * constructor of the wrapper. - * - * @param inputQueue the wrapped blocking queue. - * @param connection the parent connection this end is part of. - */ - private INDIPipedInputStream(LinkedBlockingQueue> inputQueue, INDIPipedConnection connection) { - this.inputQueue = inputQueue; - this.connection = connection; - } - - @Override - public void close() throws IOException { - connection.close(); - } - - @Override - public INDIProtocol readObject() throws IOException { - if (connection.isClosed()) { - return null; - } - try { - INDIProtocol readObject = inputQueue.take(); - if (readObject instanceof INDIProtokolEndMarker) { - return null; - } - readObject.trim(); - return readObject; - } catch (InterruptedException e) { - connection.close(); - return null; - } - } - } - - /** - * This class wrapes an INDIOutputstream around a blocking queue. - */ - private static final class INDIPipedOutputStream implements INDIOutputStream { - - /** - * the parent connection this end is part of. - */ - private final INDIPipedConnection connection; - - /** - * the wrapped blocking queue. - */ - private final LinkedBlockingQueue> outputQueue; - - /** - * constructor of the wrapper. - * - * @param outputQueue the wrapped blocking queue. - * @param connection the parent connection this end is part of. - */ - private INDIPipedOutputStream(LinkedBlockingQueue> outputQueue, INDIPipedConnection connection) { - this.outputQueue = outputQueue; - this.connection = connection; - } - - @Override - public void close() throws IOException { - connection.close(); - try { - outputQueue.put(new INDIProtokolEndMarker()); - } catch (InterruptedException e) { - LOG.error("closing on a closed stream, ignoring it", e); - } - } - - @Override - public synchronized void writeObject(INDIProtocol element) throws IOException { - if (connection.isClosed()) { - throw new IOException("stream closed"); - } - try { - outputQueue.put(element); - } catch (InterruptedException e) { - connection.close(); - throw new IOException("queue closed", e); - } - } - } - - /** - * Indicator class to indicate the end of stream. - */ - private static final class INDIProtokolEndMarker extends INDIProtocol { - - } - - /** - * the logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIPipedConnections.class); - - /** - * the first connection that is internaly connected to the second. - */ - private final INDIPipedConnection first; - - /** - * the second connection that is internaly connected to the first. - */ - private final INDIPipedConnection second; - - /** - * create the piped connection pair. - */ - public INDIPipedConnections() { - LinkedBlockingQueue> firstToSecondQueue = new LinkedBlockingQueue>(); - LinkedBlockingQueue> secondToFirstQueue = new LinkedBlockingQueue>(); - first = new INDIPipedConnection(firstToSecondQueue, secondToFirstQueue); - second = new INDIPipedConnection(secondToFirstQueue, firstToSecondQueue); - } - - /** - * @return the first connection that is internaly connected to the second. - */ - public INDIConnection first() { - return first; - } - - /** - * @return the second connection that is internaly connected to the first. - */ - public INDIConnection second() { - return second; - } - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIProcessConnection.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIProcessConnection.java deleted file mode 100644 index 667d67160fdfb245b68fec99607da356ac0b4e77..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIProcessConnection.java +++ /dev/null @@ -1,108 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.api.INDIConnection; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.api.INDIOutputStream; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; - -/** - * This class implements an indi protocol connector to an other process. the in - * and out put stream are connected to the in an d output stream of the external - * program. - * - * @author Richard van Nieuwenhoven - */ -public class INDIProcessConnection implements INDIConnection { - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * the logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIProcessConnection.class); - - /** - * the input stream from the process deserialized as indi protocol objects. - */ - private INDIInputStream inputStream; - - /** - * the ouput stream from the process serialized from indi protocol objects. - */ - private INDIOutputStream outputStream; - - /** - * the process from with the in and output stream come. - */ - private final Process process; - - /** - * construct the indi connection around the process. - * - * @param process the process to use. - */ - public INDIProcessConnection(Process process) { - this.process = process; - } - - @Override - public INDIInputStream getINDIInputStream() throws IOException { - if (inputStream == null) { - inputStream = INDIProtocolFactory.createINDIInputStream(process.getInputStream()); - } - return inputStream; - } - - @Override - public INDIOutputStream getINDIOutputStream() throws IOException { - if (inputStream == null) { - outputStream = INDIProtocolFactory.createINDIOutputStream(process.getOutputStream()); - } - return outputStream; - } - - @Override - public void close() throws IOException { - - } - - @Override - public URL getURL() { - try { - return new URL("indi:///?process=" + process.toString()); - } catch (MalformedURLException e) { - LOG.error("illegal std url, should never happen!", e); - return null; - } - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIProtocolFactory.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIProtocolFactory.java deleted file mode 100644 index d8164ce796307a6638a09de7528a86684e82a710..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIProtocolFactory.java +++ /dev/null @@ -1,227 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.core.util.CustomObjectOutputStream; -import com.thoughtworks.xstream.io.HierarchicalStreamDriver; -import com.thoughtworks.xstream.io.HierarchicalStreamWriter; -import com.thoughtworks.xstream.io.StatefulWriter; -import com.thoughtworks.xstream.io.xml.XppDriver; -import lc.astro.indi.protocol.*; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.api.INDIOutputStream; - -import java.io.*; -import java.util.Enumeration; -import java.util.Map; - -/** - * Xstream definitions factory for the indi protocol. - * - * @author Richard van Nieuwenhoven - */ -public final class INDIProtocolFactory { - - /** - * Buffer to use for the core in and output streams. - */ - private static final int BUFFER_SIZE = 16 * 1024; - - /** - * bytes for a dummy root close tag. - */ - private static final byte[] CLOSE_BYTES = "".getBytes(); - - /** - * bytes for a dummy root open tag. - */ - private static final byte[] OPEN_BYTES = "".getBytes(); - - /** - * the XSTREAM driver to use. - */ - private static final HierarchicalStreamDriver STREAM_DRIVER; - - /** - * static cache of the XSTREAM INDI protokol instance. - */ - private static final XStream XSTREAM; - - /** - * untility class never instanciated. - */ - private INDIProtocolFactory() { - } - - static { - STREAM_DRIVER = new XppDriver() { - - @Override - public HierarchicalStreamWriter createWriter(Writer out) { - return new Printwriter(out); - } - }; - XSTREAM = new XStream(STREAM_DRIVER); - XSTREAM.processAnnotations(new Class[]{ - DefBlob.class, - DefBlobVector.class, - DefElement.class, - DefLight.class, - DefLightVector.class, - DefNumber.class, - DefNumberVector.class, - DefSwitch.class, - DefSwitchVector.class, - DefText.class, - DefTextVector.class, - DefVector.class, - DelProperty.class, - EnableBLOB.class, - GetProperties.class, - INDIProtocol.class, - Message.class, - NewBlobVector.class, - NewLightVector.class, - NewNumberVector.class, - NewSwitchVector.class, - NewTextVector.class, - NewVector.class, - OneBlob.class, - OneElement.class, - OneLight.class, - OneNumber.class, - OneText.class, - OneSwitch.class, - SetBlobVector.class, - SetLightVector.class, - SetNumberVector.class, - SetSwitchVector.class, - SetTextVector.class, - SetVector.class - }); - } - - /** - * create an indi protocol input stream around an input stream. - * - * @param in the underlaying input stream where the xml will be read. - * @return the resultung indi input stream - * @throws IOException when something went wrong with the underlaying intput stream. - */ - public static INDIInputStream createINDIInputStream(InputStream in) throws IOException { - return new INDIInputStreamImpl(XSTREAM.createObjectInputStream(inputStreamWithRootTag(new BufferedInputStream(new MinimalBlockinInputStream(in), BUFFER_SIZE)))); - } - - /** - * create an indi protocol output stream around an output stream. - * - * @param out the underlaying output stream where the xml will be written. - * @return the resultung indi output stream - * @throws IOException when something went wrong with the underlaying output stream. - */ - public static INDIOutputStream createINDIOutputStream(OutputStream out) throws IOException { - final StatefulWriter statefulWriter = new StatefulWriter(STREAM_DRIVER.createWriter(new BufferedOutputStream(out, BUFFER_SIZE))); - return new INDIOutputStreamImpl(new CustomObjectOutputStream(new CustomObjectOutputStream.StreamCallback() { - - @Override - public void close() { - if (statefulWriter.state() != StatefulWriter.STATE_CLOSED) { - statefulWriter.close(); - } - } - - @Override - public void defaultWriteObject() throws NotActiveException { - throw new NotActiveException("not in call to writeObject"); - } - - @Override - public void flush() { - statefulWriter.flush(); - } - - @Override - public void writeFieldsToStream(@SuppressWarnings("rawtypes") Map fields) throws NotActiveException { - throw new NotActiveException("not in call to writeObject"); - } - - @Override - public void writeToStream(Object object) { - XSTREAM.marshal(object, statefulWriter); - } - })); - - } - - /** - * create an combined inputstream around the input stream parameter that - * creates a root tag around the xml parts in the input stream. - * - * @param in the underlaying input stream where the xml's will be read. - * @return the resultung input stream - */ - private static InputStream inputStreamWithRootTag(final InputStream in) { - Enumeration streamEnum = new Enumeration() { - - private int index = 0; - - private final InputStream[] streams = { - new ByteArrayInputStream(OPEN_BYTES), - in, - new ByteArrayInputStream(CLOSE_BYTES) - }; - - @Override - public boolean hasMoreElements() { - return index < streams.length; - } - - @Override - public InputStream nextElement() { - return streams[index++]; - } - }; - return new SequenceInputStream(streamEnum); - } - - /** - * nice toString for the protocol objects. - * - * @param protocol the protocol object. - * @return the toString. - */ - public static String toString(INDIProtocol protocol) { - return protocol.getClass().getSimpleName() + " " + XSTREAM.toXML(protocol); - } - - /** - * simple toXml for the protocol objects. - * - * @param protocol the protocol object. - * @return the toString. - */ - public static String toXml(INDIProtocol protocol) { - return XSTREAM.toXML(protocol); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDISocketConnection.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDISocketConnection.java deleted file mode 100644 index 0300e36611e1559ced28c70b13bc1a96af9b8bd3..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDISocketConnection.java +++ /dev/null @@ -1,182 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.api.INDIConnection; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.api.INDIOutputStream; -import lc.astro.indi.protocol.url.INDIURLStreamHandler; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.InetSocketAddress; -import java.net.MalformedURLException; -import java.net.Socket; -import java.net.URL; - -/** - * Indi protocol connection around a tcp/ip socket. - * - * @author Ricard van Nieuwenhoven - */ -public class INDISocketConnection implements INDIConnection { - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * the logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDISocketConnection.class); - - /** - * timeout to use with tcp connections. - */ - private static final int CONNECT_TIMEOUT = 20000; - - /** - * the indi protocol input stream. - */ - private INDIInputStream inputStream; - - /** - * the indi protocol output stream. - */ - private INDIOutputStream ouputStream; - - /** - * the socket over with to communicate. - */ - private final Socket socket; - - /** - * constructor around an existing socket. this is probalby only usefull in a - * server case where the accept of a server socket returns a client socket. - * - * @param socket the socket to connecto to - */ - public INDISocketConnection(Socket socket) { - this.socket = socket; - } - - /** - * create a indi socket connection the the specified host and port. - * - * @param host the host name to connect to. - * @param port the port to connect to. - * @throws IOException if the connection fails. - */ - public INDISocketConnection(String host, int port) throws IOException { - this(new Socket()); - socket.connect(new InetSocketAddress(host, port), CONNECT_TIMEOUT); - } - - @Override - public INDIInputStream getINDIInputStream() throws IOException { - if (inputStream == null) { - inputStream = INDIProtocolFactory.createINDIInputStream(wrap(socket.getInputStream())); - } - return inputStream; - } - - /** - * possibility for subclasses to wrap the input stream. - * - * @param coreInputStream the input stream. - * @return the inputstream itself or a wrapped version of it - */ - protected InputStream wrap(InputStream coreInputStream) { - return coreInputStream; - } - - /** - * possibility for subclasses to wrap the output stream. - * - * @param coreOutputStream the output stream. - * @return the outputStream itself or a wrapped version of it - */ - protected OutputStream wrap(OutputStream coreOutputStream) { - return coreOutputStream; - } - - @Override - public INDIOutputStream getINDIOutputStream() throws IOException { - if (ouputStream == null) { - ouputStream = INDIProtocolFactory.createINDIOutputStream(wrap(socket.getOutputStream())); - } - return ouputStream; - } - - @Override - public void close() throws IOException { - socket.shutdownInput(); - try { - if (inputStream != null) { - inputStream.close(); - } - } catch (Exception e) { - LOG.warn("inputStream close problem", e); - } - try { - if (ouputStream != null) { - ouputStream.close(); - } - } catch (Exception e) { - LOG.warn("ouputStream close problem", e); - } - try { - if (socket != null && !socket.isClosed()) { - socket.close(); - } - } catch (Exception e) { - LOG.warn("socket close problem", e); - } - } - - @Override - public String toString() { - return getClass().getName() + "(" + getURL().toString() + ")"; - } - - @Override - public URL getURL() { - try { - return new URL(getProtocol(), socket.getInetAddress().getHostAddress(), socket.getPort(), "/"); - } catch (MalformedURLException e) { - LOG.error("illegal std url, should never happen!", e); - return null; - } - } - - /** - * @return the protokol for this connection. - */ - protected String getProtocol() { - return INDIURLStreamHandler.PROTOCOL; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIZipSocketConnection.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIZipSocketConnection.java deleted file mode 100644 index 64c87ab4f4728d398d554ecc17fa6d31f887840b..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/INDIZipSocketConnection.java +++ /dev/null @@ -1,94 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.url.INDIURLZipStreamHandler; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.Socket; -import java.util.zip.DeflaterOutputStream; -import java.util.zip.InflaterInputStream; - -/** - * Create a socket connection that communicates with a zipped data streams. And - * by that vastly reducing the xml overhead. - * - * @author Richard van Nieuwenhoven - */ -public class INDIZipSocketConnection extends INDISocketConnection { - - /** - * constructor for the zip compressed socket stream. - * - * @param socket the socket to connect the in and output streams. - */ - public INDIZipSocketConnection(Socket socket) { - super(socket); - } - - /** - * constructor for the zip compressed socket stream. - * - * @param host the host name to connect to. - * @param port the port to connect to. - * @throws IOException if the connection fails. - */ - public INDIZipSocketConnection(String host, int port) throws IOException { - super(host, port); - } - - @Override - protected InputStream wrap(InputStream coreInputStream) { - return new InflaterInputStream(new MinimalBlockinInputStream(coreInputStream)) { - - /** - * available() should return the number of bytes that can be read - * without running into blocking wait. Accomplishing this feast - * would eventually require to pre-inflate a huge chunk of data, so - * we rather opt for a more relaxed contract - * (java.util.zip.InflaterInputStream does not fit the bill). This - * code has been tested to work with BufferedReader.readLine(); - */ - @Override - public int available() throws IOException { - if (!inf.finished() && !inf.needsInput()) { - return 1; - } else { - return in.available(); - } - } - }; - } - - @Override - protected OutputStream wrap(OutputStream coreOutputStream) { - return new DeflaterOutputStream(coreOutputStream, true); - } - - @Override - protected String getProtocol() { - return INDIURLZipStreamHandler.PROTOCOL; - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/MinimalBlockinInputStream.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/MinimalBlockinInputStream.java deleted file mode 100644 index 5913b660adbef72d17e170615eb875a8cecfc207..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/MinimalBlockinInputStream.java +++ /dev/null @@ -1,109 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.IOException; -import java.io.InputStream; - -/** - * This is a very special class for the system, it protects the system against - * blocking on input stream reading, especialy if there is somthing to read but - * not enouth for the buffer. This class will pass all methods throu to the - * wrapped input stream, only the read is handled differently. It will only read - * maximal as much as is available on the wrapped input stream, if nothing is - * available it will only try to read 1 byte. an then check if there is more. - * - * @author Richard van Nieuwenhoven - */ -public class MinimalBlockinInputStream extends InputStream { - - /** - * the wrapped input stream. - */ - private final InputStream in; - - /** - * Constructor for the wrapped input stream. - * - * @param in the wrapped input stream. - */ - public MinimalBlockinInputStream(InputStream in) { - this.in = in; - } - - @Override - public int read() throws IOException { - return in.read(); - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - if (len > 0) { - // we want to minimize blocking so we will only read as much as is - // available. - if (in.available() > 0) { - return in.read(b, off, Math.min(in.available(), len)); - } else { - // we wait for one byte to come. - int count = in.read(b, off, 1); - // maybe there is more than one byte available now? - if (in.available() > 0) { - return in.read(b, off + count, Math.min(in.available(), len - count)) + count; - } - return count; - } - } else { - return 0; - } - } - - @Override - public long skip(long n) throws IOException { - return in.skip(n); - } - - @Override - public int available() throws IOException { - return in.available(); - } - - @Override - public void close() throws IOException { - in.close(); - } - - @Override - public synchronized void mark(int readlimit) { - in.mark(readlimit); - } - - @Override - public synchronized void reset() throws IOException { - in.reset(); - } - - @Override - public boolean markSupported() { - return in.markSupported(); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/Printwriter.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/Printwriter.java deleted file mode 100644 index 9313aa74ee9b2b3c324e6793731b4cc3f660dc0c..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/io/Printwriter.java +++ /dev/null @@ -1,89 +0,0 @@ -package lc.astro.indi.protocol.io; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; -import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; - -import java.io.Writer; -import java.lang.reflect.Field; -import java.security.AccessController; -import java.security.PrivilegedAction; - -/** - * Print writer for xml output where all elements get an end tag. even if the - * value is empty. If that is not nessesary this class can be deleted. - * - * @author Richard van Nieuwenhoven - */ -final class Printwriter extends PrettyPrintWriter { - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * tagIsEmpty field of the superclass. - */ - private final Field tagIsEmpty; - - /** - * instanciate the writer. - * - * @param writer the deeper writer to write the xml on. - */ - protected Printwriter(Writer writer) { - super(writer, XML_QUIRKS, new char[0], new XmlFriendlyNameCoder()); - try { - tagIsEmpty = PrettyPrintWriter.class.getDeclaredField("tagIsEmpty"); - final Field field = tagIsEmpty; - AccessController.doPrivileged(new PrivilegedAction() { - - @Override - public Object run() { - field.setAccessible(true); - return null; - } - }); - } catch (Exception e) { - throw new IllegalStateException("this should not happen, did the super class change?", e); - } - } - - @Override - public void endNode() { - try { - tagIsEmpty.set(this, false); - super.endNode(); - } catch (Exception e) { - throw new RuntimeException("?", e); - } - } - - @Override - protected String getNewLine() { - return ""; - } - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/package-info.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/package-info.java deleted file mode 100644 index 76dfcb01817acc578317ad98e2f22f78ac9b382f..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/package-info.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * This package provides the indi xml protokol definition for xstream. - * - * @author Richard van Nieuwenhoven - */ -package lc.astro.indi.protocol; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLConnection.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLConnection.java deleted file mode 100644 index 2eb9e14c917da9190d17821dde1fbb9ff0ec88ab..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLConnection.java +++ /dev/null @@ -1,159 +0,0 @@ -package lc.astro.indi.protocol.url; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.api.INDIConnection; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.api.INDIOutputStream; -import lc.astro.indi.protocol.io.INDISocketConnection; -import lc.astro.indi.protocol.io.INDIZipSocketConnection; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLDecoder; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -/** - * This class represents a indi connection to a server over an url referense. - * The url is decoded to get the connection data. Future extentions could also - * handle the selection of device and property as part of the url path. - * - * @author Richard van Nieuwenhoven - */ -public class INDIURLConnection extends URLConnection implements INDIConnection { - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * the undelaying socket indi connection. - */ - private INDISocketConnection socketConnection; - - /** - * constructor using the url. - * - * @param url the connection specification. - */ - protected INDIURLConnection(URL url) { - super(url); - } - - @Override - public synchronized void connect() throws IOException { - if (socketConnection == null) { - int port = getURL().getPort(); - if (port <= 0) { - port = getURL().getDefaultPort(); - } - String host = getURL().getHost(); - if (host == null || host.isEmpty()) { - host = "localhost"; - } - try { - if (INDIURLZipStreamHandler.PROTOCOL.equals(getURL().getProtocol())) { - socketConnection = new INDIZipSocketConnection(host, port); - } else { - socketConnection = new INDISocketConnection(host, port); - } - } catch (IOException e) { - throw new IOException("Problem connecting to " + host + ":" + port); - } - connected = true; - } - } - - @Override - public INDIInputStream getINDIInputStream() throws IOException { - return getSocketConnection().getINDIInputStream(); - } - - @Override - public INDIOutputStream getINDIOutputStream() throws IOException { - return getSocketConnection().getINDIOutputStream(); - } - - @Override - public InputStream getInputStream() throws IOException { - return (InputStream) getINDIInputStream(); - } - - @Override - public OutputStream getOutputStream() throws IOException { - return (OutputStream) getINDIOutputStream(); - } - - /** - * @return the initialized socket connection. - * @throws IOException is the connection could not be initialized. - */ - private INDIConnection getSocketConnection() throws IOException { - connect(); - return socketConnection; - } - - @Override - public void close() throws IOException { - if (socketConnection != null) { - socketConnection.close(); - } - } - - /** - * helper method to parse an url for its query parameters. This method does - * not take all possibilities in account but it is good anouth for indi - * urls. - * - * @param url the url to parse the query - * @return the map with query keys and there list with values.(never null) - */ - public static Map> splitQuery(URL url) { - final Map> queryPairs = new LinkedHashMap>(); - try { - if (url != null && url.getQuery() != null) { - final String[] pairs = url.getQuery().split("&"); - for (String pair : pairs) { - final int idx = pair.indexOf("="); - final String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), "UTF-8") : pair; - if (!queryPairs.containsKey(key)) { - queryPairs.put(key, new LinkedList()); - } - final String value = idx > 0 && pair.length() > idx + 1 ? URLDecoder.decode(pair.substring(idx + 1), "UTF-8") : null; - queryPairs.get(key).add(value); - } - } - return queryPairs; - } catch (UnsupportedEncodingException e) { - return queryPairs; - } - } - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLStreamHandler.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLStreamHandler.java deleted file mode 100644 index 8b102afe817b4b7b23ce57975cc901726174489e..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLStreamHandler.java +++ /dev/null @@ -1,61 +0,0 @@ -package lc.astro.indi.protocol.url; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.IOException; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLStreamHandler; - -/** - * A handler for INDI connections. This is still a work in progress - * - * @author Richard van Nieuwenhoven [ritchie [at] gmx.at] - */ -public class INDIURLStreamHandler extends URLStreamHandler { - - /** - * The protocol name for the normal indi tcp protocol. - */ - public static final String PROTOCOL = "indi"; - - /** - * The indi default port number. - */ - private static final int INDI_DEFAULT_PORT = 7624; - - @Override - protected final int getDefaultPort() { - return INDI_DEFAULT_PORT; - } - - @Override - protected final URLConnection openConnection(final URL url) throws IOException { - return new INDIURLConnection(url); - } - - @Override - protected final void parseURL(final URL u, final String spec, final int start, final int end) { - super.parseURL(u, spec, start, end); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLStreamHandlerFactory.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLStreamHandlerFactory.java deleted file mode 100644 index 5e406c081605e4b05f08b6d8c611b879687e78ae..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLStreamHandlerFactory.java +++ /dev/null @@ -1,67 +0,0 @@ -package lc.astro.indi.protocol.url; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.websocket.INDIWebSocketStreamHandler; - -import java.net.URL; -import java.net.URLStreamHandler; -import java.net.URLStreamHandlerFactory; - -/** - * A class to handle INDI Streams. - * - * @author Richard van Nieuwenhoven [ritchie [at] gmx.at] - */ -public class INDIURLStreamHandlerFactory implements URLStreamHandlerFactory { - - /** - * is the handler already initialized. - */ - private static boolean initialized = false; - - /** - * initialize the indi protokol. - */ - public static void init() { - if (!initialized) { - initialized = true; - if (System.getProperty(INDIURLStreamHandlerFactory.class.getSimpleName() + ".auto.register", "true").equalsIgnoreCase("true")) { - URL.setURLStreamHandlerFactory(new INDIURLStreamHandlerFactory()); - } - } - } - - @Override - public final URLStreamHandler createURLStreamHandler(final String protocol) { - if (INDIURLStreamHandler.PROTOCOL.equals(protocol)) { - return new INDIURLStreamHandler(); - } else if (INDIURLZipStreamHandler.PROTOCOL.equals(protocol)) { - return new INDIURLZipStreamHandler(); - } else if (INDIWebSocketStreamHandler.PROTOCOL.equals(protocol)) { - return new INDIWebSocketStreamHandler(); - } - return null; - } - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLZipStreamHandler.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLZipStreamHandler.java deleted file mode 100644 index 451ae8754a8031675be8ca2387a1bf385183ad07..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/url/INDIURLZipStreamHandler.java +++ /dev/null @@ -1,61 +0,0 @@ -package lc.astro.indi.protocol.url; - -/* - * #%L - * INDI for Java Base Library - * %% - * Copyright (C) 2013 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.IOException; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLStreamHandler; - -/** - * A handler for INDI connections. This is still a work in progress - * - * @author Richard van Nieuwenhoven [ritchie [at] gmx.at] - */ -public class INDIURLZipStreamHandler extends URLStreamHandler { - - /** - * The protocol name for the normal indi tcp protocol. - */ - public static final String PROTOCOL = "indiz"; - - /** - * The indi default port number. - */ - public static final int INDI_DEFAULT_PORT = 7625; - - @Override - protected final int getDefaultPort() { - return INDI_DEFAULT_PORT; - } - - @Override - protected final URLConnection openConnection(final URL url) throws IOException { - return new INDIURLConnection(url); - } - - @Override - protected final void parseURL(final URL u, final String spec, final int start, final int end) { - super.parseURL(u, spec, start, end); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebSocketConnection.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebSocketConnection.java deleted file mode 100644 index 26f31497462a076ad40422aba4d984f685ed149d..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebSocketConnection.java +++ /dev/null @@ -1,189 +0,0 @@ -package lc.astro.indi.protocol.websocket; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.api.INDIConnection; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.api.INDIOutputStream; -import lc.astro.indi.protocol.io.INDIProtocolFactory; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.websocket.MessageHandler; -import javax.websocket.Session; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PipedInputStream; -import java.io.PipedOutputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.ByteBuffer; - -/** - * Indi protocol connection around a websocket entpoint on a websocket server. - * - * @author Ricard van Nieuwenhoven - */ -public class INDIWebSocketConnection implements INDIConnection { - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * Logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIWebSocketConnection.class); - - /** - * the indi protocol input stream. - */ - private INDIInputStream inputStream; - - /** - * the indi protocol output stream. - */ - private INDIOutputStream ouputStream; - - /** - * the websocket server session. - */ - private Session session; - - /** - * constructor around an existing session. - * - * @param session the web socket session to connecto to - */ - public INDIWebSocketConnection(Session session) { - - this.session = session; - try { - createINDIInputStream(); - createINDIOutPutStream(); - } catch (IOException e) { - LOG.error("cound not create INDI streams on websocket endpoint", e); - try { - close(); - } catch (IOException e1) { - LOG.warn("cound not close websocket endpoint properly", e1); - } - } - } - - @Override - public INDIInputStream getINDIInputStream() throws IOException { - return inputStream; - } - - /** - * create a indiinputstream around the websocket. - * - * @throws IOException if some streams where instable. - */ - protected void createINDIInputStream() throws IOException { - PipedInputStream bytesIn = new PipedInputStream(); - final PipedOutputStream bytesOut = new PipedOutputStream(bytesIn); - - inputStream = INDIProtocolFactory.createINDIInputStream(bytesIn); - session.addMessageHandler(new MessageHandler.Partial() { - - @Override - public void onMessage(byte[] message, boolean last) { - try { - bytesOut.write(message); - bytesOut.flush(); - } catch (IOException e) { - LOG.error("cound not create INDI input stream on websocket endpoint", e); - try { - close(); - } catch (IOException e1) { - LOG.warn("cound not close websocket endpoint properly", e1); - } - } - } - }); - } - - @Override - public INDIOutputStream getINDIOutputStream() throws IOException { - return ouputStream; - } - - /** - * create an indi output stream around a websocket endpoint. - * - * @throws IOException if some streams where instable. - */ - protected void createINDIOutPutStream() throws IOException { - ouputStream = INDIProtocolFactory.createINDIOutputStream(new OutputStream() { - - @Override - public void write(int b) throws IOException { - byte[] bytes = new byte[1]; - bytes[0] = (byte) b; - session.getBasicRemote().sendBinary(ByteBuffer.wrap(bytes)); - } - - @Override - public void write(byte[] bytes) throws IOException { - session.getBasicRemote().sendBinary(ByteBuffer.wrap(bytes)); - } - - @Override - public void write(byte[] bytes, int off, int len) throws IOException { - session.getBasicRemote().sendBinary(ByteBuffer.wrap(bytes, off, len)); - } - - @Override - public void flush() throws IOException { - session.getBasicRemote().sendBinary(ByteBuffer.wrap(new byte[0]), true); - } - }); - - } - - @Override - public void close() throws IOException { - inputStream.close(); - ouputStream.close(); - session.close(); - } - - @Override - public String toString() { - return getClass().getName() + "(" + session.getRequestURI() + ")"; - } - - @Override - public URL getURL() { - try { - return session.getRequestURI().toURL(); - } catch (MalformedURLException e) { - LOG.error("illegal std url, should never happen!", e); - return null; - } - } - -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebSocketStreamHandler.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebSocketStreamHandler.java deleted file mode 100644 index 941b275e7dd3923a17fdf81a15c6d102cbbc48a3..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebSocketStreamHandler.java +++ /dev/null @@ -1,69 +0,0 @@ -package lc.astro.indi.protocol.websocket; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLStreamHandler; - -/** - * The webseocket url handler. - * - * @author Richard van Nieuwenhoven - */ -public class INDIWebSocketStreamHandler extends URLStreamHandler { - - /** - * Logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIWebSocketStreamHandler.class); - - /** - * The indi default port number. - */ - public static final int WEBSOCKET_DEFAULT_PORT = 8080; - - /** - * The protokol name for indi over websockets. - */ - public static final String PROTOCOL = "indiw"; - - @Override - protected final int getDefaultPort() { - return WEBSOCKET_DEFAULT_PORT; - } - - @Override - protected final URLConnection openConnection(final URL url) throws IOException { - return new INDIWebsocketURLConnection(url); - } - - @Override - protected final void parseURL(final URL u, final String spec, final int start, final int end) { - super.parseURL(u, spec, start, end); - } -} diff --git a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebsocketURLConnection.java b/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebsocketURLConnection.java deleted file mode 100644 index 0f0a570fe342eb9277c17e5829ee8809b8e589bc..0000000000000000000000000000000000000000 --- a/java/lc-astro-indi/src/main/java/lc/astro/indi/protocol/websocket/INDIWebsocketURLConnection.java +++ /dev/null @@ -1,133 +0,0 @@ -package lc.astro.indi.protocol.websocket; - -/* - * #%L - * INDI Protocol implementation - * %% - * Copyright (C) 2012 - 2014 indiforjava - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import lc.astro.indi.protocol.api.INDIConnection; -import lc.astro.indi.protocol.api.INDIInputStream; -import lc.astro.indi.protocol.api.INDIOutputStream; -import lc.astro.indi.protocol.url.INDIURLStreamHandlerFactory; -import org.glassfish.tyrus.client.ClientManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.websocket.ClientEndpointConfig; -import javax.websocket.Endpoint; -import javax.websocket.EndpointConfig; -import javax.websocket.Session; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URI; -import java.net.URL; -import java.net.URLConnection; - -/** - * This class represents a indi connection to a server over an url referense. - * The url is decoded to get the connection data. Future extentions could also - * handle the selection of device and property as part of the url path. - * - * @author Richard van Nieuwenhoven - */ -public class INDIWebsocketURLConnection extends URLConnection implements INDIConnection { - - static { - INDIURLStreamHandlerFactory.init(); - } - - /** - * Logger to log to. - */ - private static final Logger LOG = LoggerFactory.getLogger(INDIWebsocketURLConnection.class); - - /** - * the undelaying socket indi connection. - */ - private INDIWebSocketConnection socketConnection; - - /** - * constructor using the url. - * - * @param url the connection specification. - */ - protected INDIWebsocketURLConnection(URL url) { - super(url); - } - - @Override - public synchronized void connect() throws IOException { - if (socketConnection == null) { - try { - final ClientEndpointConfig cec = ClientEndpointConfig.Builder.create().build(); - - ClientManager client = ClientManager.createClient(); - Session session = client.connectToServer(new Endpoint() { - - @Override - public void onOpen(Session session, EndpointConfig config) { - socketConnection = new INDIWebSocketConnection(session); - } - }, cec, new URI(getURL().toExternalForm().replace(INDIWebSocketStreamHandler.PROTOCOL + ":", "ws:"))); - socketConnection = new INDIWebSocketConnection(session); - } catch (Exception e) { - LOG.error("could not connect to websocket", e); - } - } - } - - @Override - public INDIInputStream getINDIInputStream() throws IOException { - return getSocketConnection().getINDIInputStream(); - } - - @Override - public INDIOutputStream getINDIOutputStream() throws IOException { - return getSocketConnection().getINDIOutputStream(); - } - - @Override - public InputStream getInputStream() throws IOException { - return (InputStream) getINDIInputStream(); - } - - @Override - public OutputStream getOutputStream() throws IOException { - return (OutputStream) getINDIOutputStream(); - } - - /** - * @return the initialized socket connection. - * @throws IOException is the connection could not be initialized. - */ - private INDIConnection getSocketConnection() throws IOException { - connect(); - return socketConnection; - } - - @Override - public void close() throws IOException { - if (socketConnection != null) { - socketConnection.close(); - } - } - -} diff --git a/java/lc-astro/.gitignore b/java/lc-astro/.gitignore deleted file mode 100644 index ede7310f5aa22a8bb16f7393dedac5d9b0cba2c9..0000000000000000000000000000000000000000 --- a/java/lc-astro/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -kabe.log -velocity.log -.DS_Store -statistic.xml -.gradle -/*/build/ -/build/ -gradle-app.setting -!gradle-wrapper.jar -.gradletasknamecache -.idea/ -*.iml -out/ -.cache -node_modules -/*/.idea -.vi -/*/graph.eo -.vai -graph.bak -.idea -tests.vai -vds.log -hosts.json -tests.vai.old \ No newline at end of file diff --git a/java/lc-astro/LICENSE.md b/java/lc-astro/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-astro/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-astro/README.txt b/java/lc-astro/README.txt deleted file mode 100644 index eb6c263c4133b887dfaf271b42feb31ca5c464f7..0000000000000000000000000000000000000000 --- a/java/lc-astro/README.txt +++ /dev/null @@ -1,10 +0,0 @@ - --= INSTALLATION =- - -* Create an empty MySQL Database. - -* Use Gnusto to run the astro.sql scripts. - -* Use CatalogLoaderApp to load the stellar catalog into SQL. - -* Use SqlLoaderApp to process subs and load their meta-data into SQL. diff --git a/java/lc-astro/build.gradle b/java/lc-astro/build.gradle deleted file mode 100644 index 6b966428fb893252d9c72ab0ac17ee582ee42c96..0000000000000000000000000000000000000000 --- a/java/lc-astro/build.gradle +++ /dev/null @@ -1,44 +0,0 @@ -plugins { - id 'java' - id 'application' - id 'distribution' - id 'maven-publish' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -repositories { - mavenCentral() -} - -group 'leigh' -version '1.1-SNAPSHOT' - -dependencies { - testImplementation group: 'junit', name: 'junit', version: '4.12' - api group: 'net.sf.opencsv', name: 'opencsv', version: '2.3' - api group: 'gov.nasa.gsfc.heasarc', name: 'nom-tam-fits', version: '1.15.2' - api group: 'org.javastro', name: 'jsofa', version: '20200721' - api group: 'c3p0', name: 'c3p0', version: '0.9.1.2' - api group: 'mysql', name: 'mysql-connector-java', version: '8.0.22' - api project(':lc-eo') - api project(':lc-mecha-exec') - api group: 'org.shredzone.commons', name: 'commons-suncalc', version: '3.4' -} - -application { - mainClass = 'leigh.astro.app.TelescopeControllerApp' -} - -jar { - manifest { - attributes('Implementation-Title': 'LEIGH Astronomy', 'Implementation-Version': archiveVersion) - } -} - -configurations { - doc { - transitive true - } -} \ No newline at end of file diff --git a/java/lc-astro/sql/astro-1.sql b/java/lc-astro/sql/astro-1.sql deleted file mode 100644 index 85ba75ff374c5b32a002b237dd085d9009398958..0000000000000000000000000000000000000000 --- a/java/lc-astro/sql/astro-1.sql +++ /dev/null @@ -1,84 +0,0 @@ -DROP TABLE IF EXISTS ast_sub_t; -DROP TABLE IF EXISTS ast_sub_type_t; -DROP TABLE IF EXISTS ast_filter_t; -DROP TABLE IF EXISTS ast_filter_type_t; - -CREATE TABLE ast_sub_type_t -( - id INT PRIMARY KEY, - nm VARCHAR(8) NOT NULL -) ENGINE = INNODB; - -INSERT INTO ast_sub_type_t -VALUES (1, 'light'); -INSERT INTO ast_sub_type_t -VALUES (2, 'dark'); -INSERT INTO ast_sub_type_t -VALUES (3, 'flat'); -INSERT INTO ast_sub_type_t -VALUES (4, 'bias'); - -CREATE TABLE ast_filter_type_t -( - id INT PRIMARY KEY, - nm VARCHAR(16) NOT NULL -) ENGINE = INNODB; - -INSERT INTO ast_filter_type_t (id, nm) -VALUES (1, 'red'); -INSERT INTO ast_filter_type_t (id, nm) -VALUES (2, 'green'); -INSERT INTO ast_filter_type_t (id, nm) -VALUES (3, 'blue'); -INSERT INTO ast_filter_type_t (id, nm) -VALUES (4, 'ha'); -INSERT INTO ast_filter_type_t (id, nm) -VALUES (5, 'sii'); -INSERT INTO ast_filter_type_t (id, nm) -VALUES (6, 'oiii'); -INSERT INTO ast_filter_type_t (id, nm) -VALUES (7, 'lum'); - -CREATE TABLE ast_filter_t -( - id INT PRIMARY KEY AUTO_INCREMENT, - serial VARCHAR(16) NOT NULL, - filter_type_id INT NOT NULL, - size_mm INT NOT NULL, - width_nm INT, - FOREIGN KEY (filter_type_id) REFERENCES ast_filter_type_t (id) -) ENGINE = INNODB; - -INSERT INTO ast_filter_t (id, serial, filter_type_id, size_mm) -VALUES (1, '9-1006', 1, 36); -INSERT INTO ast_filter_t (id, serial, filter_type_id, size_mm) -VALUES (2, '9-1007', 2, 36); -INSERT INTO ast_filter_t (id, serial, filter_type_id, size_mm) -VALUES (3, '9-1008', 3, 36); -INSERT INTO ast_filter_t (id, serial, filter_type_id, size_mm, width_nm) -VALUES (4, '9-1010', 4, 36, 3); -INSERT INTO ast_filter_t (id, serial, filter_type_id, size_mm, width_nm) -VALUES (5, '9-1012', 5, 36, 3); -INSERT INTO ast_filter_t (id, serial, filter_type_id, size_mm, width_nm) -VALUES (6, '9-1011', 6, 36, 3); -INSERT INTO ast_filter_t (id, serial, filter_type_id, size_mm) -VALUES (7, '9-1009', 7, 36); - -DROP TABLE IF EXISTS ast_sub_t; -CREATE TABLE ast_sub_t -( - id binary(16) primary key, - capture_ts TIMESTAMP NOT NULL, - sub_type_id int NOT NULL, - FOREIGN KEY (sub_type_id) REFERENCES ast_sub_type_t (id), - filter_id int NOT NULL, - FOREIGN KEY (filter_id) REFERENCES ast_filter_t (id), - length_sec DOUBLE NOT NULL, - gain INT NOT NULL, - off INT NOT NULL, - width_px INT NOT NULL, - height_px INT NOT NULL, - ccd_temp DOUBLE NOT NULL, - center_ra_deg DOUBLE NOT NULL, - center_dec_deg DOUBLE NOT NULL -) ENGINE = INNODB; \ No newline at end of file diff --git a/java/lc-astro/sql/astro-2.sql b/java/lc-astro/sql/astro-2.sql deleted file mode 100644 index ee69bd24fcaa1f8ed7649866b0b9a4fc1a4363ab..0000000000000000000000000000000000000000 --- a/java/lc-astro/sql/astro-2.sql +++ /dev/null @@ -1,15 +0,0 @@ -DROP TABLE IF EXISTS ast_train_t; -CREATE TABLE ast_train_t -( - id INT PRIMARY KEY AUTO_INCREMENT, - label VARCHAR(36) NOT NULL -); - - -INSERT INTO ast_train_t (id, label) VALUES (0, 'Undefined'); -INSERT INTO ast_train_t (id, label) VALUES (1, 'ED80 ASI1600MM-Pro'); -INSERT INTO ast_train_t (id, label) VALUES (2, 'ED80 ASI1600MM-Pro'); - -ALTER TABLE ast_sub_t - ADD COLUMN (train_id INT NOT NULL DEFAULT 0, - FOREIGN KEY (train_id) REFERENCES ast_train_t (id)); diff --git a/java/lc-astro/sql/astro-3.sql b/java/lc-astro/sql/astro-3.sql deleted file mode 100644 index d247aa55c7641f0636752d74e9681fa8b33e8283..0000000000000000000000000000000000000000 --- a/java/lc-astro/sql/astro-3.sql +++ /dev/null @@ -1,5 +0,0 @@ -ALTER TABLE ast_sub_t - DROP PRIMARY KEY; -ALTER TABLE ast_sub_t RENAME COLUMN id to bin_id; -ALTER TABLE ast_sub_t - ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY FIRST; \ No newline at end of file diff --git a/java/lc-astro/sql/astro-4.sql b/java/lc-astro/sql/astro-4.sql deleted file mode 100644 index df46eb9165c8e923619f9df8094dd569791f3d0e..0000000000000000000000000000000000000000 --- a/java/lc-astro/sql/astro-4.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE ast_sub_t - ADD CONSTRAINT ast_sub_binid_uc UNIQUE (bin_id); \ No newline at end of file diff --git a/java/lc-astro/sql/astro-5.sql b/java/lc-astro/sql/astro-5.sql deleted file mode 100644 index 843cda2e5582fe3e40a0c91d4f7cc72537c7ff88..0000000000000000000000000000000000000000 --- a/java/lc-astro/sql/astro-5.sql +++ /dev/null @@ -1,12 +0,0 @@ -DROP TABLE IF EXISTS ast_catalog_t; - -CREATE TABLE ast_catalog_t -( - id INT PRIMARY KEY AUTO_INCREMENT, - nm VARCHAR(32) NOT NULL, - ra_deg DOUBLE NOT NULL, - dec_deg DOUBLE NOT NULL -) ENGINE = innodb; - -ALTER TABLE ast_train_t - ENGINE =innodb; \ No newline at end of file diff --git a/java/lc-astro/sql/astro-6.sql b/java/lc-astro/sql/astro-6.sql deleted file mode 100644 index 823a8a8104d91cb555825b63c74ad92a3fd4164e..0000000000000000000000000000000000000000 --- a/java/lc-astro/sql/astro-6.sql +++ /dev/null @@ -1,47 +0,0 @@ -CREATE TABLE ast_catalog_type_t -( - id INT PRIMARY KEY AUTO_INCREMENT, - nm VARCHAR(16) NOT NULL -); - -INSERT INTO ast_catalog_type_t (nm) -VALUES ('*'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('**'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('*Ass'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('Cl+N'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('Dup'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('EmN'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('G'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('GCl'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('GGroup'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('GPair'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('GTrpl'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('HII'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('Neb'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('Nova'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('OCl'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('PN'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('RfN'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('SNR'); -INSERT INTO ast_catalog_type_t (nm) -VALUES ('Other'); - -ALTER TABLE ast_catalog_t - ADD COLUMN (catalog_type_id INT, FOREIGN KEY (catalog_type_id) REFERENCES ast_catalog_type_t (id)); diff --git a/java/lc-astro/src/main/java/lc/astro/app/BundlerApp.java b/java/lc-astro/src/main/java/lc/astro/app/BundlerApp.java deleted file mode 100644 index e013669021126ed89648b4de5b44a1e7d16f5c11..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/BundlerApp.java +++ /dev/null @@ -1,138 +0,0 @@ -package lc.astro.app; - -import lc.astro.catalog.CatalogObject; -import lc.astro.catalog.StellarCatalog; -import lc.astro.fits.AstroSub; -import lc.astro.fits.AstroSubType; -import lc.astro.fits.AstroSubUtil; -import lc.astro.fits.FitsScanner; -import lc.astro.iraf.Photometry; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; -import lc.mecha.util.VelocityWatch; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * Bundle a series of fits files together for a particular observation target. This gathers both the lights - * and calibrations together into a human-friendly package for further processing. - *

- * Usage: BundlerApp adbPath object - *

- * Limitations: Calibrations will be gathered via AstroSubUtil.matchCalibrations() for the - * only one of the light subs. Which sub is undefined. For observation bundles which do not require multiple - * calibration sets (same equipment, same configuration, same time period) this should be sufficient, but - * is really not correct. - * - * @author Alex Leigh - */ -public class BundlerApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(BundlerApp.class); - private static final boolean qualityArmed = false; - - public static void main(String args[]) throws Exception { - if (args.length != 2) { - logger.info("BundlerApp adbPath object"); - System.exit(UniversalJob.RET_BADARGS); - } - - // Which subs do we have - FitsScanner scanner = new FitsScanner(); - Path adbPath = Paths.get(args[0]); - List allSubs = scanner.scanPath(adbPath); - logger.info("Located subs. [count: {}]", allSubs.size()); - - // Which lights are of NGC6888 - StellarCatalog cat = new StellarCatalog(); - CatalogObject obj = cat.get(args[1]); - - if (obj == null) { - logger.warn("Could not locate target object in catalog."); - System.exit(UniversalJob.RET_OK); - } - - logger.info("Located object in catalog. {}", obj); - - ArrayList mySubs = new ArrayList<>(); - - for (AstroSub sub : allSubs) { - if (sub.contains(obj)) { - mySubs.add(sub); - } - } - - if (mySubs.size() == 0) { - logger.warn("No matching lights found. Exiting."); - System.exit(UniversalJob.RET_OK); - } - - logger.info("Matched lights. [count: {}]", mySubs.size()); - - // FIXME: This should be handled on a per-sub/per-group basis - AstroSub ex = allSubs.get(0); - AstroSubUtil bundler = new AstroSubUtil(); - mySubs.addAll(bundler.matchCalibrations(ex, allSubs)); - - Path objPath = Paths.get(args[1].toLowerCase()); - Files.createDirectory(objPath); - - ExecutorService svc = Executors.newFixedThreadPool(8); - - VelocityWatch vw = new VelocityWatch(logger); - for (AstroSub sub : mySubs) { - if (qualityArmed) { - // If this is a light, does it meet quality requirements? - if (sub.getFrameType().equals(AstroSubType.LIGHT)) { - Photometry pm = sub.getPhotometry(); - logger.info("sub [id: {}] [filter: {}] [fwhm: {}] [stars: {}] [sharp: {}] [round: {}]", - sub.getId(), sub.getFilter(), pm.averageFWHM(), pm.getCount(), pm.averageSharp(), pm.averageRound()); - - // Not enough stars is a warning sign, and more sharp is more better. - if (pm.getCount() < 100 && pm.averageSharp() < 1.2) { - vw.event("discard"); - continue; - } - } - } - - svc.submit(() -> { - try { - Path src = adbPath.resolve(sub.getId().toString() + ".fits"); - Path dst = getDstFile(sub, objPath); - Files.copy(src, dst); - vw.event("copy"); - logger.info("Copy: {}", dst); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } - - svc.shutdown(); - vw.status(); - } - - /** - * Given a sub return its bundle path, including filter, in the given distribution directory. For example, - * given a distribution directory of /tmp the method might return /tmp/H_Alpha/1234.fits. - */ - private static Path getDstFile(AstroSub sub, Path dst) throws IOException { - // Everything else must be a calibration - String dir = sub.getFrameType().toString() + "-" + sub.getFilter(); - Path filterPath = dst.resolve(dir.toLowerCase()); - // Performance of this is poor, but perhaps we do not care in this context. - if (!Files.exists(filterPath)) { - Files.createDirectory(filterPath); - } - - return filterPath.resolve(sub.getId() + ".fits"); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/app/CatalogLoaderApp.java b/java/lc-astro/src/main/java/lc/astro/app/CatalogLoaderApp.java deleted file mode 100644 index ed65347c40e4f4145c004fee017c3176e08f2d65..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/CatalogLoaderApp.java +++ /dev/null @@ -1,26 +0,0 @@ -package lc.astro.app; - -import com.mchange.v2.c3p0.ComboPooledDataSource; -import lc.astro.catalog.StellarCatalog; -import lc.astro.db.AstroSql; - -import java.beans.PropertyVetoException; -import java.io.IOException; -import java.sql.Connection; -import java.sql.SQLException; - -/** - * A utility to load the {@link StellarCatalog} into SQL. - * - * @author Alex Leigh - */ -public class CatalogLoaderApp { - public static void main(String[] args) throws PropertyVetoException, IOException, SQLException { - ComboPooledDataSource ds = AstroSql.getDataSource(); - StellarCatalog cat = new StellarCatalog(); - - try (Connection con = ds.getConnection()) { - cat.writeToSql(con); - } - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/app/ConvertExample.java b/java/lc-astro/src/main/java/lc/astro/app/ConvertExample.java deleted file mode 100644 index 3021364a6af6d403ad331ee5bab96dab39089900..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/ConvertExample.java +++ /dev/null @@ -1,41 +0,0 @@ -package lc.astro.app; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.jastronomy.jsofa.JSOFA; -import org.jastronomy.jsofa.JSOFAIllegalParameter; -import org.jastronomy.jsofa.JSOFAInternalError; - -public class ConvertExample { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ConvertExample.class); - - public static void main(String[] args) throws JSOFAInternalError, JSOFAIllegalParameter { - double rc, dc, pr, pd, px, rv, utc1, utc2, dut1, - elong, phi, hm, xp, yp, phpa, tc, rh, wl; - - rc = 2.71; - dc = 0.174; - pr = 1e-5; - pd = 5e-6; - px = 0.1; - rv = 55.0; - utc1 = 2456384.5; - utc2 = 0.969254051; - dut1 = 0.1550675; - elong = -0.527800806; - phi = -1.2345856; - hm = 2738.0; - xp = 2.47230737e-7; - yp = 1.82640464e-6; - phpa = 731.0; - tc = 12.8; - rh = 0.59; - wl = 0.55; - - JSOFA.ObservedPositionEO localPosition = JSOFA.jauAtco13(rc, dc, pr, pd, px, rv, - utc1, utc2, dut1, elong, phi, hm, xp, yp, - phpa, tc, rh, wl); - - logger.info("Conversion: [az rads: {}] [ha rads: {}]", localPosition.op.aob, localPosition.op.rob); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/app/FitsListApp.java b/java/lc-astro/src/main/java/lc/astro/app/FitsListApp.java deleted file mode 100644 index 1ca8e94156f825bf752ef500aaba234b4bd3724e..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/FitsListApp.java +++ /dev/null @@ -1,134 +0,0 @@ -package lc.astro.app; - -import lc.astro.catalog.CatalogObject; -import lc.astro.catalog.StellarCatalog; -import lc.astro.fits.AstroSub; -import lc.astro.fits.AstroSubType; -import lc.astro.fits.FitsScanner; -import lc.astro.iraf.Photometry; -import lc.mecha.lang.Counter; -import lc.mecha.lang.CountingList; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; -import lc.mecha.util.VelocityWatch; - -import java.io.IOException; -import java.nio.file.Paths; -import java.time.Duration; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * Development utility for producing various test reports on a FITS file repo. - * - * @author Alex Leigh - */ -public class FitsListApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(FitsListApp.class); - - public static void main(String[] args) throws Exception { - if (args.length != 1) { - logger.info("Usage: FitsListApp path"); - System.exit(UniversalJob.RET_BADARGS); - } - - FitsScanner fs = new FitsScanner(); - List allSubs = fs.scanPath(Paths.get(args[0])); - - StellarCatalog catalog = new StellarCatalog(); - - Counter c = new Counter(); - for (AstroSub sub : allSubs) { - if (sub.getFrameType() == AstroSubType.LIGHT) { - List objs = sub.contains(catalog.getObjects()); - c.count(objs); - } - } - - c.print(logger); - } - - private static void process(List allSubs) throws IOException { - CountingList filterTime = new CountingList<>(); - CountingList temps = new CountingList<>(); - StellarCatalog catalog = new StellarCatalog(); - CatalogObject obj = catalog.get("NGC6888"); - List subs = new ArrayList<>(); - for (AstroSub sub : allSubs) { - if (sub.getObj().isNear(obj.getJ2000Coordinate())) { - subs.add(sub); - } - } - - double len = 0; - int light = 0; - int bias = 0; - int dark = 0; - int flat = 0; - - for (AstroSub sub : subs) { - len += sub.getLengthSeconds(); - filterTime.increment(sub.getFilter(), (int) sub.getLengthSeconds()); - temps.increment(Double.toString(sub.getCcdTemp()), 1); - switch (sub.getFrameType()) { - case BIAS: - bias++; - break; - case LIGHT: - light++; - break; - case DARK: - dark++; - break; - case FLAT: - flat++; - break; - } - } - - logger.info("Subs: [cnt: {}] [len: {}] [light: {}] [dark: {}] [bias: {}] [flat: {}]", - subs.size(), - Duration.ofSeconds((long) len), - bias, light, dark, flat); - - for (Map.Entry filters : filterTime.getCounts().entrySet()) { - logger.info("Filter: [name: {}] [len: {}]", filters.getKey(), Duration.ofSeconds(filters.getValue())); - } - - for (Map.Entry temp : temps.getCounts().entrySet()) { - logger.info("Temp: [ccd: {}] [qty: {}]", temp.getKey(), temp.getValue()); - } - - ExecutorService executor = Executors.newFixedThreadPool(8); - - VelocityWatch vw = new VelocityWatch(logger); - - for (AstroSub sub : subs) { - if (sub.getFrameType() == AstroSubType.LIGHT && sub.getFilter().equals("H_Alpha")) { - executor.submit(() -> { - try { - Photometry pm = sub.getPhotometry(); - - logger.info("sub [id: {}] [fwhm: {}] [stars: {}] [sharp: {}] [round: {}]", - sub.getId(), pm.averageFWHM(), pm.getCount(), pm.averageSharp(), pm.averageRound()); - - if (pm.averageHWHM() > 2.0) { - - vw.event("bad"); - } else { - vw.event("good"); - } - } catch (Exception e) { - e.printStackTrace(); - } - }); - } - } - - executor.shutdown(); - } -} \ No newline at end of file diff --git a/java/lc-astro/src/main/java/lc/astro/app/FitsRemoveDupeApp.java b/java/lc-astro/src/main/java/lc/astro/app/FitsRemoveDupeApp.java deleted file mode 100644 index ec5628818af5d750d3b8d274288e9cc8393e419a..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/FitsRemoveDupeApp.java +++ /dev/null @@ -1,29 +0,0 @@ -package lc.astro.app; - -import lc.astro.fits.FitsScanner; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.IOException; -import java.nio.file.Paths; - -/** - * A utility operation to scan a path of FITS files and remove any duplicates which are found. This app uses - * the {@link FitsScanner} class and obeys the mechanics of the removeDupes method. - * - * @author Alex Leigh - */ -public class FitsRemoveDupeApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(FitsRemoveDupeApp.class); - - public static void main(String args[]) throws IOException { - if (args.length != 1) { - logger.info("Usage: FitsRemoveDupeAPp path"); - System.exit(UniversalJob.RET_BADARGS); - } - - FitsScanner scanner = new FitsScanner(); - scanner.removeDupes(Paths.get(args[0])); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/app/FixupApp.java b/java/lc-astro/src/main/java/lc/astro/app/FixupApp.java deleted file mode 100644 index 87db9d82101e65adce7fbfe53c773034e4eafcad..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/FixupApp.java +++ /dev/null @@ -1,70 +0,0 @@ -package lc.astro.app; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import nom.tam.fits.Fits; -import nom.tam.fits.FitsException; -import nom.tam.fits.Header; - -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; - -/** - * Utility application designed to fix the header information in FITS files which were created prior to - * Standardization. This would be FITS files with the old filter names, and with improper instrument data. - * - * @author Alex Leigh - */ -public class FixupApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(FixupApp.class); - public static String KEY_FILTER = "FILTER"; - - - public static void main(String[] args) throws IOException { - logger.info("Version: {}", FixupApp.class.getPackage().getImplementationVersion()); - Files.walkFileTree(Path.of("/Volumes/cal326/adb"), new SimpleFileVisitor<>() { - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - if (file.toString().endsWith(".fits") || file.toString().endsWith(".fit")) { - try { - Fits f = new Fits(file.toAbsolutePath().toString()); - Header header = f.getHDU(0).getHeader(); - - String filter = header.getStringValue(KEY_FILTER); - - switch (filter) { - case "H_Alpha": - header.addValue(KEY_FILTER, "HA_AD_3NM", "Filter"); - break; - case "SII": - header.addValue(KEY_FILTER, "SII_AD_3NM", "Filter"); - break; - case "OIII": - header.addValue(KEY_FILTER, "OIII_AD_3NM", "Filter"); - break; - case "Red": - header.addValue(KEY_FILTER, "RED_AD_GEN2E", "Filter"); - break; - case "Green": - header.addValue(KEY_FILTER, "GREEN_AD_GEN2E", "Filter"); - break; - case "Blue": - header.addValue(KEY_FILTER, "BLUE_AD_GEN2E", "Filter"); - break; - } - - logger.debug("Read. [fn: {}] [filter: {}]", file, filter); - } catch (FitsException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return FileVisitResult.CONTINUE; - } - }); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/app/ObjFindApp.java b/java/lc-astro/src/main/java/lc/astro/app/ObjFindApp.java deleted file mode 100644 index ea096823ec4a5e8158c93095c43b87759a2c8549..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/ObjFindApp.java +++ /dev/null @@ -1,37 +0,0 @@ -package lc.astro.app; - -import lc.astro.catalog.CatalogObject; -import lc.astro.catalog.StellarCatalog; -import lc.astro.wcstools.Sky2XYExecutor; -import lc.astro.wcstools.Sky2XYTask; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.ArrayList; - -/** - * Reference application for calculating astrometric solutions. - * - * @author Alex Leigh - */ -public class ObjFindApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ObjFindApp.class); - - public static void main(String[] args) throws Exception { - StellarCatalog catalog = new StellarCatalog(); - ArrayList skyCoords = new ArrayList<>(); - skyCoords.add(catalog.get("NGC6888")); - skyCoords.add(catalog.get("NGC7000")); - skyCoords.add(catalog.get("NGC1234")); - - Sky2XYTask task = new Sky2XYTask(skyCoords); - - Sky2XYExecutor exec = new Sky2XYExecutor("/Users/aleigh/fits/3cb38d47-e4cd-47ff-b431-ffa03197fd5d.fits", - task.getTmpFile().getAbsolutePath()); - - exec.exec(task); - - logger.info("Matched: {}", task.getMatched()); - - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/app/SubLoaderApp.java b/java/lc-astro/src/main/java/lc/astro/app/SubLoaderApp.java deleted file mode 100644 index cbfdabf41b0260a88764462dd723cdda63ebc2fc..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/SubLoaderApp.java +++ /dev/null @@ -1,142 +0,0 @@ -package lc.astro.app; - -import com.mchange.v2.c3p0.ComboPooledDataSource; -import lc.astro.db.AstroSql; -import lc.astro.fits.AstroSub; -import lc.astro.fits.AstroSubType; -import lc.astro.fits.FitsScanner; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.beans.PropertyVetoException; -import java.io.IOException; -import java.nio.file.Path; -import java.sql.*; -import java.util.List; -import java.util.UUID; - -/** - * This application processes FITS subs (light, dark, flat, bias) and loads their meta-information into a SQL - * database using the astro schema. The app will attempt to process all FITS files not already present in the - * database (based on the ID of the FITS file). The filenames for the FITS files are expected to be in the form - * id.fits where id is a valid UUID. - * - * @author Alex Leigh - */ -public class SubLoaderApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SubLoaderApp.class); - private final int FILTER_RED_ID = 1; - private final int FILTER_GREEN_ID = 2; - private final int FILTER_BLUE_ID = 3; - private final int FILTER_HA_ID = 4; - private final int FILTER_SII_ID = 5; - private final int FILTER_OIII_ID = 6; - private final int FILTER_LUM_ID = 7; - - public static void main(String[] args) throws IOException, PropertyVetoException, SQLException { - if (args.length != 1) { - logger.info("Usage: SubLoaderApp path"); - System.exit(UniversalJob.RET_BADARGS); - } - - SubLoaderApp loader = new SubLoaderApp(); - loader.process(Path.of(args[0])); - } - - public void process(Path path) throws SQLException, IOException, PropertyVetoException { - ComboPooledDataSource cpds = AstroSql.getDataSource(); - - try (Connection con = cpds.getConnection()) { - FitsScanner fs = new FitsScanner(); - List allSubs = fs.scanPath(path); - logger.info("Located subs: {}", allSubs.size()); - - PreparedStatement insert = con.prepareStatement( - "INSERT INTO ast_sub_t (bin_id,capture_ts,sub_type_id,filter_id,length_sec,gain,off," + - "width_px,height_px,ccd_temp,center_ra_deg, center_dec_deg, train_id) VALUES " + - "(UUID_TO_BIN(?), ?,?,?,?,?,?,?,?,?,?,?,?)"); - - for (AstroSub sub : allSubs) { - if (!isLoaded(con, sub.getId())) { - logger.info("Loading metadata for sub: {}", sub); - insert.setString(1, sub.getId().toString()); - insert.setTimestamp(2, Timestamp.from(sub.getTime())); - insert.setInt(3, getSubTypeId(sub.getFrameType())); - insert.setInt(4, getFilterId(sub.getFilter())); - insert.setDouble(5, sub.getLengthSeconds()); - insert.setInt(6, sub.getGain()); - insert.setInt(7, sub.getOffset()); - insert.setInt(8, sub.getWidthPx()); - insert.setInt(9, sub.getHeightPx()); - insert.setDouble(10, sub.getCcdTemp()); - insert.setDouble(11, sub.getObj().getX()); - insert.setDouble(12, sub.getObj().getY()); - // The current image train is id:2 - insert.setInt(13, 2); - insert.execute(); - } else { - logger.info("Skipping already-loaded sub: {}", sub); - } - } - } - } - - /** - * Returns true if the ast_sub_t table already contains a record for the given - * id. - */ - public boolean isLoaded(Connection con, UUID id) throws SQLException { - try (PreparedStatement ps = con.prepareStatement( - "SELECT COUNT(*) FROM ast_sub_t WHERE bin_id=UUID_TO_BIN(?)")) { - ps.setString(1, id.toString()); - try (ResultSet rs = ps.executeQuery()) { - // We assume this worked given the query. Anything else is an exception. - rs.next(); - int x = rs.getInt(1); - if (x > 0) return true; - } - } - return false; - } - - public int getSubTypeId(AstroSubType type) { - switch (type) { - case LIGHT: - return 1; - case DARK: - return 2; - case FLAT: - return 3; - case BIAS: - return 4; - } - throw new IllegalArgumentException(); - } - - /** - * Returns the SQL filter ID for the given FITS name. The FITS name is that which is stored in the FITS - * file which is being processed. This very simplistic implementation is hard-coded with the known SQL - * ids. Note that this is the sub_filter_t(id), not sub_filter_type(id). - */ - public int getFilterId(String fitsName) { - switch (fitsName) { - case "Red": - return FILTER_RED_ID; - case "Green": - return FILTER_GREEN_ID; - case "Blue": - return FILTER_BLUE_ID; - case "H_Alpha": - return FILTER_HA_ID; - case "SII": - return FILTER_SII_ID; - case "OIII": - return FILTER_OIII_ID; - case "LPR": - return FILTER_LUM_ID; - } - - throw new IllegalArgumentException(); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/app/TelescopeControllerApp.java b/java/lc-astro/src/main/java/lc/astro/app/TelescopeControllerApp.java deleted file mode 100644 index a11eb73fddb9cee34c15f0385f96a3b6df7cbcfc..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/app/TelescopeControllerApp.java +++ /dev/null @@ -1,32 +0,0 @@ -package lc.astro.app; - -import lc.astro.scheduler.Planner; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -/** - * This application controls a telescope deployment for the purposes of automated observation. - *

- * Limitations: The application does not understand twilight, and will schedule jobs to run after sundown but before - * twilight ends. This will cause the job to pause in Ekos if the twilight constraint is set, so it winds up - * working in the end. - *

- * If the Ekos job stalls due to lack of observational quality (clouds, obstructions, etc) that prevent guiding - * or aligning, Ekos will leave the mount in tracking mode, which could (unverified) lead to a mount crash. - * If the job does eventually resume due to conditions improving, it will complete but will run "long" - * which in turn can stall the job since Ekos will not abort it when the object sets (or descends past the minimum - * elevation). This will result in observations being stalled until the next night, or human intervention. - * - * @author Alex Leigh - */ -public class TelescopeControllerApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(TelescopeControllerApp.class); - - public static void main(String[] args) throws Exception { - String ver = TelescopeControllerApp.class.getPackage().getImplementationVersion(); - logger.info("Ver: {}", ver); - - Planner s = new Planner(); - s.run(); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/astrometrics/AirMass.java b/java/lc-astro/src/main/java/lc/astro/astrometrics/AirMass.java deleted file mode 100644 index dffc4735dcfef1163b0b1d4972fa516deadd9b85..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/astrometrics/AirMass.java +++ /dev/null @@ -1,49 +0,0 @@ -package lc.astro.astrometrics; - -import static java.lang.Math.cos; -import static java.lang.StrictMath.pow; -import static java.lang.StrictMath.sqrt; - -/** - * Provides a method for estimating the airmass of an observation. - * - * @author Jack Martin - */ -public class AirMass { - /** - * Calculate the airmass as an index, where 1 is equal to the airmass directly at the zenith at sea level at - * standard pressure. - * - * @param altDeg The observer horizontal altitude for the observation, in degrees. - * @return The airmass index. - */ - public static double airMass(double altDeg) { - - double zenithRad = Math.toRadians(90 - altDeg); - - double seaLevel = 1 / ((cos(zenithRad) + (0.50572 * (Math.pow((96.07995 - zenithRad), -1.6364))))); - - return seaLevel; - } - - /** - * Calculate airmass as an index, adjusted for observers elevation above sea level. Airmass directly at - * zenith can be less than one. - * - * @param altDeg The observer horizontal altitude for the observation, in degrees. - * @param elevation The observer's elevation above sea level in kilometers. - * @return The airmass index. - */ - - public static double airMass(double altDeg, double elevation) { - - double re = 6367.5; - double yatm = 100; - double z = Math.toRadians(90 - altDeg); - - double airMass = sqrt(pow(((re + elevation) / yatm), 2) * pow(StrictMath.cos(z), 2) + (2 * re) / pow(yatm, 2) * - (yatm - elevation) - pow((elevation / yatm), 2) + 1) - (re + elevation) / yatm * StrictMath.cos(z); - - return airMass; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/astrometrics/Astrometrics.java b/java/lc-astro/src/main/java/lc/astro/astrometrics/Astrometrics.java deleted file mode 100644 index 7469697856aad41af331ad90186df4d639a0d301..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/astrometrics/Astrometrics.java +++ /dev/null @@ -1,177 +0,0 @@ -package lc.astro.astrometrics; - -import lc.astro.catalog.CatalogObject; -import lc.astro.catalog.StellarCatalog; -import lc.astro.unit.Rect; -import lc.astro.unit.SphericalCoordinate; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.NumberUtil; - -import java.io.IOException; -import java.util.Calendar; -import java.util.Date; -import java.util.TimeZone; - -/** - * This class contains various astrometrics related calculations. - * - * @author Alex Leigh - */ -public class Astrometrics { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Astrometrics.class); - - public static void main(String args[]) throws IOException { - StellarCatalog ngc = new StellarCatalog(); - double mst = meanSiderealTime(new Date(), -111); - - int totalObj = 0; - int visibleObj = 0; - int windowObj = 0; - int filtered = 0; - Rect window = new Rect(new SphericalCoordinate(225, 20), new SphericalCoordinate(315, 45)); - - for (CatalogObject object : ngc.getObjects()) { - totalObj++; - - SphericalCoordinate cel = object.getJ2000Coordinate(); - SphericalCoordinate horiz = calc(mst - cel.getX(), cel.getY(), 33.0); - - if (horiz.getY() > 0) visibleObj++; - if (window.isWithin(horiz)) { - windowObj++; - logger.info("Window target: [name: {}] [airmass: {}] [hcs: {}]", - object.getName(), - NumberUtil.precision(AirMass.airMass(horiz.getY()), 2), horiz); - } - } - - logger.info("Catalog processed. [total: {}] [visible: {}] [window: {}] [rejected: {}]", - totalObj, visibleObj, windowObj, filtered); - } - - /** - * Calculate the horizon alt/az for an object's ra/dec at a given hour angle. - */ - public static SphericalCoordinate calc(double ha, double dec, double lat) { - logger.debug("Called. [ha: {}] [dec: {}] [lat: {}]", ha, dec, lat); - double haRad = Math.toRadians(ha); - double sh = Math.sin(haRad); - double ch = Math.cos(haRad); - - double decRad = Math.toRadians(dec); - double sd = Math.sin(decRad); - double cd = Math.cos(decRad); - - double latRad = Math.toRadians(lat); - double sl = Math.sin(latRad); - double cl = Math.cos(latRad); - - double x = -ch * cd * sl + sd * cl; - double y = -sh * cd; - double z = ch * cd * cl + sd * sl; - double r = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); - - double az = Math.toDegrees(Math.atan2(y, x)); - double alt = Math.toDegrees(Math.atan2(z, r)); - - az = normalizeAngle(az); - - return new SphericalCoordinate(az, alt); - } - - /** - * For the given date and a longitude, calculate the local sidereal time. - */ - public static float meanSiderealTime(Date date, float longitude) { - // First, calculate number of Julian days since J2000.0. - double jd = calculateJulianDay(date); - double delta = jd - 2451545.0f; - - // Calculate the global and local sidereal times - double gst = 280.461f + 360.98564737f * delta; - double lst = normalizeAngle(gst + longitude); - - return (float) lst; - } - - /** - * Calculate the Julian Day for a given date using the following formula: - * JD = 367 * Y - INT(7 * (Y + INT((M + 9)/12))/4) + INT(275 * M / 9) + D + 1721013.5 + UT/24 - *

- * Note that this is only valid for the year range 1900 - 2099. - */ - public static double calculateJulianDay(Date date) { - Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); - cal.setTime(date); - - double hour = cal.get(Calendar.HOUR_OF_DAY) - + cal.get(Calendar.MINUTE) / 60.0f - + cal.get(Calendar.SECOND) / 3600.0f; - - int year = cal.get(Calendar.YEAR); - int month = cal.get(Calendar.MONTH) + 1; - int day = cal.get(Calendar.DAY_OF_MONTH); - - double jd = 367.0 - * year - - Math.floor(7.0 * (year + Math.floor((month + 9.0) / 12.0)) / 4.0) - + Math.floor(275.0 * month / 9.0) + day + 1721013.5 + hour - / 24.0; - - return jd; - } - - /** - * Normalize the angle to the range 0 <= value < 360. - */ - public static double normalizeAngle(double angle) { - double remainder = angle % 360; - if (remainder < 0) - remainder += 360; - return remainder; - } - - public static double dmsToDeg(double d, double m, double s) { - return Math.signum(d) * (Math.abs(d) + (m / 60.0) + (s / 3600.0)); - } - - public static double hmsToDeg(double h, double m, double s) { - return (15 * h) + (15 * m / 60) + (15 * s / 3600); - } - - - /** - * Parse a [+|-]HH:MM;SS.SSS format into a double. - * - * @param str The string to parse. - * @return The parsed value. - */ - public static double parseHms(String str) { - String sign = "+"; - if (str.startsWith("+") || str.startsWith("-")) { - sign = str.substring(0, 1); - str = str.substring(1); - } - - String[] tm = str.split(":", 3); - double x = Astrometrics.hmsToDeg(Double.parseDouble(tm[0]), Double.parseDouble(tm[1]), Double.parseDouble(tm[2])); - if (sign.equals("-")) x = -x; - - return x; - } - - public static double parseDms(String str) { - String sign = "+"; - if (str.startsWith("+") || str.startsWith("-")) { - sign = str.substring(0, 1); - str = str.substring(1); - } - - String[] tm = str.split(":", 3); - double x = Astrometrics.dmsToDeg(Double.parseDouble(tm[0]), Double.parseDouble(tm[1]), Double.parseDouble(tm[2])); - if (sign.equals("-")) x = -x; - - return x; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/astrometrics/Location.java b/java/lc-astro/src/main/java/lc/astro/astrometrics/Location.java deleted file mode 100644 index 6899cae5c3d3134ec5d3203f0cd3d4157983d9c8..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/astrometrics/Location.java +++ /dev/null @@ -1,68 +0,0 @@ -package lc.astro.astrometrics; - -import java.time.Instant; -import java.time.LocalTime; -import java.time.ZoneId; -import java.util.Objects; - -/** - * Class representing a terrestrial observing location. - * - * @author Alex Leigh - */ -public class Location { - private final String name; - private final double lng; - private final double lat; - private final String tz = "US/Arizona"; - - public Location(String name, double lat, double lng) { - this.name = name; - this.lng = lng; - this.lat = lat; - } - - /** - * Return the local time at this observing location for the given time. - */ - public LocalTime getLocalTime(Instant t) { - return LocalTime.from(t.atZone(ZoneId.of(tz))); - } - - public double getLng() { - return lng; - } - - public String getName() { - return name; - } - - public double getLat() { - return lat; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Location location = (Location) o; - return Double.compare(location.lng, lng) == 0 && - Double.compare(location.lat, lat) == 0 && - Objects.equals(name, location.name); - } - - @Override - public int hashCode() { - return Objects.hash(name, lng, lat); - } - - @Override - public String toString() { - return "Location{" + - "name='" + name + '\'' + - ", lng=" + lng + - ", lat=" + lat + - '}'; - } - -} diff --git a/java/lc-astro/src/main/java/lc/astro/catalog/CatalogObject.java b/java/lc-astro/src/main/java/lc/astro/catalog/CatalogObject.java deleted file mode 100644 index ad0be311fd08301757ffba4507ebdadf2ed3d186..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/catalog/CatalogObject.java +++ /dev/null @@ -1,58 +0,0 @@ -package lc.astro.catalog; - -import lc.astro.unit.SphericalCoordinate; - -/** - * A stellar catalog object. - * - * @author Alex Leigh - */ -public class CatalogObject { - private final String name; - private final SphericalCoordinate coordinate; - private final String type; - private final int id; - - public String getName() { - return name; - } - - /** - * Return the celestial coordinates for the catalog object in the J20000 epoch. - * - * @return The coordinate. - */ - public SphericalCoordinate getJ2000Coordinate() { - return coordinate; - } - - public CatalogObject(String name, SphericalCoordinate coordinate, String type, int id) { - this.name = name; - this.coordinate = coordinate; - this.type = type; - this.id = id; - } - - public String getType() { - return type; - } - - @Override - public String toString() { - return "CatalogObject{" + - "name='" + name + '\'' + - ", coordinate=" + coordinate + - ", type='" + type + '\'' + - ", id=" + id + - '}'; - } - - public SphericalCoordinate getCoordinate() { - return coordinate; - } - - public int getId() { - return id; - } - -} diff --git a/java/lc-astro/src/main/java/lc/astro/catalog/StellarCatalog.java b/java/lc-astro/src/main/java/lc/astro/catalog/StellarCatalog.java deleted file mode 100644 index 6809e28d2ef35efd5f888a2343bc19b3085da5f8..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/catalog/StellarCatalog.java +++ /dev/null @@ -1,129 +0,0 @@ -package lc.astro.catalog; - -import au.com.bytecode.opencsv.CSVReader; -import lc.astro.astrometrics.Astrometrics; -import lc.astro.unit.SphericalCoordinate; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -/** - * This class implements a stellar catalog, which maintains an index of stellar objects. All objects in the provided - * catalogs have their positions noted in J2000 format. - * - * @author Alex Leigh - */ -public class StellarCatalog { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(StellarCatalog.class); - private final List objects = new ArrayList<>(); - - /** - * Initialize a new catalog. This will load the stellar data from disk. - * - * @throws IOException - */ - public StellarCatalog() throws IOException { - load(); - logger.info("Built stellar catalog. [size: {}]", getObjects().size()); - } - - /** - * Write the entire stellar catalog into the ast_catalog_t table in the astro schema. - */ - public void writeToSql(Connection con) throws SQLException { - try (PreparedStatement ps = con.prepareStatement( - "INSERT INTO ast_catalog_t (nm, ra_deg, dec_deg, catalog_type_id) VALUES (?,?,?,?)")) { - for (CatalogObject obj : objects) { - ps.setString(1, obj.getName()); - ps.setDouble(2, obj.getJ2000Coordinate().getX()); - ps.setDouble(3, obj.getJ2000Coordinate().getY()); - ps.setInt(4, getTypeId(con, obj.getType())); - getTypeId(con, obj.getType()); - ps.execute(); - } - } - } - - /** - * For the given catalog type, return the type ID in the astro schema. This consults the - * ast_catalog_type_t table. Returns -1 if no match is found. - */ - public int getTypeId(Connection con, String typeName) throws SQLException { - try (PreparedStatement ps = con.prepareStatement("SELECT id FROM ast_catalog_type_t WHERE nm = ?")) { - ps.setString(1, typeName); - try (ResultSet rs = ps.executeQuery()) { - if (rs.next()) { - logger.info("Found type id: {}", rs.getInt(1)); - return rs.getInt(1); - } - } - } - logger.warn("Failed tp find catalog type in dictionary table: {}", typeName); - return -1; - } - - /** - * Load the built-in catalog. This currently consists of a database of the NGC objects. The object names - * are formated such as . - * - * @throws IOException - */ - private void load() throws IOException { - Class cls = this.getClass(); - InputStream i = cls.getClassLoader().getResourceAsStream("lc/astro/catalog/ngc.csv"); - - CSVReader reader = new CSVReader(new InputStreamReader(new BufferedInputStream(i)), ';'); - String[] record; - - // Header - reader.readNext(); - - int cnt = 0; - - while ((record = reader.readNext()) != null) { - logger.debug("Processing: {}", record[0]); - double raDeg = Astrometrics.parseHms(record[2]); - double decDeg = Astrometrics.parseDms(record[3]); - - logger.debug("Object: [name: {}] [raDeg: {}] [decDeg: {}]", record[0], raDeg, decDeg); - - CatalogObject obj = new CatalogObject(record[0], new SphericalCoordinate(raDeg, decDeg), - record[1], cnt); - objects.add(obj); - cnt++; - } - } - - /** - * Return a {@link List} containing all the objects in this catalog. - * - * @return The list. - */ - public List getObjects() { - return objects; - } - - /** - * Find a particular object by name in the catalog. - * - * @param name The name to search for. - * @return The object or null. - */ - public CatalogObject get(String name) { - for (CatalogObject obj : objects) { - if (obj.getName().equals(name)) return obj; - } - return null; - } - -} diff --git a/java/lc-astro/src/main/java/lc/astro/control/TelescopeMount.java b/java/lc-astro/src/main/java/lc/astro/control/TelescopeMount.java deleted file mode 100644 index 6986c35841ba01032dd64f3d4a50bbcd0454152d..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/control/TelescopeMount.java +++ /dev/null @@ -1,36 +0,0 @@ -package lc.astro.control; - -/** - * Classes implementing this interface represent a telescope mount. - * - * @author Alex Leigh - */ -public interface TelescopeMount { - /** - * Return the science telescope's focal length in millimeters. - * - * @return The focal length in mm. - */ - double getFocalLength(); - - /** - * Return the science telescope's aperture in millimeters. - * - * @return The aperture in mm. - */ - double getAperture(); - - /** - * Return the guide scope's focal length in millimeters. - * - * @return The focal length in mm. - */ - double getGuideFocalLength(); - - /** - * Return the guide scope's aperture in millimeters. - * - * @return The aperture in mm. - */ - double getGuideAperture(); -} diff --git a/java/lc-astro/src/main/java/lc/astro/db/AstroSql.java b/java/lc-astro/src/main/java/lc/astro/db/AstroSql.java deleted file mode 100644 index a87c8399daea0a965694f13fcc7b810985496fe2..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/db/AstroSql.java +++ /dev/null @@ -1,16 +0,0 @@ -package lc.astro.db; - -import com.mchange.v2.c3p0.ComboPooledDataSource; - -import java.beans.PropertyVetoException; - -public class AstroSql { - public static ComboPooledDataSource getDataSource() throws PropertyVetoException { - ComboPooledDataSource cpds = new ComboPooledDataSource(); - cpds.setDriverClass("com.mysql.cj.jdbc.Driver"); - cpds.setJdbcUrl("jdbc:mysql://localhost/astro"); - cpds.setUser("astro"); - cpds.setPassword(System.getenv("BADPASSWORD")); - return cpds; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/db/AstroStore.java b/java/lc-astro/src/main/java/lc/astro/db/AstroStore.java deleted file mode 100644 index 5f6f9e05efc783ac01544fc3c7ed48aa134f0e16..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/db/AstroStore.java +++ /dev/null @@ -1,63 +0,0 @@ -package lc.astro.db; - -import lc.astro.catalog.CatalogObject; -import lc.astro.fits.Exposure; -import lc.astro.scheduler.Tasking; -import lc.astro.unit.SphericalCoordinate; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.time.Instant; -import java.util.ArrayList; -import java.util.List; - -/** - * This class provides access to a remote Astro schema store. This particular implementation supports MySQL. - * - * @author Alex Leigh - */ -public class AstroStore { - private final Connection con; - - public AstroStore(Connection con) { - this.con = con; - } - - /** - * Return a list of taskings to the caller. The taskings are the goals, so they have not had the actuals - * subtracted. - */ - public List getTaskings() throws SQLException { - ArrayList tasks = new ArrayList<>(); - - try (PreparedStatement ps = con.prepareStatement( - "SELECT a.id, a.nm, a.ra_deg, a.dec_deg, b.nm\n" + - "FROM ast_catalog_t a,\n" + - " ast_catalog_type_t b\n" + - "WHERE a.catalog_type_id = b.id\n" + - " AND (catalog_type_id = 13 OR catalog_type_id = 12)\n" + - " AND a.nm LIKE 'NGC%'")) { - try (ResultSet rs = ps.executeQuery()) { - while (rs.next()) { - int id = rs.getInt(1); - String nm = rs.getString(2); - double ra = rs.getDouble(3); - double dec = rs.getDouble(4); - String type = rs.getString(5); - - CatalogObject obj = new CatalogObject(nm, new SphericalCoordinate(ra, dec), type, id); - Tasking t = new Tasking(obj, Instant.now()); - t.putTasking(new Exposure(240, 200, 10, Exposure.KEY_HA), 200); - t.putTasking(new Exposure(240, 200, 10, Exposure.KEY_OIII), 200); - t.putTasking(new Exposure(240, 200, 10, Exposure.KEY_SII), 200); - tasks.add(t); - } - } - } - - return tasks; - } - -} diff --git a/java/lc-astro/src/main/java/lc/astro/fits/AstroSub.java b/java/lc-astro/src/main/java/lc/astro/fits/AstroSub.java deleted file mode 100644 index 33c6a180f517f89c5e92ee631d6aa1e2d059ce3c..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/fits/AstroSub.java +++ /dev/null @@ -1,280 +0,0 @@ -package lc.astro.fits; - -import lc.astro.catalog.CatalogObject; -import lc.astro.iraf.IRAF; -import lc.astro.iraf.Photometry; -import lc.astro.iraf.StarFindTask; -import lc.astro.unit.SphericalCoordinate; -import lc.astro.wcstools.Sky2XYExecutor; -import lc.astro.wcstools.Sky2XYTask; - -import java.nio.file.Path; -import java.time.Instant; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.UUID; - -/** - * This class represents the metadata for a sub. Typically, the sub would be stored somewhere on disk in a FITS - * file. - *

- * Limitations: - *

- * Note that there is not perfect fidelity between the meta-information in this class, and the information - * in an actual FITS header, so it is not possible to accurately re-create a FITS header using the information - * cotnained within this class. - * - * @author Alex Leigh - */ - -/* -2020-12-08T02:48:50,237 {} INFO FitsScanner:87 - info(): header: COMMENT Generated by INDI -2020-12-08T02:48:50,237 {} INFO FitsScanner:87 - info(): header: GAIN = 300. / Gain -2020-12-08T02:48:50,237 {} INFO FitsScanner:87 - info(): header: OFFSET = 10. / Offset -2020-12-08T02:48:50,237 {} INFO FitsScanner:87 - info(): header: END -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: SIMPLE = T / file does conform to FITS standard -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: BITPIX = 16 / number of bits per data pixel -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: NAXIS = 2 / number of data axes -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: NAXIS1 = 4656 / length of data axis 1 -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: NAXIS2 = 3520 / length of data axis 2 -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: EXTEND = T / FITS dataset may contain extensions -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: COMMENT FITS (Flexible Image Transport System) format is defined in 'Astronomy -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: COMMENT and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: BZERO = 32768 / offset data range to that of unsigned short -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: BSCALE = 1 / default scaling factor -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: ROWORDER= 'TOP-DOWN' / Row Order -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: INSTRUME= 'ZWO CCD ASI1600MM Pro' / CCD Name -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: TELESCOP= 'EQMod Mount' / Telescope name -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: OBSERVER= 'Unknown ' / Observer name -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: OBJECT = 'NGC_6960' / Object name -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: EXPTIME = 2.400000E+02 / Total Exposure Time (s) -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: CCD-TEMP= -2.80E+01 / CCD Temperature (Celsius) -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: PIXSIZE1= 3.800000E+00 / Pixel Size 1 (microns) -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: PIXSIZE2= 3.800000E+00 / Pixel Size 2 (microns) -2020-12-08T02:48:50,238 {} INFO FitsScanner:87 - info(): header: XBINNING= 1 / Binning factor in width -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: YBINNING= 1 / Binning factor in height -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: XPIXSZ = 3.800000E+00 / X binned pixel size in microns -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: YPIXSZ = 3.800000E+00 / Y binned pixel size in microns -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: FRAME = 'Light ' / Frame Type -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: IMAGETYP= 'Light Frame' / Frame Type -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: FILTER = 'SII ' / Filter -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: FOCALLEN= 6.00E+02 / Focal Length (mm) -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: APTDIA = 8.00E+01 / Telescope diameter (mm) -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: SCALE = 1.306567E+00 / arcsecs per pixel -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: SITELAT = 3.365110E+01 / Latitude of the imaging site in degrees -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: SITELONG= -1.119350E+02 / Longitude of the imaging site in degrees -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: AIRMASS = 1.442554E+00 / Airmass -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: OBJCTRA = '20 46 00.58' / Object J2000 RA in Hours -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: OBJCTDEC= '30 14 57.93' / Object J2000 DEC in Degrees -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: RA = 3.115024E+02 / Object J2000 RA in Degrees -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: DEC = 3.024943E+01 / Object J2000 DEC in Degrees -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: EQUINOX = 2000 / Equinox -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CRVAL1 = 3.1150242536E+02 / CRVAL1 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CRVAL2 = 3.0249425947E+01 / CRVAL1 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: RADECSYS= 'FK5 ' / RADECSYS -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CTYPE1 = 'RA---TAN' / CTYPE1 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CTYPE2 = 'DEC--TAN' / CTYPE2 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CRPIX1 = 2.3280000000E+03 / CRPIX1 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CRPIX2 = 1.7600000000E+03 / CRPIX2 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: SECPIX1 = 1.3065666503E+00 / SECPIX1 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: SECPIX2 = 1.3065666503E+00 / SECPIX2 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CDELT1 = 3.6293518063E-04 / CDELT1 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CDELT2 = 3.6293518063E-04 / CDELT2 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CROTA1 = 2.9975000000E+01 / CROTA1 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: CROTA2 = 2.9975000000E+01 / CROTA2 -2020-12-08T02:48:50,239 {} INFO FitsScanner:87 - info(): header: DATE-OBS= '2020-11-29T03:20:21.997' / UTC start date of observation - */ - -public class AstroSub { - private final UUID id; - private final String telescope; - private final String instrument; - private final AstroSubType frameType; - private final double length; - private final int gain; - private final int offset; - private final String filter; - private final SphericalCoordinate obj; - private final Instant time; - // Must not be included in equals()! - private final Path path; - private final double ccdTemp; - private Photometry photometry; - private final int heightPx; - private final int widthPx; - - public AstroSub(UUID id, String telescope, String instrument, AstroSubType frameType, - double length, int gain, int offset, - String filter, double objRa, double objDec, Instant time, Path path, double ccdTemp, int heightPx, int widthPx) { - this.id = id; - this.telescope = telescope; - this.instrument = instrument; - this.frameType = frameType; - this.length = length; - this.gain = gain; - this.offset = offset; - this.filter = filter; - this.time = time; - this.path = path; - this.ccdTemp = ccdTemp; - this.heightPx = heightPx; - this.widthPx = widthPx; - obj = new SphericalCoordinate(objRa, objDec); - } - - /** - * Return the photometry associated with this sub. This call is only valid in the contest of a light sub. - */ - public Photometry getPhotometry() throws Exception { - if (photometry == null) { - IRAF iraf = new IRAF(); - StarFindTask starfind = new StarFindTask(id, path.getParent().toString()); - iraf.exec(starfind); - photometry = starfind.getPhotometry(); - } - - return photometry; - } - - public Instant getTime() { - return time; - } - - public Path getPath() { - return path; - } - - public double getCcdTemp() { - return ccdTemp; - } - - public UUID getId() { - return id; - } - - @Override - public String toString() { - return "AstroSub{" + - "id=" + id + - ", telescope='" + telescope + '\'' + - ", instrument='" + instrument + '\'' + - ", frameType=" + frameType + - ", length=" + length + - ", gain=" + gain + - ", offset=" + offset + - ", filter='" + filter + '\'' + - ", obj=" + obj + - ", time=" + time + - ", path=" + path + - ", ccdTemp=" + ccdTemp + - ", photometry=" + photometry + - ", heightPx=" + heightPx + - ", widthPx=" + widthPx + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - AstroSub astroSub = (AstroSub) o; - return Double.compare(astroSub.length, length) == 0 && - gain == astroSub.gain && - offset == astroSub.offset && - Double.compare(astroSub.ccdTemp, ccdTemp) == 0 && - Objects.equals(id, astroSub.id) && - Objects.equals(telescope, astroSub.telescope) && - Objects.equals(instrument, astroSub.instrument) && - frameType == astroSub.frameType && - Objects.equals(filter, astroSub.filter) && - Objects.equals(obj, astroSub.obj) && - Objects.equals(time, astroSub.time) && - Objects.equals(path, astroSub.path); - } - - @Override - public int hashCode() { - return Objects.hash(id, telescope, instrument, frameType, length, gain, offset, filter, obj, time, path, ccdTemp); - } - - /** - * Return the {@link SphericalCoordinate} indicating the RA and Declination in J2000 which was used to center - * this sub. Note that this coordinate may be wrong within the pointing accuracy of the telescope equipment - * which was used to make the observation. - */ - public SphericalCoordinate getObj() { - return obj; - } - - /** - * Return a new {@link Exposure} object which represents the exposure configuration of this sub. - * - * @return The new exposure. - */ - public Exposure getExposure() { - return new Exposure(length, gain, offset, filter); - } - - /** - * Return the filter which was used to take this sub. The caller should not make too many assumptions about the - * business meaning of the returned filter, for example, it would be a mistake to assume that all Sodium filters - * return "SII". The actual filter values could be instrument, site, or installation-specific. - */ - public String getFilter() { - return filter; - } - - public String getTelescope() { - return telescope; - } - - public String getInstrument() { - return instrument; - } - - public AstroSubType getFrameType() { - return frameType; - } - - public double getLengthSeconds() { - return length; - } - - public int getGain() { - return gain; - } - - public int getOffset() { - return offset; - } - - /** - * Determine of any of the provide {@link CatalogObject} objects are contained within the frame of this - * sub. The list of objects which match the frame is returned to the caller. - */ - public List contains(List objs) throws Exception { - Sky2XYTask task = new Sky2XYTask(objs); - Sky2XYExecutor exec = new Sky2XYExecutor(path.toString(), task.getTmpFile().getAbsolutePath()); - exec.exec(task); - return task.getMatched(); - } - - /** - * Returns true if this sub contains the provided object within the frame. - */ - public boolean contains(CatalogObject obj) throws Exception { - ArrayList lst = new ArrayList<>(); - lst.add(obj); - List has = contains(lst); - return has.contains(obj); - } - - public int getHeightPx() { - return heightPx; - } - - public int getWidthPx() { - return widthPx; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/fits/AstroSubType.java b/java/lc-astro/src/main/java/lc/astro/fits/AstroSubType.java deleted file mode 100644 index db67e42bc60cc554e286530d1d767618510f66aa..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/fits/AstroSubType.java +++ /dev/null @@ -1,5 +0,0 @@ -package lc.astro.fits; - -public enum AstroSubType { - LIGHT, DARK, BIAS, FLAT -} diff --git a/java/lc-astro/src/main/java/lc/astro/fits/AstroSubUtil.java b/java/lc-astro/src/main/java/lc/astro/fits/AstroSubUtil.java deleted file mode 100644 index 74da9a8dac41e6ce746b13d7b98f47716fa17301..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/fits/AstroSubUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package lc.astro.fits; - -import java.time.Duration; -import java.time.Instant; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; - -/** - * Utility methods for working with {@link AstroSub} objects. - * - * @author Jack Martin - */ -public class AstroSubUtil { - - /** - * Attempt to locate up to count subs from the provided {@link List} of subs which were taken closest - * in time to the provided time. A matching sub may be before, after, or on the provided time. - */ - public List findNearest(List subs, Instant time, int count) { - List sortedSubs = new ArrayList<>(); - - subs.sort(Comparator.comparing(astroSub -> Math.abs(Duration.between(astroSub.getTime(), time).toSeconds()))); - - for (int i = 0; i < count && i < subs.size(); i++) { - sortedSubs.add(subs.get(i)); - } - - return sortedSubs; - } - - /** - * Given a Light sub and a list of potential calibration subs, generate a list of calibrations which are related - * to the light frame. A calibration frame is related if it matches, based on its type, the following rules: - *

- * Darks: A dark sub matches if the temperature, exposure length, gain, and offset settings are the same. - * Flats: A flat sub matches if the filter is the same. - * Bias: A bias sub matches if the temperature, gain and offset are the same. - */ - public List matchCalibrations(AstroSub light, List calibrations) { - ArrayList matches = new ArrayList<>(); - - for (AstroSub sub : calibrations) { - switch (sub.getFrameType()) { - case DARK: - if (sub.getCcdTemp() == light.getCcdTemp() && sub.getLengthSeconds() == light.getLengthSeconds() - && sub.getGain() == light.getGain() && sub.getOffset() == light.getOffset()) { - matches.add(sub); - } - break; - case FLAT: - if (sub.getFilter().equals(light.getFilter())) { - matches.add(sub); - } - break; - case BIAS: - if (sub.getCcdTemp() == light.getCcdTemp() && sub.getGain() == light.getGain() - && sub.getOffset() == light.getOffset()) { - - matches.add(sub); - } - break; - } - } - return matches; - } - -} \ No newline at end of file diff --git a/java/lc-astro/src/main/java/lc/astro/fits/Exposure.java b/java/lc-astro/src/main/java/lc/astro/fits/Exposure.java deleted file mode 100644 index a78eccb25e6b0d3cda8d12b94735b8e3ce67b28c..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/fits/Exposure.java +++ /dev/null @@ -1,72 +0,0 @@ -package lc.astro.fits; - -import java.util.Objects; - -/** - * This class represents an exposure configuration. - * - * @author Alex Leigh - */ -public class Exposure { - public static final String KEY_RED = "Red"; - public static final String KEY_GREEN = "Green"; - public static final String KEY_BLUE = "Blue"; - public static final String KEY_LUMINANCE = "LPR"; - public static final String KEY_HA = "H_Alpha"; - public static final String KEY_OIII = "OIII"; - public static final String KEY_SII = "SII"; - - private final double exp; - private final int gain; - private final int offset; - private final String filter; - - public Exposure(double exp, int gain, int offset, String filter) { - this.exp = exp; - this.gain = gain; - this.offset = offset; - this.filter = filter; - } - - public double getLength() { - return exp; - } - - public int getGain() { - return gain; - } - - public int getOffset() { - return offset; - } - - public String getFilter() { - return filter; - } - - @Override - public String toString() { - return "Exposure{" + - "exp=" + exp + - ", gain=" + gain + - ", offset=" + offset + - ", filter='" + filter + '\'' + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Exposure exposure = (Exposure) o; - return Double.compare(exposure.exp, exp) == 0 && - gain == exposure.gain && - offset == exposure.offset && - Objects.equals(filter, exposure.filter); - } - - @Override - public int hashCode() { - return Objects.hash(exp, gain, offset, filter); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/fits/ExposureCounter.java b/java/lc-astro/src/main/java/lc/astro/fits/ExposureCounter.java deleted file mode 100644 index 6bfd3045090cc1bc2af2c2f16f9f40349e704340..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/fits/ExposureCounter.java +++ /dev/null @@ -1,37 +0,0 @@ -package lc.astro.fits; - -import java.util.HashMap; -import java.util.List; - -/** - * This class counts unique exposures in a given set. - * - * @author Alex Leigh - */ -public class ExposureCounter { - private HashMap counter = new HashMap<>(); - - public void count(List subs) { - for (AstroSub sub : subs) { - Integer cnt = counter.get(sub.getExposure()); - if (cnt == null) { - counter.put(sub.getExposure(), 1); - } else { - counter.put(sub.getExposure(), cnt + 1); - } - } - } - - public int getCount(Exposure exp) { - Integer cnt = counter.get(exp); - if (cnt == null) return 0; - return cnt; - } - - @Override - public String toString() { - return "FilterCounter{" + - "counter=" + counter + - '}'; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/fits/FitsScanner.java b/java/lc-astro/src/main/java/lc/astro/fits/FitsScanner.java deleted file mode 100644 index 9ac797aba58da285fe4579814866dc24e45d4f5a..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/fits/FitsScanner.java +++ /dev/null @@ -1,183 +0,0 @@ -package lc.astro.fits; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.ListUtil; -import lc.mecha.util.Snavig; -import nom.tam.fits.Fits; -import nom.tam.fits.FitsException; -import nom.tam.fits.Header; -import nom.tam.fits.HeaderCard; -import nom.tam.util.Cursor; -import org.apache.commons.io.FilenameUtils; - -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -/** - * This class scans a directory hierarchy for .fits files, and builds a catalog of - * {@link AstroSub} objects describing the files it finds. - * - * @author Alex Leigh - */ -public class FitsScanner { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(FitsScanner.class); - private ArrayList subs = new ArrayList<>(); - - public static void debugFits(Fits f) throws FitsException, IOException { - for (Cursor it = f.getHDU(0).getHeader().iterator(); it.hasNext(); ) { - HeaderCard c = it.next(); - logger.info("header: {}", c); - } - } - - public void removeDupes(Path path) throws IOException { - List subs = scanPath(path); - List uniq = new ArrayList<>(); - List dupes = new ArrayList<>(); - - ListUtil.unique(uniq, dupes, subs); - - logger.info("Found subs. [count: {}] [uniq: {}] [dupe: {}]", - subs.size(), uniq.size(), dupes.size()); - - for (AstroSub sub : dupes) { - logger.info("Removing duplicate sub. [fn: {}]", sub.getPath()); - sub.getPath().toFile().delete(); - - } - } - - public void dump(Path fitsFile) throws FitsException, IOException { - Fits f = new Fits(fitsFile.toString()); - Header header = f.getHDU(0).getHeader(); - logger.info("Header: {}", header); - } - - /** - * Ingest the given files into the database. - */ - - // TODO This should also read the sub into the subs array - public void ingest(Path dstPath, Path srcPath) throws IOException { - Files.walkFileTree(srcPath, new SimpleFileVisitor<>() { - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - if (file.toString().endsWith(".fits") || file.toString().endsWith(".fit")) { - try { - Fits f = new Fits(file.toAbsolutePath().toString()); - f.getHDU(0).getHeader(); - - // If we got this far, the file was probably legal. - - UUID fileId = UUID.randomUUID(); - Path newFn = dstPath.resolve(fileId + ".fits"); - - logger.info("Moving file: {} {}", file, newFn); - - Files.move(file, newFn); - - } catch (FitsException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return FileVisitResult.CONTINUE; - } - }); - } - - public void scan(Path base) throws IOException { - // TODO Implement support for incrementally adding / multiple paths. - subs.clear(); - - Files.walkFileTree(base, new SimpleFileVisitor<>() { - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - if (file.toString().endsWith(".fits") || file.toString().endsWith(".fit")) { - try { - Fits f = new Fits(file.toAbsolutePath().toString()); - Header header = f.getHDU(0).getHeader(); - - UUID id = UUID.fromString(FilenameUtils.removeExtension(file.getFileName().toString())); - - AstroSub sub = new AstroSub( - id, header.getStringValue("TELESCOP"), - header.getStringValue("INSTRUME"), - AstroSubType.valueOf(header.getStringValue("FRAME").toUpperCase()), - header.getDoubleValue("EXPTIME"), - header.getIntValue("GAIN"), - header.getIntValue("OFFSET"), - header.getStringValue("FILTER"), - header.getDoubleValue("RA"), - header.getDoubleValue("DEC"), - Snavig.convertToInstant(header.getStringValue("DATE-OBS") + "Z"), - file, header.getDoubleValue("CCD-TEMP"), - header.getIntValue("NAXIS2"), - header.getIntValue("NAXIS1")); - subs.add(sub); - } catch (FitsException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return FileVisitResult.CONTINUE; - } - }); - } - - /** - * Scan the given path recursively for fits-format images, and generate a list of {@link AstroSub} - * objects. A file will be considered if it ends in .fit or .fits and contains - * a valid FITS header. - */ - public List scanPath(Path base) throws IOException { - ArrayList result = new ArrayList<>(); - - Files.walkFileTree(base, new SimpleFileVisitor<>() { - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - if (file.toString().endsWith(".fits") || file.toString().endsWith(".fit")) { - try { - Fits f = new Fits(file.toAbsolutePath().toString()); - Header header = f.getHDU(0).getHeader(); - - // debugFits(f); - UUID id = UUID.fromString(FilenameUtils.removeExtension(file.getFileName().toString())); - - AstroSub sub = new AstroSub( - id, header.getStringValue("TELESCOP"), - header.getStringValue("INSTRUME"), - AstroSubType.valueOf(header.getStringValue("FRAME").toUpperCase()), - header.getDoubleValue("EXPTIME"), - header.getIntValue("GAIN"), - header.getIntValue("OFFSET"), - header.getStringValue("FILTER"), - header.getDoubleValue("RA"), - header.getDoubleValue("DEC"), - Snavig.convertToInstant(header.getStringValue("DATE-OBS") + "Z"), - file, header.getDoubleValue("CCD-TEMP"), header.getIntValue("NAXIS2"), - header.getIntValue("NAXIS1")); - result.add(sub); - } catch (FitsException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return FileVisitResult.CONTINUE; - } - }); - return result; - } - - public ArrayList getSubs() { - return subs; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/fits/SubManifest.java b/java/lc-astro/src/main/java/lc/astro/fits/SubManifest.java deleted file mode 100644 index 03a8b5e3e3785173ae0afafc26cee8649fdd4d1d..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/fits/SubManifest.java +++ /dev/null @@ -1,46 +0,0 @@ -package lc.astro.fits; - -import java.time.Duration; -import java.util.ArrayList; - -/** - * A manifest of {@link AstroSub} objects. - * - * @author Alex Leigh - */ -public class SubManifest { - private final ArrayList subs; - - public SubManifest(ArrayList subs) { - this.subs = subs; - } - - public Duration duration() { - long exp = 0; - for (AstroSub s : subs) { - exp += (long) s.getLengthSeconds(); - } - return Duration.ofSeconds(exp); - } - - public int count() { - return subs.size(); - } - - public ExposureCounter filterCount() { - ExposureCounter fc = new ExposureCounter(); - fc.count(subs); - return fc; - } - - public int size() { - return subs.size(); - } - - @Override - public String toString() { - return "SubManifest{" + - "subs=" + subs + - '}'; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/iraf/IRAF.java b/java/lc-astro/src/main/java/lc/astro/iraf/IRAF.java deleted file mode 100644 index 68e5b2acfa9060db59d2d5cb2d8102617623156c..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/iraf/IRAF.java +++ /dev/null @@ -1,14 +0,0 @@ -package lc.astro.iraf; - -import lc.mecha.exec.BatchExecutor; - -/** - * This class implements a Java-based wrapper around a locally installed iraf distribution. - * - * @author Alex Leigh - */ -public class IRAF extends BatchExecutor { - public IRAF() { - super("/opt/iraf/iraf/bin/cl.e", new String[]{}); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/iraf/IRAFApp.java b/java/lc-astro/src/main/java/lc/astro/iraf/IRAFApp.java deleted file mode 100644 index 4c4c22d90bccdd85c532ba74237068fd275d9bc1..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/iraf/IRAFApp.java +++ /dev/null @@ -1,27 +0,0 @@ -package lc.astro.iraf; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.UUID; - -/** - * Test application for the IRAF script execution facility, mostly used for development purposes. - * - * @author Alex Leigh - */ -public class IRAFApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(IRAFApp.class); - - public static void main(String[] args) throws Exception { - IRAF iraf = new IRAF(); - StarFindTask starfind = new StarFindTask(UUID.fromString("f4fc0bf8-808d-48a7-a76b-39c671741f50"), - "/Volumes/cal326/adb"); - - iraf.exec(starfind); - - logger.info("Stars. [avgHwhm: {}] [cnt: {}]", - starfind.getPhotometry().averageHWHM(), - starfind.getPhotometry().getCount()); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/iraf/Photometry.java b/java/lc-astro/src/main/java/lc/astro/iraf/Photometry.java deleted file mode 100644 index 4bebacf89366dcadafc942be4dd68e7cea2de1d8..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/iraf/Photometry.java +++ /dev/null @@ -1,61 +0,0 @@ -package lc.astro.iraf; - -import java.util.ArrayList; -import java.util.List; - -/** - * This class contains photometric data for a astronomical science image. - * - * @author Alex Leigh - */ -public class Photometry { - private final List stars = new ArrayList<>(); - - - public void addStar(StarInfo star) { - stars.add(star); - } - - public int getCount() { - return stars.size(); - } - - public double averageHWHM() { - double x = 0; - for (StarInfo star : stars) { - x += star.getHwhm(); - } - return x / stars.size(); - } - - public double averageFWHM() { - return averageHWHM() * 2; - } - - public double averageSharp() { - double x = 0; - for (StarInfo star : stars) { - x += star.getSharp(); - } - return x / stars.size(); - } - - public double averageRound() { - double x = 0; - for (StarInfo star : stars) { - x += star.getRound(); - } - return x / stars.size(); - } - - public List getStars() { - return stars; - } - - @Override - public String toString() { - return "Photometry{" + - "stars=" + stars + - '}'; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/iraf/StarFindTask.java b/java/lc-astro/src/main/java/lc/astro/iraf/StarFindTask.java deleted file mode 100644 index 866b9fc4a5b4ba5f879c0be7c88a09b288139fb1..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/iraf/StarFindTask.java +++ /dev/null @@ -1,86 +0,0 @@ -package lc.astro.iraf; - -import au.com.bytecode.opencsv.CSVReader; -import lc.mecha.exec.VelocityTask; -import lc.mecha.util.StringUtil; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.Reader; -import java.util.List; -import java.util.UUID; - -/** - * Starfind searches the input image for local density maxima with half-widths at half-maxima of - * hwhmpsf and peak amplitudes greater than ~threshold above the local - * background, and stores the result in an array of {@link StarInfo} objects. - * - * @author Alex Leigh - */ -public class StarFindTask extends VelocityTask { - private final UUID imageUUID; - private final String workDir; - private final File tmpFile = File.createTempFile("leigh-astro", "txt"); - private final Photometry photometry = new Photometry(); - - public StarFindTask(UUID imageUUID, String workDir) throws IOException { - super("/lc/astro/iraf/starfind.vm"); - this.imageUUID = imageUUID; - this.workDir = workDir; - } - - @SuppressWarnings("unused") - public UUID getImageUUID() { - return imageUUID; - } - - public Photometry getPhotometry() { - return photometry; - } - - - @SuppressWarnings("unused") - public String getWorkDir() { - return workDir; - } - - @SuppressWarnings("unused") - public File getTmpFile() { - return tmpFile; - } - - @Override - public String toString() { - return "StarFindTask{" + - "imageUUID=" + imageUUID + - ", workDir='" + workDir + '\'' + - ", tmpFile=" + tmpFile + - ", photometry=" + photometry + - "} " + super.toString(); - } - - @Override - public void finished(String result) throws IOException { - super.finished(result); - Reader in = new FileReader(tmpFile); - - /* - * # Columns - * # 1: X 2: Y - * # 3: Mag 4: Area - * # 5: Hwhm 6: Roundness - * # 7: Pa 8: Sharpness - */ - - try (CSVReader reader = new CSVReader(in, ' ')) { - String[] record; - while ((record = reader.readNext()) != null) { - List rec = StringUtil.makeList(record); - if (rec.size() == 0) continue; - if (rec.get(0).equals("#")) continue; - photometry.addStar(new StarInfo(rec)); - } - } - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/iraf/StarInfo.java b/java/lc-astro/src/main/java/lc/astro/iraf/StarInfo.java deleted file mode 100644 index ba5583c9346e3a596c7eaca2ba9219ba6eb87a23..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/iraf/StarInfo.java +++ /dev/null @@ -1,103 +0,0 @@ -package lc.astro.iraf; - -import java.util.List; -import java.util.Objects; - -public class StarInfo { - private final double x; - private final double y; - private final double mag; - private final double area; - private final double hwhm; - private final double round; - private final double pa; - private final double sharp; - - public StarInfo(double x, double y, double mag, double area, double hwhm, double round, double pa, double sharp) { - this.x = x; - this.y = y; - this.mag = mag; - this.area = area; - this.hwhm = hwhm; - this.round = round; - this.pa = pa; - this.sharp = sharp; - } - - public StarInfo(List lst) { - this.x = Double.parseDouble(lst.get(0)); - this.y = Double.parseDouble(lst.get(1)); - this.mag = Double.parseDouble(lst.get(2)); - this.area = Double.parseDouble(lst.get(3)); - this.hwhm = Double.parseDouble(lst.get(4)); - this.round = Double.parseDouble(lst.get(5)); - this.pa = Double.parseDouble(lst.get(6)); - this.sharp = Double.parseDouble(lst.get(7)); - } - - public double getX() { - return x; - } - - public double getY() { - return y; - } - - public double getMag() { - return mag; - } - - public double getArea() { - return area; - } - - public double getHwhm() { - return hwhm; - } - - public double getRound() { - return round; - } - - public double getPa() { - return pa; - } - - public double getSharp() { - return sharp; - } - - @Override - public String toString() { - return "StarInfo{" + - "x=" + x + - ", y=" + y + - ", mag=" + mag + - ", area=" + area + - ", hwhm=" + hwhm + - ", round=" + round + - ", pa=" + pa + - ", sharp=" + sharp + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - StarInfo starInfo = (StarInfo) o; - return Double.compare(starInfo.x, x) == 0 && - Double.compare(starInfo.y, y) == 0 && - Double.compare(starInfo.mag, mag) == 0 && - Double.compare(starInfo.area, area) == 0 && - Double.compare(starInfo.hwhm, hwhm) == 0 && - Double.compare(starInfo.round, round) == 0 && - Double.compare(starInfo.pa, pa) == 0 && - Double.compare(starInfo.sharp, sharp) == 0; - } - - @Override - public int hashCode() { - return Objects.hash(x, y, mag, area, hwhm, round, pa, sharp); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/scheduler/Objective.java b/java/lc-astro/src/main/java/lc/astro/scheduler/Objective.java deleted file mode 100644 index c15072d2f4544f60e9988a5f9e37115bbf8b6845..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/scheduler/Objective.java +++ /dev/null @@ -1,23 +0,0 @@ -package lc.astro.scheduler; - -import lc.astro.catalog.CatalogObject; - -/** - * This class represents a mission objective in the astronomy planning ecosystem. A mission consists of an - * observational goal. In the currently limited implementation, all objectives are said to be basic 80mm visual - * observations in the narrowband ranges of Ha, OIII, SII. - * - * @author Alex Leigh - */ -public class Objective { - private final CatalogObject object; - - public Objective(CatalogObject object) { - this.object = object; - } - - public CatalogObject getObject() { - return object; - } - -} \ No newline at end of file diff --git a/java/lc-astro/src/main/java/lc/astro/scheduler/Planner.java b/java/lc-astro/src/main/java/lc/astro/scheduler/Planner.java deleted file mode 100644 index bb4fb04d55ce2497a1c704cff3439b949d98d903..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/scheduler/Planner.java +++ /dev/null @@ -1,322 +0,0 @@ -package lc.astro.scheduler; - -import com.mchange.v2.c3p0.ComboPooledDataSource; -import lc.astro.app.SubLoaderApp; -import lc.astro.astrometrics.Astrometrics; -import lc.astro.astrometrics.Location; -import lc.astro.catalog.CatalogObject; -import lc.astro.catalog.StellarCatalog; -import lc.astro.db.AstroSql; -import lc.astro.db.AstroStore; -import lc.astro.fits.AstroSub; -import lc.astro.fits.Exposure; -import lc.astro.fits.FitsScanner; -import lc.astro.scheduler.ekos.EkosController; -import lc.astro.scheduler.ekos.EkosPlan; -import lc.astro.unit.Rect; -import lc.astro.unit.SphericalCoordinate; -import lc.mecha.cred.Credential; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.VelocityWatch; -import org.shredzone.commons.suncalc.SunTimes; - -import java.io.IOException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.sql.Connection; -import java.time.Instant; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -/** - * Implementation of an astronomy scheduler (tasker). - *

- * Night of 12/18/20 is the first ed80+moonlite+asi1200mm+efw night. - * - * @author Alex Leigh - */ -public class Planner implements Runnable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Planner.class); - private final Location slateHouse = new Location("Slate House", 33.65125, -111.93546); - public static final int UNLIMITED = -1; - private final FitsScanner scanner = new FitsScanner(); - private final Path adb = Paths.get("/Volumes/cal326/adb"); - private final StellarCatalog ngc = new StellarCatalog(); - private final boolean armed = true; - - public Planner() throws IOException { - scanner.scan(adb); - } - - /** - * Return a {@link Location} object representing Slate House in Phoenix, AZ. - */ - public Location getSlateHouse() { - return slateHouse; - } - - /** - * Return the {@link StellarCatalog} associated with this planner. - */ - public StellarCatalog getNgc() { - return ngc; - } - - /** - * Find subs that match the given target. - * - * @param coords - */ - public ArrayList find(SphericalCoordinate coords) { - ArrayList result = new ArrayList<>(); - - for (AstroSub sub : scanner.getSubs()) { - if (coords.isNear(sub.getObj())) result.add(sub); - } - - return result; - } - - - /** - * Determine the earliest and latest tasking dates for the given set of tasks, and print it to the screen. - * - * @param tasks The tasks to process. - */ - public void taskingInfo(List tasks) { - Instant earliest = null; - Instant latest = null; - - for (Tasking t : tasks) { - Instant start = t.getMinTime(); - Instant end = t.getMinTime().plus((long) t.getLength(), ChronoUnit.SECONDS); - - if (earliest == null) { - earliest = start; - } else { - if (start.isBefore(earliest)) earliest = start; - } - - if (latest == null) { - latest = end; - } else { - if (end.isAfter(latest)) latest = end; - } - } - - logger.info("Taskings. [from: {}] [to: {}]", earliest, latest); - } - - /** - * Create an observation plan for the given taskings, beginning at the given start time and running until - * the following sunrise, for the given observation location. The planner will treat taskings in priority - * order where a lower index in the list means a higher priority. - *

- * For every possible of usable observatory time, the scheduler will attempt to find an exposure. For example, - * if the first tasking can run, it will. If it cannot due to observation limitations then the second tasking - * will be evaluated, etc. This is re-evaluated on a per-exposure basis, so if 30 exposures are desired for B, - * but A becomes available 15 exposures in, the 16th exposure will be of A. - * - * limit specifies how many taskings to produce a plan for. If a limit is set, then the plan will - * only include that many tasks, and therefore will not include the entire possible observation period. This is - * required to produce single-shot jobs for EKOS to avoid imperfections in their scheduler implementation. To - * create an unlimited number of taskings, set this value to Scheduler.UNLIMITED. - */ - public List plan(List todo, Instant startTime, Location location, int limit, Instant endTime) { - Rect balcony = new Rect(new SphericalCoordinate(225, 20), new SphericalCoordinate(330, 38)); - Instant simTime = startTime; - - logger.info("Generating observation plan. [startTime: {}] [endTime: {}] [limit: {}]", - startTime, endTime, limit); - - // These are the commands we'll schedule - ArrayList commands = new ArrayList<>(); - - VelocityWatch vw = new VelocityWatch(logger); - - Tasking lastCmd = null; - - while (simTime.isBefore(endTime)) { - vw.event("tick"); - - SunTimes yesterdayTimes = SunTimes.compute() - .on(Date.from(simTime.minus(1, ChronoUnit.DAYS))) // set a date - .at(location.getLat(), location.getLng()) // set a location - .execute(); // get the results - - SunTimes todayTimes = SunTimes.compute() - .on(Date.from(simTime)) // set a date - .at(location.getLat(), location.getLng()) // set a location - .execute(); // get the results - - logger.debug("Sim time: {} set {}", simTime, yesterdayTimes.getSet().toInstant()); - - // Is it daytime? - if (simTime.isAfter(yesterdayTimes.getSet().toInstant()) && - simTime.isBefore(todayTimes.getRise().toInstant())) { - vw.event("nightTick"); - - // Calculate MST for the schedule time - double mst = Astrometrics.meanSiderealTime(Date.from(simTime), (float) location.getLng()); - Exposure next = null; - - // Search for a tasking. We will take the first available for this timeslot, in priority order. - for (Tasking task : todo) { - // Determine if the object is visible - CatalogObject object = task.getCatalogObject(); - SphericalCoordinate taskObj = object.getJ2000Coordinate(); - - // Calculate the object position for this simTime - SphericalCoordinate apparent = - Astrometrics.calc(mst - taskObj.getX(), taskObj.getY(), location.getLat()); - - logger.info("Candidate object hcs: [apparent: {}] [obj: {}]", apparent, object); - - if (balcony.isWithin(apparent)) { - vw.event("visibleObj"); - logger.info("Object is visible at this time: [time: {}] [obj: {}]", simTime, object); - Exposure e = task.pop(); - if (e != null) { - next = e; - - Tasking newCmd = null; - - if (lastCmd != null && lastCmd.getCatalogObject().equals(object)) newCmd = lastCmd; - - if (newCmd == null) { - // Before we do this, check to see if we are at our limit already. - if (limit != UNLIMITED && commands.size() >= limit) { - // We are at our limit, so we need to exit now. - vw.status(); - return commands; - } - - newCmd = new Tasking(object, simTime); - commands.add(newCmd); - lastCmd = newCmd; - vw.event("tasking"); - } - - newCmd.increment(e); - logger.debug("Enqueue Exposure: {} {}", simTime, e); - break; - } - - // We might be done - are all taskings empty? - boolean empty = true; - for (Tasking t : todo) { - for (int cnt : t.getExposures().values()) { - if (cnt != 0) { - empty = false; - break; - } - } - if (empty == false) { - break; - } - } - - if (empty) { - logger.info("Depleted all tasks."); - vw.status(); - return commands; - } - - } else { - vw.event("rejectedObj"); - logger.debug("Object rejected, outside of viewport."); - } - } - - if (next == null) { - logger.debug("Ran out of available tasking. Skipping 30s."); - simTime = simTime.plus(30, ChronoUnit.SECONDS); - } else { - logger.debug("Skipping time for exposure: {}", next); - simTime = simTime.plus((long) next.getLength(), ChronoUnit.SECONDS); - } - } else { - // It's daytime. - vw.event("dayTick"); - simTime = simTime.plus(5, ChronoUnit.MINUTES); - } - } - - logger.info("End time reached. Stopping planning. [simTime: {}]", simTime); - - vw.status(); - // Note this is not the only exit point - return commands; - } - - @Override - public void run() { - // FIXME If EKOS is offline, the planner won't attempt to recover any FITS files that might be on the remote - // TODO: Move this to the TelescopeController class, since that's really what it is - try { - ComboPooledDataSource sql = AstroSql.getDataSource(); - Runtime run = Runtime.getRuntime(); - EkosController controller = new EkosController("telescope", - new Credential("aleigh", "foo")); - SubLoaderApp loader = new SubLoaderApp(); - - while (true) { - if (controller.isRunning() && armed) { - // TODO: Check if it is daylight - if it's daylight and EKOS is running a job, kill the job. - logger.info("EKOS is already running a job. Sleeping."); - } else { - if (armed) { - logger.info("Retrieving image data from remote controller..."); - Process proc = run.exec("/Volumes/cal326/astro/sync.sh"); - proc.waitFor(); - scanner.ingest(adb, Paths.get("/Volumes/cal326/astro")); - proc.waitFor(); - logger.info("Data transfer complete."); - loader.process(Path.of("/Volumes/cal326/adb")); - } - - scanner.scan(adb); - - List todo; - try (Connection con = sql.getConnection()) { - AstroStore store = new AstroStore(con); - todo = store.getTaskings(); - } - - logger.info("Generating observation plan..."); - - // Plan no more than 8 hours ahead, working on the premise no job will wind up that long - // and prevents us from planning into the next night. - List commands = plan(todo, Instant.now(), getSlateHouse(), 1, - Instant.now().plus(8, ChronoUnit.HOURS)); - - EkosPlan plan = controller.generate(commands, getSlateHouse()); - - logger.info("Generated observation plan. [sequences: {}]", plan.getSequences().size()); - - if (plan.getStartTime() != null && plan.getStartTime().isBefore(Instant.now())) { - if (armed) { - logger.info("Publishing plan to remote controller..."); - controller.scheduleStop(); - controller.publishScheduleFile(plan); - controller.loadSchedlule(plan.getId()); - controller.scheduleStart(); - } else { - logger.warn("Scheduler is disarmed. Would have transmitted schedule."); - } - logger.info("Observation plan published. Remote controller started."); - } else { - logger.info("Plan begins in the future or is empty. Sleeping. [start: {}]", - plan.getStartTime()); - } - } - Thread.sleep(60 * 1000); - } - } catch (Exception e) { - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/java/lc-astro/src/main/java/lc/astro/scheduler/Tasking.java b/java/lc-astro/src/main/java/lc/astro/scheduler/Tasking.java deleted file mode 100644 index 5c786752b147b5f933cbbb832b89b05b61bf6f0e..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/scheduler/Tasking.java +++ /dev/null @@ -1,165 +0,0 @@ -package lc.astro.scheduler; - -import lc.astro.catalog.CatalogObject; -import lc.astro.fits.Exposure; -import lc.astro.fits.ExposureCounter; -import lc.astro.fits.SubManifest; -import lc.mecha.lang.IdentifiedObject; - -import java.time.Instant; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -/** - * This class represents a specific tasking for stellar observation. - * - * @author Alex Leigh - */ - -/* WARNING : CHANGING METHOD NAMES HERE MUST MATCH IN THE .VM TEMPLATE FILES */ - -public class Tasking implements IdentifiedObject { - private final HashMap exposures = new HashMap<>(); - private final CatalogObject catalogObject; - private final UUID id = UUID.randomUUID(); - private final Instant startTime; - - /** - * Create a new tasking for the given catalog object, beginning no sooner than the given minimum time. A newly - * created tasking will be empty (will not have any exposures set). - */ - public Tasking(CatalogObject catalogObject, Instant minTime) { - // TODO: Add end-time for taskings which can expire - this.catalogObject = catalogObject; - this.startTime = minTime; - } - - /** - * Add an {@link Exposure} to this tasking. Note that any exposure configuration can only be present in the tasking - * once, so setting this replaces any existing value. - */ - public void putTasking(Exposure e, int cnt) { - exposures.put(e, cnt); - } - - /** - * Return the {@link Exposure} objects, if any, associated with this tasking. If no exposures are associated, - * an empty map is returned. The value of the map indicates the count of exposures tasked. - * - * @return The map of exposures. - */ - public HashMap getExposures() { - return exposures; - } - - /** - * Increment the {@link Exposure} of the given type by 1. If the exposure is not already in the tasking, it will be - * added with a value of 1. - * - * @param e The exposure to increment. - */ - public void increment(Exposure e) { - Integer cnt = exposures.get(e); - if (cnt == null) { - exposures.put(e, 1); - return; - } - - cnt++; - exposures.put(e, cnt); - } - - @Override - public String toString() { - return "Tasking{" + - "exposures=" + exposures + - ", catalogObject=" + catalogObject + - ", id=" + id + - ", startTime=" + startTime + - '}'; - } - - /** - * Return the minimum time for the task. This is the earliest the task could be considered eligible to be - * performed. - * - * @return The minimum time. - */ - public Instant getMinTime() { - return startTime; - } - - /** - * Given the provided manifest, determine what if anything is required in order to complete the tasking. - */ - public HashMap missing(SubManifest manifest) { - HashMap remaining = new HashMap<>(); - ExposureCounter fc = manifest.filterCount(); - - for (Map.Entry entry : exposures.entrySet()) { - int haveCnt = fc.getCount(entry.getKey()); - int need = entry.getValue() - haveCnt; - if (need > 0) remaining.put(entry.getKey(), need); - } - - return remaining; - } - - /** - * Return the length of time in seconds the entire task will take, if performed. - * - * @return The length of time in seconds. - */ - public double getLength() { - double length = 0; - for (Map.Entry exp : exposures.entrySet()) { - double len = exp.getValue() * exp.getKey().getLength(); - length += len; - } - return length; - } - - /** - * Return the {@link CatalogObject} this task refers to. - * - * @return The catalog object. - */ - public CatalogObject getCatalogObject() { - return catalogObject; - } - - /** - * Add all the given exposures, and their counts, to this object. If an exposure already exists which is stated - * in the provided map, its exposure count will be overwritten. - * - * @param exp The map of exposures and counts. - */ - public void putAll(Map exp) { - exposures.putAll(exp); - } - - /** - * Return the unique ID for this task. - */ - public UUID getId() { - return id; - } - - /** - * Pop an exposure off this tasking. This will decrement it from the task list. - */ - public Exposure pop() { - for (Map.Entry entry : exposures.entrySet()) { - Exposure exp = entry.getKey(); - int cnt = entry.getValue(); - - if (cnt > 0) { - cnt--; - exposures.put(exp, cnt); - return exp; - } - } - return null; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/scheduler/ekos/EkosController.java b/java/lc-astro/src/main/java/lc/astro/scheduler/ekos/EkosController.java deleted file mode 100644 index 881ccc705a5545f6803f672b9469a3017e0d3c67..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/scheduler/ekos/EkosController.java +++ /dev/null @@ -1,178 +0,0 @@ -package lc.astro.scheduler.ekos; - -import lc.astro.astrometrics.Location; -import lc.astro.scheduler.Tasking; -import lc.mecha.cred.Credential; -import lc.mecha.exec.ProcessExecution; -import lc.mecha.exec.SshExecutor; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.Snavig; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.Velocity; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; -import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; - -import java.io.ByteArrayInputStream; -import java.io.StringWriter; -import java.time.Instant; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * This class implements support for controlling a remote Ekos installation. - *

- * This class works over SSH and in companion with a python script on the remote controller, ekos.py, which - * must be installed in advance. The timezone of the controller must be UTC, or the scheduler will not generate times \ - * properly. This is due to the EKOS schedule xml lacking timezone. - * - * @author Alex Leigh - */ -public class EkosController { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EkosController.class); - public static final String KEY_TASKINGS = "taskings"; - public static final String KEY_TASKING = "tasking"; - public static final String KEY_CONTROLLER = "controller"; - public static final String KEY_LOCATION = "location"; - - private final String hostname; - private final Credential credential; - - public EkosController(String hostname, Credential credential) { - this.hostname = hostname; - this.credential = credential; - } - - /** - * Stop the remote scheduler in EKOS. If jobs were running, they will be marked as Aborted. This is the same - * behavior as hitting the stop button in the EKOS job window on the remote controller. - */ - public void scheduleStop() throws Exception { - try (SshExecutor ssh = new SshExecutor(hostname, 22, credential.getUsername(), credential.getPassword())) { - ssh.execute("/home/aleigh/dbus/ekos.py", new String[]{"--stop_scheduler"}); - } - } - - /** - * Start the remote scheduler in EKOS. This is the same behavior as hitting the start button in the EKOS job - * window on the remote controller. - */ - public void scheduleStart() throws Exception { - try (SshExecutor ssh = new SshExecutor(hostname, 22, credential.getUsername(), credential.getPassword())) { - ssh.execute("/home/aleigh/dbus/ekos.py", new String[]{"--start_scheduler"}); - } - } - - /** - * Reset the status of all the jobs in EKOS. This is the same behavior as hitting the refresh button on the EKOS - * kob window in the remote controller. - */ - public void schedulerReset() throws Exception { - try (SshExecutor ssh = new SshExecutor(hostname, 22, credential.getUsername(), credential.getPassword())) { - ssh.execute("/home/aleigh/dbus/ekos.py", new String[]{"--reset_scheduler"}); - } - } - - /** - * Returns true if EKOS is currently running on the remote controller. If a schedule is running, - * this does not necessarily mean that the telescope is actively operating, rather, that a job is at least - * scheduled and the EKOS scheduler is running. It could be waiting for the job to complete, or there could be - * a mechanical or other error with the telescope (for example, it is caught in a plate solving loop). - */ - public boolean isRunning() throws Exception { - try (SshExecutor ssh = new SshExecutor(hostname, 22, credential.getUsername(), credential.getPassword())) { - ProcessExecution pr = ssh.execute("/home/aleigh/dbus/status.sh"); - String result = pr.drainInput(); - int x = Snavig.convertToInteger(result); - if (x == 2) return true; - return false; - } - } - - /** - * Return the temporary ID that will be used on the controller for a file of the given UUID. This is currently - * setup to generate files in the /tmp directory. - */ - public static String buildFilename(UUID id) { - return "/tmp/ekos-" + id + ".xml"; - } - - /** - * Publish a schedule file to the remote controller. - */ - public void publishScheduleFile(EkosPlan plan) throws Exception { - try (SshExecutor ssh = new SshExecutor(hostname, 22, credential.getUsername(), credential.getPassword())) { - // First we publish the sequences. - for (Map.Entry sequence : plan.getSequences().entrySet()) { - String seqFn = buildFilename(sequence.getKey()); - byte[] seqData = sequence.getValue().getBytes(); - ssh.upload(seqFn, new ByteArrayInputStream(seqData), seqData.length); - } - String schedFn = buildFilename(plan.getId()); - byte[] schedData = plan.getSchedule().getBytes(); - ssh.upload(schedFn, new ByteArrayInputStream(schedData), schedData.length); - } - } - - public void loadSchedlule(UUID id) throws Exception { - String schedFile = buildFilename(id); - try (SshExecutor ssh = new SshExecutor(hostname, 22, credential.getUsername(), credential.getPassword())) { - ssh.execute("/home/aleigh/dbus/ekos.py", new String[]{"--load_schedule", schedFile}); - } - } - - /** - * Generate a new {@link EkosPlan} for the given taskings. Note that the task configuration is subject to the - * limitations of the EKOS scheduler, so should only contain taskings which actually should be (and can be) - * completed in this run. - *

- * The plan will contain a single schedule entry for each tasking, and a separate sequence file for that - * tasking. The caller should take care not to duplicate taskings for the same object in the request. The plan - * will build properly, but EKOS may have problem processing such a plan. - */ - public EkosPlan generate(List taskings, Location location) { - Velocity.init(); - VelocityEngine ve = new VelocityEngine(); - ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); - ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName()); - - Template sequenceTemplate = ve.getTemplate("lc/astro/scheduler/ekos/sequence.vm"); - // Before we can create the schedule, we have to build sequences. - - HashMap sequenceFiles = new HashMap<>(); - - for (Tasking t : taskings) { - VelocityContext ctx = new VelocityContext(); - ctx.put(KEY_TASKING, t); - StringWriter sw = new StringWriter(); - sequenceTemplate.merge(ctx, sw); - sequenceFiles.put(t.getId(), sw.getBuffer().toString()); - } - - Template schedTemplate = ve.getTemplate("lc/astro/scheduler/ekos/schedule.vm"); - - VelocityContext context = new VelocityContext(); - context.put(KEY_TASKINGS, taskings); - context.put(KEY_CONTROLLER, this); - context.put(KEY_LOCATION, location); - StringWriter sw = new StringWriter(); - schedTemplate.merge(context, sw); - - // We need to know the earliest tasking. - Instant startTime = null; - for (Tasking t : taskings) { - if (startTime == null) { - startTime = t.getMinTime(); - } else { - if (t.getMinTime().isBefore(startTime)) startTime = t.getMinTime(); - } - } - - return new EkosPlan(sw.getBuffer().toString(), sequenceFiles, startTime); - } - -} diff --git a/java/lc-astro/src/main/java/lc/astro/scheduler/ekos/EkosPlan.java b/java/lc-astro/src/main/java/lc/astro/scheduler/ekos/EkosPlan.java deleted file mode 100644 index 9508b8aea97a43ad74f010ac770f35d734345a07..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/scheduler/ekos/EkosPlan.java +++ /dev/null @@ -1,58 +0,0 @@ -package lc.astro.scheduler.ekos; - -import lc.mecha.lang.IdentifiedObject; - -import java.time.Instant; -import java.util.HashMap; -import java.util.UUID; - -/** - * This class holds an Ekos execution plan, which may be published to an Ekos instance using the - * {@link EkosController} class. - *

- * The user should avoid tasking the same object multiple times, as this can cause problems with Ekos. Include - * a tasking only once, and then specify unique exposure sequences as required. - *

- * The startTime - * - * @author Alex Leigh - */ -public class EkosPlan implements IdentifiedObject { - private final String schedule; - private final HashMap sequences; - private final UUID id = UUID.randomUUID(); - private final Instant startTime; - - public EkosPlan(String schedule, HashMap sequences, Instant startTime) { - this.schedule = schedule; - this.sequences = sequences; - this.startTime = startTime; - } - - @Override - public UUID getId() { - return id; - } - - public Instant getStartTime() { - return startTime; - } - - public String getSchedule() { - return schedule; - } - - public HashMap getSequences() { - return sequences; - } - - @Override - public String toString() { - return "EkosPlan{" + - "schedule='" + schedule + '\'' + - ", sequences=" + sequences + - ", id=" + id + - ", startTime=" + startTime + - '}'; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/unit/DegreesMinutesSeconds.java b/java/lc-astro/src/main/java/lc/astro/unit/DegreesMinutesSeconds.java deleted file mode 100644 index 190f3562e9141cc01dd4f0271a161a3e43d5940d..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/unit/DegreesMinutesSeconds.java +++ /dev/null @@ -1,66 +0,0 @@ -package lc.astro.unit; - -import org.jastronomy.jsofa.JSOFA; - -import java.util.Objects; - -public class DegreesMinutesSeconds { - private final double degrees; - private final double minutes; - private final double seconds; - - public DegreesMinutesSeconds(double degrees) { - double xRads = Math.toRadians(degrees); - int[] idmsf = new int[4]; - - JSOFA.jauA2af(9, xRads, idmsf); - - this.degrees = idmsf[0]; - minutes = idmsf[1]; - seconds = idmsf[2]; - } - - public DegreesMinutesSeconds(double degrees, double minutes, double seconds) { - this.degrees = degrees; - this.minutes = minutes; - this.seconds = seconds; - } - - public String asString() { - return degrees + ":" + minutes + ":" + seconds; - } - - public double getDegrees() { - return degrees; - } - - public double getMinutes() { - return minutes; - } - - public double getSeconds() { - return seconds; - } - - @Override - public String toString() { - return "DegreesMinutesSeconds{" + - "degrees=" + degrees + - ", minutes=" + minutes + - ", seconds=" + seconds + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - DegreesMinutesSeconds that = (DegreesMinutesSeconds) o; - return Double.compare(that.degrees, degrees) == 0 && Double.compare(that.minutes, minutes) == 0 && Double.compare(that.seconds, seconds) == 0; - } - - @Override - public int hashCode() { - return Objects.hash(degrees, minutes, seconds); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/unit/HoursMinutesSeconds.java b/java/lc-astro/src/main/java/lc/astro/unit/HoursMinutesSeconds.java deleted file mode 100644 index 37326442e4f8726126b2be5a51277adf08840dad..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/unit/HoursMinutesSeconds.java +++ /dev/null @@ -1,66 +0,0 @@ -package lc.astro.unit; - -import org.jastronomy.jsofa.JSOFA; - -import java.util.Objects; - -public class HoursMinutesSeconds { - private final double hours; - private final double minutes; - private final double seconds; - - public HoursMinutesSeconds(double degrees) { - double xRads = Math.toRadians(degrees); - int[] idmsf = new int[4]; - - JSOFA.jauA2tf(9, xRads, idmsf); - - hours = idmsf[0]; - minutes = idmsf[1]; - seconds = idmsf[2]; - } - - public HoursMinutesSeconds(double hours, double minutes, double seconds) { - this.hours = hours; - this.minutes = minutes; - this.seconds = seconds; - } - - public double getHours() { - return hours; - } - - public double getMinutes() { - return minutes; - } - - public double getSeconds() { - return seconds; - } - - public String asString() { - return hours + ":" + minutes + ":" + seconds; - } - - @Override - public String toString() { - return "HoursMinutesSeconds{" + - "hours=" + hours + - ", minutes=" + minutes + - ", seconds=" + seconds + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - HoursMinutesSeconds that = (HoursMinutesSeconds) o; - return Double.compare(that.hours, hours) == 0 && Double.compare(that.minutes, minutes) == 0 && Double.compare(that.seconds, seconds) == 0; - } - - @Override - public int hashCode() { - return Objects.hash(hours, minutes, seconds); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/unit/Rect.java b/java/lc-astro/src/main/java/lc/astro/unit/Rect.java deleted file mode 100644 index 652ed7cb5d0354ab1454a1a7506d84b1426c175a..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/unit/Rect.java +++ /dev/null @@ -1,31 +0,0 @@ -package lc.astro.unit; - -/** - * This class represents a rectangle defined by a pair of {@link SphericalCoordinate}s. - * - * @author Alex Leigh - */ -public class Rect { - private final SphericalCoordinate a; - private final SphericalCoordinate b; - - public Rect(SphericalCoordinate a, SphericalCoordinate b) { - this.a = a; - this.b = b; - } - - /** - * Evaluate whether or not the given coordinate is within the coordinates bounded by this object. - */ - public boolean isWithin(SphericalCoordinate x) { - return x.getX() >= a.getX() && x.getY() >= a.getY() && x.getX() < b.getX() && x.getY() < b.getY(); - } - - @Override - public String toString() { - return "Rect{" + - "a=" + a + - ", b=" + b + - '}'; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/unit/SphericalCoordinate.java b/java/lc-astro/src/main/java/lc/astro/unit/SphericalCoordinate.java deleted file mode 100644 index 2c98f077a472d3268f16793c830ed3c3d1faa024..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/unit/SphericalCoordinate.java +++ /dev/null @@ -1,104 +0,0 @@ -package lc.astro.unit; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.NumberUtil; - -import java.util.Objects; - -/** - * Holds a spherical coordinate, with both units internally represented as degrees. - * - * @author Alex Leigh - */ -public class SphericalCoordinate { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SphericalCoordinate.class); - - private final double x; - private final double y; - - public SphericalCoordinate(double x, double dec) { - this.x = x; - this.y = dec; - } - - /** - * Return X in degrees. - */ - public double getX() { - return x; - } - - /** - * Return Y in degrees. - */ - public double getY() { - return y; - } - - /** - * Return X in radians. - */ - public double getXrad() { - return Math.toRadians(x); - } - - /** - * Return Y in radians. - */ - public double getYrad() { - return Math.toRadians(y); - } - - /** - * Return X in hours. - */ - public double getXhours() { - return x / 15; - } - - - public HoursMinutesSeconds getHms() { - return new HoursMinutesSeconds(x); - } - - /** - * This method is deprecated on account of being stupid. - */ - @Deprecated - public boolean isNear(SphericalCoordinate c) { - logger.debug("comparing: {} {}", this, c); - double slop = 1; - - double xt = NumberUtil.precision(x, 1); - double yt = NumberUtil.precision(y, 1); - double cx = NumberUtil.precision(c.getX(), 1); - double cy = NumberUtil.precision(c.getY(), 1); - - logger.debug("Comparing: {} {} {} {}", xt, cx, yt, cy); - if (cx < xt + slop && cx > xt - slop && cy < yt + slop && cy > yt - slop) return true; - return false; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - SphericalCoordinate that = (SphericalCoordinate) o; - return Double.compare(that.x, x) == 0 && - Double.compare(that.y, y) == 0; - } - - @Override - public int hashCode() { - return Objects.hash(x, y); - } - - @Override - public String toString() { - return "SphericalCoordinate{" + - "x=" + x + - ", y=" + y + - '}'; - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/wcstools/Sky2XYExecutor.java b/java/lc-astro/src/main/java/lc/astro/wcstools/Sky2XYExecutor.java deleted file mode 100644 index 97bc47758497dca39411c48d2701343c9884979d..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/wcstools/Sky2XYExecutor.java +++ /dev/null @@ -1,17 +0,0 @@ -package lc.astro.wcstools; - -import lc.mecha.exec.BatchExecutor; - -/** - * Wrapper for the wcstools sky2xy application. - * - * @author Alex Leigh - */ -public class Sky2XYExecutor extends BatchExecutor { - /** - * Create a new batch executor. - */ - public Sky2XYExecutor(String fitsFile, String coordFile) { - super("/opt/wcstools/bin/sky2xy", new String[]{fitsFile, "@" + coordFile}); - } -} diff --git a/java/lc-astro/src/main/java/lc/astro/wcstools/Sky2XYTask.java b/java/lc-astro/src/main/java/lc/astro/wcstools/Sky2XYTask.java deleted file mode 100644 index fdeaae245aba154299f26186b5e77fbce788e129..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/java/lc/astro/wcstools/Sky2XYTask.java +++ /dev/null @@ -1,87 +0,0 @@ -package lc.astro.wcstools; - -import lc.astro.catalog.CatalogObject; -import lc.astro.unit.DegreesMinutesSeconds; -import lc.astro.unit.HoursMinutesSeconds; -import lc.astro.unit.SphericalCoordinate; -import lc.mecha.exec.BatchTask; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.*; -import java.util.ArrayList; -import java.util.List; - -/** - * This implementation makes a basic assumption that the order of output lines from sky2xy is the same as the order - * of input lines in the tmp file. If sky2xy were to output in a different order, the results would be undefined. - * - * @author Alex Leigh - */ -public class Sky2XYTask implements BatchTask { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Sky2XYTask.class); - private final File tmpFile = File.createTempFile("leigh-astro", "txt"); - private final List objs; - private final ArrayList matched = new ArrayList<>(); - - public Sky2XYTask(List objs) throws IOException { - this.objs = objs; - - // Write the coordinates to our sky file - BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(tmpFile)); - for (CatalogObject obj : objs) { - SphericalCoordinate coord = obj.getJ2000Coordinate(); - HoursMinutesSeconds hms = new HoursMinutesSeconds(coord.getX()); - DegreesMinutesSeconds dms = new DegreesMinutesSeconds(coord.getY()); - String s = hms.asString() + " " + dms.asString() + "\n"; - fos.write(s.getBytes()); - } - fos.close(); - } - - /** - * Return the temporary file containing the sky coordinates. - */ - public File getTmpFile() { - return tmpFile; - } - - @Override - public void writeScript(OutputStream os) throws IOException { - // Intentionally Blank - } - - @Override - public void finished(String result) throws IOException { - /* - * 20.0:12.0:6.0 38.0:21.0:17.0 J2000 -> 2310.276 1720.798 - * 20.0:59.0:17.0 44.0:31.0:43.0 J2000 -> 25917.614 20265.029 (off image) - * 3.0:9.0:39.0 7.0:50.0:46.0 J2000 -> 0.000 0.000 (offscale) - */ - - String[] lines = result.split("\n"); - logger.debug("Solution. [got: {}] [expected: {}]", lines.length, objs.size()); - - if (lines.length != objs.size()) { - logger.error("Bad solution: {}", result); - return; - } - - int i = 0; - - for (String line : lines) { - String[] parts = line.split(" "); - // Anything other than 6 is off-scale or off-image - if (parts.length == 6) { - logger.debug("match: {}", objs.get(i)); - matched.add(objs.get(i)); - } - i++; - } - - } - - public ArrayList getMatched() { - return matched; - } -} diff --git a/java/lc-astro/src/main/resources/lc/astro/catalog/ngc.csv b/java/lc-astro/src/main/resources/lc/astro/catalog/ngc.csv deleted file mode 100644 index af4f775598d9803a3e44c4848d9c0cd210a39e02..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/resources/lc/astro/catalog/ngc.csv +++ /dev/null @@ -1,13945 +0,0 @@ -Name;Type;RA;Dec;Const;MajAx;MinAx;PosAng;B-Mag;V-Mag;J-Mag;H-Mag;K-Mag;SurfBr;Hubble;Cstar U-Mag;Cstar B-Mag;Cstar V-Mag;M;NGC;IC;Cstar Names;Identifiers;Common names;NED notes;OpenNGC notes -IC0001;**;00:08:27.05;+27:43:03.6;Peg;;;;;;;;;;;;;;;;;;;;; -IC0002;G;00:11:00.88;-12:49:22.3;Cet;0.98;0.32;142;15.46;;12.26;11.48;11.17;23.45;Sb;;;;;;;;2MASX J00110081-1249206,IRAS 00084-1306,MCG -02-01-031,PGC 000778;;;B-Mag taken from LEDA. -IC0003;G;00:12:06.09;-00:24:54.8;Psc;0.93;0.67;53;15.10;;11.53;10.79;10.54;23.50;E;;;;;;;;2MASX J00120604-0024543,MCG +00-01-038,PGC 000836,SDSS J001206.08-002454.7,SDSS J001206.09-002454.7,SDSS J001206.09-002454.8,SDSS J001206.10-002454.8;;; -IC0004;G;00:13:26.94;+17:29:11.2;Peg;1.17;0.84;12;14.20;;11.51;10.65;10.50;23.01;Sc;;;;;;;;2MASX J00132695+1729111,IRAS 00108+1712,MCG +03-01-029,PGC 000897,UGC 00123;;; -IC0005;G;00:17:34.93;-09:32:36.1;Cet;0.99;0.66;9;14.57;;11.50;10.85;10.50;23.40;E;;;;;;;;2MASX J00173495-0932364,MCG -02-01-047,PGC 001145,SDSS J001734.93-093236.0,SDSS J001734.93-093236.1;;;B-Mag taken from LEDA. -IC0006;G;00:18:55.04;-03:16:33.9;Psc;1.23;1.08;146;14.50;;11.03;10.32;10.08;23.89;E;;;;;;;;2MASX J00185505-0316339,MCG -01-01-075,PGC 001228;;; -IC0007;G;00:18:53.16;+10:35:40.9;Psc;0.90;0.63;174;14.70;;11.33;10.57;10.26;23.22;S0;;;;;;;;2MASX J00185316+1035410,PGC 001216;;; -IC0008;G;00:19:02.72;-03:13:19.5;Psc;0.82;0.34;129;15.16;;12.70;12.08;12.08;23.40;E?;;;;;;;;2MASX J00190272-0313196,MCG -01-01-076,PGC 001234;;;B-Mag taken from LEDA. -IC0009;G;00:19:43.98;-14:07:18.8;Cet;0.59;0.46;122;15.41;;12.38;11.71;11.28;22.88;Sa;;;;;;;;2MASX J00194400-1407184,MCG -02-02-001,PGC 001271;;;B-Mag taken from LEDA. -IC0010;G;00:20:17.34;+59:18:13.6;Cas;6.76;6.03;129;13.60;9.50;7.23;6.34;6.01;24.53;IB;;;;;;;;2MASX J00201733+5918136,IRAS 00175+5902,IRAS 00177+5900,MCG +10-01-001,PGC 001305,UGC 00192;;The 2MASX position refers to the center of the IR isophotes.; -IC0011;Dup;00:52:59.35;+56:37:18.8;Cas;;;;;;;;;;;;;;;0281;;;;;; -IC0012;G;00:20:15.05;-02:39:11.2;Psc;0.96;0.32;20;15.08;;12.02;11.30;10.92;22.93;Sbc;;;;;;;;2MASX J00201505-0239112,IRAS 00177-0255,MCG -01-02-003,PGC 001299;;;B-Mag taken from LEDA. -IC0013;G;00:20:20.09;+07:42:01.8;Psc;1.29;0.53;162;15.00;;12.57;11.78;11.72;23.53;Sbc;;;;;;;;2MASX J00202007+0742016,MCG +01-02-003,PGC 001301,SDSS J002020.09+074202.2,UGC 00195;;; -IC0014;**;00:22:31.29;+10:29:24.9;Psc;;;;;;;;;;;;;;;;;;;;; -IC0015;G;00:27:57.59;-00:03:40.6;Cet;0.44;0.38;91;15.91;;12.98;12.33;12.03;22.85;SBb;;;;;;;;2MASX J00275754-0003404,IRAS 00253-0020,LEDA 165298,SDSS J002757.58-000340.6,SDSS J002757.59-000340.5,SDSS J002757.59-000340.6;;; -IC0016;G;00:28:07.65;-13:05:38.1;Cet;0.58;0.32;62;15.15;;12.75;12.05;11.71;23.00;S0-a;;;;;;;;2MASX J00280763-1305379,IRAS 00255-1322,MCG -02-02-017,PGC 001730;;;B-Mag taken from LEDA. -IC0017;G;00:28:29.78;+02:38:55.0;Psc;0.67;0.54;102;14.80;;11.68;10.96;10.78;23.04;E?;;;;;;;;2MASX J00282976+0238549,MCG +00-02-044,PGC 001753;;; -IC0018;G;00:28:34.96;-11:35:12.1;Cet;1.08;0.41;29;15.03;;12.14;11.39;11.04;23.62;Sb;;;;;;;;2MASX J00283495-1135123,MCG -02-02-023,PGC 001759;;;B-Mag taken from LEDA. -IC0019;G;00:28:39.48;-11:38:26.8;Cet;0.79;0.67;30;15.00;;11.65;10.96;10.74;23.52;E;;;;;;;;2MASX J00283951-1138262,MCG -02-02-024,PGC 001762;;; -IC0020;G;00:28:39.68;-13:00:37.1;Cet;0.91;0.77;18;14.88;;11.40;10.65;10.51;23.41;S0;;;;;;;;2MASX J00283968-1300366,MCG -02-02-021,PGC 001755;;;B-Mag taken from LEDA. -IC0021;G;00:29:10.43;-00:09:49.6;Cet;0.49;0.45;6;14.50;;13.05;12.42;12.11;22.96;SBb;;;;;;;;2MASX J00291043-0009490,MCG +00-02-053,PGC 001785,SDSS J002910.42-000949.5,SDSS J002910.42-000949.6;;; -IC0022;G;00:29:33.17;-09:04:50.7;Cet;0.81;0.44;45;14.73;;11.63;10.98;10.73;23.07;S0;;;;;;;;2MASX J00293318-0904510,MCG -02-02-027,PGC 001815,SDSS J002933.17-090450.6,SDSS J002933.17-090450.7;;;B-Mag taken from LEDA. -IC0023;G;00:30:50.80;-12:43:12.9;Cet;0.85;0.77;20;15.06;;11.75;11.23;10.95;23.52;E;;;;;;;;2MASX J00305083-1243120,MCG -02-02-032,PGC 001872;;;B-Mag taken from LEDA. -IC0024;**;00:31:16.63;+30:50:21.5;And;;;;;;;;;;;;;;;;;;;;; -IC0025;G;00:31:12.09;-00:24:26.5;Cet;0.86;0.44;34;16.00;;12.15;11.43;11.17;23.68;S0-a;;;;;;;;2MASX J00311206-0024262,IRAS 00286-0040,MCG +00-02-064,PGC 001905,SDSS J003112.09-002426.4,SDSS J003112.09-002426.5;;; -IC0026;Dup;00:31:45.94;-13:20:14.9;Cet;;;;;;;;;;;;;;;0135;;;;;; -IC0027;G;00:33:06.24;-13:22:17.4;Cet;0.58;0.34;148;15.60;;13.49;12.84;12.39;23.37;;;;;;;;;2MASX J00330625-1322173,LEDA 143572;;; -IC0028;G;00:33:08.72;-13:27:22.6;Cet;0.30;0.22;85;12.00;;13.14;12.53;12.27;;E;;;;;;;;2MASX J00330879-1327223,IRAS 00306-1343,LEDA 169992;;; -IC0029;G;00:34:10.80;-02:10:39.5;Cet;0.66;0.49;160;15.60;;11.76;11.09;10.69;23.75;E;;;;;;;;2MASX J00341079-0210394,MCG +00-02-072,PGC 002042;;; -IC0030;G;00:34:14.72;-02:05:04.5;Cet;0.69;0.39;23;15.17;;12.08;11.28;11.00;23.71;S0-a;;;;;;;;2MASX J00341472-0205044,MCG +00-02-074,PGC 002050;;;B-Mag taken from LEDA. -IC0031;G;00:34:24.63;+12:16:05.4;Psc;1.16;0.23;90;15.50;;11.44;10.55;10.24;23.86;Sab;;;;;;;;2MASX J00342461+1216066,MCG +02-02-021,PGC 002062,UGC 00340;;; -IC0032;G;00:35:01.69;-02:08:30.1;Cet;0.62;0.39;1;16.15;;12.22;11.52;11.16;23.62;S0-a;;;;;;;;2MASX J00350169-0208294,MCG +00-02-080,PGC 002096;;;B-Mag taken from LEDA. -IC0033;G;00:35:05.16;-02:08:15.7;Cet;0.78;0.58;123;15.29;;12.12;11.46;11.19;23.60;;;;;;;;;2MASX J00350516-0208154,MCG +00-02-082,PGC 002101;;;B-Mag taken from LEDA. -IC0034;G;00:35:36.42;+09:07:27.3;Psc;2.81;1.05;156;13.90;;10.36;9.65;9.42;24.32;SBa;;;;;;;;2MASX J00353642+0907272,MCG +01-02-032,PGC 002134,UGC 00351;;; -IC0035;G;00:37:39.88;+10:21:28.7;Psc;0.90;0.74;18;15.00;;11.99;11.23;10.93;23.36;Sc;;;;;;;;2MASX J00373987+1021287,MCG +02-02-024,PGC 002246,UGC 00374;;; -IC0036;G;00:37:49.65;-15:26:28.6;Cet;0.31;0.30;60;15.62;;12.72;12.07;11.67;;;;;;;;;;2MASX J00374962-1526288,IRAS 00353-1542,PGC 138202;;; -IC0037;G;00:38:34.18;-15:21:31.3;Cet;0.67;0.38;158;16.23;;13.19;12.37;11.97;23.37;SBbc;;;;;;;;2MASX J00383418-1521312,MCG -03-02-029,PGC 002299;;The APM image includes a superposed star.;B-Mag taken from LEDA. -IC0038;G;00:38:38.76;-15:25:11.4;Cet;0.77;0.57;65;15.02;;12.41;11.72;11.39;22.93;Sc;;;;;;;;2MASX J00383875-1525112,IRAS 00361-1541,MCG -03-02-030,PGC 002311;;;B-Mag taken from LEDA. -IC0039;Dup;00:39:08.40;-14:10:22.2;Cet;;;;;;;;;;;;;;;0178;;;;;; -IC0040;G;00:39:21.40;+02:27:22.4;Cet;1.05;0.43;14;15.10;;11.79;11.08;10.76;23.27;Sb;;;;;;;;2MASX J00392139+0227225,MCG +00-02-106,PGC 002376,UGC 00413;;; -IC0041;G;00:39:40.37;-14:10:27.6;Cet;0.71;0.45;162;15.20;;13.52;12.87;12.63;23.20;;;;;;;;;2MASX J00394036-1410274,LEDA 138206;;;B-Mag taken from LEDA. -IC0042;G;00:41:05.84;-15:25:41.1;Cet;0.76;0.53;56;15.38;;12.81;11.98;11.74;23.25;SABc;;;;;;;;2MASX J00410585-1525410,MCG -03-02-036,PGC 002463;;;B-Mag taken from LEDA. -IC0043;G;00:42:22.06;+29:38:29.9;And;1.26;1.15;87;14.40;;11.23;10.56;10.24;23.13;SABc;;;;;;;;2MASX J00422206+2938298,IRAS 00396+2922,MCG +05-02-040,PGC 002536,SDSS J004222.06+293830.0,UGC 00448;;; -IC0044;Dup;00:42:15.88;+00:50:43.8;Cet;;;;;;;;;;;;;;;0223;;;;;; -IC0045;Other;00:42:36.34;+29:39:18.9;And;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -IC0046;G;00:42:57.97;+27:15:12.5;And;0.80;0.61;82;14.70;;12.30;11.69;11.45;22.83;E-S0;;;;;;;;2MASX J00425798+2715134,IRAS 00402+2658,PGC 002575;;; -IC0047;G;00:42:55.01;-13:44:26.6;Cet;0.41;0.24;100;16.09;;12.72;12.02;11.75;;;;;;;;;;2MASX J00425503-1344264,PGC 3093693;;;B-Mag taken from LEDA. -IC0048;G;00:43:34.47;-08:11:11.4;Cet;1.12;0.92;172;14.11;;11.03;10.34;10.03;23.01;S0;;;;;;1577;;2MASX J00433448-0811114,IRAS 00410-0827,MCG -01-03-001,MCG -02-03-001,PGC 002603;;; -IC0049;G;00:43:56.13;+01:51:01.0;Cet;1.28;1.04;77;14.50;;12.83;12.62;12.06;23.39;SABc;;;;;;;;2MASX J00435616+0151011,MCG +00-03-003,PGC 002617,SDSS J004356.15+015101.3,UGC 00468;;; -IC0050;G;00:46:05.71;-09:30:10.8;Cet;1.02;0.87;169;14.74;;11.45;10.71;10.49;23.71;E;;;;;;;;2MASX J00460569-0930109,MCG -02-03-010,PGC 002698,SDSS J004605.70-093010.7,SDSS J004605.70-093010.8,SDSS J004605.71-093010.8;;;B-Mag taken from LEDA. -IC0051;G;00:46:24.22;-13:26:32.5;Cet;1.70;1.11;55;13.41;;11.26;10.61;10.25;23.63;S0;;;;;;;;2MASX J00462421-1326326,IRAS 00438-1342,MCG -02-03-011,PGC 002710;;; -IC0052;G;00:48:23.78;+04:05:30.7;Psc;0.95;0.41;96;15.40;;13.18;12.74;12.54;23.41;Sb;;;;;;;;2MASX J00482376+0405307,MCG +01-03-005,PGC 002834,UGC 00494;;Contains the set of three apparent emission centers UM 069.; -IC0053;G;00:50:40.77;+10:36:01.0;Psc;0.87;0.62;94;15.50;;11.34;10.64;10.30;23.75;E-S0;;;;;;;;2MASX J00504075+1036005,MCG +02-03-005,PGC 002951,UGC 00516;;; -IC0054;**;00:50:46.85;-02:17:16.0;Cet;;;;;;;;;;;;;;;;;;;;; -IC0055;G;00:51:42.39;+07:43:06.7;Psc;0.55;0.28;175;14.50;;11.26;10.51;10.26;22.14;Sa;;;;;;;;2MASX J00514237+0743071,MCG +01-03-006,PGC 003025;;; -IC0056;G;00:51:29.94;-12:50:39.5;Cet;0.82;0.74;116;16.50;;13.14;12.60;12.60;23.23;SABc;;;;;;;;2MASX J00512994-1250396,MCG -02-03-030,PGC 003014;;; -IC0057;G;00:54:48.50;+11:50:28.3;Psc;1.03;0.96;10;15.70;;12.32;11.47;11.40;24.30;S0;;;;;;;;2MASX J00544855+1150280,MCG +02-03-010,PGC 003229,UGC 00559;;; -IC0058;G;00:55:02.44;-13:40:41.1;Cet;0.84;0.50;105;15.51;;12.03;11.25;10.97;23.74;E-S0;;;;;;;;2MASX J00550242-1340415,MCG -02-03-041,PGC 003257;;;B-Mag taken from LEDA. -IC0059;RfN;00:57:28.61;+61:08:37.2;Cas;10.00;5.00;;;;;;;;;;;;;;;;LBN 620;;; -IC0060;G;00:56:04.23;-13:21:28.5;Cet;1.04;0.76;48;15.75;;11.61;10.88;10.52;24.14;Sc;;;;;;;;2MASX J00560423-1321292,MCG -02-03-049,PGC 003324;;;B-Mag taken from LEDA. -IC0061;G;00:57:07.20;+07:30:25.5;Psc;1.34;1.29;175;15.30;;11.65;10.97;10.54;24.61;S0;;;;;;;;2MASX J00570722+0730255,MCG +01-03-009,PGC 003408,UGC 00589;;; -IC0062;G;00:58:43.94;+11:48:28.8;Psc;0.76;0.46;25;15.00;;11.79;11.08;10.77;22.85;Sbc;;;;;;;;2MASX J00584393+1148286,MCG +02-03-021,PGC 003507,UGC 00606;;; -IC0063;HII;00:59:28.84;+60:54:42.1;Cas;10.00;3.00;;13.33;;;;;;;;;;;;;;LBN 622;;; -IC0064;G;00:59:24.42;+27:03:32.6;Psc;1.03;0.65;148;15.60;;11.80;11.03;10.77;23.88;S0;;;;;;;;2MASX J00592444+2703319,MCG +04-03-031,PGC 003550,UGC 00613;;; -IC0065;G;01:00:55.42;+47:40:55.1;And;2.56;0.73;154;13.80;;10.50;9.78;9.51;23.45;Sbc;;;;;;;;2MASX J01005543+4740551,IRAS 00580+4724,MCG +08-03-005,PGC 003635,UGC 00625;;; -IC0066;G;01:00:32.50;+30:47:50.0;Psc;1.23;0.42;124;15.00;;11.73;11.12;10.74;23.66;Sa;;;;;;;;2MASX J01003251+3047500,MCG +05-03-033,PGC 003606,UGC 00623;;; -IC0069;G;01:01:23.66;+31:02:27.0;Psc;0.76;0.41;71;14.70;;11.89;11.02;10.86;23.04;SABb;;;;;;;;2MASX J01012367+3102269,MCG +05-03-041,PGC 003666;;; -IC0070;G;01:01:03.95;+00:03:02.7;Cet;0.42;0.24;147;16.77;;13.37;12.65;12.29;23.65;S0-a;;;;;;;;LEDA 173286;;;B-Mag taken from LEDA. -IC0071;*;01:01:19.26;-06:46:01.8;Cet;;;;;;;;;;;;;;;;;;;;ID as IC 0071 is not certain, but there is no other reasonable candidate.; -IC0072;*;01:01:34.71;-06:46:40.6;Cet;;;;;;;;;;;;;;;;;;;;; -IC0073;G;01:04:52.95;+04:46:01.7;Psc;0.62;0.48;149;15.40;;13.30;12.43;12.50;23.23;;;;;;;;;2MASX J01045304+0446027,PGC 003842;;; -IC0074;G;01:05:55.95;+04:05:24.9;Psc;0.57;0.46;5;15.70;;12.32;11.73;11.50;23.10;E-S0;;;;;;;;2MASX J01055595+0405246,PGC 003897;;; -IC0075;G;01:07:11.61;+10:50:12.8;Psc;0.66;0.51;31;15.00;;12.38;11.67;11.24;22.80;Sb;;;;;;;;2MASX J01071159+1050125,MCG +02-03-035,PGC 003959,UGC 00684;;; -IC0076;G;01:08:11.71;-04:33:16.2;Cet;0.81;0.36;116;15.50;;11.98;11.21;10.87;23.52;S0-a;;;;;;;;2MASX J01081173-0433164,MCG -01-04-001,PGC 004035;;; -IC0077;G;01:08:43.75;-15:25:15.3;Cet;0.52;0.44;90;16.23;;12.60;11.91;11.75;23.56;S0;;;;;;;;2MASX J01084373-1525148,LEDA 073653;;;B-Mag taken from LEDA. -IC0078;G;01:08:47.70;-15:50:42.3;Cet;1.75;0.75;126;15.24;;11.08;10.40;10.08;24.55;Sa;;;;;;;;2MASX J01084768-1550427,MCG -03-04-010,PGC 004079;;The position in 1999ApJS..120..147M is 9 arcsec north of the nucleus.;B-Mag taken from LEDA. -IC0079;G;01:08:49.71;-15:56:54.9;Cet;1.24;0.91;158;14.93;;11.25;10.54;10.29;24.12;E-S0;;;;;;;;2MASX J01084970-1556547,MCG -03-04-011,PGC 004082;;;B-Mag taken from LEDA. -IC0080;GPair;01:08:50.90;-15:24:27.0;Cet;1.20;;;;;;;;;;;;;;;;;;;Consists of the galaxies MCG -03-04-008 and -009.;Diameter of the group inferred by the author. -IC0080 NED01;G;01:08:50.70;-15:24:32.2;Cet;1.50;1.03;83;14.75;;;;;24.48;E;;;;;;;;MCG -03-04-009,PGC 004072;;; -IC0080 NED02;G;01:08:51.13;-15:24:22.7;Cet;1.50;1.06;50;14.60;;11.16;10.42;10.27;23.66;E;;;;;;;;2MASX J01085113-1524227,MCG -03-04-008,PGC 004071;;; -IC0081;G;01:09:22.26;-01:41:45.1;Cet;1.17;0.91;145;14.80;;11.40;10.71;10.44;23.57;E?;;;;;;;;2MASX J01092224-0141453,MCG +00-04-015,PGC 004127;;The APM image includes a neighboring star.; -IC0082;G;01:09:05.79;-16:00:01.1;Cet;0.91;0.83;93;14.85;;11.75;11.09;10.70;23.32;S0;;;;;;;;2MASX J01090578-1600011,MCG -03-04-013,PGC 004103;;;B-Mag taken from LEDA. -IC0083;G;01:10:29.78;+01:41:21.7;Cet;0.68;0.45;114;15.20;;12.30;11.57;11.30;23.20;;;;;;;;;2MASX J01102978+0141218,MCG +00-04-021,PGC 004182;;; -IC0084;G;01:11:25.60;+01:38:24.7;Cet;0.67;0.43;12;15.00;;11.89;11.13;11.07;23.13;S0-a;;;;;;;;2MASX J01112564+0138250,MCG +00-04-029,PGC 004265;;; -IC0085;*;01:11:49.55;-00:27:08.9;Cet;;;;;;;;;;;;;;;;;;;;; -IC0086;G;01:13:28.52;-16:14:30.0;Cet;0.72;0.34;142;15.34;;12.33;11.55;11.26;23.29;S0-a;;;;;;;;2MASX J01132852-1614301,IRAS 01110-1630,LEDA 165316;;; -IC0087;G;01:14:15.79;+00:45:55.2;Cet;0.69;0.63;66;15.40;;12.79;12.26;11.76;23.21;Sbc;;;;;;;;2MASX J01141582+0045556,MCG +00-04-048,PGC 004454,SDSS J011415.78+004555.1,SDSS J011415.79+004555.1,SDSS J011415.79+004555.2,SDSS J011415.80+004555.2;;; -IC0088;G;01:14:31.30;+00:47:30.3;Cet;0.53;0.44;129;18.81;18.07;13.16;12.62;12.09;23.15;Sbc;;;;;;;;2MASX J01143129+0047306,LEDA 1175571,SDSS J011431.30+004730.2,SDSS J011431.30+004730.3,SDSS J011431.32+004730.2;;; -IC0089;Dup;01:16:03.61;+04:17:38.8;Psc;;;;;;;;;;;;;;;0446;;;;;; -IC0090;G;01:16:30.35;-07:58:37.7;Cet;1.25;1.12;146;14.52;;11.02;10.36;10.12;24.14;E;;;;;;;;2MASX J01163034-0758369,MCG -01-04-023,PGC 004606;;; -IC0091;G;01:18:39.43;+02:33:13.2;Cet;0.71;0.26;64;16.48;;12.91;12.16;11.82;24.30;;;;;;;;;2MASX J01183943+0233132,LEDA 1230543;;;B-Mag taken from LEDA. -IC0092;Dup;01:19:48.50;+32:46:04.0;Psc;;;;;;;;;;;;;;;0468;;;;;; -IC0093;G;01:19:02.34;-17:03:37.4;Cet;1.21;0.56;171;14.30;13.57;11.79;11.08;10.85;22.91;Sb;;;;;;1671;;2MASX J01190234-1703374,IRAS 01165-1719,MCG -03-04-043,PGC 004724;;; -IC0094;*;01:20:05.49;+32:43:02.4;Psc;;;;;;;;;;;;;;;;;;;;; -IC0095;G;01:19:17.88;-12:34:26.9;Cet;0.61;0.50;54;15.95;;12.64;11.76;11.54;23.72;;;;;;;;;2MASX J01191787-1234264,LEDA 950887;;; -IC0096;G;01:20:33.22;+29:37:02.1;Psc;0.78;0.30;44;14.70;;12.93;12.56;12.01;22.48;Sbc;;;;;;;;MCG +05-04-023,PGC 004840;;; -IC0097;Dup;01:20:02.00;+14:51:39.8;Psc;;;;;;;;;;;;;;;0475;;;;;; -IC0098;G;01:20:54.88;-12:36:17.0;Cet;0.68;0.61;55;16.30;;12.14;11.39;11.14;23.87;;;;;;;;;2MASX J01205488-1236162,MCG -02-04-027,PGC 004869;;;B-Mag taken from LEDA. -IC0099;G;01:22:27.36;-12:57:09.2;Cet;0.58;0.52;54;15.82;;12.64;12.16;11.59;23.10;Sc;;;;;;;;2MASX J01222735-1257091,MCG -02-04-034,PGC 004997;;;B-Mag taken from LEDA. -IC0100;G;01:22:53.96;-04:38:34.9;Cet;1.04;0.77;88;14.48;;11.26;10.56;10.24;23.36;E-S0;;;;;;;;2MASX J01225395-0438353,MCG -01-04-030,PGC 005029;;;B-Mag taken from LEDA. -IC0101;G;01:24:08.55;+09:55:49.9;Psc;1.24;0.59;124;15.10;;12.48;11.78;11.88;23.76;Sb;;;;;;;;2MASX J01240854+0955500,MCG +02-04-036,PGC 005147,UGC 00949;;; -IC0102;G;01:24:26.33;+09:53:11.6;Psc;0.75;0.37;111;15.60;;12.65;11.95;11.68;23.59;S0-a;;;;;;;;2MASX J01242632+0953114,PGC 005172,UGC 00954;;; -IC0103;G;01:24:36.44;+02:02:39.3;Cet;0.95;0.67;128;15.30;;11.63;10.94;10.60;23.94;E-S0;;;;;;;;2MASX J01243643+0202392,MCG +00-04-117,PGC 005192,UGC 00963;;; -IC0104;**;01:24:33.60;-01:27:24.2;Cet;;;;8.79;;;;;;;;;;;;;;;;; -IC0105;G;01:24:46.25;+02:04:31.0;Cet;0.58;0.29;47;11.50;;12.66;11.90;11.63;23.28;S0-a;;;;;;;;2MASX J01244623+0204312,PGC 005206;;; -IC0106;Dup;01:24:41.65;-01:35:13.5;Cet;;;;;;;;;;;;;;;0530;;;;;; -IC0107;G;01:25:24.66;+14:51:52.6;Psc;1.62;1.31;6;13.78;;10.79;10.05;9.81;24.13;E;;;;;;1700;;2MASX J01252468+1451528,MCG +02-04-041,PGC 005271,SDSS J012524.65+145152.6,UGC 00986;;; -IC0108;G;01:24:38.96;-12:38:08.1;Cet;1.30;0.36;4;15.48;;12.27;11.52;11.14;23.66;Sc;;;;;;;;2MASX J01243897-1238081,MCG -02-04-041,PGC 005205;;;B-Mag taken from LEDA. -IC0109;G;01:25:13.09;+02:03:58.4;Cet;0.76;0.57;70;14.90;;11.91;11.25;10.88;23.06;S0;;;;;;;;2MASX J01251301+0204010,MCG +00-04-128,PGC 005251,UGC 00980;;; -IC0110;Other;01:25:46.60;+33:30:52.9;Psc;;;;;;;;;;;;;;;;;;;;Nominal position. IC 110 may be the stars at 01 23 00, +33 15.7 (B1950).; -IC0111;Other;01:26:00.13;+33:29:49.6;Psc;;;;;;;;;;;;;;;;;;;;Nominal position. IC 111 may be the stars at 01 23 10, +33 14.6 (B1950).; -IC0112;G;01:26:03.02;+11:26:34.7;Psc;0.72;0.37;127;14.20;;12.22;11.56;11.29;21.61;Sd;;;;;;;;2MASX J01260303+1126347,IRAS 01234+1110,MCG +02-04-047,PGC 005328,SDSS J012602.99+112634.6,UGC 01008;;; -IC0113;G;01:26:25.50;+19:11:31.1;Psc;0.35;0.26;160;;;13.06;12.20;11.97;;;;;;;;;;2MASX J01262551+1911308;;; -IC0114;G;01:26:22.58;+09:54:35.8;Psc;1.40;0.56;154;15.70;;11.82;11.11;10.96;24.91;S0;;;;;;;;2MASX J01262257+0954358,MCG +02-04-048,PGC 005343,UGC 01015;;; -IC0115;G;01:26:54.44;+19:12:52.9;Psc;0.76;0.76;80;15.20;;11.69;11.01;10.84;23.46;E;;;;;;;;2MASX J01265442+1912517,MCG +03-04-039,PGC 005395;;; -IC0116;G;01:26:50.57;-04:58:56.2;Cet;0.87;0.56;125;14.50;;12.67;12.03;11.90;22.72;Sbc;;;;;;;;2MASX J01265058-0458560,MCG -01-04-049,PGC 005389;;; -IC0117;*;01:27:25.41;-01:51:36.7;Cet;;;;11.22;10.54;9.35;9.02;8.91;;;;;;;;;;TYC 4682-651-1;;; -IC0118;G;01:27:36.04;-04:59:50.9;Cet;0.72;0.55;31;15.81;;12.19;11.49;11.23;23.90;E;;;;;;;;2MASX J01273603-0459505,MCG -01-04-053,PGC 005446;;;B-Mag taken from LEDA. -IC0119;G;01:27:55.02;-02:02:25.7;Cet;1.19;0.58;77;15.00;;11.60;10.93;10.70;24.04;S0-a;;;;;;;;2MASX J01275502-0202255,MCG +00-04-157,PGC 005465,UGC 01047;;; -IC0120;G;01:28:12.96;-01:54:55.9;Cet;0.92;0.33;138;15.20;;12.03;11.35;11.05;23.73;S0;;;;;;;;2MASX J01281297-0154555,PGC 005484;;; -IC0121;G;01:28:21.78;+02:30:46.9;Cet;1.00;0.62;108;14.30;;11.57;11.00;10.58;22.64;Sbc;;;;;;;;2MASX J01282178+0230469,IRAS 01257+0215,MCG +00-04-159,PGC 005492,SDSS J012821.76+023046.8,UGC 01053;;; -IC0122;G;01:28:13.20;-14:50:20.0;Cet;0.65;0.32;14;15.96;;12.81;12.11;11.82;23.64;S0-a;;;;;;;;2MASX J01281322-1450197,LEDA 919275;;;B-Mag taken from LEDA. -IC0123;G;01:28:51.46;+02:26:47.2;Cet;0.67;0.47;44;16.09;15.21;12.11;11.45;11.14;23.24;E;;;;;;;;2MASX J01285148+0226476,MCG +00-04-161,PGC 005524;;; -IC0124;*;01:29:09.08;-01:56:13.3;Cet;;;;14.40;;;;;;;;;;;;;;;;; -IC0125;G;01:29:18.35;-13:16:47.4;Cet;0.61;0.59;53;16.18;;12.37;11.58;11.49;23.50;;;;;;;;;2MASX J01291837-1316471,MCG -02-04-060,PGC 005560;;;B-Mag taken from LEDA. -IC0126;G;01:29:47.86;-01:59:01.5;Cet;0.89;0.81;30;15.40;;11.89;11.25;10.92;24.03;;;;;;;;;2MASX J01294785-0159015,PGC 005577,SDSS J012947.86-015901.4,UGC 01071;;; -IC0127;G;01:29:47.61;-06:58:48.2;Cet;1.69;0.45;110;9.90;9.20;10.94;10.00;9.79;23.47;Sb;;;;;;;;2MASX J01294759-0658482,MCG -01-04-057,PGC 005581;;; -IC0128;G;01:31:23.87;-12:37:27.8;Cet;0.82;0.61;165;15.35;;13.31;12.73;12.82;23.31;SBc;;;;;;;;2MASX J01312388-1237277,MCG -02-04-063,PGC 005659;;;B-Mag taken from LEDA. -IC0129;G;01:31:31.26;-12:39:15.8;Cet;1.23;0.60;63;14.70;;11.59;10.95;10.64;24.28;S0-a;;;;;;;;2MASX J01313126-1239147,MCG -02-05-001,PGC 005675;;; -IC0130;G;01:31:28.74;-15:35:29.8;Cet;0.75;0.64;27;15.49;;12.26;11.61;11.31;23.52;S0;;;;;;;;2MASX J01312872-1535297,MCG -03-05-001,PGC 005671;;;B-Mag taken from LEDA. -IC0131;HII;01:33:14.58;+30:45:11.7;Tri;0.30;;;12.52;;;;;;;;;;;;;;IRAS 01303+3029;;HII region in Messier 033. The IC object includes the surrounding star cloud.;Dimensions taken from LEDA -IC0132;HII;01:33:15.92;+30:56:44.2;Tri;0.67;0.55;;14.87;14.82;;;;;;;;;;;;;;;;Diameters taken from SIMBAD. -IC0133;HII;01:33:15.18;+30:53:18.2;Tri;0.45;0.45;;18.28;18.45;14.48;13.91;13.51;;;;;;;;;;2MASX J01331516+3053196,IRAS 01304+3037;;HII region in Messier 033. The IC object includes the surrounding star cloud.;Diameters taken from SIMBAD. -IC0134;*;01:33:25.00;+30:54:02.4;Tri;;;;16.82;15.98;14.51;14.09;13.97;;;;;;;;;;2MASS J01332504+3054022;;Foreground Galactic star superposed on Messier 033.; -IC0135;HII;01:34:15.53;+30:37:12.3;Tri;0.40;;;;;;;;;;;;;;;;;;;HII region in Messier 033.; -IC0136;*Ass;01:34:16.04;+30:33:43.4;Tri;;;;11.04;;;;;;;;;;;;;;IRAS 01314+3018;;Stellar association in Messier 033.; -IC0137;*Ass;01:33:38.91;+30:31:21.0;Tri;;;;;;;;;;;;;;;;;;;;Star cloud in Messier 033.; -IC0138;G;01:33:01.98;-00:41:23.4;Cet;1.12;0.74;23;14.90;;11.90;11.18;10.98;23.37;SABc;;;;;;;;2MASX J01330196-0041235,MCG +00-05-003,PGC 005771,SDSS J013301.98-004123.3,SDSS J013301.98-004123.4,UGC 01106;;; -IC0139;*Ass;01:33:59.24;+30:34:02.8;Tri;;;;13.10;;;;;;;;;;;;;;;;Star cloud in Messier 033.; -IC0140;*Ass;01:33:58.17;+30:33:00.5;Tri;;;;;;;;;;;;;;;;;;;;Star cloud in Messier 033.; -IC0141;G;01:32:51.71;-14:48:52.6;Cet;1.23;0.91;5;14.07;;11.87;11.35;10.99;23.33;Sbc;;;;;;;;2MASX J01325169-1448527,IRAS 01304-1504,MCG -03-05-004,PGC 005765;;Star superposed.; -IC0142;HII;01:33:55.53;+30:45:28.1;Tri;0.50;;;11.30;14.20;;;;;;;;;;;;;;;HII region in Messier 033.;Dimensions taken from LEDA -IC0143;HII;01:34:10.93;+30:46:35.1;Tri;0.30;;;11.40;;;;;;;;;;;;;;;;HII region in Messier 033.;Dimensions taken from LEDA -IC0144;G;01:37:40.85;-13:18:52.8;Cet;0.74;0.67;46;15.75;;12.00;11.35;11.00;24.01;E;;;;;;;;2MASX J01374084-1318528,MCG -02-05-028,PGC 006027;;;B-Mag taken from LEDA. -IC0145;G;01:38:38.48;+00:44:29.4;Cet;0.69;0.50;6;15.60;;12.49;11.83;11.52;23.17;Sb;;;;;;;;2MASX J01383845+0044297,MCG +00-05-020,PGC 006084,SDSS J013838.48+004429.4,SDSS J013838.48+004429.5;;; -IC0146;Dup;01:38:39.79;-17:49:52.3;Cet;;;;;;;;;;;;;;;0648;;;;;; -IC0147;G;01:39:59.75;-14:51:45.5;Cet;0.76;0.42;58;15.53;;12.55;11.78;11.45;22.97;Sc;;;;;;;;2MASX J01395976-1451454,IRAS 01375-1506,MCG -03-05-013,PGC 006164;;; -IC0148;G;01:42:26.97;+13:58:37.3;Psc;1.82;0.57;45;13.44;;;;;23.07;I;;;;;;;;MCG +02-05-011,PGC 006292,SDSS J014226.97+135837.2,SDSS J014226.98+135837.1,SDSS J014226.99+135837.1,SDSS J014227.13+135837.6,UGC 01195;;Confused HIPASS source; -IC0149;G;01:42:25.38;-16:18:01.5;Cet;1.27;0.41;82;14.40;;11.52;10.80;10.46;22.82;Sbc;;;;;;;;2MASX J01422536-1618012,IRAS 01400-1633,MCG -03-05-015,PGC 006289;;;B-Mag taken from LEDA. -IC0150;G;01:42:57.52;+04:12:00.6;Psc;0.88;0.50;137;14.90;;12.71;12.33;11.77;22.99;Sb;;;;;;;;2MASX J01425752+0412006,MCG +01-05-026,PGC 006316,UGC 01202;;; -IC0151;Other;01:43:57.47;+13:12:09.4;Psc;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing here."; -IC0152;Other;01:44:07.39;+13:02:09.1;Psc;;;;;;;;;;;;;;;;;;;;"Nominal position; the galaxy CGCG 437-016 may be IC 0152."; -IC0153;Other;01:44:36.21;+12:37:44.2;Psc;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing here."; -IC0154;G;01:45:16.27;+10:38:57.1;Psc;1.19;0.23;66;14.80;;11.23;10.52;10.23;22.86;Sb;;;;;;;;2MASX J01451628+1038581,MCG +02-05-023,PGC 006439,UGC 01229;;; -IC0155;Other;01:47:32.33;+60:36:39.0;Cas;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing here."; -IC0156;G;01:45:29.21;+10:33:09.8;Psc;1.51;1.33;105;15.00;;11.01;10.35;10.07;24.50;Sa;;;;;;;;2MASX J01452923+1033101,MCG +02-05-025,PGC 006448,UGC 01231;;; -IC0157;Other;01:45:42.40;+12:52:24.0;Psc;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing here."; -IC0158;G;01:45:53.52;-06:56:08.5;Cet;0.70;0.53;140;15.66;;12.06;11.45;11.26;23.74;;;;;;;;;2MASX J01455353-0656086,LEDA 144318;;; -IC0159;G;01:46:25.05;-08:38:11.8;Cet;1.35;0.75;28;14.18;;12.32;11.65;11.51;23.12;SBb;;;;;;;;2MASX J01462508-0838126,IRAS 01439-0853,MCG -02-05-042,PGC 006505,SDSS J014625.05-083811.8,SDSS J014625.05-083811.9;;;B-Mag taken from LEDA. -IC0160;G;01:46:29.56;-13:14:51.8;Cet;1.28;0.86;85;14.88;;11.32;10.63;10.32;24.16;E-S0;;;;;;;;2MASX J01462955-1314514,MCG -02-05-044,PGC 006511;;;B-Mag taken from LEDA. -IC0161;G;01:48:43.74;+10:30:28.4;Ari;0.90;0.54;67;14.80;;11.54;10.88;10.59;22.95;S0-a;;;;;;;;2MASX J01484377+1030287,MCG +02-05-036,PGC 006644,UGC 01266;;; -IC0162;G;01:48:53.43;+10:31:17.8;Ari;1.32;1.28;85;14.80;;10.29;9.56;9.29;23.77;S0;;;;;;;;2MASX J01485346+1031177,MCG +02-05-038,PGC 006643,UGC 01267;;; -IC0163;G;01:49:14.99;+20:42:40.7;Ari;1.62;0.73;90;13.80;;11.56;10.94;10.64;23.05;SBd;;;;;;;;2MASX J01491498+2042407,IRAS 01465+2027,MCG +03-05-018,PGC 006675,UGC 01276;;; -IC0164;G;01:49:08.41;-03:54:15.8;Cet;1.58;1.35;167;13.50;;10.63;9.95;9.67;23.90;E;;;;;;;;2MASX J01490840-0354157,MCG -01-05-037,PGC 006666;;; -IC0165;Dup;01:50:14.02;+27:38:44.4;Tri;;;;;;;;;;;;;;;0684;;;;;; -IC0166;OCl;01:52:23.82;+61:51:09.4;Cas;7.50;;;13.00;11.70;;;;;;;;;;;;;MWSC 0146;;; -IC0167;G;01:51:08.56;+21:54:46.1;Ari;1.60;0.94;107;14.00;;12.75;11.78;11.69;22.95;Sc;;;;;;;;2MASX J01510855+2154461,IRAS 01483+2139,MCG +04-05-021,PGC 006833,UGC 01313;;; -IC0168;G;01:50:27.63;-08:31:22.6;Cet;1.12;0.39;104;14.85;;11.35;10.63;10.38;23.46;S0-a;;;;;;;;2MASX J01502761-0831226,MCG -02-05-058,PGC 006763,SDSS J015027.63-083122.5,SDSS J015027.63-083122.6;;;B-Mag taken from LEDA. -IC0169;G;01:50:39.36;-12:40:46.6;Cet;0.74;0.51;76;15.46;;12.03;11.42;11.04;23.77;E-S0;;;;;;;;2MASX J01503934-1240462,LEDA 949241;;; -IC0170;G;01:51:57.52;-08:31:03.4;Cet;0.78;0.60;92;15.34;;12.20;11.57;11.39;23.59;E;;;;;;;;2MASX J01515753-0831039,MCG -02-05-066,PGC 006890,SDSS J015157.51-083103.4,SDSS J015157.52-083103.4;;;B-Mag taken from LEDA. -IC0171;G;01:55:10.21;+35:16:54.8;Tri;2.26;1.90;107;13.80;;9.90;9.01;8.89;24.18;S0-a;;;;;;;;2MASX J01551021+3516550,MCG +06-05-050,PGC 007139,UGC 01388;;; -IC0172;G;01:54:54.23;+00:48:40.4;Cet;0.48;0.37;95;14.60;;12.33;11.62;11.36;22.24;SBbc;;;;;;;;2MASX J01545425+0048399,IRAS 01523+0033,MCG +00-05-049,PGC 007116,SDSS J015454.23+004840.2,SDSS J015454.23+004840.3,SDSS J015454.23+004840.4,SDSS J015454.24+004840.3;;; -IC0173;G;01:55:57.15;+01:17:06.6;Cet;0.92;0.72;90;14.90;;12.17;11.61;11.35;23.35;SBbc;;;;;;;;2MASX J01555713+0117066,MCG +00-06-001,PGC 007217,UGC 01402;;; -IC0174;G;01:56:16.08;+03:45:42.7;Psc;1.49;0.99;97;14.60;;11.36;10.70;10.54;24.10;S0;;;;;;;;2MASX J01561609+0345426,MCG +01-06-008,PGC 007249,UGC 01409;;; -IC0175;G;01:56:18.86;+01:19:56.7;Cet;0.52;0.46;9;13.10;;13.07;12.33;12.03;23.14;;;;;;;;;2MASX J01561887+0119566,PGC 007261;;; -IC0176;G;01:56:53.40;-02:01:08.3;Cet;1.78;0.38;94;14.60;;12.04;11.46;11.08;23.57;Sc;;;;;;;;2MASX J01565340-0201083,MCG +00-06-004,PGC 007306,UGC 01426;;; -IC0177;G;01:57:00.58;-00:05:23.5;Cet;0.51;0.47;11;15.40;;12.91;12.09;11.88;22.79;Sbc;;;;;;;;2MASX J01570057-0005233,PGC 007326,SDSS J015700.57-000523.4,SDSS J015700.58-000523.4,SDSS J015700.58-000523.5;;; -IC0178;G;01:58:54.87;+36:40:28.9;And;0.94;0.79;159;14.00;;11.07;10.40;10.10;22.55;Sab;;;;;;;;2MASX J01585479+3640299,IRAS 01559+3625,MCG +06-05-070,PGC 007488,UGC 01456;;; -IC0179;G;02:00:11.50;+38:01:16.8;And;1.12;0.90;111;13.40;;10.43;9.74;9.47;22.67;E;;;;;;;;2MASX J02001151+3801171,MCG +06-05-075,PGC 007581,UGC 01475;;; -IC0180;G;02:00:00.41;+23:36:15.6;Ari;0.83;0.34;150;15.30;;11.81;11.15;10.85;23.04;Sb;;;;;;;;2MASX J02000040+2336156,MCG +04-05-029,PGC 007558;;; -IC0181;G;02:00:02.33;+23:39:31.1;Ari;0.57;0.49;55;15.70;;12.73;11.97;11.75;23.43;;;;;;;;;2MASX J02000236+2339306,MCG +04-05-030,PGC 007559;;; -IC0182;G;01:59:51.81;+07:24:42.6;Psc;1.06;0.70;36;14.60;;12.07;11.55;11.17;23.26;Sb;;;;;;;;2MASX J01595182+0724424,IRAS 01572+0710,MCG +01-06-026,PGC 007556,UGC 01473;;; -IC0183;G;01:59:34.05;-05:20:49.7;Cet;1.19;0.37;98;14.89;;11.47;10.84;10.63;23.88;S0;;;;;;;;2MASX J01593403-0520495,MCG -01-06-015,PGC 007538;;;B-Mag taken from LEDA. -IC0184;G;01:59:51.23;-06:50:25.4;Cet;1.12;0.59;178;14.92;14.10;11.59;10.92;10.62;23.35;SBa;;;;;;;;2MASX J01595121-0650253,MCG -01-06-021,PGC 007554;;; -IC0185;G;02:00:06.04;-01:31:42.0;Cet;0.79;0.33;82;15.72;;12.39;11.58;11.40;23.46;Sab;;;;;;;;2MASX J02000603-0131420,MCG +00-06-019,PGC 007576;;;B-Mag taken from LEDA. -IC0186;GTrpl;02:00:24.50;-01:33:06.2;Cet;1.10;;;;;;;;;;;;;;;;;;;Contains the GPair MCG +00-06-021.;Diameter of the group inferred by the author. -IC0186A;G;02:00:24.00;-01:33:10.3;Cet;1.21;0.76;33;15.30;;11.74;10.56;10.52;23.56;S0;;;;;;;;2MASX J02002399-0133100,MCG +00-06-020,PGC 007599;;MCG lists both this and MCG +00-06-021 as IC 0186.; -IC0186B;G;02:00:25.45;-01:32:59.3;Cet;0.69;0.47;0;15.50;;;;;23.74;;;;;;;;;MCG +00-06-021,PGC 007600;;Part of the GTrpl IC 0186. MCG lists both this and MCG +00-06-020 as IC 0186.; -IC0186 NED03;G;02:00:25.40;-01:33:03.0;Cet;;;;;;;;;;;;;;;;;;MCG +00-06-021 NED02;;;No data available in LEDA -IC0187;G;02:01:30.76;+26:28:51.5;Ari;2.23;0.73;70;13.90;;11.08;10.36;10.10;23.83;Sa;;;;;;;;2MASX J02013075+2628515,IRAS 01587+2614,MCG +04-05-037,PGC 007683,UGC 01507;;; -IC0188;G;02:01:46.50;+26:32:48.8;Ari;0.54;0.28;46;14.40;;11.94;11.18;10.78;21.27;SABc;;;;;;;;2MASX J02014649+2632491,IRAS 01589+2618,MCG +04-05-038,PGC 007706,UGC 01510;;; -IC0189;G;02:01:52.91;+23:33:05.4;Ari;0.78;0.67;86;13.72;;12.38;11.60;11.26;23.18;SBc;;;;;;;;2MASX J02015290+2333057,IRAS 01590+2318,MCG +04-05-039,PGC 007716;;; -IC0190;G;02:02:07.28;+23:32:59.4;Ari;0.25;0.20;95;15.10;;11.90;11.21;10.91;;E;;;;;;;;2MASX J02020727+2332596,MCG +04-05-040,PGC 007731;;; -IC0191;Dup;02:02:29.33;+18:22:22.8;Ari;;;;;;;;;;;;;;;0794;;;;;; -IC0192;G;02:02:32.39;+16:00:51.0;Ari;0.95;0.67;148;14.80;;11.64;11.11;10.74;23.51;S0;;;;;;;;2MASX J02023238+1600509,MCG +03-06-025,PGC 007768,UGC 01530;;; -IC0193;G;02:02:30.98;+11:05:35.1;Ari;1.36;0.97;154;14.70;;11.11;10.48;10.61;23.58;Sc;;;;;;;;2MASX J02023096+1105352,MCG +02-06-016,PGC 007765,UGC 01529;;; -IC0194;G;02:03:05.22;+02:36:51.3;Psc;1.85;0.33;14;15.40;;11.68;10.86;10.53;24.00;Sb;;;;;;;;2MASX J02030523+0236514,MCG +00-06-026,PGC 007812,UGC 01542;;; -IC0195;G;02:03:44.61;+14:42:33.4;Ari;1.46;0.72;135;14.30;;11.21;10.49;10.28;23.63;S0;;;;;;;;2MASX J02034457+1442334,MCG +02-06-017,PGC 007846,SDSS J020344.59+144233.4,SDSS J020344.60+144233.4,SDSS J020344.61+144233.4,UGC 01555;;; -IC0196;G;02:03:49.80;+14:44:20.9;Ari;2.47;0.67;9;14.20;;10.79;10.06;9.77;24.13;Sab;;;;;;;;2MASX J02034980+1444204,MCG +02-06-018,PGC 007856,SDSS J020349.78+144420.9,SDSS J020349.79+144420.8,SDSS J020349.80+144420.9,UGC 01556;;; -IC0197;G;02:04:04.93;+02:47:12.6;Psc;1.01;0.53;54;14.30;;11.90;11.09;10.85;22.69;Sbc;;;;;;;;2MASX J02040493+0247125,IRAS 02015+0232,MCG +00-06-027,PGC 007875,UGC 01564;;; -IC0198;G;02:06:03.12;+09:17:44.0;Cet;1.01;0.56;51;14.80;;12.15;11.52;11.09;23.21;Sbc;;;;;;;;2MASX J02060312+0917439,MCG +01-06-040,PGC 008011,UGC 01592;;; -IC0199;G;02:06:19.40;+09:13:38.7;Cet;1.28;0.56;24;15.40;;11.98;11.18;10.97;24.07;Sab;;;;;;1778;;2MASX J02061940+0913386,MCG +01-06-041,PGC 008026,UGC 01594;;; -IC0200;G;02:05:26.64;+31:10:31.2;Tri;1.38;1.06;92;14.00;;11.20;10.50;10.10;23.24;Sb;;;;;;;;2MASX J02052662+3110312,IRAS 02025+3056,MCG +05-06-002,PGC 007967,UGC 01577;;; -IC0201;G;02:07:15.29;+09:06:54.2;Cet;0.54;0.50;60;16.77;;13.13;12.56;12.34;23.89;;;;;;;;;2MASX J02071528+0906548,PGC 212916;;;B-Mag taken from LEDA. -IC0202;G;02:07:28.66;+09:10:05.9;Cet;1.35;0.36;131;15.30;;12.24;11.42;11.04;23.81;Sb;;;;;;;;2MASX J02072865+0910059,MCG +01-06-043,PGC 008101,UGC 01610;;; -IC0203;G;02:07:29.65;+09:07:21.5;Cet;0.60;0.51;10;16.90;;13.02;12.16;11.85;24.52;;;;;;;;;2MASX J02072966+0907219,LEDA 212915;;;B-Mag taken from LEDA. -IC0204;G;02:07:27.08;-01:25:48.7;Cet;0.55;0.36;155;15.70;;12.76;12.11;11.69;23.02;Sab;;;;;;;;2MASX J02072707-0125482,PGC 008100;;; -IC0205;G;02:07:27.43;-02:05:28.6;Cet;0.92;0.82;40;14.80;;11.95;11.22;11.03;23.21;Sa;;;;;;;;2MASX J02072743-0205284,MCG +00-06-034,PGC 008098,UGC 01613;;; -IC0206;G;02:09:30.68;-06:58:06.2;Cet;1.22;0.39;130;14.80;;12.43;11.74;11.55;23.42;S0;;;;;;;;2MASX J02093067-0658061,MCG -01-06-053,PGC 008238;;; -IC0207;G;02:09:39.35;-06:55:19.9;Cet;1.81;0.45;98;14.51;;11.26;10.52;10.17;24.43;S0-a;;;;;;;;2MASX J02093935-0655196,IRAS 02071-0709,MCG -01-06-054,PGC 008251;;; -IC0208;G;02:08:27.74;+06:23:41.7;Cet;1.32;1.13;168;14.80;;11.85;11.12;10.68;23.93;Sbc;;;;;;;;2MASX J02082773+0623415,MCG +01-06-044,PGC 008167,SDSS J020827.75+062342.1,UGC 01635;;; -IC0209;G;02:08:58.71;-07:03:32.1;Cet;1.51;1.03;82;13.81;;11.15;10.63;10.27;23.09;SBbc;;;;;;;;2MASX J02085870-0703320,IRAS 02064-0717,MCG -01-06-051,PGC 008200;;HOLM 056B is a star.;B-Mag taken from LEDA. -IC0210;G;02:09:28.28;-09:40:49.2;Cet;2.35;0.65;66;13.70;;10.50;9.74;9.37;23.44;SBbc;;;;;;;;2MASX J02092822-0940481,IRAS 02070-0954,MCG -02-06-032,PGC 008232,SDSS J020928.28-094049.1;;Confused HIPASS source; -IC0211;G;02:11:08.00;+03:51:09.0;Cet;1.66;0.76;56;14.50;;12.44;11.64;11.48;23.29;SABc;;;;;;;;2MASX J02110799+0351089,IRAS 02085+0337,MCG +01-06-053,PGC 008360,SDSS J021107.97+035108.9,UGC 01678;;; -IC0212;G;02:13:38.26;+16:35:38.2;Ari;0.79;0.54;84;15.60;;12.91;12.21;11.78;23.67;Sbc;;;;;;;;IRAS 02108+1621,PGC 008527;;; -IC0213;G;02:14:04.28;+16:27:21.2;Ari;1.43;1.01;148;15.40;;11.27;10.59;10.14;24.46;SABb;;;;;;;;2MASX J02140427+1627212,MCG +03-06-046,PGC 008556,UGC 01719;;; -IC0214;G;02:14:05.59;+05:10:23.7;Cet;0.58;0.45;65;14.40;;12.29;11.42;11.00;22.07;Sbc;;;;;;;;IRAS 02114+0456,MCG +01-06-057,PGC 008562,UGC 01720;;Noted as a pair in UGC and a group of four in MCG.; -IC0215;G;02:14:09.46;-06:48:22.8;Cet;0.84;0.19;78;15.62;;12.05;11.39;11.13;23.01;Sb;;;;;;;;2MASX J02140946-0648228,IRAS 02116-0702,MCG -01-06-076,PGC 008566;;;B-Mag taken from LEDA. -IC0216;G;02:15:55.52;-02:00:54.4;Cet;0.50;0.32;25;15.70;;13.32;12.67;12.43;23.14;S0-a;;;;;;;;2MASX J02155550-0200546,PGC 008650;;; -IC0217;G;02:16:10.44;-11:55:36.2;Cet;2.00;0.45;35;16.52;;11.69;11.08;10.75;23.76;Sc;;;;;;1787;;2MASX J02161043-1155361,IRAS 02137-1209,MCG -02-06-046,PGC 008673;;; -IC0218;G;02:17:07.25;+01:16:56.4;Cet;0.91;0.30;75;15.70;;12.24;11.37;11.38;23.30;Sbc;;;;;;;;2MASX J02170726+0116570,MCG +00-06-061,PGC 008716;;; -IC0219;G;02:18:38.83;-06:54:12.0;Cet;1.56;1.19;177;14.44;;10.98;10.24;9.98;24.27;E;;;;;;;;2MASX J02183884-0654118,MCG -01-06-088,PGC 008813,SDSS J021838.82-065412.0;;;B-Mag taken from LEDA. -IC0220;G;02:19:11.73;-12:46:53.9;Cet;0.67;0.32;34;15.08;;12.06;11.33;10.96;22.94;Sb;;;;;;;;2MASX J02191172-1246536,IRAS 02167-1300,MCG -02-06-057,PGC 008847;;;B-Mag taken from LEDA. -IC0221;G;02:22:40.90;+28:15:25.1;Tri;1.54;1.19;16;13.90;;10.86;10.13;9.89;23.28;Sc;;;;;;;;2MASX J02224090+2815253,IRAS 02197+2801,MCG +05-06-034,PGC 009035,UGC 01835;;; -IC0222;G;02:22:47.85;+11:38:18.0;Ari;0.84;0.65;42;14.50;;11.86;11.09;10.72;23.36;SABa;;;;;;;;2MASX J02224783+1138182,IRAS 02201+1124,MCG +02-07-004,PGC 009036;;; -IC0223;G;02:22:01.10;-20:44:45.3;Cet;1.15;0.59;143;14.04;;15.29;14.89;14.65;22.54;IB;;;;;;;;ESO 545-008,ESO-LV 545-0080,IRAS 02197-2058,MCG -04-06-031,PGC 008998;;; -IC0224;G;02:24:45.14;-12:33:52.1;Cet;0.86;0.59;130;15.00;;12.02;11.38;11.08;23.16;Sab;;;;;;;;2MASX J02244515-1233521,MCG -02-07-005,PGC 009148;;;B-Mag taken from LEDA. -IC0225;G;02:26:28.29;+01:09:37.9;Cet;1.01;0.90;158;14.70;;12.70;12.23;11.97;23.45;E;;;;;;;;2MASX J02262825+0109374,MCG +00-07-013,PGC 009283,SDSS J022628.28+010937.7,SDSS J022628.28+010937.8,SDSS J022628.28+010938.0,SDSS J022628.29+010937.9,UGC 01907;;; -IC0226;G;02:27:45.93;+28:12:31.8;Tri;0.81;0.72;55;16.00;;11.38;10.63;10.21;23.92;E;;;;;;;;2MASX J02274583+2812332,MCG +05-06-046,PGC 009373,UGC 01922;;; -IC0227;G;02:28:03.61;+28:10:31.2;Tri;2.01;1.77;80;15.50;;10.56;9.75;9.49;25.78;E;;;;;;;;2MASX J02280361+2810312,MCG +05-06-048,PGC 009383,UGC 01932;;; -IC0228;Dup;02:26:41.53;-14:30:56.3;Cet;;;;;;;;;;;;;;;0944;;;;;; -IC0229;Other;02:27:22.09;-23:48:46.8;Cet;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0230;G;02:28:47.29;-10:49:52.9;Cet;0.64;0.42;87;15.54;;12.47;11.95;11.70;23.42;S0-a;;;;;;;;2MASX J02284729-1049531,MCG -02-07-016,PGC 009436;;;B-Mag taken from LEDA. -IC0231;G;02:29:56.39;+01:10:44.7;Cet;0.74;0.33;162;15.00;;11.95;11.16;11.00;23.31;S0;;;;;;;;2MASX J02295638+0110441,MCG +00-07-025,PGC 009514,SDSS J022956.38+011044.6,SDSS J022956.39+011044.6,SDSS J022956.39+011044.7,UGC 01978;;; -IC0232;G;02:31:11.62;+01:15:56.3;Cet;1.10;0.67;154;14.20;;11.21;10.55;10.31;23.42;E;;;;;;;;2MASX J02311162+0115565,MCG +00-07-028,PGC 009588,SDSS J023111.62+011556.3,UGC 01994;;; -IC0233;G;02:31:40.70;+02:48:35.7;Cet;0.33;0.26;100;15.70;;13.50;13.04;12.65;21.68;Sbc;;;;;;;;2MASX J02314070+0248357,PGC 009622;;; -IC0234;G;02:31:37.72;-00:08:24.9;Cet;0.69;0.35;158;15.20;;12.94;12.24;11.75;22.81;SBc;;;;;;;;2MASX J02313771-0008237,IRAS 02290-0021,PGC 009613,SDSS J023137.71-000824.9,SDSS J023137.72-000824.9,SDSS J023137.72-000825.0;;; -IC0235;G;02:32:50.79;+20:38:28.5;Ari;0.39;0.30;35;14.50;;12.68;12.04;11.74;21.56;;;;;;;;;2MASX J02325079+2038285,IRAS 02300+2025,PGC 009698,SDSS J023250.79+203828.3,UGC 02016;;; -IC0236;G;02:32:55.81;-00:07:52.5;Cet;0.74;0.37;23;15.87;;12.56;11.80;11.54;23.88;S0-a;;;;;;;;2MASX J02325583-0007527,LEDA 1151183,SDSS J023255.80-000752.4,SDSS J023255.80-000752.5,SDSS J023255.81-000752.3,SDSS J023255.81-000752.5;;; -IC0237;G;02:33:31.57;+01:08:23.6;Cet;0.54;0.51;11;14.60;;12.18;11.59;11.26;22.32;SBb;;;;;;;;2MASX J02333157+0108236,MCG +00-07-042,PGC 009742,SDSS J023331.56+010823.6,SDSS J023331.57+010823.6;;; -IC0238;G;02:35:22.68;+12:50:15.8;Ari;1.38;0.79;35;14.10;;10.60;9.87;9.52;23.54;S0;;;;;;;;2MASX J02352268+1250156,MCG +02-07-016,PGC 009835,UGC 02070;;; -IC0239;G;02:36:27.88;+38:58:11.7;And;4.25;4.01;75;12.10;;9.54;9.09;8.78;23.72;SABc;;;;;;;;2MASX J02362783+3858085,IRAS 02333+3845,MCG +06-06-065,PGC 009899,UGC 02080;;; -IC0240;Other;02:38:58.57;+41:43:09.9;Per;;;;;;;;;;;;;;;;;;;;Line of 3-4 Galactic stars.; -IC0241;G;02:37:54.50;+02:19:40.9;Cet;0.90;0.59;152;14.50;;11.54;10.90;10.56;23.12;E-S0;;;;;;;;2MASX J02375452+0219410,MCG +00-07-058,PGC 009969,UGC 02115;;; -IC0242;**;02:38:23.93;-06:56:02.2;Cet;;;;;;;;;;;;;;;;;;;;IC 0242 is a Galactic double star.; -IC0243;G;02:38:32.16;-06:54:07.7;Cet;1.22;0.70;20;15.46;;11.61;10.91;10.53;24.22;Sa;;;;;;;;2MASX J02383216-0654076,MCG -01-07-026,PGC 010009;;;B-Mag taken from LEDA. -IC0244;G;02:39:24.73;+02:43:43.7;Cet;0.70;0.47;176;15.30;;12.79;12.15;11.75;22.95;SABc;;;;;;;;2MASX J02392473+0243436,MCG +00-07-074,PGC 010061;;; -IC0245;G;02:38:54.64;-14:18:20.0;Cet;1.11;0.29;25;15.11;;12.27;11.59;11.34;22.95;Sbc;;;;;;;;2MASX J02385464-1418200,IRAS 02365-1431,MCG -03-07-046,PGC 010032;;; -IC0246;G;02:40:28.60;+02:28:43.1;Cet;0.69;0.61;48;15.50;;11.76;11.28;10.79;23.40;S0;;;;;;;;2MASX J02402858+0228433,MCG +00-07-078,PGC 010116;;; -IC0247;G;02:40:08.78;-11:44:01.6;Cet;0.88;0.64;45;14.74;;11.59;10.88;10.55;22.96;SBbc;;;;;;;;2MASX J02400879-1144017,MCG -02-07-052,PGC 010100;;;B-Mag taken from LEDA. -IC0248;G;02:41:25.83;+17:48:44.0;Ari;0.99;0.74;147;14.40;;11.08;10.30;9.98;22.92;Sa;;;;;;;;2MASX J02412581+1748438,IRAS 02386+1735,MCG +03-07-044,PGC 010197,UGC 02170;;; -IC0249;Dup;02:41:02.49;-06:56:09.3;Cet;;;;;;;;;;;;;;;0961;;;;;; -IC0250;G;02:40:54.27;-13:18:48.8;Cet;0.91;0.73;178;15.05;;12.20;11.64;11.31;23.42;SABb;;;;;;;;2MASX J02405425-1318486,MCG -02-07-064,PGC 010162;;;B-Mag taken from LEDA. -IC0251;G;02:41:13.85;-14:57:28.2;Cet;0.84;0.74;96;15.00;;11.91;11.25;10.79;23.41;E;;;;;;;;2MASX J02411385-1457276,MCG -03-07-054,PGC 010184;;;B-Mag taken from LEDA. -IC0252;G;02:41:45.13;-14:50:53.7;Cet;1.01;0.62;26;15.20;;11.96;11.27;11.07;23.86;S0-a;;;;;;;;2MASX J02414512-1450537,LEDA 144971;;; -IC0253;G;02:42:05.75;-15:02:48.6;Cet;0.95;0.74;162;14.87;;11.44;10.76;10.47;23.46;S0;;;;;;;;2MASX J02420573-1502489,MCG -03-07-058,PGC 010226;;;B-Mag taken from LEDA. -IC0254;G;02:42:04.98;-15:06:23.9;Cet;0.26;0.25;55;14.91;;12.68;11.96;11.73;;;;;;;;;;2MASX J02420497-1506239;;;B-Mag taken from LEDA. -IC0255;G;02:47:03.21;+16:17:16.9;Ari;0.59;0.40;45;15.70;;13.19;12.32;12.32;23.19;SABb;;;;;;;;2MASX J02470319+1617167,MCG +03-08-008,PGC 010540;;; -IC0256;G;02:49:40.30;+46:57:16.8;Per;0.46;0.29;30;14.31;;12.12;11.30;11.12;;E;;;;;;;;2MASX J02494026+4657162,PGC 010737;;; -IC0257;G;02:49:45.44;+46:58:34.3;Per;1.93;1.19;154;14.50;;;;;24.12;E;;;;;;;;MCG +08-06-011,PGC 010729,UGC 02298;;; -IC0258;G;02:49:46.10;+41:03:06.0;Per;1.48;1.23;170;15.60;;11.61;10.84;10.59;25.10;S0-a;;;;;;;;2MASX J02494600+4103062,IRAS 02465+4050,PGC 010730,UGC 02306;;Incorrectly called IC 0259 in CGCG.; -IC0259;G;02:49:40.88;+41:03:18.4;Per;0.69;0.53;130;15.50;;11.78;11.11;10.84;23.30;S0;;;;;;;;2MASX J02494087+4103182,PGC 010721;;Incorrectly called IC 0258 in CGCG.; -IC0260;G;02:51:00.88;+46:57:17.2;Per;1.53;0.75;170;15.20;;10.52;9.85;9.50;24.64;E;;;;;;;;2MASX J02510087+4657175,MCG +08-06-014,PGC 010812,UGC 02325;;One of two 6cm sources associated with [WB92] 0247+4645; -IC0261;Dup;02:49:04.09;-14:28:14.5;Eri;;;;;;;;;;;;;;;1120;;;;;; -IC0262;G;02:51:43.27;+42:49:41.8;Per;2.10;1.74;36;14.80;;10.97;10.27;9.92;25.05;S0;;;;;;;;2MASX J02514329+4249416,MCG +07-06-080,PGC 010850,SDSS J025143.25+424942.1,UGC 02335;;; -IC0263;G;02:49:39.96;-00:04:11.5;Cet;0.65;0.44;168;15.04;;12.13;11.40;11.14;22.65;S0-a;;;;;;;;2MASX J02494000-0004110,IRAS 02471-0016,PGC 010716,SDSS J024939.96-000411.4,SDSS J024939.96-000411.5,SDSS J024939.96-000411.6;;; -IC0264;G;02:48:47.62;-00:06:33.1;Cet;0.50;0.37;28;17.53;16.88;12.93;12.29;12.00;23.25;E;;;;;;;;2MASX J02484759-0006329,PGC 010644,SDSS J024847.62-000633.0,SDSS J024847.62-000633.1;;; -IC0265;G;02:54:43.98;+41:39:19.2;Per;0.71;0.63;60;15.70;;11.46;10.78;10.51;23.64;E;;;;;;;;2MASX J02544397+4139188,MCG +07-07-006,PGC 010978;;; -IC0266;G;02:55:04.83;+42:15:44.4;Per;0.74;0.31;136;15.70;;11.04;10.39;10.08;24.09;S0-a;;;;;;;;2MASX J02550488+4215438,MCG +07-07-010,PGC 011002;;; -IC0267;G;02:53:50.25;+12:50:57.2;Ari;1.86;0.69;170;14.10;;10.77;10.03;9.73;23.27;Sb;;;;;;;;2MASX J02535024+1250568,IRAS 02511+1238,MCG +02-08-028,PGC 010932,UGC 02368;;; -IC0268;G;02:55:26.95;-14:06:10.8;Eri;0.97;0.55;68;15.31;;12.77;12.09;11.59;23.63;SABa;;;;;;;;2MASX J02552693-1406106,MCG -02-08-024,PGC 011032;;;B-Mag taken from LEDA. -IC0269;G;02:55:26.49;-14:04:00.5;Eri;1.19;0.35;126;15.34;;11.56;10.79;10.71;24.20;S0-a;;;;;;;;2MASX J02552652-1404006,MCG -02-08-023,PGC 011033;;;B-Mag taken from LEDA. -IC0270;G;02:55:44.19;-14:12:28.4;Eri;1.80;1.43;51;14.14;;10.17;9.53;9.21;24.00;E-S0;;;;;;;;2MASX J02554422-1412278,MCG -02-08-028,PGC 011061;;;B-Mag taken from LEDA. -IC0271;G;02:55:59.45;-12:00:28.3;Eri;1.06;0.61;131;14.73;;;;;23.56;S0-a;;;;;;;;MCG -02-08-029,PGC 011078;;; -IC0272;G;02:56:06.44;-14:11:11.9;Eri;0.96;0.67;30;14.86;;11.72;10.93;10.73;23.22;Sbc;;;;;;;;2MASX J02560643-1411119,MCG -02-08-030,PGC 011086;;;B-Mag taken from LEDA. -IC0273;G;02:57:10.78;+02:46:30.2;Cet;1.49;0.46;32;14.40;;11.22;10.52;10.19;23.62;Sa;;;;;;;;2MASX J02571077+0246302,IRAS 02546+0234,MCG +00-08-052,PGC 011156,UGC 02425;;; -IC0274;Other;03:00:05.23;+44:12:47.4;Per;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing obvious here."; -IC0275;GTrpl;03:00:57.30;+44:20:54.0;Per;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC0275 NED01;G;03:00:55.87;+44:20:46.7;Per;;;;;;;;;;;;;;;;;;2MASS J03005582+4420463,PGC 011388;;;No diameter data available in LEDA -IC0275 NED02;G;03:00:55.90;+44:21:01.3;Per;1.38;1.20;25;14.44;;11.00;10.38;9.88;24.01;E;;;;;;;;2MASX J03005590+4421014,PGC 011389;;;B-Mag taken from LEDA. -IC0275 NED03;G;03:00:58.67;+44:21:00.6;Per;;;;16.56;;;;;;;;;;;;;;2MASS J03005867+4421000,PGC 011390;;;B-Mag taken from LEDA. No diameter data available in LEDA -IC0276;G;02:58:41.06;-15:42:11.2;Eri;1.67;0.61;62;14.09;;10.84;10.21;10.17;23.91;S0;;;;;;;;2MASX J02584169-1542067,MCG -03-08-054,PGC 011264;;; -IC0277;G;02:59:50.60;+02:46:16.9;Cet;1.00;0.89;44;13.80;15.50;11.17;10.43;10.11;22.54;SBbc;;;;;;;;2MASX J02595060+0246168,IRAS 02572+0234,MCG +00-08-064,PGC 011336,UGC 02460;;; -IC0278;G;03:01:30.44;+37:45:57.6;Per;2.17;2.17;125;14.80;;10.60;9.87;9.59;25.25;E;;;;;;;;2MASX J03013044+3745578,MCG +06-07-032,PGC 011414,UGC 02481;;; -IC0279;G;03:01:12.21;+16:12:33.2;Ari;0.54;0.45;166;15.20;;12.26;11.50;11.20;22.75;Sbc;;;;;;;;2MASX J03011222+1612331,PGC 011401;;; -IC0280;Other;03:03:03.61;+42:21:33.5;Per;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -IC0281;Dup;03:04:37.13;+42:21:46.2;Per;;;;;;;;;;;;;;;1177;;;;;; -IC0282;Dup;03:06:13.24;+41:50:56.2;Per;;;;;;;;;;;;;;;1198;;;;;; -IC0283;G;03:03:50.46;-00:12:16.0;Cet;0.71;0.54;5;18.60;17.93;12.68;11.98;11.66;22.98;Sc;;;;;;;;2MASX J03035045-0012159,IRAS 03012-0024,MCG +00-08-076,PGC 011539,SDSS J030350.45-001215.9,SDSS J030350.46-001215.9;;; -IC0284;G;03:06:09.91;+42:22:18.9;Per;4.29;2.15;14;13.80;;10.03;9.81;9.28;23.82;Sd;;;;;;;;2MASX J03060989+4222189,IRAS 03029+4211,MCG +07-07-023,PGC 011643,UGC 02531;;; -IC0285;G;03:04:06.22;-12:00:55.6;Eri;1.45;0.36;117;15.02;;11.62;11.13;10.90;23.45;Sbc;;;;;;;;2MASX J03040620-1200556,MCG -02-08-044,PGC 011557;;;B-Mag taken from LEDA. -IC0286;Other;03:04:47.22;-06:29:04.3;Eri;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0287;G;03:04:57.82;-12:04:13.6;Eri;0.81;0.59;9;15.22;;11.69;10.96;10.76;23.37;Sc;;;;;;;;2MASX J03045782-1204137,LEDA 170040;;; -IC0288;G;03:07:32.91;+42:23:15.2;Per;1.01;0.28;41;15.00;;10.57;9.80;9.45;22.98;Sab;;;;;;;;2MASX J03073290+4223151,MCG +07-07-027,PGC 011702,UGC 02544;;; -IC0289;PN;03:10:19.26;+61:19:00.4;Cas;0.58;;;12.30;13.20;15.59;15.62;15.14;;;;15.10;15.90;;;;;IRAS 03062+6107,PK 138+02 1,PN G138.8+02.8;;; -IC0290;G;03:09:42.74;+40:58:27.2;Per;1.24;0.32;129;15.50;;12.02;11.27;11.06;23.74;Sb;;;;;;1884;;2MASX J03094272+4058269,PGC 011817,UGC 02561;;; -IC0291;G;03:07:26.45;-12:35:14.8;Eri;1.19;0.52;91;14.65;;11.60;10.91;10.65;23.51;S0-a;;;;;;;;2MASX J03072644-1235147,IRAS 03050-1246,MCG -02-09-001,PGC 011699;;;B-Mag taken from LEDA. -IC0292;G;03:10:12.92;+40:45:56.4;Per;1.19;0.65;73;14.30;;11.25;10.52;10.25;22.78;Scd;;;;;;1887;;2MASX J03101293+4045564,IRAS 03069+4034,MCG +07-07-030,PGC 011846,UGC 02567;;; -IC0293;G;03:10:56.16;+41:08:13.6;Per;1.05;0.76;108;15.70;;11.37;10.64;10.39;24.14;S0-a;;;;;;1888;;2MASX J03105615+4108135,MCG +07-07-031,PGC 011873;;; -IC0294;G;03:11:03.11;+40:37:19.6;Per;1.49;1.17;106;15.60;;10.66;9.97;9.72;24.73;S0-a;;;;;;1889;;2MASX J03110311+4037195,MCG +07-07-033,PGC 011878,UGC 02574;;; -IC0295;Other;03:11:00.74;+40:36:54.9;Per;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0296;Other;03:11:04.77;+40:37:36.7;Per;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0297;**;03:13:18.38;+42:08:55.6;Per;;;;;;;;;;;;;;;;;;;;The identity as IC 0297 is not certain.; -IC0298;GPair;03:11:18.90;+01:18:53.0;Cet;0.80;;;;;;;;;;;;;;;;;MCG +00-09-015;;;Diameter of the group inferred by the author. -IC0298A;G;03:11:18.50;+01:18:54.1;Cet;0.54;0.34;35;15.50;;14.17;13.64;12.92;23.52;;;;;;;;;2MASX J03111863+0118498,MCG +00-09-015 NED01,PGC 1190197;;; -IC0298B;G;03:11:19.53;+01:18:48.2;Cet;0.43;0.33;5;;;;;;;Sbc;;;;;;;;2MASX J03111950+0118478,IRAS 03087+0107,MCG +00-09-015 NED02,PGC 011890;;; -IC0299;G;03:11:02.55;-13:06:34.5;Eri;0.87;0.68;30;15.51;;12.10;11.54;11.16;23.87;S0-a;;;;;;;;2MASX J03110251-1306342,LEDA 942795;;; -IC0300;G;03:14:16.02;+42:24:55.2;Per;0.65;0.60;115;16.06;;12.15;11.51;11.14;23.98;E;;;;;;;;2MASX J03141604+4224550,PGC 2198416;;;B-Mag taken from LEDA. -IC0301;G;03:14:47.71;+42:13:21.5;Per;1.26;1.11;177;15.20;;10.60;9.82;9.50;24.09;E;;;;;;;;2MASX J03144769+4213212,MCG +07-07-036,PGC 012074,UGC 02606;;; -IC0302;G;03:12:51.27;+04:42:25.3;Cet;1.84;1.20;22;13.81;13.00;10.64;9.99;9.64;23.34;Sbc;;;;;;;;2MASX J03125128+0442251,IRAS 03102+0431,MCG +01-09-002,PGC 011972,SDSS J031251.27+044225.3,UGC 02595;;; -IC0303;G;03:12:40.87;-11:41:23.8;Eri;0.59;0.46;47;15.82;;12.31;11.73;11.69;23.56;;;;;;;;;2MASX J03124084-1141231,LEDA 962881;;; -IC0304;G;03:15:01.37;+37:52:54.6;Per;1.06;0.65;29;14.80;;11.37;10.66;10.34;23.26;Sb;;;;;;;;2MASX J03150136+3752544,IRAS 03118+3741,MCG +06-08-005,PGC 012080,UGC 02609;;; -IC0305;G;03:15:03.80;+37:51:36.0;Per;0.79;0.64;74;15.70;;11.01;10.27;9.99;23.77;E;;;;;;;;2MASX J03150381+3751364,MCG +06-08-006,PGC 012083;;; -IC0306;G;03:13:00.21;-11:42:56.5;Eri;0.71;0.58;79;15.37;;12.69;11.90;11.66;23.13;SABc;;;;;;;;2MASX J03130021-1142562,MCG -02-09-015,PGC 011985;;; -IC0307;G;03:13:45.21;-00:14:29.2;Cet;1.60;0.60;67;14.60;;11.20;10.44;10.09;23.89;Sa;;;;;;;;2MASX J03134522-0014295,IRAS 03112-0025,MCG +00-09-027,PGC 012017,SDSS J031345.21-001429.1,SDSS J031345.21-001429.2,UGC 02600;;; -IC0308;G;03:16:15.83;+41:10:50.7;Per;1.16;0.93;4;16.50;;11.38;10.61;10.33;24.44;S0;;;;;;;;2MASX J03161580+4110507,PGC 012152,UGC 02619;;; -IC0309;G;03:16:06.29;+40:48:16.4;Per;1.02;0.95;30;14.90;;10.97;10.22;9.99;23.54;S0;;;;;;;;2MASX J03160629+4048161,MCG +07-07-043,PGC 012141;;; -IC0310;G;03:16:42.98;+41:19:29.9;Per;1.50;1.42;25;14.30;;10.25;9.47;9.15;23.49;S0;;;;;;;;2MASX J03164302+4119291,IRAS 03135+4108,MCG +07-07-045,PGC 012171,UGC 02624;;; -IC0311;G;03:16:46.73;+40:00:13.0;Per;1.00;1.00;100;15.70;;10.53;9.71;9.40;24.39;Sb;;;;;;;;2MASX J03164671+4000132,PGC 012177,UGC 02625;;; -IC0312;G;03:18:08.61;+41:45:14.8;Per;1.19;0.57;125;14.90;;10.79;10.01;9.78;23.84;E;;;;;;;;2MASX J03180835+4145157,MCG +07-07-051,PGC 012279,UGC 02644;;; -IC0313;G;03:20:57.90;+41:53:37.8;Per;1.26;0.87;42;15.10;;10.86;10.12;9.82;24.18;E;;;;;;;;2MASX J03205786+4153377,MCG +07-07-073,PGC 012558,UGC 02682;;; -IC0314;Dup;03:18:49.81;-01:58:24.0;Eri;;;;;;;;;;;;;;;1289;;;;;; -IC0315;G;03:19:09.34;+04:02:18.8;Cet;0.68;0.33;45;15.10;;11.91;11.17;10.85;;S0;;;;;;;;2MASX J03190932+0402184,PGC 012364;;; -IC0316;GPair;03:21:19.90;+41:55:50.0;Per;0.80;;;;;;;;;;;;;;;;;MCG +07-07-074;;; -IC0316 NED01;G;03:21:19.95;+41:55:44.2;Per;0.45;0.17;116;15.26;;;;;22.28;;;;;;;;;2MASSJ03211996+4155443,IRAS 03179+4145,MCG +07-07-074 NED01,PGC 012576,UGC 02688 NOTES01;;;B-Mag taken from LEDA. -IC0316 NED02;G;03:21:19.90;+41:55:54.9;Per;1.06;0.79;64;15.00;;11.50;10.84;10.47;23.64;S?;;;;;;;;2MASX J03211989+4155551,MCG +07-07-074 NED02,PGC 012578,UGC 02688;;; -IC0317;G;03:18:55.51;-12:44:24.7;Eri;0.88;0.71;58;14.87;;11.80;11.07;10.77;22.99;SABc;;;;;;;;2MASX J03185550-1244249,MCG -02-09-026,PGC 012346;;;B-Mag taken from LEDA. -IC0318;G;03:20:43.83;-14:34:05.6;Eri;1.08;0.45;134;14.72;;11.52;10.69;10.40;23.24;Sa;;;;;;;;2MASX J03204383-1434053,IRAS 03183-1444,MCG -03-09-023,PGC 012532;;;B-Mag taken from LEDA. -IC0319;*;03:23:29.05;+41:24:58.9;Per;;;;;;;;;;;;;;;;;;;;; -IC0320;G;03:25:59.18;+40:47:20.5;Per;1.12;0.91;99;15.40;;10.98;10.29;9.93;24.02;Sab;;;;;;;;2MASX J03255919+4047203,MCG +07-08-007,PGC 012819,UGC 02732;;; -IC0321;G;03:24:29.59;-14:59:07.7;Eri;1.03;0.95;25;14.79;;11.55;10.80;10.58;23.73;E;;;;;;;;2MASX J03242964-1459076,MCG -03-09-035,PGC 012742;;;B-Mag taken from LEDA. -IC0322;G;03:26:00.47;+03:40:50.0;Tau;0.76;0.38;6;15.40;;12.40;12.02;11.75;23.77;;;;;;;;;2MASX J03260046+0340498,PGC 012820;;; -IC0323;Other;03:29:33.55;+41:51:18.3;Per;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC0324;Dup;03:26:28.29;-21:21:19.1;Eri;;;;;;;;;;;;;;;1331;;;;;; -IC0325;G;03:30:48.86;-07:02:48.2;Eri;0.83;0.74;80;15.17;;12.54;11.88;11.54;23.80;Sab;;;;;;;;2MASX J03304887-0702478,PGC 1025189,SDSS J033048.85-070248.2,SDSS J033048.86-070248.2;;; -IC0326;G;03:30:36.61;-14:25:32.0;Eri;1.13;0.84;101;15.41;;11.45;10.86;10.41;24.21;E-S0;;;;;;;;2MASX J03303662-1425319,MCG -03-09-049,PGC 013030;;;B-Mag taken from LEDA. -IC0327;G;03:31:09.98;-14:41:31.7;Eri;0.80;0.47;70;15.21;;12.96;12.41;12.16;23.18;Sab;;;;;;;;2MASX J03310997-1441314,MCG -03-09-050,PGC 013057;;;B-Mag taken from LEDA. -IC0328;G;03:31:10.95;-14:38:16.3;Eri;0.67;0.48;16;14.59;;12.31;11.68;11.37;22.41;Sc;;;;;;;;2MASX J03311094-1438164,IRAS 03288-1448,MCG -03-09-051,PGC 013063;;;B-Mag taken from LEDA. -IC0329;G;03:32:01.37;+00:16:46.0;Tau;1.00;0.48;63;14.50;;11.74;11.08;10.80;24.02;E;;;;;;;;2MASX J03320135+0016456,MCG +00-10-001,PGC 013109,SDSS J033201.36+001646.0,SDSS J033201.37+001646.0,SDSS J033201.37+001646.1;;; -IC0330;G;03:32:08.03;+00:21:12.2;Tau;1.02;0.32;73;15.00;;11.88;11.14;10.87;23.43;SBab;;;;;;;;2MASX J03320801+0021127,MCG +00-10-002,PGC 013117,SDSS J033208.02+002112.1,SDSS J033208.03+002112.1,UGC 02779;;; -IC0331;G;03:32:19.08;+00:16:57.2;Tau;0.91;0.91;105;14.50;;11.42;10.66;10.43;23.51;E;;;;;;;;2MASX J03321908+0016567,MCG +00-10-003,PGC 013119,SDSS J033219.08+001657.2;;; -IC0332;G;03:32:37.42;+01:22:57.2;Tau;0.97;0.50;44;15.00;;11.58;11.02;10.54;23.81;S0-a;;;;;;;;2MASX J03323745+0122569,MCG +00-10-004,PGC 013137;;; -IC0333;Other;03:34:03.38;-04:35:05.6;Eri;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0334;G;03:45:17.08;+76:38:17.9;Cam;2.34;1.85;58;12.45;11.33;8.75;7.96;7.71;23.06;S?;;;;;;;;2MASX J03451709+7638177,MCG +13-03-007,PGC 013759,UGC 02824;;; -IC0335;G;03:35:31.04;-34:26:49.4;For;2.62;0.80;83;12.90;;10.11;9.47;9.15;23.73;S0;;;;;;1963;;2MASX J03353102-3426495,ESO 358-026,ESO-LV 358-0260,MCG -06-08-031,PGC 013277;;; -IC0336;Neb;03:37:57.04;+23:21:47.3;Tau;;;;;;;;;;;;;;;;;;;;; -IC0337;Other;03:37:04.30;-06:43:16.3;Eri;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0338;G;03:37:38.10;+03:07:07.6;Tau;0.84;0.68;176;15.00;;12.25;11.48;11.11;23.24;Sc;;;;;;;;2MASX J03373810+0307077,MCG +00-10-007,PGC 013373;;; -IC0339;*;03:38:02.23;-18:23:52.0;Eri;;;;;;;;;;;;;;;;;;;;; -IC0340;G;03:39:29.11;-13:06:54.4;Eri;1.61;0.58;90;14.76;;11.92;11.24;10.87;24.25;S0-a;;;;;;;;2MASX J03392911-1306544,MCG -02-10-005,PGC 013464,SDSS J033929.02-130655.1;;;B-Mag taken from LEDA. -IC0341;Neb;03:40:55.69;+21:57:36.7;Tau;134.90;;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC0342;G;03:46:48.50;+68:05:46.9;Cam;19.77;18.79;0;10.50;;5.66;5.01;4.56;24.85;SABc;;;;;;;;2MASX J03464851+6805459,C 005,IRAS 03419+6756,MCG +11-05-003,PGC 013826,UGC 02847;;; -IC0343;G;03:40:07.14;-18:26:36.5;Eri;1.51;0.66;113;14.17;13.19;11.32;10.72;10.50;23.67;S0-a;;;;;;;;2MASX J03400714-1826364,ESO 548-066,ESO-LV 548-0660,MCG -03-10-029,PGC 013495;;; -IC0344;G;03:41:29.53;-04:39:57.1;Eri;0.89;0.47;42;14.92;;12.50;11.78;11.93;22.89;SBbc;;;;;;;;2MASX J03412959-0439568,MCG -01-10-020,PGC 013568;;;B-Mag taken from LEDA. -IC0345;G;03:41:09.13;-18:18:50.9;Eri;0.88;0.73;37;14.57;;11.93;11.28;11.05;23.18;S0;;;;;;;;2MASX J03410912-1818510,ESO 548-074,ESO-LV 548-0740,MCG -03-10-032,PGC 013552;;; -IC0346;G;03:41:44.66;-18:16:01.1;Eri;1.95;1.47;69;13.53;;10.59;9.90;9.78;23.80;S0-a;;;;;;;;2MASX J03414466-1816014,ESO 548-078,ESO-LV 548-0780,MCG -03-10-035,PGC 013575;;; -IC0347;G;03:42:32.65;-04:17:55.1;Eri;1.37;1.02;138;13.50;;10.53;9.83;9.57;23.43;S0;;;;;;;;2MASX J03423266-0417551,IRAS 03399-0427,MCG -01-10-024,PGC 013622;;; -IC0348;Cl+N;03:44:34.19;+32:09:46.2;Per;10.00;10.00;;;;;;;;;;;;;;1985;;BD +31 0643,HIP 017465,LBN 758,MWSC 0301;omi Per Cloud;; -IC0349;RfN;03:46:20.11;+23:56:23.3;Tau;25.70;;;;;;;;;;;;;;;;;;Barnard's Merope Nebula;Part of the Merope Nebula = NGC 1435.;Dimensions taken from LEDA -IC0350;G;03:44:36.65;-11:48:02.7;Eri;1.09;0.79;165;14.41;;12.43;11.57;11.56;23.45;Sab;;;;;;;;2MASX J03443664-1148029,MCG -02-10-010,PGC 013731;;; -IC0351;PN;03:47:33.01;+35:02:48.9;Per;0.12;;;12.40;11.90;13.01;12.82;12.18;;;;15.90;15.80;;;;;2MASX J03473301+3502487,IRAS 03443+3453,PK 159-15 1,PN G159.0-15.1,TYC 2364-855-1;;; -IC0352;G;03:47:37.43;-08:43:54.6;Eri;0.70;0.48;119;15.65;;12.14;11.45;11.19;23.66;S0-a;;;;;;;;2MASX J03473743-0843546,LEDA 176624;;; -IC0353;Neb;03:53:01.07;+25:50:52.8;Tau;181.97;30.20;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC0354;Neb;03:53:57.91;+23:08:49.2;Tau;128.82;;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC0355;G;03:53:46.26;+19:58:26.1;Tau;0.67;0.56;161;15.40;15.40;11.95;11.03;10.83;23.21;Sc;;;;;;;;2MASX J03534627+1958259,IRAS 03509+1949,MCG +03-10-010,PGC 014052;;; -IC0356;G;04:07:46.91;+69:48:44.8;Cam;4.02;3.73;90;13.30;;7.16;6.33;6.04;23.27;Sb;;;;;;;;2MASX J04074690+6948447,IRAS 04025+6940,MCG +12-04-011,PGC 014508,UGC 02953;;; -IC0357;G;04:03:44.00;+22:09:32.8;Tau;0.94;0.61;147;14.30;;10.75;9.98;9.60;22.90;SBb;;;;;;;;2MASX J04034398+2209325,IRAS 04007+2201,MCG +04-10-016,PGC 014384,UGC 02941;;; -IC0358;G;04:03:42.88;+19:53:41.8;Tau;1.18;0.28;63;15.30;;11.12;10.32;10.04;24.19;S0;;;;;;;;2MASX J04034287+1953415,MCG +03-11-006,PGC 014382,UGC 02940;;; -IC0359;G;04:12:28.36;+27:42:07.1;Tau;1.30;1.30;105;15.40;;9.58;8.78;8.47;24.84;E;;;;;;;;2MASX J04122834+2742065,MCG +05-10-009,PGC 014653,UGC 02980;;; -IC0359A;RfN;04:18:41.00;+28:17:24.0;Tau;15.00;10.00;;;;;;;;;;;;;;;;LBN 782;;;Object not present in NED. -IC0360;Neb;04:09:02.57;+26:07:52.3;Tau;180.00;100.00;;;;;;;;;;;;;;;;LBN 786;;; -IC0361;OCl;04:18:50.70;+58:14:58.2;Cam;7.20;;;12.92;11.70;;;;;;;;;;;;;MWSC 0362;;; -IC0362;G;04:16:42.43;-12:12:00.4;Eri;1.77;1.03;5;14.18;;10.61;10.02;9.60;24.24;E;;;;;;;;2MASX J04164244-1212000,MCG -02-11-031,PGC 014782;;;B-Mag taken from LEDA. -IC0363;G;04:18:55.42;+03:01:58.9;Tau;0.33;0.31;25;15.40;;12.13;11.38;11.24;;E;;;;;;;;2MASX J04185539+0301586,PGC 014847;;; -IC0364;G;04:19:06.70;+03:11:20.2;Tau;0.78;0.49;72;15.20;;11.64;10.94;10.67;23.49;S0-a;;;;;;;;2MASX J04190667+0311206,PGC 014854;;; -IC0365;G;04:19:14.14;+03:20:54.0;Tau;0.88;0.56;34;14.80;;10.81;10.04;9.69;23.30;S0-a;;;;;;;;2MASX J04191415+0320536,MCG +01-11-017,PGC 014860;;; -IC0366;G;04:19:41.54;+02:21:35.3;Tau;0.34;0.20;20;15.60;;11.99;11.36;11.10;22.13;E;;;;;;;;2MASX J04194152+0221355,PGC 014887;;; -IC0367;G;04:20:40.99;-14:46:51.8;Eri;1.74;0.61;140;14.47;;10.94;10.21;10.03;24.31;E-S0;;;;;;;;2MASX J04204100-1446519,MCG -02-12-001,PGC 014917;;;B-Mag taken from LEDA. -IC0368;G;04:22:42.72;-12:36:54.6;Eri;0.99;0.83;164;15.08;;11.49;10.79;10.52;23.59;S0;;;;;;;;2MASX J04224270-1236544,MCG -02-12-009,PGC 014994;;;B-Mag taken from LEDA. -IC0369;G;04:23:28.22;-11:47:24.3;Eri;0.76;0.76;35;15.37;;11.90;11.16;10.91;23.53;S0;;;;;;;;2MASX J04232824-1147243,MCG -02-12-010,PGC 015020;;;B-Mag taken from LEDA. -IC0370;G;04:24:01.67;-09:23:41.4;Eri;0.99;0.89;123;14.50;;12.22;11.54;11.11;23.57;Sc;;;;;;;;2MASX J04240171-0923408,MCG -02-12-011,PGC 015029;;; -IC0371;*;04:30:12.59;-00:33:39.6;Eri;;;;;;;;;;;;;;;;;;;;; -IC0372;G;04:30:04.24;-05:00:35.9;Eri;0.97;0.45;30;15.32;;11.74;11.07;10.82;23.93;S0-a;;;;;;;;2MASX J04300421-0500358,LEDA 177340;;; -IC0373;G;04:30:42.76;-04:52:12.9;Eri;0.98;0.76;109;15.04;;11.14;10.41;10.19;23.59;S0-a;;;;;;;;2MASX J04304279-0452129,MCG -01-12-013,PGC 015335;;;B-Mag taken from LEDA. -IC0374;G;04:32:32.75;+16:38:03.0;Tau;0.23;0.19;80;15.70;;10.96;10.16;9.86;21.33;S0-a;;;;;;;;2MASX J04323273+1638031,MCG +03-12-001,PGC 015474;;; -IC0375;G;04:31:03.14;-12:58:26.3;Eri;0.82;0.54;59;14.63;;11.77;11.02;10.59;23.27;SBb;;;;;;;;2MASX J04310313-1258262,LEDA 088275;;; -IC0376;G;04:31:13.79;-12:26:00.1;Eri;0.59;0.48;50;15.98;;12.53;11.99;11.69;23.65;;;;;;;;;2MASX J04311379-1226002,LEDA 952848;;; -IC0377;G;04:31:16.54;-12:27:18.3;Eri;1.00;0.83;99;14.84;;11.59;10.82;10.63;23.70;E;;;;;;;;2MASX J04311652-1227182,MCG -02-12-031,PGC 015366;;Misidentified as IC 0376 in MCG.;B-Mag taken from LEDA. -IC0378;G;04:31:27.92;-12:17:59.1;Eri;0.79;0.48;69;15.66;;11.89;11.12;10.94;23.71;E-S0;;;;;;;;2MASX J04312793-1217592,LEDA 954841;;; -IC0379;G;04:31:50.93;-07:14:18.1;Eri;0.93;0.82;35;14.70;;11.71;10.95;10.63;23.33;SABb;;;;;;;;2MASX J04315094-0714180,MCG -01-12-021,PGC 015428;;;B-Mag taken from LEDA. -IC0380;G;04:31:41.32;-12:55:37.3;Eri;0.76;0.46;75;15.25;;12.83;12.19;12.13;23.06;SABb;;;;;;;;2MASX J04314131-1255372,MCG -02-12-034,PGC 015398;;;B-Mag taken from LEDA. -IC0381;Dup;04:44:28.50;+75:38:23.1;Cam;;;;;;;;;;;;;;;1530A;;;;;; -IC0382;G;04:37:55.55;-09:31:09.6;Eri;1.99;1.18;173;13.00;;10.65;10.02;9.71;23.33;SABc;;;;;;;;2MASX J04375557-0931092,IRAS 04355-0937,MCG -02-12-049,PGC 015691;;; -IC0383;G;04:38:58.03;+09:53:33.1;Tau;0.63;0.56;36;15.60;;11.34;10.56;10.27;23.35;E-S0;;;;;;;;2MASX J04385802+0953336,PGC 1371560;;;B-Mag taken from LEDA. -IC0384;G;04:39:18.28;-07:50:20.8;Eri;0.49;0.48;94;15.14;;12.15;11.47;11.17;;E;;;;;;;;2MASX J04391828-0750208,PGC 2816418;;; -IC0385;G;04:39:31.46;-07:05:50.9;Eri;1.15;0.58;107;14.60;;11.32;10.50;10.34;24.19;S0;;;;;;;;2MASX J04393149-0705508,PGC 015746;;; -IC0386;Dup;04:39:58.58;-09:27:22.4;Eri;;;;;;;;;;;;;;;1632;;;;;; -IC0387;G;04:41:44.21;-07:05:10.3;Eri;1.60;1.11;84;13.85;;10.81;10.14;9.90;23.32;SABc;;;;;;;;2MASX J04414426-0705109,IRAS 04393-0710,MCG -01-12-044,PGC 015831;;;B-Mag taken from LEDA. -IC0388;GPair;04:41:53.33;-07:18:19.9;Eri;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC0388 NED01;G;04:41:52.42;-07:18:16.7;Eri;0.54;0.44;54;16.01;;12.79;12.03;11.86;23.53;;;;;;;;;2MASX J04415239-0718169,PGC 1021211;;; -IC0388 NED02;G;04:41:54.32;-07:18:23.3;Eri;0.89;0.40;10;15.87;;12.35;11.60;11.45;24.37;E;;;;;;;;2MASX J04415434-0718229,PGC 1021186;;; -IC0389;G;04:41:59.62;-07:18:41.3;Eri;1.09;0.82;20;15.07;;11.02;10.27;10.01;23.82;E-S0;;;;;;;;2MASX J04415960-0718410,MCG -01-12-045,PGC 015840;;;B-Mag taken from LEDA. -IC0390;G;04:42:03.87;-07:12:23.2;Eri;1.14;0.40;35;15.48;;11.49;10.77;10.46;24.34;S0-a;;;;;;;;2MASX J04420390-0712230,MCG -01-12-046,PGC 015844,SDSS J044203.90-071223.1;;;B-Mag taken from LEDA. -IC0391;G;04:57:21.13;+78:11:19.8;Cam;1.39;1.33;25;12.80;;10.84;10.17;9.93;22.41;Sc;;;;;;;;2MASX J04572110+7811195,IRAS 04497+7806,MCG +13-04-011,PGC 016402,UGC 03190;;; -IC0392;G;04:46:25.76;+03:30:20.0;Ori;1.45;1.00;168;14.80;;11.61;10.91;10.61;23.01;S0;;;;;;;;2MASX J04462575+0330199,IRAS 04438+0324,MCG +01-13-001,PGC 015973,UGC 03158;;; -IC0393;G;04:47:51.80;-15:31:30.7;Eri;0.81;0.77;7;14.87;;11.45;10.75;10.38;23.30;E;;;;;;;;2MASX J04475180-1531305,MCG -03-13-012,PGC 016028;;;B-Mag taken from LEDA. -IC0394;Other;04:48:50.71;-06:16:48.7;Eri;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0395;Dup;04:49:34.03;+00:15:10.3;Ori;;;;;;;;;;;;;;;1671;;;;;; -IC0396;G;04:57:58.99;+68:19:24.2;Cam;2.38;1.45;86;13.20;;9.50;8.76;8.50;23.22;Sbc;;;;;;;;2MASX J04575911+6819249,IRAS 04527+6814,MCG +11-07-002,PGC 016423,UGC 03203;;; -IC0397;Other;05:01:06.63;+40:25:29.6;Aur;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -IC0398;G;04:58:12.56;-07:46:48.9;Eri;1.18;0.34;2;;;10.95;10.24;9.88;;SBbc;;;;;;;;2MASX J04581253-0746493,IRAS 04558-0751,MCG -01-13-040,PGC 016433;;; -IC0399;G;05:01:44.01;-04:17:19.5;Eri;0.54;0.45;81;15.00;14.80;13.11;12.62;12.22;22.71;IAB;;;;;;;;2MASX J05014410-0417194,PGC 016582;;; -IC0400;G;05:03:45.64;-15:49:08.7;Lep;;;;16.70;;;;;;;;;;;;;;6dF J0503456-154909;;Identity as IC 0400 is very uncertain.; -IC0401;G;05:04:19.64;-10:04:35.5;Eri;1.75;0.58;55;13.60;;11.04;10.44;10.15;23.16;SBb;;;;;;;;2MASX J05041962-1004359,IRAS 05019-1008,MCG -02-13-040,PGC 016672;;; -IC0402;G;05:06:14.83;-09:06:26.7;Eri;1.26;0.56;146;13.00;;11.97;11.09;10.80;22.96;SABc;;;;;;;;2MASX J05061487-0906257,MCG -02-13-043,PGC 016742,UGCA 099;;; -IC0403;Other;05:15:15.69;+39:58:19.6;Aur;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC0404;G;05:13:19.60;+09:45:17.7;Ori;0.73;0.53;130;15.70;;11.31;10.44;10.26;;S0-a;;;;;;;;2MASX J05131960+0945174,PGC 016935;;; -IC0405;Neb;05:16:29.48;+34:21:22.2;Aur;50.00;30.00;;10.00;;;;;;;;;;;;;;C 031,LBN 795;Flaming Star Nebula;;B-Mag taken from LEDA. -IC0406;Other;05:17:49.00;+39:53:09.7;Aur;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -IC0407;G;05:17:42.61;-15:31:24.4;Lep;1.93;0.36;164;14.20;;10.90;10.15;9.91;;Sc;;;;;;;;2MASX J05174261-1531240,IRAS 05154-1534,MCG -03-14-013,PGC 017056;;; -IC0408;**;05:18:04.14;-25:10:16.5;Lep;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -IC0409;GPair;05:19:33.55;+03:19:06.2;Ori;0.95;0.72;19;;;;;;23.63;E;;;;;;;;2MASX J05193366+0319036,MCG +01-14-024,PGC 017105;;; -IC0410;Dup;05:22:44.14;+33:24:43.3;Aur;;;;;;;;;;;;;;;1893;;;;;; -IC0411;G;05:20:18.61;-25:19:28.2;Lep;1.36;1.00;129;14.12;;10.89;10.18;9.92;23.53;S0;;;;;;;;2MASX J05201860-2519281,ESO 486-056,ESO-LV 486-0560,MCG -04-13-011,PGC 017130;;; -IC0412;G;05:21:56.70;+03:29:11.0;Ori;1.17;0.65;0;14.80;;;;;23.35;Sab;;;;;;2123;;MCG +01-14-034,PGC 017180,UGC 03298;;; -IC0413;G;05:21:58.78;+03:28:55.8;Ori;1.08;0.80;140;14.90;;10.75;10.12;9.80;23.58;S0;;;;;;2124;;2MASX J05215877+0328554,MCG +01-14-035,PGC 017181,UGC 03299;;; -IC0414;G;05:21:54.96;+03:20:31.3;Ori;0.60;0.44;140;14.90;14.40;12.20;11.43;11.16;22.63;E;;;;;;;;2MASX J05215497+0320314,IRAS 05192+0317,MCG +01-14-033,PGC 017179;;; -IC0415;G;05:21:21.63;-15:32:33.3;Lep;0.76;0.58;148;15.45;;12.41;11.76;11.44;;;;;;;;;;2MASX J05212161-1532332,IRAS 05190-1535,LEDA 2816473;;; -IC0416;G;05:23:56.38;-17:15:37.5;Lep;1.41;0.70;71;13.90;;11.71;11.10;10.91;;SBc;;;;;;;;2MASX J05235642-1715372,IRAS 05217-1718,MCG -03-14-014,PGC 017229,TYC 5919-141-1;;; -IC0417;HII;05:28:06.00;+34:25:26.2;Aur;13.00;10.00;;;;;;;;;;;;;;;;LBN 804;;; -IC0418;PN;05:27:28.19;-12:41:50.2;Lep;0.20;;;10.28;9.44;;;;;;;10.00;10.17;;;;BD -12 1172,HD 35914;IRAS 05251-1244,PK 215-24 1,PN G215.2-24.2,TYC 5340-684-1;;Identified as a planetary nebula in PKSCAT90 (version 1.01).; -IC0419;Other;05:30:52.02;+30:07:04.5;Aur;;;;;;;;;;;;;;;;;;;;Line of four Galactic stars.; -IC0420;Neb;05:32:09.50;-04:30:17.1;Ori;6.03;;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC0421;G;05:32:08.58;-07:55:06.0;Ori;2.96;2.22;108;12.60;;10.32;9.59;9.16;;Sbc;;;;;;;;2MASX J05320852-0755054,MCG -01-15-001,PGC 017407,UGCA 111;;; -IC0422;G;05:32:18.55;-17:13:25.9;Lep;1.04;0.93;130;;;10.74;10.05;9.77;;E;;;;;;2131;;2MASX J05321853-1713259,IRAS 05301-1715,MCG -03-15-001,PGC 017409;;; -IC0423;Neb;05:33:22.01;-00:36:52.2;Ori;6.00;3.50;;;;;;;;;;;;;;;;LBN 913;;;Dimensions from LEDA are wrong, so we pulled them from Simbad -IC0424;Neb;05:33:37.24;-00:24:47.3;Ori;2.50;1.70;;;;;;;;;;;;;;;;LBN 914;;;Dimensions from LEDA are wrong, values inferred by author -IC0425;Other;05:37:09.92;+32:25:46.8;Aur;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0426;Neb;05:36:31.38;-00:17:53.9;Ori;10.00;3.00;;;;;;;;;;;;;;;;LBN 921;;; -IC0427;Neb;05:36:18.02;-06:36:59.2;Ori;;;;;;;;;;;;;;;;;;;;; -IC0428;Neb;05:36:24.21;-06:27:05.6;Ori;;;;;;;;;;;;;;;;;;;;; -IC0429;Neb;05:38:18.86;-07:02:25.8;Ori;;;;;;;;;;;;;;;;;;;;; -IC0430;Neb;05:38:35.97;-07:04:59.2;Ori;10.96;;;;14.40;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC0431;RfN;05:40:14.03;-01:27:46.1;Ori;8.00;5.00;;;;;;;;;;;;;;;;LBN 944;;; -IC0432;RfN;05:40:55.98;-01:30:25.2;Ori;10.00;10.00;;;;;;;;;;;;;;;;LBN 946;;; -IC0433;G;05:40:31.35;-11:39:56.1;Lep;1.42;1.12;138;;;10.93;10.19;9.85;;E;;;;;;;;2MASX J05403134-1139561,MCG -02-15-008,PGC 017580;;; -IC0434;HII;05:41:00.88;-02:27:13.6;Ori;90.00;30.00;;11.00;;;;;;;;;;;;;;LBN 953;Flame Nebula,Orion B;The Horsehead Nebula is an absorption patch in this.;B-Mag taken from LEDA. -IC0435;RfN;05:43:00.57;-02:18:45.4;Ori;3.98;3.02;;;;;;;;;;;;;;;;BD -02 1350,HD 038087,HIP 026939;;;Dimensions taken from LEDA -IC0436;G;05:53:40.08;+38:37:29.2;Aur;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC0437;G;05:51:37.40;-12:33:53.9;Lep;0.97;0.46;7;15.28;;11.28;10.50;10.11;23.39;Sa;;;;;;;;2MASX J05513743-1233535,IRAS 05493-1234,LEDA 090030;;; -IC0438;G;05:53:00.08;-17:52:33.9;Lep;2.80;1.82;63;12.75;;10.59;9.93;9.70;23.70;SABc;;;;;;;;2MASX J05530007-1752337,ESO 555-009,ESO-LV 555-0090,IRAS 05508-1753,MCG -03-15-025,PGC 018047,UGCA 115;;This pair is made up of IC 0438 and IC 2151.; -IC0439;Other;05:56:39.51;+32:01:21.7;Aur;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0440;G;06:19:13.31;+80:04:06.5;Cam;1.77;1.00;36;14.30;;10.67;9.99;9.77;23.80;Sb;;;;;;;;2MASX J06191339+8004065,IRAS 06102+8005,MCG +13-05-021,PGC 018807,UGC 03427;;; -IC0441;G;06:02:42.63;-12:29:56.9;Lep;1.22;1.13;40;14.00;;11.81;11.02;10.84;23.50;Sc;;;;;;;;2MASX J06024268-1229575,MCG -02-16-001,PGC 018315;;; -IC0442;G;06:36:11.89;+82:58:05.7;Cam;1.25;1.25;5;13.70;;10.55;9.84;9.59;23.25;S0-a;;;;;;;;2MASX J06361228+8258088,MCG +14-04-003,PGC 019306,UGC 03470;;; -IC0443;SNR;06:16:37.41;+22:31:54.0;Gem;50.00;40.00;;12.00;;;;;;;;;;;;;;LBN 844,LEDA 2817561;Gem A;Incorrectly identified as IC 0433 in PKSCAT90 (version 1.01).;B-Mag taken from LEDA. -IC0444;RfN;06:18:34.00;+23:18:48.0;Gem;8.00;4.00;;7.03;;;;;;;;;;;;;;LBN 840;;;Coordinates provided by NED seem to point nothing, we consider right the coordinates from Simbad. -IC0445;G;06:37:21.25;+67:51:35.5;Cam;0.87;0.70;20;14.30;;11.42;10.72;10.44;22.81;S0;;;;;;;;2MASX J06372127+6751353,MCG +11-09-001,PGC 019328,UGC 03497;;; -IC0446;Cl+N;06:31:06.18;+10:27:33.4;Mon;5.00;4.00;;;;;;;;;;;;;;2167;;LBN 898, MWSC 0890;;; -IC0447;HII;06:31:00.32;+09:53:50.8;Mon;25.00;20.00;;7.70;;;;;;;;;;;;2169;;LBN 903;;; -IC0448;HII;06:32:45.34;+07:23:19.1;Mon;15.00;10.00;;;;;;;;;;;;;;;;LBN 931;;; -IC0449;G;06:45:41.11;+71:20:37.8;Cam;1.77;1.34;83;13.70;;10.40;9.66;9.45;23.80;E;;;;;;;;2MASX J06454107+7120378,MCG +12-07-014,PGC 019554,UGC 03515;;; -IC0450;G;06:52:12.25;+74:25:37.5;Cam;1.38;0.80;130;15.16;14.19;11.08;10.22;9.56;24.32;S0-a;;;;;;;;2MASX J06521236+7425372,IRAS 06457+7429,MCG +12-07-018,PGC 019756,UGC 03547;;One of two 6cm sources associated with [WB92] 0645+7429; -IC0451;G;06:52:52.01;+74:28:50.6;Cam;1.34;1.07;144;14.90;;11.09;10.36;10.05;23.97;SABb;;;;;;;;2MASX J06525198+7428506,MCG +12-07-019,PGC 019775,UGC 03550;;; -IC0452;Dup;06:48:39.11;-16:54:05.8;CMa;;;;;;;;;;;;;;;2296;;;;;; -IC0453;*;06:49:11.45;-16:54:24.3;CMa;;;;;;;;;;;;;;;;;;;;; -IC0454;G;06:51:06.30;+12:55:19.3;Gem;1.69;0.88;138;14.50;;10.46;9.66;9.39;23.97;SBab;;;;;;;;2MASX J06510628+1255193,IRAS 06482+1258,MCG +02-18-002,PGC 019725,UGC 03570;;; -IC0455;G;07:34:57.68;+85:32:13.9;Cep;1.06;0.65;78;14.30;;10.90;10.20;9.96;23.12;S0;;;;;;;;2MASX J07345760+8532138,MCG +14-04-033,PGC 021334,UGC 03815;;; -IC0456;G;07:00:17.54;-30:09:49.6;CMa;2.33;1.60;4;12.96;;9.82;9.10;8.86;23.60;S0;;;;;;;;2MASX J07001752-3009497,ESO 427-024,ESO-LV 427-0240,MCG -05-17-002,PGC 019993;;; -IC0457;Dup;07:09:28.40;+50:09:09.1;Lyn;;;;;;;;;;;;;;;2330;;;;;; -IC0458;G;07:10:34.15;+50:07:08.1;Lyn;0.90;0.39;173;14.40;;11.10;10.38;10.09;22.84;E-S0;;;;;;;;2MASX J07103411+5007081,MCG +08-13-085,PGC 020306,UGC 03713;;; -IC0459;G;07:10:38.69;+50:10:38.4;Lyn;0.59;0.49;1;15.50;;12.42;11.71;11.29;23.38;;;;;;;;;2MASX J07103863+5010377,PGC 020311;;; -IC0460;G;07:10:44.27;+50:12:08.8;Lyn;0.85;0.49;178;15.40;;11.88;11.32;10.92;23.77;;;;;;;;;2MASX J07104425+5012088,MCG +08-13-089,PGC 020318;;; -IC0461;G;07:10:45.04;+50:04:53.1;Lyn;0.63;0.48;36;15.70;;12.34;11.55;11.32;23.38;;;;;;;;;2MASX J07104502+5004528,MCG +08-13-088,PGC 020319;;; -IC0462;*;07:10:55.81;+50:10:51.0;Lyn;;;;;;;;;;;;;;;;;;;;IC 0462 is a Galactic star 13 arcsec southeast of 2MASX J07105477+5010569.; -IC0463;G;07:11:00.89;+50:07:03.7;Lyn;0.28;0.20;95;;;;;;;;;;;;;;;2MASX J07110091+5007039;;; -IC0464;G;07:11:04.75;+50:08:12.8;Lyn;0.80;0.37;60;14.80;;11.51;10.79;10.48;23.07;E;;;;;;;;2MASX J07110476+5008129,MCG +08-13-092,PGC 020332,PGC 020334;;; -IC0465;Dup;07:11:33.65;+50:14:53.7;Lyn;;;;;;;;;;;;;;;2334;;;;;; -IC0466;HII;07:08:38.80;-04:19:04.8;Mon;1.00;;;12.71;12.06;10.56;10.25;9.94;;;;;;;;;;2MASX J07083878-0419046,IRAS 07061-0414;;;Dimensions taken from LEDA -IC0467;G;07:30:18.39;+79:52:21.1;Cam;1.99;0.94;73;12.70;;10.75;10.28;10.04;22.80;SABc;;;;;;;;2MASX J07301840+7952209,IRAS 07218+7958,MCG +13-06-007,PGC 021164,UGC 03834;;; -IC0468;Other;07:17:19.00;-13:13:07.3;CMa;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC0469;G;07:55:59.08;+85:09:32.1;Cep;2.35;0.91;88;13.60;;10.07;9.25;9.11;23.47;SABa;;;;;;;;2MASX J07555910+8509320,MCG +14-04-038,PGC 022213,UGC 03994;;; -IC0470;**;07:23:31.50;+46:04:43.2;Lyn;;;;13.89;12.93;12.37;12.11;12.04;;;;;;;;;;;;;Formed by UCAC3 273-105055 + UCAC3 273-105054. Magnitudes referred to UCAC3 273-105055. -IC0471;G;07:43:36.45;+49:40:03.2;Lyn;0.66;0.66;23;14.20;;10.97;10.25;9.95;22.20;E;;;;;;;;2MASX J07433643+4940035,MCG +08-14-035,PGC 021659,SDSS J074336.44+494003.2,SDSS J074336.44+494003.4,SDSS J074336.45+494003.2,UGC 03982;;; -IC0472;G;07:43:50.34;+49:36:51.1;Lyn;1.61;1.15;166;14.50;;10.95;10.27;10.01;23.83;Sb;;;;;;;;2MASX J07435033+4936515,MCG +08-14-036,PGC 021665,SDSS J074350.34+493651.0,SDSS J074350.34+493651.1,SDSS J074350.35+493651.1,UGC 03985;;; -IC0473;Other;07:42:24.62;+09:15:19.0;CMi;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC0474;G;07:46:07.31;+26:30:18.4;Gem;1.27;0.40;113;15.20;;11.38;10.83;10.55;23.88;S0-a;;;;;;;;2MASX J07460729+2630188,MCG +04-19-001,PGC 021749,SDSS J074607.30+263018.3,SDSS J074607.31+263018.4;;; -IC0475;G;07:47:09.23;+30:29:19.7;Gem;0.75;0.45;133;14.90;;12.20;11.55;11.33;22.70;Sa;;;;;;;;2MASX J07470921+3029194,IRAS 07439+3036,MCG +05-19-005,PGC 021795,SDSS J074709.23+302919.6,SDSS J074709.24+302919.7;;; -IC0476;G;07:47:16.33;+26:57:03.5;Gem;0.62;0.48;99;15.50;;12.94;12.58;12.14;23.02;Sc;;;;;;;;2MASX J07471628+2657037,MCG +05-19-006,PGC 021796,SDSS J074716.33+265703.4,SDSS J074716.34+265703.5;;; -IC0477;G;07:52:06.93;+23:28:58.9;Gem;1.15;1.15;30;15.39;;11.32;10.64;10.32;24.56;E;;;;;;;;2MASX J07520692+2328583,PGC 022037,SDSS J075206.92+232858.8;;;B-Mag taken from LEDA. -IC0478;G;07:53:41.57;+26:29:33.7;Gem;0.66;0.48;12;15.20;;;;;22.90;Sb;;;;;;;;PGC 022109,SDSS J075341.56+262933.6,SDSS J075341.57+262933.6,SDSS J075341.57+262933.7;;; -IC0479;G;07:54:22.22;+27:00:31.8;Gem;0.61;0.51;171;15.00;;12.53;11.96;11.63;22.68;SABc;;;;;;;;2MASX J07542224+2700312,IRAS 07513+2708,MCG +05-19-020,PGC 022138,SDSS J075422.22+270031.6,SDSS J075422.22+270031.8;;; -IC0480;G;07:55:23.19;+26:44:36.0;Gem;1.75;0.33;167;15.04;;12.17;11.29;10.87;23.71;Sbc;;;;;;;;2MASX J07552302+2644459,IRAS 07523+2652,PGC 022188,SDSS J075523.19+264428.4,SDSS J075523.22+264428.0,SDSS J075523.23+264428.0,UGC 04096;;Multiple SDSS entries describe this object.;B-Mag taken from LEDA. -IC0481;G;07:59:02.86;+24:09:38.3;Gem;0.93;0.26;4;15.10;;11.95;11.19;10.90;22.81;Sb;;;;;;;;2MASX J07590282+2409378,MCG +04-19-013,PGC 022374,SDSS J075902.85+240938.2,SDSS J075902.86+240938.3,UGC 04130;;; -IC0482;G;07:59:47.28;+25:21:25.1;Cnc;0.63;0.52;151;15.00;;12.40;11.85;11.45;22.68;SABb;;;;;;;;2MASX J07594730+2521245,IRAS 07567+2529,MCG +04-19-016,PGC 022409,SDSS J075947.27+252125.0,SDSS J075947.28+252125.0,SDSS J075947.28+252125.1;;; -IC0483;**;07:59:52.38;+25:55:31.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC0484;G;08:00:01.06;+26:39:57.1;Cnc;0.89;0.40;43;15.30;;12.27;11.54;11.35;23.30;Sb;;;;;;;;2MASX J08000108+2639575,PGC 022419,SDSS J080001.06+263957.0,SDSS J080001.06+263957.1,SDSS J080001.07+263957.0;;; -IC0485;G;08:00:19.77;+26:42:05.2;Cnc;1.17;0.24;154;15.50;;11.90;11.17;10.85;23.80;SABa;;;;;;;;2MASX J08001977+2642053,IRAS 07572+2650,PGC 022443,SDSS J080019.76+264205.1,SDSS J080019.77+264205.2,UGC 04156;;; -IC0486;G;08:00:20.98;+26:36:48.7;Cnc;0.87;0.66;138;17.05;16.36;11.51;10.83;10.50;22.95;SBa;;;;;;;;2MASX J08002097+2636483,IRAS 07572+2645,MCG +04-19-018,PGC 022445,SDSS J080020.98+263648.6,SDSS J080020.98+263648.7,SDSS J080020.99+263648.7,UGC 04155;;; -IC0487;Dup;07:59:07.14;-00:38:16.5;Mon;;;;;;;;;;;;;;;2494;;;;;; -IC0488;Other;08:00:49.51;+25:54:06.7;Cnc;;;;;;;;;;;;;;;;;;SDSS J080049.51+255406.7;;Faint galaxy + Galactic star. Identity as IC 0488 is not certain.; -IC0489;*;08:01:37.74;+25:59:47.0;Cnc;;;;;;;;;;;;;;;;;;;;; -IC0490;G;08:03:20.12;+25:48:41.1;Cnc;0.59;0.47;95;15.60;;12.90;12.20;11.91;23.08;Sbc;;;;;;;;2MASX J08032012+2548411,PGC 022607,SDSS J080320.11+254841.0,SDSS J080320.11+254841.1,SDSS J080320.12+254841.0,SDSS J080320.12+254841.1;;; -IC0491;G;08:03:55.00;+26:31:14.2;Cnc;0.65;0.28;115;15.30;;13.03;12.20;11.92;22.72;Sc;;;;;;;;2MASX J08035500+2631143,PGC 022631;;; -IC0492;G;08:05:38.66;+26:10:05.5;Cnc;1.02;0.77;31;17.83;17.19;11.75;11.07;10.70;22.88;SBbc;;;;;;;;2MASX J08053868+2610058,MCG +04-19-024,PGC 022724,SDSS J080538.66+261005.4,SDSS J080538.66+261005.5,UGC 04212;;; -IC0493;G;08:07:27.59;+25:08:02.5;Cnc;0.81;0.61;18;14.80;;11.99;11.27;10.96;22.86;Sb;;;;;;;;2MASX J08072763+2507585,IRAS 08044+2516,MCG +04-19-026,PGC 022795,SDSS J080727.58+250802.4,SDSS J080727.58+250802.5,SDSS J080727.59+250802.5;;; -IC0494;G;08:06:24.12;+01:02:09.8;CMi;1.32;0.64;48;14.30;;10.95;10.22;10.00;23.57;S0;;;;;;;;2MASX J08062413+0102097,MCG +00-21-004,PGC 022755,SDSS J080624.10+010209.7,UGC 04224;;; -IC0495;G;08:08:19.42;+09:00:50.0;Cnc;0.47;0.40;88;15.40;;12.07;11.43;11.06;;E;;;;;;;;2MASX J08081938+0900499,PGC 022841,SDSS J080819.42+090049.9,SDSS J080819.42+090050.0;;; -IC0496;G;08:09:44.16;+25:52:53.8;Cnc;0.63;0.39;30;14.70;;12.32;11.60;11.33;23.06;E-S0;;;;;;2229;;2MASX J08094417+2552542,LEDA 093095,MCG +04-19-028 NED01,SDSS J080944.15+255253.7;;"CGCG and MCG misprint name as ""IC 495""."; -IC0497;G;08:10:06.07;+24:55:19.5;Cnc;0.78;0.39;177;15.17;14.26;11.97;11.26;11.02;22.98;Sa;;;;;;;;2MASX J08100603+2455194,IRAS 08070+2503,MCG +04-20-001,PGC 022918,SDSS J081006.06+245519.5,SDSS J081006.07+245519.5;;; -IC0498;G;08:09:30.27;+05:16:50.5;CMi;1.21;1.08;66;14.60;;11.86;11.33;10.76;23.63;Sb;;;;;;;;2MASX J08093029+0516503,MCG +01-21-015,PGC 022895,SDSS J080930.26+051650.5,UGC 04255;;; -IC0499;G;08:45:17.30;+85:44:24.1;Cam;1.88;0.90;77;13.50;;10.29;9.58;9.38;23.56;Sa;;;;;;;;2MASX J08451691+8544237,MCG +14-04-054,PGC 024602,UGC 04463;;; -IC0500;G;08:12:39.60;-16:03:02.9;Pup;1.77;0.71;54;;;10.72;10.04;9.75;;S0-a;;;;;;;;2MASX J08123960-1603028,MCG -03-21-007,PGC 023011;;; -IC0501;G;08:18:47.59;+24:32:14.7;Cnc;0.73;0.55;125;15.50;;12.76;12.02;11.85;23.43;SBa;;;;;;;;2MASX J08184761+2432146,PGC 023305,SDSS J081847.58+243214.7,SDSS J081847.59+243214.7;;; -IC0502;G;08:22:03.61;+08:45:09.4;Cnc;0.56;0.54;62;15.40;;12.37;11.73;11.49;23.02;E;;;;;;;;2MASX J08220358+0845096,PGC 023469,SDSS J082203.60+084509.3;;; -IC0503;G;08:22:10.68;+03:16:05.0;Hya;1.33;1.03;110;14.00;;13.50;11.08;10.54;23.51;Sa;;;;;;;;2MASX J08221069+0316045,IRAS 08195+0325,MCG +01-22-004,PGC 023474,SDSS J082210.58+031604.4,SDSS J082210.68+031604.9,SDSS J082210.68+031605.0,UGC 04366;;; -IC0504;G;08:22:41.20;+04:15:44.7;Hya;1.51;1.09;139;14.30;;10.58;9.92;9.63;23.84;S0;;;;;;;;2MASX J08224116+0415443,MCG +01-22-005,PGC 023495,SDSS J082241.19+041544.7,UGC 04372;;; -IC0505;G;08:23:21.67;+04:22:20.9;Hya;1.38;0.99;144;14.80;;11.03;10.28;9.98;23.63;Sab;;;;;;;;2MASX J08232169+0422207,MCG +01-22-008,PGC 023528,SDSS J082321.66+042220.8,SDSS J082321.66+042220.9,SDSS J082321.67+042220.9,UGC 04382;;; -IC0506;G;08:23:30.73;+04:17:58.2;Hya;1.19;0.86;171;14.70;;11.53;10.87;10.54;23.92;E;;;;;;;;2MASX J08233072+0417587,MCG +01-22-009,PGC 023536,SDSS J082330.72+041758.2;;; -IC0507;Dup;08:25:02.00;-00:35:29.0;Hya;;;;;;;;;;;;;;;2590;;;;;; -IC0508;G;08:28:22.31;+25:07:29.0;Cnc;0.79;0.70;97;14.80;;12.30;11.66;11.35;22.91;SBc;;;;;;;;2MASX J08282250+2507300,IRAS 08253+2517,MCG +04-20-063,PGC 023762,SDSS J082822.30+250728.9,SDSS J082822.31+250729.0;;; -IC0509;G;08:32:03.50;+24:00:39.3;Cnc;1.02;0.92;57;14.60;;12.14;11.53;11.10;22.53;SABc;;;;;;;;2MASX J08320355+2400391,MCG +04-20-066,PGC 023936,SDSS J083203.49+240039.2,SDSS J083203.50+240039.3,UGC 04456;;; -IC0510;GPair;08:32:10.60;-02:09:44.0;Hya;0.80;;;;;;;;;;;;;;;;;MCG +00-22-015,UGC 04460;;;Diameter of the group inferred by the author. -IC0510 NED01;G;08:32:10.19;-02:09:43.6;Hya;;;;;;;;;;;;;;;;;;MCG +00-22-015 NED01,PGC 200242,UGC 04460 NED01;;;No data available in LEDA -IC0510 NED02;G;08:32:10.93;-02:09:44.6;Hya;0.91;0.52;137;15.20;;12.27;11.77;11.53;23.29;SBbc;;;;;;;;2MASX J08321093-0209444,MCG +00-22-015 NED02,PGC 023940,UGC 04460 NED02;;; -IC0511;G;08:40:50.45;+73:29:12.0;Cam;1.22;0.46;142;14.50;;11.03;10.40;10.19;23.32;S0-a;;;;;;;;2MASX J08405044+7329118,MCG +12-09-003,PGC 024397,UGC 04510;;; -IC0512;G;09:03:49.83;+85:30:06.1;Cam;1.72;1.34;174;13.20;;10.85;10.23;9.93;22.93;SABc;;;;;;;;2MASX J09034969+8530060,IRAS 08508+8541,MCG +14-05-002,PGC 025451,UGC 04646;;; -IC0513;G;08:33:05.06;-12:21:20.0;Hya;1.49;1.00;39;14.59;;11.02;10.26;9.96;24.11;S0;;;;;;;;2MASX J08330507-1221200,MCG -02-22-019,PGC 023983;;;B-Mag taken from LEDA. -IC0514;G;08:35:22.28;-02:02:49.4;Hya;0.57;0.34;160;15.30;;12.87;12.02;11.82;22.94;S0-a;;;;;;;;2MASX J08352226-0202492,PGC 024119;;; -IC0515;G;08:35:31.29;-01:54:04.0;Hya;1.04;0.58;34;15.60;;11.67;10.97;10.69;24.28;S0-a;;;;;;;;2MASX J08353128-0154032,PGC 024125,UGC 04488;;; -IC0516;G;08:35:50.77;-01:52:16.4;Hya;0.59;0.30;65;15.70;;12.68;11.98;11.59;23.52;S0-a;;;;;;;;2MASX J08355077-0152161,PGC 024155;;; -IC0517;G;08:36:22.10;-02:03:20.0;Hya;0.61;0.34;29;15.40;;13.14;12.29;11.96;22.82;Sab;;;;;;;;2MASX J08362210-0203200,PGC 024179;;; -IC0518;Other;08:36:06.95;+00:41:33.3;Hya;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0519;G;08:40:34.41;+02:36:40.8;Hya;0.50;0.48;28;15.40;;11.93;11.18;10.91;23.29;E;;;;;;;;2MASX J08403443+0236404,PGC 024389,SDSS J084034.40+023640.7,SDSS J084034.41+023640.7,SDSS J084034.41+023640.8;;; -IC0520;G;08:53:42.26;+73:29:27.4;Cam;2.10;1.63;175;11.90;;9.67;9.00;8.72;22.87;SABa;;;;;;;;2MASX J08534227+7329273,IRAS 08483+7340,MCG +12-09-026,PGC 024970,UGC 04630;;; -IC0521;G;08:46:43.96;+02:32:14.7;Hya;0.93;0.67;80;14.80;;11.45;10.71;10.39;23.25;S?;;;;;;;;2MASX J08464397+0232144,MCG +01-23-002,PGC 024658,SDSS J084643.96+023214.7;;; -IC0522;G;08:54:34.91;+57:10:00.2;UMa;1.24;1.02;165;13.97;;10.95;10.28;9.97;23.10;S0;;;;;;;;2MASX J08543491+5709598,MCG +10-13-031,PGC 025009,SDSS J085434.90+571000.4,SDSS J085434.91+571000.1,SDSS J085434.91+571000.2,SDSS J085434.92+571000.1,UGC 04654;;; -IC0523;G;08:53:11.32;+09:08:53.4;Cnc;0.86;0.56;95;15.00;;12.38;11.66;11.48;23.25;Sab;;;;;;;;2MASX J08531133+0908530,MCG +02-23-009,PGC 024948,SDSS J085311.31+090853.3,SDSS J085311.32+090853.3,SDSS J085311.32+090853.4,SDSS J085311.33+090853.3,UGC 04652;;; -IC0524;G;08:58:12.83;-19:11:30.9;Hya;0.94;0.63;21;15.01;;11.30;10.53;10.29;23.65;S0;;;;;;;;2MASX J08581284-1911304,ESO 564-001,ESO-LV 564-0010,PGC 025198;;; -IC0525;G;09:01:22.47;-01:51:14.3;Hya;0.95;0.33;10;14.90;;12.54;11.88;11.65;22.95;Sbc;;;;;;;;2MASX J09012249-0151147,MCG +00-23-019,PGC 025344,UGC 04735;;; -IC0526;G;09:02:40.78;+10:50:29.9;Cnc;0.77;0.45;41;14.70;;12.41;11.76;11.41;22.71;Sb;;;;;;;;2MASX J09024074+1050293,IRAS 08599+1102,MCG +02-23-022,PGC 025401,SDSS J090240.76+105029.2,SDSS J090240.77+105029.2;;; -IC0527;G;09:09:41.78;+37:36:05.7;Lyn;1.37;1.13;71;14.60;;11.39;10.73;10.27;23.95;SBc;;;;;;;;2MASX J09094175+3736060,MCG +06-20-039,PGC 025821,SDSS J090941.77+373605.6,SDSS J090941.77+373605.7,SDSS J090941.78+373605.7,UGC 04810;;; -IC0528;G;09:09:22.55;+15:47:46.2;Cnc;1.39;0.62;162;15.14;;11.92;11.23;10.92;23.96;Sab;;;;;;;;2MASX J09092254+1547458,MCG +03-24-001,PGC 025783,SDSS J090922.55+154746.1,UGC 04811;;; -IC0529;G;09:18:32.80;+73:45:33.6;Cam;3.21;1.53;142;12.00;;10.16;9.54;9.48;23.25;Sc;;;;;;;;2MASX J09183278+7345335,IRAS 09134+7358,MCG +12-09-035,PGC 026295,UGC 04888;;; -IC0530;G;09:15:16.97;+11:53:08.5;Cnc;1.93;0.31;87;14.30;;10.94;10.23;9.91;23.36;Sab;;;;;;;;2MASX J09151695+1153083,MCG +02-24-003,PGC 026101,SDSS J091516.96+115308.4,UGC 04880;;; -IC0531;G;09:17:50.81;-00:16:42.5;Hya;0.79;0.42;60;14.44;;11.91;11.02;10.67;22.73;Sab;;;;;;;;2MASX J09175079-0016418,IRAS 09152-0004,MCG +00-24-006,PGC 026258,SDSS J091750.79-001642.3,SDSS J091750.80-001642.5,UGC 04923;;; -IC0532;Other;09:19:03.76;-16:45:17.8;Hya;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0533;G;09:20:23.40;-03:59:31.3;Hya;0.95;0.27;155;15.72;;12.46;11.72;11.56;24.35;;;;;;;;;2MASX J09202341-0359313,LEDA 3081596;;; -IC0534;G;09:21:15.45;+03:09:04.1;Hya;1.19;0.31;148;15.10;;13.13;12.58;12.49;23.44;Sb;;;;;;;;2MASX J09211543+0309036,PGC 026471,SDSS J092115.42+030904.1,SDSS J092115.44+030904.0,SDSS J092115.45+030904.1,UGC 04968;;; -IC0535;G;09:22:16.22;-01:02:25.2;Hya;0.65;0.53;5;15.60;;12.42;11.66;11.42;23.73;E;;;;;;;;2MASX J09221622-0102248,PGC 026524,SDSS J092216.22-010225.2;;; -IC0536;G;09:24:40.10;+25:06:36.7;Leo;1.09;0.22;24;15.30;;11.50;10.75;10.49;23.34;Sa;;;;;;;;2MASX J09244012+2506365,MCG +04-22-045,PGC 026669,SDSS J092440.09+250636.6,SDSS J092440.10+250636.6,SDSS J092440.10+250636.7,UGC 05006;;; -IC0537;G;09:25:22.61;-12:23:30.4;Hya;1.32;1.22;160;14.15;;10.64;9.98;9.71;23.40;S0-a;;;;;;;;2MASX J09252259-1223294,IRAS 09229-1210,MCG -02-24-020,PGC 026717;;;B-Mag taken from LEDA. -IC0538;Dup;09:27:18.51;+23:01:12.4;Leo;;;;;;;;;;;;;;;2885;;;;;; -IC0539;G;09:29:08.24;-02:32:56.9;Hya;0.97;0.73;130;14.30;;11.62;10.96;10.70;22.80;Sc;;;;;;;;2MASX J09290823-0232573,IRAS 09266-0219,MCG +00-24-017,PGC 026909,SDSS J092908.23-023256.8,UGC 05054;;; -IC0540;G;09:30:10.33;+07:54:09.9;Leo;1.07;0.27;171;14.80;;11.47;10.73;10.52;22.81;Sab;;;;;;;;2MASX J09301026+0754091,MCG +01-24-025,PGC 026968,SDSS J093010.33+075409.9,UGC 05064;;; -IC0541;Other;09:30:30.79;-04:15:13.2;Hya;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0542;G;09:31:06.22;-13:10:52.9;Hya;1.21;0.39;95;15.02;;11.64;10.88;10.52;23.74;S0-a;;;;;;;;2MASX J09310624-1310525,IRAS 09286-1257,MCG -02-24-031,PGC 027012;;;B-Mag taken from LEDA. -IC0543;Other;09:31:09.10;-14:46:21.0;Hya;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0544;G;09:35:53.38;+24:53:41.5;Leo;0.80;0.25;24;15.30;;12.82;12.10;11.79;22.93;Sbc;;;;;;;;2MASX J09355338+2453420,IRAS 09330+2507,MCG +04-23-012,PGC 027293,SDSS J093553.37+245341.4,SDSS J093553.37+245341.5,SDSS J093553.38+245341.5;;; -IC0545;G;09:36:05.36;+24:56:56.2;Leo;0.56;0.42;44;14.80;;12.97;12.35;12.38;22.36;Sab;;;;;;;;2MASX J09360536+2456561,IRAS 09332+2510,MCG +04-23-013,PGC 027307;;; -IC0546;G;09:34:50.24;-16:23:03.9;Hya;1.27;0.70;103;14.83;;11.23;10.66;10.53;23.84;S0-a;;;;;;;;2MASX J09345025-1623036,MCG -03-25-007,PGC 027234;;Star (mag. 15) superposed 13 arcsec north of nucleus.;B-Mag taken from LEDA. -IC0547;Dup;09:36:05.79;-12:26:12.2;Hya;;;;;;;;;;;;;;;2947;;;;;; -IC0548;G;09:38:19.30;+09:26:45.5;Leo;0.76;0.19;166;15.30;;12.28;11.49;11.28;23.13;S0-a;;;;;;;;2MASX J09381929+0926458,PGC 027463,SDSS J093819.29+092645.5,SDSS J093819.30+092645.5;;; -IC0549;G;09:40:43.23;+03:57:35.1;Sex;0.60;0.37;180;14.80;;13.81;13.05;12.54;22.36;I;;;;;;;;2MASX J09404325+0357349,MCG +01-25-010,PGC 027622,SDSS J094043.19+035734.9;;; -IC0550;G;09:40:28.58;-06:56:45.8;Sex;1.07;0.70;34;14.50;;11.41;10.76;10.55;23.62;S0;;;;;;;;2MASX J09402859-0656459,MCG -01-25-014,PGC 027607;;; -IC0551;G;09:41:00.11;+06:56:09.9;Leo;0.81;0.53;155;14.50;;11.88;11.23;10.86;22.63;Sbc;;;;;;;;2MASX J09410011+0656098,MCG +01-25-012,PGC 027645,SDSS J094100.10+065609.9,SDSS J094100.11+065609.9,UGC 05168;;; -IC0552;G;09:41:16.57;+10:38:49.2;Leo;1.12;0.63;2;14.50;;11.19;10.47;10.22;23.36;S0;;;;;;;;2MASX J09411656+1038489,MCG +02-25-017,PGC 027665,SDSS J094116.56+103849.1,SDSS J094116.57+103849.1,SDSS J094116.57+103849.2,UGC 05171;;; -IC0553;G;09:40:45.13;-05:26:07.3;Sex;1.07;0.85;118;14.45;;11.65;11.03;10.68;23.30;SBa;;;;;;;;2MASX J09404513-0526074,MCG -01-25-016,PGC 027625;;;B-Mag taken from LEDA. -IC0554;G;09:41:56.89;+12:17:46.6;Leo;1.29;0.57;18;14.40;;11.42;10.66;10.44;23.61;S0;;;;;;0555;;2MASX J09415692+1217468,MCG +02-25-020,PGC 027716,SDSS J094156.89+121746.6,UGC 05178;;; -IC0555;Dup;09:41:56.89;+12:17:46.6;Leo;;;;;;;;;;;;;;;;0554;;;;; -IC0556;Dup;09:43:40.38;+11:03:39.1;Leo;;;;;;;;;;;;;;;2984;;;;;; -IC0557;G;09:44:02.40;+10:59:17.2;Leo;1.11;0.64;38;14.70;;11.91;11.24;10.92;23.31;SBab;;;;;;;;2MASX J09440241+1059174,MCG +02-25-027,PGC 027866,SDSS J094402.40+105917.1,SDSS J094402.40+105917.2;;; -IC0558;G;09:45:00.35;+29:27:08.3;Leo;0.93;0.72;165;14.90;13.90;11.62;10.89;10.61;23.60;E;;;;;;;;2MASX J09450033+2927079,MCG +05-23-033,PGC 027931,SDSS J094500.34+292708.2,SDSS J094500.35+292708.2,SDSS J094500.35+292708.3;;; -IC0559;G;09:44:43.89;+09:36:54.0;Leo;1.09;0.92;87;15.00;;;;;23.60;I;;;;;;;;MCG +02-25-029,PGC 027910,SDSS J094443.89+093654.0;;Multiple SDSS entries describe this source.; -IC0560;G;09:45:53.44;-00:16:05.9;Sex;1.41;0.54;20;14.60;;10.93;10.30;10.12;23.80;S0-a;;;;;;;;2MASX J09455343-0016055,MCG +00-25-013,PGC 027998,SDSS J094553.43-001605.9,TYC 4895-1899-1,UGC 05223;;; -IC0561;G;09:45:58.81;+03:08:42.7;Sex;0.51;0.42;6;15.00;;12.79;12.29;11.72;22.38;Sc;;;;;;;;2MASX J09455879+0308429,MCG +01-25-019,PGC 028002,SDSS J094558.80+030842.7,SDSS J094558.81+030842.6,SDSS J094558.81+030842.7;;; -IC0562;G;09:46:03.90;-03:58:16.2;Sex;1.22;0.28;162;14.67;;11.94;11.21;10.87;23.06;Sbc;;;;;;;;2MASX J09460402-0358186,IRAS 09435-0344,MCG -01-25-036,PGC 028011;;; -IC0563;G;09:46:20.35;+03:02:44.1;Sex;0.97;0.40;111;14.70;;11.88;11.12;10.81;23.04;Sab;;;;;;;;2MASX J09462036+0302438,MCG +01-25-022,PGC 028032,SDSS J094620.34+030244.1,SDSS J094620.35+030244.1,UGC 05230 NOTES01;;; -IC0564;G;09:46:21.08;+03:04:16.9;Sex;1.64;0.45;68;14.10;;11.19;10.45;10.03;22.94;SABc;;;;;;;;2MASX J09462109+0304168,MCG +01-25-023,PGC 028033,SDSS J094621.07+030416.9,SDSS J094621.08+030416.9,UGC 05230;;; -IC0565;GPair;09:47:50.76;+15:51:09.2;Leo;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC0565 NED01;G;09:47:49.67;+15:51:07.3;Leo;0.68;0.16;178;16.74;;;;;;;;;;;;;;2MASX J09474970+1551068,SDSS J094749.66+155107.2,UGC 05248 NOTES01;;;B-Mag taken from LEDA -IC0565 NED02;G;09:47:50.53;+15:51:06.8;Leo;1.24;0.27;51;15.10;;11.98;11.23;10.83;23.27;Sc;;;;;;;;2MASX J09475018+1551043,MCG +03-25-028,PGC 028159,UGC 05248;;; -IC0566;G;09:49:56.39;-00:13:52.9;Sex;0.60;0.53;84;15.50;;12.04;11.32;11.12;23.00;S0-a;;;;;;;;2MASX J09495641-0013529,PGC 028279,SDSS J094956.38-001352.8,SDSS J094956.38-001352.9,SDSS J094956.39-001352.9;;; -IC0567;*;09:50:33.78;+12:47:05.0;Leo;;;;;;;;;;;;;;;;;;SDSS J095033.78+124705.0;;; -IC0568;G;09:51:08.33;+15:43:49.6;Leo;1.07;0.64;106;14.80;;11.72;11.15;10.56;23.37;Sb;;;;;;;;2MASX J09510833+1543497,IRAS 09484+1557,MCG +03-25-031,PGC 028368,SDSS J095108.32+154349.5,UGC 05285;;; -IC0569;G;09:51:28.15;+10:55:12.2;Leo;0.78;0.54;164;15.10;;12.07;11.31;11.39;23.62;E;;;;;;;;2MASX J09512817+1055117,MCG +02-25-048,PGC 028391,SDSS J095128.14+105512.2,SDSS J095128.15+105512.1,SDSS J095128.15+105512.2;;; -IC0570;G;09:51:50.98;+15:45:20.7;Leo;0.46;0.34;61;15.60;;13.23;12.36;12.28;22.98;Sc;;;;;;;;2MASX J09515095+1545203,MCG +03-25-032,PGC 028407,SDSS J095150.98+154520.6;;; -IC0571;G;09:52:31.57;+15:46:31.6;Leo;0.71;0.54;133;15.30;;11.86;11.07;10.71;23.27;SBab;;;;;;;;2MASX J09523158+1546316,MCG +03-25-035,PGC 028445,SDSS J095231.57+154631.6;;; -IC0572;G;09:52:32.81;+15:49:36.7;Leo;0.54;0.53;130;14.80;;12.05;11.36;11.05;22.47;Sc;;;;;;;;2MASX J09523282+1549366,MCG +03-25-036,PGC 028456,SDSS J095232.81+154936.6,SDSS J095232.81+154936.7;;; -IC0573;Dup;09:53:36.17;-12:28:55.6;Hya;;;;;;;;;;;;;;;3058 NED02;;;;;; -IC0574;G;09:54:27.03;-06:57:12.2;Sex;1.05;0.87;4;14.80;;10.76;10.05;9.79;23.57;E-S0;;;;;;;;2MASX J09542701-0657122,MCG -01-25-056,PGC 028569;;;B-Mag taken from LEDA. -IC0575;G;09:54:32.93;-06:51:27.2;Sex;1.52;1.17;50;14.31;;10.60;9.87;9.51;23.68;Sa;;;;;;;;2MASX J09543292-0651273,MCG -01-25-058,PGC 028575;;;B-Mag taken from LEDA. -IC0576;G;09:55:07.04;+11:02:22.4;Leo;0.59;0.51;168;16.00;;12.67;11.87;11.65;23.13;S0-a;;;;;;;;2MASX J09550702+1102226,PGC 028603,SDSS J095507.02+110222.3,SDSS J095507.03+110222.3,SDSS J095507.04+110222.4;;; -IC0577;G;09:56:03.97;+10:29:55.9;Leo;0.62;0.57;117;14.40;;12.45;11.83;11.52;22.51;Sc;;;;;;;;2MASX J09560399+1029559,MCG +02-26-001,PGC 028662,SDSS J095603.96+102955.8,SDSS J095603.97+102955.8,SDSS J095603.97+102955.9,UGC 05334;;; -IC0578;G;09:56:16.15;+10:29:09.9;Leo;1.25;0.54;66;14.70;;11.99;11.29;10.94;23.66;Sa;;;;;;;;2MASX J09561613+1029099,IRAS 09535+1043,MCG +02-26-002,PGC 028674,SDSS J095616.14+102909.8,SDSS J095616.14+102909.9,SDSS J095616.15+102909.8,SDSS J095616.15+102909.9,UGC 05337;;; -IC0579;G;09:56:39.42;-13:46:29.6;Hya;1.12;0.41;132;15.15;;11.86;11.08;10.70;23.40;SBab;;;;;;;;2MASX J09563939-1346295,IRAS 09542-1332,MCG -02-26-005,PGC 028702;;Identity as IC 0579 is not certain.;B-Mag taken from LEDA. -IC0580;Dup;09:57:56.70;+10:25:56.8;Leo;;;;;;;;;;;;;;;3069;;;;;; -IC0581;G;09:58:11.58;+15:56:49.1;Leo;1.00;0.71;129;15.00;;11.87;11.16;10.91;23.53;Sab;;;;;;;;2MASX J09581155+1556490,MCG +03-26-008,MCG +03-26-008 NOTES01,PGC 028800,SDSS J095811.57+155649.0,SDSS J095811.58+155649.1,UGC 05352;;; -IC0582;G;09:59:00.23;+17:49:01.7;Leo;0.97;0.91;85;14.70;;11.91;11.26;10.98;23.22;Sb;;;;;;;;2MASX J09590018+1749021,MCG +03-26-011,PGC 028838,SDSS J095900.22+174901.6,SDSS J095900.22+174901.7,SDSS J095900.23+174901.7,UGC 05362;;; -IC0583;G;09:59:05.08;+17:49:17.2;Leo;0.89;0.19;113;15.20;;11.98;11.19;10.79;22.84;Sab;;;;;;;;2MASX J09590508+1749171,MCG +03-26-012,PGC 028844,SDSS J095905.07+174917.1,SDSS J095905.07+174917.2,SDSS J095905.08+174917.2,UGC 05363;;; -IC0584;G;09:59:05.13;+10:21:40.1;Leo;0.50;0.43;149;14.70;;13.32;12.79;12.46;22.54;Sa;;;;;;;;2MASX J09590512+1021399,MCG +02-26-010,PGC 028839,SDSS J095905.12+102140.0,SDSS J095905.13+102140.1;;; -IC0585;G;09:59:44.12;+12:59:18.9;Leo;1.21;0.86;123;14.80;;11.67;10.90;10.63;24.01;E-S0;;;;;;;;2MASX J09594411+1259192,MCG +02-26-014,PGC 028897,SDSS J095944.12+125918.8,SDSS J095944.12+125918.9,UGC 05371;;UGC misprints R.A. as 09h57.1m. UGC galactic coordinates are correct.; -IC0586;G;09:59:50.30;-06:55:22.2;Sex;0.76;0.70;55;15.16;;11.71;10.99;10.78;23.42;E;;;;;;;;2MASX J09595028-0655218,MCG -01-26-004,PGC 028906;;;B-Mag taken from LEDA. -IC0587;G;10:03:05.17;-02:24:00.1;Sex;1.25;0.56;106;14.14;;11.94;11.19;10.67;22.96;SABb;;;;;;;;2MASX J10030519-0224005,IRAS 10005-0209,MCG +00-26-012,PGC 029127,SDSS J100305.17-022400.0,UGC 05411;;; -IC0588;G;10:02:07.04;+03:03:27.7;Sex;0.90;0.53;164;14.82;14.25;12.04;11.41;11.06;23.43;Sa;;;;;;;;2MASX J10020701+0303277,MCG +01-26-010,PGC 029057,SDSS J100207.03+030327.6,SDSS J100207.04+030327.6,SDSS J100207.04+030327.7,UGC 05399;;; -IC0589;G;10:04:23.90;-05:40:44.1;Sex;0.69;0.51;20;15.43;;12.00;11.36;11.03;23.42;E;;;;;;;;2MASX J10042392-0540440,LEDA 154597;;; -IC0590;GPair;10:05:50.23;+00:37:58.6;Sex;0.90;;;;;;;;;;;;;;;;;MCG +00-26-018,UGC 05443;;;Diameter of the group inferred by the author. -IC0590 NED01;G;10:05:49.83;+00:38:00.1;Sex;1.06;0.78;105;14.20;;10.85;10.35;9.91;23.47;E-S0;;;;;;;;2MASX J10054983+0038001,MCG +00-26-018 NED01,PGC 029316,SDSS J100549.83+003800.0,SDSS J100549.83+003800.1,UGC 05443 NED01;;; -IC0590 NED02;G;10:05:50.67;+00:37:54.5;Sex;0.79;0.76;33;14.97;;;;;23.20;E-S0;;;;;;;;MCG +00-26-018 NED02,PGC 093102,SDSS J100550.66+003754.4,SDSS J100550.66+003754.5,SDSS J100550.67+003754.4,SDSS J100550.67+003754.5,UGC 05443 NED02;;; -IC0591;G;10:07:27.69;+12:16:28.2;Leo;0.93;0.60;164;14.00;;12.16;11.60;11.27;22.65;SBc;;;;;;;;2MASX J10072771+1216282,IRAS 10047+1231,MCG +02-26-025,PGC 029435,SDSS J100727.69+121628.1,SDSS J100727.69+121628.2,UGC 05458;;; -IC0592;G;10:07:58.75;-02:29:50.1;Sex;0.92;0.75;26;14.00;;;;;22.63;Sbc;;;;;;;;MCG +00-26-020,PGC 029465,UGC 05465;;; -IC0593;G;10:08:18.01;-02:31:36.5;Sex;0.81;0.58;97;14.20;;12.58;11.82;11.36;22.51;Sbc;;;;;;;;2MASX J10081797-0231361,MCG +00-26-021,PGC 029482,SDSS J100818.00-023136.4,UGC 05469;;; -IC0594;G;10:08:32.00;-00:40:00.7;Sex;1.11;0.56;131;14.70;;12.05;11.33;11.36;23.23;Sbc;;;;;;;;2MASX J10083197-0040003,MCG +00-26-023,PGC 029496,SDSS J100831.99-004000.6,SDSS J100831.99-004000.7,SDSS J100831.99-004000.8,SDSS J100832.00-004000.7,UGC 05472;;; -IC0595;G;10:09:38.12;+11:00:00.9;Leo;0.81;0.58;172;15.10;;12.13;11.36;11.39;23.70;E;;;;;;;;2MASX J10093816+1100010,PGC 029555,SDSS J100938.11+110000.8,SDSS J100938.11+110000.9,SDSS J100938.12+110000.8,SDSS J100938.12+110000.9,SDSS J100938.13+110000.8;;; -IC0596;G;10:10:31.35;+10:02:32.6;Leo;0.96;0.31;18;15.00;;12.07;11.33;10.95;23.12;Sbc;;;;;;;;2MASX J10103136+1002323,MCG +02-26-030,PGC 029621,SDSS J101031.34+100232.5,SDSS J101031.35+100232.5,SDSS J101031.35+100232.6;;; -IC0597;G;10:10:11.96;-06:53:57.3;Sex;0.50;0.23;170;15.57;;12.15;11.47;11.25;23.11;S0-a;;;;;;;;2MASX J10101201-0653564,LEDA 154761;;; -IC0598;G;10:12:48.57;+43:08:43.9;UMa;1.65;0.41;7;13.80;;11.05;10.40;10.15;23.28;S0-a;;;;;;;;2MASX J10124858+4308439,MCG +07-21-016,PGC 029745,SDSS J101248.56+430843.9,SDSS J101248.57+430843.9,UGC 05502;;; -IC0599;G;10:13:12.51;-05:37:44.4;Sex;1.17;0.29;36;15.25;;12.38;11.66;11.37;23.04;Sc;;;;;;;;2MASX J10131251-0537445,MCG -01-26-032,PGC 029771;;; -IC0600;G;10:17:10.91;-03:29:52.0;Sex;1.92;1.03;13;16.40;16.30;12.13;11.64;11.72;23.36;SBd;;;;;;;;2MASX J10171092-0329519,MCG +00-26-034,PGC 030041,UGCA 209;;Noted as possibly interacting in VV Atlas and in MCG.; -IC0601;G;10:18:15.29;+07:02:19.8;Leo;0.47;0.22;37;15.00;;13.78;13.31;13.57;22.38;Scd;;;;;;;;2MASX J10181525+0702199,MCG +01-26-033,PGC 030086,SDSS J101815.28+070219.8,SDSS J101815.29+070219.8;;; -IC0602;G;10:18:19.73;+07:02:57.5;Leo;0.97;0.50;173;13.40;;11.39;10.84;10.55;22.55;Sc;;;;;;;;2MASX J10181970+0702571,IRAS 10157+0717,MCG +01-26-034,PGC 030090,SDSS J101819.72+070257.5,SDSS J101819.73+070257.5,UGC 05561;;; -IC0603;G;10:19:25.05;-05:39:22.2;Sex;1.31;0.79;174;14.50;;11.37;10.66;10.43;23.93;SBa;;;;;;;;2MASX J10192504-0539223,MCG -01-26-041,PGC 030166;;; -IC0604;Dup;10:23:44.66;+57:01:36.7;UMa;;;;;;;;;;;;;;;3220;;;;;; -IC0605;G;10:22:24.13;+01:11:53.7;Sex;0.77;0.54;9;14.50;;12.64;12.07;11.88;22.57;Sc;;;;;;;;2MASX J10222407+0111534,IRAS 10197+0127,MCG +00-27-003,PGC 030363,SDSS J102224.12+011153.6,SDSS J102224.12+011153.7,SDSS J102224.13+011153.6,SDSS J102224.13+011153.7,UGC 05606;;; -IC0606;Dup;10:23:32.62;+10:57:35.0;Leo;;;;;;;;;;;;;;;3217;;;;;; -IC0607;G;10:24:08.58;+16:44:30.8;Leo;1.27;0.96;87;14.90;;12.25;11.62;11.53;23.66;Sbc;;;;;;;;2MASX J10240858+1644307,MCG +03-27-018,PGC 030496,SDSS J102408.57+164430.8,UGC 05628;;Position in 1986AJ.....91..705B is incorrect.; -IC0608;G;10:24:21.13;-06:02:21.5;Sex;0.95;0.54;108;14.77;;12.09;11.48;11.14;23.24;S0-a;;;;;;;;2MASX J10242114-0602215,MCG -01-27-008,PGC 030500;;;B-Mag taken from LEDA. -IC0609;G;10:25:35.43;-02:12:54.8;Sex;1.35;0.39;19;14.40;;11.26;10.66;10.34;22.92;Sbc;;;;;;;;2MASX J10253539-0212546,MCG +00-27-009,PGC 030600,SDSS J102535.42-021254.8,UGC 05641;;; -IC0610;G;10:26:28.37;+20:13:41.5;Leo;1.89;0.33;28;14.80;;11.13;10.29;9.94;23.58;Sbc;;;;;;0611;;2MASX J10262836+2013417,IRAS 10237+2028,MCG +03-27-034,PGC 030670,SDSS J102628.44+201339.8,UGC 05653;;; -IC0611;Dup;10:26:28.37;+20:13:41.5;Leo;;;;;;;;;;;;;;;;0610;;;;; -IC0612;G;10:27:05.86;+11:03:17.6;Leo;0.42;0.25;174;15.30;;12.19;11.52;11.23;22.60;S0;;;;;;;;2MASX J10270587+1103173,MCG +02-27-019,PGC 030729,SDSS J102705.85+110317.5,SDSS J102705.86+110317.5;;; -IC0613;G;10:27:07.79;+11:00:38.6;Leo;0.77;0.70;12;15.10;;11.63;10.92;10.69;23.34;E;;;;;;;;2MASX J10270777+1100383,MCG +02-27-018,PGC 030728,SDSS J102707.78+110038.5,SDSS J102707.79+110038.5,SDSS J102707.79+110038.6;;; -IC0614;G;10:26:51.85;-03:27:53.1;Sex;0.78;0.53;18;14.80;;12.91;12.00;12.06;23.01;Sab;;;;;;;;2MASX J10265183-0327532,MCG +00-27-015,PGC 030699;;; -IC0615;G;10:27:21.98;+11:04:47.9;Leo;1.22;0.36;143;15.10;;11.63;10.85;10.41;23.66;Sb;;;;;;;;2MASX J10272197+1104483,MCG +02-27-020,PGC 030751,SDSS J102721.97+110447.8,SDSS J102721.97+110447.9,SDSS J102721.98+110447.9,UGC 05665;;; -IC0616;G;10:32:47.56;+15:51:39.0;Leo;0.93;0.75;160;14.60;;12.12;11.45;11.28;23.03;Sc;;;;;;;;2MASX J10324755+1551387,MCG +03-27-060,PGC 031159,SDSS J103247.55+155138.9,SDSS J103247.56+155138.9,UGC 05730;;; -IC0617;Dup;10:32:43.81;-12:38:14.3;Hya;;;;;;;;;;;;;;;3280B;;;;;; -IC0618;Dup;10:32:45.40;-12:43:02.7;Hya;;;;;;;;;;;;;;;3296;;;;;; -IC0619;G;10:33:49.98;+12:52:42.1;Leo;0.84;0.65;177;14.80;;12.16;11.53;11.41;23.10;Sbc;;;;;;;;2MASX J10335000+1252426,MCG +02-27-025,PGC 031235,SDSS J103349.97+125242.0,SDSS J103349.98+125242.0,SDSS J103349.99+125242.1,UGC 05735;;; -IC0620;G;10:33:33.43;+11:52:17.0;Leo;0.73;0.60;88;15.20;;12.44;11.81;11.46;23.18;Sbc;;;;;;;;2MASX J10333344+1152178,LEDA 2800960,SDSS J103333.42+115216.9,SDSS J103333.43+115216.9,SDSS J103333.43+115217.0;;; -IC0621;G;10:33:21.04;+02:36:58.1;Sex;0.90;0.62;82;15.10;;12.53;11.74;11.57;23.35;Sc;;;;;;;;2MASX J10332103+0236582,PGC 031196,SDSS J103321.03+023658.0,SDSS J103321.04+023658.0,SDSS J103321.04+023658.1;;; -IC0622;Dup;10:34:42.80;+11:11:50.4;Leo;;;;;;;;;;;;;;;3279;;;;;; -IC0623;G;10:35:21.01;+03:33:30.2;Sex;0.94;0.32;151;15.00;;12.02;11.28;11.01;22.76;Sbc;;;;;;;;2MASX J10352103+0333298,MCG +01-27-017,PGC 031356,SDSS J103521.00+033330.1,SDSS J103521.00+033330.2,SDSS J103521.01+033330.2,UGC 05748;;; -IC0624;G;10:36:15.18;-08:20:02.2;Sex;2.42;0.55;39;13.50;;10.48;9.92;9.51;24.13;Sa;;;;;;;;2MASX J10361516-0820021,MCG -01-27-026,PGC 031426;;; -IC0625;G;10:42:38.05;-23:56:08.2;Hya;2.25;0.53;105;13.72;;;;;23.15;Sc;;;;;;;;2MASX J10423745-2356055,2MASX J10423804-2356091,IRAS 10402-2340,MCG -04-26-001,PGC 031919;;This may also be NGC 3355.; -IC0626;G;10:36:57.10;-07:01:25.9;Sex;1.21;0.95;137;15.19;;11.21;10.47;10.12;24.08;E-S0;;;;;;;;2MASX J10365709-0701258,MCG -01-27-028,PGC 031501;;;B-Mag taken from LEDA. -IC0627;G;10:37:19.89;-03:21:28.1;Sex;0.72;0.57;175;14.10;;11.88;11.17;10.77;22.52;Sa;;;;;;;;2MASX J10371990-0321275,MCG +00-27-032,PGC 031543,SDSS J103719.88-032128.1;;; -IC0628;G;10:37:36.19;+05:36:13.3;Sex;0.89;0.67;120;14.80;;11.89;11.15;10.86;23.13;Sab;;;;;;;;2MASX J10373619+0536133,MCG +01-27-022,PGC 031567,SDSS J103736.18+053613.3,SDSS J103736.19+053613.2,SDSS J103736.19+053613.3,UGC 05780;;; -IC0629;Dup;10:37:02.52;-27:33:54.2;Hya;;;;;;;;;;;;;;;3312;;;;;; -IC0630;G;10:38:33.61;-07:10:13.9;Sex;2.12;1.67;150;13.30;;9.54;9.32;8.65;23.35;S0;;;;;;;;2MASX J10383359-0710147,MCG -01-27-029,PGC 031636;;; -IC0631;G;10:38:58.90;-07:03:08.6;Sex;0.67;0.59;147;15.74;;12.12;11.43;10.98;23.91;E;;;;;;;;2MASX J10385891-0703080,LEDA 155542;;; -IC0632;G;10:39:11.79;-00:24:34.1;Sex;0.98;0.57;30;14.60;14.18;12.15;11.44;11.10;23.18;SBa;;;;;;;;2MASX J10391179-0024340,MCG +00-27-035,PGC 031673,SDSS J103911.79-002434.0,SDSS J103911.79-002434.1,SDSS J103911.79-002434.2,UGC 05792;;; -IC0633;G;10:39:24.38;-00:23:21.5;Sex;0.65;0.27;103;14.50;14.62;13.47;12.77;12.22;22.38;Sab;;;;;;;;2MASX J10392440-0023207,MCG +00-27-037,PGC 031691,SDSS J103924.37-002321.4,SDSS J103924.38-002321.4,SDSS J103924.38-002321.5,SDSS J103924.39-002321.4,SDSS J103924.48-002321.4,UGC 05796;;; -IC0634;G;10:40:54.89;+05:59:30.6;Sex;1.00;0.38;116;15.10;;11.90;11.12;10.76;22.98;Sc;;;;;;;;2MASX J10405489+0559308,PGC 031799,SDSS J104055.19+055929.0,SDSS J104055.19+055929.1,UGC 05811;;; -IC0635;G;10:41:45.30;+15:38:36.0;Leo;1.09;0.33;7;15.20;;12.17;11.52;11.08;23.14;Sbc;;;;;;;;MCG +03-27-069,PGC 031858,SDSS J104145.30+153835.8,UGC 05821;;; -IC0636;G;10:41:50.59;+04:19:50.8;Sex;0.95;0.41;49;14.90;;12.10;11.35;11.12;22.93;SBbc;;;;;;;;2MASX J10415061+0419511,MCG +01-27-028,PGC 031867,SDSS J104150.58+041950.7,SDSS J104150.58+041950.8,SDSS J104150.59+041950.8,UGC 05824;;; -IC0637;G;10:42:21.92;+15:21:34.6;Leo;0.75;0.50;17;15.30;;12.33;11.58;11.13;23.41;S0-a;;;;;;;;2MASX J10422188+1521346,PGC 031900,SDSS J104221.91+152134.5,SDSS J104221.91+152134.6,SDSS J104221.92+152134.6;;; -IC0638;G;10:43:47.98;+15:53:42.5;Leo;0.77;0.38;2;15.40;;12.58;11.88;11.56;23.32;Sab;;;;;;;;2MASX J10434797+1553431,IRAS 10411+1609,PGC 031988,SDSS J104347.97+155342.5,SDSS J104347.98+155342.5;;; -IC0639;G;10:45:52.02;+16:55:49.6;Leo;1.41;0.42;180;14.80;;12.30;11.60;11.25;23.51;Sbc;;;;;;;;2MASX J10455200+1655498,IRAS 10432+1711,MCG +03-28-007,PGC 032129,SDSS J104552.02+165549.5,SDSS J104552.02+165549.6;;; -IC0640;Other;10:46:50.45;+34:46:03.5;LMi;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0641;Other;10:47:49.41;+34:40:22.2;LMi;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0642;G;10:48:08.13;+18:11:19.3;Leo;1.45;1.36;19;14.00;;10.64;9.91;9.72;23.41;E-S0;;;;;;;;2MASX J10480814+1811189,MCG +03-28-010,PGC 032278,SDSS J104808.12+181119.2,SDSS J104808.12+181119.3,UGC 05905;;; -IC0643;G;10:49:27.18;+12:12:03.6;Leo;1.34;0.46;73;15.30;;11.71;10.99;10.82;24.25;S0-a;;;;;;;;2MASX J10492718+1212041,PGC 032392,SDSS J104927.17+121203.6,SDSS J104927.18+121203.6;;; -IC0644;Dup;10:51:31.43;+55:23:27.5;UMa;;;;;;;;;;;;;;;3398;;;;;; -IC0645;G;10:50:09.35;-06:02:34.4;Sex;0.48;0.42;59;15.43;;12.51;11.84;11.61;;;;;;;;;;2MASX J10500934-0602343,IRAS 10476-0546,LEDA 2816724;;; -IC0646;G;10:51:35.18;+55:27:57.0;UMa;0.84;0.43;147;15.70;;12.11;11.46;11.13;23.45;Sa;;;;;;;;2MASX J10513522+5527568,MCG +09-18-039,PGC 032568,SDSS J105135.17+552756.9,SDSS J105135.17+552757.2,SDSS J105135.18+552757.0;;; -IC0647;G;10:50:34.49;-12:51:17.3;Crt;0.68;0.39;62;15.55;;12.59;11.85;11.66;23.62;S0-a;;;;;;;;2MASX J10503444-1251152,LEDA 946616;;; -IC0648;G;10:51:00.32;+12:17:14.6;Leo;0.94;0.74;158;14.90;;12.39;11.76;11.67;23.32;SBc;;;;;;;;2MASX J10510033+1217147,MCG +02-28-017,PGC 032522,SDSS J105100.31+121714.5,SDSS J105100.32+121714.6;;; -IC0649;GPair;10:50:52.20;+01:09:50.0;Leo;0.70;;;;;;;;;;;;;;;;;MCG +00-28-019;;;Diameter of the group inferred by the author. -IC0649 NED01;G;10:50:52.09;+01:09:55.2;Leo;0.70;0.56;15;14.90;;12.70;12.07;11.40;23.36;Sbc;;;;;;;;2MASX J10505208+0109554,MCG +00-28-019 NED01,PGC 032506,SDSS J105051.78+011001.2;;One SDSS position applies to the knot northwest of the center.; -IC0649 NED02;G;10:50:52.20;+01:09:42.0;Leo;0.32;0.21;0;14.90;;;;;;Sbc;;;;;;;;MCG +00-28-019 NED02,PGC 093105;;; -IC0650;G;10:50:40.55;-13:26:31.4;Crt;0.93;0.67;10;14.99;;12.49;12.00;11.51;23.20;Sc;;;;;;;;2MASX J10504053-1326312,IRAS 10481-1310,LEDA 170094;;; -IC0651;G;10:50:58.41;-02:09:01.3;Leo;0.72;0.71;20;12.90;;11.20;10.52;10.21;21.10;SBd;;;;;;;;2MASX J10505844-0209011,IRAS 10484-0153,MCG +00-28-020,PGC 032517,SDSS J105058.41-020901.3,UGC 05956;;; -IC0652;Dup;10:50:57.63;-12:26:54.7;Crt;;;;;;;;;;;;;;;3421;;;;;; -IC0653;G;10:52:06.78;-00:33:38.8;Leo;2.07;0.71;57;13.75;;10.90;10.14;9.91;24.06;Sa;;;;;;;;2MASX J10520675-0033388,MCG +00-28-022,PGC 032611,SDSS J105206.77-003338.8,SDSS J105206.78-003338.8,SDSS J105206.78-003338.9,UGC 05985;;HOLM 220B is a double star.; -IC0654;G;10:53:50.39;-11:43:32.1;Crt;1.20;0.44;133;15.14;;11.99;11.29;10.97;24.12;S0-a;;;;;;;;2MASX J10535040-1143319,MCG -02-28-018,PGC 032716;;;B-Mag taken from LEDA. -IC0655;G;10:54:22.24;-00:21:53.9;Leo;1.00;0.27;48;15.30;;12.42;11.59;11.31;23.10;Sbc;;;;;;;;2MASX J10542222-0021544,PGC 032758,SDSS J105422.23-002153.8,SDSS J105422.24-002153.8,SDSS J105422.24-002153.9;;; -IC0656;Other;10:55:08.14;+17:36:46.4;Leo;;;;;;;;;;;;;;;;;;;;Three Galactic stars plus a faint galaxy. This may also be NGC 3457.; -IC0657;G;10:57:53.57;-04:54:17.8;Leo;1.14;0.43;169;15.23;;12.13;11.35;11.28;23.85;SBa;;;;;;;;2MASX J10575355-0454179,MCG -01-28-009,PGC 032966;;MCG decs for MCG -01-28 field are 10 arcmin too far north (MCG4 errata).; -IC0658;G;10:58:16.26;+08:14:30.0;Leo;1.08;0.85;43;14.60;;11.58;11.04;10.57;23.66;E;;;;;;;;2MASX J10581628+0814296,MCG +02-28-033,PGC 033004,SDSS J105816.26+081430.0;;; -IC0659;G;10:58:03.86;-06:15:37.9;Leo;1.24;0.86;60;15.50;;11.74;10.71;10.36;24.75;E;;;;;;;;2MASX J10580384-0615380,MCG -01-28-010,PGC 032979;;MCG decs for MCG -01-28 field are 10 arcmin too far north (MCG4 errata).; -IC0660;G;10:58:26.66;+01:22:58.5;Leo;0.79;0.52;31;15.70;;12.04;11.44;11.26;23.86;E;;;;;;;;2MASX J10582669+0122583,PGC 033017,SDSS J105826.65+012258.4,SDSS J105826.66+012258.4,SDSS J105826.66+012258.5;;; -IC0661;G;10:58:51.50;+01:39:02.3;Leo;0.77;0.55;31;15.70;;12.18;11.54;11.16;23.54;E-S0;;;;;;;;2MASX J10585152+0139022,PGC 033051,SDSS J105851.49+013902.3,SDSS J105851.50+013902.2,SDSS J105851.50+013902.3;;; -IC0662;G;10:59:20.55;+01:35:55.8;Leo;0.78;0.58;71;15.46;;12.13;11.42;11.26;23.89;E;;;;;;;;2MASX J10592052+0135556,PGC 033091,SDSS J105920.54+013555.7,SDSS J105920.55+013555.8;;; -IC0663;G;11:00:37.27;+10:26:13.9;Leo;0.85;0.57;172;15.60;;12.09;11.41;11.07;23.80;E-S0;;;;;;;;2MASX J11003725+1026137,PGC 033182,SDSS J110037.27+102613.8,SDSS J110037.27+102613.9;;; -IC0664;G;11:00:45.35;+10:33:11.0;Leo;1.87;1.30;53;14.80;;11.29;10.65;10.24;24.67;E-S0;;;;;;;;2MASX J11004538+1033117,MCG +02-28-042,PGC 033191,SDSS J110045.34+103311.4,SDSS J110045.35+103311.3;;; -IC0665;G;11:00:29.93;-13:52:00.5;Crt;1.03;0.35;148;15.29;;11.83;11.16;10.97;23.36;Sab;;;;;;;;2MASX J11002991-1352001,LEDA 170101;;; -IC0666;G;11:01:14.81;+10:28:52.0;Leo;0.58;0.33;147;15.30;;12.22;11.69;10.95;22.65;S0-a;;;;;;;;2MASX J11011479+1028524,PGC 033232,SDSS J110114.81+102852.0,SDSS J110114.82+102852.0;;; -IC0667;G;11:06:36.55;+15:05:19.4;Leo;0.68;0.58;32;15.50;;12.67;11.74;11.51;23.69;E;;;;;;;;2MASX J11063651+1505192,PGC 033603,SDSS J110636.55+150519.4;;; -IC0668;G;11:06:39.56;+15:02:27.3;Leo;0.66;0.39;95;15.40;;12.26;11.54;11.49;23.00;Sa;;;;;;;;2MASX J11063955+1502272,MCG +03-28-059,PGC 033613,SDSS J110639.55+150227.3;;; -IC0669;G;11:07:16.57;+06:18:08.9;Leo;1.08;0.67;169;14.30;;11.29;10.60;10.25;23.27;S0;;;;;;;;2MASX J11071654+0618084,MCG +01-28-040,PGC 033662,SDSS J110716.56+061808.8,SDSS J110716.56+061808.9,SDSS J110716.57+061808.8,SDSS J110716.57+061808.9,UGC 06174;;; -IC0670;G;11:07:28.81;+06:42:51.3;Leo;1.11;0.98;65;14.70;;11.18;10.49;10.10;23.55;E-S0;;;;;;;;2MASX J11072877+0642515,MCG +01-28-041,PGC 033680,SDSS J110728.80+064251.2,SDSS J110728.80+064251.3,SDSS J110728.81+064251.2,SDSS J110728.81+064251.3,UGC 06178;;; -IC0671;G;11:07:31.60;+00:46:59.2;Leo;1.21;0.95;21;14.10;;11.47;10.88;10.31;23.58;Sb;;;;;;;;2MASX J11073161+0046592,MCG +00-28-031,PGC 033689,SDSS J110731.60+004659.1,SDSS J110731.60+004659.2,SDSS J110731.61+004659.2,UGC 06180;;; -IC0672;G;11:08:03.23;-12:29:03.0;Crt;0.75;0.33;155;;;11.94;11.22;10.83;;S0-a;;;;;;;;2MASX J11080324-1229032,IRAS 11055-1212,MCG -02-29-002,PGC 033724;;; -IC0673;G;11:09:25.31;-00:05:51.8;Leo;1.29;0.59;168;14.06;;11.83;11.15;10.99;23.47;SABb;;;;;;;;2MASX J11092527-0005514,IRAS 11068+0010,MCG +00-29-003,PGC 033817,SDSS J110925.18-000548.8,SDSS J110925.30-000551.8,SDSS J110925.31-000551.7,SDSS J110925.31-000551.8,SDSS J110925.32-000551.8,UGC 06200;;; -IC0674;G;11:11:06.36;+43:37:58.8;UMa;1.37;0.41;121;14.50;;11.43;10.64;10.49;23.24;Sab;;;;;;;;2MASX J11110633+4337587,MCG +07-23-027,PGC 033982,SDSS J111106.35+433758.8,SDSS J111106.36+433758.8,SDSS J111106.37+433758.8,UGC 06221;;; -IC0675;**;11:10:57.36;+03:35:39.2;Leo;;;;;;;;;;;;;;;;;;;;The identification as IC 0675 is not certain.; -IC0676;G;11:12:39.82;+09:03:21.0;Leo;1.85;1.31;0;13.40;;10.69;9.95;9.70;23.57;S0-a;;;;;;;;2MASX J11123981+0903206,IRAS 11100+0919,MCG +02-29-009,PGC 034107,SDSS J111239.81+090321.0,UGC 06245;;; -IC0677;G;11:13:56.50;+12:18:03.9;Leo;1.43;0.60;45;13.60;;11.53;11.02;10.71;22.70;Sbc;;;;;;;;2MASX J11135671+1218097,IRAS 11113+1234,MCG +02-29-013,PGC 034211,SDSS J111356.49+121803.8,SDSS J111356.50+121803.8,SDSS J111356.50+121803.9,UGC 06262;;; -IC0678;G;11:14:06.38;+06:34:37.9;Leo;0.78;0.50;141;15.10;;11.74;11.01;10.85;23.72;E;;;;;;;;2MASX J11140638+0634376,MCG +01-29-021,PGC 034222,SDSS J111406.37+063437.9,SDSS J111406.38+063437.9;;; -IC0679;G;11:16:36.61;-13:58:19.5;Crt;0.53;0.37;125;15.24;;11.65;10.94;10.64;;E;;;;;;;;2MASX J11163661-1358185,PGC 170124;;; -IC0680;G;11:17:54.70;-01:56:47.2;Leo;0.81;0.56;154;14.60;;11.93;11.23;10.87;22.79;SBa;;;;;;;;2MASX J11175470-0156470,IRAS 11153-0140,MCG +00-29-012,PGC 034520;;; -IC0681;G;11:18:31.93;-12:08:24.8;Crt;0.87;0.45;35;14.79;;12.80;12.18;11.95;22.68;Sc;;;;;;;;2MASX J11183192-1208249,MCG -02-29-017,PGC 034572;;;B-Mag taken from LEDA. -IC0682;Dup;11:22:14.74;+20:12:30.7;Leo;;;;;;;;;;;;;;;3649;;;;;; -IC0683;G;11:21:31.78;+02:45:06.5;Leo;0.69;0.49;175;15.60;;12.34;11.47;11.17;23.62;E;;;;;;;;2MASX J11213177+0245062,PGC 034807,SDSS J112131.78+024506.5;;; -IC0684;Dup;11:21:32.87;+02:48:37.6;Leo;;;;;;;;;;;;;;;3644;;;;;; -IC0685;G;11:22:06.52;+17:45:12.3;Leo;0.68;0.43;176;16.33;;13.18;12.58;12.17;24.34;E;;;;;;;;2MASX J11220653+1745123,PGC 034871,SDSS J112206.51+174512.2;;;B-Mag taken from LEDA. -IC0686;G;11:23:05.27;+05:38:40.8;Leo;0.51;0.26;42;15.30;;13.27;12.77;12.38;22.50;Sc;;;;;;;;2MASX J11230527+0538409,PGC 034950;;; -IC0687;G;11:24:17.33;+47:50:51.1;UMa;1.08;1.03;121;15.00;;11.48;10.69;10.48;23.87;E;;;;;;;;2MASX J11241735+4750511,MCG +08-21-032,PGC 035029,SDSS J112417.33+475051.0,SDSS J112417.33+475051.1;;; -IC0688;G;11:23:40.24;-09:47:44.0;Crt;0.98;0.49;98;15.25;;12.11;11.42;11.13;23.32;Sab;;;;;;;;2MASX J11234024-0947438,IRAS 11211-0931,LEDA 156572;;; -IC0689;Dup;11:23:38.43;-13:49:52.0;Crt;;;;;;;;;;;;;;;3661;;;;;; -IC0690;G;11:24:20.61;-08:20:31.1;Crt;1.17;0.46;170;15.60;;11.90;11.21;10.91;23.59;Sc;;;;;;;;2MASX J11242059-0820305,LEDA 170138;;; -IC0691;G;11:26:44.32;+59:09:19.5;UMa;1.14;0.72;148;14.20;;11.92;11.27;10.86;21.78;S0;;;;;;;;2MASX J11264427+5909197,IRAS 11238+5925,MCG +10-16-139,PGC 035206,SDSS J112644.31+590919.5,SDSS J112644.32+590919.5,UGC 06447;;; -IC0692;G;11:25:53.47;+09:59:15.0;Leo;0.85;0.56;118;14.10;;12.51;11.82;11.65;22.75;E;;;;;;;;2MASX J11255349+0959141,MCG +02-29-027,PGC 035151,SDSS J112553.47+095914.9,SDSS J112553.47+095915.0,UGC 06438;;; -IC0693;G;11:26:48.62;-05:00:14.4;Leo;0.98;0.48;90;14.65;;12.04;11.31;10.98;22.97;Sab;;;;;;;;2MASX J11264861-0500141,IRAS 11242-0443,MCG -01-29-022,PGC 035208;;;B-Mag taken from LEDA. -IC0694;G;11:28:27.30;+58:34:42.5;UMa;0.21;0.18;51;18.20;;14.25;13.47;12.92;;E;;;;;;;;2MASX J11282731+5834422,MCG +10-17-002,PGC 035325,SDSS J112827.29+583442.5;;Often confused with NGC 3690 in the literature.; -IC0695;G;11:27:58.29;-11:42:55.2;Crt;0.65;0.21;85;15.50;;12.53;11.85;11.42;;Sc;;;;;;;;2MASX J11275827-1142549,PGC 170143;;; -IC0696;G;11:28:39.92;+09:05:55.3;Leo;0.92;0.85;16;14.50;;12.09;11.46;11.18;23.08;Scd;;;;;;;;2MASX J11283992+0905552,MCG +02-29-034,PGC 035332,SDSS J112839.91+090555.2,SDSS J112839.91+090555.3,SDSS J112839.92+090555.3,UGC 06477;;; -IC0697;G;11:28:34.45;-01:37:46.5;Leo;0.67;0.47;131;15.30;;12.22;11.50;11.22;23.33;S0;;;;;;;;2MASX J11283443-0137462,PGC 035327,SDSS J112834.45-013746.4,SDSS J112834.45-013746.5;;; -IC0698;G;11:29:03.84;+09:06:43.4;Leo;1.04;0.50;147;14.40;;11.34;10.55;10.17;23.20;S0-a;;;;;;;;2MASX J11290382+0906439,IRAS 11264+0923,MCG +02-29-035,PGC 035364,SDSS J112903.83+090643.3,SDSS J112903.83+090643.4,SDSS J112903.84+090643.3,SDSS J112903.84+090643.4,UGC 06482;;; -IC0699;G;11:29:06.49;+08:59:18.9;Leo;1.21;0.34;12;14.60;;11.20;10.42;10.20;22.85;SABb;;;;;;;;2MASX J11290646+0859189,MCG +02-29-036,PGC 035365,SDSS J112906.48+085918.9,SDSS J112906.49+085918.9,UGC 06485;;; -IC0700;GGroup;11:29:15.48;+20:35:05.7;Leo;1.10;;;;;;;;;;;;;;;;;MCG +04-27-047,UGC 06487;;;Diameter of the group inferred by the author. -IC0700 NED01;G;11:29:14.16;+20:34:52.0;Leo;0.20;0.13;0;16.38;;;;;21.22;I;;;;;;;;MCG +04-27-047 NED01,PGC 035380,SDSS J112914.15+203451.9,SDSS J112914.15+203452.0,UGC 06487 NED01;;; -IC0700 NED02;G;11:29:15.30;+20:34:59.4;Leo;0.94;0.46;71;14.16;;13.42;13.28;12.93;22.12;S?;;;;;;;;2MASX J11291529+2034595,MCG +04-27-047 NED02,PGC 035382,SDSS J112915.29+203459.3,UGC 06487 NED02;;; -IC0700 NED03;G;11:29:16.36;+20:35:11.7;Leo;0.30;0.28;25;17.05;;;;;23.29;I;;;;;;;;MCG +04-27-047 NED03,PGC 035384,SDSS J112916.36+203511.7,UGC 06487 NED03;;Multiple SDSS entries describe this source.; -IC0700 NED04;G;11:29:16.70;+20:35:16.3;Leo;0.25;0.11;54;18.26;;;;;23.68;I;;;;;;;;MCG +04-27-047 NED04,PGC 035385,UGC 06487 NED04;;; -IC0701;G;11:31:00.68;+20:28:08.2;Leo;0.74;0.55;77;14.70;;12.58;11.88;11.54;22.90;Sd;;;;;;;;2MASX J11310065+2028085,LEDA 086632,MCG +04-27-051,SDSS J113100.68+202808.1,SDSS J113100.68+202808.2,UGC 06503 NED01;;; -IC0702;G;11:30:54.71;-04:55:19.2;Leo;0.75;0.42;130;15.63;;12.07;11.29;11.03;23.64;S0-a;;;;;;;;2MASX J11305469-0455190,LEDA 1051683;;; -IC0703;Dup;11:30:04.65;-11:32:46.8;Crt;;;;;;;;;;;;;;;3704;;;;;; -IC0704;Dup;11:30:11.56;-11:32:36.6;Crt;;;;;;;;;;;;;;;3707;;;;;; -IC0705;G;11:32:56.35;+50:14:30.7;UMa;0.77;0.50;34;15.10;;12.31;11.66;11.41;23.27;S0;;;;;;;;2MASX J11325631+5014310,MCG +08-21-049,PGC 035644,SDSS J113256.34+501430.6,SDSS J113256.34+501430.7,SDSS J113256.34+501431.0;;; -IC0706;G;11:33:12.62;-13:20:17.0;Crt;1.52;0.27;111;14.98;;11.51;10.85;10.59;24.16;S0-a;;;;;;;;2MASX J11331262-1320169,MCG -02-30-004,PGC 035658;;;B-Mag taken from LEDA. -IC0707;G;11:33:44.64;+21:22:48.2;Leo;0.65;0.52;5;14.40;;12.02;11.36;11.11;21.93;Sc;;;;;;;;2MASX J11334460+2122474,IRAS 11311+2139,MCG +04-27-064,PGC 035708,SDSS J113344.63+212248.1,UGC 06543;;; -IC0708;G;11:33:59.22;+49:03:43.4;UMa;1.50;0.98;140;14.20;;11.11;10.33;10.10;23.86;E;;;;;;;;2MASX J11335920+4903432,MCG +08-21-056,PGC 035720,SDSS J113359.22+490343.6,SDSS J113359.23+490343.3,SDSS J113359.23+490343.4,UGC 06549;;; -IC0709;G;11:34:14.54;+49:02:35.4;UMa;1.05;0.93;25;15.00;;11.80;10.98;10.66;23.92;E;;;;;;;;2MASX J11341457+4902352,MCG +08-21-057,PGC 035736,SDSS J113414.53+490235.4,SDSS J113414.53+490235.6,SDSS J113414.54+490235.4;;; -IC0710;G;11:34:27.41;+25:52:35.3;Leo;0.80;0.49;180;15.70;;11.84;11.13;10.77;23.74;S0;;;;;;;;2MASX J11342740+2552350,PGC 035750,SDSS J113427.40+255235.2,SDSS J113427.41+255235.3;;; -IC0711;G;11:34:46.56;+48:57:22.0;UMa;0.87;0.81;27;15.20;;12.04;11.29;11.09;23.70;E;;;;;;;;2MASX J11344658+4857217,MCG +08-21-062,PGC 035780,SDSS J113446.54+485722.1,SDSS J113446.55+485721.9,SDSS J113446.55+485722.0,SDSS J113446.56+485722.0;;; -IC0712;G;11:34:49.31;+49:04:39.7;UMa;3.02;0.89;91;14.80;;10.84;10.17;9.89;25.42;E;;;;;;;;2MASX J11344932+4904388,MCG +08-21-063,PGC 035785,SDSS J113449.29+490439.4,SDSS J113449.29+490439.5,SDSS J113449.29+490439.7,SDSS J113449.30+490439.5;;; -IC0713;*;11:34:44.22;+16:50:48.8;Leo;;;;;;;;;;;;;;;;;;SDSS J113444.21+165048.8;;The identification with IC 0713 is not certain.; -IC0714;Dup;11:36:30.19;-09:50:48.1;Crt;;;;;;;;;;;;;;;3763;;;;;; -IC0715;GPair;11:36:54.63;-08:22:38.6;Crt;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC0715NW;G;11:36:54.21;-08:22:32.9;Crt;0.87;0.40;157;15.18;;12.01;11.29;11.19;23.56;;;;;;;;;2MASX J11365422-0822327,PGC 170166;;; -IC0715SE;G;11:36:54.94;-08:22:43.4;Crt;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC0716;G;11:39:03.33;-00:12:21.6;Vir;1.59;0.30;123;14.80;;11.66;10.86;10.55;23.42;Sbc;;;;;;;;2MASX J11390337-0012219,MCG +00-30-018,PGC 036102,SDSS J113903.32-001221.6,SDSS J113903.33-001221.5,SDSS J113903.33-001221.6,SDSS J113903.33-001221.7,UGC 06612;;; -IC0717;Dup;11:38:51.05;-10:35:01.5;Crt;;;;;;;;;;;;;;;3779;;;;;; -IC0718;G;11:39:52.77;+08:52:28.3;Vir;1.15;0.57;180;14.60;;;;;23.06;IB;;;;;;;;MCG +02-30-007,PGC 036174,SDSS J113952.77+085228.3,UGC 06626;;; -IC0719;G;11:40:18.51;+09:00:35.6;Vir;1.22;0.39;52;13.60;;10.68;9.98;9.67;22.85;S0;;;;;;;;2MASX J11401849+0900354,IRAS 11377+0917,MCG +02-30-008,PGC 036205,SDSS J114018.50+090035.5,SDSS J114018.51+090035.6,UGC 06633;;; -IC0720;GPair;11:42:22.30;+08:46:04.0;Vir;1.30;;;;;;;;;;;;;;;;;MCG +02-30-016;;The position in 1989H&RHI.C...0000H is incorrect.;Diameter of the group inferred by the author. -IC0720 NED01;G;11:42:22.30;+08:45:55.7;Vir;1.05;0.93;8;14.95;;;;;23.73;SBab;;;;;;;;MCG +02-30-016 NED01,PGC 093112,SDSS J114222.29+084555.6,SDSS J114222.29+084555.7,SDSS J114222.30+084555.7;;;B-Mag taken from LEDA. -IC0720 NED02;G;11:42:22.34;+08:46:11.5;Vir;0.75;0.52;172;14.70;;11.06;10.34;10.10;22.99;S0-a;;;;;;;;2MASX J11422229+0846118,LEDA 036333,MCG +02-30-016 NED02,SDSS J114222.33+084611.4,SDSS J114222.33+084611.5,SDSS J114222.34+084611.5;;; -IC0721;G;11:42:28.88;-08:20:25.2;Crt;1.63;0.29;99;15.50;;12.52;11.86;11.44;23.57;SBc;;;;;;;;2MASX J11422887-0820251,IRAS 11399-0803,MCG -01-30-026,PGC 036354;;; -IC0722;G;11:42:43.76;+08:58:27.2;Vir;0.92;0.57;76;14.90;;12.16;11.50;11.22;23.15;Sbc;;;;;;;;2MASX J11424375+0858271,MCG +02-30-019,PGC 036365;;; -IC0723;G;11:42:57.60;-08:19:57.0;Crt;0.80;0.62;149;15.50;;12.21;11.59;11.34;22.70;I;;;;;;;;2MASX J11425761-0819558,IRAS 11404-0803,MCG -01-30-027,PGC 036384;;; -IC0724;G;11:43:34.67;+08:56:32.9;Vir;2.39;0.73;59;13.80;;10.33;9.58;9.39;23.79;Sa;;;;;;;;2MASX J11433467+0856331,MCG +02-30-022,PGC 036450,SDSS J114334.66+085632.8,SDSS J114334.67+085632.8,SDSS J114334.67+085632.9,UGC 06695;;; -IC0725;G;11:43:29.34;-01:40:04.7;Vir;0.74;0.66;125;15.10;;11.76;11.04;10.72;23.20;E;;;;;;;;2MASX J11432935-0140048,PGC 036444,SDSS J114329.33-014004.6,SDSS J114329.34-014004.6,SDSS J114329.34-014004.7,SDSS J114329.34-014004.8;;; -IC0726;G;11:43:45.30;+33:23:31.0;UMa;0.87;0.77;103;15.91;;12.90;12.20;11.76;24.48;E;;;;;;;;2MASX J11434531+3323309,LEDA 213876,SDSS J114345.30+332331.0;;;B-Mag taken from LEDA. -IC0727;G;11:44:28.60;+10:47:01.7;Leo;1.65;0.28;161;15.00;;11.59;10.78;10.55;23.71;Sb;;;;;;;;2MASX J11442860+1047016,MCG +02-30-025,PGC 036536,SDSS J114428.59+104701.6,SDSS J114428.60+104701.6,SDSS J114428.60+104701.7,UGC 06715;;; -IC0728;G;11:44:50.47;-01:36:04.8;Vir;1.20;0.58;63;14.70;;12.00;11.28;10.84;23.12;Sb;;;;;;;;2MASX J11445046-0136042,IRAS 11422-0119,MCG +00-30-021,PGC 036580,SDSS J114450.47-013604.7,SDSS J114450.47-013604.8,UGC 06720;;; -IC0729;G;11:45:18.32;+33:20:08.9;UMa;0.57;0.25;4;15.50;;12.17;11.48;11.29;;S0;;;;;;;;2MASX J11451829+3320090,PGC 036627,SDSS J114518.32+332008.8,SDSS J114518.32+332008.9;;; -IC0730;Dup;11:45:35.25;+03:13:54.6;Vir;;;;;;;;;;;;;;;3849;;;;;; -IC0731;G;11:45:18.08;+49:34:13.5;UMa;0.70;0.36;83;15.60;;13.92;13.43;12.94;23.67;SBc;;;;;;;;2MASX J11451810+4934130,MCG +08-21-096,PGC 036626,SDSS J114518.07+493413.9,SDSS J114518.08+493413.5;;; -IC0732;GPair;11:45:59.60;+20:26:34.0;Leo;1.10;;;;;;;;;;;;;;;;;MCG +04-28-050;;;Diameter of the group inferred by the author. -IC0732N;G;11:45:59.43;+20:26:49.3;Leo;0.65;0.27;155;15.10;;12.87;12.00;11.58;23.10;I;;;;;;;;2MASX J11455945+2026498,MCG +04-28-050 NED01,PGC 036688,SDSS J114559.42+202649.3;;Multiple SDSS entries describe this object.; -IC0732S;G;11:45:59.87;+20:26:20.1;Leo;0.74;0.39;128;15.10;;12.03;11.42;11.05;23.42;S0-a;;;;;;;;2MASX J11455988+2026198,MCG +04-28-050 NED02,PGC 083488;;; -IC0733;G;11:45:58.56;-08:09:21.0;Crt;0.72;0.19;90;16.05;;12.52;11.81;11.44;24.11;;;;;;;;;2MASX J11455856-0809208,LEDA 1007508;;; -IC0734;GPair;11:46:03.80;-08:16:04.0;Crt;1.10;;;;;;;;;;;;;;;;;MCG -01-30-031;;;Diameter of the group inferred by the author. -IC0734 NED01;G;11:46:03.75;-08:16:15.7;Crt;0.95;0.47;15;15.75;;11.98;11.34;11.18;24.49;E;;;;;;;;2MASX J11460375-0816158,MCG -01-30-031 NED01,PGC 036701;;; -IC0734 NED02;G;11:46:03.88;-08:15:53.9;Crt;0.83;0.71;12;;;;;;23.98;;;;;;;;;2MASSJ11460383-0815539,MCG -01-30-031 NED02,PGC1005962;;; -IC0735;G;11:48:12.80;+13:12:33.8;Leo;1.16;0.69;154;15.00;;13.57;12.96;12.77;23.69;SBd;;;;;;;;2MASX J11481278+1312314,MCG +02-30-038,PGC 036849,SDSS J114812.79+131233.7,SDSS J114812.80+131233.7,SDSS J114812.80+131233.8,UGC 06775;;; -IC0736;G;11:48:20.12;+12:42:59.7;Leo;0.66;0.63;82;15.30;;12.67;12.00;11.77;23.53;E;;;;;;;;2MASX J11482014+1242594,MCG +02-30-037,PGC 036853,SDSS J114820.11+124259.6;;; -IC0737;G;11:48:27.52;+12:43:38.6;Leo;0.82;0.70;108;14.70;;12.02;11.41;11.18;23.10;S0-a;;;;;;;;2MASX J11482751+1243383,IRAS 11459+1300,MCG +02-30-039,PGC 036861;;; -IC0738;G;11:48:54.87;-04:40:55.0;Vir;0.80;0.47;99;14.69;;12.73;11.93;11.75;22.66;I;;;;;;;;2MASX J11485487-0440551,IRAS 11463-0424,LEDA 2816780,PGC 036895;;; -IC0739;G;11:51:31.29;+23:51:46.3;Leo;1.09;0.76;151;15.10;;11.91;11.27;10.93;23.63;Sab;;;;;;;;2MASX J11513128+2351464,MCG +04-28-072,PGC 037097,SDSS J115131.28+235146.2,SDSS J115131.28+235146.3,UGC 06830;;; -IC0740;Dup;11:50:38.94;+55:21:13.9;UMa;;;;;;;;;;;;;;;3913;;;;;; -IC0741;G;11:50:31.77;-04:50:09.2;Vir;1.03;0.52;136;14.99;;11.42;10.74;10.42;23.73;S0-a;;;;;;;;2MASX J11503178-0450091,MCG -01-30-037,PGC 037008;;;B-Mag taken from LEDA. -IC0742;G;11:51:02.25;+20:47:59.0;Leo;1.07;0.86;121;15.10;;11.65;10.97;11.20;23.53;Sab;;;;;;;;2MASX J11510223+2047591,MCG +04-28-068,PGC 037056,SDSS J115102.25+204758.9,UGC 06822;;; -IC0743;G;11:53:22.26;-13:15:53.5;Crt;1.19;0.31;144;15.18;;12.00;11.38;11.47;23.22;SBc;;;;;;;;2MASX J11532223-1315537,IRAS 11508-1259,MCG -02-30-037,PGC 037267;;;B-Mag taken from LEDA. -IC0744;G;11:54:04.75;+23:11:32.0;Leo;0.63;0.38;52;15.70;;12.68;12.04;11.75;23.24;SBb;;;;;;;;2MASX J11540473+2311318,PGC 037333,SDSS J115404.74+231131.9,SDSS J115404.74+231132.0;;; -IC0745;G;11:54:12.27;+00:08:11.9;Vir;0.78;0.76;10;14.59;14.19;11.75;11.19;10.87;22.25;S0;;;;;;;;2MASX J11541224+0008116,MCG +00-30-034,PGC 037339,SDSS J115412.26+000811.8,SDSS J115412.27+000811.7,SDSS J115412.27+000811.8,SDSS J115412.27+000811.9,UGC 06877;;; -IC0746;G;11:55:35.13;+25:53:22.0;Leo;1.01;0.46;169;14.50;;12.48;11.90;11.61;22.77;SBbc;;;;;;;;2MASX J11553511+2553220,IRAS 11530+2609,MCG +04-28-096,PGC 037440,SDSS J115535.13+255321.9,SDSS J115535.13+255322.0,UGC 06898;;; -IC0747;G;11:57:04.90;-08:17:32.4;Vir;0.65;0.30;40;15.34;;11.63;10.92;10.68;23.23;E;;;;;;;;2MASX J11570484-0817318,LEDA 3094695;;; -IC0748;G;11:57:26.71;+07:27:39.4;Vir;0.85;0.67;78;15.20;;12.12;11.44;11.04;23.53;E;;;;;;;;2MASX J11572674+0727397,IRAS 11548+0744,MCG +01-31-006,PGC 037600,SDSS J115726.70+072739.4,SDSS J115726.71+072739.4;;; -IC0749;G;11:58:34.05;+42:44:02.5;UMa;2.13;1.71;159;13.40;12.52;11.28;10.69;10.45;23.04;Sc;;;;;;;;2MASX J11583398+4244027,MCG +07-25-008,PGC 037692,SDSS J115834.04+424402.5,SDSS J115834.05+424402.5,UGC 06962;;; -IC0750;G;11:58:52.20;+42:43:20.9;UMa;2.11;1.02;40;12.70;12.17;9.25;8.48;8.12;22.73;Sab;;;;;;;;2MASX J11585222+4243206,MCG +07-25-010,PGC 037719,SDSS J115852.19+424320.9,SDSS J115852.20+424320.9,UGC 06973;;; -IC0751;G;11:58:52.60;+42:34:13.2;UMa;1.10;0.41;30;15.39;14.39;11.72;10.97;10.63;23.25;Sb;;;;;;;;2MASX J11585255+4234136,MCG +07-25-011,PGC 037721,SDSS J115852.58+423413.2,SDSS J115852.59+423413.2,SDSS J115852.60+423413.2,UGC 06972;;; -IC0752;G;11:59:15.00;+42:34:00.6;UMa;0.58;0.43;91;15.20;;13.28;12.57;12.41;22.80;SBc;;;;;;;;2MASX J11591498+4234011,PGC 037747,SDSS J115914.99+423400.6,SDSS J115915.00+423400.6;;; -IC0753;G;11:59:12.88;-00:31:25.8;Vir;1.07;0.69;24;14.30;;11.75;11.09;10.90;23.37;S0;;;;;;;;2MASX J11591286-0031260,MCG +00-31-012,PGC 037745,SDSS J115912.87-003125.7,SDSS J115912.88-003125.7,SDSS J115912.88-003125.8,UGC 06979;;; -IC0754;G;11:59:23.55;-01:39:16.3;Vir;0.96;0.74;29;14.05;;10.91;10.27;10.02;23.11;E;;;;;;;;2MASX J11592357-0139167,MCG +00-31-013,PGC 037757,SDSS J115923.55-013916.3,UGC 06984;;; -IC0755;Dup;12:01:10.42;+14:06:15.5;Com;;;;;;;;;;;;;;;4019;;;;;; -IC0756;G;12:02:57.81;+04:50:45.1;Vir;1.70;0.70;99;18.06;17.54;11.48;10.75;10.48;23.75;SBc;;;;;;;;2MASX J12025779+0450449,MCG +01-31-015,PGC 038054,SDSS J120257.80+045045.0,SDSS J120257.81+045045.0,SDSS J120257.81+045045.1,UGC 07026;;; -IC0757;Dup;12:04:00.78;+52:35:17.8;UMa;;;;;;;;;;;;;;;4068;;;;;; -IC0758;G;12:04:11.88;+62:30:19.3;UMa;1.75;0.80;28;14.40;;;;;23.59;Sc;;;;;;;;MCG +11-15-014,PGC 038173,SDSS J120411.87+623019.2,SDSS J120411.87+623019.3,SDSS J120411.88+623019.3,UGC 07056;;; -IC0759;Other;12:05:09.33;+20:15:36.0;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0760;G;12:05:53.51;-29:17:31.5;Hya;1.82;0.53;149;13.44;;10.36;9.68;9.39;23.46;S0;;;;;;;;2MASX J12055352-2917314,ESO 440-052,ESO-LV 440-0520,MCG -05-29-010,PGC 038345;;; -IC0761;G;12:05:53.70;-12:40:24.0;Crv;1.00;0.38;108;15.44;;11.97;11.27;11.03;23.52;Sb;;;;;;;;2MASX J12055366-1240232,MCG -02-31-014,PGC 038353;;;B-Mag taken from LEDA. -IC0762;G;12:08:11.96;+25:45:25.7;Com;0.79;0.50;144;14.80;;12.16;11.43;11.15;22.80;Sab;;;;;;;;2MASX J12081195+2545261,IRAS 12056+2602,MCG +04-29-034,PGC 038532,SDSS J120811.95+254525.6,SDSS J120811.95+254525.7;;; -IC0763;G;12:08:15.31;+25:48:41.4;Com;0.91;0.45;86;15.30;;11.94;11.20;10.95;23.48;SBa;;;;;;;;2MASX J12081534+2548410,MCG +04-29-035,PGC 038525,SDSS J120815.31+254841.4;;; -IC0764;G;12:10:14.19;-29:44:12.5;Hya;4.84;1.14;177;13.03;;10.66;10.09;9.71;23.93;SABc;;;;;;;;2MASX J12101419-2944125,ESO 441-013,ESO-LV 441-0130,IRAS 12076-2927,MCG -05-29-025,PGC 038711,UGCA 273;;; -IC0765;Other;12:10:30.97;+16:08:06.7;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0766;G;12:10:53.60;-12:39:18.9;Crv;1.77;0.31;168;14.88;;11.33;10.52;10.29;24.71;S0-a;;;;;;;;2MASX J12105362-1239181,MCG -02-31-020,PGC 038775;;;B-Mag taken from LEDA. -IC0767;G;12:11:02.73;+12:06:14.4;Vir;0.93;0.68;75;14.60;;11.92;11.27;11.21;23.12;E;;;;;;;;2MASX J12110275+1206139,MCG +02-31-042,PGC 038792,SDSS J121102.73+120614.4;;; -IC0768;G;12:11:47.62;+12:08:37.4;Vir;1.29;0.57;112;14.80;;11.94;11.33;11.37;23.11;Sc;;;;;;;;2MASX J12114764+1208376,MCG +02-31-044,PGC 038848,SDSS J121147.61+120837.3,SDSS J121147.62+120837.4,UGC 07192;;; -IC0769;G;12:12:32.33;+12:07:25.7;Vir;2.20;1.51;37;14.10;;11.49;10.74;10.42;23.54;Sbc;;;;;;;;2MASX J12123232+1207254,IRAS 12099+1224,MCG +02-31-047,PGC 038916,SDSS J121232.32+120725.7,SDSS J121232.33+120725.7,UGC 07209;;; -IC0770;G;12:13:02.33;-04:33:12.1;Vir;0.46;0.43;40;16.05;;14.00;13.32;13.14;23.09;;;;;;;;;2MASX J12130229-0433122,PGC 1056625;;; -IC0771;G;12:15:13.24;+13:11:04.3;Vir;0.72;0.58;92;14.90;;12.94;12.11;12.23;22.59;SBc;;;;;;;;2MASX J12151319+1311042,MCG +02-31-067,PGC 039176,SDSS J121513.23+131104.2,SDSS J121513.23+131104.3,SDSS J121513.24+131104.3;;; -IC0772;G;12:15:15.89;+23:57:29.4;Com;0.78;0.36;96;15.50;;11.90;11.15;10.96;23.46;S0-a;;;;;;3067;;2MASX J12151589+2357296,PGC 039178,SDSS J121515.89+235729.3,SDSS J121515.89+235729.4;;; -IC0773;G;12:18:08.09;+06:08:22.4;Vir;0.78;0.65;9;15.20;;11.81;11.16;10.91;22.70;S0-a;;;;;;;;2MASX J12180809+0608222,IRAS 12155+0625,MCG +01-31-044,PGC 039493,SDSS J121808.09+060822.3,SDSS J121808.09+060822.4;;; -IC0774;G;12:18:51.26;-06:45:59.6;Vir;0.80;0.47;142;15.07;;11.72;11.13;10.77;23.81;S0;;;;;;;;2MASX J12185128-0645589,LEDA 157582;;; -IC0775;G;12:18:53.67;+12:54:45.6;Vir;1.05;0.77;11;14.80;;11.21;10.49;10.24;23.09;E-S0;;;;;;;;2MASX J12185371+1254457,MCG +02-31-087,PGC 039587,SDSS J121853.67+125445.6,UGC 07350;;; -IC0776;G;12:19:02.90;+08:51:22.0;Vir;1.12;0.62;93;14.90;;;;;22.81;SBd;;;;;;;;MCG +02-31-088,PGC 039613,UGC 07352;;; -IC0777;G;12:19:23.76;+28:18:35.8;Com;0.84;0.40;144;14.50;;12.02;11.35;11.04;22.54;SBb;;;;;;;;2MASX J12192381+2818355,IRAS 12168+2835,MCG +05-29-052,PGC 039663,SDSS J121923.76+281835.8,SDSS J121923.77+281835.8,UGC 07363;;; -IC0778;Dup;12:14:22.05;+56:00:41.2;UMa;;;;;;;;;;;;;;;4198;;;;;; -IC0779;G;12:19:38.73;+29:52:59.5;Com;0.97;0.93;50;15.40;;12.83;11.98;11.79;23.59;S?;;;;;;;;2MASX J12193875+2952592,MCG +05-29-053,PGC 039690,SDSS J121938.73+295259.5,UGC 07369;;; -IC0780;G;12:19:58.38;+25:46:18.1;Com;1.18;0.83;8;14.50;;11.11;10.41;10.09;23.41;E-S0;;;;;;;;2MASX J12195839+2546181,MCG +04-29-064,PGC 039745,SDSS J121958.37+254618.1,UGC 07381;;; -IC0781;G;12:20:03.30;+14:57:41.5;Com;1.30;1.24;30;14.80;;11.55;10.87;10.84;23.50;E-S0;;;;;;;;2MASX J12200327+1457412,MCG +03-32-002,PGC 039754,SDSS J122003.29+145741.4,SDSS J122003.29+145741.5;;; -IC0782;G;12:21:36.97;+05:45:56.7;Vir;1.14;0.64;61;15.10;;11.24;10.76;10.79;23.13;S0-a;;;;;;;;2MASX J12213697+0545564,MCG +01-32-020,PGC 039962,SDSS J122136.96+054556.7,SDSS J122136.97+054556.7;;; -IC0783;G;12:21:38.79;+15:44:42.4;Com;1.23;1.13;100;14.60;;11.82;11.19;11.06;23.26;S0-a;;;;;;;;2MASX J12213877+1544427,MCG +03-32-008,PGC 039965,SDSS J122138.78+154442.3,SDSS J122138.78+154442.4,SDSS J122138.79+154442.4,UGC 07415;;; -IC0784;G;12:22:30.05;-04:39:09.7;Vir;2.11;0.60;96;13.90;;11.03;10.35;10.16;23.48;SABb;;;;;;;;2MASX J12223004-0439096,IRAS 12199-0422,MCG -01-32-006,PGC 040092;;HOLM 384B is a star.; -IC0785;G;12:23:02.08;-13:13:25.1;Crv;1.13;0.49;70;15.32;;12.30;11.56;11.49;23.56;SBc;;;;;;;;2MASX J12230205-1313253,IRAS 12204-1256,MCG -02-32-007,PGC 040167;;;B-Mag taken from LEDA. -IC0786;G;12:23:10.95;-13:12:16.8;Crv;1.03;0.89;176;15.00;;11.12;10.45;10.15;23.63;S0;;;;;;;;2MASX J12231096-1312168,MCG -02-32-008,PGC 040189;;;B-Mag taken from LEDA. -IC0787;G;12:25:25.12;+16:07:27.1;Com;1.06;0.44;180;15.20;;11.51;10.92;10.56;23.42;Sa;;;;;;;;2MASX J12252510+1607270,MCG +03-32-031,PGC 040517,SDSS J122525.11+160727.0,SDSS J122525.12+160727.1;;; -IC0788;Dup;12:26:07.15;+16:10:51.6;Com;;;;;;;;;;;;;;;4405;;;;;; -IC0789;G;12:26:20.52;+07:27:36.6;Vir;1.01;0.58;140;15.20;;11.96;11.22;11.05;23.54;S0;;;;;;;;2MASX J12262048+0727364,MCG +01-32-061,PGC 040673,SDSS J122620.52+072736.5,SDSS J122620.52+072736.6,UGC 07533;;; -IC0790;Dup;12:26:35.50;+09:02:07.7;Vir;;;;;;;;;;;;;;;4410C;;;;;; -IC0791;G;12:26:59.48;+22:38:22.5;Com;1.05;0.97;78;14.20;;11.47;10.77;10.45;23.20;Sa;;;;;;;;2MASX J12265947+2238224,MCG +04-29-071,PGC 040783,SDSS J122659.47+223822.4,SDSS J122659.47+223822.5,UGC 07555;;; -IC0792;G;12:27:08.77;+16:19:31.4;Com;1.02;0.45;56;14.80;;12.24;11.59;11.26;23.02;Sb;;;;;;;;2MASX J12270877+1619312,MCG +03-32-040,PGC 040800,SDSS J122708.77+161931.4,UGC 07558;;; -IC0793;Dup;12:28:15.93;+09:26:10.3;Vir;;;;;;;;;;;;;;;4445;;;;;; -IC0794;G;12:28:08.61;+12:05:35.9;Vir;1.32;0.94;103;14.07;13.44;11.70;10.70;10.76;23.77;E;;;;;;;;2MASX J12280859+1205356,MCG +02-32-070,PGC 040964,SDSS J122808.61+120535.8,SDSS J122808.61+120535.9,UGC 07585;;; -IC0795;G;12:28:31.34;+23:18:17.8;Com;0.66;0.33;155;15.30;;11.87;11.16;10.88;23.10;S0;;;;;;;;2MASX J12283135+2318180,PGC 041026,SDSS J122831.33+231817.7,SDSS J122831.34+231817.7;;; -IC0796;G;12:29:26.35;+16:24:17.2;Com;1.46;0.46;145;14.07;;11.25;10.61;10.34;23.15;S0-a;;;;;;;;2MASX J12292635+1624170,IRAS 12268+1641,MCG +03-32-051,PGC 041160,SDSS J122926.32+162417.0,UGC 07623;;ASIAGO3 273 is the bar of IC 0796.; -IC0797;G;12:31:54.76;+15:07:26.2;Com;1.10;0.75;105;13.90;;11.58;11.07;10.80;22.18;Sc;;;;;;;;2MASX J12315475+1507261,IRAS 12293+1524,MCG +03-32-058,PGC 041504,SDSS J123154.77+150726.8,UGC 07676;;; -IC0798;G;12:32:33.41;+15:24:55.4;Com;0.90;0.87;36;15.30;;12.43;11.74;11.64;23.67;E;;;;;;;;2MASX J12323339+1524557,PGC 041589,SDSS J123233.40+152455.4;;; -IC0799;Dup;12:33:49.90;-07:22:32.0;Vir;;;;;;;;;;;;;;;4520;;;;;; -IC0800;G;12:33:56.66;+15:21:17.4;Com;1.51;1.10;151;14.30;;11.19;11.34;10.58;23.11;Sc;;;;;;;;2MASX J12335671+1521163,MCG +03-32-069,PGC 041763,SDSS J123356.66+152117.3,SDSS J123356.66+152117.4,UGC 07716;;; -IC0801;G;12:33:44.95;+52:15:17.3;CVn;1.10;0.92;55;14.80;;11.15;10.45;10.20;23.60;Sa;;;;;;;;2MASX J12334501+5215170,MCG +09-21-017,PGC 041739,SDSS J123344.95+521517.2,UGC 07717;;; -IC0802;*;12:35:57.63;+74:18:04.8;Dra;;;;;;;;;;;;;;;;;;;;; -IC0803;GGroup;12:39:37.01;+16:35:16.9;Com;1.20;;;;;;;;;;;;;;;;;MCG +03-32-080;;;Diameter of the group inferred by the author. -IC0803 NED01;G;12:39:35.86;+16:35:16.2;Com;1.00;0.32;75;16.35;;;;;24.37;Sab;;;;;;;;2MASX J12393585+1635161,PGC 215034,MCG +03-32-080 NED01,SDSS J123935.85+163516.1,SDSS J123935.86+163516.1;;;B-Mag taken from LEDA. -IC0803 NED02;G;12:39:37.51;+16:35:18.7;Com;0.89;0.14;125;15.30;;13.37;12.68;12.47;22.41;Sbc;;;;;;;;2MASX J12393745+1635191,IRAS 12371+1651,MCG +03-32-080 NED02,PGC 042367,SDSS J123937.50+163518.6;;HOLM 435B is part of this object.; -IC0804;G;12:41:15.97;-05:00:32.8;Vir;1.03;0.49;64;14.96;;11.25;10.46;10.35;23.46;S0;;;;;;;;2MASX J12411596-0500330,PGC 042549;;; -IC0805;Dup;12:41:25.45;+13:43:46.3;Com;;;;;;;;;;;;;;;4611;;;;;; -IC0806;G;12:42:08.43;-17:20:57.7;Crv;0.94;0.61;107;15.47;;11.84;11.22;10.93;23.64;SBab;;;;;;;;2MASX J12420844-1720569,MCG -03-32-019,PGC 042642;;;B-Mag taken from LEDA. -IC0807;G;12:42:12.49;-17:24:12.8;Crv;1.13;0.70;67;14.61;;11.26;10.58;10.09;23.59;E-S0;;;;;;;;2MASX J12421249-1724129,MCG -03-32-020,PGC 042635,SDSS J124212.47-172412.6;;;B-Mag taken from LEDA. -IC0808;Other;12:41:54.55;+19:55:55.6;Com;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -IC0809;G;12:42:08.66;+11:45:15.4;Vir;0.97;0.91;4;15.10;;11.59;10.89;10.61;23.27;E;;;;;;3672;;2MASX J12420866+1145159,MCG +02-32-184,PGC 042638,SDSS J124208.66+114515.4,UGC 07863;;; -IC0810;G;12:42:09.08;+12:35:48.5;Vir;1.62;0.58;167;14.70;;11.72;11.16;11.13;23.96;S0-a;;;;;;;;2MASX J12420911+1235486,MCG +02-32-185,PGC 042643,SDSS J124209.08+123548.4,UGC 07864;;; -IC0811;Dup;12:44:47.05;-10:11:52.2;Vir;;;;;;;;;;;;;;;4663;;;;;; -IC0812;G;12:44:50.86;-04:26:04.6;Vir;0.90;0.56;118;14.85;;12.23;11.65;11.49;;S0-a;;;;;;;;2MASX J12445087-0426046,IRAS 12422-0409,PGC 042952,SDSS J124450.84-042604.5;;; -IC0813;G;12:45:11.84;+23:02:10.1;Com;0.94;0.74;21;14.40;;11.05;10.36;10.13;22.83;Sb;;;;;;;;2MASX J12451185+2302101,MCG +04-30-019 NED01,PGC 042981,SDSS J124511.84+230210.0,UGC 07928;;UGC incorrectly says IC 0813 = IC 3734.; -IC0814;G;12:45:34.14;-08:05:31.9;Vir;0.85;0.35;170;15.64;;12.05;11.41;11.08;24.11;E-S0;;;;;;;;2MASX J12453412-0805301,LEDA 158051;;; -IC0815;G;12:46:22.67;+11:52:35.8;Vir;0.85;0.74;138;15.50;;11.89;11.18;10.98;23.79;E;;;;;;;;2MASX J12462267+1152357,MCG +02-33-015,PGC 043086,SDSS J124622.67+115235.7,SDSS J124622.68+115235.8;;; -IC0816;G;12:46:46.34;+09:51:02.0;Vir;1.10;0.70;34;15.10;;11.65;10.88;10.63;23.58;Sa;;;;;;;;2MASX J12464634+0951016,MCG +02-33-019,PGC 043111,SDSS J124646.33+095101.9,SDSS J124646.33+095102.0,SDSS J124646.34+095102.0,UGC 07944;;; -IC0817;G;12:46:56.80;+09:51:25.6;Vir;0.73;0.66;91;15.40;;12.09;11.41;11.28;23.11;E;;;;;;3764;;2MASX J12465678+0951254,MCG +02-33-020,PGC 043126,SDSS J124656.79+095125.5,SDSS J124656.80+095125.5,SDSS J124656.80+095125.6,UGC 07944 NOTES01;;UGC notes a small superposed companion.; -IC0818;G;12:46:44.55;+29:44:07.0;Com;0.89;0.25;47;15.10;;12.11;11.44;11.15;22.85;Sb;;;;;;;;2MASX J12464453+2944068,MCG +05-30-078,PGC 043113,SDSS J124644.55+294407.0;;; -IC0819;Dup;12:46:10.11;+30:43:54.9;Com;;;;;;;;;;;;;;;4676A;;;;;; -IC0820;Dup;12:46:11.24;+30:43:21.9;Com;;;;;;;;;;;;;;;4676B;;;;;; -IC0821;G;12:47:26.16;+29:47:16.0;Com;1.00;0.92;121;14.50;;12.10;11.44;11.68;23.20;SABb;;;;;;;;2MASX J12472618+2947154,MCG +05-30-083,PGC 043161,SDSS J124726.15+294716.0,SDSS J124726.16+294716.0,UGC 07957;;; -IC0822;G;12:47:45.57;+30:04:37.9;Com;0.74;0.55;98;15.44;;11.97;11.30;10.90;23.66;E;;;;;;;;2MASX J12474550+3004378,MCG +05-30-085,PGC 043196,SDSS J124745.56+300437.8,SDSS J124745.56+300437.9;;;B-Mag taken from LEDA. -IC0823;*;12:47:50.86;+27:12:33.0;Com;;;;;;;;;;;;;;;;;;;;The IC identification is not sure, but IC 0823 is certainly not NGC 4692.; -IC0824;Dup;12:49:41.85;-04:34:47.0;Vir;;;;;;;;;;;;;;;4678;;;;;; -IC0825;G;12:50:19.17;-05:21:46.8;Vir;0.62;0.45;79;15.43;;13.82;13.63;12.94;23.29;E-S0;;;;;;;;2MASX J12501917-0521468,LEDA 170209;;The IC number may apply to NGC 4718.; -IC0826;G;12:51:19.93;+31:03:34.7;Com;0.69;0.48;62;14.90;;11.93;11.34;10.97;22.56;SBab;;;;;;;;2MASX J12511994+3103351,MCG +05-30-106,PGC 043538,SDSS J125119.92+310334.6,SDSS J125119.93+310334.6,SDSS J125119.93+310334.7;;; -IC0827;G;12:51:55.06;+16:16:58.3;Com;0.89;0.42;103;15.00;;11.94;11.22;10.88;22.74;Sd;;;;;;;;2MASX J12515504+1616576,IRAS 12494+1633,MCG +03-33-014,PGC 043607,SDSS J125155.05+161658.2,UGC 08008;;; -IC0828;G;12:52:15.63;-08:07:58.3;Vir;0.69;0.27;145;15.02;;11.38;10.64;10.44;;S0;;;;;;;;2MASX J12521564-0807584;;; -IC0829;G;12:52:27.43;-15:31:06.7;Crv;0.38;0.38;105;14.40;;11.10;10.07;10.10;21.06;S0;;;;;;;;2MASX J12522742-1531070,MCG -02-33-037,PGC 043663,PGC 043675;;;B-Mag taken from LEDA. -IC0830;G;12:51:16.52;+53:41:46.7;UMa;1.16;0.60;164;14.30;;11.19;10.54;10.20;23.11;S0-a;;;;;;;;2MASX J12511651+5341465,MCG +09-21-055,PGC 043533,SDSS J125116.51+534146.6,SDSS J125116.52+534146.7,SDSS J125116.52+534146.9,UGC 08003;;; -IC0831;G;12:52:44.07;+26:28:13.5;Com;0.86;0.41;96;15.50;;11.76;11.04;10.79;23.54;E-S0;;;;;;;;2MASX J12524408+2628135,MCG +05-30-113,PGC 043708,SDSS J125244.06+262813.4,SDSS J125244.07+262813.4,SDSS J125244.07+262813.5;;; -IC0832;G;12:53:59.11;+26:26:38.6;Com;0.78;0.74;2;15.00;;11.70;11.05;10.87;23.26;E;;;;;;;;2MASX J12535906+2626381,MCG +05-30-119,PGC 043848,SDSS J125359.11+262638.5;;; -IC0833;G;12:56:38.20;-06:44:00.3;Vir;0.43;0.34;138;16.51;;12.92;12.15;12.14;23.59;;;;;;;;;2MASX J12563821-0644000,PGC 158287;;; -IC0834;G;12:56:18.60;+26:21:32.1;Com;0.91;0.54;96;15.20;;11.61;10.93;10.66;23.64;E;;;;;;;;2MASX J12561859+2621320,MCG +05-31-011,PGC 044138,SDSS J125618.59+262132.0,SDSS J125618.59+262132.1;;; -IC0835;G;12:56:52.28;+26:29:15.8;Com;0.76;0.70;144;14.90;;12.37;11.65;11.39;23.01;SBab;;;;;;;;2MASX J12565229+2629158,MCG +05-31-021,PGC 044200,SDSS J125652.28+262915.7,SDSS J125652.28+262915.8;;; -IC0836;G;12:55:54.02;+63:36:44.4;Dra;1.23;0.24;74;14.60;;11.30;10.55;10.18;22.84;Sab;;;;;;;;2MASX J12555423+6336426,IRAS 12538+6352,MCG +11-16-007,PGC 044092,SDSS J125554.01+633644.4,SDSS J125554.02+633644.4,SDSS J125554.29+633641.8,UGC 08059;;Multiple SDSS entries describe this object.; -IC0837;G;12:57:31.21;+26:30:43.8;Com;0.92;0.33;12;15.40;;12.51;11.91;11.51;23.54;Sab;;;;;;;;2MASX J12573116+2630428,IRAS 12551+2646,MCG +05-31-028,PGC 044322,SDSS J125731.20+263043.7,SDSS J125731.20+263043.8,SDSS J125731.21+263043.8;;; -IC0838;G;12:58:13.57;+26:25:36.8;Com;0.67;0.60;4;14.90;;13.18;12.56;12.34;23.37;Sb;;;;;;;;2MASX J12581357+2625366,MCG +05-31-043,PGC 044444,SDSS J125813.56+262536.7,SDSS J125813.57+262536.8;;; -IC0839;G;12:58:15.05;+28:07:33.3;Com;0.48;0.28;84;15.50;14.56;12.73;12.01;11.72;22.67;S0;;;;;;;;2MASX J12581504+2807327,PGC 044423,SDSS J125815.04+280733.2;;; -IC0840;G;12:58:42.03;+10:36:59.4;Vir;0.82;0.65;161;15.10;;12.55;11.74;11.33;23.23;Sa;;;;;;;;2MASX J12584201+1036592,MCG +02-33-040,PGC 044495,SDSS J125842.03+103659.4,UGC 08090;;; -IC0841;G;12:59:47.34;+21:48:47.6;Com;0.96;0.55;130;15.40;;11.81;11.04;10.73;23.40;SBb;;;;;;;;2MASX J12594731+2148470,IRAS 12573+2204,MCG +04-31-002,PGC 044665,SDSS J125947.33+214847.5;;; -IC0842;G;13:00:39.55;+29:01:09.9;Com;1.14;0.57;56;14.72;13.93;11.78;11.19;10.76;23.20;SBbc;;;;;;;;2MASX J13003953+2901096,MCG +05-31-087,PGC 044795,SDSS J130039.55+290109.8,SDSS J130039.55+290109.9,UGC 08118;;; -IC0843;G;13:01:33.60;+29:07:50.2;Com;1.06;0.53;135;14.62;13.84;11.27;10.55;10.23;23.63;S0;;;;;;;;2MASX J13013361+2907497,MCG +05-31-100,PGC 044908,SDSS J130133.59+290750.1,SDSS J130133.60+290750.1,SDSS J130133.60+290750.2,UGC 08137;;; -IC0844;G;13:03:18.22;-30:31:15.9;Cen;1.77;0.54;100;13.69;;10.43;9.69;9.51;23.59;S0;;;;;;;;2MASX J13031822-3031157,ESO 443-040,ESO-LV 443-0400,MCG -05-31-024,PGC 045086;;; -IC0845;G;13:04:57.42;+12:04:44.6;Vir;0.84;0.64;129;15.50;;11.91;11.28;10.94;23.65;E-S0;;;;;;;;2MASX J13045741+1204446,MCG +02-33-053 NED01,PGC 045234,SDSS J130457.41+120444.6,SDSS J130457.42+120444.5,SDSS J130457.42+120444.6;;; -IC0846;G;13:05:21.11;+23:05:44.0;Com;0.73;0.62;154;15.50;;11.82;11.15;10.90;23.35;E;;;;;;;;2MASX J13052110+2305438,PGC 045267,SDSS J130521.11+230544.0;;; -IC0847;Dup;13:05:32.15;+53:41:06.5;UMa;;;;;;;;;;;;;;;4973;;;;;; -IC0848;G;13:07:01.56;+16:00:25.6;Com;0.73;0.54;165;15.40;;12.94;12.48;11.86;23.23;Sbc;;;;;;;;2MASX J13070154+1600253,MCG +03-33-031,PGC 045414,SDSS J130701.55+160025.5;;; -IC0849;G;13:07:38.69;-00:56:32.9;Vir;1.02;0.90;91;14.00;;11.90;11.06;11.05;22.89;SABc;;;;;;;;2MASX J13073872-0056327,IRAS 13050-0040,MCG +00-34-002,PGC 045480,SDSS J130738.66-005632.6,SDSS J130738.69-005632.8,SDSS J130738.69-005632.9,UGC 08202;;; -IC0850;G;13:07:50.23;-00:52:06.4;Vir;0.95;0.26;68;15.50;;12.60;11.81;11.45;22.77;SBcd;;;;;;;;2MASX J13075031-0052057,IRAS 13052-0036,MCG +00-34-003,PGC 045491,SDSS J130750.22-005206.3;;; -IC0851;G;13:08:34.34;+21:02:59.2;Com;1.13;0.41;152;14.90;;11.87;11.41;11.19;22.50;Sc;;;;;;;;2MASX J13083435+2102590,IRAS 13061+2118,MCG +04-31-009,PGC 045552,SDSS J130834.28+210259.8,UGC 08219;;; -IC0852;G;13:07:36.76;+60:09:25.9;UMa;1.17;0.98;24;14.80;;11.50;10.83;10.52;23.86;E-S0;;;;;;;;2MASX J13073674+6009256,MCG +10-19-035,PGC 045472,SDSS J130736.76+600925.9,SDSS J130736.76+600926.2,SDSS J130736.77+600925.9,UGC 08213;;; -IC0853;G;13:08:41.73;+52:46:27.4;UMa;1.03;0.96;14;15.00;;11.34;10.66;10.34;23.26;Sab;;;;;;4205;;2MASX J13084168+5246271,MCG +09-22-019,PGC 045560,SDSS J130841.72+524627.3,SDSS J130841.72+524627.5,SDSS J130841.73+524627.3,SDSS J130841.73+524627.4,UGC 08230;;; -IC0854;G;13:09:49.97;+24:34:39.2;Com;0.92;0.69;122;15.10;;12.20;11.49;11.21;23.29;SABb;;;;;;;;2MASX J13094995+2434390,MCG +04-31-011 NED01,PGC 045664,SDSS J130949.98+243439.2;;; -IC0855;G;13:10:36.90;-04:29:04.3;Vir;0.72;0.63;15;14.98;;12.93;12.23;12.08;22.88;;;;;;;;;2MASX J13103691-0429042,PGC 045725;;; -IC0856;G;13:10:41.61;+20:32:12.4;Com;0.73;0.21;64;15.20;;12.15;11.38;11.03;22.99;SBab;;;;;;;;2MASX J13104161+2032123,IRAS 13082+2048,PGC 045733;;; -IC0857;G;13:13:50.17;+17:04:34.5;Com;0.99;0.74;100;14.70;;11.91;11.23;10.75;23.03;Sb;;;;;;;;2MASX J13135016+1704345,MCG +03-34-006,PGC 045983,SDSS J131350.17+170435.5,SDSS J131350.18+170434.4,UGC 08310;;; -IC0858;G;13:14:51.94;+17:13:36.4;Com;1.56;1.09;100;14.70;;10.91;10.22;9.92;24.40;S0;;;;;;;;2MASX J13145194+1713364,MCG +03-34-007,PGC 046069,SDSS J131451.94+171336.3,UGC 08321;;; -IC0859;G;13:14:57.28;+17:13:30.6;Com;0.68;0.61;142;15.20;;11.59;10.85;10.66;23.14;E;;;;;;;;2MASX J13145724+1713304,MCG +03-34-008,PGC 046074,SDSS J131457.26+171330.5,UGC 08321 NOTES01;;; -IC0860;G;13:15:03.53;+24:37:07.9;Com;0.96;0.60;19;14.80;;11.56;10.81;10.59;22.87;SBab;;;;;;;;2MASX J13150351+2437074,IRAS 13126+2452,MCG +04-31-015,PGC 046086,SDSS J131503.51+243707.7,SDSS J131503.51+243707.8;;; -IC0861;G;13:15:07.42;+34:19:43.6;CVn;0.84;0.58;76;15.60;;11.54;10.84;10.58;23.83;S0-a;;;;;;;;2MASX J13150738+3419434,MCG +06-29-068,PGC 046092,SDSS J131507.42+341943.5,SDSS J131507.42+341943.6,UGC 08326;;; -IC0862;G;13:16:15.38;+20:02:51.6;Com;0.54;0.54;80;15.20;;12.01;11.28;11.19;22.82;E;;;;;;;;2MASX J13161539+2002511,MCG +03-34-011,PGC 046181,SDSS J131615.38+200251.5,SDSS J131615.38+200251.6;;MCG declination is -1 degree in error.; -IC0863;G;13:17:12.40;-17:15:16.1;Vir;1.14;0.79;45;14.24;;11.09;10.46;10.25;23.16;S0-a;;;;;;;;2MASX J13171239-1715162,IRAS 13145-1659,MCG -03-34-043,PGC 046270;;; -IC0864;G;13:17:08.49;+20:41:30.2;Com;0.58;0.27;23;16.99;;13.08;12.20;11.96;23.03;SBc;;;;;;;;2MASX J13170852+2041313,PGC 163379,SDSS J131708.48+204130.1,SDSS J131708.48+204130.2;;;B-Mag taken from LEDA. -IC0865;G;13:17:35.49;-05:50:02.0;Vir;0.73;0.61;40;15.29;;12.09;11.48;10.95;23.25;Sc;;;;;;;;2MASX J13173550-0550020,LEDA 158675;;; -IC0866;G;13:17:16.75;+20:41:27.6;Com;0.67;0.37;34;15.60;;12.39;11.70;11.34;22.96;SBb;;;;;;;;2MASX J13171672+2041273,IRAS 13148+2057,MCG +04-31-019,PGC 046279,SDSS J131716.74+204127.5,UGC 08354;;; -IC0867;G;13:17:19.79;+20:38:17.1;Com;1.27;0.90;18;15.50;;12.08;11.33;11.10;23.83;Sc;;;;;;;;2MASX J13171978+2038173,MCG +04-31-020,PGC 046283,SDSS J131719.78+203817.0,UGC 08353;;; -IC0868;G;13:17:28.54;+20:36:44.4;Com;0.79;0.74;9;15.40;;11.68;11.03;10.73;23.14;E;;;;;;;;2MASX J13172854+2036443,MCG +04-31-021,PGC 046281,SDSS J131728.54+203644.4;;; -IC0869;GPair;13:17:30.76;+20:40:51.9;Com;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC0869 NED01;G;13:17:29.96;+20:41:03.1;Com;0.55;0.44;80;15.90;;12.84;12.17;11.73;23.32;Sab;;;;;;;;2MASX J13172997+2041033,PGC 1633609,SDSS J131729.95+204103.0;;;B-Mag taken from LEDA. -IC0869 NED02;G;13:17:31.64;+20:40:39.3;Com;0.33;0.29;80;16.58;;13.50;12.84;12.47;23.28;E;;;;;;;;2MASX J13173161+2040393,PGC 1633431,SDSS J131731.63+204039.3;;;B-Mag taken from LEDA. -IC0870;G;13:17:30.90;+20:36:00.4;Com;0.79;0.48;45;15.40;;12.15;11.48;11.14;23.05;Sc;;;;;;;;2MASX J13173089+2036003,IRAS 13150+2051,MCG +04-31-022,PGC 046286;;; -IC0871;G;13:17:58.66;+04:24:12.3;Vir;1.57;0.79;70;14.80;;11.29;10.59;10.29;23.81;Sb;;;;;;;;2MASX J13175865+0424122,IRAS 13155+0439,MCG +01-34-016,PGC 046321,SDSS J131758.65+042412.2,SDSS J131758.66+042412.2,SDSS J131758.66+042412.3,UGC 08358;;Coordinates in A&AS 93, 173, 1992 refer to a star.; -IC0872;G;13:17:01.60;+06:21:25.5;Vir;1.16;0.93;117;15.00;;11.78;11.05;10.97;23.92;Sb;;;;;;;;2MASX J13170157+0621257,MCG +01-34-014,PGC 046250,SDSS J131701.60+062125.4,UGC 08349;;Identity as IC 0872 is not certain.; -IC0873;G;13:18:16.28;+04:27:51.5;Vir;0.94;0.86;120;15.30;;12.01;11.26;10.94;23.82;S0;;;;;;;;2MASX J13181624+0427512,PGC 046345,SDSS J131816.27+042751.4,SDSS J131816.27+042751.5,SDSS J131816.28+042751.4,SDSS J131816.28+042751.5;;; -IC0874;G;13:19:00.52;-27:37:42.8;Hya;1.29;1.05;56;13.46;;10.60;9.92;9.68;22.81;S0;;;;;;;;2MASX J13190052-2737425,ESO 508-042,ESO-LV 508-0420,MCG -04-31-050,PGC 046410;;; -IC0875;G;13:17:07.57;+57:32:22.0;UMa;1.55;1.14;149;13.90;;11.18;10.51;10.30;23.52;S0;;;;;;;;2MASX J13170752+5732218,MCG +10-19-059,PGC 046263,SDSS J131707.56+573222.2,UGC 08355;;; -IC0876;G;13:18:34.58;+04:29:10.7;Vir;0.90;0.76;174;14.80;;11.56;11.01;10.94;23.15;SABb;;;;;;;;2MASX J13183460+0429110,IRAS 13160+0445,MCG +01-34-017,PGC 046370,SDSS J131834.58+042910.6,SDSS J131834.58+042910.7;;; -IC0877;Other;13:17:57.37;+06:04:55.4;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0878;Other;13:18:00.36;+06:07:13.5;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0879;G;13:19:40.57;-27:25:44.3;Hya;0.84;0.34;136;14.01;;11.74;10.85;10.89;21.96;SBab;;;;;;4222;;2MASX J13194056-2725442,ESO 508-047,ESO-LV 508-0470,MCG -04-31-052,PGC 046479;;; -IC0880;Other;13:18:07.36;+06:06:43.6;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0881;G;13:19:56.35;+15:51:01.9;Com;1.53;0.35;12;14.80;;11.26;10.60;10.30;23.62;SBa;;;;;;;;2MASX J13195637+1551019,MCG +03-34-016,PGC 046498,SDSS J131956.34+155101.8,SDSS J131956.34+155101.9,UGC 08375;;; -IC0882;G;13:20:06.94;+15:53:53.3;Com;0.81;0.70;66;15.00;;11.72;11.05;10.70;23.29;E;;;;;;;;2MASX J13200691+1553529,MCG +03-34-017,PGC 046508,SDSS J132006.93+155353.2;;; -IC0883;G;13:20:35.34;+34:08:22.2;CVn;0.79;0.47;152;14.80;;11.99;11.23;10.93;22.59;Sm;;;;;;;;2MASX J13203537+3408218,IRAS 13183+3423,PGC 046560,SDSS J132035.40+340821.5,SDSS J132035.40+340821.7,SDSS J132035.41+340821.6,UGC 08387;;; -IC0884;Other;13:21:54.91;-12:43:47.0;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0885;G;13:22:30.92;+21:18:59.1;Com;1.01;0.89;170;14.90;;11.04;10.33;10.07;23.34;E;;;;;;;;2MASX J13223088+2118589,MCG +04-32-008,PGC 046722,SDSS J132230.91+211859.0,SDSS J132230.91+211859.1;;; -IC0886;G;13:23:57.49;-04:23:43.6;Vir;0.66;0.54;58;15.64;;12.37;11.63;11.39;23.82;;;;;;;;;2MASX J13235748-0423425,LEDA 1058761;;; -IC0887;Other;13:24:11.94;-12:27:37.5;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0888;Dup;13:24:51.41;+13:44:16.3;Vir;;;;;;;;;;;;;;;5136;;;;;; -IC0889;G;13:26:37.54;+11:52:10.2;Vir;0.89;0.76;13;15.50;;12.26;11.61;11.38;23.81;E;;;;;;;;2MASX J13263758+1152105,PGC 047050,SDSS J132637.53+115210.2;;; -IC0890;G;13:28:25.59;-16:05:32.4;Vir;1.16;0.47;146;15.27;;11.46;10.78;10.48;23.86;Sa;;;;;;;;2MASX J13282558-1605326,LEDA 170253;;; -IC0891;G;13:29:59.92;+00:18:18.4;Vir;0.78;0.73;30;14.70;;11.52;10.80;10.67;23.04;E;;;;;;;;2MASX J13295990+0018183,MCG +00-34-040,PGC 047418,SDSS J132959.91+001818.3,SDSS J132959.92+001818.3,SDSS J132959.92+001818.4;;One APM position is east of the nucleus.; -IC0892;G;13:31:45.88;-02:42:47.0;Vir;1.60;0.84;19;14.50;;10.87;10.21;9.99;24.25;S0;;;;;;;;2MASX J13314591-0242464,MCG +00-35-001,PGC 047564,SDSS J133145.87-024247.0,SDSS J133145.88-024247.0,UGC 08512;;; -IC0893;G;13:31:47.38;-02:36:41.8;Vir;1.01;0.20;52;14.79;;11.58;10.80;10.58;22.75;SABa;;;;;;;;2MASX J13314738-0236414,MCG +00-35-002,PGC 047566,SDSS J133147.38-023641.8,UGC 08513;;; -IC0894;G;13:32:04.82;+17:02:56.3;Com;1.14;0.50;79;17.07;16.37;11.58;10.91;10.65;23.78;S0-a;;;;;;;;2MASX J13320482+1702562,MCG +03-35-002,PGC 047597,SDSS J133204.81+170256.2;;; -IC0895;Other;13:32:17.11;+35:39:30.2;CVn;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0896;G;13:34:10.22;+04:52:06.5;Vir;1.04;0.71;29;15.00;;11.58;10.96;10.62;23.79;E;;;;;;;;2MASX J13341021+0452062,MCG +01-35-007,PGC 047794,SDSS J133410.20+045206.4,SDSS J133410.21+045206.4,SDSS J133410.21+045206.5,SDSS J133410.22+045206.5,UGC 08545;;; -IC0897;G;13:34:19.45;+17:50:53.0;Com;0.75;0.32;56;15.60;;12.48;11.85;11.47;23.77;S0-a;;;;;;;;2MASX J13341945+1750534,PGC 047816,SDSS J133419.44+175052.9,SDSS J133419.45+175052.9;;; -IC0898;G;13:34:09.41;+13:16:51.0;Vir;0.61;0.43;163;15.40;;12.44;11.77;11.55;23.18;S0;;;;;;;;2MASX J13340943+1316504,PGC 047796,SDSS J133409.41+131650.9,SDSS J133409.41+131651.0;;; -IC0899;G;13:34:59.46;-08:05:29.9;Vir;0.85;0.71;91;14.91;;11.51;10.82;10.47;23.53;E;;;;;;;;2MASX J13345943-0805291,LEDA 170267;;; -IC0900;G;13:34:43.01;+09:20:12.7;Vir;1.28;0.85;29;14.30;;11.50;10.86;10.43;22.69;SABc;;;;;;;;2MASX J13344300+0920122,IRAS 13322+0935,MCG +02-35-004,PGC 047855,SDSS J133443.01+092012.7,UGC 08555;;; -IC0901;G;13:35:42.40;+13:19:51.3;Boo;0.74;0.53;91;15.20;;12.46;11.84;11.41;23.11;S?;;;;;;;;2MASX J13354238+1319514,MCG +02-35-011,PGC 047954,SDSS J133542.39+131951.2,SDSS J133542.40+131951.3;;Both UGC 08576 and IC 0901 contribute to IRAS 13331+1334.; -IC0902;G;13:36:01.22;+49:57:39.0;UMa;2.18;0.55;162;14.70;;11.44;10.60;10.42;23.98;Sb;;;;;;;;2MASX J13360121+4957385,IRAS 13340+5012,MCG +08-25-024,PGC 047985,SDSS J133601.21+495739.0,SDSS J133601.22+495739.0,UGC 08593;;; -IC0903;G;13:38:26.07;-00:13:39.5;Vir;1.64;0.62;178;14.70;13.62;11.50;10.83;10.59;23.55;Sab;;;;;;;;2MASX J13382611-0013390,MCG +00-35-013,PGC 048207,SDSS J133826.07-001339.4,SDSS J133826.07-001339.5,UGC 08625;;; -IC0904;G;13:38:32.21;+00:32:24.7;Vir;1.05;0.54;129;15.10;14.21;12.06;11.42;11.14;23.66;S0-a;;;;;;;;2MASX J13383217+0032250,MCG +00-35-014,PGC 048217,SDSS J133832.21+003224.6,UGC 08628;;; -IC0905;G;13:40:02.93;+23:08:34.7;Boo;0.86;0.70;130;15.00;;11.87;11.13;10.87;23.47;E;;;;;;;;2MASX J13400291+2308351,IRAS 13376+2323,MCG +04-32-020,PGC 048349,SDSS J134002.92+230834.6,SDSS J134002.92+230834.7;;; -IC0906;G;13:40:09.99;+23:20:27.9;Boo;0.84;0.29;145;15.70;;12.74;12.07;11.74;23.05;Sc;;;;;;;;2MASX J13401000+2320281,MCG +04-32-021,PGC 048348,SDSS J134009.99+232027.8;;; -IC0907;G;13:39:23.01;+51:03:03.8;UMa;1.11;0.21;20;15.30;;11.91;11.15;10.90;23.16;Sb;;;;;;;;2MASX J13392302+5103036,MCG +09-22-090,PGC 048286,SDSS J133923.00+510303.8,SDSS J133923.01+510303.8,UGC 08643;;; -IC0908;G;13:41:18.94;-04:20:39.1;Vir;0.90;0.55;82;14.67;;12.90;12.26;;22.58;SABc;;;;;;;;2MASX J13411893-0420390,MCG -01-35-009,PGC 048443;;; -IC0909;G;13:40:51.16;+24:28:23.8;Boo;0.73;0.67;2;14.90;;12.03;11.26;11.08;22.85;Sa;;;;;;;;2MASX J13405113+2428239,IRAS 13385+2443,MCG +04-32-023,PGC 048408,SDSS J134051.15+242823.8,SDSS J134051.16+242823.8;;; -IC0910;G;13:41:07.86;+23:16:55.4;Boo;0.68;0.56;120;15.10;;12.17;11.50;11.16;22.81;Sab;;;;;;;;2MASX J13410784+2316550,MCG +04-32-025 NED01,PGC 048424,SDSS J134107.85+231655.3;;; -IC0911;G;13:41:25.37;+23:14:50.9;Boo;0.56;0.40;99;15.60;;12.35;11.67;11.29;22.78;SBab;;;;;;;;2MASX J13412534+2314505,MCG +04-32-027,PGC 048448,SDSS J134125.37+231450.9,UGC 08665 NED01;;; -IC0912;G;13:41:28.86;+23:14:43.6;Boo;0.72;0.35;100;15.60;;12.55;11.82;11.72;23.19;Sa;;;;;;;;2MASX J13412883+2314435,MCG +04-32-028,PGC 048449,SDSS J134128.86+231443.5,UGC 08665 NED02;;; -IC0913;G;13:41:29.66;+23:10:01.0;Boo;0.72;0.49;63;15.60;;12.50;11.81;11.40;23.13;Sb;;;;;;;;2MASX J13412963+2310005,MCG +04-32-029,PGC 048458,SDSS J134129.65+231001.0,SDSS J134129.66+231001.0,UGC 08664;;; -IC0914;G;13:41:40.61;+23:11:20.5;Boo;0.79;0.65;165;15.20;;12.81;12.30;11.82;23.27;Sc;;;;;;;;2MASX J13414063+2311194,MCG +04-32-030,PGC 048475,SDSS J134140.60+231120.5;;; -IC0915;G;13:43:27.35;-17:19:58.1;Vir;0.45;0.41;110;15.29;;11.86;11.14;10.92;;E-S0;;;;;;;;2MASX J13432733-1719576,IRAS 13407-1704,PGC 088922;;; -IC0916;G;13:42:38.15;+24:27:54.2;Boo;0.86;0.83;85;15.40;;12.06;11.32;11.06;23.87;E;;;;;;;;2MASX J13423818+2427544,MCG +04-32-031,PGC 048564,SDSS J134238.14+242754.2;;; -IC0917;*;13:42:31.25;+55:38:12.9;UMa;;;;;;;;;;;;;;;;;;SDSS J134231.25+553812.8;;Identification as IC 0917 is not certain.; -IC0918;G;13:42:37.81;+55:31:46.4;UMa;0.63;0.23;102;17.97;;;;;23.80;Sb;;;;;;;;2MASX J13423764+5531467,PGC 250533,SDSS J134237.80+553146.3,SDSS J134237.81+553146.4;;May contribute to the IR source IRAS F13407+5547.;B-Mag taken from LEDA. -IC0919;G;13:42:47.50;+55:31:17.0;UMa;0.54;0.32;25;15.60;;12.52;11.80;11.49;23.00;S0-a;;;;;;;;2MASX J13424753+5531167,PGC 048570,SDSS J134247.46+553117.1,SDSS J134247.49+553116.9,SDSS J134247.50+553117.0;;Identification as IC 0919 is not certain.; -IC0920;G;13:45:24.67;-12:34:27.0;Vir;0.87;0.77;10;14.33;;10.96;10.26;9.97;23.02;E;;;;;;;;2MASX J13452467-1234271,MCG -02-35-015,PGC 048779;;;B-Mag taken from LEDA. -IC0921;G;13:43:08.00;+55:39:04.4;UMa;0.29;0.20;104;;;;;;23.46;E;;;;;;;;2MASX J13430804+5539043,PGC 250964,SDSS J134307.99+553904.3,SDSS J134308.00+553904.4;;Identification as IC 0921 is not certain.; -IC0922;G;13:42:56.36;+55:36:14.0;UMa;0.78;0.47;120;18.05;;;;;24.12;E;;;;;;;;2MASX J13425640+5536137,PGC 250797,SDSS J134256.34+553614.2,SDSS J134256.35+553613.9,SDSS J134256.35+553614.0,SDSS J134256.36+553614.0;;Identification as IC 0922 is not certain.;B-Mag taken from LEDA. -IC0923;G;13:43:14.19;+55:36:11.3;UMa;0.56;0.50;101;16.37;;;;;24.00;E;;;;;;;;2MASX J13431420+5536113,SDSS J134314.18+553611.3,SDSS J134314.19+553611.3;;Identification as IC 0923 is not certain.;B-Mag taken from LEDA -IC0924;G;13:45:37.59;-12:27:18.3;Vir;0.78;0.47;77;15.41;;;;;23.10;Sab;;;;;;;;PGC 170293;;; -IC0925;G;13:43:16.10;+55:36:56.9;UMa;0.54;0.17;106;17.49;;;;;23.55;Sbc;;;;;;;;2MASX J13431609+5536563,PGC 250835,SDSS J134316.09+553656.8,SDSS J134316.10+553656.8,SDSS J134316.11+553656.8;;Identification as IC 0925 is not certain.;B-Mag taken from LEDA. -IC0926;G;13:43:39.27;+55:37:53.5;UMa;0.35;0.18;94;17.46;;;;;24.01;E;;;;;;;;2MASX J13433923+5537534,SDSS J134339.26+553753.4,SDSS J134339.27+553753.5;;Identification as IC 0926 is not certain.;B-Mag taken from LEDA. -IC0927;G;13:45:52.39;-12:27:52.2;Vir;0.87;0.74;75;15.27;;;;;23.55;Sbc;;;;;;;;PGC 170296;;; -IC0928;G;13:43:48.00;+55:34:04.3;UMa;0.34;0.25;11;18.67;;;;;23.92;E;;;;;;;;2MASX J13434806+5534044,PGC 250671,SDSS J134347.99+553404.2,SDSS J134348.00+553404.2,SDSS J134348.00+553404.3;;Identification as IC 0928 is not certain.;B-Mag taken from LEDA. -IC0929;G;13:43:45.02;+55:38:01.6;UMa;0.46;0.37;81;17.83;;;;;23.56;E;;;;;;;;2MASX J13434501+5538014,PGC 250902,SDSS J134345.00+553801.8,SDSS J134345.01+553801.6,SDSS J134345.02+553801.6;;Identification as IC 0929 is not certain.;B-Mag taken from LEDA. -IC0930;G;13:43:45.55;+55:38:47.5;UMa;0.40;0.33;99;17.10;;;;;24.00;E;;;;;;;;2MASX J13434549+5538474,SDSS J134345.54+553847.4,SDSS J134345.55+553847.4,SDSS J134345.55+553847.5;;Identification as IC 0930 is not certain.;B-Mag taken from LEDA -IC0931;G;13:43:49.19;+55:37:26.3;UMa;0.25;0.19;61;;;;;;23.11;Sb;;;;;;;;2MASX J13434914+5537264,PGC 250864,SDSS J134349.18+553726.3,SDSS J134349.19+553726.3;;Identification as IC 0931 is not certain.; -IC0932;G;13:43:51.20;+55:38:48.3;UMa;0.47;0.23;64;18.13;;;;;24.32;;;;;;;;;2MASX J13435116+5538483,PGC 250948,SDSS J134351.23+553848.5;;Identification as IC 0932 is not certain.;B-Mag taken from LEDA. -IC0933;G;13:45:16.16;+23:13:08.2;Boo;1.19;0.85;150;14.70;;11.08;10.35;10.08;23.50;S0;;;;;;;;2MASX J13451616+2313086,MCG +04-32-036,PGC 048760,SDSS J134516.16+231308.2,UGC 08697;;; -IC0934;G;13:43:52.39;+55:39:24.5;UMa;0.36;0.28;174;17.38;;;;;23.70;Sbc;;;;;;0935;;2MASX J13435235+5539243,SDSS J134352.38+553924.5,SDSS J134352.39+553924.5;;Identification as IC 0934 is not certain.;B-Mag taken from LEDA -IC0935;Dup;13:43:52.39;+55:39:24.5;UMa;;;;;;;;;;;;;;;;0934;;;;; -IC0936;G;13:44:08.55;+55:42:22.0;UMa;0.41;0.21;93;17.39;;;;;23.75;Sb;;;;;;;;PGC 2511548,SDSS J134408.54+554221.9,SDSS J134408.55+554221.9,SDSS J134408.55+554222.0;;Identification as IC 0936 is not certain.;B-Mag taken from LEDA. -IC0937;G;13:44:28.93;+55:37:48.7;UMa;0.52;0.47;114;17.50;;;;;24.75;Sab;;;;;;;;2MASX J13442896+5537482,SDSS J134428.92+553748.6,SDSS J134428.92+553748.7,SDSS J134428.93+553748.7;;Identification as IC 0937 is not certain.;B-Mag taken from LEDA. -IC0938;G;13:44:31.25;+55:37:38.6;UMa;0.76;0.29;156;16.50;;;;;24.04;Sab;;;;;;;;2MASX J13443120+5537382,SDSS J134431.24+553738.5,SDSS J134431.25+553738.6;;Identification as IC 0938 is not certain.;B-Mag taken from LEDA. -IC0939;G;13:47:43.13;+03:24:41.3;Vir;1.02;0.93;121;14.70;;11.12;10.36;10.05;23.40;E;;;;;;;;2MASX J13474311+0324408,MCG +01-35-036,PGC 048914,SDSS J134743.13+032441.3,SDSS J134743.13+032441.4,SDSS J134743.14+032441.4;;; -IC0940;G;13:47:57.71;+03:26:58.7;Vir;0.67;0.38;124;15.30;;;;;23.14;S0-a;;;;;;;;PGC 048933,SDSS J134757.71+032658.6,SDSS J134757.71+032658.7;;; -IC0941;G;13:48:35.64;+24:00:54.3;Boo;0.90;0.49;112;15.20;;11.48;10.76;10.45;23.37;Sa;;;;;;;;2MASX J13483563+2400543,MCG +04-33-007,PGC 048998,SDSS J134835.64+240054.3;;; -IC0942;G;13:47:41.14;+56:37:17.7;UMa;1.00;0.66;96;15.30;;11.96;11.04;10.79;23.96;E;;;;;;;;2MASX J13474115+5637181,MCG +10-20-031,PGC 048903,SDSS J134741.13+563717.7,SDSS J134741.14+563717.6,SDSS J134741.14+563717.7,SDSS J134741.14+563718.0;;; -IC0943;G;13:50:32.13;+03:11:39.0;Vir;0.86;0.82;1;14.80;;11.91;11.24;10.84;23.08;SBa;;;;;;;;2MASX J13503214+0311394,MCG +01-35-041,PGC 049130,SDSS J135032.12+031138.9,SDSS J135032.13+031138.9,SDSS J135032.13+031139.0;;; -IC0944;G;13:51:30.87;+14:05:32.0;Boo;1.53;0.74;107;14.70;;10.75;;9.67;23.68;Sa;;;;;;;;2MASX J13513089+1405316,IRAS 13490+1420,MCG +02-35-019,PGC 049204,SDSS J135130.86+140531.9,SDSS J135130.87+140532.0,UGC 08766;;; -IC0945;G;13:47:07.80;+72:04:13.4;UMi;1.00;0.59;118;15.10;;12.02;11.41;11.12;23.45;Sb;;;;;;;;2MASX J13470784+7204135,MCG +12-13-010,PGC 048867,UGC 08732;;; -IC0946;G;13:52:08.36;+14:06:58.4;Boo;0.90;0.70;104;14.50;;11.21;10.51;10.25;22.80;Sa;;;;;;;;2MASX J13520831+1406585,MCG +02-35-021,PGC 049244,SDSS J135208.35+140658.3,SDSS J135208.35+140658.4,SDSS J135208.36+140658.4,UGC 08772;;; -IC0947;G;13:52:35.90;+00:49:06.1;Vir;1.67;1.09;65;14.20;;9.25;8.79;8.67;23.84;E-S0;;;;;;;;2MASX J13523589+0049058,MCG +00-35-023,PGC 049287,UGC 08784;;The APM image includes a bright superposed star.; -IC0948;G;13:52:26.71;+14:05:28.6;Boo;1.18;0.66;151;14.40;;10.85;10.14;9.88;23.47;E;;;;;;;;2MASX J13522671+1405281,MCG +02-35-023,PGC 049281,SDSS J135226.71+140528.5,SDSS J135226.71+140528.6,UGC 08779;;; -IC0949;G;13:52:16.76;+22:31:17.7;Boo;1.27;0.44;137;15.40;;11.98;11.21;10.88;23.49;Sd;;;;;;;;2MASX J13521678+2231171,IRAS 13499+2246,MCG +04-33-015,PGC 049265,SDSS J135216.76+223117.6,SDSS J135216.76+223117.7,UGC 08777;;; -IC0950;GPair;13:52:26.20;+14:29:23.0;Boo;0.80;;;;;;;;;;;;;;;;;MCG +03-35-032,UGC 08780;;;Diameter of the group inferred by the author. -IC0950 NED01;G;13:52:25.64;+14:29:19.4;Boo;1.23;0.38;124;16.28;;;;;25.00;Sa;;;;;;;;2MASS J13522563+1429193,PGC 3442468,SDSS J135225.63+142919.2,SDSS J135225.64+142919.3,UGC 08780 NED01;;;B-Mag taken from LEDA. -IC0950 NED02;G;13:52:26.73;+14:29:27.2;Boo;0.99;0.89;152;15.12;;11.73;11.00;10.65;23.75;Sab;;;;;;;;2MASX J13522667+1429271,PGC 049280,SDSS J135226.64+142927.4,SDSS J135226.64+142927.5,SDSS J135226.65+142927.5,UGC 08780 NED02;;;B-Mag taken from LEDA. -IC0951;G;13:51:47.21;+50:58:42.0;UMa;1.05;1.00;5;14.40;;11.87;11.08;10.84;23.19;Scd;;;;;;;;2MASX J13514724+5058419,MCG +09-23-012,PGC 049215,SDSS J135147.20+505841.9,SDSS J135147.20+505842.0,SDSS J135147.21+505842.0,UGC 08775;;; -IC0952;G;13:53:41.92;+03:22:38.6;Vir;1.25;0.47;94;14.77;;11.92;11.25;11.06;23.20;SBbc;;;;;;;;2MASX J13534191+0322390,MCG +01-35-049,PGC 049373,SDSS J135341.91+032238.6,SDSS J135341.92+032238.6,UGC 08808;;; -IC0953;Other;13:54:57.22;-30:16:59.9;Cen;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing obvious here."; -IC0954;G;13:49:56.90;+71:09:52.4;UMi;0.96;0.53;80;14.50;;11.62;11.02;10.73;22.74;Sab;;;;;;;;2MASX J13495692+7109522,MCG +12-13-018,PGC 049083,UGC 08765;;The 2MASS position refers to the eastern of two bright knots.; -IC0955;Other;13:55:43.32;-30:15:40.3;Cen;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC0956;GPair;13:54:40.68;+20:43:17.3;Boo;0.80;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC0956 NED01;G;13:54:40.28;+20:43:11.3;Boo;0.47;0.41;129;15.70;;;;;23.12;Sab;;;;;;;;2MASSJ13544017+2043127,PGC 049444;;; -IC0956 NED02;G;13:54:40.56;+20:43:01.2;Boo;0.59;0.49;29;15.95;;12.70;11.52;11.63;23.66;E;;;;;;;;2MASX J13544057+2043014,PGC 3441829,SDSS J135440.55+204301.2;;;B-Mag taken from LEDA. -IC0957;Other;13:56:08.36;-30:14:15.5;Cen;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing obvious here."; -IC0958;Dup;13:55:38.75;+04:59:06.2;Vir;;;;;;;;;;;;;;;5360;;;;;; -IC0959;G;13:56:03.40;+13:30:21.0;Boo;1.50;0.88;2;14.40;;11.14;10.36;10.05;23.67;Sa;;;;;;;;2MASX J13560341+1330207,MCG +02-36-001,PGC 049540,SDSS J135603.40+133021.0,UGC 08848;;; -IC0960;GPair;13:55:59.57;+17:30:21.0;Boo;1.80;;;;;;;;;;;;;;;;;UGC 08849;;;Diameter of the group inferred by the author. -IC0960A;G;13:55:59.09;+17:29:57.2;Boo;0.64;0.34;110;14.80;;13.72;12.90;12.69;23.17;Sb;;;;;;;;2MASX J13555904+1729577,MCG +03-36-003,PGC 049535,SDSS J135559.08+172957.2,UGC 08849 NED01;;Component 'a)' in UGC notes.; -IC0960B;G;13:56:00.12;+17:30:41.6;Boo;0.89;0.34;24;14.80;;11.99;11.13;10.78;23.64;S0;;;;;;;;2MASX J13560009+1730417,MCG +03-36-004,PGC 049536,SDSS J135600.11+173041.7,UGC 08849 NED02;;Component 'b)' in UGC notes.; -IC0961;G;13:55:46.79;+25:50:25.3;Boo;0.81;0.74;10;15.50;;12.47;11.74;11.56;23.63;SBab;;;;;;;;2MASX J13554678+2550250,MCG +04-33-031,PGC 049522,SDSS J135546.78+255025.3,SDSS J135546.79+255025.3;;; -IC0962;G;13:57:13.20;+12:01:16.8;Boo;0.85;0.84;85;14.00;;11.25;10.50;10.22;22.42;S0;;;;;;;;2MASX J13571321+1201163,IRAS 13547+1215,MCG +02-36-003,PGC 049626,SDSS J135713.19+120116.7,SDSS J135713.20+120116.8,UGC 08868;;; -IC0963;G;13:57:25.02;+17:24:27.9;Boo;0.64;0.53;5;15.20;;12.75;12.09;11.82;22.80;SBc;;;;;;;;2MASX J13572502+1724278,MCG +03-36-009,PGC 049647,SDSS J135725.02+172428.3;;; -IC0964;G;13:57:41.35;+17:30:31.4;Boo;0.64;0.56;134;15.30;;13.03;12.32;11.92;23.13;Sbc;;;;;;;;2MASX J13574129+1730319,MCG +03-36-010,PGC 049661,SDSS J135741.34+173031.4;;; -IC0965;G;13:57:47.50;+17:30:37.9;Boo;0.80;0.61;64;15.20;;12.06;11.48;11.14;23.45;E-S0;;;;;;;;2MASX J13574751+1730379,MCG +03-36-011,PGC 049667,SDSS J135747.49+173037.8,SDSS J135747.49+173037.9;;; -IC0966;G;13:58:14.00;+05:24:29.8;Vir;0.92;0.77;155;15.00;;11.75;11.19;10.87;23.22;S0;;;;;;;;2MASX J13581402+0524296,MCG +01-36-006,PGC 049704,SDSS J135813.99+052429.8,SDSS J135814.00+052429.8,UGC 08884;;; -IC0967;G;13:58:22.95;+14:27:26.1;Boo;0.97;0.42;26;14.70;;11.78;11.08;10.82;23.05;Sa;;;;;;;;2MASX J13582293+1427261,IRAS 13559+1442,MCG +03-36-015,PGC 049721;;; -IC0968;GPair;14:00:37.22;-02:54:27.3;Vir;1.10;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC0968 NED01;G;14:00:36.61;-02:54:32.8;Vir;0.69;0.43;123;14.80;;12.29;11.68;11.28;23.27;E-S0;;;;;;;;2MASX J14003658-0254321,MCG +00-36-007,PGC 049866,SDSS J140036.61-025432.7;;; -IC0968 NED02;G;14:00:37.96;-02:54:22.7;Vir;0.68;0.34;7;16.21;;12.53;11.90;11.75;23.77;E-S0;;;;;;;;2MASX J14003799-0254221,PGC 1080186,SDSS J140037.96-025422.7;;; -IC0969;G;14:01:46.20;-04:10:49.4;Vir;0.60;0.39;176;16.05;;12.61;11.97;11.85;23.60;S0-a;;;;;;;;2MASX J14014624-0410489,LEDA 1061769;;; -IC0970;G;14:02:34.21;+14:33:09.2;Boo;1.26;0.35;54;14.56;;11.61;10.93;10.63;23.47;S0-a;;;;;;;;2MASX J14023356+1433025,MCG +03-36-028,PGC 050010,SDSS J140234.20+143309.1,SDSS J140234.21+143309.1,SDSS J140234.21+143309.2,UGC 08949;;;B-Mag taken from LEDA. -IC0971;G;14:03:52.79;-10:08:26.1;Vir;2.26;1.29;129;13.33;;11.56;10.99;10.47;23.37;Sc;;;;;;;;2MASX J14035278-1008260,IRAS 14012-0954,MCG -02-36-005,PGC 050120;;;B-Mag taken from LEDA. -IC0972;PN;14:04:25.91;-17:13:41.5;Vir;0.70;;;14.90;13.90;15.78;15.41;15.16;;;;17.91;;;;;;PK 326+42 1,PN G326.7+42.2;;; -IC0973;Dup;14:06:29.50;-05:28:53.3;Vir;;;;;;;;;;;;;;;5467;;;;;; -IC0974;*;14:06:34.36;-05:29:32.7;Vir;;;;17.33;16.72;15.32;14.92;14.87;;;;;;;;;;2MASS J14063426-0529335;;Identification as IC 0974 is not certain.; -IC0975;G;14:07:08.84;+15:19:05.1;Boo;0.75;0.57;174;15.60;;12.03;11.57;10.93;23.70;E;;;;;;;;2MASX J14070882+1519047,MCG +03-36-048,PGC 050362,SDSS J140708.84+151905.0;;; -IC0976;G;14:08:43.29;-01:09:41.9;Vir;1.52;0.62;174;14.10;;11.18;10.59;10.35;23.61;S0-a;;;;;;;;2MASX J14084326-0109420,MCG +00-36-020,PGC 050479,SDSS J140843.28-010941.8,SDSS J140843.28-010941.9,SDSS J140843.29-010941.9,UGC 09040;;; -IC0977;G;14:08:42.05;-03:00:08.8;Vir;0.69;0.53;132;15.30;;13.33;12.59;12.71;23.00;Sbc;;;;;;;;2MASX J14084204-0300090,PGC 050477,SDSS J140842.05-030008.7,SDSS J140842.06-030008.8;;; -IC0978;G;14:08:58.10;-02:58:25.6;Vir;0.97;0.51;25;15.00;;13.54;12.57;12.66;23.29;Scd;;;;;;;;2MASX J14085808-0258258,MCG +00-36-021,PGC 050493,SDSS J140858.10-025825.5,SDSS J140858.10-025825.6;;; -IC0979;G;14:09:32.37;+14:49:54.6;Boo;1.09;0.66;172;14.50;;11.22;10.56;10.28;22.99;SBab;;;;;;;;2MASX J14093239+1449541,MCG +03-36-061,PGC 050530,SDSS J140932.36+144954.6,UGC 09053;;; -IC0980;G;14:10:22.41;-07:20:33.3;Vir;0.83;0.73;64;14.98;;11.54;10.97;10.62;23.66;E;;;;;;;;2MASX J14102244-0720332,LEDA 1020574;;; -IC0981;G;14:10:28.14;-04:10:17.2;Vir;0.86;0.43;73;15.09;;12.28;11.55;11.12;23.41;;;;;;;;;2MASX J14102813-0410173,LEDA 1061875;;; -IC0982;G;14:09:59.09;+17:41:46.0;Boo;0.95;0.90;35;14.60;;11.33;10.76;10.39;23.23;S0;;;;;;;;2MASX J14095907+1741455,MCG +03-36-066,PGC 050560,SDSS J140959.09+174146.0,UGC 09059;;; -IC0983;G;14:10:04.37;+17:44:01.8;Boo;2.32;2.01;125;14.30;;10.00;9.39;9.08;23.19;SBbc;;;;;;;;2MASX J14100440+1744016,MCG +03-36-068,PGC 050577,SDSS J141004.37+174401.8,UGC 09061;;; -IC0984;G;14:10:07.76;+18:21:52.8;Boo;1.90;0.47;36;14.50;;11.14;10.46;10.18;23.61;Sb;;;;;;;;2MASX J14100775+1821520,MCG +03-36-070,PGC 050580,SDSS J141007.75+182152.8,SDSS J141007.76+182152.8,UGC 09062;;HOLM 596B is a star.; -IC0985;G;14:11:32.87;-03:13:11.1;Vir;0.75;0.42;58;14.80;;12.50;11.84;11.82;22.66;Sa;;;;;;;;2MASX J14113288-0313111,MCG +00-36-024,PGC 050671,SDSS J141132.86-031311.1,SDSS J141132.87-031311.1;;; -IC0986;G;14:11:26.23;+01:17:11.5;Vir;0.81;0.76;52;14.80;;11.45;10.77;10.50;23.00;E-S0;;;;;;;;2MASX J14112625+0117117,MCG +00-36-025,PGC 050662,SDSS J141126.22+011711.4,SDSS J141126.23+011711.4,SDSS J141126.23+011711.5;;; -IC0987;G;14:11:31.88;+19:10:20.2;Boo;0.61;0.38;79;15.40;;;;;22.77;SBb;;;;;;;;MCG +03-36-078,PGC 050663,SDSS J141131.87+191020.2,SDSS J141131.88+191020.2;;; -IC0988;G;14:14:32.06;+03:11:24.9;Vir;0.61;0.40;41;14.80;;11.69;10.97;10.83;22.21;S0-a;;;;;;;;2MASX J14143206+0311242,MCG +01-36-026,PGC 050873,SDSS J141432.05+031124.8,SDSS J141432.05+031124.9,SDSS J141432.06+031124.8,SDSS J141432.06+031124.9;;; -IC0989;G;14:14:51.34;+03:07:51.2;Vir;0.98;0.84;72;14.40;;10.85;10.17;9.59;22.84;E;;;;;;;;2MASX J14145136+0307512,MCG +01-36-027,PGC 050891,SDSS J141451.34+030751.3,SDSS J141451.35+030751.2,SDSS J141451.35+030751.3,SDSS J141451.36+030751.3,UGC 09114;;UGC misprints name as 'MCG +00-36-(27)'.; -IC0990;G;14:15:49.19;+39:47:52.5;Boo;0.54;0.43;54;15.40;;12.12;11.38;11.35;22.92;E;;;;;;;;2MASX J14154924+3947523,MCG +07-29-056,PGC 050958,SDSS J141549.18+394752.4,SDSS J141549.19+394752.4,SDSS J141549.19+394752.5;;; -IC0991;G;14:17:48.58;-13:52:22.6;Vir;1.56;0.97;104;13.60;;10.84;10.01;9.96;23.05;SBc;;;;;;;;2MASX J14174858-1352224,IRAS 14151-1338,MCG -02-36-019,PGC 051059;;; -IC0992;G;14:18:14.91;+00:53:27.9;Vir;0.88;0.67;114;14.90;;12.77;12.08;11.92;23.12;SABb;;;;;;;;2MASX J14181491+0053277,IRAS 14156+0107,MCG +00-36-033,PGC 051090,SDSS J141814.91+005327.8,SDSS J141814.91+005327.9,SDSS J141814.91+005328.0,UGC 09147;;"CGCG misprints name as 'IC 0942'; corrected in vol III (errata)."; -IC0993;G;14:18:18.62;+11:12:59.0;Boo;0.77;0.48;169;15.40;;12.80;12.16;11.88;23.32;Sb;;;;;;;;2MASX J14181860+1112594,MCG +02-36-063,PGC 051093,SDSS J141818.61+111259.0,SDSS J141818.62+111259.0,UGC 09153 NOTES01;;; -IC0994;G;14:18:22.63;+11:11:42.6;Boo;1.46;0.60;13;14.80;;11.30;10.67;10.44;23.75;SABa;;;;;;;;2MASX J14182261+1111424,MCG +02-36-064,PGC 051095,SDSS J141822.63+111142.5,SDSS J141822.63+111142.6,UGC 09153;;; -IC0995;G;14:16:31.11;+57:48:36.4;UMa;1.67;0.43;147;14.50;;12.42;11.58;11.57;23.29;Sd;;;;;;;;2MASX J14163108+5748373,MCG +10-20-091,PGC 050990,SDSS J141631.09+574836.6,SDSS J141631.10+574836.4,SDSS J141631.10+574836.8,SDSS J141631.11+574836.4,UGC 09145;;; -IC0996;G;14:17:22.07;+57:37:47.5;UMa;1.35;0.21;153;14.60;;12.24;11.60;11.21;22.76;Sbc;;;;;;;;2MASX J14172205+5737480,IRAS 14157+5751,MCG +10-20-092,PGC 051036,SDSS J141722.06+573747.4,SDSS J141722.07+573747.4,SDSS J141722.07+573747.5,SDSS J141722.07+573747.7,UGC 09152;;; -IC0997;GPair;14:19:59.25;-04:27:04.5;Vir;1.50;;;;;;;;;;;;;;;;;;;Identification as IC 0997 is not certain.;Diameter of the group inferred by the author. -IC0997 NED01;G;14:19:59.25;-04:27:04.3;Vir;1.41;0.83;10;14.50;;10.65;9.95;9.56;23.38;Sc;;;;;;;;2MASX J14195923-0427044,IRAS 14173-0413,MCG -01-37-001,PGC 051220;;; -IC0997 NED02;G;14:19:59.75;-04:27:08.3;Vir;1.00;0.50;163;15.71;;;;;24.45;;;;;;;;;PGC 1057935;;;B-Mag taken from LEDA. -IC0998;G;14:20:19.29;-04:24:59.2;Vir;0.93;0.26;55;15.67;;12.21;11.54;11.34;24.26;;;;;;;;;2MASX J14201929-0424594,LEDA 1058483;;Identification as IC 0998 is not at all certain.;B-Mag taken from LEDA. -IC0999;G;14:19:32.67;+17:52:31.1;Boo;0.85;0.69;144;14.50;;11.46;10.74;10.50;22.99;S0;;;;;;;;2MASX J14193264+1752308,MCG +03-37-001,PGC 051189,SDSS J141932.67+175231.0,UGC 09168;;; -IC1000;G;14:19:40.31;+17:51:16.9;Boo;1.01;0.50;20;14.40;;11.22;10.51;10.30;23.22;S0;;;;;;;;2MASX J14194035+1751168,MCG +03-37-003,PGC 051201,SDSS J141940.30+175116.8,UGC 09170;;; -IC1001;G;14:20:39.67;+05:25:38.5;Vir;0.81;0.32;94;15.00;;12.70;12.08;11.88;22.76;Sbc;;;;;;;;2MASX J14203963+0525384,PGC 051249,SDSS J142039.67+052538.4,SDSS J142039.67+052538.5;;; -IC1002;G;14:20:42.28;+05:29:08.8;Vir;0.59;0.23;90;15.20;;12.88;11.89;11.73;22.50;Sc;;;;;;;;2MASX J14204231+0529084,IRAS 14181+0542,PGC 051248;;; -IC1003;G;14:21:29.76;+05:04:23.5;Vir;1.04;0.33;36;15.30;;12.76;11.99;11.62;23.41;SABb;;;;;;;;2MASX J14212976+0504233,IRAS 14189+0518,PGC 051303,SDSS J142129.75+050423.5,SDSS J142129.76+050423.5,UGC 09190;;; -IC1004;G;14:21:02.28;+17:42:02.1;Boo;0.95;0.58;180;15.40;;12.25;12.16;11.55;24.52;E;;;;;;;;2MASX J14210227+1742020,MCG +03-37-007,PGC 051273,SDSS J142102.28+174202.0;;HOLM 634B is a star.; -IC1005;Dup;14:19:26.70;+71:35:17.6;UMi;;;;;;;;;;;;;;;5607;;;;;; -IC1006;G;14:22:59.10;+23:47:39.6;Boo;0.89;0.61;99;15.30;;12.41;11.82;11.50;23.24;Sbc;;;;;;;;2MASX J14225909+2347393,MCG +04-34-023,PGC 051378,SDSS J142259.10+234739.6;;; -IC1007;G;14:24:36.59;+04:33:33.0;Vir;0.75;0.55;86;15.00;;12.35;11.67;11.53;23.05;Sa;;;;;;;;2MASX J14243659+0433333,PGC 051465,SDSS J142436.58+043333.0,SDSS J142436.59+043333.0;;; -IC1008;GPair;14:23:42.59;+28:20:52.3;Boo;0.80;;;;;;;;;;;;;;;4414;;MCG +05-34-027;;;Diameter of the group inferred by the author. -IC1008 NED01;G;14:23:42.26;+28:20:45.9;Boo;0.57;0.36;17;15.33;;12.21;11.48;11.23;22.72;Sb;;;;;;4414A;;2MASX J14234230+2820460,PGC 051414,SDSS J142342.25+282045.9,SDSS J142342.26+282045.9,SDSS J142342.27+282045.9;;;B-Mag taken from LEDA. -IC1008 NED02;G;14:23:43.15;+28:20:50.7;Boo;0.86;0.56;18;15.20;;11.76;11.05;10.70;23.25;Sbc;;;;;;4414B;;2MASX J14234315+2820504,PGC 087674,SDSS J142343.14+282050.7;;; -IC1009;G;14:26:17.60;+12:21:10.5;Boo;0.87;0.48;69;15.30;;12.22;11.58;11.29;23.46;S0-a;;;;;;;;2MASX J14261759+1221108,PGC 051546,SDSS J142617.59+122110.5;;; -IC1010;G;14:27:20.36;+01:01:33.1;Vir;1.52;1.28;169;14.80;;11.58;10.80;10.57;23.92;Sb;;;;;;;;2MASX J14272036+0101333,MCG +00-37-006,PGC 051612,SDSS J142720.36+010133.0,SDSS J142720.36+010133.1,SDSS J142720.37+010133.1,SDSS J142720.37+010133.2,UGC 09254;;; -IC1011;G;14:28:04.53;+01:00:22.7;Vir;0.84;0.56;114;14.70;;12.70;12.04;11.58;22.82;S?;;;;;;;;2MASX J14280456+0100228,IRAS 14255+0113,MCG +00-37-008,PGC 051662,SDSS J142804.53+010022.5,SDSS J142804.53+010022.6,SDSS J142804.53+010022.7,SDSS J142804.53+010022.8,SDSS J142804.54+010022.8;;; -IC1012;G;14:27:09.50;+30:56:53.6;Boo;1.09;0.66;112;14.80;;12.40;11.81;11.96;23.42;Sb;;;;;;4431;;2MASX J14270944+3056532,MCG +05-34-043,PGC 051600,SDSS J142709.50+305653.5,SDSS J142709.50+305653.6,UGC 09257;;; -IC1013;G;14:27:58.86;+25:51:58.8;Boo;0.95;0.44;136;16.62;;;;;24.61;Scd;;;;;;;;PGC 214272,SDSS J142758.86+255158.7,SDSS J142758.87+255158.8;;;B-Mag taken from LEDA. -IC1014;G;14:28:18.43;+13:46:48.8;Boo;2.00;1.11;82;14.10;;12.07;11.49;11.26;23.58;Sd;;;;;;;;IRAS 14259+1400,MCG +02-37-012,PGC 051685,SDSS J142818.42+134648.8,SDSS J142818.43+134648.8,UGC 09275;;; -IC1015;GGroup;14:28:19.15;+15:25:12.4;Boo;1.00;;;;;;;;;;;;;;;;;MCG +03-37-018;;;Diameter of the group inferred by the author. -IC1015 NED01;G;14:28:18.88;+15:24:58.9;Boo;0.59;0.23;40;15.20;;;;;22.40;Sbc;;;;;;;;IRAS 14259+1538,MCG +03-37-018 NED01,PGC 051686,SDSS J142818.88+152458.9;;; -IC1015 NED02;G;14:28:19.71;+15:25:19.0;Boo;;;;;;;;;;;;;;;;;;MCG +03-37-018 NED02;;;No data available in LEDA -IC1015 NED03;G;14:28:19.26;+15:25:16.2;Boo;0.74;0.40;66;16.10;;;;;23.68;Sc;;;;;;;;2MASS J14281932+1525151;;;B-Mag taken from LEDA -IC1015 NED04;G;14:28:19.69;+15:25:19.0;Boo;0.72;0.30;82;16.54;;12.69;11.91;11.68;23.84;Sc;;;;;;;;2MASX J14281967+1525192,PGC 2800988;;;B-Mag taken from LEDA. -IC1016;Dup;14:27:32.37;+04:49:17.8;Vir;;;;;;;;;;;;;;;5619B;;;;;; -IC1017;G;14:28:07.23;+25:52:07.6;Boo;1.07;0.60;129;14.90;;11.07;10.39;10.13;23.41;S0;;;;;;;;2MASX J14280724+2552077,MCG +04-34-032,PGC 051668,SDSS J142807.22+255207.5,SDSS J142807.23+255207.5,SDSS J142807.23+255207.6,UGC 09276;;; -IC1018;G;14:28:12.80;+25:49:49.9;Boo;0.57;0.46;179;15.60;;13.24;12.69;12.39;23.65;E;;;;;;;;2MASX J14281279+2549497,PGC 051675,SDSS J142812.79+254949.8,SDSS J142812.79+254949.9;;; -IC1019;G;14:28:13.48;+25:56:50.7;Boo;0.60;0.44;134;15.30;;11.63;11.06;10.63;22.52;S0;;;;;;;;2MASX J14281346+2556507,MCG +04-34-033,PGC 051667,SDSS J142813.48+255650.7;;; -IC1020;G;14:28:49.49;+26:01:56.2;Boo;1.06;0.23;175;15.20;;11.62;10.92;10.72;23.64;S0;;;;;;;;2MASX J14284949+2601557,MCG +04-34-035,PGC 051728,SDSS J142849.48+260156.1,SDSS J142849.49+260156.2,UGC 09289;;; -IC1021;G;14:29:17.13;+20:39:16.3;Boo;0.62;0.26;133;15.20;;11.55;10.89;10.63;22.39;SBa;;;;;;;;2MASX J14291710+2039166,MCG +04-34-038,PGC 051764,SDSS J142917.12+203916.3,SDSS J142917.13+203916.3,UGC 09296;;; -IC1022;G;14:30:01.84;+03:46:22.3;Vir;0.97;0.33;163;15.05;;12.78;12.13;11.70;23.06;SBb;;;;;;;;2MASX J14300186+0346240,PGC 051808,SDSS J143001.84+034622.2,SDSS J143001.84+034622.3,UGC 09311;;; -IC1023;OCl;14:32:25.14;-35:48:12.9;Cen;5.10;;;;;;;;;;;;;;;;;MWSC 2228;;; -IC1024;G;14:31:27.20;+03:00:32.7;Vir;1.11;0.47;29;13.87;;11.07;10.42;10.07;23.00;S0;;;;;;;;2MASX J14312722+0300327,IRAS 14289+0313,MCG +01-37-022,PGC 051895,UGC 09341;;; -IC1025;G;14:31:28.28;+07:03:50.1;Vir;0.58;0.36;130;15.30;;13.03;12.58;12.18;22.73;SBbc;;;;;;;;2MASX J14312829+0703499,IRAS 14290+0717,PGC 051898,SDSS J143128.27+070350.1,SDSS J143128.28+070350.1;;; -IC1026;Dup;14:30:10.42;+31:12:55.8;Boo;;;;;;;;;;;;;;;5653;;;;;; -IC1027;G;14:29:48.50;+53:57:54.1;Boo;1.35;1.05;180;15.40;;11.70;11.03;10.73;24.68;E;;;;;;;;2MASX J14294841+5357542,MCG +09-24-009,PGC 051796,SDSS J142948.49+535754.0,SDSS J142948.49+535754.1,SDSS J142948.49+535754.3,SDSS J142948.50+535754.1,UGC 09331;;; -IC1028;G;14:33:16.43;+41:39:01.4;Boo;1.04;0.56;15;14.80;;11.39;10.77;10.50;23.09;Sbc;;;;;;;;2MASX J14331640+4139012,MCG +07-30-025,PGC 052005,SDSS J143316.42+413901.3,UGC 09368;;The IC identification is not certain.; -IC1029;G;14:32:27.26;+49:54:16.6;Boo;2.78;0.45;151;13.70;12.65;9.98;9.22;8.95;22.01;SABb;;;;;;;;2MASX J14322720+4954171,IRAS 14307+5007,MCG +08-26-042,PGC 051955,SDSS J143227.25+495416.6,UGC 09361;;; -IC1030;Dup;14:32:38.34;+31:40:12.6;Boo;;;;;;;;;;;;;;;5672;;;;;; -IC1031;G;14:34:23.98;+48:02:14.8;Boo;0.79;0.60;57;15.40;;11.99;11.26;11.05;23.80;E;;;;;;;;2MASX J14342403+4802148,PGC 052082,SDSS J143424.00+480214.8,SDSS J143424.00+480214.9,SDSS J143424.01+480214.8;;; -IC1032;G;14:34:39.48;+47:58:04.7;Boo;0.65;0.56;93;15.60;;12.27;11.58;11.26;23.38;Sab;;;;;;;;2MASX J14343918+4758059,PGC 052097,SDSS J143439.02+475806.0,SDSS J143439.47+475804.7,SDSS J143439.48+475804.7;;; -IC1033;G;14:34:41.75;+47:56:16.1;Boo;1.05;0.98;0;15.30;;11.74;11.14;10.84;23.99;E;;;;;;;;2MASX J14344177+4756159,PGC 052099,SDSS J143441.74+475616.0,SDSS J143441.75+475616.1;;; -IC1034;G;14:37:13.73;+14:39:54.5;Boo;0.59;0.47;5;15.60;;12.50;11.97;11.61;23.04;Sab;;;;;;;;2MASX J14371372+1439547,IRAS 14348+1452,PGC 052244,SDSS J143713.73+143954.5;;; -IC1035;G;14:38:10.21;+09:20:09.7;Boo;1.07;0.89;150;15.20;;11.64;10.87;10.66;23.96;E;;;;;;;;2MASX J14381019+0920093,MCG +02-37-028,PGC 052305,SDSS J143810.20+092009.7,SDSS J143810.21+092009.7,SDSS J143810.21+092009.8;;HOLM 664B is the star superposed on the northeast side.; -IC1036;G;14:38:22.79;+18:06:40.4;Boo;0.58;0.30;43;15.60;;13.01;12.33;11.90;22.87;Sb;;;;;;;;2MASX J14382275+1806405,IRAS 14360+1819,PGC 052320,SDSS J143822.78+180640.3,SDSS J143822.78+180640.4,SDSS J143822.79+180640.4;;; -IC1037;G;14:38:25.37;+18:11:02.5;Boo;0.99;0.66;107;15.00;;11.40;10.70;10.44;23.68;E;;;;;;;;2MASX J14382534+1811025,MCG +03-37-028,PGC 052319,SDSS J143825.37+181102.4;;; -IC1038;G;14:39:27.43;+11:55:43.1;Boo;0.63;0.49;171;15.30;;12.16;11.44;11.23;23.33;E;;;;;;;;2MASX J14392741+1155434,PGC 052377,SDSS J143927.42+115543.0;;; -IC1039;G;14:40:29.40;+03:25:57.9;Vir;0.68;0.34;41;15.60;;12.29;11.51;11.46;23.60;S0;;;;;;;;2MASX J14402938+0325581,PGC 052428,SDSS J144029.40+032557.8,SDSS J144029.40+032557.9;;; -IC1040;G;14:40:22.73;+09:28:34.1;Boo;0.50;0.45;153;15.30;;13.45;12.94;12.61;22.71;Sc;;;;;;;;2MASX J14402269+0928339,PGC 052418,SDSS J144022.72+092834.0,SDSS J144022.73+092834.0,SDSS J144022.73+092834.1;;; -IC1041;G;14:40:37.90;+03:22:37.3;Vir;0.87;0.63;52;15.10;;11.29;10.58;10.26;23.09;SBa;;;;;;;;2MASX J14403793+0322375,MCG +01-37-045,PGC 052434,SDSS J144037.89+032237.2,SDSS J144037.89+032237.3,SDSS J144037.90+032237.3;;; -IC1042;G;14:40:39.02;+03:28:11.0;Vir;1.13;1.10;98;14.90;;11.15;10.53;10.01;23.74;S0;;;;;;;;2MASX J14403900+0328105,MCG +01-37-046,PGC 052433,SDSS J144039.01+032810.9,SDSS J144039.01+032811.0,UGC 09457;;; -IC1043;G;14:40:43.35;+03:22:26.5;Vir;0.74;0.37;19;15.10;;12.37;11.64;11.39;23.49;Sa;;;;;;;;2MASX J14404334+0322265,LEDA 2800989,SDSS J144043.35+032226.4,SDSS J144043.35+032226.5;;; -IC1044;G;14:41:29.02;+09:25:51.3;Boo;1.51;0.84;1;15.00;;11.87;11.14;10.79;24.26;S0-a;;;;;;;;2MASX J14412901+0925515,MCG +02-37-029,PGC 052477,SDSS J144129.02+092551.3;;; -IC1045;Dup;14:40:09.21;+42:46:46.4;Boo;;;;;;;;;;;;;;;5731;;;;;; -IC1046;G;14:37:53.42;+69:00:52.1;UMi;0.78;0.45;86;14.70;;12.27;11.59;11.26;22.59;Sc;;;;;;;;2MASX J14375344+6900519,IRAS 14371+6913,MCG +12-14-011,PGC 052284;;; -IC1047;G;14:42:19.97;+19:11:30.6;Boo;0.72;0.61;9;15.70;;12.68;11.89;11.59;23.39;SBbc;;;;;;;;2MASX J14421998+1911302,MCG +03-37-038,PGC 052522,SDSS J144219.96+191130.6;;; -IC1048;G;14:42:58.00;+04:53:22.1;Vir;2.08;0.50;163;14.00;;10.63;9.83;9.55;23.30;Sb;;;;;;;;2MASX J14425787+0453244,IRAS 14404+0506,MCG +01-37-051,PGC 052564,SDSS J144258.00+045322.0,SDSS J144258.02+045322.5,UGC 09483;;HOLM 670B is a star.; -IC1049;G;14:39:33.12;+62:00:10.6;Dra;0.92;0.80;66;14.80;;11.82;11.20;10.85;23.22;Sa;;;;;;;;2MASX J14393312+6200107,MCG +10-21-021,PGC 052379,SDSS J143933.10+620010.5,SDSS J143933.11+620010.5,SDSS J143933.12+620010.6,UGC 09461;;; -IC1050;G;14:44:07.12;+18:00:45.5;Boo;0.83;0.42;31;15.10;;12.34;11.65;11.37;23.05;Sbc;;;;;;;;2MASX J14440710+1800452,IRAS 14417+1813,MCG +03-38-002,PGC 052630,SDSS J144407.11+180045.4;;; -IC1051;G;14:44:11.59;+19:01:12.8;Boo;0.74;0.61;54;15.40;;12.05;11.24;10.95;23.55;E;;;;;;;;2MASX J14441161+1901132,PGC 052629,SDSS J144411.58+190112.8;;; -IC1052;G;14:44:14.11;+20:36:50.4;Boo;1.02;0.28;31;15.30;;12.05;11.63;11.47;23.01;Sc;;;;;;;;2MASX J14441411+2036501,MCG +04-35-007,PGC 052632,SDSS J144414.10+203650.4,SDSS J144414.11+203650.4,UGC 09494;;; -IC1053;G;14:45:43.23;+16:56:48.9;Boo;0.55;0.34;27;15.10;;12.73;12.12;11.70;22.27;Sb;;;;;;;;2MASX J14454322+1656490,MCG +03-38-008,PGC 052709,SDSS J144543.25+165648.7;;; -IC1054;G;14:46:31.24;+01:16:29.1;Vir;1.03;0.75;10;15.20;;11.30;10.63;10.30;23.59;S0;;;;;;;;2MASX J14463127+0116286,PGC 052752,SDSS J144631.24+011629.1,UGC 09514;;; -IC1055;G;14:47:25.69;-13:42:58.1;Lib;2.26;0.76;5;13.30;;10.39;9.68;9.43;22.95;Sb;;;;;;4491;;2MASX J14472570-1342580,IRAS 14446-1330,MCG -02-38-011,PGC 052811;;HOLM 677B,C are stars.; -IC1056;G;14:45:49.05;+50:23:38.6;Boo;1.51;0.94;22;14.40;;12.03;11.54;11.22;23.68;Sb;;;;;;1057;;2MASX J14454903+5023388,IRAS 14441+5036,MCG +08-27-023,PGC 052713,SDSS J144549.04+502338.5,SDSS J144549.04+502338.7,SDSS J144549.05+502338.5,SDSS J144549.05+502338.6,UGC 09516;;; -IC1057;Dup;14:45:49.05;+50:23:38.6;Boo;;;;;;;;;;;;;;;;1056;;;;; -IC1058;G;14:49:12.39;+17:01:15.4;Boo;1.49;0.39;115;14.80;;11.61;10.90;10.59;23.72;Sab;;;;;;;;2MASX J14491241+1701148,MCG +03-38-029,PGC 052915,SDSS J144912.39+170115.3,UGC 09538;;; -IC1059;G;14:50:42.56;-00:52:32.9;Lib;0.88;0.77;120;15.60;;;;;23.62;S0-a;;;;;;;;PGC 052996,SDSS J145042.55-005232.8,SDSS J145042.55-005232.9,SDSS J145042.56-005232.8,SDSS J145042.56-005232.9;;; -IC1060;G;14:51:47.35;-07:13:57.5;Lib;1.22;0.66;93;14.00;;11.27;10.50;10.27;23.74;SBa;;;;;;;;2MASX J14514732-0713576,IRAS 14491-0701,MCG -01-38-004,PGC 053075;;; -IC1061;G;14:51:14.24;+18:45:27.2;Boo;0.49;0.39;146;16.20;;12.75;12.03;11.79;23.32;E;;;;;;;;2MASX J14511422+1845271,LEDA 095545,SDSS J145114.23+184527.1;;Mislabeled as A1983 D in Colless, et al. (1993,MNRAS,262,475).; -IC1062;G;14:51:17.66;+18:41:13.1;Boo;0.94;0.78;114;15.30;;11.78;11.20;10.76;23.86;S0-a;;;;;;;;2MASX J14511767+1841131,MCG +03-38-041 NED01,PGC 053044,SDSS J145117.65+184113.5,SDSS J145117.66+184113.5;;Mislabeled as A1983 E in Colless, et al. (1993,MNRAS,262,475).; -IC1063;G;14:52:11.02;+04:40:55.4;Vir;0.74;0.57;145;14.20;;11.91;11.12;10.83;22.83;SBb;;;;;;;;2MASX J14521101+0440543,IRAS 14496+0453,MCG +01-38-007,PGC 053094,SDSS J145211.02+044055.3,UGC 09565;;; -IC1065;G;14:49:21.57;+63:16:14.0;Dra;0.88;0.70;95;17.30;16.39;11.70;11.05;10.64;22.96;S0;;;;;;;;2MASX J14492161+6316142,MCG +11-18-008,PGC 052924,SDSS J144921.57+631613.9,SDSS J144921.57+631614.0,SDSS J144921.58+631613.9,SDSS J144921.58+631614.0,SDSS J144921.59+631613.9,SDSS J144921.59+631614.0,UGC 09553;;; -IC1066;G;14:53:02.86;+03:17:45.7;Vir;1.21;0.66;69;14.20;;11.46;10.73;10.48;22.96;SABb;;;;;;;;2MASX J14530282+0317451,MCG +01-38-009,PGC 053176,SDSS J145302.85+031745.7,SDSS J145302.86+031745.7,UGC 09573;;; -IC1067;G;14:53:05.25;+03:19:54.4;Vir;1.82;1.48;128;13.60;;10.93;10.26;9.85;23.50;Sb;;;;;;;;2MASX J14530523+0319541,MCG +01-38-010,PGC 053178,SDSS J145305.24+031954.4,SDSS J145305.25+031954.4,UGC 09574;;; -IC1068;G;14:53:32.92;+03:04:38.3;Vir;0.92;0.69;138;14.90;;11.35;10.63;10.31;23.41;E;;;;;;;;2MASX J14533289+0304380,MCG +01-38-012,PGC 053223,SDSS J145332.91+030438.2,SDSS J145332.91+030438.3,SDSS J145332.92+030438.3;;; -IC1069;G;14:50:46.52;+54:24:40.2;Boo;1.47;0.76;50;15.10;;11.60;11.08;10.66;24.42;S0;;;;;;;;2MASX J14504653+5424401,MCG +09-24-044,PGC 053000,SDSS J145046.51+542440.2,SDSS J145046.51+542440.3,SDSS J145046.52+542440.2,SDSS J145046.52+542440.5,UGC 09563;;; -IC1070;G;14:53:51.28;+03:29:04.8;Vir;0.78;0.31;121;15.40;;12.62;12.01;11.78;23.38;Sbc;;;;;;;;2MASX J14535130+0329050,PGC 053245,SDSS J145351.28+032904.7,SDSS J145351.28+032904.8,SDSS J145351.29+032904.8;;; -IC1071;G;14:54:12.50;+04:45:00.1;Vir;1.09;0.69;153;14.22;;10.72;10.01;9.70;23.45;S0;;;;;;;;2MASX J14541249+0445006,MCG +01-38-015,PGC 053260,UGC 09582;;; -IC1072;G;14:54:13.14;+04:50:29.6;Vir;0.87;0.53;152;15.10;;11.82;11.17;10.89;23.82;E;;;;;;;;2MASX J14541316+0450296,MCG +01-38-016,PGC 053258,SDSS J145413.11+045029.5,SDSS J145413.13+045029.5,SDSS J145413.13+045029.6,SDSS J145413.14+045029.6;;; -IC1073;G;14:54:14.35;+04:47:39.8;Vir;0.52;0.41;159;15.30;;12.52;11.89;11.63;22.85;S0;;;;;;;;2MASX J14541437+0447396,PGC 053259,SDSS J145414.34+044739.8,SDSS J145414.35+044739.7,SDSS J145414.35+044739.8;;; -IC1074;G;14:51:57.32;+51:15:53.6;Boo;0.92;0.33;116;15.20;;11.94;11.28;10.96;22.82;Sbc;;;;;;;;2MASX J14515733+5115535,MCG +09-24-047,PGC 053084,SDSS J145157.32+511553.4,SDSS J145157.32+511553.5,SDSS J145157.32+511553.6,SDSS J145157.32+511553.7,UGC 09572;;; -IC1075;G;14:54:49.25;+18:06:21.5;Boo;1.19;0.52;155;14.90;;12.46;11.92;11.63;23.34;SBb;;;;;;;;2MASX J14544922+1806211,MCG +03-38-053,PGC 053314,SDSS J145449.24+180621.4,UGC 09593;;; -IC1076;G;14:54:59.62;+18:02:14.4;Boo;0.91;0.49;9;13.90;;11.90;11.19;10.98;22.32;SBb;;;;;;;;2MASX J14545961+1802141,IRAS 14526+1814,MCG +03-38-055,PGC 053320,SDSS J145459.61+180214.4,SDSS J145459.62+180214.4,UGC 09595;;; -IC1077;G;14:57:21.72;-19:12:49.3;Lib;1.31;1.08;61;13.46;;10.59;9.89;9.56;22.63;SBbc;;;;;;;;2MASX J14572172-1912491,ESO 581-002,ESO-LV 581-0020,IRAS 14545-1900,MCG -03-38-030,PGC 053450;;; -IC1078;G;14:56:29.02;+09:21:16.3;Boo;0.99;0.81;19;14.80;;12.07;11.53;10.98;23.43;Sa;;;;;;;;2MASX J14562897+0921161,MCG +02-38-025,PGC 053411,SDSS J145629.01+092116.3,UGC 09608;;; -IC1079;G;14:56:36.16;+09:22:11.1;Boo;1.46;0.85;81;14.80;;10.76;9.83;9.81;24.19;E;;;;;;;;2MASX J14563613+0922111,MCG +02-38-026,PGC 053418,SDSS J145636.15+092211.0,SDSS J145636.16+092211.0,UGC 09611;;; -IC1080;G;14:57:59.82;-06:43:23.9;Lib;1.22;0.92;33;14.50;;10.85;10.16;9.75;24.00;E-S0;;;;;;;;2MASX J14575980-0643236,MCG -01-38-010,PGC 053480;;; -IC1081;G;14:58:55.06;-19:14:20.7;Lib;1.66;0.58;153;14.77;;11.29;10.60;10.30;24.22;S0-a;;;;;;;;2MASX J14585504-1914206,ESO 581-009,ESO-LV 581-0090,MCG -03-38-036,PGC 053525;;; -IC1082;G;14:58:52.49;+07:00:26.3;Vir;0.86;0.70;43;15.20;;11.76;11.00;10.82;23.70;E-S0;;;;;;;;2MASX J14585247+0700264,PGC 053523,SDSS J145852.48+070026.2;;; -IC1083;G;14:55:33.41;+68:24:30.9;UMi;0.72;0.57;94;15.20;;12.11;11.45;11.16;22.97;Sbc;;;;;;;;2MASX J14553340+6824307,IRAS 14549+6836,MCG +12-14-014,PGC 053362;;; -IC1084;G;15:01:14.88;-07:28:29.7;Lib;0.87;0.60;156;14.50;;12.19;11.36;11.53;23.48;E-S0;;;;;;;;2MASX J15011485-0728297,MCG -01-38-017,PGC 053648;;The position in 1992PASP..104...57V is not for the nucleus.; -IC1085;G;15:02:43.37;+17:15:09.1;Boo;0.94;0.84;24;15.00;;11.63;10.95;10.59;23.60;E;;;;;;;;2MASX J15024337+1715091,MCG +03-38-074,PGC 053710,SDSS J150243.36+171509.0;;; -IC1086;G;15:03:29.17;+17:06:51.9;Boo;0.69;0.47;165;15.40;;12.13;11.45;11.28;23.16;S0-a;;;;;;;;2MASX J15032915+1706522,MCG +03-38-077,PGC 053734,SDSS J150329.16+170651.9,SDSS J150329.17+170651.9;;; -IC1087;G;15:06:43.89;+03:46:36.6;Vir;0.74;0.33;74;15.10;;12.22;11.49;11.33;23.37;Sa;;;;;;;;2MASX J15064391+0346364,MCG +01-38-031,PGC 053952,SDSS J150643.89+034636.6,UGC 09710 NOTES01;;; -IC1088;*;15:06:47.42;+03:47:30.7;Vir;;;;;;;;;;;;;;;;;;SDSS J150647.41+034730.6;;; -IC1089;G;15:07:25.99;+07:07:00.3;Vir;0.97;0.64;140;15.40;;11.74;11.03;10.72;23.96;E;;;;;;;;2MASX J15072597+0706596,PGC 053989,SDSS J150725.98+070700.2,SDSS J150725.99+070700.3;;; -IC1090;Other;15:05:43.15;+42:40:56.5;Boo;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1091;G;15:08:13.51;-11:08:27.3;Lib;1.09;0.82;132;14.34;;11.27;10.57;10.24;22.96;Sb;;;;;;;;2MASX J15081350-1108272,MCG -02-39-001,PGC 054044;;;B-Mag taken from LEDA. -IC1092;G;15:07:36.12;+09:21:29.6;Boo;1.01;1.00;72;15.10;;11.94;11.29;11.09;23.74;S0-a;;;;;;;;2MASX J15073614+0921298,PGC 053998,SDSS J150736.11+092129.6;;; -IC1093;G;15:07:35.64;+14:32:52.8;Boo;1.00;0.74;90;14.90;;12.50;11.90;11.62;23.50;SABb;;;;;;;;2MASX J15073566+1432525,IRAS 15052+1444,MCG +03-39-002,PGC 054002,SDSS J150735.63+143252.7,SDSS J150735.63+143252.8,UGC 09727;;; -IC1094;GTrpl;15:07:42.20;+14:37:30.0;Boo;0.80;;;;;;;;;;;;;;;;;MCG +03-39-006;;;Diameter of the group inferred by the author. -IC1094 NED01;G;15:07:41.81;+14:37:18.8;Boo;0.55;0.51;155;16.57;;12.63;12.01;11.53;23.43;E;;;;;;;;2MASX J15074179+1437185,MCG +03-39-006 NED01,PGC 054009,SDSS J150741.80+143717.8;;;B-Mag taken from LEDA. -IC1094 NED02;G;15:07:42.19;+14:37:40.7;Boo;0.54;0.41;105;16.30;;13.19;12.39;12.29;23.84;Sa;;;;;;;;2MASX J15074220+1437405,MCG +03-39-006 NED02,PGC 054011,SDSS J150742.19+143740.7,SDSS J150742.19+143740.8;;;B-Mag taken from LEDA. -IC1094 NED03;G;15:07:42.59;+14:37:36.3;Boo;0.52;0.32;141;17.14;;;;;24.16;Sab;;;;;;;;MCG +03-39-006 NED03,PGC 054006,SDSS J150742.58+143736.4;;;B-Mag taken from LEDA. -IC1095;G;15:08:35.05;+13:40:14.2;Boo;0.65;0.60;82;15.20;;12.87;12.27;11.77;23.16;Sbc;;;;;;;;2MASX J15083503+1340145,MCG +02-39-002,PGC 054063,SDSS J150835.05+134014.2;;; -IC1096;G;15:08:21.57;+19:11:31.6;Boo;0.56;0.38;76;15.60;;13.13;12.55;12.20;23.21;S0-a;;;;;;;;2MASX J15082158+1911317,MCG +03-39-008,PGC 054050,SDSS J150821.57+191131.6;;; -IC1097;G;15:08:31.30;+19:11:03.6;Boo;0.91;0.42;55;14.70;;12.44;11.66;11.63;23.25;SBa;;;;;;;;2MASX J15083125+1911038,IRAS 15062+1922,MCG +03-39-010,PGC 054059,SDSS J150831.30+191103.6,UGC 09735;;; -IC1098;*;15:06:25.24;+55:36:06.0;Dra;;;;;;;;;;;;;;;;;;;;; -IC1099;G;15:06:54.65;+56:30:32.4;Dra;1.12;0.81;4;15.00;;11.64;11.01;10.71;23.42;Sc;;;;;;;;2MASX J15065457+5630322,MCG +09-25-021,PGC 053967,SDSS J150654.65+563032.3,SDSS J150654.65+563032.4,SDSS J150654.65+563032.6,UGC 09731;;; -IC1100;Dup;15:06:20.82;+62:58:51.5;Dra;;;;;;;;;;;;;;;5881;;;;;; -IC1101;G;15:10:56.10;+05:44:41.2;Se1;1.20;0.60;25;15.10;;11.17;10.43;10.11;24.42;E-S0;;;;;;;;2MASX J15105610+0544416,PGC 054167,UGC 09752;;; -IC1102;G;15:11:04.95;+04:17:37.9;Se1;1.04;0.58;18;14.83;;11.89;11.35;11.09;23.48;SABb;;;;;;;;2MASX J15110497+0417388,PGC 054188,SDSS J151104.94+041737.8,SDSS J151104.94+041737.9,SDSS J151104.95+041737.9,UGC 09754;;; -IC1103;G;15:11:35.87;+19:12:28.0;Se1;0.91;0.50;178;15.81;;12.04;11.47;11.21;24.34;E;;;;;;;;2MASX J15113588+1912277,LEDA 1584180,SDSS J151135.87+191228.0;;;B-Mag taken from LEDA. -IC1104;*;15:12:49.88;-05:03:20.2;Lib;;;;;;;;;;;;;;;;;;;;; -IC1105;G;15:13:13.91;+04:17:15.2;Se1;0.95;0.52;92;14.80;;11.52;10.76;10.46;23.13;S?;;;;;;;;2MASX J15131389+0417150,MCG +01-39-007,PGC 054338,SDSS J151313.91+041715.2;;; -IC1106;G;15:13:56.28;+04:42:39.5;Se1;0.91;0.43;34;15.20;;12.07;11.44;11.15;23.21;SBb;;;;;;;;2MASX J15135624+0442391,PGC 054375,SDSS J151356.27+044239.4;;; -IC1107;G;15:14:08.96;+04:42:51.9;Se1;0.70;0.57;142;15.50;;12.37;11.38;11.25;23.66;Sab;;;;;;;;2MASX J15140895+0442521,LEDA 1272206,SDSS J151408.95+044251.8;;; -IC1108;Dup;15:16:50.00;-45:38:57.5;Lup;;;;;;;;;;;;;;;5882;;;;;; -IC1109;G;15:17:03.98;+05:15:22.0;Se1;0.81;0.69;52;15.50;;11.79;11.06;10.79;23.79;E;;;;;;;;2MASX J15170399+0515223,PGC 054549,SDSS J151703.97+051521.9;;; -IC1110;G;15:12:05.07;+67:21:45.3;UMi;1.26;0.50;76;14.90;;11.20;10.44;10.15;23.65;Sa;;;;;;;;2MASX J15120513+6721459,MCG +11-19-001,PGC 054265,SDSS J151205.06+672145.3,UGC 09773;;; -IC1111;Dup;15:09:31.56;+54:30:23.4;Boo;;;;;;;;;;;;;;;5876;;;;;; -IC1112;G;15:17:47.35;+07:13:05.8;Se1;1.02;0.60;124;15.30;;11.86;11.25;10.98;23.51;SBab;;;;;;;;2MASX J15174735+0713058,LEDA 093492,PGC 054604,SDSS J151747.34+071305.8,SDSS J151747.35+071305.7;;; -IC1113;G;15:18:15.11;+12:29:19.2;Se1;0.87;0.77;17;15.20;;13.02;12.43;12.22;23.61;Sbc;;;;;;;;2MASX J15181515+1229192,MCG +02-39-012,PGC 054629,SDSS J151815.10+122919.1,SDSS J151815.11+122919.1;;; -IC1114;*;15:11:25.69;+75:25:36.1;UMi;;;;;;;;;;;;;;;;;;;;The IC identification is not certain.; -IC1115;**;15:22:19.02;-04:28:25.9;Lib;;;;;;;;;;;;;;;;;;;;; -IC1116;G;15:21:55.27;+08:25:25.6;Se1;1.07;0.68;3;14.90;;11.37;10.66;10.38;23.58;E;;;;;;;;2MASX J15215529+0825259,MCG +02-39-017,PGC 054848,SDSS J152155.27+082525.5,SDSS J152155.27+082525.6,SDSS J152155.28+082525.6;;; -IC1117;G;15:24:22.90;+15:29:18.9;Se1;0.73;0.35;117;15.60;;12.51;11.93;11.66;23.28;Sab;;;;;;;;2MASX J15242291+1529184,PGC 055003,SDSS J152422.89+152918.8;;; -IC1118;G;15:24:59.53;+13:26:42.3;Se1;1.23;1.23;73;15.20;;11.52;10.90;10.61;24.19;E;;;;;;4543;;2MASX J15245954+1326421,MCG +02-39-029,PGC 055035,SDSS J152459.52+132642.3;;; -IC1119;GPair;15:25:44.28;-03:39:22.7;Lib;1.00;;;;;;;;;;;;;;;;;MCG +00-39-025;;;Diameter of the group inferred by the author. -IC1119 NED01;G;15:25:44.15;-03:39:14.2;Lib;0.52;0.33;179;16.50;;;;;23.84;;;;;;;;;2MASS J15254407-0339141,MCG +00-39-025 NED01,PGC 1068507;;;B-Mag taken from LEDA. -IC1119 NED02;G;15:25:44.62;-03:39:29.0;Lib;0.62;0.43;17;15.30;;;;;22.71;Sab;;;;;;;;IRAS 15231-0328,PGC 055062;;; -IC1120;GPair;15:26:10.87;+18:52:18.0;Se1;0.80;;;;;;;;;;;;;;;;;;;Is the superposed star a compact galaxy?;Diameter of the group inferred by the author. -IC1120 NED01;G;15:26:10.80;+18:52:14.8;Se1;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC1120 NED02;G;15:26:11.04;+18:52:20.4;Se1;0.67;0.29;32;16.23;;;;;23.25;I;;;;;;;;2MASX J15261102+1852201,PGC 1573089;;;B-Mag taken from LEDA. -IC1121;G;15:27:44.06;+06:48:14.0;Se1;1.05;0.82;54;15.60;;11.56;10.81;10.51;24.39;E;;;;;;;;2MASX J15274407+0648139,PGC 055152,SDSS J152744.06+064813.9;;; -IC1122;G;15:29:23.07;+07:37:02.7;Se1;0.60;0.56;55;15.58;;12.64;11.85;11.65;23.29;SBb;;;;;;;;2MASX J15292307+0737028,PGC 1326415,SDSS J152923.07+073702.6;;;B-Mag taken from LEDA. -IC1123;*;15:28:54.11;+42:53:54.7;Boo;;;;;;;;;;;;;;;;;;SDSS J152854.10+425354.6;;; -IC1124;G;15:30:00.87;+23:38:18.3;Se1;1.10;0.42;77;14.50;;11.52;10.82;10.51;22.82;Sb;;;;;;;;2MASX J15300060+2338175,IRAS 15278+2348,MCG +04-37-001,PGC 055254,SDSS J153000.86+233818.2,SDSS J153000.87+233818.3,UGC 09869;;; -IC1125;G;15:33:05.61;-01:37:41.7;Se1;1.61;0.86;153;13.80;;11.67;10.99;10.63;23.49;Scd;;;;;;1128;;2MASX J15330561-0137417,2MASX J15330596-0137519,IRAS 15305-0127,MCG +00-40-003,PGC 055388,SDSS J153305.47-013743.6,SDSS J153305.61-013741.6,SDSS J153305.61-013741.7,UGC 09888;;Noted possibly interacting in MCG/UGC, coalescent pair in VV. Star superposed.; -IC1126;*;15:35:00.82;+04:59:25.5;Se1;;;;;;;;;;;;;;;;;;SDSS J153500.81+045925.5;;; -IC1127;Dup;15:34:57.25;+23:30:11.3;Se1;;;;;;;;;;;;;;;;4553;;;;; -IC1128;Dup;15:33:05.61;-01:37:41.7;Se1;;;;;;;;;;;;;;;;1125;;;;; -IC1129;G;15:32:00.82;+68:14:46.8;UMi;1.01;0.86;3;13.70;;12.26;11.53;11.68;22.35;Sc;;;;;;;;2MASX J15320082+6814469,IRAS 15316+6825,MCG +11-19-010,PGC 055330,UGC 09899;;; -IC1130;G;15:37:44.03;+17:14:39.9;Se1;0.74;0.52;37;15.50;;12.95;12.43;12.30;23.38;SBb;;;;;;;;2MASX J15374401+1714404,MCG +03-40-014,PGC 055644,SDSS J153744.02+171439.9;;; -IC1131;G;15:38:51.70;+12:04:50.3;Se1;0.85;0.65;153;14.80;;11.90;11.28;11.06;23.20;E;;;;;;;;2MASX J15385172+1204498,MCG +02-40-008,PGC 055683,SDSS J153851.70+120450.2,SDSS J153851.70+120450.3;;HOLM 717B is a star.; -IC1132;G;15:40:06.76;+20:40:50.2;Se1;1.05;0.97;48;14.40;;11.74;10.99;11.03;23.20;Sc;;;;;;;;2MASX J15400677+2040500,IRAS 15378+2050,MCG +04-37-020,PGC 055750,SDSS J154006.76+204050.1,UGC 09965;;; -IC1133;G;15:41:11.99;+15:34:24.3;Se1;1.27;0.39;131;14.80;;12.52;11.96;11.42;23.09;SBc;;;;;;;;IRAS 15388+1544,MCG +03-40-025,PGC 055793,SDSS J154111.99+153424.2,UGC 09973;;; -IC1134;G;15:44:58.50;+16:57:43.6;Se1;0.87;0.54;164;15.20;;11.77;11.19;10.76;23.81;S0;;;;;;;;2MASX J15445851+1657440,MCG +03-40-034,PGC 055937,SDSS J154458.50+165743.6;;"A faint companion is superposed on the corona 11"" southeast."; -IC1135;G;15:45:34.71;+17:42:00.3;Se1;0.85;0.31;63;15.14;;;;;23.56;S0-a;;;;;;;;2MASX J15453473+1742000,MCG +03-40-036,PGC 055964,SDSS J154534.70+174200.2;;;B-Mag taken from LEDA. -IC1136;G;15:47:34.39;-01:32:43.0;Se1;0.75;0.70;50;15.40;;11.53;10.79;10.49;23.32;S0;;;;;;;;2MASX J15473438-0132426,PGC 056049,SDSS J154734.39-013243.0;;; -IC1137;G;15:48:32.60;+08:35:16.5;Se1;0.86;0.79;115;14.72;;11.94;11.35;11.08;23.09;E?;;;;;;;;2MASX J15483260+0835169,IRAS 15461+0844,PGC 2816978,SDSS J154832.59+083516.5,SDSS J154832.60+083516.5;;;B-Mag taken from LEDA. -IC1138;G;15:48:15.77;+26:12:22.4;CrB;1.04;0.21;41;15.30;;11.90;11.17;10.82;23.81;S0-a;;;;;;;;2MASX J15481583+2612235,PGC 056070,UGC 10038;;; -IC1139;G;15:29:26.10;+82:35:01.9;UMi;0.65;0.28;54;15.60;;12.52;11.82;11.54;23.51;;;;;;;;;2MASX J15292616+8235024,PGC 055236;;; -IC1140;Other;15:49:25.26;+19:06:48.4;Se1;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -IC1141;G;15:49:46.94;+12:23:57.6;Se1;0.47;0.45;69;14.50;;11.74;11.07;10.63;21.61;SABa;;;;;;;;2MASX J15494695+1223576,IRAS 15474+1232,MCG +02-40-014,PGC 056141,SDSS J154946.94+122357.5,SDSS J154946.94+122357.6,UGC 10051;;; -IC1142;G;15:50:25.92;+18:08:22.5;Se1;1.03;0.77;160;15.10;;12.21;11.41;11.07;23.52;SBc;;;;;;;;2MASX J15502591+1808227,MCG +03-40-050,PGC 056169,SDSS J155025.91+180822.4,SDSS J155025.91+180822.5,SDSS J155025.92+180822.5,UGC 10055;;; -IC1143;G;15:30:55.96;+82:27:20.8;UMi;1.45;1.38;150;14.70;;10.46;9.80;9.51;24.31;E;;;;;;;;2MASX J15305641+8227211,MCG +14-07-022,PGC 055279,UGC 09932;;; -IC1144;G;15:51:21.69;+43:25:03.6;Her;0.74;0.52;107;14.40;;11.71;10.97;10.66;22.79;E-S0;;;;;;;;2MASX J15512167+4325036,MCG +07-33-001,PGC 056216,SDSS J155121.69+432503.5,UGC 10069;;; -IC1145;G;15:44:08.55;+72:25:52.2;UMi;1.45;0.43;168;15.20;;11.86;11.21;10.96;23.66;Sbc;;;;;;;;2MASX J15440857+7225522,MCG +12-15-015,PGC 055904,UGC 10032;;; -IC1146;G;15:48:22.08;+69:23:08.1;Dra;1.29;0.94;90;14.70;;11.32;10.61;10.29;23.93;S0;;;;;;;;2MASX J15482208+6923077,MCG +12-15-019,PGC 056085;;; -IC1147;G;15:50:11.61;+69:33:36.2;Dra;0.45;0.45;125;15.50;;12.25;11.47;11.14;22.53;;;;;;;;;2MASX J15501166+6933364,MCG +12-15-027,PGC 056159;;; -IC1148;Dup;15:57:08.14;+22:24:16.5;Se1;;;;;;;;;;;;;;;6020;;;;;; -IC1149;G;15:58:07.98;+12:04:13.0;Se1;1.07;0.85;164;14.10;;11.59;10.86;10.56;22.86;Sbc;;;;;;;;2MASX J15580799+1204130,IRAS 15557+1212,MCG +02-41-001,PGC 056511,SDSS J155807.97+120413.0,UGC 10108;;; -IC1150;Other;15:58:18.56;+15:52:28.3;Se1;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1151;G;15:58:32.34;+17:26:29.3;Se1;2.23;0.88;32;13.40;;11.45;10.77;10.41;23.18;SBc;;;;;;;;2MASX J15583232+1726295,IRAS 15562+1734,MCG +03-41-015,PGC 056537,SDSS J155832.33+172629.2,SDSS J155832.34+172629.3,UGC 10113;;; -IC1152;G;15:56:43.32;+48:05:42.0;Her;1.15;1.03;19;14.40;;10.86;10.22;9.91;23.42;E;;;;;;;;2MASX J15564332+4805418,MCG +08-29-024,PGC 056450,SDSS J155643.31+480542.0,SDSS J155643.32+480542.0,UGC 10103;;; -IC1153;G;15:57:03.01;+48:10:06.2;Her;1.20;1.00;0;13.60;;10.71;10.02;9.68;22.86;S0;;;;;;;;2MASX J15570299+4810063,MCG +08-29-026,PGC 056462,SDSS J155703.00+481006.1,SDSS J155703.01+481006.1,SDSS J155703.01+481006.2,UGC 10107;;; -IC1154;G;15:52:28.61;+70:22:30.3;UMi;1.77;1.12;142;14.80;;11.33;10.67;10.39;24.75;E;;;;;;;;2MASX J15522859+7022305,MCG +12-15-035,PGC 056273,UGC 10088;;; -IC1155;G;16:00:35.76;+15:41:08.3;Se1;0.79;0.74;11;14.90;;12.50;11.84;11.79;23.11;SABb;;;;;;;;2MASX J16003578+1541080,IRAS 15582+1549,MCG +03-41-023,PGC 056648,SDSS J160035.76+154108.2;;; -IC1156;G;16:00:37.36;+19:43:23.6;Her;1.10;1.01;10;14.90;;11.29;10.57;10.33;23.55;E;;;;;;;;2MASX J16003734+1943240,MCG +03-41-025,PGC 056650,SDSS J160037.36+194323.5,SDSS J160037.36+194323.6;;; -IC1157;G;16:00:56.26;+15:31:35.2;Se1;0.82;0.41;135;15.70;;12.71;12.03;11.79;23.53;SABa;;;;;;;;2MASX J16005623+1531355,MCG +03-41-031,PGC 056680,SDSS J160056.25+153135.1;;; -IC1158;G;16:01:34.08;+01:42:28.2;Se1;1.89;0.94;134;13.20;;11.74;11.05;10.24;23.38;SABc;;;;;;;;2MASX J16013407+0142281,IRAS 15590+0150,MCG +00-41-002,PGC 056723,SDSS J160134.06+014228.1,SDSS J160134.07+014228.1,UGC 10133;;; -IC1159;G;16:01:01.46;+15:25:11.9;Se1;0.76;0.52;30;15.66;;12.69;11.94;11.59;23.69;S0-a;;;;;;;;2MASX J16010143+1525115,PGC 1484166,SDSS J160101.45+152511.8;;;B-Mag taken from LEDA. -IC1160;G;16:01:02.51;+15:29:40.9;Se1;0.77;0.49;143;15.70;;12.67;12.02;11.97;23.61;S0-a;;;;;;;;2MASX J16010253+1529405,MCG +03-41-032,PGC 056683,SDSS J160102.51+152940.8;;; -IC1161;G;16:01:16.82;+15:38:43.5;Se1;0.71;0.52;96;15.20;;12.01;11.32;10.97;23.28;E;;;;;;;;2MASX J16011679+1538435,MCG +03-41-036,PGC 056695,SDSS J160116.81+153843.4;;; -IC1162;G;16:01:16.33;+17:40:40.2;Her;0.72;0.56;161;15.20;;13.24;12.70;12.33;23.11;SABb;;;;;;;;2MASX J16011637+1740405,IRAS 15590+1748,MCG +03-41-034,PGC 056693,SDSS J160116.33+174040.1,SDSS J160116.33+174040.2;;; -IC1163;G;16:01:30.55;+15:30:14.1;Se1;0.79;0.73;11;15.30;;11.91;11.27;10.86;23.30;E;;;;;;;;2MASX J16013052+1530136,MCG +03-41-039,PGC 056717,SDSS J160130.54+153014.0;;; -IC1164;*;15:55:02.71;+70:35:13.1;UMi;;;;;;;;;;;;;;;;;;;;; -IC1165;GPair;16:02:08.20;+15:41:38.0;Se1;0.90;;;;;;;;;;;;;;;;;;;VV misprints dec as +15d54'.;Diameter of the group inferred by the author. -IC1165 NED01;G;16:02:08.03;+15:41:47.6;Se1;0.69;0.64;41;14.60;;11.49;10.73;10.51;23.04;E-S0;;;;;;;;2MASX J16020801+1541472,MCG +03-41-048,PGC 056769,SDSS J160208.02+154147.5,SDSS J160208.03+154147.6;;; -IC1165 NED02;G;16:02:08.64;+15:41:35.4;Se1;0.63;0.54;171;14.60;;;;;23.49;E;;;;;;;;MCG +03-41-049,PGC 056768,SDSS J160208.63+154135.4,SDSS J160208.64+154135.4;;; -IC1166;GPair;16:02:08.90;+26:19:38.0;CrB;0.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1166 NED01;G;16:02:08.92;+26:19:45.6;CrB;0.53;0.31;52;17.18;16.77;13.59;12.86;12.35;23.36;E;;;;;;;;2MASX J16020888+2619456,IRAS 16000+2628,PGC 056771SDSS J160208.91+261945.5,SDSS J160208.92+261945.5,SDSS J160208.92+261945.6;;; -IC1166 NED02;G;16:02:08.83;+26:19:31.2;CrB;0.41;0.28;152;17.07;;14.14;13.40;12.87;23.47;SBb;;;;;;;;2MASX J16020881+2619316,PGC 1771884,SDSS J160208.82+261931.1;;;B-Mag taken from LEDA. -IC1167;G;16:03:52.86;+14:56:47.2;Se1;0.62;0.55;117;15.50;;12.62;11.76;11.83;23.34;E;;;;;;;;2MASX J16035289+1456471,MCG +03-41-065,PGC 056900,SDSS J160352.86+145647.1,SDSS J160352.86+145647.2;;;B-Mag taken from LEDA. -IC1168;G;16:03:55.69;+14:54:08.7;Se1;1.32;0.56;169;15.60;;12.27;11.52;11.48;24.81;E;;;;;;;;2MASX J16035566+1454091,MCG +03-41-066,PGC 056901;;; -IC1169;G;16:04:13.43;+13:44:38.5;Se1;1.06;0.72;10;14.10;;11.06;10.33;10.06;22.89;S0-a;;;;;;;;2MASX J16041344+1344383,MCG +02-41-004,PGC 056925,SDSS J160413.42+134438.4,UGC 10161;;; -IC1170;G;16:04:31.69;+17:43:17.3;Her;0.50;0.28;84;15.80;;12.79;12.15;12.03;24.61;E-S0;;;;;;;;2MASX J16043169+1743172,PGC 056955,SDSS J160431.69+174317.3;;; -IC1171;*;16:04:51.84;+17:58:41.6;Her;;;;;;11.83;11.12;11.01;;;;;;;;;;2MASS J16045183+1758417,SDSS J160451.83+175841.5;;; -IC1172;Dup;16:04:59.68;+17:52:13.3;Her;;;;;;;;;;;;;;;6044;;;;;; -IC1173;G;16:05:12.56;+17:25:22.3;Her;0.92;0.45;63;15.60;;12.35;11.74;11.54;23.34;SABc;;;;;;;;2MASX J16051257+1725219,MCG +03-41-089,PGC 057037,SDSS J160512.56+172522.2,SDSS J160512.56+172522.3,SDSS J160512.57+172522.3,UGC 10180;;; -IC1174;G;16:05:26.82;+15:01:31.2;Se1;1.03;0.75;51;14.50;;11.29;10.63;10.38;23.03;S0-a;;;;;;;;2MASX J16052685+1501308,MCG +03-41-091,PGC 057059,SDSS J160526.82+150131.1,SDSS J160526.82+150131.2,UGC 10185;;; -IC1175;**;16:05:22.62;+18:09:47.2;Her;;;;;;;;;;;;;;;;;;;;; -IC1176;Dup;16:05:31.28;+17:57:49.1;Her;;;;;;;;;;;;;;;6056;;;;;; -IC1177;G;16:05:19.79;+18:18:55.3;Her;0.54;0.41;164;16.23;;;;;23.51;S0-a;;;;;;;;2MASX J16051980+1818546,PGC 057048,SDSS J160519.78+181855.3,SDSS J160519.79+181855.3;;;B-Mag taken from LEDA. -IC1178;G;16:05:33.12;+17:36:05.2;Her;1.34;0.66;145;15.00;;11.41;10.68;10.43;24.34;E-S0;;;;;;;;2MASX J16053310+1736048,MCG +03-41-097,PGC 057062,SDSS J160533.12+173605.1,SDSS J160533.13+173605.2,UGC 10188;;; -IC1179;Dup;16:05:22.22;+17:45:15.1;Her;;;;;;;;;;;;;;;6050B;;;;;; -IC1180;*;16:05:30.11;+18:08:58.8;Her;;;;;;;;;;;;;;;;;;SDSS J160530.10+180858.8;;; -IC1181;G;16:05:33.85;+17:35:37.3;Her;1.01;0.73;58;15.00;;12.17;11.38;11.17;24.56;S0-a;;;;;;;;2MASX J16053387+1735368,MCG +03-41-098,PGC 057063,SDSS J160533.84+173537.3,SDSS J160533.85+173537.3,UGC 10189;;; -IC1182;G;16:05:36.80;+17:48:07.7;Her;0.84;0.68;80;16.20;15.19;12.00;11.27;10.90;23.63;S0-a;;;;;;;;2MASX J16053680+1748078,MCG +03-41-104,PGC 057084,SDSS J160536.79+174807.5,SDSS J160536.80+174807.6,UGC 10192;;; -IC1183;Dup;16:05:38.15;+17:46:04.4;Her;;;;;;;;;;;;;;;6054;;;;;; -IC1184;Other;16:05:42.80;+17:47:24.0;Her;;;;;;;;;;;;;;;;;;;;This is a triple star.; -IC1185;G;16:05:44.69;+17:43:01.3;Her;0.74;0.54;8;15.10;;11.55;10.88;10.64;22.76;Sab;;;;;;;;2MASX J16054464+1743008,MCG +03-41-110,PGC 057096,SDSS J160544.68+174301.3;;; -IC1186;G;16:05:44.22;+17:21:43.8;Her;0.78;0.48;5;15.40;;12.28;11.60;11.33;23.49;Sb;;;;;;;;MCG +03-41-111,PGC 057095,SDSS J160544.22+172143.8,SDSS J160544.23+172143.8;;; -IC1187;G;15:59:10.18;+70:33:25.1;UMi;0.35;0.22;100;15.70;;12.40;11.92;11.53;;Sbc;;;;;;;;2MASX J15591018+7033250,MCG +12-15-040,PGC 056589;;; -IC1188;GPair;16:06:07.68;+17:27:36.0;Her;0.70;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1188A;G;16:06:07.30;+17:27:38.9;Her;0.55;0.41;8;15.65;;12.58;11.96;11.48;23.05;S0-a;;;;;;;;2MASX J16060732+1727392,PGC 057127,SDSS J160607.29+172738.8,SDSS J160607.30+172738.9;;;B-Mag taken from LEDA. -IC1188B;G;16:06:08.28;+17:27:41.9;Her;0.28;0.18;47;17.42;;;;;23.14;Sab;;;;;;;;PGC 1533342,SDSS J160608.27+172741.8,SDSS J160608.28+172741.9;;;B-Mag taken from LEDA. -IC1189;G;16:06:14.83;+18:10:58.4;Her;0.79;0.56;179;15.50;;12.37;11.62;11.36;23.46;S0-a;;;;;;;;2MASX J16061486+1810582,IRAS 16040+1818,MCG +03-41-119,PGC 057135,SDSS J160614.83+181058.3,SDSS J160614.83+181058.4,SDSS J160614.84+181058.4;;Position in Kiso list (1985AnTok..202.237T) is for faint object south-following.; -IC1190;G;16:05:52.41;+18:13:13.9;Her;1.28;0.35;119;15.60;;12.35;11.54;11.31;24.00;SABb;;;;;;;;2MASX J16055240+1813139,MCG +03-41-113,PGC 057111,SDSS J160552.42+181313.7,UGC 10195;;;B-Mag taken from LEDA. -IC1191;GPair;16:06:28.75;+18:16:04.4;Her;0.70;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1191 NED01;G;16:06:28.99;+18:16:04.3;Her;0.71;0.16;163;16.63;;;;;23.82;Sab;;;;;;;;2MASX J16062897+1816042,IRAS 16042+1824,PGC 057152SDSS J160628.98+181603.9;;;B-Mag taken from LEDA. -IC1191 NED02;G;16:06:29.70;+18:16:04.3;Her;0.40;0.21;153;17.00;;14.05;13.24;13.06;23.87;E;;;;;;;;2MASX J16062968+1816042,PGC 057154,SDSS J160629.69+181604.2,SDSS J160629.70+181604.2,SDSS J160629.71+181604.3;;;B-Mag taken from LEDA. -IC1192;G;16:06:33.13;+17:46:32.3;Her;0.91;0.43;114;15.50;;12.43;11.66;11.25;23.99;SBb;;;;;;;;PGC 057157,SDSS J160633.13+174632.3;;; -IC1193;G;16:06:32.20;+17:42:49.9;Her;0.78;0.65;2;15.50;;12.05;11.23;10.98;23.69;S0-a;;;;;;;;2MASX J16063222+1742501,PGC 057155,SDSS J160632.19+174249.9,SDSS J160632.20+174249.9;;;B-Mag taken from LEDA. -IC1194;G;16:06:39.35;+17:45:40.3;Her;0.64;0.49;20;15.33;;11.88;11.19;10.88;23.08;S0;;;;;;;;2MASX J16063935+1745401,MCG +03-41-128,PGC 057172,SDSS J160639.34+174540.2,SDSS J160639.34+174540.3,SDSS J160639.35+174540.3;;;B-Mag taken from LEDA. -IC1195;G;16:06:40.88;+17:11:30.5;Her;0.61;0.43;13;15.40;;12.45;11.83;11.57;23.02;SBbc;;;;;;;;MCG +03-41-126,PGC 057175,SDSS J160640.88+171130.5;;; -IC1196;G;16:07:58.37;+10:46:46.7;Se1;1.04;0.51;5;14.80;;12.01;11.23;10.97;23.20;Sa;;;;;;;;2MASX J16075837+1046468,IRAS 16055+1054,MCG +02-41-009,PGC 057246,SDSS J160758.35+104646.5,UGC 10218;;; -IC1197;G;16:08:17.27;+07:32:18.6;Se1;2.56;0.54;57;14.70;;12.10;11.41;11.10;23.84;Sc;;;;;;;;2MASX J16081729+0732187,MCG +01-41-013,PGC 057261,SDSS J160817.26+073218.6,SDSS J160817.27+073218.6,UGC 10219;;; -IC1198;G;16:08:36.37;+12:19:51.4;Se1;0.79;0.41;111;15.63;14.94;12.12;11.37;10.90;22.72;SBab;;;;;;;;2MASX J16083635+1219518,IRAS 16062+1227,MCG +02-41-011,PGC 057273,SDSS J160836.37+121951.5,SDSS J160836.38+121951.5;;; -IC1199;G;16:10:34.35;+10:02:25.3;Her;1.19;0.42;158;14.60;;11.17;10.64;10.56;22.87;Sbc;;;;;;;;2MASX J16103434+1002255,IRAS 16081+1010,MCG +02-41-013,PGC 057373,SDSS J161034.34+100225.3,TYC 949-1438-1,UGC 10242;;; -IC1200;Dup;16:04:29.21;+69:39:56.8;Dra;;;;;;;;;;;;;;;6079;;;;;; -IC1201;G;16:05:41.65;+69:35:37.7;Dra;0.68;0.22;114;15.60;;12.32;11.56;11.39;23.07;Sb;;;;;;;;2MASX J16054165+6935374,MCG +12-15-051,PGC 057104,UGC 10221;;; -IC1202;Dup;16:12:56.86;+09:52:01.6;Her;;;;;;;;;;;;;;;6081;;;;;; -IC1203;*Ass;16:15:16.00;-22:22:14.1;Sco;3.50;2.00;;;;;;;;;;;;;;;;;;Asterism of 6-8 stars, 3.5 x 2.0 arcmin. Identity as IC 1203 uncertain.; -IC1204;G;16:07:15.48;+69:55:53.3;UMi;0.65;0.30;65;15.50;;12.08;11.36;11.03;;Sa;;;;;;;;2MASX J16071547+6955533,IRAS 16073+7003,MCG +12-15-053,PGC 057206;;; -IC1205;G;16:14:15.92;+09:32:13.9;Her;0.69;0.59;110;14.60;;11.90;11.21;11.02;22.41;SBab;;;;;;;;2MASX J16141594+0932136,IRAS 16118+0939,MCG +02-41-022,PGC 057574,SDSS J161415.91+093213.8;;; -IC1206;G;16:15:13.07;+11:17:50.6;Her;1.12;0.64;2;14.80;;11.86;10.96;10.69;23.49;Sab;;;;;;;;2MASX J16151307+1117505,MCG +02-41-023,PGC 057623,SDSS J161513.07+111750.5,UGC 10293;;; -IC1207;*Ass;16:19:26.72;-29:39:04.0;Sco;2.00;0.50;;;;;;;;;;;;;;;;;;Asterism of six to eight stars, 2.0 x 0.5 arcmin.; -IC1208;G;16:15:47.89;+36:31:38.4;CrB;1.25;0.32;95;15.30;;11.98;11.17;11.07;24.16;S0-a;;;;;;;;2MASX J16154791+3631378,PGC 057650,SDSS J161547.88+363138.3,SDSS J161547.89+363138.3,SDSS J161547.89+363138.4;;; -IC1209;G;16:18:39.62;+15:33:30.1;Her;1.36;0.88;3;15.10;;11.23;10.49;10.26;24.16;E-S0;;;;;;;;2MASX J16183964+1533294,MCG +03-41-149,PGC 057796,SDSS J161839.61+153330.1,SDSS J161839.61+153330.2,UGC 10329;;; -IC1210;G;16:14:30.15;+62:32:12.1;Dra;1.38;0.42;169;13.80;;11.76;11.10;10.81;23.70;Sab;;;;;;;;2MASX J16143012+6232121,IRAS 16138+6239,MCG +10-23-048,PGC 057589,UGC 10304;;; -IC1211;G;16:16:51.98;+53:00:21.7;Dra;1.34;1.25;65;13.80;;10.64;9.94;9.68;23.34;E;;;;;;;;2MASX J16165191+5300213,MCG +09-27-009,PGC 057707,SDSS J161651.97+530021.6,UGC 10314;;; -IC1212;G;16:15:30.75;+64:13:29.3;Dra;0.77;0.66;5;15.20;;11.62;11.03;10.61;23.61;E;;;;;;;;2MASX J16153078+6413302,PGC 057633;;; -IC1213;Dup;16:22:10.30;-01:30:53.5;Oph;;;;;;;;;;;;;;;6172;;;;;; -IC1214;G;16:16:11.70;+65:58:07.6;Dra;1.05;0.44;17;15.00;;11.42;10.80;10.41;23.60;S0-a;;;;;;;;2MASX J16161172+6558075,MCG +11-20-009,PGC 057675,UGC 10323;;; -IC1215;G;16:15:35.13;+68:23:51.6;Dra;0.91;0.68;163;14.80;;12.06;11.30;11.10;22.34;SBbc;;;;;;;;2MASX J16153517+6823514,IRAS 16155+6831,MCG +11-20-009a,PGC 057638,UGC 10315;;; -IC1216;G;16:15:55.38;+68:20:59.6;Dra;0.75;0.63;49;14.90;;13.01;12.54;12.23;23.02;Sc;;;;;;;;2MASX J16155536+6820594,MCG +11-20-010,PGC 057664,UGC 10326;;; -IC1217;Other;16:16:04.10;+69:40:35.4;Dra;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1218;G;16:16:37.10;+68:12:09.5;Dra;0.92;0.92;60;15.30;;12.06;11.41;11.15;23.07;Sb;;;;;;;;2MASX J16163709+6812093,IRAS 16165+6819,MCG +11-20-011,PGC 057699;;; -IC1219;G;16:24:27.45;+19:28:57.3;Her;1.31;0.52;122;15.40;;11.59;10.88;10.44;24.34;S0;;;;;;;;2MASX J16242743+1928573,IRAS 16222+1936,MCG +03-42-005,PGC 058037,SDSS J162427.44+192857.2,UGC 10371;;; -IC1220;G;16:29:38.30;+08:27:02.6;Her;1.24;1.17;142;15.00;;10.96;10.29;10.02;24.07;E;;;;;;;;2MASX J16293826+0827023,MCG +01-42-005,PGC 058340,SDSS J162938.29+082702.6;;; -IC1221;G;16:34:41.63;+46:23:31.4;Her;1.00;0.92;35;14.40;;11.94;11.29;10.99;23.32;Sc;;;;;;;;2MASX J16344160+4623319,MCG +08-30-030,PGC 058528,SDSS J163441.62+462331.4,UGC 10458;;; -IC1222;G;16:35:09.20;+46:12:50.1;Her;1.51;1.12;49;14.16;13.45;11.63;10.99;10.71;23.48;Sbc;;;;;;;;2MASX J16350921+4612500,2MASX J16351005+4612572,IRAS 16336+4618,MCG +08-30-032,PGC 058544,SDSS J163509.18+461250.1,SDSS J163509.19+461250.0,UGC 10461;;; -IC1223;G;16:35:42.46;+49:13:13.9;Her;0.82;0.60;20;15.40;;11.86;11.17;10.98;23.39;Sb;;;;;;;;2MASX J16354249+4913137,MCG +08-30-033,PGC 058567,SDSS J163542.46+491313.9;;; -IC1224;G;16:42:56.29;+19:15:15.7;Her;1.28;0.84;87;15.50;;11.30;10.55;10.33;24.46;E-S0;;;;;;;;2MASX J16425629+1915158,MCG +03-42-027,PGC 058824,SDSS J164256.29+191515.7;;; -IC1225;G;16:36:52.52;+67:37:45.9;Dra;1.37;0.45;71;15.50;;12.16;11.43;11.19;23.91;Sb;;;;;;;;2MASX J16365251+6737460,MCG +11-20-022,PGC 058607,UGC 10494;;; -IC1226;G;16:41:06.57;+46:00:14.6;Her;0.57;0.50;53;15.40;;12.43;11.77;11.45;22.79;SBa;;;;;;1232;;2MASX J16410658+4600141,PGC 058754,SDSS J164106.56+460014.5,SDSS J164106.56+460014.6,SDSS J164106.56+460014.8,SDSS J164106.57+460014.6;;Identification as IC 1232 is not certain.; -IC1227;Dup;16:40:07.90;+58:37:02.5;Dra;;;;;;;;;;;;;;;6206;;;;;; -IC1228;G;16:42:06.48;+65:35:07.8;Dra;1.32;0.71;122;14.50;;11.41;10.71;10.31;23.34;Sb;;;;;;;;2MASX J16420650+6535077,IRAS 16418+6540,MCG +11-20-026,PGC 058804,UGC 10524;;; -IC1229;G;16:44:58.82;+51:18:29.1;Dra;0.44;0.17;106;15.96;;13.09;12.44;11.96;23.19;Sb;;;;;;;;2MASX J16445880+5118291,MCG +09-27-072,PGC 058902,SDSS J164458.82+511829.0;;;B-Mag taken from LEDA. -IC1230;GPair;16:45:01.48;+51:15:34.5;Her;0.92;0.59;159;;;;;;24.13;E;;;;;;;;2MASX J16450159+5115371,MCG +09-27-073,PGC 058903,SDSS J164501.58+511537.4,UGC 10538;;; -IC1231;G;16:46:59.02;+58:25:23.4;Dra;1.88;0.86;153;13.85;13.20;11.21;10.53;10.27;23.23;Sc;;;;;;;;2MASX J16465901+5825234,IRAS 16461+5830,MCG +10-24-056,PGC 058973,UGC 10560;;; -IC1232;Dup;16:41:06.57;+46:00:14.6;Her;;;;;;;;;;;;;;;;1226;;;;; -IC1233;Dup;16:48:20.24;+62:58:35.1;Dra;;;;;;;;;;;;;;;6247;;;;;; -IC1234;*;16:52:50.91;+56:52:40.0;Dra;;;;;;;;;;;;;;;;;;;;; -IC1235;G;16:52:03.63;+63:06:56.9;Dra;0.76;0.53;13;15.04;;;;;23.03;Sc;;;;;;;;2MASX J16520357+6306564,PGC 059146,SDSS J165203.63+630656.8,SDSS J165203.63+630656.9,SDSS J165203.63+630657.1,SDSS J165203.65+630656.9;;;B-Mag taken from LEDA. -IC1236;G;16:58:29.60;+20:02:29.3;Her;1.17;1.07;146;14.60;;11.97;11.32;10.85;23.25;Sc;;;;;;;;2MASX J16582961+2002292,IRAS 16563+2006,MCG +03-43-010,PGC 059350,SDSS J165829.59+200229.2,SDSS J165829.60+200229.2,SDSS J165829.60+200229.3,UGC 10633;;; -IC1237;G;16:56:16.05;+55:01:35.3;Dra;1.97;0.58;22;14.70;;11.34;10.70;10.33;23.86;Sbc;;;;;;;;2MASX J16561605+5501351,IRAS 16552+5505,MCG +09-28-010,PGC 059280,UGC 10621;;; -IC1238;**;17:00:30.15;+23:04:36.3;Her;;;;;;;;;;;;;;;;;;;;; -IC1239;Dup;17:00:45.09;+23:02:38.4;Her;;;;;;;;;;;;;;;6276;;;;;; -IC1240;Other;17:00:58.87;+61:03:01.6;Dra;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1241;G;17:01:28.22;+63:41:28.0;Dra;1.16;0.93;59;16.20;;12.06;11.45;11.03;23.25;SBc;;;;;;;;2MASX J17012817+6341277,IRAS 17011+6345,PGC 059452,SDSS J170128.21+634128.0,SDSS J170128.22+634128.0,SDSS J170128.22+634128.2,UGC 10670;;; -IC1242;G;17:08:42.88;+04:02:59.6;Oph;0.84;0.51;120;14.90;;12.44;11.65;11.21;22.86;Sb;;;;;;;;2MASX J17084287+0402596,IRAS 17062+0406,MCG +01-44-001,PGC 059688,UGC 10718;;; -IC1243;Other;17:10:24.55;+10:45:59.8;Oph;;;;;;;;;;;;;;;;;;;;Five Galactic stars.; -IC1244;G;17:10:33.71;+36:18:11.9;Her;1.13;1.13;130;14.70;;10.98;10.34;9.97;23.66;E;;;;;;;;2MASX J17103364+3618127,MCG +06-38-003,PGC 059746,SDSS J171033.68+361812.3,UGC 10739;;; -IC1245;G;17:12:36.60;+38:01:13.6;Her;1.85;0.97;126;15.00;;11.10;10.38;10.08;24.72;S0;;;;;;;;2MASX J17123656+3801133,MCG +06-38-007,PGC 059835,SDSS J171236.60+380113.5,UGC 10755;;; -IC1246;*;17:14:12.28;+20:14:14.3;Her;;;;;;;;;;;;;;;;;;;;; -IC1247;*;17:16:22.14;-12:46:51.2;Se2;;;;;;;;;;;;;;;;;;;;; -IC1248;G;17:11:40.18;+59:59:44.2;Dra;0.82;0.64;17;14.30;;12.60;12.05;11.71;22.87;Sc;;;;;;;;2MASX J17114026+5959449,MCG +10-24-106,PGC 059740,PGC 059791,SDSS J171140.16+595944.2,SDSS J171140.18+595944.2,SDSS J171140.19+595944.3,SDSS J171140.19+595944.5,UGC 10756;;; -IC1249;G;17:14:55.12;+35:31:12.4;Her;0.24;0.22;147;14.90;;12.54;11.96;11.80;;Sbc;;;;;;;;IRAS 17131+3534,PGC 059919;;; -IC1250;G;17:14:29.17;+57:25:00.4;Dra;0.59;0.30;70;15.95;;12.79;12.07;11.77;23.74;E;;;;;;;;2MASX J17142919+5724597,LEDA 2565010,SDSS J171429.17+572500.3;;;B-Mag taken from LEDA. -IC1251;G;17:10:12.90;+72:24:37.8;Dra;1.21;0.64;67;14.23;;12.86;12.22;12.07;23.10;Sc;;;;;;;;2MASX J17101322+7224386,MCG +12-16-021,PGC 059735,SDSS J171012.89+722437.8,UGC 10757;;; -IC1252;G;17:15:50.38;+57:22:00.5;Dra;1.06;0.32;141;15.70;;12.07;11.46;11.12;23.78;Sab;;;;;;4649;;2MASX J17155037+5722006,MCG +10-24-120,PGC 059962,SDSS J171550.39+572200.3,UGC 10788;;; -IC1253;Dup;17:19:54.67;+16:39:38.5;Her;;;;;;;;;;;;;;;6347;;;;;; -IC1254;G;17:11:33.41;+72:24:07.2;Dra;0.91;0.54;38;15.00;13.84;12.24;11.61;11.67;23.25;Sb;;;;;;;;2MASX J17113334+7224072,MCG +12-16-024,PGC 059783,UGC 10769;;; -IC1255;G;17:23:05.39;+12:41:43.6;Oph;0.98;0.48;11;14.20;;11.37;10.64;10.28;22.36;Sb;;;;;;;;2MASX J17230538+1241435,IRAS 17207+1244,MCG +02-44-003,PGC 060180,UGC 10826;;; -IC1256;G;17:23:47.31;+26:29:11.5;Her;1.28;0.75;93;14.30;13.55;11.59;10.98;10.69;23.25;Sb;;;;;;;;2MASX J17234732+2629114,IRAS 17217+2631,MCG +04-41-007,PGC 060203,UGC 10829;;; -IC1257;GCl;17:27:08.38;-07:05:35.1;Oph;3.30;;;;;;;;;;;;;;;;;2MASX J17270839-0705350,MWSC 2599;;; -IC1258;G;17:27:17.38;+58:29:07.7;Dra;0.91;0.72;65;14.40;;11.19;10.47;10.24;22.93;Sa;;;;;;;;2MASX J17271733+5829078,MCG +10-25-035,PGC 060320,SDSS J172717.37+582907.9,SDSS J172717.38+582907.6,SDSS J172717.39+582907.7,UGC 10867;;; -IC1259;GPair;17:27:25.80;+58:31:00.0;Dra;0.90;;;;;;;;;;;;;;;;;UGC 10869;;Part of the GGroup Arp 311.;Diameter of the group inferred by the author. -IC1259 NED01;G;17:27:24.71;+58:31:00.9;Dra;0.91;0.59;152;15.22;;10.77;10.10;9.84;23.73;E-S0;;;;;;;;MCG +10-25-037a,PGC 060323,SDSS J172724.70+583100.8,UGC 10869 NED01;;;B-Mag taken from LEDA. -IC1259 NED02;G;17:27:26.78;+58:30:59.6;Dra;1.11;1.06;35;14.11;;10.77;10.10;9.84;23.10;E-S0;;;;;;;;2MASX J17272678+5830598,MCG +10-25-037,PGC 060325,SDSS J172726.78+583059.5,UGC 10869 NED02;;;B-Mag taken from LEDA. -IC1260;G;17:27:31.72;+58:28:33.1;Dra;0.42;0.34;138;15.70;;12.38;11.69;11.55;22.65;S0-a;;;;;;;;2MASX J17273174+5828328,MCG +10-25-040,PGC 060324,SDSS J172731.71+582833.0,SDSS J172731.71+582833.1,SDSS J172731.71+582833.3,SDSS J172731.72+582833.0;;; -IC1261;GPair;17:23:23.36;+71:15:49.1;Dra;1.10;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1261 NED01;G;17:23:26.12;+71:15:46.1;Dra;0.84;0.68;63;14.90;;11.57;10.91;10.57;24.19;E;;;;;;;;2MASX J17232604+7115462,MCG +12-16-032a,PGC 060185,SDSS J172326.12+711546.0;;; -IC1261 NED02;G;17:23:20.88;+71:15:51.7;Dra;0.69;0.61;0;;;;;;;E-S0;;;;;;;;MCG +12-16-032b,PGC 060186,SDSS J172320.88+711551.6;;; -IC1262;G;17:33:02.02;+43:45:34.6;Her;1.64;0.82;84;14.90;;11.32;10.66;10.36;24.60;E;;;;;;;;2MASX J17330202+4345345,MCG +07-36-020,PGC 060479,UGC 10900;;; -IC1263;G;17:33:07.20;+43:49:19.5;Her;1.63;0.68;178;14.80;;11.59;10.86;10.76;23.82;Sb;;;;;;;;2MASX J17330719+4349195,MCG +07-36-021,PGC 060481,UGC 10902;;; -IC1264;G;17:33:16.84;+43:37:45.2;Her;1.37;1.22;60;15.60;;11.79;11.26;11.07;24.96;S0;;;;;;;;2MASX J17331686+4337455,MCG +07-36-022,PGC 060484,UGC 10904;;; -IC1265;G;17:36:39.43;+42:05:18.3;Her;1.85;0.81;78;14.30;;11.83;11.22;11.00;23.62;Sab;;;;;;;;2MASX J17363945+4205181,MCG +07-36-027,PGC 060568,UGC 10917;;; -IC1266;PN;17:45:35.30;-46:05:23.5;Ara;0.16;;;11.59;11.20;10.41;10.11;9.19;;;;11.20;11.38;;;;HD 161044;2MASX J17453533-4605233,ESO 279-007,IRAS 17418-4604,PK 345-08 1,PN G345.2-08.8,TYC 8343-1781-1;;; -IC1267;G;17:38:45.89;+59:22:23.3;Dra;1.38;0.95;55;14.50;;11.61;10.87;10.62;23.33;SBb;;;;;;;;2MASX J17384582+5922234,MCG +10-25-077,PGC 060635,SDSS J173845.89+592223.2,UGC 10937;;; -IC1268;G;17:50:39.29;+17:12:34.0;Her;0.66;0.49;90;15.10;;12.33;11.69;11.42;22.80;Sc;;;;;;;;2MASX J17503935+1712333,IRAS 17484+1713,MCG +03-45-036,PGC 060971;;; -IC1269;G;17:52:06.00;+21:34:10.7;Her;1.32;0.85;135;14.03;13.22;11.62;10.95;10.64;22.43;Sbc;;;;;;;;2MASX J17520585+2134090,2MASX J17520693+2134230,IRAS 17499+2134,MCG +04-42-009,PGC 061023,UGC 11013;;; -IC1270;*;17:47:57.00;+62:13:24.4;Dra;;;;;;;;;;;;;;;;;;;;; -IC1271;Neb;18:05:13.11;-24:24:37.9;Sgr;;;;;;;;;;;;;;;;;;;;; -IC1272;Other;18:04:55.75;+25:07:45.1;Her;;;;;;;;;;;;;;;;;;;;Group of 4-5 Galactic stars.; -IC1273;**;18:05:02.75;+25:07:55.6;Her;;;;;;;;;;;;;;;;;;;;; -IC1274;HII;18:09:51.03;-23:38:53.6;Sgr;20.00;5.00;;;;;;;;;;;;;;;;LBN 33;;; -IC1275;Neb;18:10:07.19;-23:45:40.4;Sgr;;;;;;;;;;;;;;;;;;;;; -IC1276;GCl;18:10:44.27;-07:12:27.3;Se2;9.60;;;;;;;;;;;;;;;;;MWSC 2835;;; -IC1277;G;18:10:27.29;+31:00:11.4;Her;0.98;0.67;21;15.00;;12.69;12.31;11.76;23.44;Sc;;;;;;;;2MASX J18102728+3100112,MCG +05-43-005,PGC 061491,UGC 11135;;; -IC1278;Other;18:10:41.65;+31:08:59.7;Her;;;;;;;;;;;;;;;;;;;;Group of 4-5 Galactic stars.; -IC1279;G;18:11:15.38;+36:00:28.0;Her;2.34;0.59;159;14.50;;11.21;10.54;10.27;23.95;Sb;;;;;;;;2MASX J18111538+3600280,MCG +06-40-009,PGC 061518,UGC 11143;;; -IC1280;Dup;18:12:18.42;+25:39:44.5;Her;;;;;;;;;;;;;;;6581;;;;;; -IC1281;GPair;18:11:38.10;+35:59:32.0;Her;1.30;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1281 NED01;G;18:11:38.02;+35:59:14.7;Her;0.54;0.31;26;16.39;;13.41;12.73;12.38;23.94;;;;;;;;;2MASX J18113801+3559148,PGC 2073160;;;B-Mag taken from LEDA. -IC1281 NED02;G;18:11:38.16;+35:59:50.1;Her;0.57;0.38;15;15.50;;12.52;11.80;11.45;23.19;;;;;;;;;2MASX J18113817+3559508,PGC 061527;;; -IC1282;Other;18:14:05.25;+21:06:07.9;Her;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -IC1283;HII;18:17:16.85;-19:45:44.0;Sgr;15.00;15.00;;;;;;;;;;;;;;;;LBN 47;;; -IC1284;Neb;18:17:39.63;-19:40:19.3;Sgr;16.98;15.14;;7.70;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC1285;Other;18:16:10.17;+25:06:01.2;Her;;;;;;;;;;;;;;;;;;;;Five Galactic stars.; -IC1286;G;18:16:14.27;+55:35:27.6;Dra;1.42;0.44;86;14.80;;11.91;11.30;11.02;23.59;Sab;;;;;;;;2MASX J18161427+5535277,IRAS 18153+5534,MCG +09-30-010,PGC 061666,UGC 11191;;; -IC1287;RfN;18:31:25.69;-10:47:44.9;Sct;20.00;10.00;;6.10;;;;;;;;;;;;;;BD -10 4713,HD 170740,HIP 090804,LBN 75;;; -IC1288;G;18:29:22.46;+39:42:48.1;Lyr;1.09;0.61;5;14.30;;11.17;10.51;10.20;22.89;SBa;;;;;;;;2MASX J18292247+3942479,IRAS 18276+3940,MCG +07-38-007,PGC 061941,UGC 11256;;; -IC1289;G;18:30:02.29;+39:57:50.5;Lyr;0.66;0.33;145;15.30;;12.70;12.03;11.74;23.37;;;;;;;;;2MASX J18300229+3957505,MCG +07-38-009,PGC 061958;;; -IC1290;*Ass;18:38:35.31;-24:05:48.6;Sgr;;;;;;;;;;;;;;;;;;;;Asterism of six to eight stars.; -IC1291;G;18:33:52.57;+49:16:43.0;Dra;1.33;1.15;17;14.20;;13.18;12.90;12.71;22.84;Sd;;;;;;;;2MASX J18335257+4916428,IRAS 18326+4914,MCG +08-34-004,PGC 062049,UGC 11283;;; -IC1292;Other;18:44:40.45;-27:48:58.6;Sgr;;;;;;;;;;;;;;;;;;;;"Nominal position for a ""planetary nebula""; nothing here."; -IC1293;Other;18:41:36.65;+56:19:04.0;Dra;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -IC1294;Other;18:49:50.45;+40:12:33.8;Lyr;;;;;;;;;;;;;;;;;;;;Group of 3-4 Galactic stars. The IC identification is not certain.; -IC1295;PN;18:54:37.13;-08:49:37.3;Sct;1.50;;;15.00;12.50;;;;;;;15.50;;;;;;IRAS 18519-0853,PK 25-04 2,PN G025.4-04.7;;; -IC1296;G;18:53:18.83;+33:03:59.7;Lyr;0.99;0.53;69;15.40;;12.98;12.35;12.41;23.63;SBbc;;;;;;;;2MASX J18531883+3303596,MCG +06-41-022,PGC 062532,UGC 11374;;; -IC1297;PN;19:17:23.40;-39:36:47.0;CrA;0.12;;;10.60;10.70;;;;;;;14.80;14.20;;;;HD 180206;ESO 337-020,IRAS 19139-3942,PK 358-21 1,PN G358.3-21.6;;; -IC1298;Other;19:18:35.69;-01:35:46.3;Aql;;;;;;;;;;;;;;;;;;;;Group of 8-9 Galactic stars.; -IC1299;OCl;19:22:42.03;+20:44:22.4;Vul;2.00;1.00;;14.00;;;;;;;;;;;;;;;;;Dimensions and B-Mag taken from LEDA -IC1300;Dup;19:24:03.17;+53:37:29.2;Cyg;;;;;;;;;;;;;;;6798;;;;;; -IC1301;G;19:26:31.98;+50:07:31.0;Cyg;1.44;0.69;19;14.30;;10.78;10.09;9.84;23.67;S0-a;;;;;;4867;;2MASX J19263197+5007308,MCG +08-35-010,PGC 063207,UGC 11437;;; -IC1302;G;19:30:52.89;+35:47:06.9;Cyg;0.95;0.51;50;14.08;;11.25;10.60;10.35;22.20;SABc;;;;;;;;2MASX J19305289+3547067,IRAS 19290+3540,MCG +06-43-002,PGC 063307;;;B-Mag taken from LEDA. -IC1303;G;19:31:30.06;+35:52:35.8;Cyg;1.18;0.73;104;15.00;;11.39;10.78;10.36;23.53;Sc;;;;;;;;2MASX J19313005+3552358,IRAS 19296+3546,MCG +06-43-004,PGC 063328,SDSS J193130.09+355235.7,UGC 11452;;; -IC1304;*Ass;19:35:34.49;+41:06:42.6;Cyg;;;;;;;;;;;;;;;;;;;;Probably random clumping of Milky Way field stars.; -IC1305;Other;19:39:17.10;+20:11:39.4;Vul;;;;;;;;;;;;;;;;;;;;Group of 4-5 Galactic stars.; -IC1306;*Ass;19:41:41.19;+37:41:06.7;Cyg;;;;;;;;;;;;;;;;;;;;Probably random clumping of Milky Way field stars.; -IC1307;*Ass;19:42:32.10;+27:45:09.5;Vul;;;;;;;;;;;;;;;;;;;;; -IC1308;HII;19:45:05.24;-14:43:12.9;Sgr;;;;;;;;;;;;;;;;;;IRAS 19422-1450;;HII region in NGC 6822.; -IC1309;G;20:03:01.52;-17:13:55.5;Sgr;0.87;0.64;58;15.15;;11.81;11.15;10.82;23.25;SABb;;;;;;;;2MASX J20030152-1713556,IRAS 20001-1722,PGC 064030;;; -IC1310;Cl+N;20:10:00.98;+34:58:08.0;Cyg;15.00;3.00;;;;;;;;;;;;;;;;LBN 181,MWSC 3273;;; -IC1311;OCl;20:10:47.82;+41:10:26.2;Cyg;6.30;;;;13.10;;;;;;;;;;;;;MWSC 3271;;; -IC1312;Other;20:16:51.50;+18:02:45.5;Sge;;;;;;;;;;;;;;;;;;;;"Group of 12-15 Galactic stars; probably not a cluster."; -IC1313;G;20:18:43.66;-16:56:45.5;Cap;1.61;1.02;26;13.50;;10.63;9.93;9.60;23.81;Sab;;;;;;;;2MASX J20184365-1656456,LEDA 891211,MCG -03-51-008,PGC 064463;;; -IC1314;*Ass;20:17:50.00;+25:05:23.2;Vul;;;;;;;;;;;;;;;;;;;;; -IC1315;Other;20:17:21.95;+30:41:20.7;Cyg;;;;;;;;;;;;;;;;;;;;Group of 5-6 Galactic stars.; -IC1316;Other;20:22:25.84;+06:30:06.1;Aql;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1317;G;20:23:15.59;+00:39:53.0;Aql;0.76;0.57;98;14.50;;11.32;10.60;10.31;22.80;E;;;;;;;;2MASX J20231560+0039528,MCG +00-52-004,PGC 064586,UGC 11546;;; -IC1318;*;20:22:13.69;+40:15:24.1;Cyg;;;;2.90;2.23;1.11;0.83;0.72;;;;;;;;;;BD +39 4159,HD 194093,HIP 100453;gam Cyg;;Variable star. -IC1319;G;20:26:01.93;-18:30:14.7;Cap;0.79;0.49;8;14.86;;11.52;10.82;10.51;22.69;Sbc;;;;;;;;ESO 596-037,ESO-LV 596-0370,IRAS 20231-1840,MCG -03-52-007,PGC 064675;;; -IC1320;G;20:26:25.66;+02:54:35.0;Del;1.07;0.61;87;14.50;;11.70;10.98;10.70;22.99;SBb;;;;;;;;2MASX J20262565+0254350,IRAS 20239+0244,MCG +00-52-009,PGC 064685,UGC 11560;;; -IC1321;G;20:28:11.05;-18:17:29.4;Cap;1.10;0.71;96;15.23;;12.00;11.40;10.97;23.84;SBbc;;;;;;;;2MASX J20281105-1817292,ESO 596-043,ESO-LV 596-0430,MCG -03-52-011,PGC 064751;;; -IC1322;G;20:30:08.48;-15:13:40.2;Cap;1.10;0.56;114;15.97;;11.80;11.03;10.76;24.03;S0-a;;;;;;;;2MASX J20300848-1513401,IRAS 20273-1523,PGC 064822;;; -IC1323;**;20:30:29.00;-15:10:55.0;Cap;;;;;;;;;;;;;;;;;;;;; -IC1324;G;20:32:12.31;-09:03:22.0;Cap;1.25;1.12;55;14.29;;10.75;10.10;9.80;23.54;S0-a;;;;;;;;2MASX J20321230-0903214,MCG -02-52-012,PGC 064906;;;B-Mag taken from LEDA. -IC1325;Dup;20:32:50.22;+09:55:35.1;Del;;;;;;;;;;;;;;;6928;;;;;; -IC1327;G;20:35:41.27;-00:00:20.8;Aql;0.93;0.90;15;15.00;;11.63;11.05;10.73;23.51;S0-a;;;;;;;;2MASX J20354128-0000209,IRAS 20331-0010,PGC 065027;;; -IC1328;G;20:41:57.04;-19:37:59.0;Cap;0.89;0.36;50;14.88;;12.09;11.42;11.04;;Sc;;;;;;;;2MASX J20415704-1937587,ESO 597-028,IRAS 20390-1948,MCG -03-52-023,PGC 065217;;; -IC1329;Other;20:43:42.11;+15:35:50.7;Del;;;;;;;;;;;;;;;;;;;;Group of 8-10 Galactic stars.; -IC1330;G;20:46:14.94;-14:01:23.6;Aqr;1.25;0.41;109;;;11.65;10.89;10.54;;Sc;;;;;;;;2MASX J20461497-1401243,IRAS 20434-1412,MCG -02-53-002,PGC 065345;;; -IC1331;G;20:47:48.77;-09:59:45.4;Aqr;1.75;0.49;85;14.69;;10.92;10.18;9.93;24.35;S0-a;;;;;;;;2MASX J20474877-0959453,MCG -02-53-005,PGC 065396;;;B-Mag taken from LEDA. -IC1332;G;20:51:51.39;-13:42:41.5;Aqr;1.16;0.69;64;15.88;;11.84;11.15;10.72;23.98;Sab;;;;;;;;2MASX J20515137-1342408,MCG -02-53-011,PGC 065584;;;B-Mag taken from LEDA. -IC1333;G;20:52:17.20;-16:17:08.7;Cap;1.37;0.73;83;15.46;;11.02;10.28;9.98;24.37;S0-a;;;;;;1334;;2MASX J20521721-1617083,MCG -03-53-008,PGC 065614;;;B-Mag taken from LEDA. -IC1334;Dup;20:52:17.20;-16:17:08.7;Cap;;;;;;;;;;;;;;;;1333;;;;; -IC1335;G;20:53:06.12;-16:20:07.6;Cap;0.89;0.64;16;15.28;;11.69;10.98;10.73;24.37;E;;;;;;;;2MASX J20530614-1620078,LEDA 899456;;May contribute to the radio flux of PKS 2050-16.; -IC1336;G;20:55:04.92;-18:02:19.4;Cap;0.86;0.49;44;15.28;;12.36;11.62;11.34;23.58;S0-a;;;;;;;;2MASX J20550491-1802195,ESO 598-001,ESO-LV 598-0010,MCG -03-53-009,PGC 065706;;; -IC1337;G;20:56:52.70;-16:35:09.0;Cap;0.84;0.61;16;14.52;;11.79;11.07;10.75;22.81;SABb;;;;;;;;2MASX J20565274-1635088,IRAS 20540-1646,MCG -03-53-012,PGC 065760;;; -IC1338;G;20:56:57.84;-16:29:33.4;Cap;0.76;0.50;6;15.50;;12.34;11.63;11.37;23.41;SBab;;;;;;;;2MASX J20565781-1629328,IRAS 20541-1641,LEDA 140938;;; -IC1339;G;20:57:55.52;-17:56:34.2;Cap;1.51;0.94;49;14.17;;10.86;10.04;9.79;23.45;Sb;;;;;;;;2MASX J20575551-1756343,ESO 598-008,ESO-LV 598-0080,MCG -03-53-013,PGC 065799;;; -IC1340;SNR;20:56:08.25;+31:02:52.3;Cyg;25.12;19.95;;;;;;;;;;;;;;;;;;Bright knot in the Veil Nebula.;Dimensions taken from LEDA -IC1341;G;21:00:16.68;-13:58:34.8;Aqr;0.95;0.53;61;15.24;;12.15;11.49;11.19;23.85;S0-a;;;;;;;;2MASX J21001666-1358354,MCG -02-53-016,PGC 065876;;;B-Mag taken from LEDA. -IC1342;G;21:00:25.44;-14:29:45.1;Aqr;1.08;0.41;74;;;11.66;10.96;10.59;;Sab;;;;;;;;2MASX J21002552-1429444,IRAS 20576-1441,MCG -03-53-017,PGC 065878;;; -IC1343;G;21:01:00.66;-15:24:13.3;Cap;1.02;0.43;173;15.23;;11.78;11.12;10.86;23.78;S0-a;;;;;;;;2MASX J21010067-1524129,LEDA 187855;;; -IC1344;G;21:01:16.45;-13:22:49.0;Aqr;1.15;0.52;50;14.57;;;11.33;10.95;23.14;Sab;;;;;;;;2MASX J21011644-1322489,MCG -02-53-018,PGC 065913;;;B-Mag taken from LEDA. -IC1345;G;21:01:22.20;-13:23:51.4;Aqr;0.48;0.41;158;15.58;;12.65;11.98;11.64;22.93;;;;;;;;;2MASX J21012219-1323509,LEDA 938504;;;B-Mag taken from LEDA. -IC1346;G;21:01:37.02;-13:57:38.5;Aqr;1.23;0.62;98;14.92;;12.08;11.38;10.89;23.61;Sb;;;;;;;;2MASX J21013703-1357385,MCG -02-53-019,PGC 065927;;;B-Mag taken from LEDA. -IC1347;G;21:01:44.39;-13:18:47.9;Aqr;1.42;0.65;2;15.62;;11.38;10.70;10.34;24.77;S0;;;;;;;;2MASX J21014441-1318475,MCG -02-53-020,PGC 065928;;;B-Mag taken from LEDA. -IC1348;G;21:01:44.11;-13:21:28.8;Aqr;0.37;0.26;155;15.83;;12.25;11.62;11.30;;;;;;;;;;2MASX J21014400-1321265,PGC 3093671;;; -IC1349;G;21:01:50.45;-13:15:55.8;Aqr;0.72;0.43;51;15.47;;12.44;11.69;11.40;23.64;S0-a;;;;;;;;2MASX J21015044-1315555,LEDA 940379;;;B-Mag taken from LEDA. -IC1350;G;21:01:52.29;-13:51:09.6;Aqr;0.91;0.56;160;14.79;;11.42;10.80;10.44;23.28;S0-a;;;;;;1354;;2MASX J21015228-1351095,MCG -02-53-021,PGC 065939;;;B-Mag taken from LEDA. -IC1351;G;21:01:52.44;-13:12:06.7;Aqr;0.74;0.23;25;15.65;;12.48;11.79;11.58;23.93;;;;;;;;;2MASX J21015241-1312065,LEDA 941325;;;B-Mag taken from LEDA. -IC1352;G;21:01:54.90;-13:23:02.7;Aqr;0.50;0.30;30;16.38;;;;;23.62;;;;;;;;;2MASX J21015490-1323025,PGC 938673;;;B-Mag taken from LEDA. -IC1353;G;21:01:56.32;-13:16:22.2;Aqr;0.45;0.35;134;16.38;;13.19;12.60;12.33;23.36;;;;;;;;;2MASX J21015633-1316225,PGC 940278;;; -IC1354;Dup;21:01:52.29;-13:51:09.6;Aqr;;;;;;;;;;;;;;;;1350;;;;; -IC1355;G;21:01:58.39;-13:10:22.8;Aqr;0.40;0.34;50;15.79;;12.19;11.64;11.40;;;;;;;;;;2MASX J21015835-1310222,PGC 2800921;;; -IC1356;G;21:02:53.00;-15:48:41.7;Cap;0.82;0.58;163;15.20;;11.13;10.37;10.09;23.58;E;;;;;;;;2MASX J21025299-1548413,MCG -03-53-022,PGC 065965;;;B-Mag taken from LEDA. -IC1357;G;21:05:57.31;-10:42:58.5;Aqr;1.28;0.48;38;15.07;;12.04;11.35;11.08;24.45;SBa;;;;;;;;2MASX J21055731-1042582,PGC 066092;;; -IC1358;G;21:06:29.41;-16:12:16.0;Cap;0.50;0.23;38;15.65;;12.42;11.58;11.30;22.88;;;;;;;;;2MASX J21062942-1612163,IRAS 21037-1624,LEDA 2817440;;; -IC1359;G;21:08:43.02;+12:29:03.4;Peg;1.16;0.49;171;14.80;;11.12;10.37;10.13;23.28;Sab;;;;;;;;2MASX J21084300+1229032,MCG +02-54-001,PGC 066189,UGC 11684;;; -IC1360;G;21:10:50.32;+05:04:16.9;Equ;0.80;0.40;20;15.60;;11.94;11.13;10.76;;Sb;;;;;;;;2MASX J21105028+0504169,IRAS 21083+0451,PGC 066266;;; -IC1361;G;21:11:29.14;+05:03:15.6;Equ;0.78;0.55;48;15.40;;12.59;11.97;11.35;23.45;Sb;;;;;;;;2MASX J21112917+0503156,IRAS 21089+0450,MCG +01-54-002,PGC 066297,UGC 11692;;; -IC1362;G;21:11:52.65;+02:19:44.3;Aqr;0.62;0.45;167;15.70;;12.26;11.57;11.28;23.55;E-S0;;;;;;;;2MASX J21115263+0219446,PGC 066316;;; -IC1363;OCl;21:10:40.42;+46:52:12.2;Cyg;;;;;;;;;;;;;;;;;;;;; -IC1364;G;21:13:24.68;+02:46:11.0;Equ;1.07;0.78;124;14.70;;11.20;10.46;10.27;23.44;E;;;;;;;;2MASX J21132469+0246113,MCG +00-54-006,PGC 066367;;; -IC1365;GGroup;21:13:55.91;+02:33:55.4;Equ;1.00;;;;;;;;;;;;;;;;;MCG +00-54-007;;;Diameter of the group inferred by the author. -IC1365 NED01;G;21:13:55.92;+02:33:55.4;Equ;1.66;0.85;57;15.10;;;;;24.88;E;;;;;;;;MCG +00-54-007 NED01,PGC 066381;;; -IC1365 NED02;G;21:13:54.66;+02:33:49.7;Equ;1.38;0.81;74;17.00;;;;;26.36;;;;;;;;;2MASX J21135465+0233487;;;B-Mag taken from LEDA -IC1366;G;21:14:08.02;+01:46:34.0;Aqr;0.81;0.41;23;15.70;;12.08;11.48;11.08;24.01;S0;;;;;;;;2MASX J21140805+0146336,PGC 066386;;; -IC1367;G;21:14:09.70;+02:59:37.7;Equ;0.65;0.50;152;15.30;;12.44;11.65;11.54;23.35;;;;;;;;;2MASX J21140971+0259376,PGC 066390;;; -IC1368;G;21:14:12.59;+02:10:40.8;Aqr;1.36;0.52;47;14.30;;11.22;10.54;10.16;23.25;Sa;;;;;;;;2MASX J21141259+0210406,IRAS 21116+0158,MCG +00-54-008,PGC 066389,UGC 11703;;; -IC1369;OCl;21:12:09.04;+47:46:06.6;Cyg;5.10;;;;;;;;;;;;;;;;;MWSC 3481;;; -IC1370;G;21:15:14.27;+02:11:31.3;Aqr;0.66;0.49;54;15.10;;12.25;11.50;11.35;23.09;;;;;;;;;2MASX J21151427+0211314,PGC 066418;;; -IC1371;G;21:20:15.65;-04:52:35.5;Aqr;1.42;0.83;13;14.98;;11.08;10.39;10.09;24.38;E-S0;;;;;;;;2MASX J21201566-0452356,MCG -01-54-013,PGC 066578,SDSS J212015.64-045235.2;;;B-Mag taken from LEDA. -IC1372;G;21:20:17.09;-05:36:16.5;Aqr;0.83;0.63;127;15.04;;12.72;11.94;11.67;23.14;Sc;;;;;;;;2MASX J21201708-0536166,IRAS 21176-0548,LEDA 3083153;;; -IC1373;G;21:20:37.25;+01:05:32.7;Aqr;0.89;0.61;38;15.34;;11.81;10.82;10.55;23.96;E;;;;;;;;2MASX J21203723+0105330,MCG +00-54-013 NED02,PGC 066589,SDSS J212037.24+010532.7;;;B-Mag taken from LEDA. -IC1374;G;21:21:02.65;+01:42:46.7;Aqr;0.63;0.44;113;15.70;;12.80;11.95;11.66;23.33;Sbc;;;;;;;;2MASX J21210267+0142464,PGC 066605;;; -IC1375;G;21:20:59.79;+03:59:07.5;Equ;0.58;0.37;125;15.10;;11.78;10.96;10.67;;E;;;;;;;;2MASX J21205981+0359074,PGC 066603;;; -IC1376;Other;21:24:41.10;-05:44:32.8;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1377;G;21:25:26.63;+04:18:51.2;Peg;0.73;0.56;118;14.80;;11.77;11.07;10.60;22.72;SBab;;;;;;;;2MASX J21252656+0418508,IRAS 21229+0405,MCG +01-54-009,PGC 066722;;; -IC1378;Other;21:22:51.71;+55:27:51.5;Cep;;;;;;;;;;;;;;;;;;;;Asterism of 10-15 Galactic stars (or a Galactic open cluster?); -IC1379;G;21:26:01.26;+03:05:50.6;Peg;0.59;0.47;132;15.70;;12.28;11.37;11.41;23.33;;;;;;;;;2MASX J21260126+0305513,PGC 066741;;; -IC1380;G;21:27:11.01;+02:43:03.6;Peg;0.68;0.58;145;15.50;;12.20;11.47;11.32;23.60;;;;;;;;;2MASX J21271100+0243033,PGC 066779;;; -IC1381;G;21:27:33.70;-01:11:19.0;Aqr;0.90;0.59;69;15.60;;12.31;11.53;11.31;23.68;Sab;;;;;;;;2MASX J21273371-0111188,MCG +00-54-016,PGC 066789,SDSS J212733.69-011119.0,SDSS J212733.70-011119.0;;; -IC1382;Dup;21:22:07.56;+18:39:56.4;Peg;;;;;;;;;;;;;;;7056;;;;;; -IC1383;G;21:27:39.64;-01:06:07.8;Aqr;0.62;0.22;126;16.22;;12.87;12.06;11.61;23.06;Sb;;;;;;;;2MASX J21273960-0106078,IRAS 21250-0119,PGC 066792,SDSS J212739.64-010607.8;;; -IC1384;G;21:27:53.07;-01:22:06.8;Aqr;0.77;0.63;63;15.40;;12.89;12.05;11.68;23.49;;;;;;;;;2MASX J21275307-0122068,MCG +00-54-017,PGC 066796;;; -IC1385;G;21:28:51.19;-01:04:12.4;Aqr;0.59;0.53;141;19.06;18.25;12.60;11.85;11.58;22.99;SABb;;;;;;;;2MASX J21285116-0104121,MCG +00-54-022,PGC 066832,SDSS J212851.12-010412.4,SDSS J212851.19-010412.4,SDSS J212851.20-010412.4;;; -IC1386;G;21:29:37.43;-21:11:44.5;Cap;0.97;0.77;131;13.78;;10.69;10.06;9.74;22.92;E-S0;;;;;;;;2MASX J21293744-2111443,ESO 599-016,ESO-LV 599-0160,MCG -04-50-030,PGC 066852;;; -IC1387;G;21:29:34.47;-01:21:03.3;Aqr;0.48;0.46;15;15.00;;12.52;12.12;11.76;22.35;;;;;;;;;2MASX J21293449-0121032,MCG +00-54-026,PGC 066851;;; -IC1388;G;21:29:52.18;-00:37:52.6;Aqr;0.82;0.41;137;15.00;;11.74;11.03;10.75;23.32;S0-a;;;;;;;;2MASX J21295220-0037522,MCG +00-54-027,PGC 066857,SDSS J212952.17-003752.5,SDSS J212952.18-003752.6;;; -IC1389;G;21:32:07.84;-18:01:06.1;Cap;0.81;0.49;119;15.46;;12.68;12.02;11.66;23.64;S0-a;;;;;;;;2MASX J21320783-1801060,ESO 599-018,ESO-LV 599-0180,MCG -03-55-001,PGC 066916;;; -IC1390;G;21:32:24.78;-01:51:45.1;Aqr;0.65;0.61;102;15.10;;12.92;12.23;11.91;22.95;;;;;;;;;2MASX J21322478-0151450,MCG +00-55-004,PGC 066922;;; -IC1391;G;21:35:00.40;-00:30:41.2;Aqr;0.64;0.49;84;15.70;;13.07;12.43;12.34;23.74;E;;;;;;;;2MASX J21350042-0030407,MCG +00-55-007,PGC 067002,SDSS J213500.38-003041.2,SDSS J213500.39-003041.1,SDSS J213500.39-003041.2,SDSS J213500.40-003041.2;;; -IC1392;G;21:35:32.69;+35:23:54.0;Cyg;1.53;1.22;73;13.00;;9.94;9.23;8.93;22.61;E-S0;;;;;;;;2MASX J21353268+3523541,MCG +06-47-003,PGC 067017,UGC 11772;;; -IC1393;G;21:40:14.25;-22:24:41.0;Cap;0.74;0.48;175;15.95;;11.71;11.07;10.76;23.60;S0;;;;;;;;2MASX J21401427-2224408,ESO 531-020,MCG -04-51-009,PGC 067147;;; -IC1394;G;21:40:13.03;+14:37:58.9;Peg;1.23;1.15;37;15.30;;11.21;10.51;10.28;24.12;E;;;;;;;;2MASX J21401304+1437585,MCG +02-55-006,PGC 067145;;; -IC1395;G;21:41:41.41;+04:06:16.3;Peg;0.74;0.68;85;15.50;;11.65;11.19;10.62;23.65;E;;;;;;;;2MASX J21414138+0406167,PGC 067183;;; -IC1396;Cl+N;21:38:57.62;+57:29:20.6;Cep;14.00;4.00;;;;;;;;;;;;;;;;BD +56 2617,HD 206267,HIP 106886,LBN 451,LBN 452,MWSC 3539;;; -IC1397;G;21:44:02.31;-04:53:05.3;Aqr;0.85;0.52;172;15.28;;11.81;11.18;10.93;23.55;S0-a;;;;;;;;2MASX J21440227-0453055,LEDA 170372;;; -IC1398;G;21:45:51.43;+09:28:31.2;Peg;0.76;0.43;70;15.40;;12.25;11.61;11.32;23.04;Sc;;;;;;;;2MASX J21455142+0928310,MCG +01-55-009,PGC 067306;;; -IC1399;G;21:46:08.91;+04:24:08.0;Peg;0.68;0.46;162;15.60;;12.22;11.53;11.37;23.55;;;;;;;;;2MASX J21460892+0424085,PGC 067316;;; -IC1400;*Ass;21:44:16.28;+52:58:01.3;Cyg;;;;;;;;;;;;;;;;;;;;"Perhaps not a cluster; just a random clumping of 20-30 Milky Way stars?"; -IC1401;G;21:46:59.49;+01:42:45.9;Aqr;1.68;0.56;180;14.70;;11.81;11.15;10.82;23.44;SABb;;;;;;;;2MASX J21465950+0142457,IRAS 21444+0128,MCG +00-55-015,PGC 067339,UGC 11810;;; -IC1402;*Ass;21:44:58.97;+53:15:45.0;Cyg;;;;;;;;;;;;;;;;;;;;"Perhaps not a cluster; just a random clumping of 20-30 Milky Way stars?"; -IC1403;G;21:50:29.08;-02:42:58.2;Aqr;0.49;0.35;153;16.22;;14.22;13.41;13.14;23.61;;;;;;;;;2MASX J21502909-0242580,LEDA 1084587;;; -IC1404;G;21:50:56.38;-09:15:59.7;Cap;0.97;0.81;47;14.15;;11.13;10.37;10.11;23.41;E;;;;;;;;2MASX J21505637-0915594,LEDA 170377;;; -IC1405;G;21:50:49.84;+02:01:14.9;Aqr;0.87;0.63;117;15.00;;11.81;11.01;10.80;23.37;Sab;;;;;;;;2MASX J21504984+0201144,MCG +00-55-020,PGC 067470,UGC 11826;;; -IC1406;G;21:51:04.87;+01:59:13.4;Aqr;0.62;0.47;65;15.50;;12.11;11.48;10.86;23.44;E;;;;;;;;2MASX J21510485+0159134,PGC 067478;;; -IC1407;G;21:52:23.44;+03:25:37.8;Peg;0.76;0.56;84;15.10;;11.86;11.33;10.98;23.26;E-S0;;;;;;;;2MASX J21522342+0325375,PGC 067538;;Not to be associated with NGC 7148 which is a double star.; -IC1408;G;21:53:09.02;-13:20:48.4;Cap;1.00;0.52;33;14.92;;11.30;10.60;10.31;23.59;S0;;;;;;;;2MASX J21530900-1320481,MCG -02-55-007,PGC 067574;;;B-Mag taken from LEDA. -IC1409;G;21:53:19.60;-07:29:59.5;Aqr;0.69;0.43;28;15.62;;;;;23.30;Sab;;;;;;;;2MASX J21531960-0729596,PGC 1017940,SDSS J215319.59-072959.4,SDSS J215319.60-072959.4,SDSS J215319.61-072959.5;;;B-Mag taken from LEDA. -IC1410;G;21:56:02.14;-02:54:01.0;Aqr;0.83;0.54;132;15.06;;11.69;10.90;10.66;23.96;E;;;;;;;;2MASX J21560217-0254006,LEDA 1080332;;; -IC1411;G;21:56:00.59;-01:31:01.4;Aqr;0.87;0.56;36;14.50;;10.79;10.06;9.78;23.06;E;;;;;;;;2MASX J21560065-0131006,MCG +00-56-001,PGC 067660,UGC 11850;;The APM image includes a neighboring star and three faint galaxies.; -IC1412;G;21:58:18.46;-17:10:34.2;Aqr;1.27;0.71;102;14.40;;12.13;11.52;11.20;23.77;S0-a;;;;;;;;2MASX J21581847-1710341,IRAS 21555-1724,MCG -03-56-001,PGC 067747;;; -IC1413;G;21:58:26.61;-03:06:08.7;Aqr;0.93;0.26;74;15.43;;11.79;11.01;10.58;23.29;Sc;;;;;;;;2MASX J21582660-0306084,LEDA 1076468;;; -IC1414;G;21:58:18.05;+08:25:25.7;Peg;0.47;0.40;5;14.90;;11.76;10.97;10.73;;E;;;;;;;;2MASX J21581802+0825264,PGC 067762;;; -IC1415;Other;21:58:42.64;+01:21:01.3;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1416;Other;21:58:49.48;+01:27:05.6;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1417;G;22:00:21.61;-13:08:50.5;Aqr;1.65;0.54;110;14.36;;11.27;10.52;10.28;23.48;Sb;;;;;;;;2MASX J22002162-1308504,IRAS 21576-1323,MCG -02-56-003,PGC 067811;;;B-Mag taken from LEDA. -IC1418;G;22:01:59.92;+04:23:03.6;Peg;0.86;0.86;160;15.30;;12.49;11.88;11.65;23.66;Sbc;;;;;;;;2MASX J22015989+0423041,MCG +01-56-009,PGC 067872;;; -IC1419;G;22:02:58.84;-09:55:15.5;Aqr;0.54;0.30;164;16.14;;12.74;12.04;11.76;23.55;S0-a;;;;;;;;2MASX J22025883-0955152,LEDA 984740;;; -IC1420;GPair;22:02:31.97;+19:45:00.4;Peg;1.30;;;;;;;;;;;;;;;;;MCG +03-56-005,UGC 11880;;Colliding pair, not noted as double in CGCG, MCG, or UGC.;Diameter of the group inferred by the author. -IC1420 NED01;G;22:02:31.30;+19:45:01.3;Peg;1.32;1.07;0;14.50;;;;;23.51;Scd;;;;;;;;MCG +03-56-005 NED01,PGC 067900,UGC 11880 NED01;;; -IC1420 NED02;G;22:02:32.28;+19:45:00.4;Peg;0.86;0.60;90;15.53;;13.33;12.65;12.09;23.63;Sd;;;;;;;;2MASX J22023229+1945002,MCG +03-56-005 NED02,PGC 093140,UGC 11880 NED02;;;B-Mag taken from LEDA. -IC1421;G;22:03:04.03;-09:58:41.4;Aqr;0.63;0.57;5;15.45;;12.10;11.32;10.98;23.47;E;;;;;;;;2MASX J22030405-0958411,MCG -02-56-009,PGC 067924;;;B-Mag taken from LEDA. -IC1422;G;22:03:00.06;+02:35:56.0;Peg;0.46;0.30;142;15.70;;13.08;12.30;12.16;23.03;;;;;;;;;2MASX J22030006+0235563,PGC 067922;;; -IC1423;G;22:03:12.69;+04:17:51.3;Peg;0.92;0.44;40;14.80;;12.42;11.45;11.32;22.80;Sb;;;;;;;;2MASX J22031268+0417513,MCG +01-56-010,PGC 067931,UGC 11883;;; -IC1424;*;22:03:09.39;+11:11:49.7;Peg;;;;;;;;;;;;;;;;;;;;; -IC1425;G;22:03:24.51;+02:35:41.7;Peg;0.79;0.62;98;15.00;;11.46;10.81;10.39;23.48;E;;;;;;;;2MASX J22032452+0235411,PGC 067939;;; -IC1426;**;22:03:51.28;-09:55:09.5;Aqr;;;;;;;;;;;;;;;;;;;;Identification as IC 1426 is very uncertain.; -IC1427;G;22:03:35.16;+15:06:24.4;Peg;1.14;0.83;103;15.20;;11.04;10.38;10.19;24.32;E;;;;;;;;2MASX J22033515+1506244,MCG +02-56-010,PGC 067948,SDSS J220335.16+150624.3,UGC 11889;;; -IC1428;G;22:04:27.67;+02:37:51.1;Peg;0.71;0.37;61;15.60;;12.82;12.25;11.96;23.63;;;;;;;;;2MASX J22042767+0237510,PGC 067979;;; -IC1429;*;22:07:02.45;+10:06:33.2;Peg;;;;;;;;;;;;;;;;;;;;; -IC1430;G;22:07:29.82;-13:34:52.3;Aqr;0.56;0.47;55;16.21;;12.70;11.92;12.04;23.34;;;;;;;;;2MASX J22072978-1334523,LEDA 936014;;; -IC1431;G;22:07:39.60;-13:30:48.2;Aqr;0.75;0.70;20;15.27;;12.61;11.99;11.75;23.29;Sa;;;;;;;;2MASX J22073959-1330482,MCG -02-56-015,PGC 068087;;;B-Mag taken from LEDA. -IC1432;G;22:10:03.97;+03:41:22.5;Peg;0.44;0.28;30;16.75;;12.30;11.54;11.16;;S0;;;;;;;;2MASX J22100394+0341219,PGC 3092375;;;B-Mag taken from LEDA. -IC1433;GTrpl;22:12:10.20;-12:45:55.0;Aqr;1.00;;;;;;;;;;;;;;;;;MCG -02-56-021;;;Diameter of the group inferred by the author. -IC1433 NED01;G;22:12:10.64;-12:45:56.1;Aqr;0.83;0.41;99;15.64;;12.20;11.54;11.21;23.92;S0-a;;;;;;;;2MASX J22121067-1245559,MCG -02-56-021 NED01,PGC 068267;;;B-Mag taken from LEDA. -IC1433 NED02;G;22:12:09.85;-12:45:56.2;Aqr;;;;;;;;;;;;;;;;;;MCG -02-56-021 NED02;;;No data available in LEDA -IC1433 NED03;G;22:12:09.22;-12:45:47.3;Aqr;0.21;0.19;111;17.74;;;;;23.13;;;;;;;;;2MASX J22120923-1245469,MCG -02-56-021 NED03,PGC 947946;;;B-Mag taken from LEDA. -IC1434;OCl;22:10:42.16;+52:51:00.3;Lac;4.80;;;;;;;;;;;;;;;;;MWSC 3592;;; -IC1435;G;22:13:26.29;-22:05:48.1;Aqr;1.07;0.65;9;13.88;;11.27;10.50;10.25;22.42;Sb;;;;;;;;2MASX J22132630-2205481,ESO 601-030,ESO-LV 601-0300,IRAS 22106-2220,MCG -04-52-025,PGC 068320;;; -IC1436;G;22:13:51.44;-10:11:30.4;Aqr;0.56;0.42;57;16.06;;12.54;11.90;11.78;23.43;E-S0;;;;;;;;2MASX J22135146-1011297,MCG -02-56-024,PGC 068337;;;B-Mag taken from LEDA. -IC1437;G;22:15:44.99;+02:03:57.4;Aqr;1.08;0.94;52;14.90;;11.00;10.29;10.07;23.60;S0-a;;;;;;;;2MASX J22154497+0203574,MCG +00-56-016,PGC 068438,UGC 11965;;; -IC1438;G;22:16:29.09;-21:25:50.5;Aqr;2.33;2.16;119;12.63;;10.23;9.54;9.30;23.28;Sa;;;;;;;;2MASX J22162910-2125506,ESO 602-001,ESO-LV 602-0010,IRAS 22137-2140,MCG -04-52-029,PGC 068469;;; -IC1439;G;22:16:40.14;-21:29:09.4;Aqr;1.25;0.65;28;14.68;;12.02;11.29;10.74;23.70;SBa;;;;;;;;2MASX J22164013-2129096,ESO 602-002,ESO-LV 602-0020,MCG -04-52-030,PGC 068476;;; -IC1440;G;22:16:33.22;-16:00:59.2;Aqr;1.67;0.48;76;14.91;;11.51;10.85;10.58;23.71;Sc;;;;;;;;2MASX J22163319-1600593,MCG -03-56-013,PGC 068470;;;B-Mag taken from LEDA. -IC1441;G;22:15:19.14;+37:18:05.4;Lac;1.07;0.58;38;15.30;;11.97;11.19;10.90;23.90;SBb;;;;;;;;2MASX J22151913+3718054,IRAS 22131+3703,MCG +06-48-023,PGC 068413;;; -IC1442;OCl;22:16:01.33;+53:59:28.8;Lac;4.20;;;9.53;9.10;;;;;;;;;;;;;MWSC 3606;;; -IC1443;G;22:19:03.66;-20:56:23.7;Aqr;1.55;1.21;42;13.48;;10.42;9.79;9.54;23.32;E;;;;;;;;2MASX J22190364-2056236,ESO 602-005,ESO-LV 602-0050,MCG -04-52-033,PGC 068558;;; -IC1444;G;22:22:23.92;+05:08:21.0;Peg;0.58;0.37;5;15.40;;11.86;11.29;10.94;23.45;E;;;;;;;;2MASX J22222390+0508206,PGC 068665;;; -IC1445;G;22:25:30.33;-17:14:35.9;Aqr;1.41;1.15;87;13.65;;10.66;10.02;9.76;23.07;E-S0;;;;;;;;2MASX J22253032-1714361,ESO 602-019,ESO-LV 602-0190,MCG -03-57-007,PGC 068826;;; -IC1446;G;22:29:04.70;-01:11:05.7;Aqr;0.78;0.49;29;15.70;;11.85;11.27;11.01;23.73;E-S0;;;;;;;;2MASX J22290466-0111060,LEDA 192446,SDSS J222904.69-011105.6,SDSS J222904.69-011105.7,SDSS J222904.70-011105.6,SDSS J222904.70-011105.7;;; -IC1447;G;22:29:59.80;-05:07:11.6;Aqr;1.48;0.77;95;13.71;;11.05;10.39;10.25;22.82;Sb;;;;;;;;2MASX J22295979-0507117,IRAS 22273-0522,MCG -01-57-014,PGC 068996;;;B-Mag taken from LEDA. -IC1448;Dup;22:34:32.14;-12:56:01.9;Aqr;;;;;;;;;;;;;;;7308;;;;;; -IC1449;G;22:35:07.00;-08:45:55.2;Aqr;0.57;0.34;48;15.22;;13.25;12.61;12.36;23.05;;;;;;;;;2MASX J22350698-0845550,LEDA 192966,SDSS J223506.99-084555.2,SDSS J223507.00-084555.2;;; -IC1450;**;22:37:57.93;+34:32:07.8;Peg;;;;;;;;;;;;;;;;;;;;; -IC1451;G;22:46:07.46;-10:22:09.9;Aqr;0.91;0.87;46;15.00;;12.67;11.92;11.44;23.54;Sc;;;;;;;;2MASX J22460744-1022098,MCG -02-58-002,PGC 069684,SDSS J224607.46-102209.9;;;B-Mag taken from LEDA. -IC1452;Dup;22:45:59.19;+10:52:03.0;Peg;;;;;;;;;;;;;;;7374B;;;;;; -IC1453;G;22:46:54.23;-13:26:58.6;Aqr;0.84;0.71;158;15.10;;12.05;11.34;10.95;23.26;SABb;;;;;;;;2MASX J22465423-1326588,MCG -02-58-004,PGC 069701;;;B-Mag taken from LEDA. -IC1454;PN;22:42:25.01;+80:26:32.0;Cep;0.47;;;14.80;14.00;;;;;;;18.80;;;;;;IRAS 22419+8010,PK 117+18 1,PN G117.5+18.9;;; -IC1455;G;22:53:46.06;+01:22:19.1;Psc;1.00;0.56;40;14.90;;11.10;10.46;10.19;23.17;SBa;;;;;;;;2MASX J22534603+0122191,MCG +00-58-011,PGC 069943,UGC 12232;;; -IC1456;G;22:55:18.19;-12:43:55.2;Aqr;0.95;0.21;125;15.91;;12.39;11.54;11.37;24.46;;;;;;;;;2MASX J22551819-1243551,LEDA 948407;;; -IC1457;Other;22:55:23.76;-05:33:45.9;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1458;Dup;22:56:41.38;-07:22:44.6;Aqr;;;;;;;;;;;;;;;7441;;;;;; -IC1459;G;22:57:10.61;-36:27:44.0;Gru;4.61;3.23;43;10.96;11.85;7.69;7.07;6.81;23.12;E;;;;;;5265;;2MASX J22571068-3627449,ESO 406-030,ESO-LV 406-0300,IRAS 22544-3643,MCG -06-50-016,PGC 070090;;Confused HIPASS source; -IC1460;G;22:57:04.08;+04:40:37.3;Psc;0.61;0.48;158;15.50;;12.06;11.54;11.09;22.81;E;;;;;;;;2MASX J22570408+0440367,IRAS 22545+0424,MCG +01-58-015,PGC 070086;;; -IC1461;G;22:58:34.30;+15:10:22.0;Peg;0.60;0.55;12;15.41;;12.30;11.62;11.25;22.57;Sc;;;;;;;;2MASX J22583427+1510223,IRAS 22560+1454,PGC 070153,SDSS J225834.29+151021.9,SDSS J225834.30+151022.0;;; -IC1462;*;22:58:37.15;+08:26:28.7;Peg;;;;;;;;;;;;;;;;;;;;; -IC1463;**;22:59:20.93;-10:31:51.1;Aqr;;;;;;;;;;;;;;;;;;;;; -IC1464;GPair;23:03:11.60;-08:59:27.0;Aqr;1.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1464A;G;23:03:12.08;-08:59:34.7;Aqr;0.26;0.15;81;15.32;;;;;21.52;;;;;;;;;MCG -02-58-020,PGC 070345,SDSS J230312.08-085934.6,SDSS J230312.08-085934.7,SDSS J230312.09-085934.6;;;B-Mag taken from LEDA. -IC1464B;G;23:03:11.04;-08:59:21.0;Aqr;0.68;0.45;135;14.97;;11.28;9.95;10.02;22.89;;;;;;;;;2MASX J23031100-0859205,MCG -02-58-021,PGC 070344,SDSS J230311.04-085920.9;;;B-Mag taken from LEDA. -IC1465;Other;23:02:53.20;+16:34:56.9;Peg;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC1466;G;23:03:39.05;-02:46:31.6;Psc;0.60;0.50;124;14.30;;11.58;10.80;10.52;22.30;Sm;;;;;;;;2MASX J23033905-0246313,PGC 135879;;; -IC1467;G;23:04:49.71;-03:13:47.8;Psc;0.79;0.38;3;14.75;;11.88;11.21;10.91;22.53;Sc;;;;;;;;2MASX J23044969-0313478,IRAS 23022-0329,MCG -01-58-017,PGC 070413;;;B-Mag taken from LEDA. -IC1468;G;23:05:07.57;-03:12:16.2;Psc;1.06;0.49;171;15.50;;11.74;11.03;10.83;24.04;S0-a;;;;;;;;2MASX J23050758-0312164,MCG -01-58-019,PGC 070429,SDSS J230507.56-031215.9;;; -IC1469;G;23:06:28.67;-13:32:11.7;Aqr;0.45;0.36;105;;;12.32;11.46;11.26;;;;;;;;;;2MASX J23062866-1332118,PGC 164479;;; -IC1470;HII;23:05:10.21;+60:14:38.7;Cep;1.80;1.80;90;11.50;;;;;;;;;;;;;;2MASX J23050983+6014560;;;Diameters taken from SIMBAD. -IC1471;G;23:08:44.85;-12:38:22.0;Aqr;1.07;0.65;169;14.63;;11.40;10.68;10.33;23.18;Sa;;;;;;;;2MASX J23084486-1238219,MCG -02-59-003,PGC 070561;;;B-Mag taken from LEDA. -IC1472;G;23:09:06.68;+17:15:32.9;Peg;1.01;0.60;60;15.50;;11.48;10.82;10.56;23.93;S0-a;;;;;;;;2MASX J23090669+1715331,MCG +03-59-004,PGC 070573;;; -IC1473;G;23:11:05.41;+29:38:36.4;Peg;1.74;0.85;176;14.20;;;;;24.04;S0;;;;;;;;IRAS 23086+2922,MCG +05-54-043,PGC 070633,UGC 12404;;The 2MASS position is 5 arcsec northwest of the nucleus.; -IC1474;G;23:12:51.27;+05:48:22.9;Psc;1.04;0.48;149;14.90;;11.57;10.89;10.59;22.92;Sc;;;;;;;;2MASX J23125126+0548229,IRAS 23103+0532,MCG +01-59-011,PGC 070702,UGC 12417;;; -IC1475;Other;23:14:02.22;-28:25:20.8;Scl;;;;;;;;;;;;;;;;;;;;"Nominal position for IC 1475; nothing here."; -IC1476;G;23:14:16.35;+30:33:05.3;Peg;0.91;0.91;165;15.60;;11.60;10.81;10.64;24.07;S0-a;;;;;;;;2MASX J23141631+3033053,MCG +05-54-051,PGC 070764;;UGC incorrectly identifies MCG +05-54-051 as UGC 12444.; -IC1477;Dup;23:17:12.00;-06:54:43.2;Aqr;;;;;;;;;;;;;;;7596;;;;;; -IC1478;Dup;23:18:13.92;+10:17:53.9;Peg;;;;;;;;;;;;;;;7594;;;;;; -IC1479;G;23:18:46.41;-10:23:57.3;Aqr;1.16;0.96;25;14.60;;11.23;10.53;10.18;23.67;E-S0;;;;;;;;2MASX J23184637-1023575,MCG -02-59-010,PGC 071021,SDSS J231846.41-102357.2,SDSS J231846.41-102357.3;;;B-Mag taken from LEDA. -IC1480;Dup;23:18:59.24;+11:20:30.2;Peg;;;;;;;;;;;;;;;7607;;;;;; -IC1481;G;23:19:25.12;+05:54:22.2;Psc;0.73;0.65;45;14.50;;11.57;10.96;10.62;22.43;Sd;;;;;;;;2MASX J23192510+0554223,IRAS 23168+0537,PGC 071070,SDSS J231925.09+055421.6,UGC 12505;;; -IC1482;G;23:20:49.52;+01:44:20.5;Psc;0.81;0.63;135;15.30;;11.79;10.99;10.78;23.56;E;;;;;;;;2MASX J23204954+0144202,MCG +00-59-029,PGC 071142;;; -IC1483;Dup;23:22:33.12;+11:19:43.7;Peg;;;;;;;;;;;;;;;7638;;;;;; -IC1484;G;23:22:39.94;+11:23:04.1;Peg;0.62;0.32;49;15.50;;12.85;12.19;11.87;24.81;;;;;;;;;2MASX J23223991+1123035,LEDA 1392792,MCG +02-59-032;;; -IC1485;Dup;23:22:48.23;+11:22:22.3;Peg;;;;;;;;;;;;;;;7639;;;;;; -IC1486;Dup;23:23:54.02;+09:40:02.9;Peg;;;;;;;;;;;;;;;7648;;;;;; -IC1487;Dup;23:24:20.09;+14:38:49.7;Peg;;;;;;;;;;;;;;;7649;;;;;; -IC1488;G;23:25:38.55;+15:21:15.9;Peg;1.08;0.24;172;15.73;;12.17;11.42;11.02;24.09;Sa;;;;;;;;2MASX J23253854+1521163,LEDA 2800840,SDSS J232538.54+152115.8,SDSS J232538.54+152115.9,SDSS J232538.55+152115.9;;;B-Mag taken from LEDA. -IC1489;G;23:26:32.13;-12:30:59.4;Aqr;0.54;0.52;25;15.11;;12.99;12.13;11.66;22.51;;;;;;;;;2MASX J23263213-1230597,IRAS 23239-1247,MCG -02-59-016,PGC 071443;;;B-Mag taken from LEDA. -IC1490;G;23:59:10.72;-04:07:37.2;Psc;1.45;0.84;83;17.80;;10.92;10.16;9.88;23.02;SABb;;;;;;1524;;2MASX J23591071-0407375,IRAS 23566-0424,MCG -01-01-011,PGC 073151;;; -IC1491;G;23:29:24.69;-16:18:59.8;Aqr;0.77;0.42;150;15.03;;13.00;12.30;12.11;22.73;Sbc;;;;;;;;2MASX J23292469-1618598,MCG -03-59-010,PGC 071580;;;B-Mag taken from LEDA. -IC1492;G;23:30:36.10;-03:02:23.7;Psc;1.47;1.11;32;14.37;;10.65;10.00;9.66;23.88;S0-a;;;;;;;;2MASX J23303610-0302237,MCG -01-59-028,PGC 071629;;;B-Mag taken from LEDA. -IC1493;G;23:30:27.51;+14:27:31.9;Peg;0.52;0.29;135;16.55;;;;;23.88;;;;;;;;;2MASX J23302745+1427323,PGC 1458643,SDSS J233027.51+142731.9;;;B-Mag taken from LEDA. -IC1494;G;23:30:46.14;-12:43:28.3;Aqr;0.73;0.34;125;15.83;;12.50;11.84;11.56;23.80;S0-a;;;;;;;;2MASX J23304614-1243284,LEDA 948530;;; -IC1495;G;23:30:47.74;-13:29:07.6;Aqr;1.33;0.83;25;14.14;;11.42;10.76;10.41;23.16;Sb;;;;;;5327;;2MASX J23304773-1329076,IRAS 23281-1345,MCG -02-59-024,PGC 071631;;;B-Mag taken from LEDA. -IC1496;G;23:30:53.51;-02:56:03.5;Psc;1.65;1.22;65;14.41;;10.94;10.25;9.96;24.03;S0-a;;;;;;;;2MASX J23305352-0256037,MCG -01-59-029,PGC 071634,SDSS J233053.51-025603.3;;;B-Mag taken from LEDA. -IC1497;Other;23:28:50.09;+11:59:13.2;Peg;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1498;G;23:31:53.65;-05:00:25.1;Aqr;2.24;0.57;3;14.03;;10.76;10.01;9.75;23.78;SBa;;;;;;;;2MASX J23315364-0500252,MCG -01-60-002,PGC 071677;;;B-Mag taken from LEDA. -IC1499;**;23:31:57.03;-13:26:22.9;Aqr;;;;;;;;;;;;;;;;;;;;The IC identification is not certain.; -IC1500;G;23:33:09.36;+04:33:09.1;Psc;0.47;0.38;20;15.40;;11.93;11.16;10.95;;S0-a;;;;;;;;2MASX J23330934+0433091,PGC 071727;;; -IC1501;G;23:34:40.06;-03:09:10.2;Psc;1.48;0.67;133;14.50;;12.01;11.46;11.16;23.49;SABb;;;;;;;;2MASX J23344004-0309102,IRAS 23320-0325,MCG -01-60-009,PGC 071786,SDSS J233440.06-030910.3;;; -IC1502;G;23:36:20.52;+75:38:53.3;Cep;1.01;0.58;51;14.70;;9.97;9.15;8.87;23.37;S0-a;;;;;;;;2MASX J23362072+7538534,MCG +12-01-001,MCG +13-01-002,PGC 071864,UGC 12105,UGC 12706;;UGC RA (22h 34.1m) for UGC 12105 is 1 hour too small.; -IC1503;G;23:38:27.11;+04:48:05.1;Psc;0.90;0.43;71;14.26;;;;;22.13;Sd;;;;;;;;2MASX J23382645+0447580,2MASX J23382698+0448050,IRAS 23359+0431,MCG +01-60-016,PGC 071982,UGC 12715;;Contains the probable HII region UM 001.;B-Mag taken from LEDA. -IC1504;G;23:41:19.49;+04:01:02.9;Psc;1.64;0.49;92;14.50;;11.02;10.29;9.94;23.39;Sb;;;;;;;;2MASX J23411948+0401028,IRAS 23387+0344,MCG +01-60-020,PGC 072117,SDSS J234119.48+040103.1,UGC 12734;;; -IC1505;G;23:41:37.11;-03:33:54.3;Aqr;0.60;0.60;150;14.67;;11.12;10.34;10.16;22.45;E;;;;;;;;2MASX J23413712-0333536,MCG -01-60-020,PGC 072133;;;B-Mag taken from LEDA. -IC1506;G;23:44:48.41;+04:44:08.4;Psc;0.91;0.56;135;15.40;;11.98;11.31;11.02;24.04;S0;;;;;;;;2MASX J23444842+0444079,MCG +01-60-029,PGC 072291;;; -IC1507;G;23:45:33.17;+01:41:19.5;Psc;1.29;0.47;130;14.80;;11.53;10.80;10.61;23.99;S0-a;;;;;;;;2MASX J23453318+0141193,MCG +00-60-044,PGC 072330,UGC 12770;;; -IC1508;G;23:45:55.07;+12:03:42.3;Peg;0.76;0.37;169;14.60;;11.24;10.56;10.26;21.49;Scd;;;;;;;;2MASX J23455505+1203422,IRAS 23433+1147,MCG +02-60-016,PGC 072345,SDSS J234555.08+120342.5,UGC 12773;;; -IC1509;G;23:47:16.68;-15:18:23.1;Aqr;1.29;0.22;11;15.21;;12.18;11.39;11.25;23.11;Sc;;;;;;;;2MASX J23471669-1518230,MCG -03-60-014,PGC 072392;;;B-Mag taken from LEDA. -IC1510;GGroup;23:50:32.80;+02:04:24.0;Psc;1.00;;;;;;;;;;;;;;;;;MCG +00-60-053;;;Diameter of the group inferred by the author. -IC1510 NED01;G;23:50:32.50;+02:04:29.0;Psc;0.51;0.35;139;16.96;;;;;24.25;;;;;;;;;MCG +00-60-053 NED01,PGC 1215207;;;B-Mag taken from LEDA. -IC1510 NED02;G;23:50:33.04;+02:04:20.5;Psc;0.68;0.49;16;15.20;;12.34;11.62;11.18;23.23;;;;;;;;;2MASX J23503305+0204205,MCG +00-60-053 NED02,PGC 072589;;; -IC1511;*;23:51:00.45;+27:03:39.1;Peg;;;;;;;;;;;;;;;;;;;;; -IC1512;*;23:51:01.43;+27:01:37.7;Peg;;;;;;;;;;;;;;;;;;;;; -IC1513;G;23:53:29.38;+11:19:03.4;Peg;1.10;0.40;106;15.10;;11.96;11.23;11.04;23.45;Sab;;;;;;;;2MASX J23532941+1119032,MCG +02-60-024,PGC 072773,UGC 12832;;; -IC1514;Dup;23:54:16.56;-13:35:11.2;Aqr;;;;;;;;;;;;;;;7776;;;;;; -IC1515;G;23:56:03.91;-00:59:18.7;Psc;1.31;1.08;4;14.80;;11.41;10.74;10.43;23.58;Sb;;;;;;;;2MASX J23560391-0059182,MCG +00-01-004,PGC 072922,SDSS J235603.90-005918.6,UGC 12848;;; -IC1516;G;23:56:07.09;-00:54:59.5;Psc;1.19;1.00;3;13.60;;11.16;10.51;10.18;23.11;Sbc;;;;;;;;2MASX J23560711-0054592,IRAS 23535-0111,MCG +00-01-006,PGC 072927,SDSS J235607.08-005459.4,SDSS J235607.09-005459.4,SDSS J235607.09-005459.5,UGC 12852;;; -IC1517;G;23:56:18.81;-00:18:20.2;Psc;1.01;0.75;172;14.80;;11.19;10.44;10.26;23.36;S0;;;;;;;;2MASX J23561882-0018205,MCG +00-01-008,PGC 072942,SDSS J235618.80-001820.1,SDSS J235618.81-001820.1,SDSS J235618.81-001820.2;;; -IC1518;G;23:57:06.12;+12:27:53.9;Peg;0.50;0.37;88;15.70;;12.55;11.73;11.60;23.21;S0;;;;;;;;2MASX J23570613+1227543,PGC 073011;;; -IC1519;G;23:57:08.37;+12:27:27.2;Peg;0.63;0.50;140;15.70;;12.34;11.68;11.40;23.68;E-S0;;;;;;;;2MASX J23570838+1227273,PGC 073010;;; -IC1520;G;23:57:54.46;-14:02:21.6;Cet;0.55;0.55;20;14.69;;12.46;11.89;11.47;22.12;Sc;;;;;;;;2MASX J23575445-1402216,IRAS 23553-1418,MCG -02-01-007,PGC 073057;;;B-Mag taken from LEDA. -IC1521;G;23:58:59.66;-07:08:48.4;Cet;0.92;0.55;108;15.17;;12.37;11.71;11.41;23.56;S0;;;;;;;;2MASX J23585964-0708484,LEDA 170418;;; -IC1522;G;23:59:03.45;+01:43:11.6;Psc;0.76;0.29;13;15.30;;12.03;11.34;11.04;23.26;Sb;;;;;;;;2MASX J23590344+0143115,MCG +00-01-012,PGC 073139;;; -IC1523;G;23:59:06.60;+06:52:23.0;Psc;0.36;0.26;15;16.28;;12.57;11.84;11.55;;;;;;;;5368;;2MASX J23590655+0652231,PGC 3091908;;;B-Mag taken from LEDA. -IC1524;Dup;23:59:10.72;-04:07:37.2;Psc;;;;;;;;;;;;;;;;1490;;;;; -IC1525;G;23:59:15.75;+46:53:22.8;And;1.79;1.24;26;13.30;;10.36;9.63;9.35;23.02;Sb;;;;;;;;2MASX J23591579+4653213,IRAS 23567+4636,MCG +08-01-016,PGC 073150,UGC 12883;;; -IC1526;G;00:01:31.52;+11:20:45.2;Peg;0.74;0.51;136;15.10;;12.10;11.46;11.17;22.85;Sc;;;;;;;;2MASX J00013148+1120465,IRAS 23589+1104,PGC 000117;;; -IC1527;G;00:02:21.60;+04:05:23.1;Psc;0.91;0.65;132;14.50;;11.88;11.28;10.95;23.80;Sa;;;;;;;;2MASX J00022165+0405230,MCG +01-01-012,PGC 000164;;; -IC1528;G;00:05:05.37;-07:05:36.3;Cet;2.15;0.85;73;13.50;;11.15;10.53;10.16;23.32;SBb;;;;;;;;2MASX J00050536-0705363,IRAS 00025-0722,MCG -01-01-028,PGC 000312;;MCG RA is -0.5 minutes in error.; -IC1529;G;00:05:13.17;-11:30:10.1;Cet;1.15;0.94;22;14.00;;11.09;10.54;10.14;23.54;S0;;;;;;;;2MASX J00051322-1130093,MCG -02-01-019,PGC 000364;;; -IC1530;Dup;00:07:19.53;+32:36:33.3;And;;;;;;;;;;;;;;;7831;;;;;; -IC1531;G;00:09:35.58;-32:16:37.2;Scl;1.89;1.31;124;13.48;;10.45;9.89;9.55;23.60;E-S0;;;;;;;;2MASX J00093552-3216365,ESO 349-035,ESO-LV 349-0350,MCG -05-01-038,PGC 000684;;; -IC1532;G;00:09:52.80;-64:22:19.5;Tuc;1.83;0.54;73;14.83;;;;;23.90;SBbc;;;;;;;;ESO 078-017,ESO-LV 78-0170,PGC 000695;;; -IC1533;Other;00:10:36.41;-07:24:54.5;Cet;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position. Is IC 1533 = MCG -01-01-044?"; -IC1534;G;00:13:45.44;+48:09:04.9;And;1.02;0.44;70;15.20;;11.71;10.97;10.69;23.85;S0;;;;;;;;2MASX J00134544+4809044,MCG +08-01-028,PGC 000910,UGC 00125;;; -IC1535;G;00:13:57.34;+48:09:28.7;And;0.99;0.29;170;15.20;;11.79;10.96;10.62;23.02;Sb;;;;;;;;2MASX J00135733+4809285,MCG +08-01-030,PGC 000922,UGC 00131;;; -IC1536;G;00:14:19.01;+48:08:35.8;And;0.81;0.53;172;15.50;;11.88;11.08;10.84;23.85;E;;;;;;;;2MASX J00141901+4808355,MCG +08-01-032,PGC 000949;;; -IC1537;Other;00:15:51.27;-39:15:43.5;Scl;1.32;0.59;80;16.04;;;;;;;;;;;;;;ESO 294-001,PGC 001050;;Eastern portion of NGC 0055.;Diameters taken from SIMBAD. -IC1538;Other;00:18:01.56;+30:01:45.4;And;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1539;Dup;00:18:22.54;+30:04:46.5;And;;;;;;;;;;;;;;;0070;;;;;; -IC1540;G;00:19:48.75;+23:46:21.4;And;0.97;0.41;28;14.90;;11.77;11.04;10.71;22.98;SBb;;;;;;;;2MASX J00194874+2346214,MCG +04-01-050,PGC 001276,UGC 00186;;; -IC1541;G;00:20:01.96;+21:59:59.1;And;0.72;0.28;36;15.50;;11.87;11.23;10.93;23.55;S0;;;;;;;;2MASX J00200193+2159588,PGC 001287;;; -IC1542;G;00:20:41.19;+22:35:32.8;And;0.53;0.43;70;15.00;;13.40;12.88;12.83;22.77;;;;;;;;;2MASX J00204118+2235327,IRAS 00181+2219,MCG +04-02-001,PGC 001328;;; -IC1543;G;00:20:55.45;+21:51:57.7;And;0.80;0.68;36;14.20;;11.75;11.13;10.90;22.52;Sbc;;;;;;;;2MASX J00205544+2151577,IRAS 00183+2135,MCG +04-02-002,PGC 001333,UGC 00198;;; -IC1544;G;00:21:17.50;+23:05:27.1;And;1.10;0.77;143;14.60;;12.02;11.58;11.25;23.45;SABc;;;;;;;;2MASX J00211748+2305271,MCG +04-02-006,PGC 001362,UGC 00204;;; -IC1545;G;00:21:20.91;+21:59:00.4;And;0.45;0.36;14;16.67;;13.08;12.34;12.09;23.49;;;;;;;;;2MASX J00212088+2159001,LEDA 1661236;;;B-Mag taken from LEDA. -IC1546;Dup;00:21:29.03;+22:30:21.1;And;;;;;;;;;;;;;;;0085B;;;;;; -IC1547;Other;00:21:35.69;+22:30:23.2;And;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1548;G;00:21:55.16;+22:00:22.7;And;0.68;0.42;78;15.60;;12.04;11.33;11.05;23.63;E;;;;;;;;2MASX J00215517+2200231,PGC 001407;;; -IC1549;G;00:22:49.83;+06:57:51.4;Psc;1.45;1.45;150;14.90;;11.55;10.79;10.57;24.52;S0-a;;;;;;;;2MASX J00224987+0657515,MCG +01-02-005,PGC 001464,SDSS J002249.85+065751.5,UGC 00218;;; -IC1550;G;00:24:27.65;+38:11:08.3;And;0.91;0.91;150;15.10;;11.25;10.58;10.36;23.59;S0;;;;;;;;2MASX J00242766+3811085,MCG +06-02-002,PGC 001533;;; -IC1551;G;00:27:35.49;+08:52:39.0;Psc;2.42;0.68;3;15.00;;12.08;11.41;11.06;24.53;SBc;;;;;;;;2MASX J00273551+0852392,IRAS 00250+0836,MCG +01-02-013,PGC 001700,UGC 00268;;; -IC1552;G;00:29:43.71;+21:28:36.6;Psc;0.94;0.27;126;15.40;;12.05;11.33;10.92;22.99;Sc;;;;;;;;2MASX J00294368+2128365,IRAS 00271+2111,MCG +03-02-015,PGC 001817,UGC 00297;;; -IC1553;G;00:32:40.12;-25:36:27.1;Scl;1.36;0.34;15;14.31;;11.84;11.06;10.69;22.66;Scd;;;;;;;;2MASX J00324011-2536271,ESO 473-026,ESO-LV 473-0260,IRAS 00301-2553,MCG -04-02-017,PGC 001977;;; -IC1554;G;00:33:07.35;-32:15:30.1;Scl;1.38;0.80;27;13.59;;11.04;10.39;10.14;23.20;S0-a;;;;;;;;2MASX J00330736-3215301,ESO 350-033,ESO-LV 350-0330,IRAS 00306-3232,MCG -05-02-015,PGC 002000;;; -IC1555;G;00:34:32.64;-30:01:04.3;Scl;1.31;0.74;129;14.39;;12.76;12.11;11.84;23.13;Scd;;;;;;;;ESO 410-021,ESO-LV 410-0210,MCG -05-02-019,PGC 002071;;; -IC1556;G;00:35:02.91;-09:22:06.3;Cet;0.84;0.34;40;15.21;;12.88;12.12;11.81;23.05;Sb;;;;;;;;2MASX J00350290-0922063,IRAS 00325-0938,MCG -02-02-057,PGC 002086,SDSS J003502.90-092206.2,SDSS J003502.91-092206.3;;;B-Mag taken from LEDA. -IC1557;G;00:35:34.52;-02:52:35.1;Cet;0.69;0.24;116;15.54;;12.32;11.68;11.28;23.45;S0-a;;;;;;;;2MASX J00353454-0252355,MCG -01-02-037,PGC 002130;;;B-Mag taken from LEDA. -IC1558;G;00:35:47.07;-25:22:27.9;Scl;2.80;1.52;143;13.21;12.22;;;;23.30;SABm;;;;;;;;ESO 474-002,ESO-LV 474-0020,MCG -04-02-024,PGC 002142,TYC 6421-1932-1,UGCA 008;;; -IC1559;Dup;00:36:52.33;+23:59:05.9;And;;;;;;;;;;;;;;;0169A;;;;;; -IC1560;Other;00:37:39.23;+02:40:17.6;Psc;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position. Is IC 1560 identical to NGC 0164?"; -IC1561;G;00:38:32.49;-24:20:23.8;Cet;1.41;0.51;103;14.92;;13.04;12.33;12.02;23.81;SBb;;;;;;;;2MASX J00383248-2420237,ESO 474-008,ESO-LV 474-0080,MCG -04-02-029,PGC 002305;;; -IC1562;G;00:38:33.96;-24:16:26.6;Cet;1.50;1.41;49;13.56;;11.22;10.64;10.27;23.18;SBc;;;;;;;;2MASX J00383395-2416267,ESO 474-009,ESO-LV 474-0090,IRAS 00360-2432,MCG -04-02-030,PGC 002308;;; -IC1563;Dup;00:39:00.24;-09:00:52.5;Cet;;;;;;;;;;;;;;;0191A;;;;;; -IC1564;G;00:39:05.13;+06:01:15.8;Psc;1.01;0.50;84;14.80;;12.49;11.67;11.44;23.07;SABb;;;;;;;;2MASX J00390512+0601159,MCG +01-02-044,PGC 002342,UGC 00399;;; -IC1565;G;00:39:26.27;+06:44:03.3;Psc;1.80;1.76;20;14.41;;10.92;10.33;9.93;24.65;E;;;;;;1567;;2MASX J00392632+0644028,MCG +01-02-047,PGC 002372,UGC 00410;;The identification as IC 1567 is not certain.; -IC1566;G;00:39:33.36;+06:48:54.5;Psc;0.91;0.74;125;15.40;;11.71;10.97;10.69;24.11;E;;;;;;;;2MASX J00393335+0648541,LEDA 073393,MCG +01-02-048;;; -IC1567;Dup;00:39:26.27;+06:44:03.3;Psc;;;;;;;;;;;;;;;;1565;;;;; -IC1568;G;00:39:55.96;+06:50:54.9;Psc;1.15;0.87;76;15.60;;11.44;10.73;10.26;24.52;S0;;;;;;;;2MASX J00395598+0650550,MCG +01-02-052,PGC 002404;;; -IC1569;G;00:40:28.02;+06:43:10.9;Psc;0.72;0.60;12;15.50;;12.14;11.40;11.19;23.73;S0;;;;;;;;2MASX J00402804+0643114,MCG +01-02-053,PGC 002430;;; -IC1570;G;00:40:34.10;+06:45:09.6;Psc;0.58;0.27;4;16.24;;13.27;12.51;12.19;23.88;S0-a;;;;;;;;2MASX J00403408+0645094,LEDA 073426;;; -IC1571;G;00:40:37.85;-00:19:50.4;Cet;1.05;0.84;14;14.80;;12.00;11.22;11.15;23.30;Sb;;;;;;;;2MASX J00403787-0019501,MCG +00-02-121,PGC 002440,SDSS J004037.85-001950.4,UGC 00432;;; -IC1572;Other;00:41:12.10;+16:14:15.0;Psc;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1573;G;00:42:10.46;-23:35:29.7;Cet;1.29;0.17;68;16.68;;13.34;12.59;12.10;24.29;Sc;;;;;;;;2MASX J00421046-2335294,ESO 474-013,ESO-LV 474-0130,MCG -04-02-036,PGC 002521;;; -IC1574;G;00:43:03.82;-22:14:48.8;Cet;1.83;0.70;176;14.73;14.35;;;;23.67;IB;;;;;;;;ESO 474-018,ESO-LV 474-0180,MCG -04-02-043,PGC 002578,UGCA 009;;; -IC1575;G;00:43:33.36;-04:07:04.2;Cet;0.87;0.77;140;16.22;14.85;10.77;10.02;9.77;22.79;Sa;;;;;;;;2MASX J00433334-0407045,PGC 002601;;; -IC1576;G;00:44:14.15;-25:06:33.4;Scl;0.76;0.46;143;15.67;;12.95;12.31;12.47;23.24;Sc;;;;;;;;2MASX J00441416-2506332,ESO 474-020,ESO-LV 474-0200,MCG -04-02-045,PGC 002630;;; -IC1577;Dup;00:43:34.47;-08:11:11.4;Cet;;;;;;;;;;;;;;;;0048;;;;; -IC1578;G;00:44:25.93;-25:04:36.6;Scl;0.84;0.37;18;15.29;;12.52;11.83;11.66;23.05;Sb;;;;;;;;ESO 474-021,ESO-LV 474-0210,IRAS 00419-2521,MCG -04-03-001,PGC 002637;;; -IC1579;G;00:45:32.45;-26:33:55.6;Scl;1.02;0.53;6;14.99;;12.42;11.74;11.77;22.99;SBc;;;;;;;;2MASX J00453246-2633557,ESO 474-022,ESO-LV 474-0220,MCG -05-03-002,PGC 002667;;; -IC1580;Other;00:46:21.33;+29:56:11.8;And;;;;;;;;;;;;;;;;;;;;This is three Galactic stars.; -IC1581;G;00:45:46.32;-25:55:12.6;Scl;1.00;0.20;48;16.24;;13.87;12.99;12.63;23.66;Sc;;;;;;;;2MASX J00454630-2555126,ESO 474-023,ESO-LV 474-0230,PGC 002676;;; -IC1582;G;00:46:16.82;-24:16:45.6;Cet;1.21;0.30;47;15.85;;12.91;12.21;11.83;23.84;Sbc;;;;;;;;2MASX J00461681-2416456,ESO 474-024,ESO-LV 474-0240,MCG -04-03-003,PGC 002701;;; -IC1583;G;00:47:10.30;+23:04:25.8;And;0.60;0.46;28;15.00;;11.98;11.34;10.99;23.05;S0-a;;;;;;;;2MASX J00471028+2304257,MCG +04-03-001,PGC 002760;;; -IC1584;G;00:47:18.58;+27:49:39.6;And;1.38;1.20;95;15.00;;11.09;10.00;9.99;24.35;SABb;;;;;;;;2MASX J00471856+2749398,MCG +05-03-004,PGC 002766,UGC 00489;;; -IC1585;G;00:47:14.30;+23:03:12.8;And;0.75;0.55;110;14.90;;11.70;10.96;10.83;23.42;S0;;;;;;;;2MASX J00471427+2303127,MCG +04-03-002,PGC 002764;;; -IC1586;G;00:47:56.32;+22:22:22.4;And;0.28;0.23;20;15.00;;12.92;12.23;11.98;;;;;;;;;;2MASX J00475630+2222225,IRAS 00452+2205,PGC 002813;;; -IC1587;G;00:48:43.30;-23:33:42.0;Cet;1.16;0.44;30;15.57;;12.18;11.54;11.25;24.50;S0;;;;;;;;2MASX J00484328-2333420,ESO 474-031,ESO-LV 474-0310,MCG -04-03-015,PGC 002852;;; -IC1588;G;00:50:57.71;-23:33:28.6;Cet;0.69;0.35;153;16.37;;13.26;12.62;12.23;24.11;S0-a;;;;;;;;2MASX J00505771-2333287,ESO 474-033,ESO-LV 474-0330,PGC 002965;;; -IC1589;**;00:51:59.36;-34:25:19.4;Scl;;;;;;;;;;;;;;;;;;;;The IC identification is not certain.; -IC1590;Cl+N;00:52:50.20;+56:38:34.9;Cas;6.30;;;;;;;;;;;;;;;;;MWSC 0085;;Involved with the nebula NGC 281.; -IC1591;Dup;00:52:06.57;-22:40:48.5;Cet;;;;;;;;;;;;;;;0276;;;;;; -IC1592;G;00:53:27.04;+05:46:13.4;Psc;0.86;0.68;167;15.40;;12.50;12.04;11.86;23.60;Sbc;;;;;;;;2MASX J00532704+0546135,PGC 003139,UGC 00543;;; -IC1593;**;00:54:39.63;+32:31:10.1;Psc;;;;;;;;;;;;;;;;;;;;; -IC1594;G;00:53:45.33;-47:38:50.9;Phe;1.25;0.39;129;15.18;;12.32;11.60;11.29;23.55;SABb;;;;;;;;2MASX J00534533-4738508,ESO 195-012,ESO-LV 195-0120,PGC 003161;;; -IC1595;G;00:53:47.05;-45:11:11.9;Phe;1.45;0.26;12;15.38;;13.42;12.68;12.07;23.77;Sb;;;;;;;;2MASX J00534665-4511268,2MASX J00534703-4511118,PGC 003162;;;B-Mag taken from LEDA. -IC1596;G;00:54:42.83;+21:31:21.5;Psc;1.88;0.75;118;15.10;;12.21;11.70;11.43;24.53;Sab;;;;;;;;2MASX J00544282+2131215,MCG +03-03-007,PGC 003219,UGC 00550;;; -IC1597;G;00:53:32.09;-58:06:25.7;Tuc;1.61;0.42;152;15.01;;12.59;11.82;11.64;23.79;SBb;;;;;;;;2MASX J00533211-5806256,ESO 112-010,ESO-LV 112-0100,PGC 003144;;; -IC1598;G;00:54:41.77;+05:46:25.7;Psc;1.01;0.51;3;15.00;;11.52;10.82;10.53;23.41;Sa;;;;;;;;2MASX J00544177+0546259,MCG +01-03-007,PGC 003217,UGC 00553;;; -IC1599;G;00:54:32.81;-23:29:41.7;Cet;1.19;0.28;107;15.52;;12.23;11.47;11.15;23.45;Sbc;;;;;;;;2MASX J00543280-2329415,ESO 474-042,ESO-LV 474-0420,MCG -04-03-030,PGC 003210;;; -IC1600;G;00:55:04.24;-23:31:29.6;Cet;0.80;0.47;92;15.59;;12.81;12.04;11.76;23.31;Sbc;;;;;;;;2MASX J00550423-2331296,ESO 474-043,ESO-LV 474-0430,MCG -04-03-031,PGC 003253;;; -IC1601;G;00:55:34.84;-24:09:12.2;Cet;0.92;0.44;116;14.50;;11.61;10.89;10.60;22.45;Sbc;;;;;;;;2MASX J00553485-2409121,ESO 474-044,ESO-LV 474-0440,IRAS 00531-2425,MCG -04-03-032,PGC 003287;;; -IC1602;G;00:55:51.89;-09:59:08.4;Cet;1.08;0.80;149;15.44;;11.48;10.80;10.40;24.35;E;;;;;;;;2MASX J00555190-0959088,MCG -02-03-047,PGC 003306,SDSS J005551.88-095908.1,SDSS J005551.88-095908.3,SDSS J005551.89-095908.3,SDSS J005551.89-095908.4;;;B-Mag taken from LEDA. -IC1603;G;00:56:59.68;-45:24:46.6;Phe;1.41;0.55;112;14.62;;12.56;11.88;11.83;23.35;Sc;;;;;;;;2MASX J00565967-4524466,ESO 243-014,ESO-LV 243-0140,PGC 003401;;; -IC1604;Other;00:57:58.95;-16:13:48.2;Cet;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1605;G;00:57:37.64;-48:54:09.6;Phe;1.68;1.35;143;13.82;;11.17;10.55;10.21;23.41;SBbc;;;;;;;;2MASX J00573759-4854095,ESO 195-019,ESO-LV 195-0190,PGC 003436;;; -IC1606;Other;00:58:22.17;-12:10:42.6;Cet;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1607;G;00:58:48.86;+00:35:14.1;Cet;0.94;0.76;138;14.40;;11.95;11.24;11.08;22.89;Sc;;;;;;;;2MASX J00584882+0035137,MCG +00-03-047,PGC 003512,SDSS J005848.82+003512.1,SDSS J005848.85+003514.1,SDSS J005848.86+003514.0,SDSS J005848.86+003514.1,UGC 00611;;Confused HIPASS source; -IC1608;G;00:59:24.37;-34:19:44.2;Scl;2.05;0.68;171;13.70;;10.37;9.70;9.49;23.90;S0-a;;;;;;;;2MASX J00592434-3419439,ESO 351-027,ESO-LV 351-0270,MCG -06-03-013,PGC 003549;;; -IC1609;G;00:59:46.62;-40:20:00.8;Phe;1.13;0.99;44;13.59;;10.53;9.83;9.56;22.73;S0;;;;;;;;2MASX J00594662-4020007,ESO 295-026,ESO-LV 295-0260,MCG -07-03-004,PGC 003567;;; -IC1610;G;01:01:42.58;-15:34:04.0;Cet;1.59;1.41;110;13.86;;10.80;10.12;9.84;23.60;S0-a;;;;;;;;2MASX J01014259-1534041,MCG -03-03-020,PGC 003681;;;B-Mag taken from LEDA. -IC1611;OCl;00:59:47.90;-72:19:56.4;Tuc;1.50;1.50;;12.26;11.96;;;;;;;;;;;;;ESO 029-027;;This is an open cluster in the Small Magellanic Cloud.; -IC1612;OCl;00:59:58.61;-72:22:14.6;Tuc;1.20;0.80;20;12.84;12.31;;;;;;;;;;;;;ESO 029-028;;This is an open cluster in the Small Magellanic Cloud.; -IC1613;G;01:04:47.79;+02:07:04.0;Cet;18.32;17.14;50;10.42;10.01;;;;25.00;I;;;;;;;;C 051,MCG +00-03-070,PGC 003844,UGC 00668;;Position is for the center of the bar.; -IC1614;G;01:05:06.96;+33:11:23.3;Psc;0.62;0.51;60;17.62;;12.54;11.69;11.52;24.61;;;;;;;;;2MASX J01050697+3311235,LEDA 2025913;;;B-Mag taken from LEDA. -IC1615;G;01:04:07.04;-51:07:59.0;Phe;1.33;0.60;148;14.29;;11.40;10.70;10.43;23.05;SBbc;;;;;;;;2MASX J01040703-5107590,ESO 195-027,ESO-LV 195-0270,IRAS 01019-5124,PGC 003812;;; -IC1616;G;01:04:56.18;-27:25:45.7;Scl;1.63;1.50;5;13.35;12.89;10.82;10.14;9.87;23.12;Sbc;;;;;;;;2MASX J01045619-2725454,ESO 412-004,ESO-LV 412-0040,IRAS 01025-2741,MCG -05-03-022,PGC 003846;;; -IC1617;G;01:04:16.80;-51:01:58.1;Phe;1.35;0.49;124;14.59;;11.55;10.85;10.53;23.73;S0-a;;;;;;;;2MASX J01041679-5101580,ESO 195-028,ESO-LV 195-0280,PGC 003818;;; -IC1618;G;01:05:55.98;+32:24:43.8;Psc;0.86;0.46;156;15.60;;12.15;11.35;11.26;23.98;S0;;;;;;;;2MASX J01055601+3224437,PGC 003899,UGC 00671;;; -IC1619;G;01:07:22.44;+33:04:02.2;Psc;0.75;0.60;93;15.00;;11.78;11.13;10.75;23.47;S0;;;;;;;;2MASX J01072245+3304021,MCG +05-03-054,PGC 003975;;; -IC1620;G;01:07:14.25;+13:57:18.4;Psc;0.96;0.68;87;14.20;;12.28;11.61;11.23;23.09;Sbc;;;;;;;;2MASX J01071423+1357180,MCG +02-03-034,PGC 003960,SDSS J010714.24+135718.4,SDSS J010714.25+135718.4,UGC 00681;;; -IC1621;G;01:06:22.63;-46:43:31.8;Phe;1.38;0.43;3;14.61;;;;;23.16;Sbc;;;;;;;;ESO 243-028,ESO-LV 243-0280,PGC 003915;;; -IC1622;G;01:07:36.67;-17:32:19.1;Cet;0.70;0.56;160;14.65;;11.94;11.35;10.92;22.46;Sab;;;;;;;;2MASX J01073666-1732190,ESO 541-022,ESO-LV 541-0220,MCG -03-04-001,PGC 003997;;; -IC1623;GPair;01:07:47.18;-17:30:25.3;Cet;1.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1623A;G;01:07:46.70;-17:30:26.0;Cet;1.05;0.87;63;14.26;;;;;22.95;S?;;;;;;;;IRAS 01053-1746,MCG -03-04-003,PGC 004007;;;B-Mag taken from LEDA. -IC1623B;G;01:07:47.56;-17:30:25.1;Cet;0.80;0.60;12;15.04;;11.27;9.97;10.03;22.44;I;;;;;;;;2MASX J01074756-1730250,ESO-LV 541-0231,MCG -03-04-004,PGC 004008;;The 2MASX position applies to both components.; -IC1624;OCl;01:05:21.84;-72:02:33.1;Tuc;0.90;0.90;;12.60;12.42;12.67;12.33;12.60;;;;;;;;;;2MASX J01052189-7202333,ESO 051-017;;This is an open cluster in the Small Magellanic Cloud.; -IC1625;G;01:07:42.61;-46:54:27.3;Phe;1.80;1.41;9;13.11;;10.26;9.53;9.29;23.03;E-S0;;;;;;;;2MASX J01074258-4654272,ESO 243-033,ESO-LV 243-0330,PGC 004001;;; -IC1626;OCl;01:06:13.43;-73:17:46.0;Tuc;1.00;1.00;;14.01;13.82;;;;;;;;;;;;;ESO 029-030;;; -IC1627;G;01:08:10.84;-46:05:38.6;Phe;1.62;0.64;139;13.71;;10.61;10.03;9.63;23.01;SBbc;;;;;;;;2MASX J01081084-4605385,ESO 243-034,ESO-LV 243-0340,PGC 004027;;The APM position is southeast of the center of the galaxy.; -IC1628;G;01:08:47.53;-28:34:56.4;Scl;1.65;1.53;112;13.50;;10.38;9.64;9.41;23.49;E;;;;;;;;2MASX J01084753-2834565,ESO 412-007,ESO-LV 412-0070,MCG -05-03-027,PGC 004075;;; -IC1629;G;01:09:18.20;+02:34:02.9;Cet;0.78;0.63;56;15.70;;12.02;11.11;11.10;24.06;;;;;;;;;2MASX J01091820+0234035,PGC 004122;;; -IC1630;G;01:08:16.77;-46:45:14.5;Phe;1.65;0.28;64;15.18;;12.74;11.97;11.46;23.82;Sb;;;;;;;;2MASX J01081675-4645145,ESO 243-036,ESO-LV 243-0360,PGC 004036;;; -IC1631;G;01:08:44.87;-46:28:32.9;Phe;0.81;0.52;85;14.22;;12.19;11.49;11.17;22.34;Sab;;;;;;;;2MASX J01084486-4628327,ESO 243-040,ESO-LV 243-0400,IRAS 01065-4644,PGC 004068;;; -IC1632;G;01:10:43.38;+17:40:59.7;Psc;0.23;0.22;5;16.48;;13.41;12.55;12.18;;E;;;;;;;;2MASX J01104339+1740598,PGC 004205;;; -IC1633;G;01:09:55.58;-45:55:52.3;Phe;2.90;2.16;97;12.23;;9.36;8.66;8.40;23.73;E;;;;;;;;2MASX J01095559-4555523,ESO 243-046,ESO-LV 243-0460,PGC 004149;;The APM position is northeast of the center of the galaxy.; -IC1634;G;01:11:03.79;+17:39:47.0;Psc;0.83;0.72;153;15.66;;;;;24.14;E;;;;;;;;MCG +03-04-008,PGC 004232,UGC 00740;;;B-Mag taken from LEDA. -IC1635;G;01:11:03.53;+17:39:07.3;Psc;1.15;0.65;148;17.20;;11.44;10.75;10.36;24.58;E;;;;;;;;2MASX J01110354+1739071,MCG +03-04-009,PGC 004231,UGC 00739;;; -IC1636;G;01:11:34.96;+33:21:55.4;Psc;0.55;0.44;103;14.90;;12.06;11.40;11.15;22.41;S0;;;;;;;;2MASX J01113747+3321151,PGC 004280;;Possibly an interacting double galaxy?; -IC1637;G;01:11:01.14;-30:26:18.7;Scl;1.69;1.30;90;13.59;;10.94;10.33;9.93;23.18;SBc;;;;;;;;2MASX J01110112-3026186,ESO 412-010,ESO-LV 412-0100,IRAS 01086-3042,MCG -05-04-003,PGC 004227;;; -IC1638;G;01:12:21.81;+33:21:52.3;Psc;0.75;0.68;105;14.90;;11.52;10.81;10.50;23.23;E;;;;;;;;2MASX J01122179+3321515,MCG +05-03-082,PGC 004338;;; -IC1639;G;01:11:46.55;-00:39:51.7;Cet;0.76;0.70;100;14.20;;11.58;10.90;10.63;22.64;E;;;;;;;;2MASX J01114656-0039520,MCG +00-04-031,PGC 004292,SDSS J011146.55-003951.6,UGC 00750;;; -IC1640;G;01:11:51.30;-00:37:49.3;Cet;0.18;0.18;20;15.10;;12.67;11.96;11.75;20.56;Sb;;;;;;;;2MASX J01115130-0037492,PGC 004299;;; -IC1641;OCl;01:09:39.19;-71:46:08.3;Tuc;0.75;0.65;40;15.12;14.99;;;;;;;;;;;;;ESO 051-021;;This is an open cluster in the Small Magellanic Cloud.; -IC1643;G;01:12:08.63;-00:24:36.7;Cet;0.90;0.67;79;15.40;;12.08;11.42;11.35;23.54;SBa;;;;;;;;2MASX J01120864-0024372,MCG +00-04-033,PGC 004328,SDSS J011208.63-002436.7,SDSS J011208.63-002436.8,SDSS J011208.63-002436.9;;; -IC1644;HII;01:09:13.01;-73:11:38.8;Tuc;0.80;0.65;40;;11.70;12.01;11.92;11.40;;;;;;;;;;2MASX J01091306-7311389,ESO 029-035,IRAS 01077-7327;;Within boundaries of SMC.; -IC1645;G;01:12:27.34;+15:45:00.3;Psc;0.86;0.77;11;15.50;;11.96;11.30;10.97;23.95;E;;;;;;;;2MASX J01122734+1545000,LEDA 095507,MCG +02-04-008,SDSS J011227.33+154500.2,SDSS J011227.34+154500.3;;; -IC1646;G;01:12:43.83;+15:42:28.1;Psc;0.65;0.61;17;15.30;;13.38;12.75;12.49;23.48;SABc;;;;;;;;2MASX J01124382+1542281,MCG +02-04-009,PGC 004357,SDSS J011243.82+154228.1,SDSS J011243.83+154228.1;;; -IC1647;G;01:13:14.61;+38:53:07.0;And;0.90;0.40;40;15.20;;12.91;12.36;11.99;23.19;Sc;;;;;;;;2MASX J01131461+3853068,MCG +06-03-024,PGC 004390;;; -IC1648;G;01:13:42.12;+33:13:05.6;Psc;0.40;0.40;155;15.00;;12.18;11.33;11.18;21.91;S0;;;;;;;;2MASX J01134212+3313052,PGC 004417;;; -IC1649;G;01:11:50.94;-55:51:26.4;Phe;1.90;0.31;136;14.71;;11.59;10.79;10.51;23.55;Sbc;;;;;;;;2MASX J01115093-5551265,ESO 151-030,ESO-LV 151-0300,PGC 004298;;The APMUKS position applies to the southeastern end of the galaxy.; -IC1650;G;01:12:19.09;-50:24:06.2;Phe;1.32;0.65;62;14.36;;11.49;10.77;10.50;23.22;SBb;;;;;;;;2MASX J01121907-5024062,ESO 195-034,ESO-LV 195-0340,IRAS 01101-5039,PGC 004334;;; -IC1651;Other;01:13:27.56;+02:04:09.0;Cet;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC1652;G;01:14:56.26;+31:56:54.6;Psc;1.32;0.17;170;14.30;;11.39;10.65;10.46;23.21;S0-a;;;;;;;;2MASX J01145624+3156546,MCG +05-04-003,PGC 004498,UGC 00792;;; -IC1653;Dup;01:15:07.59;+33:22:38.4;Psc;;;;;;;;;;;;;;;0443;;;;;; -IC1654;G;01:15:11.88;+30:11:41.4;Psc;0.99;0.46;50;14.30;;11.82;11.16;10.49;23.02;Sa;;;;;;;;2MASX J01151181+3011415,MCG +05-04-004,PGC 004520,UGC 00798;;; -IC1655;OCl;01:11:54.10;-71:19:50.2;Tuc;1.70;1.50;50;14.10;14.00;;;;;;;;;;;;;ESO 051-023;;This is an open cluster in the Small Magellanic Cloud.; -IC1656;Dup;01:15:37.63;+33:04:03.8;Psc;;;;;;;;;;;;;;;0447;;;;;; -IC1657;G;01:14:07.02;-32:39:03.2;Scl;2.32;0.52;170;13.16;;10.43;9.76;9.48;22.68;SBbc;;;;;;1663;;2MASX J01140701-3239032,ESO 352-024,ESO-LV 352-0240,IRAS 01117-3254,MCG -06-03-030,PGC 004440;;; -IC1658;Dup;01:15:49.60;+31:04:48.9;Psc;;;;;;;;;;;;;;;0444;;;;;; -IC1659;G;01:16:06.02;+30:20:56.7;Psc;0.83;0.74;18;14.60;;11.12;10.34;10.13;23.11;E;;;;;;;;2MASX J01160599+3020568,MCG +05-04-008,PGC 004584,UGC 00812;;; -IC1660;OCl;01:12:37.67;-71:45:42.3;Tuc;1.10;1.10;;13.68;13.51;;;;;;;;;;;;;ESO 051-024;;This is an open cluster in the Small Magellanic Cloud.; -IC1661;Dup;01:16:12.40;+33:03:50.8;Psc;;;;;;;;;;;;;;;0451;;;;;; -IC1662;OCl;01:12:32.75;-73:27:24.3;Tuc;1.20;1.20;;14.18;14.03;;;;;;;;;;;;;ESO 029-037;;This is an open cluster in the Small Magellanic Cloud.; -IC1663;Dup;01:14:07.02;-32:39:03.2;Scl;;;;;;;;;;;;;;;;1657;;;;; -IC1664;Other;01:14:18.51;-69:48:41.5;Tuc;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -IC1665;Other;01:17:44.91;+34:42:06.0;And;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC1666;G;01:19:53.39;+32:28:02.4;Psc;0.93;0.86;73;14.40;;11.85;11.19;10.74;22.94;Sc;;;;;;;;2MASX J01195340+3228025,IRAS 01170+3212,MCG +05-04-019,PGC 004782,UGC 00857;;; -IC1667;G;01:18:42.35;-17:03:00.8;Cet;0.96;0.68;45;15.41;;13.33;12.79;12.68;23.65;Sc;;;;;;;;2MASX J01184235-1703005,MCG -03-04-039,PGC 004694;;;B-Mag taken from LEDA. -IC1668;G;01:18:53.10;+33:10:23.0;Psc;0.34;0.24;50;15.70;;14.21;13.65;13.16;21.89;Sc;;;;;;;;2MASX J01185299+3310222,PGC 004712;;; -IC1669;G;01:20:06.84;+33:11:05.1;Psc;0.77;0.26;5;15.70;;13.15;12.67;12.06;24.02;;;;;;;;;2MASX J01200684+3311051,PGC 004802,SDSS J012006.81+331104.5;;; -IC1670;GPair;01:18:50.80;-16:48:10.0;Cet;3.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1670A;G;01:18:48.84;-16:48:12.4;Cet;1.60;0.56;114;14.77;;11.30;10.50;10.29;23.56;Sbc;;;;;;;;2MASX J01184882-1648125,IRAS 01163-1703,MCG -03-04-040,PGC 004711;;;B-Mag taken from LEDA. -IC1670B;G;01:18:52.85;-16:48:12.4;Cet;1.99;0.44;102;14.50;;10.97;10.28;10.05;24.67;S0;;;;;;;;2MASX J01185286-1648125,MCG -03-04-041,PGC 004707;;;B-Mag taken from LEDA. -IC1671;Dup;01:19:02.34;-17:03:37.4;Cet;;;;;;;;;;;;;;;;0093;;;;; -IC1672;G;01:20:38.20;+29:41:55.8;Psc;1.42;1.00;138;14.00;;11.21;10.52;10.23;23.19;Sab;;;;;;;;2MASX J01203820+2941555,MCG +05-04-024,PGC 004848,UGC 00872;;; -IC1673;G;01:20:46.35;+33:02:41.8;Psc;0.54;0.54;70;14.60;;11.84;11.21;10.93;22.33;E;;;;;;;;2MASX J01204631+3302412,PGC 004855;;; -IC1674;G;01:19:18.44;-50:57:48.9;Phe;0.52;0.29;23;14.94;;12.39;11.95;11.69;21.95;Sbc;;;;;;;;2MASX J01191842-5057488,ESO 196-002,ESO-LV 196-0020,ESO-LV 1960020,IRAS F01171-5113,PGC 004746;;;NED nominal entry for IC1674 points nothing. -IC1675;G;01:20:59.90;+34:14:55.0;And;0.72;0.23;58;14.30;;11.51;10.77;10.53;21.65;Sab;;;;;;;;2MASX J01205979+3414552,MCG +06-04-004,PGC 004876,UGC 00879;;; -IC1676;G;01:20:58.59;+30:15:34.1;Psc;0.59;0.44;179;15.70;;11.85;11.10;10.85;23.36;E;;;;;;;;2MASX J01205855+3015342,PGC 004871;;; -IC1677;G;01:21:07.09;+33:12:58.1;Psc;0.65;0.30;129;15.20;;;;;22.34;Sc;;;;;;;;MCG +05-04-025,PGC 004891;;; -IC1678;G;01:21:02.53;+05:33:37.9;Psc;0.34;0.24;145;15.50;;12.56;11.85;11.74;;;;;;;;;;2MASX J01210252+0533380,PGC 004875;;; -IC1679;G;01:21:44.60;+33:29:37.0;Psc;0.60;0.51;46;15.50;;12.50;11.78;11.45;23.13;S0-a;;;;;;;;2MASX J01214453+3329381,MCG +05-04-027,PGC 004944;;; -IC1680;G;01:21:51.20;+33:16:57.0;Psc;0.70;0.53;103;14.90;;11.94;11.32;11.00;23.01;S0-a;;;;;;;;2MASX J01215113+3316573,MCG +05-04-028,PGC 004956;;; -IC1681;G;01:21:21.32;+00:05:25.4;Cet;1.00;0.49;101;15.00;;13.28;12.60;12.36;23.04;Sd;;;;;;;;2MASX J01212131+0005257,MCG +00-04-097,PGC 004916,SDSS J012121.31+000525.4,SDSS J012121.32+000525.3,SDSS J012121.32+000525.4,SDSS J012121.32+000525.5,UGC 00894;;; -IC1682;G;01:22:13.30;+33:15:37.0;Psc;0.86;0.40;119;14.30;;11.63;10.94;10.62;22.50;Sab;;;;;;;;2MASX J01221322+3315373,MCG +05-04-032,PGC 004983,UGC 00912;;; -IC1683;G;01:22:39.00;+34:26:13.0;And;1.32;0.57;173;14.20;;11.42;10.75;10.40;22.90;Sb;;;;;;;;2MASX J01223886+3426132,IRAS 01197+3410,MCG +06-04-008,PGC 005008,UGC 00916;;; -IC1684;G;01:22:53.20;+33:24:49.0;Psc;0.68;0.45;124;15.77;;12.37;11.63;11.43;23.64;S0;;;;;;;;2MASX J01225306+3324491,LEDA 169770;;;B-Mag taken from LEDA. -IC1685;G;01:23:06.60;+33:11:22.0;Psc;0.40;0.30;165;;;13.15;12.32;11.97;;;;;;;;;;2MASX J01230660+3311212,PGC 169771;;; -IC1686;Dup;01:23:11.50;+33:27:38.0;Psc;;;;;;;;;;;;;;;0499;;;;;; -IC1687;G;01:23:19.10;+33:16:31.0;Psc;0.68;0.48;0;14.80;;11.63;10.96;10.81;22.88;S0-a;;;;;;;;2MASX J01231911+3316392,MCG +05-04-039,PGC 005074;;; -IC1688;G;01:23:28.10;+33:04:59.0;Psc;0.38;0.31;64;16.42;;13.21;12.44;12.29;23.18;E;;;;;;;;2MASX J01232801+3304592,LEDA 169774;;;B-Mag taken from LEDA. -IC1689;G;01:23:47.86;+33:03:19.2;Psc;0.62;0.41;171;14.80;;11.74;11.11;10.86;22.70;S0;;;;;;;;2MASX J01234783+3303192,MCG +05-04-046,PGC 005108;;; -IC1690;G;01:23:49.54;+33:09:22.6;Psc;0.49;0.26;130;14.90;;12.11;11.30;11.02;;S0;;;;;;;;2MASX J01234950+3309222,PGC 005110;;; -IC1691;G;01:24:25.80;+33:24:25.0;Psc;0.46;0.39;122;16.26;;13.01;12.33;12.39;23.25;S0-a;;;;;;;;2MASX J01242573+3324255,LEDA 169777;;;B-Mag taken from LEDA. -IC1692;G;01:24:39.56;+33:14:08.9;Psc;0.50;0.36;144;15.60;;12.72;12.03;11.77;22.93;S0;;;;;;;;2MASX J01243952+3314085,PGC 005203;;; -IC1693;G;01:24:02.40;-01:39:25.3;Cet;0.65;0.27;162;15.30;;12.65;11.99;11.45;23.73;S0-a;;;;;;;;2MASX J01240239-0139256,LEDA 073940;;; -IC1694;G;01:24:47.80;+01:36:25.8;Cet;1.12;0.71;4;14.90;;11.67;11.04;10.73;23.89;E;;;;;;;;2MASX J01244771+0136272,PGC 005221;;; -IC1695;G;01:25:07.63;+08:41:58.2;Psc;1.84;1.08;86;14.87;;11.23;10.42;10.17;25.25;E;;;;;;;;2MASX J01250764+0841576,MCG +01-04-055,PGC 005245,UGC 00977;;; -IC1696;G;01:24:52.36;-01:37:01.4;Cet;0.83;0.75;16;14.70;;11.45;10.75;10.47;23.10;E;;;;;;;;2MASX J01245237-0137014,MCG +00-04-122,PGC 005231,UGC 00973;;; -IC1697;G;01:25:02.94;+00:26:39.7;Cet;0.81;0.46;104;14.90;;11.94;11.17;10.90;23.27;S0-a;;;;;;;;2MASX J01250297+0026400,IRAS 01224+0011,MCG +00-04-125,PGC 005238,SDSS J012502.93+002639.6,SDSS J012502.94+002639.5,SDSS J012502.94+002639.7,UGC 00976;;; -IC1698;G;01:25:22.14;+14:50:19.4;Psc;1.87;0.76;117;14.43;;11.71;11.00;10.72;24.86;S0;;;;;;1699;;2MASX J01252213+1450198,MCG +02-04-040,PGC 005261,SDSS J012522.13+145019.3,SDSS J012522.14+145019.4,UGC 00983;;The identificaiton as IC 1699 is very uncertain.; -IC1699;Dup;01:25:22.14;+14:50:19.4;Psc;;;;;;;;;;;;;;;;1698;;;;; -IC1700;Dup;01:25:24.66;+14:51:52.6;Psc;;;;;;;;;;;;;;;;0107;;;;; -IC1701;G;01:25:50.40;+18:11:04.1;Psc;0.79;0.60;92;15.30;;11.52;10.83;10.58;23.66;E;;;;;;;;2MASX J01255044+1811038,MCG +03-04-035,PGC 005309,UGC 01002;;; -IC1702;G;01:25:56.29;+16:36:06.5;Psc;1.13;0.68;172;14.50;;11.70;10.99;10.75;23.05;Sc;;;;;;;;2MASX J01255630+1636066,MCG +03-04-036,PGC 005321,UGC 01005;;; -IC1703;Dup;01:26:25.15;-01:38:19.4;Cet;;;;;;;;;;;;;;;0557;;;;;; -IC1704;G;01:27:09.53;+14:46:34.6;Psc;1.08;0.76;162;14.20;;12.01;11.43;11.11;23.02;Sc;;;;;;;;2MASX J01270953+1446345,IRAS 01244+1431,MCG +02-04-052,PGC 005411,SDSS J012709.53+144634.5,SDSS J012709.53+144634.6,UGC 01027;;; -IC1705;G;01:26:44.84;-03:30:05.3;Cet;0.63;0.48;107;14.50;;11.06;10.36;10.09;23.86;E;;;;;;;;2MASX J01264483-0330054,MCG -01-04-048,PGC 005377;;; -IC1706;G;01:27:31.02;+14:49:10.4;Psc;0.50;0.48;85;15.40;;13.34;12.87;12.25;22.94;SBcd;;;;;;;;2MASX J01273097+1449107,PGC 005433,SDSS J012731.03+144911.2,SDSS J012731.03+144911.3,SDSS J012731.06+144911.3;;; -IC1707;Other;01:28:00.32;+37:07:01.4;And;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1708;OCl;01:24:56.08;-71:11:04.0;Hyi;1.20;1.20;;14.30;;;;;;;;;;;;;;2MASX J01245608-7111039,ESO 052-002;;This is an open cluster in the Small Magellanic Cloud.; -IC1709;Dup;01:27:57.01;-35:43:03.7;Scl;;;;;;;;;;;;;;;0568;;;;;; -IC1710;Dup;01:30:46.64;+21:26:25.5;Psc;;;;;;;;;;;;;;;0575;;;;;; -IC1711;G;01:30:55.26;+17:11:18.8;Psc;2.49;0.48;42;14.80;;10.68;9.84;9.54;24.32;Sb;;;;;;;;2MASX J01305526+1711185,IRAS 01282+1655,MCG +03-04-052,PGC 005643,UGC 01082;;; -IC1712;Dup;01:31:20.75;-06:52:05.0;Cet;;;;;;;;;;;;;;;0584;;;;;; -IC1713;*;01:32:43.80;+35:19:28.1;Tri;;;;;;;;;;;;;;;;;;;;; -IC1714;G;01:32:53.17;-13:01:29.9;Cet;0.62;0.50;94;16.57;;;;;24.26;;;;;;;;;PGC 944130;;; -IC1715;G;01:33:34.14;+12:35:07.6;Psc;0.65;0.50;95;14.50;;12.63;11.99;11.89;22.28;I;;;;;;;;2MASX J01333414+1235078,IRAS 01309+1219,MCG +02-05-002,PGC 005805,UGC 01115;;; -IC1716;*;01:33:26.85;-12:18:28.6;Cet;;;;;;;;;;;;;;;;;;;;; -IC1717;Other;01:32:30.33;-67:32:12.6;Hyi;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC1718;G;01:38:26.75;+33:21:59.5;Tri;0.68;0.38;120;15.00;;12.80;12.14;11.85;22.87;;;;;;;;;2MASX J01382676+3321594,PGC 006068;;; -IC1719;G;01:37:35.92;-33:55:26.7;Scl;1.49;1.08;173;13.79;;10.77;10.11;9.80;23.56;S0;;;;;;;;2MASX J01373593-3355265,ESO 353-027,ESO-LV 353-0270,MCG -06-04-059,PGC 006020;;; -IC1720;G;01:40:21.59;-28:54:45.9;Scl;1.21;0.91;155;13.71;;11.10;10.39;10.10;22.73;Sbc;;;;;;;;2MASX J01402160-2854459,ESO 413-019,ESO-LV 413-0190,IRAS 01380-2909,MCG -05-05-008,PGC 006180;;; -IC1721;G;01:41:24.44;+08:31:31.9;Psc;1.05;0.46;100;14.30;;11.86;11.22;11.03;22.77;Sbc;;;;;;;;2MASX J01412439+0831317,MCG +01-05-019,PGC 006235,UGC 01187;;; -IC1722;G;01:43:02.71;-34:11:15.8;Scl;1.52;0.39;51;14.71;;12.87;12.21;12.05;23.37;SABb;;;;;;;;ESO 353-034,ESO-LV 353-0340,MCG -06-04-067,PGC 006319;;; -IC1723;G;01:43:14.18;+08:53:21.7;Psc;2.45;0.50;28;14.20;;10.89;10.13;9.81;23.67;Sb;;;;;;;;2MASX J01431417+0853215,IRAS 01406+0838,MCG +01-05-028,PGC 006332,UGC 01205;;; -IC1724;G;01:43:09.68;-34:14:30.8;Scl;1.29;0.50;126;14.09;;10.98;10.30;10.04;23.42;S0-a;;;;;;;;2MASX J01430966-3414305,ESO 353-035,ESO-LV 353-0350,MCG -06-04-068,PGC 006328;;; -IC1725;G;01:45:11.83;+21:46:35.6;Psc;0.52;0.45;60;15.46;;13.11;12.37;12.22;22.79;Sc;;;;;;;;2MASX J01451183+2146355,PGC 006432;;; -IC1726;G;01:45:19.67;+04:37:06.7;Psc;0.30;0.30;35;14.80;;12.83;12.10;11.88;;;;;;;;;;2MASX J01451975+0437071,IRAS 01427+0422,PGC 006441;;; -IC1727;G;01:47:29.89;+27:20:00.1;Tri;6.52;2.44;150;12.54;11.98;11.07;10.24;10.29;24.02;SBm;;;;;;;;2MASX J01472988+2720000,IRAS 01446+2705,MCG +04-05-009,PGC 006574,UGC 01249;;; -IC1728;G;01:47:44.49;-33:36:05.4;For;1.29;0.80;6;14.17;;11.06;10.42;10.12;23.00;Sbc;;;;;;;;2MASX J01474446-3336055,ESO 353-047,ESO-LV 353-0470,IRAS 01455-3350,MCG -06-05-002,PGC 006584;;; -IC1729;G;01:47:55.26;-26:53:31.7;For;2.22;1.25;142;13.03;;10.52;9.87;9.67;24.03;E;;;;;;;;2MASX J01475527-2653319,ESO 477-004,ESO-LV 477-0040,MCG -05-05-014,PGC 006598;;; -IC1730;G;01:49:57.94;+22:00:43.6;Ari;0.75;0.48;64;15.50;;12.30;11.63;11.43;23.54;S?;;;;;;;;2MASX J01495792+2200440,MCG +04-05-015a,PGC 006732;;; -IC1731;G;01:50:12.34;+27:11:46.2;Tri;1.45;0.80;134;14.20;;11.79;11.21;10.83;23.33;SABc;;;;;;;;2MASX J01501233+2711464,MCG +04-05-018,PGC 006756,SDSS J015012.38+271145.8,UGC 01291;;; -IC1732;G;01:50:47.90;+35:55:57.9;And;1.32;0.38;61;15.10;;11.22;10.49;10.27;23.86;S0-a;;;;;;;;2MASX J01504792+3555581,MCG +06-05-016,PGC 006805,UGC 01307;;; -IC1733;G;01:50:42.89;+33:04:55.3;Tri;1.54;1.43;70;14.70;;10.88;10.21;9.90;23.97;E;;;;;;;;2MASX J01504290+3304551,MCG +05-05-016,PGC 006796,UGC 01301;;; -IC1734;G;01:49:17.05;-32:44:33.4;For;1.63;1.52;21;13.59;;11.17;10.49;10.16;23.20;Sc;;;;;;;;2MASX J01491704-3244336,ESO 353-048,ESO-LV 353-0480,IRAS 01470-3259,MCG -06-05-003,PGC 006679;;; -IC1735;G;01:50:51.74;+33:05:32.4;Tri;0.85;0.69;157;17.20;;12.12;11.37;11.01;23.66;S0;;;;;;;;2MASX J01505173+3305321,PGC 006803,SDSS J015051.73+330532.5;;; -IC1736;G;01:50:53.20;+18:18:10.0;Ari;1.04;0.28;35;15.00;;;;;23.04;Sbc;;;;;;;;MCG +03-05-020,PGC 006814,UGC 01309;;; -IC1737;Other;01:51:42.72;+36:15:04.3;And;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -IC1738;G;01:51:07.90;-09:47:31.3;Cet;0.93;0.69;76;14.70;;11.57;10.99;10.70;22.99;Sb;;;;;;;;2MASX J01510790-0947313,MCG -02-05-061,PGC 006832,SDSS J015107.89-094731.3,SDSS J015107.90-094731.3;;;B-Mag taken from LEDA. -IC1739;G;01:50:29.60;-34:03:20.1;For;0.88;0.55;86;14.91;;12.31;11.91;11.49;22.88;Sb;;;;;;;;2MASX J01502959-3403200,ESO 354-001,ESO-LV 354-0010,MCG -06-05-007,PGC 006777;;The APMUKS position is east of the nucleus.; -IC1740;**;01:48:51.56;-30:05:09.5;For;;;;;;;;;;;;;;;;;;;;The identification as IC 1740 is uncertain.; -IC1741;G;01:51:56.73;-16:47:16.9;Cet;1.05;0.58;168;15.52;;11.67;11.03;10.71;24.24;S0-a;;;;;;;;2MASX J01515675-1647169,MCG -03-05-023,PGC 006900;;;B-Mag taken from LEDA. -IC1742;G;01:53:14.23;+22:43:17.0;Ari;0.68;0.46;48;15.20;;12.73;12.15;11.74;22.97;Sc;;;;;;;;2MASX J01531422+2243169,MCG +04-05-023,PGC 006996;;; -IC1743;Dup;01:52:59.68;+12:42:30.5;Ari;;;;;;;;;;;;;;;0716;;;;;; -IC1744;Dup;01:53:38.84;+19:50:25.5;Ari;;;;;;;;;;;;;;;0719;;;;;; -IC1745;G;01:52:59.09;-16:40:08.4;Cet;0.75;0.31;138;15.98;;12.45;11.79;11.49;24.09;S0-a;;;;;;;;2MASX J01525903-1640090,LEDA 174317;;; -IC1746;G;01:54:24.31;+04:48:14.0;Psc;1.58;0.47;95;15.10;;11.99;11.34;11.06;24.66;S0;;;;;;;;2MASX J01542431+0448138,MCG +01-05-043,PGC 007076,UGC 01371;;; -IC1747;PN;01:57:35.73;+63:19:18.4;Cas;0.22;;;13.60;12.00;12.12;11.88;11.03;;;;15.80;15.40;;;;HD 11758;2MASX J01573573+6319183,IRAS 01539+6304 ,PK 130+01 1,PN G130.2+01.3;;; -IC1748;G;01:56:08.86;+17:38:28.6;Ari;0.69;0.49;122;14.70;;12.59;12.03;11.95;22.66;Sbc;;;;;;;;2MASX J01560885+1738284,MCG +03-06-002,PGC 007229,UGC 01403;;; -IC1749;G;01:56:11.10;+06:44:41.8;Psc;1.06;0.69;150;14.80;;12.05;11.33;11.04;23.54;S0;;;;;;;;2MASX J01561109+0644413,IRAS 01535+0630,MCG +01-06-001,PGC 007235,UGC 01407;;; -IC1750;G;01:56:18.56;+04:04:34.6;Psc;1.02;0.18;64;15.40;;12.10;11.35;10.99;23.78;S0-a;;;;;;;;2MASX J01561856+0404346,PGC 007266,UGC 01412;;; -IC1751;Dup;01:56:21.03;+05:37:44.2;Psc;;;;;;;;;;;;;;;0741;;;;;; -IC1752;G;01:57:15.42;+28:36:48.6;Tri;0.62;0.28;123;16.50;;13.39;12.74;12.39;24.05;;;;;;;;;2MASX J01571543+2836482,MCG +05-05-032,PGC 007337;;The IC number includes the two flanking Galactic foreground stars.; -IC1753;G;01:57:19.31;+28:35:21.3;Tri;0.84;0.57;140;15.00;;12.94;11.95;11.77;23.28;E-S0;;;;;;;;2MASX J01571930+2835212,MCG +05-05-033,PGC 007353;;; -IC1754;G;01:56:49.88;+04:01:32.2;Psc;0.92;0.92;80;15.40;;12.22;11.61;11.34;23.92;;;;;;;;;2MASX J01564993+0401322,PGC 007307,UGC 01424;;; -IC1755;G;01:57:09.79;+14:32:59.6;Ari;1.46;0.37;155;14.70;;11.59;10.85;10.61;23.72;SABa;;;;;;;;2MASX J01570981+1432592,MCG +02-06-005,PGC 007341,SDSS J015709.78+143259.5,SDSS J015709.79+143259.5,SDSS J015709.79+143259.6,SDSS J015709.80+143259.5,UGC 01428;;; -IC1756;G;01:57:05.34;-00:28:05.7;Cet;1.31;0.24;154;15.50;;12.17;11.37;10.97;23.49;Sc;;;;;;;;2MASX J01570524-0028053,IRAS 01545-0042,MCG +00-06-005,PGC 007328,SDSS J015705.33-002805.7,SDSS J015705.34-002806.0,UGC 01429;;; -IC1757;G;01:57:11.36;-00:28:26.3;Cet;0.40;0.24;55;16.89;;13.74;13.04;12.76;23.65;E;;;;;;;;2MASX J01571138-0028262,PGC 174458,SDSS J015711.35-002826.3,SDSS J015711.36-002826.3,SDSS J015711.36-002826.4;;; -IC1758;G;01:56:52.49;-16:32:31.4;Cet;0.56;0.20;50;15.46;;12.40;11.69;11.52;;S0;;;;;;;;2MASX J01565247-1632315,PGC 170024;;; -IC1759;G;01:57:55.36;-32:59:13.4;For;1.47;1.26;11;13.82;;11.20;10.52;10.39;23.35;Sbc;;;;;;;;2MASX J01575535-3259131,ESO 354-018,ESO-LV 354-0180,MCG -06-05-016,PGC 007400;;; -IC1760;G;01:57:24.68;-31:59:18.0;For;0.62;0.41;172;16.67;;;;;23.91;Scd;;;;;;;;ESO 414-015,ESO-LV 414-0150,ESOLV 4140150,PGC 007357;;ESO/Uppsala lists the identification with IC 1760 as doubtful.; -IC1761;G;01:58:52.29;+00:34:05.9;Cet;0.63;0.28;47;15.50;;12.35;11.71;11.56;23.16;S0-a;;;;;;;;2MASX J01585227+0034058,PGC 007484,SDSS J015852.29+003405.8,SDSS J015852.29+003405.9,SDSS J015852.30+003405.8,SDSS J015852.30+003405.9;;; -IC1762;G;01:57:48.64;-33:14:23.3;For;1.69;0.55;43;14.36;;11.73;11.10;10.80;23.23;SBbc;;;;;;;;2MASX J01574863-3314231,ESO 354-017,ESO-LV 354-0170,MCG -06-05-015,PGC 007393;;; -IC1763;G;01:59:11.75;-27:48:38.5;For;1.09;0.92;45;14.70;;12.52;12.21;11.40;23.37;Sbc;;;;;;;;2MASX J01591175-2748385,ESO 414-020,ESO-LV 414-0200,MCG -05-05-025,PGC 007514;;; -IC1764;G;02:00:23.37;+24:34:50.0;Ari;1.20;0.87;10;14.50;;11.71;10.96;10.55;23.45;Sb;;;;;;;;2MASX J02002337+2434500,IRAS 01575+2420,MCG +04-05-033,PGC 007603,SDSS J020023.37+243449.8,UGC 01486;;; -IC1765;Dup;02:01:06.61;+31:52:56.9;Tri;;;;;;;;;;;;;;;0783;;;;;; -IC1766;Dup;02:01:40.00;+31:49:35.4;Tri;;;;;;;;;;;;;;;0785;;;;;; -IC1767;G;01:59:59.38;-11:04:44.3;Cet;1.69;0.56;75;14.50;;11.38;10.71;10.46;24.03;Sa;;;;;;;;2MASX J01595936-1104443,MCG -02-06-012,PGC 007568;;May contribute to IRAS flux of IRAS F01576-1118.; -IC1768;G;02:00:49.87;-25:01:36.1;For;1.45;1.20;47;14.17;;11.17;10.51;10.23;23.84;S0;;;;;;;;2MASX J02004986-2501361,ESO 477-021,ESO-LV 477-0210,MCG -04-05-026,PGC 007636;;; -IC1769;G;02:00:54.92;-31:55:11.2;For;0.93;0.26;76;15.52;;12.59;11.82;11.55;23.23;Sb;;;;;;;;2MASX J02005491-3155111,ESO 414-021,ESO-LV 414-0210,PGC 007645;;; -IC1770;G;02:02:14.39;+09:58:51.4;Psc;1.41;1.36;50;15.40;;11.15;10.50;10.24;24.83;S0;;;;;;;;2MASX J02021436+0958511,MCG +02-06-013,PGC 007751,UGC 01522;;; -IC1771;G;02:02:15.86;+09:58:06.9;Psc;0.75;0.75;175;14.50;;11.81;11.13;10.80;23.48;E-S0;;;;;;;;2MASX J02021585+0958071,MCG +02-06-014,PGC 007737;;; -IC1772;G;02:02:42.93;+07:44:43.9;Psc;0.68;0.68;0;;;;;;;;;;;;;;;MCG +01-06-033,PGC 007781;;; -IC1773;Dup;02:04:02.11;+30:49:58.3;Tri;;;;;;;;;;;;;;;0804;;;;;; -IC1774;G;02:03:59.00;+15:19:05.0;Ari;1.41;0.66;127;15.20;;;;;24.05;SABc;;;;;;;;MCG +02-06-020,PGC 007863,UGC 01559;;; -IC1775;G;02:05:17.54;+13:30:20.6;Ari;0.75;0.67;167;15.52;;12.99;12.24;12.17;23.69;SABa;;;;;;;;2MASX J02051755+1330204,MCG +02-06-023,PGC 007958,SDSS J020517.53+133020.7,SDSS J020517.54+133020.5,SDSS J020517.54+133020.6;;;B-Mag taken from LEDA. -IC1776;G;02:05:15.22;+06:06:24.6;Psc;1.26;1.00;172;14.40;;12.98;12.31;12.15;23.55;Scd;;;;;;;;2MASX J02051524+0606249,MCG +01-06-038,PGC 007952,UGC 01579;;; -IC1777;G;02:06:08.70;+15:12:34.1;Ari;0.91;0.91;130;15.50;;11.54;10.76;10.46;24.08;E;;;;;;;;2MASX J02060874+1512343,MCG +02-06-029,PGC 008021;;; -IC1778;Dup;02:06:19.40;+09:13:38.7;Cet;;;;;;;;;;;;;;;;0199;;;;; -IC1779;G;02:06:25.93;+03:42:21.5;Cet;0.37;0.28;105;15.20;;12.42;11.83;11.44;;;;;;;;;;2MASX J02062594+0342215,PGC 008039;;; -IC1780;G;02:06:51.16;+14:43:18.9;Ari;0.64;0.37;9;15.50;;12.79;12.05;11.78;23.30;S0-a;;;;;;;;2MASX J02065114+1443193,MCG +02-06-032,PGC 008070,SDSS J020651.15+144318.8;;; -IC1781;G;02:06:52.79;-00:31:05.1;Cet;0.68;0.52;126;15.72;;12.96;12.24;12.07;23.53;Sbc;;;;;;;;2MASX J02065277-0031053,PGC 008067,SDSS J020652.79-003105.1,SDSS J020653.01-003059.4,SDSS J020653.01-003059.5,SDSS J020653.01-003059.7;;Multiple SDSS entries describe this object.; -IC1782;Dup;02:07:20.05;-25:26:30.8;For;;;;;;;;;;;;;;;0823;;;;;; -IC1783;G;02:10:06.13;-32:56:23.5;For;1.98;0.80;4;13.30;;10.42;9.77;9.50;22.75;Sb;;;;;;;;2MASX J02100613-3256236,ESO 354-046,ESO-LV 354-0460,IRAS 02079-3310,MCG -06-05-037,PGC 008279;;The APMUKS position is north of the nucleus.; -IC1784;G;02:16:12.79;+32:38:58.2;Tri;1.40;0.74;94;14.50;;11.12;10.35;10.15;23.00;Sbc;;;;;;;;2MASX J02161279+3238583,IRAS 02132+3225,MCG +05-06-019,PGC 008676,UGC 01744;;Position in 1991PNAOJ...2...37T is incorrect.; -IC1785;G;02:16:21.04;+32:39:59.5;Tri;0.81;0.44;146;15.60;;12.12;11.37;11.13;23.78;S0;;;;;;;;2MASX J02162102+3239594,MCG +05-06-021,PGC 008682;;; -IC1786;G;02:16:05.63;+05:08:43.7;Cet;0.66;0.43;154;15.50;;13.05;12.64;11.92;23.50;;;;;;;;;2MASX J02160561+0508436,PGC 008662;;; -IC1787;Dup;02:16:10.44;-11:55:36.2;Cet;;;;;;;;;;;;;;;;0217;;;;; -IC1788;G;02:15:49.96;-31:12:03.6;For;2.53;1.07;28;13.11;12.37;10.27;9.59;9.26;23.16;SBbc;;;;;;;;2MASX J02154997-3112035,ESO 415-015,ESO-LV 415-0150,IRAS 02136-3125,MCG -05-06-011,PGC 008649;;; -IC1789;G;02:17:51.18;+32:23:45.7;Tri;1.95;0.42;30;14.80;;11.08;10.25;9.94;24.20;Sa;;;;;;;;2MASX J02175117+3223454,IRAS 02149+3210,MCG +05-06-024,PGC 008766,UGC 01763;;; -IC1790;G;02:17:37.79;+12:30:32.3;Ari;0.82;0.28;63;15.70;;12.82;12.05;12.09;23.12;Sc;;;;;;;;2MASX J02173778+1230319,MCG +02-06-055,PGC 008752,UGC 01762;;; -IC1791;G;02:17:41.34;+12:28:14.2;Ari;1.09;1.08;95;14.60;;10.72;10.05;9.76;23.49;S0;;;;;;;;2MASX J02174133+1228139,MCG +02-06-056,PGC 008758,UGC 01764;;; -IC1792;G;02:19:01.09;+34:27:44.6;Tri;1.39;0.96;26;14.00;;10.76;10.02;9.72;23.96;Sb;;;;;;;;2MASX J02190111+3427447,MCG +06-06-015,PGC 008839,UGC 01781;;; -IC1793;G;02:21:32.40;+32:32:40.2;Tri;1.28;0.63;36;14.80;;11.24;10.51;10.10;23.59;Sab;;;;;;;;2MASX J02213239+3232400,IRAS 02186+3219,MCG +05-06-027,PGC 008969,UGC 01816;;; -IC1794;G;02:21:30.17;+15:45:41.9;Ari;0.93;0.71;90;15.00;;11.83;11.10;10.91;23.59;S0-a;;;;;;;;2MASX J02213017+1545419,IRAS 02187+1532,MCG +03-07-003,PGC 008963;;; -IC1795;HII;02:26:31.96;+62:02:29.9;Cas;12.00;12.00;;;;;;;;;;;;;;;;LBN 645;;; -IC1796;G;02:22:47.32;-41:22:15.9;Phe;1.07;0.70;86;14.16;;10.84;10.15;9.85;23.10;E-S0;;;;;;;;2MASX J02224730-4122159,ESO 298-038,ESO-LV 298-0380,MCG -07-06-001,PGC 009041;;; -IC1797;G;02:25:27.89;+20:23:43.2;Ari;0.97;0.37;142;15.30;;11.99;11.17;10.84;23.29;SBb;;;;;;;;2MASX J02252787+2023430,IRAS 02226+2010,MCG +03-07-010,PGC 009205,UGC 01880;;; -IC1798;G;02:26:15.51;+13:25:50.8;Ari;0.31;0.21;100;;;;;;;;;;;;;;;2MASX J02261552+1325504;;; -IC1799;G;02:28:45.91;+45:58:14.3;And;0.79;0.37;40;15.00;;11.17;10.50;10.16;22.80;Sc;;;;;;;;2MASX J02284584+4558142,MCG +08-05-012,PGC 009432,UGC 01943;;; -IC1800;Other;02:28:31.16;+31:24:34.8;Tri;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -IC1801;G;02:28:12.75;+19:35:00.0;Ari;1.18;0.54;30;14.73;13.98;11.52;10.82;10.52;23.27;Sb;;;;;;;;2MASX J02281275+1934599,MCG +03-07-016,PGC 009392,UGC 01936;;; -IC1802;G;02:29:13.98;+23:04:57.7;Ari;0.98;0.79;105;15.00;;10.79;10.04;9.75;23.38;E;;;;;;;;2MASX J02291399+2304579,MCG +04-06-057,PGC 009462;;; -IC1803;G;02:29:49.94;+23:06:30.9;Ari;0.46;0.46;35;15.72;;11.56;10.79;10.54;22.90;E;;;;;;;;2MASX J02294993+2306310,MCG +04-06-058,PGC 009507;;The IC identification is not certain.;B-Mag taken from LEDA. -IC1804;G;02:29:54.42;+23:05:49.5;Ari;0.97;0.86;136;15.70;;11.20;10.50;10.25;24.37;E;;;;;;;;2MASX J02295443+2305490,MCG +04-06-060,PGC 009512;;The IC identification is not certain.; -IC1805;Cl+N;02:32:41.51;+61:27:24.8;Cas;60.00;60.00;;7.03;6.50;;;;;;;;;;;;;LBN 654,MWSC 0209;;; -IC1806;G;02:29:34.95;+22:56:35.6;Ari;0.63;0.47;156;15.59;;11.81;11.00;10.70;23.56;E;;;;;;;;2MASX J02293494+2256351,LEDA 095515;;; -IC1807;G;02:30:31.00;+22:56:59.0;Ari;0.56;0.49;24;15.70;;11.99;11.26;10.91;23.20;E;;;;;;;;2MASX J02303102+2256586,LEDA 095516,MCG +04-06-062,PGC 009547;;; -IC1808;Dup;02:30:31.28;-04:12:55.5;Cet;;;;;;;;;;;;;;;0963;;;;;; -IC1809;G;02:31:40.35;+22:55:01.9;Ari;0.85;0.51;50;15.00;;11.58;10.96;10.54;22.99;SBab;;;;;;;;2MASX J02314035+2255020,IRAS 02288+2241,MCG +04-07-004,PGC 009616,SDSS J023140.35+225502.0,UGC 01996;;; -IC1810;G;02:29:26.83;-43:04:34.8;Eri;1.37;0.97;150;14.19;;11.29;10.64;10.32;23.29;Sab;;;;;;;;2MASX J02292683-4304346,ESO 246-018,ESO-LV 246-0180,MCG -07-06-009,PGC 009477;;; -IC1811;G;02:30:38.19;-34:15:51.0;For;1.15;0.68;7;14.35;;11.56;10.91;10.57;23.12;SBab;;;;;;;;2MASX J02303819-3415508,ESO 355-020,ESO-LV 355-0200,MCG -06-06-008,PGC 009555;;; -IC1812;G;02:29:31.78;-42:48:40.9;Eri;2.08;1.60;35;13.21;;10.22;9.48;9.14;23.67;E;;;;;;;;2MASX J02293177-4248406,ESO 246-019,ESO-LV 246-0190,MCG -07-06-008,PGC 009486;;; -IC1813;G;02:30:49.49;-34:13:15.2;For;1.13;0.75;100;14.20;;11.07;10.36;10.08;23.27;S0-a;;;;;;;;2MASX J02304950-3413155,ESO 355-022,ESO-LV 355-0220,MCG -06-06-009,PGC 009567;;; -IC1814;Dup;02:31:05.79;-36:02:04.8;For;;;;;;;;;;;;;;;0964;;;;;; -IC1815;G;02:34:20.00;+32:25:46.1;Tri;1.35;1.20;123;14.30;;10.60;9.90;9.61;23.74;S0;;;;;;;;2MASX J02342001+3225460,MCG +05-07-014,PGC 009794,UGC 02047;;; -IC1816;G;02:31:51.00;-36:40:19.4;For;1.26;1.22;125;13.86;14.26;10.88;10.19;9.91;23.01;SBab;;;;;;;;2MASX J02315100-3640192,ESO 355-025,ESO-LV 355-0250,IRAS 02297-3653,MCG -06-06-011,PGC 009634;;Called a Seyfert 2 by de Grijp, et al (1992, A&AS, 96, 389).; -IC1817;GPair;02:33:50.20;+11:12:12.0;Ari;0.90;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1817 NED01;G;02:33:49.60;+11:12:11.9;Ari;0.49;0.25;12;14.90;;;;;23.03;Sd;;;;;;;;MCG +02-07-014,PGC 009757;;; -IC1817 NED02;G;02:33:50.78;+11:12:12.6;Ari;0.67;0.43;161;15.50;;12.39;11.62;11.43;22.96;Sc;;;;;;;;2MASX J02335077+1112128,IRAS 02311+1059,MCG +02-07-015,PGC 009764;;; -IC1818;G;02:34:07.14;-11:02:26.7;Cet;0.83;0.71;78;15.11;;11.94;11.20;10.78;23.69;E;;;;;;;;2MASX J02340713-1102261,LEDA 970700;;; -IC1819;G;02:35:41.83;+04:03:06.5;Cet;2.01;0.62;25;15.00;;11.53;10.80;10.54;25.33;E;;;;;;;;2MASX J02354182+0403063,PGC 009858;;; -IC1820;G;02:35:52.67;+06:02:26.2;Cet;0.53;0.28;65;15.40;;12.70;12.03;11.64;;;;;;;;;;2MASX J02355267+0602263,PGC 009866;;; -IC1821;GPair;02:36:26.13;+13:46:46.4;Ari;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1821 NED01;G;02:36:25.41;+13:46:48.6;Ari;0.70;0.30;45;15.40;;12.63;11.94;11.65;;;;;;;;;;2MASXJ02362546+1346496,IRAS 02336+1333,PGC 009898;;; -IC1821 NED02;G;02:36:26.70;+13:46:44.1;Ari;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC1822;*;02:35:42.35;-08:33:46.1;Cet;;;;;;;;;;;;;;;;;;SDSS J023542.35-083346.0;;; -IC1823;G;02:38:36.98;+32:04:10.9;Tri;1.38;0.83;78;14.80;;11.24;10.54;10.59;24.05;Sc;;;;;;;;2MASX J02383701+3204111,IRAS 02356+3151,MCG +05-07-024,PGC 010013,UGC 02125;;; -IC1824;Dup;02:42:35.06;+61:35:39.7;Cas;;;;;;;;;;;;;;;1027;;;;;; -IC1825;G;02:38:55.63;+09:05:50.5;Cet;1.15;0.79;22;14.90;;11.58;10.91;10.46;23.56;Sc;;;;;;;;2MASX J02385563+0905504,IRAS 02362+0853,PGC 010031,UGC 02138;;; -IC1826;G;02:39:03.55;-27:26:35.3;For;2.06;1.81;107;12.86;;10.82;10.16;10.03;23.46;S0-a;;;;;;1830;;2MASX J02390354-2726351,ESO 416-006,ESO-LV 416-0060,IRAS 02368-2739,MCG -05-07-012,PGC 010041,UGCA 037;;; -IC1827;G;02:39:46.46;+01:33:29.8;Cet;1.09;0.23;154;14.50;;11.25;10.54;10.34;22.98;Sa;;;;;;;;2MASX J02394646+0133297,LEDA 175363,MCG +00-07-075,PGC 010087,UGC 02152;;; -IC1828;Dup;02:40:28.99;+19:17:49.6;Ari;;;;;;;;;;;;;;;1036;;;;;; -IC1829;G;02:40:32.79;+14:17:52.6;Ari;0.94;0.73;26;15.70;;11.92;11.11;10.90;24.46;E;;;;;;;;2MASX J02403277+1417523,PGC 010131;;+5 degree error in IC declination.; -IC1830;Dup;02:39:03.55;-27:26:35.3;For;;;;;;;;;;;;;;;;1826;;;;; -IC1831;Neb;02:43:56.40;+62:24:41.9;Cas;120.23;;;;;;;;;;;;;;;;;;;The IC identification is very uncertain.;Dimensions taken from LEDA -IC1832;G;02:41:57.66;+19:01:48.3;Ari;0.74;0.69;140;15.10;;11.64;10.95;10.65;23.26;S0;;;;;;;;2MASX J02415767+1901486,MCG +03-07-045,PGC 010216;;; -IC1833;G;02:41:38.70;-28:10:16.6;For;1.43;0.74;64;14.10;;11.23;10.64;10.31;23.62;S0;;;;;;;;2MASX J02413870-2810165,ESO 416-007,ESO-LV 416-0070,MCG -05-07-013,PGC 010205;;; -IC1834;G;02:42:48.09;+03:05:03.0;Cet;0.69;0.61;16;15.20;;11.89;11.27;10.91;23.15;Sb;;;;;;;;2MASX J02424807+0305030,MCG +00-07-085,PGC 010267,UGC 02189;;; -IC1835;GGroup;02:43:49.15;+14:53:22.5;Ari;0.72;0.58;28;;;;;;23.82;E;;;;;;;;2MASX J02434911+1453222,PGC 010342;;; -IC1836;G;02:43:23.46;+03:06:19.4;Cet;0.63;0.50;42;15.60;;13.74;13.07;12.76;23.64;;;;;;;;;2MASX J02432344+0306194,MCG +00-07-087,PGC 010306;;; -IC1837;Dup;02:43:31.31;+00:18:24.5;Cet;;;;;;;;;;;;;;;1072;;;;;; -IC1838;G;02:44:42.99;+19:27:18.4;Ari;0.64;0.23;175;15.20;;12.23;11.44;11.24;22.08;Sc;;;;;;;;2MASX J02444299+1927181,MCG +03-08-002,PGC 010389;;; -IC1839;G;02:44:42.91;+15:14:24.3;Ari;0.97;0.40;96;15.30;;12.44;11.78;11.51;23.27;Sbc;;;;;;;;2MASX J02444291+1514242,MCG +02-08-001,PGC 010394,UGC 02220;;; -IC1840;Dup;02:43:41.98;-15:42:20.1;Cet;;;;;;;;;;;;;;;1105;;;;;; -IC1841;G;02:45:36.23;+18:55:44.1;Ari;0.64;0.48;50;15.10;;12.38;11.62;11.24;22.96;SBb;;;;;;;;2MASX J02453623+1855442,IRAS 02427+1843,PGC 010442;;; -IC1842;G;02:45:23.42;+11:27:29.2;Ari;1.07;0.30;20;15.70;;12.09;11.16;10.89;23.96;Sa;;;;;;;;2MASX J02452340+1127290,PGC 010428;;; -IC1843;G;02:45:24.62;+02:52:49.9;Cet;1.04;0.63;74;14.20;;11.89;11.22;11.02;22.89;SBab;;;;;;;;2MASX J02452461+0252501,IRAS 02428+0240,MCG +00-08-004,PGC 010429,UGC 02228;;; -IC1844;G;02:45:49.40;+03:13:49.1;Cet;0.94;0.37;97;15.00;;12.21;11.61;11.30;22.96;Sbc;;;;;;;;2MASX J02454932+0313517,IRAS 02432+0301,MCG +00-08-007,PGC 010448,SDSS J024549.32+031351.1;;; -IC1845;**;02:43:56.90;-27:58:08.1;For;;;;10.78;10.17;9.20;8.94;8.88;;;;;;;;;;;;;Formed by TYC 6436-1141-1 + UCAC2 20301045. Magnitudes referred to TYC 6436-1141-1 only. -IC1846;Dup;02:47:43.58;+13:15:19.2;Ari;;;;;;;;;;;;;;;1109;;;;;; -IC1847;G;02:47:53.67;+14:30:18.4;Ari;0.56;0.47;131;15.70;;13.00;12.36;11.95;23.39;;;;;;;;;2MASX J02475365+1430188,PGC 010580;;; -IC1848;Cl+N;02:51:10.59;+60:24:08.9;Cas;40.00;10.00;;6.87;6.50;;;;;;;;;;;;;LBN 667,MWSC 0236;;Immersed in nebulosity.; -IC1849;G;02:47:44.63;+09:21:24.5;Cet;0.83;0.46;90;15.50;;11.05;10.38;9.98;23.75;E-S0;;;;;;;;2MASX J02474463+0921244,MCG +01-08-002,PGC 010582;;; -IC1850;Dup;02:48:39.35;+13:15:34.3;Ari;;;;;;;;;;;;;;;1111;;;;;; -IC1851;*;02:51:45.92;+58:18:51.5;Cas;;;;6.56;6.44;6.21;6.17;6.13;;;;;;;;;;2MASS J02514588+5818514,BD +57 0651,HD 017581,HIP 013347,IDS 02443+5754 A,TYC 3712-1696-1,WDS J02518+5819A;;;Spectroscopic binary. -IC1852;Dup;02:49:00.37;+13:13:25.5;Ari;;;;;;;;;;;;;;;1112;;;;;; -IC1853;G;02:48:04.27;-13:59:35.2;Eri;1.39;0.39;94;14.93;;12.47;11.82;11.70;23.54;SBb;;;;;;;;2MASX J02480427-1359352,MCG -02-08-006,PGC 010595;;;B-Mag taken from LEDA. -IC1854;G;02:49:20.72;+19:18:14.1;Ari;0.52;0.43;154;15.86;14.81;12.10;11.30;11.01;22.71;S0;;;;;;;;2MASX J02492066+1918143,PGC 010684;;; -IC1855;G;02:49:04.31;+13:26:34.4;Ari;0.45;0.31;40;16.27;;12.53;11.79;11.68;23.23;S0-a;;;;;;;;2MASX J02490431+1326347,PGC 1431167;;;B-Mag taken from LEDA. -IC1856;G;02:48:50.80;-00:46:02.6;Cet;1.14;0.51;56;14.50;;11.47;10.82;10.51;23.03;Sab;;;;;;;;2MASX J02485079-0046029,IRAS 02463-0058,MCG +00-08-021,PGC 010647,SDSS J024850.79-004602.5,SDSS J024850.79-004602.6,SDSS J024850.80-004602.6,UGC 02291;;; -IC1857;G;02:49:38.92;+14:37:11.3;Ari;0.79;0.43;149;15.10;;12.30;11.70;11.24;22.97;Sab;;;;;;;;2MASX J02493891+1437113,MCG +02-08-013,PGC 010715,UGC 02312;;; -IC1858;G;02:49:08.41;-31:17:22.5;For;1.88;0.86;174;14.15;;11.18;10.44;10.16;24.22;S0-a;;;;;;;;2MASX J02490842-3117231,ESO 416-029,ESO-LV 416-0290,MCG -05-07-033,PGC 010671;;; -IC1859;G;02:49:03.92;-31:10:21.0;For;1.30;0.85;15;14.27;;11.05;10.61;10.27;23.24;SBbc;;;;;;;;2MASX J02490389-3110211,ESO 416-028,ESO-LV 416-0280,IRAS 02469-3122,MCG -05-07-032,PGC 010665;;; -IC1860;G;02:49:33.71;-31:11:20.8;For;2.64;1.80;4;13.00;;10.21;9.61;9.26;24.58;E;;;;;;;;2MASX J02493387-3111219,ESO 416-031,ESO-LV 416-0310,MCG -05-07-035,PGC 010707;;; -IC1861;G;02:53:06.98;+25:29:25.4;Ari;1.28;0.80;150;14.70;;10.97;10.29;9.97;23.78;S0;;;;;;;;2MASX J02530696+2529252,MCG +04-07-028,PGC 010905,UGC 02357;;; -IC1862;G;02:51:58.80;-33:20:24.6;For;2.67;0.59;4;14.49;;11.11;10.38;9.94;24.32;Sbc;;;;;;;;ESO 356-015,ESO-LV 356-0150,IRAS 02499-3332,MCG -06-07-010,PGC 010858;;; -IC1863;G;02:54:50.74;+08:47:03.8;Cet;0.60;0.60;180;15.70;;11.82;11.06;10.81;23.36;S0;;;;;;;;2MASX J02545071+0847038,MCG +01-08-015,PGC 010997;;; -IC1864;G;02:53:39.31;-34:11:51.5;For;1.30;0.76;63;13.66;;10.57;9.91;9.64;23.11;E;;;;;;;;2MASX J02533933-3411515,ESO 356-017,ESO-LV 356-0170,MCG -06-07-011,PGC 010925;;; -IC1865;G;02:55:20.18;+08:49:41.4;Cet;1.30;1.01;91;15.00;;11.42;10.69;10.30;24.04;Sbc;;;;;;;;2MASX J02552017+0849412,MCG +01-08-017,PGC 011035,UGC 02391;;; -IC1866;G;02:54:52.99;-15:39:09.2;Eri;1.01;0.81;84;15.22;;11.42;10.58;10.40;23.81;E-S0;;;;;;;;2MASX J02545299-1539094,MCG -03-08-044,PGC 010992;;;B-Mag taken from LEDA. -IC1867;G;02:55:52.23;+09:18:42.6;Cet;1.52;1.17;17;15.00;;10.79;10.05;9.63;24.66;;;;;;;;;2MASX J02555226+0918423,MCG +01-08-019,PGC 011070,UGC 02400;;; -IC1868;G;02:56:05.85;+09:22:43.8;Cet;0.40;0.36;35;15.86;;12.29;11.34;11.06;;;;;;;;;;2MASX J02560584+0922433,PGC 3091399;;;B-Mag taken from LEDA. -IC1869;G;02:58:11.69;+05:50:11.7;Cet;0.70;0.27;124;15.60;;12.00;11.18;10.90;23.45;S0;;;;;;;;2MASX J02581169+0550119,PGC 011224;;; -IC1870;G;02:57:53.53;-02:20:49.5;Eri;1.55;0.90;133;12.70;;12.22;11.83;11.01;23.05;Sm;;;;;;;;2MASX J02575353-0220496,IRAS 02553-0232,MCG -01-08-020,PGC 011202,UGCA 046;;The position in 1996AJ....111..865D is for the southeastern end of the galaxy.; -IC1871;HII;02:57:21.79;+60:40:20.5;Cas;4.00;4.00;;;;;;;;;;;;;;;;LBN 675;;; -IC1872;Other;03:04:34.61;+42:48:38.4;Per;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -IC1873;G;03:03:52.88;+09:36:47.7;Cet;1.17;0.46;26;15.30;;11.13;10.34;9.95;24.17;S0-a;;;;;;;;2MASX J03035282+0936479,MCG +01-08-039,PGC 011541;;; -IC1874;G;03:06:21.98;+36:00:52.3;Per;0.94;0.66;85;14.80;;11.00;10.25;9.99;23.24;S0-a;;;;;;;;2MASX J03062196+3600523,IRAS 03032+3549,MCG +06-07-039,PGC 011652;;; -IC1875;G;03:03:56.64;-39:26:25.5;For;1.57;0.87;19;13.89;;10.97;10.29;10.09;23.12;E-S0;;;;;;;;2MASX J03035662-3926254,ESO 300-006,ESO-LV 300-0060,MCG -07-07-002,PGC 011549;;; -IC1876;G;03:04:32.29;-27:27:37.8;For;1.16;1.12;7;14.31;;11.55;10.88;10.51;23.49;S0;;;;;;;;2MASX J03043228-2727380,ESO 417-013,ESO-LV 417-0130,MCG -05-08-013,PGC 011577;;; -IC1877;G;03:03:09.58;-50:30:42.9;Hor;0.90;0.20;153;16.30;;;;;23.77;Sb;;;;;;;;ESO 199-011,ESO-LV 199-0110,PGC 011495;;; -IC1878;G;03:03:40.20;-52:06:28.9;Hor;0.58;0.39;180;15.96;;12.99;12.58;11.88;22.93;;;;;;;;;2MASX J03034020-5206290,ESO 199-013,ESO-LV 199-0130,PGC 011528;;; -IC1879;G;03:03:52.45;-52:07:03.9;Hor;1.21;0.23;137;15.95;;12.50;11.80;11.51;23.77;Sc;;;;;;;;2MASX J03035246-5207040,ESO 199-014,ESO-LV 199-0140,PGC 011542;;; -IC1880;G;03:06:28.62;-09:43:53.3;Eri;1.85;1.09;34;14.86;;10.84;10.14;9.88;24.68;E-S0;;;;;;;;2MASX J03062848-0943518,MCG -02-08-049,PGC 011656;;;B-Mag taken from LEDA. -IC1881;Dup;03:09:17.31;+38:38:58.0;Per;;;;;;;;;;;;;;;1213;;;;;; -IC1882;G;03:07:49.30;+03:08:52.4;Cet;1.14;0.39;22;15.10;;11.57;10.81;10.48;23.28;Sb;;;;;;;;2MASX J03074931+0308525,MCG +00-09-002,PGC 011718,UGC 02551;;; -IC1883;Dup;03:09:42.23;+40:53:35.1;Per;;;;;;;;;;;;;;;1212;;;;;; -IC1884;Dup;03:09:42.74;+40:58:27.2;Per;;;;;;;;;;;;;;;;0290;;;;; -IC1885;G;03:06:40.43;-32:51:49.1;For;1.45;0.46;137;14.87;;12.52;11.97;11.88;23.44;Sc;;;;;;;;2MASX J03064031-3251477,ESO 357-003,ESO-LV 357-0030,PGC 011665;;; -IC1886;G;03:08:03.24;-04:23:59.4;Eri;1.11;0.88;1;15.50;;11.26;10.56;10.34;23.78;S0;;;;;;;;2MASX J03080326-0423593,MCG -01-09-001,PGC 011724;;; -IC1887;Dup;03:10:12.92;+40:45:56.4;Per;;;;;;;;;;;;;;;;0292;;;;; -IC1888;Dup;03:10:56.16;+41:08:13.6;Per;;;;;;;;;;;;;;;;0293;;;;; -IC1889;Dup;03:11:03.11;+40:37:19.6;Per;;;;;;;;;;;;;;;;0294;;;;; -IC1890;G;03:09:58.43;+19:12:29.0;Ari;1.02;1.02;150;15.60;;11.02;10.24;9.95;24.43;S0;;;;;;;;2MASX J03095845+1912293,MCG +03-09-004,PGC 011837;;87GB source with large sky, narrow minor axis, or very bad confusion.; -IC1891;G;03:10:12.02;+19:36:23.6;Ari;0.44;0.34;44;16.61;;;;;23.55;;;;;;;;;2MASX J03101202+1936233,PGC 1598762;;;B-Mag taken from LEDA. -IC1892;GPair;03:08:27.80;-23:03:16.0;Eri;2.00;;;;;;;;;;;;;;;;;MCG -04-08-030,UGCA 055;;Part of the GGroup Arp 332.;Diameter of the group inferred by the author. -IC1892 NED01;G;03:08:27.23;-23:03:20.8;Eri;1.78;0.98;12;13.80;;13.47;12.77;12.96;23.29;SBd;;;;;;;;2MASX J03082723-2303207,ESO 480-036,ESO-LV 480-0360,MCG -04-08-030 NED01,PGC 011750,UGCA 055 NED01;;; -IC1892 NED02;G;03:08:28.35;-23:03:17.8;Eri;;;;;;;;;;;;;;;;;;MCG -04-08-030 NED02,UGCA 055 NED02;;;No data available in LEDA -IC1893;G;03:10:16.57;+19:37:00.7;Ari;0.39;0.25;54;17.13;;;;;23.78;S0-a;;;;;;;;2MASX J03101655+1937003,PGC 1599154;;;B-Mag taken from LEDA. -IC1894;G;03:10:25.47;+19:36:23.8;Ari;0.78;0.52;3;15.60;;11.89;11.18;10.85;23.91;S0;;;;;;;;2MASX J03102544+1936235,PGC 011857;;; -IC1895;G;03:09:36.22;-25:15:12.9;For;1.40;1.05;164;13.95;;11.18;10.56;10.28;23.61;S0-a;;;;;;;;2MASX J03093622-2515129,ESO 481-001,ESO-LV 481-0010,MCG -04-08-033,PGC 011807;;; -IC1896;G;03:07:52.52;-54:12:52.1;Hor;0.81;0.31;18;15.80;;;;;23.51;Sab;;;;;;;;ESO 155-004,ESO-LV 155-0040,PGC 011722;;; -IC1897;G;03:10:45.93;-10:47:45.8;Eri;0.99;0.57;31;14.67;;12.13;11.48;11.19;23.35;S0-a;;;;;;;;2MASX J03104591-1047464,IRAS 03083-1059,MCG -02-09-009,PGC 011866;;;B-Mag taken from LEDA. -IC1898;G;03:10:19.79;-22:24:17.5;Eri;3.66;0.65;73;13.58;;11.02;10.35;10.04;23.70;SBc;;;;;;;;2MASX J03101907-2224216,ESO 481-002,ESO-LV 481-0020,IRAS 03081-2235,MCG -04-08-036,PGC 011851,UGCA 056;;; -IC1899;G;03:12:13.11;-25:18:17.7;For;1.32;0.39;161;14.30;;11.74;10.99;10.70;23.50;S0-a;;;;;;;;2MASX J03121312-2518175,ESO 481-008,ESO-LV 481-0080,IRAS 03100-2529,MCG -04-08-041,PGC 011930;;; -IC1900;G;03:15:55.23;+37:09:14.8;Per;0.83;0.65;92;14.87;13.86;11.33;10.58;10.28;23.29;S0;;;;;;;;2MASX J03155518+3709142,MCG +06-08-007,PGC 012124;;; -IC1901;G;03:16:02.61;+37:06:44.8;Per;0.91;0.27;164;17.46;16.76;11.57;10.77;10.46;23.69;S0-a;;;;;;;;2MASX J03160262+3706452,MCG +06-08-008,PGC 012136;;; -IC1902;G;03:16:12.42;+37:10:38.8;Per;0.69;0.43;67;15.70;;12.05;11.30;11.16;23.57;S0-a;;;;;;;;2MASX J03161242+3710387,PGC 012150;;; -IC1903;GPair;03:13:10.35;-50:34:11.4;Hor;1.90;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1903 NED01;G;03:13:08.56;-50:33:45.4;Hor;0.48;0.15;60;17.46;;;;;24.34;S0-a;;;;;;;;ESO-LV 199-0241,PGC 011986;;; -IC1903 NED02;G;03:13:12.55;-50:34:39.9;Hor;0.65;0.23;0;16.60;;;;;24.30;E-S0;;;;;;;;2MASX J03131256-5034402,PGC 011990;;;B-Mag taken from LEDA. -IC1904;G;03:15:00.77;-30:42:28.9;For;1.37;0.61;102;14.41;;11.36;10.64;10.29;23.35;SBab;;;;;;;;2MASX J03150078-3042289,ESO 417-022,ESO-LV 417-0220,IRAS 03129-3053,MCG -05-08-024,PGC 012079;;; -IC1905;Other;03:18:48.00;+41:21:55.6;Per;;;;;;;;;;;;;;;;;;;;Galactic triple star. Another nearby star may also be part of IC 1905.; -IC1906;G;03:16:05.65;-34:21:38.3;For;1.21;0.51;64;14.47;;11.87;11.19;10.86;22.95;SBbc;;;;;;;;2MASX J03160565-3421385,ESO 357-011,ESO-LV 357-0110,IRAS 03141-3432,MCG -06-08-001,PGC 012138;;; -IC1907;Dup;03:19:54.15;+41:33:48.2;Per;;;;;;;;;;;;;;;1278;;;;;; -IC1908;G;03:15:05.30;-54:49:11.9;Hor;1.23;0.68;68;14.53;;12.14;11.51;11.03;23.57;SBb;;;;;;;;ESO 155-013,ESO-LV 155-0130,IRAS 03137-5500,PGC 012085;;; -IC1909;G;03:17:20.02;-33:41:24.2;For;1.25;0.68;60;14.48;;11.53;10.91;10.64;23.27;SBb;;;;;;;;2MASX J03172000-3341240,ESO 357-014,ESO-LV 357-0140,MCG -06-08-003,PGC 012212;;; -IC1910;Other;03:17:57.79;-21:26:05.1;Eri;;;;;;;;;;;;;;;;;;;;"Nothing here; probably a defect on the original Harvard plate."; -IC1911;*;03:20:49.18;+35:19:18.5;Per;;;;;;;;;;;;;;;;;;;;The IC identification is very uncertain.; -IC1912;G;03:16:43.43;-50:39:17.6;Hor;1.05;0.21;6;15.82;;13.71;12.47;12.49;23.38;Sc;;;;;;;;2MASX J03164331-5039258,ESO 200-001,ESO-LV 200-0010,IRAS 03151-5050,PGC 012172;;; -IC1913;G;03:19:34.54;-32:27:54.1;For;1.96;0.41;149;14.38;;12.27;11.65;11.41;23.53;SBb;;;;;;;;ESO 357-016,ESO-LV 357-0160,MCG -05-08-027,PGC 012404;;; -IC1914;G;03:19:25.24;-49:35:59.0;Hor;1.95;1.45;112;13.28;;13.42;12.68;12.70;23.39;SABc;;;;;;;;2MASX J03192525-4935592,ESO 200-003,ESO-LV 200-0030,PGC 012390;;; -IC1915;G;03:19:51.95;-50:41:28.3;Hor;0.61;0.52;29;16.16;;14.04;12.99;12.90;23.61;SBc;;;;;;;;2MASX J03195195-5041283,ESO 200-005,ESO-LV 200-0050,PGC 012435;;; -IC1916;G;03:20:16.52;-49:02:30.9;Hor;0.86;0.55;81;15.39;;12.29;11.59;11.20;23.36;SBc;;;;;;;;2MASX J03201652-4902308,ESO 200-008,ESO-LV 200-0080,PGC 012482;;; -IC1917;G;03:22:12.36;-53:11:06.7;Hor;0.83;0.47;12;15.99;;12.72;11.98;11.89;24.36;S0-a;;;;;;;;2MASX J03221231-5311066,2MASX J03221362-5310547,LEDA 100539;;"Brightest in a cluster; several nearby companions."; -IC1918;G;03:26:17.89;+04:32:27.7;Tau;0.60;0.20;150;15.20;;12.41;11.75;11.35;;Sb;;;;;;;;2MASX J03261793+0432277,PGC 012834;;; -IC1919;G;03:26:02.24;-32:53:40.4;For;1.73;1.08;84;13.78;;11.28;10.72;10.76;23.69;E-S0;;;;;;;;2MASX J03260225-3253405,ESO 358-001,ESO-LV 358-0010,MCG -06-08-015,PGC 012825;;; -IC1920;G;03:24:24.40;-52:42:48.9;Hor;0.56;0.41;148;16.41;;14.06;13.40;13.24;23.44;S0-a;;;;;;;;2MASX J03242439-5242489,LEDA 074394;;The IC identification is not certain.; -IC1921;Other;03:24:42.11;-50:41:52.8;Hor;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing here."; -IC1922;G;03:24:43.03;-50:44:25.9;Hor;0.41;0.28;31;16.89;;14.50;14.07;13.35;23.31;Sbc;;;;;;;;2MASX J03244303-5044261,ESO 200-013,ESO-LV 200-0130,PGC 012749;;; -IC1923;GPair;03:24:52.64;-50:33:21.0;Hor;0.60;;;;;;;;;;;;;;;;;;;The western component may be a Galactic star.;Diameter of the group inferred by the author. -IC1923 NED01;G;03:24:52.91;-50:33:20.0;Hor;0.30;0.19;91;17.60;;;;;23.69;;;;;;;;;2MASS J03245305-5033196,PGC 465294;;;B-Mag taken from LEDA. -IC1923 NED02;G;03:24:51.77;-50:33:20.5;Hor;;;;;;;;;;;;;;;;;;;;This may be a Galactic star.;No data available in LEDA -IC1924;G;03:25:07.67;-51:42:12.4;Hor;0.74;0.30;76;16.68;;;;;23.99;Sbc;;;;;;;;ESO 200-017,ESO-LV 200-0170,PGC 012781;;; -IC1925;Other;03:25:15.69;-51:15:24.8;Hor;;;;;;;;;;;;;;;;;;;;This IC number may apply to the galaxy IC 1929.; -IC1926;G;03:25:19.03;-51:42:03.8;Hor;0.55;0.21;81;16.58;;13.84;13.41;12.89;23.23;Sbc;;;;;;;;2MASX J03251901-5142037,ESO 200-020,ESO-LV 200-0200,PGC 012790;;; -IC1927;**;03:25:19.69;-51:43:10.0;Hor;;;;;;;;;;;;;;;;;;;;Identification as IC 1927 is uncertain.; -IC1928;G;03:27:29.18;-21:33:36.6;Eri;1.77;0.46;30;14.09;;10.96;10.25;9.95;23.36;Sab;;;;;;;;2MASX J03272918-2133367,ESO 548-020,ESO-LV 548-0200,MCG -04-09-013,PGC 012884;;; -IC1929;G;03:25:25.85;-51:16:01.9;Hor;0.94;0.59;139;14.88;;12.04;11.39;11.01;23.19;SBab;;;;;;;;2MASX J03252584-5116017,ESO 200-021,ESO-LV 200-0210,PGC 012799;;; -IC1930;G;03:28:46.26;+04:23:00.8;Tau;0.76;0.62;14;15.81;;12.19;11.24;10.97;24.07;E;;;;;;;;2MASX J03284626+0423007,PGC 1267477;;;B-Mag taken from LEDA. -IC1931;G;03:28:57.72;+01:45:02.6;Tau;0.80;0.76;78;15.50;;12.37;11.55;11.71;23.77;;;;;;;;;2MASX J03285772+0145026,MCG +00-09-087,PGC 012950;;; -IC1932;G;03:25:54.03;-51:20:35.4;Hor;0.94;0.41;15;15.38;;12.50;11.62;10.54;23.98;S0;;;;;;;;2MASX J03255402-5120355,ESO 200-022,ESO-LV 200-0220,PGC 012817;;; -IC1933;G;03:25:39.89;-52:47:07.8;Hor;2.27;1.21;54;12.91;;10.97;10.33;10.20;22.90;Sc;;;;;;;;2MASX J03253988-5247077,ESO 155-025,ESO-LV 155-0250,IRAS 03242-5257,PGC 012807;;; -IC1934;G;03:31:14.02;+42:47:32.2;Per;0.99;0.51;135;16.00;;11.42;10.70;10.40;24.30;S0;;;;;;;;2MASX J03311401+4247319,PGC 013080,UGC 02769;;; -IC1935;G;03:26:13.30;-50:00:37.6;Hor;1.00;0.71;67;14.36;;12.93;12.42;11.83;23.08;Sc;;;;;;;;2MASX J03261329-5000376,ESO 200-023,ESO-LV 200-0230,PGC 012833;;; -IC1936;G;03:26:28.04;-51:19:23.5;Hor;0.64;0.30;146;16.03;;13.03;12.25;11.96;23.19;Sc;;;;;;;;2MASX J03262806-5119235,ESO 200-024,ESO-LV 200-0240,PGC 012847;;; -IC1937;G;03:26:47.64;-48:42:09.2;Hor;0.89;0.54;58;14.88;;13.03;12.75;12.20;22.90;Sc;;;;;;;;2MASX J03264771-4842094,ESO 200-025,ESO-LV 200-0250,PGC 012856;;A-M +1m RA error.; -IC1938;G;03:27:10.44;-53:00:35.6;Hor;0.82;0.61;82;15.50;;13.80;13.84;13.33;23.61;Sb;;;;;;;;2MASX J03271046-5300354,ESO 155-032,ESO-LV 155-0320,PGC 012874,TYC 8493-977-1;;; -IC1939;Other;03:27:44.57;-51:04:15.3;Hor;;;;;;;;;;;;;;;;;;;;"Nothing here; probably a defect on the Harvard plate."; -IC1940;G;03:27:42.34;-52:08:22.0;Hor;0.96;0.87;37;14.77;;11.78;11.16;10.84;23.29;Sab;;;;;;;;2MASX J03274235-5208220,ESO 200-026,ESO-LV 200-0260,PGC 012896;;; -IC1941;Other;03:32:14.94;+24:23:01.4;Tau;;;;;;;;;;;;;;;;;;;;Line of three or four stars.; -IC1942;GPair;03:27:53.30;-52:40:37.0;Hor;0.70;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1942 NED01;G;03:27:52.75;-52:40:38.9;Hor;0.39;0.12;179;17.28;;;;;23.37;E;;;;;;;;PGC 012907;;;B-Mag taken from LEDA. -IC1942 NED02;G;03:27:53.91;-52:40:32.9;Hor;0.89;0.69;10;15.36;;11.74;11.02;10.62;23.92;E;;;;;;;;2MASX J03275389-5240329,ESO 155-034,ESO-LV 155-0340,PGC 012908;;; -IC1943;Dup;03:38:44.87;-44:06:02.2;Hor;;;;;;;;;;;;;;;1411;;;;;; -IC1944;G;03:29:40.00;-47:59:46.2;Hor;0.50;0.36;15;15.74;;13.40;12.93;12.65;22.72;Sc;;;;;;;;2MASX J03293999-4759461,ESO 200-028,ESO-LV 200-0280,PGC 012987;;; -IC1945;G;03:29:16.56;-52:37:37.8;Hor;0.81;0.26;127;16.00;;12.81;12.07;11.84;24.45;S0-a;;;;;;;;2MASX J03291659-5237384,ESO 155-038,ESO-LV 155-0380,PGC 012970;;; -IC1946;G;03:29:22.19;-52:37:09.6;Hor;0.91;0.45;64;15.30;;12.04;11.42;10.99;23.68;S0-a;;;;;;;;2MASX J03292219-5237094,ESO 155-039,ESO-LV 155-0390,PGC 012972;;; -IC1947;G;03:30:32.82;-50:20:18.7;Hor;0.58;0.49;131;15.50;;12.76;12.04;11.77;22.89;Sc;;;;;;;;2MASX J03303282-5020186,ESO 200-030,ESO-LV 200-0300,PGC 013027;;; -IC1948;G;03:30:50.05;-47:57:53.5;Hor;0.83;0.64;162;15.53;;13.93;13.06;13.12;23.75;Sb;;;;;;;;2MASX J03305004-4757533,ESO 200-032,ESO-LV 200-0320,PGC 013045;;; -IC1949;G;03:30:52.82;-47:58:45.3;Hor;1.18;0.87;16;13.85;;11.55;10.79;10.50;22.57;SBc;;;;;;;;2MASX J03305283-4758453,ESO 200-033,ESO-LV 200-0330,IRAS 03293-4808,PGC 013047;;; -IC1950;G;03:31:04.52;-50:26:00.3;Hor;1.56;0.42;153;14.93;;12.28;11.53;11.16;23.70;Sc;;;;;;;;2MASX J03310449-5026004,ESO 200-035,ESO-LV 200-0350,IRAS 03295-5036,PGC 013053;;; -IC1951;G;03:30:56.33;-53:07:34.3;Hor;0.54;0.16;56;17.12;;14.21;13.60;13.11;23.54;Sbc;;;;;;;;2MASX J03305634-5307343,ESO 155-043,ESO-LV 155-0430,PGC 013048;;; -IC1952;G;03:33:26.67;-23:42:46.0;Eri;2.58;0.55;140;13.57;;10.82;10.13;9.87;23.18;SBbc;;;;;;;;2MASX J03332668-2342460,ESO 482-008,ESO-LV 482-0080,IRAS 03312-2352,MCG -04-09-025,PGC 013171;;; -IC1953;G;03:33:41.87;-21:28:43.1;Eri;2.26;1.19;125;12.41;;10.53;9.72;9.65;22.36;Sc;;;;;;;;2MASX J03334188-2128430,ESO 548-038,ESO-LV 548-0380,IRAS 03314-2138,MCG -04-09-026,PGC 013184,UGCA 078;;; -IC1954;G;03:31:31.39;-51:54:17.4;Hor;2.99;1.71;60;12.14;;9.65;9.01;8.75;22.84;Sb;;;;;;;;2MASX J03313139-5154175,ESO 200-036,ESO-LV 200-0360,IRAS 03300-5204,PGC 013090;;The APM position is southwest of the nucleus.; -IC1955;G;03:31:24.68;-57:14:30.7;Ret;0.68;0.55;176;15.76;;13.91;13.22;13.07;23.48;Sbc;;;;;;;;2MASX J03312472-5714305,ESO 155-045,ESO-LV 155-0450,PGC 013086;;; -IC1956;G;03:35:33.17;+05:04:01.2;Tau;1.32;0.47;33;15.60;;11.82;10.91;10.62;24.06;Sbc;;;;;;;;2MASX J03353316+0504013,IRAS 03329+0454,MCG +01-10-001,PGC 013279,SDSS J033533.14+050401.4,UGC 02795;;; -IC1957;G;03:32:13.48;-52:27:23.9;Hor;1.02;0.18;33;16.53;;12.85;11.98;11.64;23.83;Sc;;;;;;;;2MASX J03321348-5227239,ESO 155-048,ESO-LV 155-0480,PGC 013120;;; -IC1958;G;03:32:46.41;-51:26:30.1;Hor;0.46;0.27;79;16.02;;13.18;12.50;12.31;22.64;Sc;;;;;;;;2MASX J03324641-5126301,ESO 200-038,ESO-LV 200-0380,PGC 013144;;; -IC1959;G;03:33:12.59;-50:24:51.3;Hor;3.05;0.72;148;13.32;12.96;11.77;11.22;11.04;23.08;SBm;;;;;;;;2MASX J03331257-5024511,ESO 200-039,ESO-LV 200-0390,IRAS 03317-5034,PGC 013163;;; -IC1960;G;03:32:32.97;-57:12:23.8;Ret;1.13;0.27;111;15.20;;11.85;11.14;10.82;23.39;Sab;;;;;;;;2MASX J03323295-5712236,ESO 155-050,ESO-LV 155-0500,PGC 013135;;; -IC1961;G;03:33:33.35;-48:57:02.3;Hor;0.63;0.42;19;15.47;;13.27;12.50;12.23;22.88;Sc;;;;;;;;2MASX J03333334-4857022,ESO 200-041,ESO-LV 200-0410,IRAS 03320-4907,PGC 013175;;; -IC1962;G;03:35:37.49;-21:17:38.6;Eri;2.25;0.50;1;14.67;;;;;23.92;SBd;;;;;;;;ESO 548-050,ESO-LV 548-0500,MCG -04-09-031,PGC 013283;;; -IC1963;Dup;03:35:31.04;-34:26:49.4;For;;;;;;;;;;;;;;;;0335;;;;; -IC1964;G;03:33:30.08;-53:10:23.3;Ret;0.55;0.34;92;16.60;;13.64;13.24;12.59;23.59;Sbc;;;;;;;;2MASX J03333007-5310232,ESO 155-052,ESO-LV 155-0520,PGC 013173;;; -IC1965;G;03:33:11.04;-56:33:14.7;Ret;0.96;0.63;117;15.56;;;;;23.91;SABc;;;;;;;;ESO 155-051,ESO-LV 155-0510,PGC 013162;;; -IC1966;G;03:34:03.39;-51:19:20.1;Hor;0.58;0.25;114;15.60;;14.37;13.55;13.82;22.46;Scd;;;;;;;;2MASX J03340340-5119200,ESO 200-042,ESO-LV 200-0420,PGC 013206;;; -IC1967;G;03:37:47.72;+03:16:15.7;Tau;0.83;0.44;64;14.50;;12.06;11.10;11.14;23.07;Sbc;;;;;;;;2MASX J03374771+0316157,MCG +00-10-008,PGC 013382;;; -IC1968;G;03:34:37.79;-50:39:04.6;Hor;0.46;0.35;97;16.19;;13.54;12.84;12.46;22.96;Sc;;;;;;;;2MASX J03343778-5039046,ESO 200-043,ESO-LV 200-0430,PGC 013236;;; -IC1969;G;03:36:13.86;-45:10:46.6;Hor;1.32;0.35;39;15.60;14.88;12.34;11.75;11.41;24.14;Sab;;;;;;;;2MASX J03361383-4510465,ESO 249-005,ESO-LV 249-0050,PGC 013303;;; -IC1970;G;03:36:31.52;-43:57:24.6;Hor;2.99;0.76;75;12.86;12.44;10.17;9.40;9.08;23.14;Sb;;;;;;;;2MASX J03363152-4357246,ESO 249-007,ESO-LV 249-0070,IRAS 03348-4407,MCG -07-08-003,PGC 013322;;Confused HIPASS source; -IC1971;G;03:35:57.39;-52:39:04.5;Hor;0.78;0.38;173;15.90;;;;;23.59;Sab;;;;;;;;PGC 013295;;;B-Mag taken from LEDA. -IC1972;G;03:36:21.32;-51:58:05.3;Hor;0.69;0.20;152;16.40;;;;;23.39;Sc;;;;;;;;ESO 200-048,ESO-LV 200-0480,PGC 013310;;; -IC1973;G;03:36:21.02;-51:59:39.0;Hor;0.50;0.19;10;16.70;;14.40;13.36;13.11;23.93;;;;;;;;;2MASX J03362106-5159390,ESO 200-049,ESO-LV 200-0490,PGC 013309;;; -IC1974;G;03:36:42.24;-49:33:01.0;Hor;0.78;0.36;159;15.89;;12.52;11.85;11.66;23.44;Sc;;;;;;;;2MASX J03364221-4933010,ESO 200-050,ESO-LV 200-0500,PGC 013325;;; -IC1975;G;03:39:03.55;-15:30:00.5;Eri;0.42;0.38;65;15.85;;13.81;13.38;13.09;22.40;;;;;;;;;2MASX J03390357-1530005,PGC 3080474;;; -IC1976;G;03:37:08.76;-47:26:16.5;Hor;0.80;0.59;128;15.77;;;;;23.72;Scd;;;;;;;;ESO 200-051,ESO-LV 200-0510,PGC 013355;;; -IC1977;G;03:40:45.12;+17:44:28.2;Tau;0.85;0.62;180;14.60;;11.27;10.52;10.14;22.88;Sb;;;;;;;;2MASX J03404513+1744282,IRAS 03378+1734,MCG +03-10-005,PGC 013536,UGC 02815;;; -IC1978;G;03:37:05.59;-50:09:03.0;Hor;1.21;0.20;8;15.69;;13.10;12.40;12.23;23.87;Sab;;;;;;;;2MASX J03370562-5009029,ESO 200-052,ESO-LV 200-0520,PGC 013350;;; -IC1979;**;03:36:46.27;-57:56:40.4;Ret;;;;;;;;;;;;;;;;;;;;; -IC1980;G;03:36:58.99;-57:58:25.9;Ret;1.27;0.41;21;14.95;;;;;23.40;Sb;;;;;;;;ESO 117-002,ESO-LV 117-0020,PGC 013345;;; -IC1981;Dup;03:40:29.37;-26:51:44.1;For;;;;;;;;;;;;;;;1412;;;;;; -IC1982;G;03:37:42.47;-57:46:34.6;Ret;0.49;0.39;61;15.65;;13.52;12.65;12.34;22.80;Sab;;;;;;;;2MASX J03374249-5746347,ESO 117-004,ESO-LV 117-0040,PGC 013378;;; -IC1983;Dup;03:40:56.86;-22:33:52.1;Eri;;;;;;;;;;;;;;;1415;;;;;; -IC1984;G;03:39:50.23;-47:04:33.0;Hor;0.75;0.25;139;16.38;;13.35;12.78;12.46;23.53;Sc;;;;;;;;2MASX J03395025-4704327,ESO 249-012,ESO-LV 249-0120,PGC 013487;;; -IC1985;Dup;03:44:34.19;+32:09:46.2;Per;;;;;;;;;;;;;;;;0348;;;;; -IC1986;G;03:40:35.15;-45:21:20.9;Hor;1.27;0.23;102;14.84;;;;;22.67;Sm;;;;;;;;ESO 249-013,ESO-LV 249-0130,PGC 013521;;; -IC1987;GGroup;03:40:11.27;-55:03:17.3;Ret;1.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC1987 NED01;G;03:40:09.69;-55:03:17.6;Ret;0.56;0.32;147;16.50;;;;;24.00;;;;;;;;;PGC 413193;;;B-Mag taken from LEDA. -IC1987 NED02;G;03:40:11.54;-55:03:32.7;Ret;0.78;0.28;11;14.58;;11.92;11.18;11.22;24.28;E;;;;;;;;2MASX J03401154-5503325,PGC 013502;;; -IC1987 NED03;G;03:40:12.04;-55:03:12.4;Ret;0.79;0.79;0;16.39;;;;;25.27;;;;;;;;;PGC 2801162;;;B-Mag taken from LEDA. -IC1987 NED04;G;03:40:12.21;-55:03:22.6;Ret;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC1988;Other;03:42:45.61;-39:53:13.6;Eri;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position. IC 1988 may be NGC 1425."; -IC1989;G;03:41:54.67;-50:57:28.1;Hor;1.37;0.76;132;14.60;;11.50;10.84;10.42;23.97;E-S0;;;;;;;;2MASX J03415466-5057282,ESO 200-055,ESO-LV 200-0550,PGC 013581;;; -IC1990;Neb;03:47:13.83;+24:20:02.0;Tau;;;;;;;;;;;;;;;;;;;;; -IC1991;G;03:44:46.79;-51:31:24.3;Hor;0.84;0.28;40;16.17;;13.39;13.14;12.53;23.56;Sc;;;;;;;;2MASX J03444677-5131242,ESO 200-056,ESO-LV 200-0560,PGC 013734;;; -IC1992;Other;03:45:08.04;-51:00:16.9;Hor;;;;;;;;;;;;;;;;;;;;Nominal position. Probably a defect on the original Harvard plate.; -IC1993;G;03:47:04.81;-33:42:35.5;For;2.81;2.48;57;12.50;;9.59;8.97;8.71;23.41;SABb;;;;;;;;2MASX J03470480-3342354,ESO 358-065,ESO-LV 358-0650,IRAS 03451-3351,MCG -06-09-032,PGC 013840;;Marginal HIPASS detection.; -IC1994;G;03:45:55.05;-51:38:36.0;Hor;0.73;0.22;4;16.01;;;;;24.05;;;;;;;;;ESO 200-058,ESO-LV 200-0580,PGC 013795;;; -IC1995;Neb;03:50:18.54;+25:34:50.8;Tau;2.00;2.00;90;;;;;;;;;;;;;;;;;;Diameters taken from SIMBAD. -IC1996;G;03:45:07.69;-57:19:29.3;Ret;0.92;0.21;102;16.35;;13.09;12.55;12.22;23.64;Sc;;;;;;;;2MASX J03450768-5719296,ESO 156-010,ESO-LV 156-0100,PGC 013755;;; -IC1997;G;03:44:51.90;-59:08:15.6;Ret;1.01;0.70;76;14.54;;12.52;11.86;11.60;22.60;Sa;;;;;;;;2MASX J03445178-5908166,ESO 117-007,ESO-LV 117-0070,PGC 013740;;; -IC1998;G;03:51:31.32;+01:11:23.3;Tau;0.77;0.61;12;15.70;;11.64;10.88;10.73;24.00;E;;;;;;;;2MASX J03513133+0111232,PGC 013978,SDSS J035131.31+011123.2,SDSS J035131.31+011123.3,SDSS J035131.32+011123.3;;; -IC1999;G;03:47:42.84;-56:57:07.5;Ret;0.79;0.68;148;15.50;;13.04;12.33;11.97;23.89;Sbc;;;;;;;;2MASX J03474282-5657073,ESO 156-014,ESO-LV 156-0140,PGC 013861;;; -IC2000;G;03:49:07.74;-48:51:29.5;Hor;4.88;0.85;82;12.90;;11.08;10.48;10.18;23.65;SBc;;;;;;;;2MASX J03490774-4851294,ESO 201-003,ESO-LV 201-0030,IRAS 03476-4900,PGC 013912;;The APM position is east of the center of the galaxy.; -IC2001;**;03:50:51.72;-48:35:58.7;Hor;;;;;;;;;;;;;;;;;;;;; -IC2002;Dup;03:54:30.35;+10:42:25.2;Tau;;;;;;;;;;;;;;;1474;;;;;; -IC2003;PN;03:56:22.03;+33:52:29.5;Per;0.14;;;12.60;11.40;12.43;12.28;11.51;;;;14.70;15.00;;;;;2MASX J03562202+3352292,IRAS 03531+3343 ,PK 161-14 1,PN G161.2-14.8;;Identified as a planetary neb. by Strauss, et al (1992, ApJS, 83, 29).; -IC2004;G;03:51:45.73;-49:25:10.6;Hor;0.91;0.68;46;15.02;;;;;23.45;S0-a;;;;;;;;ESO 201-006,ESO-LV 201-0060,PGC 013986;;; -IC2005;G;03:57:39.54;+36:47:14.9;Per;0.34;0.23;47;15.70;;11.03;10.27;9.90;23.07;E;;;;;;;;2MASX J03573954+3647149,PGC 014168;;; -IC2006;G;03:54:28.45;-35:58:01.7;Eri;2.36;1.98;35;12.39;;9.40;8.73;8.48;22.97;E;;;;;;;;2MASX J03542842-3558017,ESO 359-007,ESO-LV 359-0070,MCG -06-09-037,PGC 014077;;; -IC2007;G;03:55:22.76;-28:09:30.0;Eri;1.29;0.60;48;13.70;;11.33;10.71;10.42;22.44;Sbc;;;;;;2008;;2MASX J03552274-2809299,ESO 419-011,ESO-LV 419-0110,IRAS 03533-2818,MCG -05-10-005,PGC 014106,PGC 014110;;Position in 1997AJ....113.1548C is incorrect.; -IC2008;Dup;03:55:22.76;-28:09:30.0;Eri;;;;;;;;;;;;;;;;2007;;;;; -IC2009;G;03:53:34.85;-48:59:22.1;Hor;1.50;0.99;66;14.61;;;;;24.09;IAB;;;;;;;;ESO 201-008,ESO-LV 201-0080,PGC 014041;;; -IC2010;G;03:51:58.03;-59:55:45.7;Ret;1.19;0.48;71;14.52;;11.85;11.16;10.85;23.07;SABa;;;;;;;;2MASX J03515803-5955459,ESO 117-011,ESO-LV 117-0110,IRAS 03510-6004,PGC 013995;;; -IC2011;**;03:52:27.15;-57:28:06.3;Ret;;;;;;;;;;;;;;;;;;;;; -IC2012;GPair;03:52:55.32;-58:39:03.6;Ret;0.70;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC2012 NED01;G;03:52:55.26;-58:38:58.4;Ret;0.51;0.42;18;16.25;;13.02;12.41;12.14;23.60;S0-a;;;;;;;;2MASX J03525527-5838584,ESO 117-013,ESO-LV 117-0130,PGC 014027;;; -IC2013;Other;03:56:44.06;-17:06:34.2;Eri;;;;;;;;;;;;;;;;;;;;"Nothing here; probably a defect on the original Harvard plate."; -IC2014;G;03:55:21.68;-56:44:46.7;Ret;0.63;0.47;18;15.52;;13.50;13.06;12.80;23.17;SBc;;;;;;;;2MASX J03552167-5644468,ESO 156-020,ESO-LV 156-0200,PGC 014108;;; -IC2015;G;03:58:11.42;-40:23:20.9;Hor;0.59;0.44;102;15.65;;13.77;13.12;12.92;22.96;Sc;;;;;;;;2MASX J03581143-4023205,ESO 302-022,ESO-LV 302-0220,PGC 014184;;; -IC2016;G;04:01:59.87;+20:14:25.6;Tau;0.51;0.25;2;15.70;;12.51;11.75;11.43;23.16;S0;;;;;;;;2MASX J04015988+2014255,PGC 014322;;; -IC2017;G;03:56:39.37;-59:23:41.1;Ret;1.11;0.74;21;14.90;;11.88;11.07;10.69;23.88;S0;;;;;;;;2MASX J03563937-5923413,ESO 117-015,ESO-LV 117-0150,IRAS 03557-5932,PGC 014140;;; -IC2018;G;03:57:54.53;-52:46:52.0;Dor;0.79;0.55;137;15.76;;12.94;11.91;11.58;23.57;SABb;;;;;;;;2MASX J03575450-5246522,ESO 156-021,ESO-LV 156-0210,PGC 014173;;; -IC2019;G;04:01:53.65;+05:38:22.0;Tau;0.84;0.47;64;15.30;;11.02;10.28;9.92;23.61;S0;;;;;;;;2MASX J04015363+0538221,MCG +01-11-007 NED02,PGC 014324,UGC 02930 NED02;;; -IC2020;G;03:58:53.14;-54:03:27.4;Ret;0.67;0.53;58;15.61;;13.78;13.31;13.01;23.21;Sc;;;;;;;;2MASX J03585313-5403271,ESO 156-022,ESO-LV 156-0220,PGC 014211;;; -IC2021;G;03:59:23.93;-52:39:24.2;Dor;0.65;0.49;123;15.75;;12.99;12.39;11.71;23.21;Sbc;;;;;;;;2MASX J03592393-5239243,ESO 156-024,ESO-LV 156-0240,PGC 014229;;; -IC2022;G;03:58:40.01;-59:02:37.2;Ret;1.10;0.24;1;16.13;;14.10;13.32;13.21;23.85;Sc;;;;;;;;2MASX J03584002-5902371,ESO 117-017,ESO-LV 117-0170,PGC 014203;;; -IC2023;G;03:59:40.63;-52:40:52.1;Dor;0.59;0.44;43;15.85;;13.13;12.58;12.31;23.14;Sc;;;;;;;;2MASX J03594064-5240523,ESO 156-025,ESO-LV 156-0250,PGC 014238;;; -IC2024;G;04:00:04.14;-53:22:15.6;Ret;1.10;0.26;30;15.54;;12.24;11.54;11.08;23.23;SBc;;;;;;;;2MASX J04000411-5322153,ESO 156-026,ESO-LV 156-0260,IRAS 03588-5330,PGC 014249;;; -IC2025;G;04:00:23.18;-53:03:56.2;Ret;1.16;0.25;124;16.00;;12.97;12.10;11.90;24.12;Sb;;;;;;;;2MASX J04002318-5303564,ESO 156-028,ESO-LV 156-0280,PGC 014257;;; -IC2026;Dup;04:03:55.20;-11:10:44.5;Eri;;;;;;;;;;;;;;;1509;;;;;; -IC2027;G;04:06:39.59;+37:06:56.7;Per;0.94;0.78;100;16.00;;11.07;10.31;9.97;24.27;E;;;;;;;;2MASX J04063959+3706567,MCG +06-09-019,PGC 014473,UGC 02957;;; -IC2028;G;04:01:18.23;-52:42:26.8;Dor;0.86;0.52;54;14.94;;11.95;11.24;11.03;23.06;Sc;;;;;;;;2MASX J04011823-5242268,ESO 156-032,ESO-LV 156-0320,LEDA 439854,PGC 014299;;; -IC2029;G;04:01:17.95;-52:48:02.8;Dor;1.03;0.40;180;15.73;;13.05;12.32;12.20;23.65;SBc;;;;;;;;2MASX J04011794-5248028,ESO 156-033,ESO-LV 156-0330,PGC 014298;;; -IC2030;Other;04:04:56.29;-19:13:53.3;Eri;;;;;;;;;;;;;;;;;;;;"Nothing here; probably a defect on the original Harvard plate."; -IC2031;G;04:06:14.72;-05:39:06.8;Eri;0.56;0.48;103;15.97;;12.58;11.89;11.66;22.99;Sab;;;;;;;;2MASX J04061469-0539065,PGC 146069,SDSS J040614.72-053906.7,SDSS J040614.72-053906.8;;; -IC2032;G;04:07:03.04;-55:19:25.8;Dor;1.12;0.41;75;14.78;14.73;;;;23.02;IAB;;;;;;;;ESO 156-042,ESO-LV 156-0420,PGC 014481;;; -IC2033;G;04:07:14.42;-53:40:51.3;Dor;1.19;0.47;127;15.01;;11.95;11.35;11.02;23.66;SABa;;;;;;;;2MASX J04071443-5340513,ESO 156-043,ESO-LV 156-0430,PGC 014491;;; -IC2034;G;04:06:36.83;-57:57:41.0;Ret;1.35;0.20;119;15.89;;13.11;12.41;11.87;23.79;Sc;;;;;;;;2MASX J04063682-5757409,ESO 117-022,ESO-LV 117-0220,PGC 014469;;; -IC2035;G;04:09:01.87;-45:31:03.1;Hor;1.41;1.17;84;12.48;;9.81;9.13;8.87;21.91;E-S0;;;;;;;;2MASX J04090186-4531029,ESO 250-007,ESO-LV 250-0070,PGC 014558;;; -IC2036;G;04:09:55.10;-39:41:19.3;Eri;1.12;0.73;84;14.47;;11.26;10.77;10.33;23.03;SBc;;;;;;;;2MASX J04095508-3941194,ESO 303-001,ESO-LV 303-0010,MCG -07-09-010,PGC 014586;;; -IC2037;G;04:08:19.00;-58:45:04.2;Ret;1.74;0.30;90;14.76;;11.58;10.80;10.45;23.57;Sb;;;;;;;;2MASX J04081898-5845042,ESO 118-001,ESO-LV 118-0010,PGC 014521;;; -IC2038;G;04:08:53.75;-55:59:22.4;Dor;1.85;0.49;155;14.82;;14.69;14.39;14.11;24.32;Scd;;;;;;;;2MASX J04085379-5559221,ESO 157-001,ESO-LV 157-0010,PGC 014553;;; -IC2039;G;04:09:02.37;-56:00:42.1;Dor;1.09;0.93;124;14.97;;12.90;12.35;11.96;23.92;E-S0;;;;;;;;2MASX J04090238-5600421,ESO 157-002,ESO-LV 157-0020,PGC 014560;;; -IC2040;G;04:12:59.77;-32:33:11.8;Eri;1.35;0.66;68;13.59;;11.60;10.95;10.86;23.00;S0-a;;;;;;;;2MASX J04125976-3233116,ESO 359-030,ESO-LV 359-0300,IRAS 04110-3240,MCG -05-11-004,PGC 014670,PGC 014671;;; -IC2041;G;04:12:34.90;-32:49:02.5;Eri;1.07;0.74;136;14.77;;12.41;11.72;11.72;23.55;S0;;;;;;2048;;2MASX J04123491-3249023,ESO 359-028,ESO-LV 359-0280,PGC 014656;;; -IC2042;*;04:11:43.26;-47:16:12.3;Hor;;;;11.36;10.94;9.72;9.37;9.31;;;;;;;;;;2MASS J04114301-4716159,TYC 8068-402-1;;; -IC2043;G;04:11:09.45;-53:41:11.9;Dor;1.43;0.27;12;15.29;;11.82;11.03;10.58;23.87;Sb;;;;;;;;2MASX J04110945-5341121,ESO 157-004,ESO-LV 157-0040,PGC 014623;;; -IC2044;G;04:11:13.97;-54:31:57.2;Dor;0.62;0.38;54;16.50;;;;;23.71;SABc;;;;;;;;ESO 157-006,ESO-LV 157-0060,PGC 014624;;; -IC2045;G;04:14:36.01;-13:10:29.7;Eri;0.91;0.68;126;15.29;;11.75;11.00;10.86;24.04;E;;;;;;;;2MASX J04143599-1310289,MCG -02-11-027,PGC 014722;;This may also be NGC 1538.; -IC2046;G;04:11:24.54;-54:40:23.5;Dor;0.82;0.56;104;15.12;;12.70;12.05;11.80;23.11;SBbc;;;;;;;;2MASX J04112453-5440237,ESO 157-007,ESO-LV 157-0070,PGC 014628;;; -IC2047;Dup;04:14:56.08;-13:11:30.2;Eri;;;;;;;;;;;;;;;1538;;;;;; -IC2048;Dup;04:12:34.90;-32:49:02.5;Eri;;;;;;;;;;;;;;;;2041;;;;; -IC2049;G;04:12:04.28;-58:33:25.2;Ret;1.06;0.80;10;15.15;14.74;;;;23.23;SABc;;;;;;;;ESO 118-009,ESO-LV 118-0090,PGC 014636;;; -IC2050;G;04:13:56.13;-53:28:31.3;Dor;1.17;0.82;36;14.78;;12.18;11.60;11.08;23.32;SBb;;;;;;;;2MASX J04135610-5328312,ESO 157-011,ESO-LV 157-0110,PGC 014704;;; -IC2051;G;03:52:00.83;-83:49:50.5;Men;2.86;1.72;68;12.32;;9.09;8.36;8.11;22.87;SBbc;;;;;;;;2MASX J03520081-8349503,ESO 004-007,ESO-LV 4-0070,IRAS 03583-8358,PGC 013999;;; -IC2052;G;04:14:58.52;-54:20:10.3;Dor;1.06;0.39;165;15.37;;;;;23.41;Sc;;;;;;;;2MASX J04145853-5420159,2MASX J04145854-5420104,PGC 014729;;The 2MASS XSC position applies to a knot 5.7 arcsec south of the nucleus.;B-Mag taken from LEDA. -IC2053;G;04:15:55.62;-49:21:30.0;Dor;0.53;0.48;73;15.26;;12.61;11.84;11.65;22.65;S0-a;;;;;;;;2MASX J04155565-4921300,ESO 201-028,ESO-LV 201-0280,PGC 014760;;ESO Declination -10 arcmin in error for ESO 201- ? 027.; -IC2054;G;04:07:26.34;-78:15:11.9;Men;0.46;0.42;115;16.37;;13.69;12.99;12.66;23.36;Sab;;;;;;;;2MASX J04072636-7815116,ESO 015-007,ESO-LV 15-0070,PGC 014497;;; -IC2055;Other;04:17:48.52;-48:55:26.8;Dor;;;;;;;;;;;;;;;;;;;;"Nothing here; probably a defect on the original Harvard plate."; -IC2056;G;04:16:24.54;-60:12:24.5;Ret;1.85;1.61;14;12.49;;10.03;9.39;9.15;22.39;Sbc;;;;;;;;2MASX J04162454-6012246,ESO 118-016,ESO-LV 118-0160,IRAS 04155-6019,PGC 014773;;; -IC2057;G;04:21:56.09;+04:02:55.1;Tau;0.63;0.52;65;15.20;;11.62;10.96;10.51;22.80;SABa;;;;;;;;2MASX J04215608+0402552,IRAS 04192+0355,PGC 014962;;; -IC2058;G;04:17:54.35;-55:55:58.4;Dor;3.40;0.48;18;13.90;;11.95;11.09;10.99;23.46;Scd;;;;;;;;2MASX J04175435-5555583,ESO 157-018,ESO-LV 157-0180,IRAS 04168-5603,PGC 014824;;Confused HIPASS source; -IC2059;G;04:20:26.30;-31:43:28.5;Eri;1.34;0.55;170;13.87;;10.84;10.17;9.91;23.30;S0;;;;;;;;2MASX J04202629-3143286,ESO 420-017,ESO-LV 420-0170,MCG -05-11-007,PGC 014910;;Identification as IC 2059 is called doubtful in ESO/U, is absent in MCG.; -IC2060;G;04:17:53.36;-56:36:58.5;Ret;1.25;0.82;158;14.32;;11.31;10.63;10.31;24.05;E-S0;;;;;;;;2MASX J04175334-5636583,ESO 157-019,ESO-LV 157-0190,PGC 014823;;; -IC2061;Other;04:24:00.13;+21:04:59.5;Tau;;;;;;;;;;;;;;;;;;;;"Nothing here; probably a defect on the original Harvard plate."; -IC2062;*;04:32:01.86;+71:55:11.5;Cam;;;;;;;;;;;;;;;;;;;;RC2 is incorrect in equating IC 2062 with NGC 1560.; -IC2063;G;04:22:40.32;-15:39:37.8;Eri;0.87;0.48;174;19.34;;12.55;11.93;11.54;22.90;Sab;;;;;;;;2MASX J04224035-1539374,LEDA 908152,MCG -03-12-005;;; -IC2064;G;04:23:26.74;-15:41:06.6;Eri;0.53;0.47;47;16.32;;12.92;12.53;11.99;23.38;;;;;;;;;2MASX J04232671-1541070,PGC 146225;;; -IC2065;G;04:21:27.98;-55:55:59.9;Dor;1.19;0.39;36;14.60;;11.77;11.08;10.87;23.25;Sa;;;;;;;;2MASX J04212799-5555598,ESO 157-021,ESO-LV 157-0210,PGC 014943;;; -IC2066;G;04:23:32.33;-54:44:00.2;Dor;0.86;0.64;133;15.26;;12.60;11.55;11.56;23.38;SBbc;;;;;;;;2MASX J04233231-5444002,ESO 157-025,ESO-LV 157-0250,PGC 015019;;; -IC2067;Neb;04:30:51.03;+35:26:46.2;Per;;;;12.36;11.49;;;;;;;;;;;;;;;; -IC2068;G;04:26:36.88;-42:05:37.4;Cae;1.29;0.91;171;14.29;;11.00;10.36;10.01;23.43;S0-a;;;;;;;;2MASX J04263689-4205372,ESO 303-017,ESO-LV 303-0170,MCG -07-10-004,PGC 015106;;; -IC2069;Other;04:25:56.14;-48:12:29.0;Cae;;;;;;;;;;;;;;;;;;;;"Nothing at this position; probably a defect on the Harvard plate."; -IC2070;G;04:24:35.69;-57:58:51.2;Dor;1.44;0.67;88;14.49;;11.94;11.10;11.13;23.39;SABc;;;;;;;;2MASX J04243569-5758512,ESO 118-023,ESO-LV 118-0230,PGC 015048;;; -IC2071;GGroup;04:26:13.19;-53:09:07.6;Dor;1.20;;;;;;;;;;;;;;;;;PGC 015088;;;NED lists this object as GGroup, but does not provide members positions. -IC2072;Other;04:26:54.60;-48:22:39.0;Cae;;;;;;;;;;;;;;;;;;;;"Nothing at this position; probably a defect on the Harvard plate."; -IC2073;G;04:26:33.84;-53:11:14.4;Dor;1.43;0.58;50;14.39;14.55;13.23;12.74;12.20;23.23;SBc;;;;;;;;2MASX J04263383-5311145,ESO 157-029,ESO-LV 157-0290,IRAS 04253-5317,PGC 015102;;; -IC2074;Other;04:31:23.03;+07:42:09.4;Tau;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC2075;Dup;04:30:51.59;-05:47:53.8;Eri;;;;;;;;;;;;;;;1594;;;;;; -IC2076;Other;04:28:07.81;-48:13:43.9;Cae;;;;;;;;;;;;;;;;;;;;"Nothing at this position; probably a defect on the Harvard plate."; -IC2077;Dup;04:32:06.12;+00:34:02.5;Tau;;;;;;;;;;;;;;;1593;;;;;; -IC2078;*;04:31:52.22;-04:41:55.3;Eri;;;;14.40;;13.24;12.88;12.77;;;;;;;;;;2MASS J04315226-0441553;;; -IC2079;G;04:28:30.82;-53:44:16.5;Dor;1.40;0.39;125;14.81;;11.95;11.23;10.88;23.59;Sab;;;;;;;;2MASX J04283084-5344167,ESO 157-033,ESO-LV 157-0330,PGC 015200,PGC 015279;;RC3 +1m RA error.; -IC2080;G;04:31:52.15;-05:45:24.6;Eri;0.78;0.47;15;15.55;;11.81;11.13;10.78;23.67;Sa;;;;;;;;2MASX J04315214-0545247,IRAS 04294-0551,PGC 015426;;; -IC2081;G;04:29:00.90;-53:36:49.3;Dor;1.00;0.77;75;14.46;;11.05;10.37;10.13;22.95;E-S0;;;;;;;;2MASX J04290090-5336493,ESO 157-034,ESO-LV 157-0340,PGC 015231,PGC 015272;;RC3 +30s RA error.; -IC2082;GPair;04:29:07.60;-53:49:38.0;Dor;1.40;;;;;;;;;;;;;;;;;ESO 157-035;;;Diameter of the group inferred by the author. -IC2082 NED01;G;04:29:08.21;-53:49:40.6;Dor;1.02;0.55;123;13.90;12.79;10.80;10.10;9.76;23.63;E-S0;;;;;;;;PGC 015239;;"SSEP24 source was ""passively deblended"". See 2010ApJS..191..212S."; -IC2082 NED02;G;04:29:07.02;-53:49:36.1;Dor;1.23;0.58;125;13.90;12.79;10.80;10.10;9.76;;E;;;;;;;;2MASX J04290824-5349403,PGC 075184;;; -IC2083;G;04:30:44.27;-53:58:51.0;Dor;0.95;0.51;102;14.92;;12.52;11.51;11.46;23.38;S0-a;;;;;;;;2MASX J04304429-5358512,ESO 157-037,ESO-LV 157-0370,PGC 015339;;; -IC2084;Other;04:32:06.17;-48:17:17.9;Cae;;;;;;;;;;;;;;;;;;;;"Nothing at this position; probably a defect on the Harvard plate."; -IC2085;G;04:31:24.24;-54:25:00.6;Dor;2.45;0.54;112;14.26;;11.38;10.69;10.40;24.51;S0-a;;;;;;;;2MASX J04312423-5425007,ESO 157-038,ESO-LV 157-0380,PGC 015388;;; -IC2086;G;04:31:32.17;-53:38:51.5;Dor;0.64;0.57;141;15.70;;12.83;12.43;11.74;23.61;E;;;;;;;;2MASX J04313219-5338514,ESO 157-040,ESO-LV 157-0400,PGC 015392;;; -IC2087;Neb;04:39:59.97;+25:44:32.0;Tau;4.00;4.00;;;;10.67;8.05;6.28;;;;;;;;;;2MASS J04395574+2545020,IRAS 04369+2539,LBN 813;;; -IC2088;Neb;04:31:04.56;+26:36:25.3;Tau;;;;;;;;;;;;;;;;;;;;The IC identification is not certain.; -IC2089;G;04:32:50.44;-75:32:22.0;Men;0.99;0.88;36;15.12;;14.33;13.59;12.94;23.77;Sm;;;;;;;;2MASX J04325040-7532214,ESO 032-015,ESO-LV 32-0150,PGC 015487;;Marginal HIPASS detection.; -IC2090;Other;04:44:44.07;-33:59:38.7;Cae;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2091;Other;04:46:39.22;-04:40:18.5;Eri;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -IC2092;Other;04:46:47.62;-04:56:36.1;Eri;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -IC2093;*;04:47:32.28;-02:42:32.5;Ori;;;;;;;;;;;;;;;;;;;;; -IC2094;G;04:48:24.83;-05:21:09.5;Eri;1.04;0.27;71;15.84;;;;;24.65;;;;;;;;;2MASX J04482483-0521095,LEDA 1045867,SDSS J044824.85-052109.7;;; -IC2095;G;04:48:45.63;-05:07:29.3;Eri;1.46;0.20;55;16.18;;;;;24.05;Sc;;;;;;;;MCG -01-13-014,PGC 016067;;; -IC2096;Other;04:49:40.86;-04:58:43.1;Eri;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -IC2097;G;04:50:24.22;-05:04:52.4;Eri;1.16;0.29;116;15.49;;13.60;12.83;12.72;23.15;IB;;;;;;;;2MASX J04502424-0504527,PGC 016134;;; -IC2098;G;04:50:44.31;-05:25:07.2;Eri;2.45;0.33;96;14.50;;11.48;10.56;10.20;23.74;Sc;;;;;;;;2MASX J04504430-0525067,IRAS 04482-0530,MCG -01-13-018,PGC 016144;;; -IC2099;Dup;04:50:52.07;-04:53:33.8;Eri;;;;;;;;;;;;;;;1677;;;;;; -IC2100;**;04:51:14.94;-04:49:51.3;Eri;;;;;;;;;;;;;;;;;;;;; -IC2101;G;04:51:42.24;-06:13:53.2;Eri;1.76;0.38;152;14.50;;11.52;10.75;10.44;23.17;SBc;;;;;;;;2MASX J04514224-0613532,IRAS 04492-0618,MCG -01-13-024,PGC 016187;;; -IC2102;G;04:51:55.32;-04:57:05.8;Eri;1.28;1.14;65;14.20;;14.32;13.59;14.11;23.70;SBc;;;;;;;;2MASX J04515534-0457055,MCG -01-13-027,PGC 016197,SDSS J045155.24-045707.4;;; -IC2103;G;04:39:48.05;-76:50:12.5;Men;2.02;0.34;88;14.66;;11.47;10.67;10.44;23.68;Sc;;;;;;;;2MASX J04394808-7650125,ESO 032-018,ESO-LV 32-0180,PGC 015758;;; -IC2104;G;04:56:18.96;-15:47:52.4;Lep;2.11;1.14;100;13.60;;10.94;10.23;10.06;23.67;Sbc;;;;;;;;2MASX J04561905-1547536,IRAS 04540-1552,MCG -03-13-034,PGC 016367;;; -IC2105;Cl+N;04:49:26.66;-69:12:03.3;Dor;0.65;0.60;170;9.90;11.30;;;;;;;;;;;;;2MASX J04492734-6912056,ESO 056-007,HD 269686,IRAS 04496-6917;;Within boundaries of LMC; -IC2106;G;04:56:33.89;-28:30:14.1;Cae;1.79;1.04;156;13.78;;11.02;10.32;10.04;23.32;SBb;;;;;;;;2MASX J04563389-2830140,ESO 422-012,ESO-LV 422-0120,IRAS 04545-2834,MCG -05-12-011,PGC 016373;;Confused HIPASS source; -IC2107;Dup;04:58:20.61;+08:14:18.1;Ori;;;;;;;;;;;;;;;1707;;;;;; -IC2108;Dup;04:57:17.07;-15:17:20.4;Lep;;;;;;;;;;;;;;;1710;;;;;; -IC2109;*;04:58:59.18;-00:18:19.1;Ori;;;;;;;;;;;;;;;;;;;;; -IC2110;*;04:59:01.80;-00:18:09.5;Ori;;;;;;;;;;;;;;;;;;;;; -IC2111;Cl+N;04:51:52.12;-69:23:31.8;Dor;0.65;0.55;130;;;;;;;;;;;;;;;2MASX J04515204-6923318,ESO 056-013;;One 2MASS source is 8.5 arcsec southwest of the center of the nebula.; -IC2112;G;05:00:30.15;+04:23:11.5;Ori;0.32;0.21;26;15.30;;12.32;11.52;11.20;22.76;;;;;;;;;2MASX J05003015+0423113,PGC 016534;;; -IC2113;Dup;04:59:31.83;-15:49:25.1;Lep;;;;;;;;;;;;;;;1730;;;;;; -IC2114;Dup;04:54:25.97;-69:11:02.8;Dor;;;;;;;;;;;;;;;1748;;;;;; -IC2115;*;04:57:08.72;-66:23:24.7;Dor;;;;11.39;11.27;11.10;11.08;10.97;;;;;;;;;;2MASS J04570882-6623251,HD 268726,TYC 8889-603-1,UCAC2 2670877;;The IC identification is uncertain.; -IC2116;HII;04:57:16.26;-66:23:20.5;Dor;0.60;0.60;;13.88;14.21;12.11;11.83;11.07;;;;;;;;;;2MASX J04571624-6623202,IRAS 04571-6627,UCAC4 119-004935;;"HII region in the LMC; nearly stellar on the DSS."; -IC2117;Cl+N;04:57:15.21;-68:26:29.3;Dor;1.00;0.90;110;;;;;;;;;;;;;;;2MASX J04571529-6826292;;"HII region in the LMC; part of the NGC 1770 association."; -IC2118;Dup;05:04:55.44;-07:15:56.3;Eri;;;;;;;;;;;;;;;1909;;;;;; -IC2119;G;05:06:50.95;-20:20:42.7;Lep;1.20;0.63;54;14.68;;11.58;10.90;10.62;23.34;SBb;;;;;;;;2MASX J05065095-2020428,ESO 553-005,ESO-LV 553-0050,MCG -03-13-073,PGC 016759;;10 degree error in IC declination.; -IC2120;Other;05:19:10.30;+38:11:06.0;Aur;;;;;;;;;;;;;;;;;;;;This is a measurement of Comet 113P/Spitaler 1890 mistaken for a nebula.; -IC2121;G;05:19:44.86;-25:03:51.6;Lep;1.95;0.97;162;13.81;;10.88;10.32;10.28;24.02;S0;;;;;;;;2MASX J05194486-2503514,ESO 486-053,ESO-LV 486-0530,PGC 017110;;ESO/Uppsala lists the identification with IC 0408 as doubtful.; -IC2122;G;05:19:01.40;-37:05:21.8;Col;1.75;1.51;66;13.83;;10.45;9.70;9.41;23.85;E-S0;;;;;;;;2MASX J05190139-3705217,ESO 362-014,ESO-LV 362-0140,MCG -06-12-017,PGC 017081;;; -IC2123;Dup;05:21:56.70;+03:29:11.0;Ori;;;;;;;;;;;;;;;;0412;;;;; -IC2124;Dup;05:21:58.78;+03:28:55.8;Ori;;;;;;;;;;;;;;;;0413;;;;; -IC2125;G;05:24:28.12;-27:00:57.8;Lep;1.02;0.75;126;14.43;;11.52;10.86;10.50;23.29;S0;;;;;;;;2MASX J05242810-2700574,ESO 487-008,ESO-LV 487-0080,PGC 017238;;; -IC2126;Dup;05:21:58.71;-67:57:26.6;Dor;;;;;;;;;;;;;;;1935;;;;;; -IC2127;Dup;05:22:13.96;-67:58:41.9;Dor;;;;;;;;;;;;;;;1936;;;;;; -IC2128;Cl+N;05:22:44.17;-68:03:39.9;Dor;4.80;3.60;40;;11.10;;;;;;;;;;;;;ESO 056-113,ESO 056-113 ;;LMC stellar association, includes the star cluster ESO 056-SC 113.; -IC2129;G;05:31:50.47;-23:08:42.2;Lep;1.82;0.88;103;13.84;;;;;23.20;SBd;;;;;;2130;;ESO 487-019,ESO-LV 487-0190,MCG -04-14-002,PGC 017402;;; -IC2130;Dup;05:31:50.47;-23:08:42.2;Lep;;;;;;;;;;;;;;;;2129;;;;; -IC2131;Dup;05:32:18.55;-17:13:25.9;Lep;;;;;;;;;;;;;;;;0422;;;;; -IC2132;G;05:32:28.67;-13:55:37.6;Lep;1.88;0.62;175;14.15;;10.53;9.75;9.43;23.81;SABa;;;;;;;;2MASX J05322858-1355372,IRAS 05301-1357,MCG -02-15-002,PGC 017415;;;B-Mag taken from LEDA. -IC2133;Dup;05:42:04.65;+69:22:42.4;Cam;;;;;;;;;;;;;;;1961;;;;;; -IC2134;GCl;05:23:05.84;-75:26:48.6;Men;1.40;1.40;;14.73;13.94;;;;;;;;;;;;;2MASX J05230579-7526488,ESO 033-019,ESO 033-019 ;;Globular cluster in the LMC.; -IC2135;G;05:33:12.90;-36:23:55.8;Col;3.24;0.66;110;13.27;;10.61;9.95;9.66;23.24;Sc;;;;;;2136;;2MASX J05331289-3623556,ESO 363-007,ESO-LV 363-0070,IRAS 05314-3626,MCG -06-13-004,PGC 017433;;Sometimes incorrectly called NGC 1963 which is a star cluster.; -IC2136;Dup;05:33:12.90;-36:23:55.8;Col;;;;;;;;;;;;;;;;2135;;;;; -IC2137;G;05:34:21.68;-23:32:00.0;Lep;1.29;0.81;83;13.91;;11.04;10.59;10.29;22.96;SABa;;;;;;2138;;2MASX J05342166-2332001,ESO 487-027,ESO-LV 487-0270,MCG -04-14-006,PGC 017463;;; -IC2138;Dup;05:34:21.68;-23:32:00.0;Lep;;;;;;;;;;;;;;;;2137;;;;; -IC2139;*Ass;05:35:16.23;-17:56:01.2;Lep;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC2140;GCl;05:33:21.91;-75:22:31.3;Men;2.30;2.30;;14.21;13.48;;;;;;;;;;;;;ESO 033-024,ESO 033-024 ;;Globular star cluster in the LMC.; -IC2141;*Ass;05:42:22.34;-51:01:58.3;Pic;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC2142;G;05:33:09.16;-78:01:09.9;Men;0.86;0.48;27;15.52;;13.57;13.22;12.45;23.44;Sbc;;;;;;;;2MASX J05330919-7801098,ESO 016-007,ESO-LV 16-0070,PGC 017430;;; -IC2143;G;05:46:52.61;-18:43:35.0;Lep;1.90;0.92;99;13.41;;10.63;10.01;9.71;23.00;SBb;;;;;;;;2MASX J05465261-1843349,ESO 554-034,ESO-LV 554-0340,IRAS 05447-1844,LEDA 864492,MCG -03-15-013,PGC 017810;;; -IC2144;G;05:50:13.89;+23:52:20.7;Tau;1.00;1.00;0;;;;;;;;;;;;;;;IRAS 05471+2351;;Claimed to be a galactic object by Takata et al. (1994, A&AS, 104, 529).; -IC2145;Neb;05:40:24.75;-69:40:13.1;Dor;0.19;;;;12.00;;;;;;;;;;;;;2MASX J05402473-6940128;;Emission nebula in the LMC.;Diameters taken from SIMBAD. -IC2146;GCl;05:37:46.93;-74:46:59.5;Men;3.30;3.30;;13.10;12.41;;;;;;;;;;;;;2MASX J05374621-7446399,2MASX J05374874-7447019,ESO 033-026;;Globular star cluster in the LMC.; -IC2147;G;05:43:28.06;-30:29:42.1;Col;1.56;1.29;86;13.61;;11.70;11.13;10.77;23.10;Scd;;;;;;;;2MASX J05432804-3029421,ESO 424-013,ESO-LV 424-0130,MCG -05-14-013,PGC 017662;;; -IC2148;GCl;05:39:11.86;-75:33:44.8;Men;1.30;1.30;;14.98;14.23;;;;;;;;;;;;;ESO 033-028;;Globular star cluster in the LMC.; -IC2149;PN;05:56:23.89;+46:06:17.2;Aur;0.14;;;11.17;10.78;10.37;10.31;9.70;;;;11.28;11.59;;;;BD +46 1067,HD 39659;2MASX J05562386+4606175,IRAS 05526+4605 ,PK 166+10 1,PN G166.1+10.4;;; -IC2150;G;05:51:18.56;-38:19:13.7;Col;2.90;0.80;83;13.60;;10.89;10.49;9.99;23.50;SBc;;;;;;;;2MASX J05511855-3819136,ESO 306-032,ESO-LV 306-0320,IRAS 05496-3819,MCG -06-13-016,PGC 018000;;; -IC2151;G;05:52:36.43;-17:47:14.2;Lep;1.24;0.64;93;14.16;;12.27;11.52;11.07;22.95;Sbc;;;;;;;;2MASX J05523642-1747144,ESO 555-008,ESO-LV 555-0080,IRAS 05504-1747,MCG -03-15-024,PGC 018040;;; -IC2152;G;05:57:53.41;-23:10:50.8;Lep;1.65;1.15;50;13.44;;10.81;10.14;9.95;23.13;SBa;;;;;;;;2MASX J05575341-2310507,ESO 488-047,ESO-LV 488-0470,MCG -04-15-001,PGC 018148;;; -IC2153;GPair;06:00:05.18;-33:55:11.1;Col;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC2153 NED01;G;06:00:04.23;-33:55:12.3;Col;1.15;0.89;68;14.16;;;;;23.29;S0-a;;;;;;;;ESO 364-022,ESO-LV 364-0220,IRAS 05582-3355,PGC 018212,TYC 7079-1676-1;;; -IC2153 NED02;G;06:00:05.44;-33:55:05.5;Col;1.08;0.84;69;14.67;;12.31;11.75;11.61;23.01;I;;;;;;;;2MASX J06000544-3355056,PGC 018213;;; -IC2154;Dup;06:01:07.81;-23:40:21.5;Lep;;;;;;;;;;;;;;;2139;;;;;; -IC2155;G;06:00:38.43;-33:59:50.4;Col;;;;16.54;;;;;;;;;;;;;;;;Identity as IC 2155 is not certain.;Only B-Mag available from LEDA -IC2156;OCl;06:04:52.41;+24:09:30.4;Gem;;;;;;;;;;;;;;;;;;;;Probably part of the star cluster IC 2157.; -IC2157;OCl;06:04:47.58;+24:04:15.7;Gem;2.70;;;8.91;8.40;;;;;;;;;;;;;MWSC 0722;;; -IC2158;G;06:05:17.96;-27:51:25.1;Col;1.36;1.08;115;12.90;;10.49;9.89;9.60;22.31;SBab;;;;;;;;2MASX J06051797-2751251,ESO 425-007,ESO-LV 425-0070,IRAS 06033-2751,MCG -05-15-004,PGC 018388;;; -IC2159;Neb;06:09:57.62;+20:25:53.0;Ori;;;;;;;;;;;;;;;;;;;;Part of the emission nebula NGC 2175.; -IC2160;G;05:55:28.56;-76:55:12.9;Men;1.80;0.89;108;13.76;;11.20;10.49;10.25;23.29;SBc;;;;;;;;2MASX J05552852-7655128,ESO 033-032,ESO-LV 33-0320,IRAS 05576-7655,PGC 018092;;; -IC2161;GCl;05:57:24.86;-75:08:22.1;Men;1.60;1.60;;14.90;14.24;;;;;;;;;;;;;ESO 033-035;;Globular cluster in the LMC.; -IC2162;HII;06:13:04.70;+17:58:48.3;Ori;4.00;4.00;;;;;;;;;;;;;;;;2MASX J06130651+1758545,LBN 859;;One of two 6cm sources associated with [WB92] 0610+1759; -IC2163;G;06:16:27.98;-21:22:33.1;CMa;3.37;0.95;103;12.55;;9.61;8.96;8.56;22.11;Sc;;;;;;;;2MASX J06162800-2122330,ESO 556-009,ESO-LV 556-0090,MCG -04-15-021,PGC 018751,UGCA 125;;; -IC2164;G;06:06:52.26;-75:21:52.9;Men;1.15;0.97;122;14.56;;11.30;10.56;10.21;23.42;Sab;;;;;;;;2MASX J06065224-7521527,ESO 034-005,ESO-LV 34-0050,IRAS 06085-7521,PGC 018424;;; -IC2165;PN;06:21:42.70;-12:59:14.0;CMa;0.15;;;12.90;10.50;;;;;;;;17.90;;;;;IRAS 06194-1257,PK 221-12 1,PN G221.3-12.3;;; -IC2166;G;06:26:55.64;+59:04:48.3;Lyn;2.20;1.08;116;12.68;12.01;10.38;9.72;9.30;23.27;SABc;;;;;;;;2MASX J06265562+5904483,IRAS 06225+5906,MCG +10-10-001,PGC 019064,UGC 03463;;; -IC2167;Dup;06:31:06.18;+10:27:33.4;Mon;;;;;;;;;;;;;;;;0446;;;;; -IC2168;**;06:33:47.72;+44:41:07.7;Aur;;;;;;;;;;;;;;;;;;;;; -IC2169;Dup;06:31:00.32;+09:53:50.8;Mon;;;;;;;;;;;;;;;;0447;;;;; -IC2170;Other;06:34:04.91;+44:41:18.4;Aur;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -IC2171;G;06:44:27.69;-17:55:56.9;CMa;1.63;0.34;91;15.19;;;;;23.58;IB;;;;;;;;2MASX J06442732-1755568,2MASX J06442769-1755566,IRAS 06422-1752,MCG -03-18-001,PGC 019526;;;B-Mag taken from LEDA. -IC2173;*;06:50:47.16;+33:27:29.0;Gem;;;;;;;;;;;;;;;;;;;;; -IC2174;G;07:09:05.61;+75:21:10.9;Cam;0.78;0.78;125;15.00;;11.37;10.68;10.42;22.60;SBa;;;;;;;;2MASX J07090560+7521108,MCG +13-06-002,PGC 020252,UGC 03666;;; -IC2175;**;07:08:39.66;+35:17:17.7;Gem;;;;;;;;;;;;;;;;;;;;; -IC2176;G;07:07:31.83;+32:28:11.1;Gem;0.93;0.76;180;15.10;;11.26;10.58;10.57;23.74;E;;;;;;;;2MASX J07073182+3228113,MCG +05-17-011,PGC 020193;;; -IC2177;RfN;07:04:36.91;-10:28:15.8;Mon;20.00;20.00;;;;;;;;;;;;;;;;LBN 1027;;; -IC2178;G;07:07:37.66;+32:30:44.6;Gem;0.59;0.35;140;15.70;;12.58;11.79;11.55;23.54;;;;;;;;;2MASX J07073763+3230449,PGC 020196;;; -IC2179;G;07:15:32.31;+64:55:34.3;Cam;0.85;0.79;95;13.40;;10.33;9.71;9.37;22.04;E;;;;;;;;2MASX J07153231+6455343,MCG +11-09-038a,PGC 020516,UGC 03750;;; -IC2180;G;07:11:19.58;+26:22:17.5;Gem;0.90;0.79;10;15.00;;11.28;10.61;10.29;23.38;Sab;;;;;;;;2MASX J07111958+2622175,PGC 020344,UGC 03727;;; -IC2181;G;07:13:10.35;+18:59:45.0;Gem;1.02;0.56;140;14.80;;11.83;11.08;10.87;23.27;Sab;;;;;;;;2MASX J07131030+1859458,MCG +03-19-005,PGC 020417,UGC 03744;;; -IC2182;G;07:14:11.03;+18:56:42.1;Gem;1.51;0.78;103;14.89;;11.32;10.58;10.35;24.47;S0-a;;;;;;;;2MASX J07141102+1856424,PGC 1575387;;;B-Mag taken from LEDA. -IC2183;Other;07:16:56.28;-20:24:37.7;CMa;;;;;;;;;;;;;;;;;;;;"Nothing at this position; probably a defect on the Harvard plate."; -IC2184;GGroup;07:29:25.40;+72:07:44.0;Cam;1.10;;;;;;;;;;;;;;;;;MCG +12-07-041,UGC 03852;;"CGCG says 'Triple system';UGC says 'double or triple';MRK says 'two doubles'.";Diameter of the group inferred by the author. -IC2184 NED01;G;07:29:24.16;+72:07:40.4;Cam;0.86;0.40;145;14.29;;;;;22.12;Sbc;;;;;;;;2MASX J07292419+7207404,IRAS 07236+7213,MCG +12-07-041 NED01,PGC 021123,UGC 03852 NED01;;MRK calls this one of 'two tightly merged double galaxies'.;B-Mag taken from LEDA. -IC2184 NED02;G;07:29:27.02;+72:07:51.5;Cam;0.73;0.30;15;14.00;;14.18;14.57;13.32;;Sab;;;;;;;;2MASX J07292701+7207514,MCG +12-07-041 NED02,PGC 093090,UGC 03852 NED02;;MRK calls this one of 'two tightly merged double galaxies'.; -IC2185;G;07:23:16.04;+32:29:43.2;Gem;0.60;0.36;125;14.90;;12.16;11.49;11.22;22.10;Sbc;;;;;;;;2MASX J07231603+3229432,IRAS 07200+3235,MCG +05-18-008,PGC 020889;;; -IC2186;G;07:22:47.78;+21:31:45.3;Gem;0.33;0.22;30;16.09;;12.63;11.98;11.71;;;;;;;;;;2MASX J07224774+2131452,PGC 3089868;;;B-Mag taken from LEDA. -IC2187;G;07:22:43.31;+21:29:00.1;Gem;0.20;0.20;175;15.30;;11.40;10.69;10.46;;E;;;;;;;;2MASX J07224331+2129001,MCG +04-18-010,PGC 020857;;; -IC2188;G;07:22:43.18;+21:30:46.9;Gem;1.10;0.72;112;15.10;;11.37;10.68;10.38;23.92;S0;;;;;;;;2MASX J07224316+2130471,MCG +04-18-011,PGC 020858;;; -IC2189;Other;07:24:57.59;+08:55:14.5;CMi;;;;;;;;;;;;;;;;;;;;"Nominal position; only stars nearby."; -IC2190;G;07:29:54.30;+37:27:06.3;Lyn;0.93;0.61;19;14.80;;11.71;11.10;10.75;22.94;Sbc;;;;;;;;2MASX J07295432+3727063,MCG +06-17-013,PGC 021144,SDSS J072954.29+372706.3,SDSS J072954.30+372706.3,UGC 03880;;; -IC2191;G;07:30:17.46;+24:19:39.8;Gem;0.81;0.53;20;15.30;;11.63;11.01;10.66;23.57;E;;;;;;;;2MASX J07301738+2419400,MCG +04-18-024,PGC 021163;;; -IC2192;G;07:33:20.31;+31:21:41.0;Gem;0.52;0.41;134;15.56;;12.85;12.06;12.15;23.48;;;;;;;;;2MASX J07332029+3121418,LEDA 1943561;;;B-Mag taken from LEDA. -IC2193;G;07:33:23.71;+31:29:00.8;Gem;1.47;0.96;87;14.70;;10.94;10.19;9.95;23.88;Sb;;;;;;;;2MASX J07332371+3129008,IRAS 07301+3135,MCG +05-18-018,PGC 021276,SDSS J073323.71+312900.6,UGC 03902;;; -IC2194;G;07:33:40.19;+31:20:03.9;Gem;1.51;0.38;50;15.10;;11.23;10.53;10.26;24.48;S0-a;;;;;;;;2MASX J07334020+3120038,MCG +05-18-020,PGC 021285;;; -IC2195;Other;07:28:27.63;-51:15:26.7;Car;;;;;;;;;;;;;;;;;;;;"Nothing at this position; probably a defect on the Harvard plate."; -IC2196;G;07:34:09.74;+31:24:20.4;Gem;1.67;0.86;153;14.00;;10.22;9.52;9.24;23.90;E;;;;;;;;2MASX J07340975+3124212,MCG +05-18-021,PGC 021300,UGC 03910;;; -IC2197;G;07:34:25.31;+31:25:19.2;Gem;0.50;0.33;138;17.07;;;;;24.31;;;;;;;;;2MASX J07342529+3125191,PGC 213402;;Star superposed.;B-Mag taken from LEDA. -IC2198;G;07:34:11.13;+23:57:58.8;Gem;0.65;0.62;60;15.30;;11.97;11.27;11.04;23.23;E;;;;;;;;2MASX J07341112+2357586,PGC 021298;;; -IC2199;G;07:34:55.74;+31:16:34.5;Gem;1.03;0.58;26;13.60;;11.40;10.78;10.40;21.90;SBbc;;;;;;;;2MASX J07345574+3116346,IRAS 07317+3123,MCG +05-18-022,PGC 021328,UGC 03915;;; -IC2200;G;07:28:17.51;-62:21:10.5;Car;1.33;0.78;59;13.82;;10.58;9.90;9.60;22.96;SABb;;;;;;;;2MASX J07281750-6221103,ESO 123-012,ESO-LV 123-0120,IRAS 07276-6214,PGC 021075;;; -IC2201;G;07:36:16.81;+33:07:21.8;Gem;1.16;0.29;66;14.90;;11.48;10.80;10.56;23.41;Sa;;;;;;;;2MASX J07361682+3307213,MCG +06-17-020,PGC 021372,SDSS J073616.80+330721.7,SDSS J073616.81+330721.7,UGC 03926;;; -IC2202;G;07:27:54.74;-67:34:27.2;Vol;2.16;0.67;164;13.63;;10.43;9.66;9.45;23.12;SBbc;;;;;;;;2MASX J07275470-6734273,ESO 088-016,ESO-LV 88-0160,IRAS 07278-6728,PGC 021057;;; -IC2203;G;07:40:33.61;+34:13:48.2;Gem;0.90;0.70;154;14.50;;12.69;11.95;11.68;22.99;SBc;;;;;;;;2MASX J07403361+3413481,IRAS 07373+3420,MCG +06-17-025,PGC 021555,SDSS J074033.57+341348.5,SDSS J074033.60+341348.2,SDSS J074033.61+341348.0,SDSS J074033.61+341348.2,UGC 03958;;Multiple SDSS entries describe this object.; -IC2204;G;07:41:18.10;+34:13:55.8;Gem;0.89;0.82;138;16.93;16.26;11.63;10.89;10.65;23.75;Sab;;;;;;;;2MASX J07411808+3413560,IRAS 07380+3420,MCG +06-17-026,PGC 021581,SDSS J074118.10+341355.8,SDSS J074118.11+341355.8,UGC 03965;;; -IC2205;G;07:46:54.57;+26:52:20.4;Gem;0.71;0.35;52;15.20;;;;;23.08;E;;;;;;;;PGC 021773,SDSS J074654.57+265220.3,SDSS J074654.58+265220.4;;; -IC2206;*;07:45:50.39;-34:19:48.6;Pup;;;;11.43;10.50;8.45;8.11;7.55;;;;;;;;;;2MASS J07455041-3419483,HD 063099,HIP 037876,TYC 7114-644-1;;;Wolf-Rayet Star. -IC2207;G;07:49:50.89;+33:57:44.2;Gem;1.71;0.28;124;15.40;;11.59;10.69;10.22;23.54;SBc;;;;;;;;2MASX J07495085+3357432,IRAS 07466+3405,MCG +06-17-029,PGC 021918,SDSS J074950.89+335744.2,UGC 04040;;; -IC2208;G;07:52:07.84;+27:29:02.1;Gem;0.43;0.33;12;15.20;;11.65;10.95;10.66;22.53;S0;;;;;;;;2MASX J07520782+2729023,PGC 022040,SDSS J075207.83+272902.0,SDSS J075207.83+272902.1,SDSS J075207.84+272902.1;;; -IC2209;G;07:56:14.21;+60:18:14.7;Cam;0.84;0.75;145;14.50;;12.51;11.76;11.81;22.64;SBb;;;;;;;;2MASX J07561422+6018149,IRAS 07519+6026,MCG +10-12-017,PGC 022232,UGC 04093;;; -IC2210;**;07:56:56.49;+56:40:56.4;Lyn;;;;;;;;;;;;;;;;;;;;; -IC2211;G;07:57:45.66;+32:33:29.2;Gem;0.82;0.45;139;14.50;;11.46;10.71;10.47;22.68;SBa;;;;;;;;2MASX J07574566+3233295,IRAS 07546+3241,MCG +05-19-023,PGC 022314,SDSS J075745.65+323329.2,SDSS J075745.66+323329.1,SDSS J075745.66+323329.2,UGC 04119;;; -IC2212;G;07:58:57.20;+32:36:44.1;Gem;0.73;0.64;103;15.30;;12.02;11.22;11.03;23.49;S0-a;;;;;;;;2MASX J07585721+3236446,MCG +05-19-024,PGC 022371,SDSS J075857.19+323644.1,SDSS J075857.20+323644.1;;; -IC2213;G;07:59:06.55;+27:27:50.4;Gem;0.73;0.61;71;15.40;;12.02;11.22;11.02;23.39;S0-a;;;;;;;;2MASX J07590658+2727507,MCG +05-19-025,PGC 022372,SDSS J075906.55+272750.4;;; -IC2214;G;07:59:53.81;+33:17:25.9;Lyn;0.92;0.81;40;14.40;;11.70;10.89;10.54;23.00;SBab;;;;;;;;2MASX J07595380+3317259,IRAS 07566+3325,MCG +06-18-007,PGC 022417,SDSS J075953.79+331725.8,SDSS J075953.80+331725.8,SDSS J075953.81+331725.9,UGC 04143;;; -IC2215;Other;07:59:33.15;+24:55:44.3;Cnc;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2216;**;07:59:27.55;+05:36:52.2;CMi;;;;;;;;;;;;;;;;;;;;; -IC2217;G;08:00:49.73;+27:30:01.1;Cnc;0.59;0.42;87;14.20;;11.83;11.19;10.90;22.04;Sc;;;;;;;;2MASX J08004972+2730010,IRAS 07577+2738,MCG +05-19-031,PGC 022476,UGC 04160;;; -IC2218;G;08:01:38.49;+24:25:56.8;Cnc;0.85;0.30;19;15.70;;12.48;11.64;11.42;24.02;E;;;;;;;;2MASX J08013851+2425562,PGC 022509,SDSS J080138.48+242556.8;;; -IC2219;G;08:02:36.53;+27:26:15.0;Cnc;1.16;0.55;176;14.50;;11.44;10.71;10.57;22.89;Sc;;;;;;;;2MASX J08023653+2726150,IRAS 07595+2734,MCG +05-19-035,PGC 022565,SDSS J080236.52+272614.9,SDSS J080236.52+272615.0,UGC 04180;;; -IC2220;RfN;07:56:50.95;-59:07:32.8;Car;5.00;;;;;;;;;;;;;;;;;ESO 124-003,HD 065750,HIP 038834,IRAS 07559-5859;Toby Jug Nebula;Includes a Galactic star, SAO 235638.;Dimensions taken from LEDA -IC2221;G;08:05:07.95;+37:27:02.3;Lyn;0.64;0.45;23;16.22;;13.16;12.46;11.79;24.14;E;;;;;;;;2MASX J08050794+3727021,PGC 2101054,SDSS J080507.94+372702.1,SDSS J080507.94+372702.2,SDSS J080507.95+372702.3;;;B-Mag taken from LEDA. -IC2222;G;08:05:14.77;+37:28:21.3;Lyn;0.79;0.41;121;15.30;;12.64;12.03;11.60;23.23;SBbc;;;;;;;;2MASX J08051477+3728211,PGC 022700,SDSS J080514.76+372821.2,SDSS J080514.77+372821.2,SDSS J080514.77+372821.3;;; -IC2223;G;08:05:50.31;+37:27:36.2;Lyn;0.46;0.30;71;16.31;;12.92;12.16;12.02;23.32;S0;;;;;;2224;;2MASX J08055028+3727364,LEDA 2101266,SDSS J080550.30+372736.1,SDSS J080550.31+372736.1,SDSS J080550.31+372736.2;;The identification as IC 2223 is very uncertain.;B-Mag taken from LEDA. -IC2224;Dup;08:05:50.31;+37:27:36.2;Lyn;;;;;;;;;;;;;;;;2223;;;;; -IC2225;G;08:05:28.12;+35:56:48.1;Lyn;1.07;0.75;87;15.00;;11.59;10.91;10.60;23.49;SBa;;;;;;;;2MASX J08052807+3556480,MCG +06-18-012,PGC 022708,SDSS J080528.11+355648.0,SDSS J080528.11+355648.1,SDSS J080528.12+355648.1;;; -IC2226;G;08:06:11.22;+12:32:36.6;Cnc;1.05;0.78;142;14.90;;11.58;10.87;10.82;22.92;SABa;;;;;;;;2MASX J08061122+1232361,MCG +02-21-016,PGC 022747,SDSS J080611.21+123236.6,UGC 04220;;; -IC2227;G;08:07:07.18;+36:14:00.5;Lyn;1.11;0.58;30;14.79;14.19;12.05;11.35;10.78;23.54;SBa;;;;;;;;2MASX J08070717+3614001,IRAS 08038+3622,PGC 022787,SDSS J080707.17+361400.4,SDSS J080707.18+361400.4,SDSS J080707.18+361400.5;;; -IC2228;*;08:07:05.65;+08:01:31.3;Cnc;;;;;;;;;;;;;;;;;;;;CGCG 031-048 is often incorrectly called IC 2228.; -IC2229;Dup;08:09:44.16;+25:52:53.8;Cnc;;;;;;;;;;;;;;;;0496;;;;; -IC2230;G;08:10:56.55;+25:41:04.9;Cnc;0.57;0.46;159;15.60;;12.47;11.68;11.40;23.26;S0;;;;;;;;2MASX J08105653+2541050,PGC 022944,SDSS J081056.55+254104.9;;; -IC2231;G;08:11:01.60;+05:05:14.4;Hya;1.67;1.67;120;15.00;;10.36;9.70;9.39;24.91;E;;;;;;;;2MASX J08110158+0505143,MCG +01-21-018,PGC 022950,UGC 04265;;; -IC2232;Dup;08:12:57.92;+36:15:16.7;Lyn;;;;;;;;;;;;;;;2543;;;;;; -IC2233;G;08:13:58.91;+45:44:31.7;Lyn;2.88;0.40;172;13.41;12.63;11.46;10.95;10.75;21.84;SBc;;;;;;;;2MASX J08135890+4544317,MCG +08-15-052,PGC 023071,SDSS J081358.80+454442.3,UGC 04278;;Many SDSS entries strung out along the plane of this galaxy.; -IC2234;G;08:13:51.62;+35:29:34.5;Lyn;0.54;0.51;124;15.98;;12.46;11.84;11.43;23.52;E;;;;;;;;2MASX J08135159+3529340,PGC 2065350,SDSS J081351.61+352934.4,SDSS J081351.61+352934.5,SDSS J081351.62+352934.4,SDSS J081351.62+352934.5,SDSS J081351.62+352934.6;;;B-Mag taken from LEDA. -IC2235;**;08:13:33.83;+24:04:36.4;Cnc;;;;;;;;;;;;;;;;;;SDSS J081333.82+240436.3;;; -IC2236;**;08:13:37.52;+24:02:55.7;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2237;*;08:14:08.09;+24:40:45.5;Cnc;;;;;;;;;;;;;;;;;;SDSS J081408.08+244045.4;;; -IC2238;*;08:14:08.61;+24:39:42.8;Cnc;;;;;;;;;;;;;;;;;;SDSS J081408.61+243942.8;;; -IC2239;G;08:14:06.79;+23:51:58.9;Cnc;0.84;0.71;140;15.30;;11.36;10.69;10.34;23.44;S0-a;;;;;;;;2MASX J08140678+2351588,IRAS 08111+2401,MCG +04-20-006,PGC 023078,SDSS J081406.79+235158.9;;; -IC2240;*;08:14:47.48;+24:28:03.2;Cnc;;;;;;;;;;;;;;;;;;SDSS J081447.48+242803.2;;; -IC2241;**;08:15:08.64;+24:07:45.8;Cnc;;;;;;;;;;;;;;;;;;SDSS J081508.64+240745.7;;; -IC2242;*;08:15:11.46;+24:07:58.6;Cnc;;;;;;;;;;;;;;;;;;SDSS J081511.45+240758.5;;; -IC2243;*;08:15:18.43;+23:57:44.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2244;*;08:15:22.27;+24:32:45.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J081522.27+243244.9;;; -IC2245;*;08:15:28.42;+24:32:09.8;Cnc;;;;;;;;;;;;;;;;;;SDSS J081528.42+243209.8;;; -IC2246;*;08:16:00.79;+23:50:59.1;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2247;G;08:15:59.10;+23:11:58.6;Cnc;1.82;0.27;149;15.20;;11.26;10.50;10.11;22.74;Sbc;;;;;;;;2MASX J08155906+2311583,IRAS 08130+2321,MCG +04-20-008,PGC 023169,SDSS J081559.09+231158.5,SDSS J081559.09+231158.6,SDSS J081559.10+231158.7,UGC 04299;;; -IC2248;G;08:16:04.81;+23:08:02.5;Cnc;0.79;0.46;52;15.10;;11.74;11.07;10.88;23.03;Sa;;;;;;;;2MASX J08160478+2308019,MCG +04-20-009,PGC 023176,SDSS J081604.80+230802.4,SDSS J081604.81+230802.5;;; -IC2249;G;08:16:34.43;+24:29:37.4;Cnc;0.31;0.25;122;16.50;;14.86;14.12;14.13;22.84;Sbc;;;;;;;;2MASX J08163443+2429369,PGC 023202,SDSS J081634.43+242937.4;;; -IC2250;G;08:16:32.16;+23:37:58.7;Cnc;0.41;0.31;122;16.58;;;;;23.33;Sd;;;;;;;;2MASX J08163213+2337588,LEDA 1690833,SDSS J081632.15+233758.7;;;B-Mag taken from LEDA. -IC2251;**;08:16:38.79;+23:56:58.7;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2252;*;08:16:41.95;+24:41:38.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J081641.94+244137.9;;; -IC2253;G;08:16:33.88;+21:24:35.6;Cnc;0.95;0.58;168;15.00;;11.35;10.65;10.30;23.32;S0;;;;;;;;2MASX J08163389+2124356,MCG +04-20-011,PGC 023204,SDSS J081633.88+212435.5,SDSS J081633.88+212435.6;;; -IC2254;G;08:16:45.51;+24:46:48.8;Cnc;0.70;0.43;119;15.40;;12.26;11.48;11.19;23.33;S0;;;;;;;;2MASX J08164548+2446483,PGC 023206,SDSS J081645.50+244648.8,SDSS J081645.51+244648.8;;; -IC2255;**;08:16:43.18;+23:27:25.6;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2256;G;08:16:54.43;+24:10:36.6;Cnc;0.79;0.40;8;15.20;;12.85;12.06;11.89;22.79;SABc;;;;;;;;2MASX J08165441+2410372,MCG +04-20-012,PGC 023214,SDSS J081654.43+241036.5,SDSS J081654.43+241036.6;;; -IC2257;**;08:17:10.81;+23:38:59.7;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2258;*;08:17:16.44;+23:34:39.1;Cnc;;;;;;;;;;;;;;;;;;SDSS J081716.43+233439.0;;; -IC2259;*;08:17:18.15;+23:33:56.3;Cnc;;;;;;;;;;;;;;;;;;SDSS J081718.15+233356.2;;The IC identification is not certain.; -IC2260;*;08:17:27.58;+24:40:23.7;Cnc;;;;;;;;;;;;;;;;;;SDSS J081727.57+244023.7;;; -IC2261;**;08:17:32.82;+23:30:44.4;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2262;*;08:17:22.56;+18:27:16.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2263;*;08:17:40.92;+23:34:48.4;Cnc;;;;;;;;;;;;;;;;;;SDSS J081740.92+233448.4;;; -IC2264;*;08:17:44.93;+23:42:53.1;Cnc;;;;;;;;;;;;;;;;;;SDSS J081744.92+234253.0;;; -IC2265;*;08:17:50.23;+24:11:36.7;Cnc;;;;;;;;;;;;;;;;;;SDSS J081750.22+241136.6;;; -IC2266;*;08:17:38.45;+18:24:37.3;Cnc;;;;;;;;;;;;;;;;;;SDSS J081738.44+182437.3;;; -IC2267;G;08:18:01.61;+24:44:07.2;Cnc;1.85;0.24;152;15.10;;;;;23.72;Sc;;;;;;;;MCG +04-20-016,PGC 023266,SDSS J081801.60+244407.1,SDSS J081801.61+244407.1,UGC 04315;;"The CGCG/UGC ""companion"" is a giant HII region at the south end."; -IC2268;G;08:18:06.56;+24:47:47.2;Cnc;0.38;0.37;90;15.30;;13.63;13.04;12.91;22.32;E;;;;;;;;2MASX J08180656+2447469,PGC 023273,SDSS J081806.55+244747.1,SDSS J081806.55+244747.2,SDSS J081806.56+244747.2;;; -IC2269;G;08:18:08.76;+23:02:51.3;Cnc;0.98;0.21;30;15.60;;12.29;11.55;11.16;23.37;Sb;;;;;;;;2MASX J08180877+2302518,PGC 023278,SDSS J081808.76+230251.2,SDSS J081808.76+230251.3;;; -IC2270;**;08:18:00.37;+19:05:51.6;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2271;G;08:18:19.70;+24:31:36.9;Cnc;0.40;0.31;150;15.30;;14.14;13.44;13.09;22.61;E;;;;;;;;2MASX J08181972+2431363,PGC 023283,SDSS J081819.69+243136.9,SDSS J081819.70+243136.9;;; -IC2272;**;08:18:07.17;+18:44:09.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2273;*;08:18:12.82;+18:24:06.0;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2274;Other;08:18:14.01;+18:39:57.0;Cnc;;;;;;;;;;;;;;;;;;;;This is a Galactic triple star.; -IC2275;*;08:18:13.72;+18:24:41.2;Cnc;;;;;;;;;;;;;;;;;;SDSS J081813.71+182441.1;;; -IC2276;Other;08:18:29.37;+18:28:39.8;Cnc;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC2277;*;08:18:32.44;+18:39:00.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2278;Other;08:18:34.45;+18:27:41.5;Cnc;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC2279;*;08:18:35.52;+18:34:04.6;Cnc;;;;;;;;;;;;;;;;;;SDSS J081835.51+183404.6;;; -IC2280;*;08:18:38.52;+18:26:59.1;Cnc;;;;;;;;;;;;;;;;;;SDSS J081838.52+182659.0;;The IC number includes a defect on the original Heidelberg plate.; -IC2281;*;08:18:54.15;+18:54:32.8;Cnc;;;;12.71;12.29;10.89;10.66;10.62;;;;;;;;;;2MASS J08185414+1854328,SDSS J081854.14+185432.7,TYC 1386-48-1;;; -IC2282;G;08:19:15.53;+24:47:33.5;Cnc;0.88;0.77;45;15.30;;12.58;12.01;11.92;22.82;Sbc;;;;;;;;2MASX J08191550+2447335,MCG +04-20-020,PGC 023333,SDSS J081915.52+244733.5;;; -IC2283;*;08:19:17.53;+24:47:11.1;Cnc;;;;;;;;;;;;;;;;;;SDSS J081917.52+244711.0;;; -IC2284;*;08:18:58.68;+18:36:20.1;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2285;**;08:19:02.81;+18:54:52.8;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2286;*;08:19:04.09;+18:57:22.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J081904.08+185722.0;;; -IC2287;*;08:19:07.63;+19:24:01.7;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2288;G;08:19:22.38;+23:44:50.3;Cnc;0.53;0.31;68;15.50;;14.04;13.44;13.39;22.87;SABc;;;;;;;;2MASX J08192236+2344505,MCG +04-20-023,PGC 023342,SDSS J081922.37+234450.1,SDSS J081922.38+234450.2,SDSS J081922.38+234450.3;;Position in 1997AJ....113...22G is incorrect.; -IC2289;*;08:19:07.64;+18:29:53.8;Cnc;;;;;;;;;;;;;;;;;;SDSS J081907.64+182953.8;;; -IC2290;G;08:19:15.86;+19:18:47.7;Cnc;0.58;0.42;149;15.20;;13.31;12.67;12.46;22.84;S?;;;;;;;;2MASX J08191584+1918475,PGC 023334,SDSS J081915.85+191847.6,SDSS J081915.86+191847.7;;; -IC2291;*;08:19:18.15;+18:30:30.2;Cnc;;;;;;;;;;;;;;;;;;SDSS J081918.14+183030.2;;; -IC2292;*;08:19:21.99;+19:33:48.9;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2293;G;08:19:32.11;+21:23:39.5;Cnc;0.89;0.67;125;15.20;;12.64;11.88;11.64;23.38;SBab;;;;;;;;2MASX J08193208+2123394,MCG +04-20-024,PGC 023352,SDSS J081932.11+212339.4,SDSS J081932.11+212339.5;;; -IC2294;*;08:19:26.04;+18:59:04.9;Cnc;;;;;;;;;;;;;;;;;;SDSS J081926.03+185904.9;;; -IC2295;**;08:19:26.99;+18:24:51.2;Cnc;;;;;;;;;;;;;;;;;;SDSS J081926.99+182451.1;;; -IC2296;*;08:19:28.55;+18:53:55.5;Cnc;;;;;;;;;;;;;;;;;;SDSS J081928.54+185355.4;;; -IC2297;*;08:20:04.62;+18:22:55.1;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2298;*;08:20:07.08;+18:24:11.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2299;**;08:20:09.41;+19:20:14.8;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2300;*;08:20:12.60;+18:25:12.2;Cnc;;;;;;;;;;;;;;;;;;SDSS J082012.60+182512.2;;; -IC2301;*;08:20:13.93;+18:26:01.5;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2302;*;08:20:17.28;+19:21:26.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J082017.27+192125.9;;; -IC2303;*;08:20:19.27;+19:25:08.4;Cnc;;;;;;;;;;;;;;;;;;SDSS J082019.27+192508.3;;; -IC2304;**;08:20:35.69;+19:26:22.3;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2305;*;08:20:40.08;+19:27:10.5;Cnc;;;;;;;;;;;;;;;;;;SDSS J082040.07+192710.4;;; -IC2306;*;08:20:39.40;+19:06:37.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J082039.40+190637.0;;; -IC2307;G;08:20:42.82;+19:26:26.4;Cnc;0.85;0.36;162;15.50;;12.26;11.59;11.21;23.79;S0-a;;;;;;;;2MASX J08204284+1926264,PGC 023417,SDSS J082042.81+192626.3,SDSS J082042.81+192626.4;;; -IC2308;GTrpl;08:20:45.25;+19:21:44.2;Cnc;0.63;0.32;93;;;;;;22.85;Sab;;;;;;;;2MASX J08204524+1921444,IRAS 08178+1931,MCG +03-22-001,PGC 023415;;;NED does not clearly specify components. -IC2308 NED01;G;08:20:44.85;+19:21:44.0;Cnc;0.28;0.11;87;17.10;;;;;;Sbc;;;;;;;;SDSS J082044.84+192143.9;;;B-Mag taken from LEDA -IC2309;G;08:20:43.61;+18:23:52.2;Cnc;0.76;0.25;6;15.60;;13.21;12.49;12.21;23.23;Sc;;;;;;;;2MASX J08204363+1823524,PGC 023416,SDSS J082043.60+182352.2,SDSS J082043.61+182352.2;;; -IC2310;*;08:20:46.32;+18:27:48.6;Cnc;;;;;;;;;;;;;;;;;;SDSS J082046.31+182748.5;;; -IC2311;G;08:18:45.98;-25:22:11.1;Pup;2.14;1.99;47;12.49;;9.31;8.60;8.36;23.02;E;;;;;;;;2MASX J08184597-2522111,ESO 495-002,ESO-LV 495-0020,MCG -04-20-007,PGC 023304;;|b| < 10 degrees.; -IC2312;GPair;08:20:53.38;+18:30:39.2;Cnc;0.70;;;;;;;;;;;;;;;;;;;The IC number includes two neighboring stars.;Diameter of the group inferred by the author. -IC2312 NED01;G;08:20:53.26;+18:30:30.7;Cnc;0.44;0.27;175;16.68;;13.60;12.91;12.58;23.17;Sbc;;;;;;;;2MASX J08205326+1830304,PGC 1561585,SDSS J082053.55+183044.5,SDSS J082053.55+183044.6;;;B-Mag taken from LEDA. -IC2312 NED02;G;08:20:53.55;+18:30:44.6;Cnc;0.25;0.17;55;18.21;;;;;24.00;;;;;;;;;2MASX J08205355+1830444,PGC 1561719,SDSS J082053.26+183030.6;;;B-Mag taken from LEDA. -IC2313;*;08:20:54.58;+18:30:51.1;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2314;**;08:21:03.64;+18:45:45.6;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2315;*;08:21:10.69;+18:54:54.9;Cnc;;;;;;;;;;;;;;;;;;SDSS J082110.69+185454.9;;; -IC2316;**;08:21:15.20;+19:45:33.9;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2317;*;08:21:21.46;+18:50:39.6;Cnc;;;;;;;;;;;;;;;;;;SDSS J082121.46+185039.5;;; -IC2318;*;08:21:32.76;+18:37:22.4;Cnc;;;;;;;;;;;;;;;;;;SDSS J082132.76+183722.3;;The IC identification is not certain.; -IC2319;*;08:21:33.06;+18:28:36.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2320;*;08:21:35.40;+18:40:12.9;Cnc;;;;;;;;;;;;;;;;;;SDSS J082135.39+184012.8;;; -IC2321;*;08:21:39.17;+18:28:08.9;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2322;*;08:21:38.98;+18:29:02.8;Cnc;;;;;;;;;;;;;;;;;;SDSS J082138.97+182902.8;;; -IC2323;*;08:21:41.22;+18:36:47.7;Cnc;;;;;;;;;;;;;;;;;;SDSS J082141.21+183647.6;;; -IC2324;*;08:21:58.73;+19:11:38.5;Cnc;;;;;;;;;;;;;;;;;;SDSS J082158.72+191138.5;;; -IC2325;Other;08:22:08.73;+18:54:43.7;Cnc;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC2326;Other;08:22:12.14;+19:00:43.5;Cnc;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC2327;G;08:21:27.97;+03:10:09.4;Hya;1.21;0.39;169;13.90;;11.90;11.25;10.94;22.55;SABa;;;;;;;;2MASX J08212796+0310094,IRAS 08188+0319,MCG +01-22-002,PGC 023447,UGC 04356;;; -IC2328;Other;08:22:17.38;+19:36:59.2;Cnc;;;;;;;;;;;;;;;;;;;;This is a defect (or an asteroid trail) on the original Heidelberg plate.; -IC2329;G;08:22:19.48;+19:24:57.5;Cnc;2.00;0.36;116;15.00;;;;;23.66;SABd;;;;;;;;MCG +03-22-005,PGC 023483,SDSS J082219.48+192457.5,UGC 04365;;Position in 1986AJ.....91..705B is incorrect.; -IC2330;*;08:22:23.14;+18:51:13.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J082223.13+185113.0;;The IC number includes a defect (or an asteroid trail).; -IC2331;**;08:22:35.15;+19:40:46.8;Cnc;;;;;;;;;;;;;;;;;;SDSS J082235.14+194046.8;;; -IC2332;*;08:22:39.63;+19:55:23.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J082239.63+195523.0;;; -IC2333;*;08:23:00.85;+19:04:54.7;Cnc;;;;;;;;;;;;;;;;;;SDSS J082300.84+190454.6;;; -IC2334;*;08:22:59.97;+18:36:49.6;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2335;G;08:23:07.04;+19:24:28.9;Cnc;0.45;0.29;164;16.77;;;;;23.76;;;;;;;;;2MASX J08230702+1924289,PGC 1591222;;The IC number includes a nearby star.;B-Mag taken from LEDA. -IC2336;*;08:23:19.04;+18:32:14.8;Cnc;;;;;;;;;;;;;;;;;;SDSS J082319.04+183214.8;;; -IC2337;G;08:23:20.29;+18:32:06.8;Cnc;0.48;0.26;46;15.70;;13.21;12.50;12.03;23.24;S0-a;;;;;;;;2MASX J08232025+1832065,IRAS 08205+1841,PGC 023529,SDSS J082320.28+183206.7,SDSS J082320.29+183206.8;;; -IC2338;G;08:23:32.67;+21:20:17.1;Cnc;0.55;0.40;32;14.70;;12.74;12.52;11.89;22.60;SBc;;;;;;;;2MASX J08233267+2120174,MCG +04-20-044,PGC 023542,SDSS J082332.66+212017.1,SDSS J082332.67+212017.1,UGC 04383 NED01;;Component 'a)' in UGC notes.; -IC2339;G;08:23:34.21;+21:20:51.5;Cnc;0.89;0.45;61;14.70;;12.24;11.58;11.37;22.68;Sc;;;;;;;;2MASX J08233424+2120514,MCG +04-20-045,PGC 023546,SDSS J082334.21+212051.5,UGC 04383 NED02;;Component 'b)' in UGC notes.; -IC2340;G;08:23:30.05;+18:44:58.0;Cnc;1.07;0.73;160;14.60;;11.15;10.38;10.19;23.39;E-S0;;;;;;;;2MASX J08233004+1844574,MCG +03-22-006,PGC 023544,SDSS J082330.05+184457.9,SDSS J082330.05+184458.0;;; -IC2341;G;08:23:41.44;+21:26:05.6;Cnc;1.18;0.57;3;14.90;;11.25;10.60;10.31;23.78;E-S0;;;;;;;;2MASX J08234141+2126048,MCG +04-20-046,PGC 023552,SDSS J082341.44+212605.5,SDSS J082341.45+212605.6,UGC 04384;;; -IC2342;*;08:23:32.10;+18:34:46.6;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2343;*;08:23:53.93;+19:01:32.3;Cnc;;;;;;;;;;;;;;;;;;SDSS J082353.93+190132.3;;; -IC2344;*;08:23:54.74;+18:39:35.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J082354.73+183935.0;;; -IC2345;*;08:24:08.44;+19:57:07.8;Cnc;;;;;;;;;;;;;;;;;;SDSS J082408.44+195707.8;;; -IC2346;*;08:24:10.90;+19:42:22.4;Cnc;;;;;;;;;;;;;;;;;;SDSS J082410.89+194222.3;;; -IC2347;*;08:24:14.08;+18:46:25.9;Cnc;;;;;;;;;;;;;;;;;;SDSS J082414.08+184625.9;;; -IC2348;G;08:24:20.25;+20:31:59.7;Cnc;0.66;0.32;91;15.60;;12.92;12.14;11.87;23.17;Sab;;;;;;;;2MASX J08242022+2031594,MCG +04-20-049,PGC 023589,SDSS J082420.24+203159.6,SDSS J082420.24+203159.7,SDSS J082420.25+203159.7;;; -IC2349;*;08:24:16.71;+19:00:29.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J082416.70+190029.0;;; -IC2350;Other;08:24:28.38;+19:33:07.4;Cnc;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2351;*;08:24:30.20;+18:35:19.6;Cnc;;;;;;;;;;;;;;;;;;SDSS J082430.19+183519.5;;; -IC2352;*;08:24:39.98;+19:36:10.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J082439.98+193610.0;;; -IC2353;*;08:24:37.70;+18:39:23.6;Cnc;;;;;;;;;;;;;;;;;;SDSS J082437.69+183923.5;;; -IC2354;**;08:24:40.76;+18:39:59.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2355;**;08:24:51.81;+20:27:48.5;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2356;*;08:25:00.86;+19:29:51.2;Cnc;;;;;;;;;;;;;;;;;;SDSS J082500.86+192951.2;;; -IC2357;*;08:25:04.56;+19:30:31.9;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2358;*;08:25:05.10;+19:29:42.7;Cnc;;;;;;;;;;;;;;;;;;SDSS J082505.10+192942.6;;; -IC2359;Dup;08:25:12.07;+20:20:05.1;Cnc;;;;;;;;;;;;;;;2582;;;;;; -IC2360;*;08:25:15.09;+19:30:59.2;Cnc;;;;;;;;;;;;;;;;;;SDSS J082515.09+193059.1;;; -IC2361;G;08:25:44.50;+27:52:28.5;Cnc;1.56;0.50;78;14.90;;12.09;11.54;11.16;23.80;SBab;;;;;;;;2MASX J08254451+2752281,IRAS 08227+2802,MCG +05-20-012,PGC 023646,SDSS J082544.49+275228.4,SDSS J082544.50+275228.4,UGC 04394;;; -IC2362;**;08:25:41.42;+19:56:32.0;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2363;G;08:25:45.42;+19:26:57.4;Cnc;0.83;0.70;5;15.00;;11.88;11.26;10.93;23.12;Sbc;;;;;;;;2MASX J08254545+1926576,IRAS 08228+1936,MCG +03-22-011,PGC 023650,SDSS J082545.41+192657.4,SDSS J082545.42+192657.4;;; -IC2364;**;08:25:51.49;+19:45:35.0;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2365;G;08:26:18.06;+27:50:24.5;Cnc;1.21;0.85;44;14.70;;11.42;10.69;10.44;23.70;S0;;;;;;2366;;2MASX J08261809+2750244,MCG +05-20-014,PGC 023673,SDSS J082618.05+275024.4,SDSS J082618.06+275024.4,SDSS J082618.06+275024.5,UGC 04402;;The identification with IC 2365 is not certain.; -IC2366;Dup;08:26:18.06;+27:50:24.5;Cnc;;;;;;;;;;;;;;;;2365;;;;; -IC2367;G;08:24:10.08;-18:46:32.0;Pup;2.45;1.30;60;12.40;;9.69;8.89;8.44;22.97;Sb;;;;;;;;2MASX J08241008-1846318,ESO 562-005,IRAS 08219-1836,MCG -03-22-001,PGC 023579;;; -IC2368;*;08:26:01.29;+19:52:58.8;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2369;*;08:26:16.06;+20:13:56.1;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2370;*;08:26:22.82;+19:38:17.0;Cnc;;;;;;;;;;;;;;;;;;SDSS J082622.82+193817.0;;; -IC2371;*;08:26:36.98;+19:47:54.9;Cnc;;;;;;;;;;;;;;;;;;SDSS J082636.97+194754.9;;; -IC2372;*;08:26:40.62;+19:52:59.1;Cnc;;;;;;;;;;;;;;;;;;SDSS J082640.62+195259.1;;; -IC2373;G;08:26:48.98;+20:21:53.4;Cnc;0.59;0.48;160;15.50;;14.05;13.46;13.29;22.74;Sc;;;;;;;;2MASX J08264898+2021535,MCG +04-20-054,PGC 023695,SDSS J082648.97+202153.4,SDSS J082648.98+202153.4,UGC 04409;;; -IC2374;G;08:28:22.14;+30:26:35.5;Cnc;0.53;0.48;161;15.30;;13.15;12.39;11.94;23.38;SBb;;;;;;;;2MASX J08282217+3026353,MCG +05-20-016,PGC 023758,SDSS J082822.13+302635.5,SDSS J082822.14+302635.5;;; -IC2375;G;08:26:19.67;-13:18:11.3;Pup;2.18;0.35;84;;;11.12;10.34;10.07;;SBb;;;;;;;;2MASX J08261966-1318113,MCG -02-22-014,PGC 023672;;; -IC2376;G;08:28:26.13;+30:24:27.7;Cnc;0.89;0.60;64;15.50;;12.43;11.63;11.34;24.25;E;;;;;;;;2MASX J08282612+3024273,PGC 023764,SDSS J082826.12+302427.6;;; -IC2377;G;08:26:26.08;-13:18:22.2;Pup;1.05;0.62;21;14.76;;11.62;10.98;10.66;23.24;Sa;;;;;;;;2MASX J08262609-1318223,MCG -02-22-015,PGC 023681;;;B-Mag taken from LEDA. -IC2378;G;08:28:31.65;+30:25:52.8;Cnc;1.31;0.92;23;15.30;;11.10;10.35;10.03;23.70;E-S0;;;;;;;;2MASX J08283161+3025523,MCG +05-20-017,PGC 023771,SDSS J082831.64+302552.7,SDSS J082831.65+302552.8;;; -IC2379;G;08:26:27.80;-13:17:34.3;Pup;0.96;0.49;35;;;11.68;11.12;10.70;;S0-a;;;;;;;;2MASX J08262781-1317343,MCG -02-22-016,PGC 023683;;; -IC2380;G;08:28:43.89;+30:24:16.3;Cnc;0.80;0.72;162;15.50;;11.97;11.22;11.08;23.54;S0;;;;;;;;2MASX J08284390+3024163,MCG +05-20-019,PGC 023777,SDSS J082843.88+302416.3,SDSS J082843.89+302416.3;;; -IC2381;**;08:28:21.74;+19:47:29.9;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2382;G;08:28:46.12;+22:03:12.5;Cnc;0.89;0.58;165;14.90;;11.19;10.51;10.22;23.17;S0;;;;;;;;2MASX J08284612+2203124,MCG +04-20-064,PGC 023787,SDSS J082846.11+220312.4,SDSS J082846.11+220312.5,SDSS J082846.12+220312.5;;; -IC2383;G;08:29:41.35;+30:41:16.7;Cnc;0.61;0.45;93;15.70;;12.11;11.26;10.97;23.18;E-S0;;;;;;;;2MASX J08294135+3041163,PGC 023829,SDSS J082941.35+304116.7;;; -IC2384;G;08:34:23.48;+32:26:05.2;Cnc;0.88;0.65;73;15.30;;12.13;11.37;11.31;23.82;S0-a;;;;;;;;2MASX J08342348+3226055,MCG +06-19-009 NED01,PGC 024062,SDSS J083423.48+322605.1;;; -IC2385;G;08:35:10.36;+37:15:57.5;Lyn;0.79;0.52;27;15.10;;12.22;11.56;11.16;22.98;Sbc;;;;;;;;2MASX J08351034+3715576,IRAS 08319+3726,MCG +06-19-010,PGC 024103,SDSS J083510.35+371557.4,SDSS J083510.36+371557.4,SDSS J083510.36+371557.5;;; -IC2386;*;08:34:43.84;+25:48:24.1;Cnc;;;;;;;;;;;;;;;;;;SDSS J083443.84+254824.1;;; -IC2387;G;08:38:34.00;+30:47:55.3;Cnc;1.16;0.53;18;14.80;;12.00;11.41;11.09;23.16;Sc;;;;;;;;2MASX J08383400+3047554,IRAS 08354+3058,MCG +05-21-003,PGC 024299,SDSS J083833.99+304755.2,SDSS J083834.00+304755.2,SDSS J083834.00+304755.3,UGC 04511;;; -IC2388;G;08:39:56.52;+19:38:43.1;Cnc;0.57;0.33;150;15.70;;13.02;12.37;11.89;23.41;S0-a;;;;;;;;2MASX J08395655+1938427,PGC 024365,SDSS J083956.52+193843.0,SDSS J083956.52+193843.1;;; -IC2389;G;08:47:57.77;+73:32:21.1;Cam;1.30;0.30;125;13.20;;12.13;11.72;11.50;22.31;SBb;;;;;;;;2MASX J08475768+7332216,MCG +12-09-011,PGC 024711,UGC 04576;;; -IC2390;Dup;08:41:51.74;+19:42:09.1;Cnc;;;;;;;;;;;;;;;2643;;;;;; -IC2391;OCl;08:40:31.88;-53:02:07.7;Vel;29.10;;;;2.50;;;;;;;;;;;;;C 085,MWSC 1529;omi Vel Cluster;; -IC2392;G;08:44:30.80;+18:17:10.1;Cnc;0.61;0.46;5;14.60;;12.50;12.08;11.68;22.41;Sc;;;;;;;;2MASX J08443081+1817102,IRAS 08416+1828,MCG +03-23-001,PGC 024559;;; -IC2393;G;08:46:49.19;+28:10:16.7;Cnc;1.18;0.80;27;14.60;;10.91;10.18;9.93;23.57;E;;;;;;;;2MASX J08464916+2810165,MCG +05-21-007,PGC 024669,SDSS J084649.18+281016.7,SDSS J084649.19+281016.7,UGC 04589;;; -IC2394;G;08:47:06.91;+28:14:11.6;Cnc;0.68;0.59;98;15.20;;12.06;11.46;11.15;23.03;Sb;;;;;;;;2MASX J08470688+2814114,MCG +05-21-009,PGC 024678,SDSS J084706.90+281411.6,SDSS J084706.91+281411.5,SDSS J084706.91+281411.6,UGC 04595;;; -IC2395;OCl;08:42:30.11;-48:09:02.0;Vel;6.00;;;;4.60;;;;;;;;;;;;;MWSC 1537;;; -IC2396;*;08:46:40.59;+17:38:57.1;Cnc;;;;;;;;;;;;;;;;;;SDSS J084640.59+173857.0;;; -IC2397;**;08:46:41.86;+17:39:35.2;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2398;G;08:46:44.57;+17:45:17.7;Cnc;0.64;0.33;6;14.80;;12.76;12.06;11.47;23.14;S0-a;;;;;;;;2MASX J08464456+1745177,IRAS 08439+1756,MCG +03-23-003,PGC 024664,SDSS J084644.57+174517.6,SDSS J084644.57+174517.7;;; -IC2399;G;08:47:49.73;+18:54:42.8;Cnc;0.53;0.50;3;15.60;;13.83;13.28;13.45;23.19;SBc;;;;;;;;2MASX J08474969+1854427,PGC 024709,SDSS J084749.72+185442.7,SDSS J084749.72+185442.8,SDSS J084749.73+185442.8;;IC identification is not certain.; -IC2400;G;08:47:59.15;+38:04:11.3;Lyn;0.90;0.38;112;15.00;;12.70;11.97;11.72;23.01;Sc;;;;;;;;2MASX J08475913+3804114,IRAS 08447+3815,MCG +06-20-002,PGC 024714,SDSS J084759.15+380411.2,SDSS J084759.15+380411.3,SDSS J084759.16+380411.2;;; -IC2401;G;08:48:10.30;+37:45:19.3;Lyn;1.12;0.74;101;15.00;;11.41;10.69;10.39;23.88;S0;;;;;;;;2MASX J08481028+3745194,MCG +06-20-005,PGC 024728,SDSS J084810.29+374519.3,SDSS J084810.30+374519.3,UGC 04600;;; -IC2402;G;08:47:59.04;+31:47:08.3;Cnc;0.82;0.75;120;14.99;;11.76;10.97;10.59;23.68;S0-a;;;;;;;;2MASX J08475906+3147083,MCG +05-21-010,PGC 024720,SDSS J084759.04+314708.3;;; -IC2403;G;08:46:09.33;-15:21:25.2;Hya;0.70;0.38;120;15.42;;11.70;10.91;10.60;23.24;S0-a;;;;;;;;2MASX J08460933-1521252,IRAS 08438-1510,LEDA 090089;;; -IC2404;G;08:48:10.45;+29:29:28.9;Cnc;0.76;0.55;109;15.50;14.75;12.39;11.61;11.29;23.47;S0-a;;;;;;;;2MASX J08481050+2929288,PGC 024725,SDSS J084810.45+292928.9;;; -IC2405;G;08:48:42.76;+37:13:07.1;Lyn;0.76;0.57;7;14.80;;12.46;11.67;11.52;22.93;Sbc;;;;;;;;2MASX J08484272+3713068,MCG +06-20-006,PGC 024766,SDSS J084842.75+371307.0,SDSS J084842.75+371307.1;;; -IC2406;G;08:48:04.61;+17:42:08.6;Cnc;1.64;0.77;173;14.40;;11.19;10.47;10.13;23.82;S0-a;;;;;;;;2MASX J08480462+1742089,IRAS 08452+1753,MCG +03-23-005,PGC 024721,SDSS J084804.60+174208.5,SDSS J084804.61+174208.5,SDSS J084804.61+174208.6,UGC 04606;;; -IC2407;G;08:48:09.15;+17:36:41.3;Cnc;1.25;0.23;86;15.10;;12.15;11.49;11.08;23.16;Sbc;;;;;;;;2MASX J08480916+1736409,MCG +03-23-006,PGC 024726,SDSS J084809.14+173641.2,SDSS J084809.15+173641.3,UGC 04607;;; -IC2408;*;08:48:20.24;+19:02:14.7;Cnc;;;;16.50;;13.70;13.12;12.96;;;;;;;;;;2MASS J08482024+1902147,SDSS J084820.24+190214.7;;; -IC2409;G;08:48:24.66;+18:19:52.1;Cnc;0.92;0.73;148;14.40;;11.60;11.06;10.78;22.81;Sa;;;;;;;;2MASX J08482467+1819518,IRAS 08455+1830,MCG +03-23-008,PGC 024748,SDSS J084824.65+181952.0,SDSS J084824.66+181952.1,UGC 04608;;; -IC2410;Dup;08:48:27.25;+19:01:10.2;Cnc;;;;;;;;;;;;;;;2667;;;;;; -IC2411;Dup;08:48:30.17;+19:02:38.0;Cnc;;;;;;;;;;;;;;;2667B;;;;;; -IC2412;*;08:49:23.71;+18:32:35.4;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2413;**;08:49:31.57;+18:44:41.1;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2414;G;08:49:50.12;+18:47:32.7;Cnc;0.58;0.39;46;15.70;;12.72;12.11;11.96;23.23;E;;;;;;;;2MASX J08495011+1847324,PGC 024811,SDSS J084950.11+184732.7;;; -IC2415;*;08:50:01.91;+18:39:05.8;Cnc;;;;16.30;;14.27;13.83;13.83;;;;;;;;;;2MASS J08500190+1839057,SDSS J085001.90+183905.7;;; -IC2416;*;08:50:32.15;+18:33:34.6;Cnc;;;;;;;;;;;;;;;;;;SDSS J085032.15+183334.6;;; -IC2417;*;08:51:08.16;+18:37:29.7;Cnc;;;;15.00;14.50;13.22;12.83;12.74;;;;;;;;;;2MASS J08510815+1837297,SDSS J085108.16+183729.7;;; -IC2418;G;08:51:25.08;+17:56:42.9;Cnc;0.39;0.33;111;16.42;;;;;23.14;Sc;;;;;;;;2MASX J08512508+1756423,PGC 1545976,SDSS J085125.08+175642.9;;;B-Mag taken from LEDA. -IC2419;**;08:52:09.40;+18:06:04.9;Cnc;;;;;;;;;;;;;;;;;;;;; -IC2420;G;08:51:33.76;+03:06:02.5;Hya;0.84;0.72;141;15.10;;11.73;11.07;10.81;23.38;E;;;;;;;;2MASX J08513378+0306024,PGC 024883,SDSS J085133.75+030602.4,SDSS J085133.75+030602.5,SDSS J085133.76+030602.5;;; -IC2421;G;08:54:21.60;+32:40:51.1;Cnc;1.41;0.95;53;14.90;;13.16;12.38;12.14;23.11;Sc;;;;;;;;2MASX J08542159+3240511,MCG +06-20-013,PGC 024996,SDSS J085421.59+324051.0,SDSS J085421.59+324051.1,SDSS J085421.60+324051.1,UGC 04658;;; -IC2422;G;08:54:24.31;+20:13:29.3;Cnc;0.66;0.62;130;15.60;;12.64;11.98;11.45;23.63;E;;;;;;;;2MASX J08542435+2013285,MCG +03-23-016,PGC 024998,SDSS J085424.31+201329.2,SDSS J085424.31+201329.3;;; -IC2423;G;08:54:47.08;+20:13:13.0;Cnc;0.84;0.64;114;14.70;;11.81;11.11;10.87;22.80;Sb;;;;;;;;2MASX J08544709+2013125,MCG +03-23-017,PGC 025021,SDSS J085447.08+201312.9,UGC 04667;;; -IC2424;Dup;08:56:47.69;+39:22:55.9;Lyn;;;;;;;;;;;;;;;2704;;;;;; -IC2425;*;08:55:50.13;-03:25:23.3;Hya;;;;;;;;;;;;;;;;;;;;; -IC2426;G;08:58:30.48;+02:55:31.8;Hya;0.61;0.44;119;15.10;;12.31;11.72;11.39;22.89;S0;;;;;;;;2MASX J08583049+0255314,MCG +01-23-014,PGC 025208,SDSS J085830.47+025531.7,SDSS J085830.48+025531.7,SDSS J085830.48+025531.8;;; -IC2427;G;09:01:01.70;+37:52:31.6;Lyn;0.74;0.61;98;15.70;;12.18;11.47;11.15;23.78;E;;;;;;;;2MASX J09010169+3752312,PGC 025330,SDSS J090101.69+375231.6,SDSS J090101.70+375231.5,SDSS J090101.70+375231.6;;; -IC2428;G;09:03:14.70;+30:35:28.8;Cnc;1.61;0.41;76;14.70;;11.73;11.08;10.76;23.29;Sc;;;;;;;;2MASX J09031465+3035290,IRAS 09002+3047,MCG +05-22-001,PGC 025423,SDSS J090314.69+303528.7,SDSS J090314.70+303528.7,SDSS J090314.70+303528.8;;; -IC2429;G;09:03:42.53;+29:17:45.6;Cnc;0.59;0.41;146;15.20;14.61;12.52;11.95;11.75;22.84;Sab;;;;;;;;2MASX J09034250+2917454,MCG +05-22-003,PGC 025446,SDSS J090342.52+291745.6;;; -IC2430;G;09:04:22.83;+27:57:10.8;Cnc;0.96;0.50;40;14.40;;12.17;11.39;11.23;22.87;S0-a;;;;;;;;2MASX J09042283+2757103,IRAS 09013+2809,MCG +05-22-005,PGC 025467,SDSS J090422.82+275710.8,SDSS J090422.83+275710.8,UGC 04755;;; -IC2431;GGroup;09:04:35.35;+14:35:38.7;Cnc;1.00;;;;;;;;;;;;;;;;;MCG +03-23-030,UGC 04756;;;Diameter of the group inferred by the author. -IC2431 NED01;G;09:04:34.56;+14:35:52.4;Cnc;0.04;0.02;134;17.47;;;;;;Scd;;;;;;;;MCG +03-23-030 NED01,PGC 200245,SDSS J090434.55+143552.3,UGC 04756 NED01;;;B-Mag taken from LEDA. -IC2431 NED02;G;09:04:34.72;+14:35:44.8;Cnc;0.60;0.48;32;14.30;;;;;22.06;I;;;;;;;;IRAS 09018+1447,MCG +03-23-030 NED02,PGC 025476,UGC 04756 NED02;Browning;; -IC2431 NED03;G;09:04:34.82;+14:35:36.3;Cnc;0.45;0.33;5;;;12.30;11.77;11.04;;Sd;;;;;;;;2MASX J09043486+1435354,MCG +03-23-030 NED03,PGC 200246,SDSS J090434.82+143536.3,UGC 04756 NED03;;; -IC2431 NED04;G;09:04:35.44;+14:35:42.2;Cnc;0.28;0.23;98;17.44;;;;;23.38;;;;;;;;;LEDA 200247,MCG +03-23-030 NED04,UGC 04756 NED04;;;B-Mag taken from LEDA. -IC2432;G;09:04:39.54;+05:30:43.4;Hya;0.82;0.30;131;15.50;;12.78;12.12;11.78;23.38;Sab;;;;;;;;2MASX J09043951+0530433,PGC 025479,SDSS J090439.54+053043.3,SDSS J090439.55+053043.4;;; -IC2433;G;09:05:28.73;+22:36:08.0;Cnc;0.82;0.40;109;15.40;;12.63;11.98;11.60;22.98;Sc;;;;;;;;2MASX J09052877+2236082,IRAS 09025+2248,MCG +04-22-010,PGC 025514,SDSS J090528.73+223607.9,SDSS J090528.73+223608.0;;; -IC2434;G;09:07:16.06;+37:12:55.0;Lyn;1.30;0.63;19;14.50;;11.28;10.58;10.24;23.24;SBbc;;;;;;;;2MASX J09071631+3712555,IRAS 09041+3725,MCG +06-20-025,PGC 025609,SDSS J090716.05+371255.3,UGC 04785;;HOLM 109B,C are stars.; -IC2435;G;09:06:49.79;+26:16:31.6;Cnc;0.88;0.39;116;15.20;;11.80;11.09;10.88;23.59;E;;;;;;;;2MASX J09064976+2616317,MCG +04-22-014,PGC 025571,SDSS J090649.79+261631.6,UGC 04782;;; -IC2436;**;09:05:23.72;-19:09:55.7;Hya;;;;;;;;;;;;;;;;;;;;; -IC2437;G;09:05:33.11;-19:12:25.6;Hya;1.79;1.23;119;13.68;;10.36;9.62;9.39;23.92;E-S0;;;;;;;;2MASX J09053310-1912254,ESO 564-021,ESO-LV 564-0210,MCG -03-23-020,PGC 025518;;; -IC2438;Other;09:14:08.83;+73:25:02.5;Cam;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -IC2439;G;09:08:38.46;+32:35:34.6;Cnc;1.40;0.42;31;17.24;16.06;11.48;10.75;10.54;23.64;Sa;;;;;;;;2MASX J09083840+3235344,MCG +06-20-032,PGC 025719,SDSS J090838.45+323534.6,SDSS J090838.46+323534.6;;; -IC2440;*;09:15:50.16;+73:27:32.6;Cam;;;;;;;;;;;;;;;;;;;;; -IC2441;GPair;09:10:02.30;+22:51:12.0;Cnc;0.90;;;;;;;;;;;;;;;;;MCG +04-22-020;;;Diameter of the group inferred by the author. -IC2441 NED01;G;09:10:01.82;+22:51:18.2;Cnc;0.63;0.24;155;15.30;;11.93;10.67;10.70;23.21;E;;;;;;;;2MASX J09100181+2251177,PGC 025844,SDSS J091001.81+225118.1;;; -IC2441 NED02;G;09:10:02.90;+22:51:06.4;Cnc;0.66;0.47;162;15.78;;;;;23.38;Sb;;;;;;;;PGC 3442463,SDSS J091002.89+225106.4,SDSS J091002.90+225106.4;;;B-Mag taken from LEDA. -IC2442;G;09:10:05.17;+22:50:18.0;Cnc;0.83;0.78;155;15.20;;12.55;11.84;11.40;23.62;Sb;;;;;;;;2MASX J09100520+2250177,MCG +04-22-021,PGC 025843,SDSS J091005.19+225018.0;;; -IC2443;G;09:11:30.89;+28:49:35.7;Cnc;0.66;0.57;12;15.10;14.21;11.95;11.31;10.97;22.91;S0;;;;;;;;2MASX J09113086+2849359,MCG +05-22-011,PGC 025908,SDSS J091130.88+284935.7,SDSS J091130.89+284935.7;;; -IC2444;G;09:12:50.86;+30:12:44.2;Cnc;0.82;0.71;48;15.10;;12.03;11.50;11.24;23.59;S0-a;;;;;;;;2MASX J09125088+3012448,MCG +05-22-012,PGC 025969,SDSS J091250.85+301244.2,SDSS J091250.86+301244.2;;; -IC2445;G;09:13:12.60;+31:48:28.3;Cnc;0.76;0.41;18;15.20;;13.64;12.90;12.78;23.13;SBbc;;;;;;;;2MASX J09131272+3148334,MCG +05-22-013,PGC 025985,SDSS J091312.59+314828.3,SDSS J091312.60+314828.3,UGC 04854;;; -IC2446;G;09:13:31.38;+28:57:06.3;Cnc;1.49;0.61;147;15.00;13.64;11.18;10.38;10.10;23.88;Sa;;;;;;2447;;2MASX J09133134+2857059,MCG +05-22-015,PGC 026002,SDSS J091331.37+285706.3,SDSS J091331.38+285706.3,UGC 04855;;The identification as IC 2447 is very uncertain.; -IC2447;Dup;09:13:31.38;+28:57:06.3;Cnc;;;;;;;;;;;;;;;;2446;;;;; -IC2448;PN;09:07:06.26;-69:56:30.6;Car;0.15;;;11.50;10.40;11.92;11.80;11.07;;;;13.97;14.22;;;;HD 78991;2MASX J09070626-6956305,ESO 061-001,ESO 061-01 ,IRAS 09066-6944,PK 285-14 1,PN G285.7-14.9;;; -IC2449;Dup;09:13:33.15;+30:00:00.5;Cnc;;;;;;;;;;;;;;;2783B;;;;;; -IC2450;G;09:17:05.28;+25:25:45.0;Cnc;1.35;0.72;156;14.00;;11.69;11.16;10.93;23.31;S0-a;;;;;;;;2MASX J09170531+2525451,IRAS 09141+2538,MCG +04-22-029,PGC 026218,SDSS J091705.28+252544.9,SDSS J091705.28+252545.0,SDSS J091705.29+252545.0,UGC 04902;;; -IC2451;G;09:15:47.78;+23:29:47.1;Cnc;0.93;0.71;105;15.70;;12.57;11.90;11.65;24.16;Sb;;;;;;;;2MASX J09154776+2329467,PGC 026119,SDSS J091547.78+232947.1;;; -IC2452;G;09:15:57.58;+23:28:20.1;Cnc;0.68;0.31;132;15.60;;12.32;11.69;11.43;23.16;Sab;;;;;;;;2MASX J09155757+2328207,PGC 026129;;; -IC2453;G;09:15:54.53;+20:55:44.0;Cnc;0.72;0.41;62;15.50;;12.20;11.37;;23.04;Sab;;;;;;;;2MASX J09155451+2055437,IRAS 09130+2108,PGC 026131,SDSS J091554.53+205543.9,SDSS J091554.54+205544.0;;; -IC2454;G;09:16:01.77;+17:49:14.5;Cnc;0.97;0.68;100;14.40;;11.65;10.94;10.65;23.05;Sa;;;;;;;;2MASX J09160180+1749144,IRAS 09132+1801,MCG +03-24-019,PGC 026139,SDSS J091601.76+174914.4,SDSS J091601.77+174914.5,UGC 04886;;; -IC2455;Dup;09:16:50.01;+20:11:54.6;Cnc;;;;;;;;;;;;;;;2804;;;;;; -IC2456;G;09:17:24.24;+34:40:27.8;Lyn;0.63;0.45;54;15.66;;12.85;12.15;11.88;23.43;E-S0;;;;;;;;2MASX J09172428+3440282,LEDA 3088630,SDSS J091724.23+344027.7,SDSS J091724.24+344027.7,SDSS J091724.24+344027.8;;The identification as IC 2456 is not certain.;B-Mag taken from LEDA. -IC2457;G;09:17:04.14;+20:05:36.6;Cnc;0.55;0.40;75;16.21;;13.32;12.52;12.28;23.45;SBab;;;;;;;;2MASX J09170413+2005368,PGC 1616119,SDSS J091704.13+200536.5,SDSS J091704.14+200536.6;;;B-Mag taken from LEDA. -IC2458;Dup;09:21:30.07;+64:14:19.3;UMa;;;;;;;;;;;;;;;2820A;;;;;; -IC2459;G;09:18:59.47;+34:51:43.9;Lyn;0.66;0.38;118;15.78;;13.07;12.45;12.34;23.91;E;;;;;;;;2MASX J09185946+3451446,LEDA 2055725,SDSS J091859.46+345143.8,SDSS J091859.47+345143.9;;;B-Mag taken from LEDA. -IC2460;Dup;09:19:19.01;+33:52:50.9;Lyn;;;;;;;;;;;;;;;2827;;;;;; -IC2461;G;09:19:58.03;+37:11:28.5;Lyn;2.41;0.51;143;15.10;;11.27;10.47;10.05;24.22;Sb;;;;;;;;2MASX J09195802+3711277,IRAS 09168+3724,MCG +06-21-019,PGC 026390,SDSS J091958.02+371128.5,UGC 04943;;; -IC2462;G;09:22:56.25;+22:41:10.9;Leo;0.69;0.25;62;16.06;;12.91;12.17;11.81;23.24;Sbc;;;;;;;;2MASX J09225621+2241109,PGC 1674360,SDSS J092256.24+224110.8,SDSS J092256.25+224110.9;;;B-Mag taken from LEDA. -IC2463;G;09:23:00.25;+22:37:06.8;Leo;0.54;0.44;103;15.70;;12.81;12.04;11.86;23.05;Sab;;;;;;;;2MASX J09230026+2237070,PGC 026557,SDSS J092300.24+223706.8,SDSS J092300.25+223706.8;;; -IC2464;G;09:23:22.27;+22:37:48.9;Leo;0.80;0.54;147;15.40;;12.26;11.60;11.38;23.24;Sab;;;;;;;;2MASX J09232227+2237483,MCG +04-22-036,PGC 026585,SDSS J092322.26+223748.8,SDSS J092322.26+223748.9;;; -IC2465;G;09:23:31.51;+24:26:44.5;Leo;0.97;0.56;89;15.09;;11.91;11.10;10.76;23.60;S0-a;;;;;;;;2MASX J09233148+2426447,PGC 3084878,SDSS J092331.50+242644.4,SDSS J092331.51+242644.5;;;B-Mag taken from LEDA. -IC2466;G;09:23:45.03;+24:31:06.4;Leo;0.83;0.49;92;15.50;;11.50;10.82;10.48;23.77;E-S0;;;;;;;;2MASX J09234501+2431063,MCG +04-22-044,PGC 026629,SDSS J092345.02+243106.4;;Star superposed.; -IC2467;G;09:24:52.72;+38:21:06.3;LMi;0.95;0.92;45;14.80;;11.39;10.75;10.45;23.50;E;;;;;;;;2MASX J09245275+3821066,MCG +07-20-005,PGC 026683,SDSS J092452.71+382106.3,SDSS J092452.72+382106.3,SDSS J092452.72+382106.4;;; -IC2468;G;09:25:01.49;+38:20:38.5;LMi;0.51;0.47;60;16.10;;12.75;12.10;11.88;23.26;S0;;;;;;;;2MASX J09250150+3820389,MCG +07-20-007,PGC 026691,SDSS J092501.49+382038.4,SDSS J092501.49+382038.5;;;B-Mag taken from LEDA. -IC2469;G;09:23:01.06;-32:26:59.1;Pyx;5.79;1.17;37;12.07;;8.37;7.55;7.33;23.73;SBab;;;;;;;;2MASX J09230105-3226591,ESO 433-017,MCG -05-22-008,PGC 026561,UGCA 163;;;B-Mag taken from LEDA. -IC2470;G;09:25:41.32;+23:21:41.8;Leo;1.01;0.94;105;15.60;;11.77;11.06;10.80;23.85;S0-a;;;;;;;;2MASX J09254128+2321413,MCG +04-22-049,PGC 026729,PGC 026730,SDSS J092541.31+232141.8,SDSS J092541.32+232141.8;;MCG Declination is -5 arcmin in error.; -IC2471;G;09:25:12.17;-06:49:47.7;Hya;1.08;0.52;151;14.50;;10.93;10.22;9.95;23.44;S0;;;;;;;;2MASX J09251217-0649476,MCG -01-24-015,PGC 026707;;; -IC2472;G;09:26:33.72;+21:23:06.1;Leo;0.62;0.51;4;15.50;;13.01;12.26;11.87;23.00;SBbc;;;;;;;;2MASX J09263370+2123063,PGC 026779,SDSS J092633.72+212306.0;;; -IC2473;G;09:27:23.50;+30:26:26.9;Leo;1.08;0.74;92;14.60;;11.49;10.84;10.55;23.33;Sbc;;;;;;;;2MASX J09272351+3026263,IRAS 09244+3039,MCG +05-22-047,PGC 026817,SDSS J092723.49+302626.9,SDSS J092723.50+302626.9,UGC 05038;;; -IC2474;G;09:27:11.41;+23:02:03.4;Leo;0.59;0.22;96;15.75;;12.59;11.87;11.59;22.66;Sbc;;;;;;;;2MASX J09271138+2302041,MCG +04-22-057,PGC 026810,SDSS J092711.40+230203.4,SDSS J092711.41+230203.4;;The IC number includes the star close to the southeast.;B-Mag taken from LEDA. -IC2475;G;09:27:54.33;+29:47:30.7;Leo;1.01;0.34;111;15.70;;12.21;11.48;11.19;23.52;Sbc;;;;;;;;2MASX J09275435+2947303,MCG +05-22-049,PGC 026851,SDSS J092754.33+294730.6;;; -IC2476;G;09:27:52.83;+29:59:08.7;Leo;1.30;1.04;40;14.50;;11.03;10.35;10.03;23.59;E-S0;;;;;;;;2MASX J09275281+2959085,MCG +05-23-001,PGC 026854,SDSS J092752.81+295908.6,SDSS J092752.83+295908.7,UGC 05043;;; -IC2477;G;09:28:17.83;+29:42:21.8;Leo;0.60;0.43;172;15.50;14.65;12.46;11.64;11.53;23.11;S0-a;;;;;;2480;;2MASX J09281784+2942212,PGC 026883,SDSS J092817.82+294221.7,SDSS J092817.83+294221.7,SDSS J092817.83+294221.8;;The identification as IC 2477 is not certain.; -IC2478;G;09:28:00.93;+30:02:13.1;Leo;0.57;0.42;140;15.60;;12.53;11.94;11.65;23.29;E;;;;;;;;2MASX J09280090+3002135,MCG +05-23-003,PGC 026865,SDSS J092800.92+300213.0,SDSS J092800.93+300213.1;;; -IC2479;G;09:28:04.09;+29:59:29.2;Leo;0.58;0.33;152;15.50;;13.11;12.40;12.03;22.81;SBb;;;;;;;;2MASX J09280405+2959294,IRAS 09251+3012,MCG +05-23-002,PGC 026866,SDSS J092804.09+295929.1,SDSS J092804.09+295929.2;;; -IC2480;Dup;09:28:17.83;+29:42:21.8;Leo;;;;;;;;;;;;;;;;2477;;;;; -IC2481;G;09:27:28.81;+03:55:46.6;Hya;0.83;0.47;161;14.50;;12.10;11.50;11.10;22.46;SBbc;;;;;;;;2MASX J09272880+0355470,IRAS 09248+0408,MCG +01-24-022,PGC 026826,SDSS J092728.80+035546.5,SDSS J092728.81+035546.5,SDSS J092728.81+035546.6,UGC 05040A;;; -IC2482;G;09:26:59.22;-12:06:32.1;Hya;2.84;1.84;145;13.92;;9.88;9.22;8.94;25.03;E;;;;;;;;2MASX J09265922-1206323,MCG -02-24-025,PGC 026796;;;B-Mag taken from LEDA. -IC2483;G;09:29:25.79;+30:59:41.0;Leo;0.66;0.45;103;15.70;;12.73;12.05;11.71;23.27;Sb;;;;;;;;2MASX J09292577+3059407,PGC 026928,SDSS J092925.79+305940.9,SDSS J092925.79+305941.0;;; -IC2484;Other;09:26:50.28;-42:50:34.1;Vel;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2485;Other;09:27:11.88;-39:17:05.0;Ant;;;;;;;;;;;;;;;;;;;;"Nothing at this position; probably a defect on the Harvard plate."; -IC2486;G;09:30:17.37;+26:38:28.6;Leo;0.92;0.62;135;15.10;;12.20;11.51;11.47;23.26;Sbc;;;;;;;;2MASX J09301740+2638279,MCG +05-23-006,PGC 026982,SDSS J093017.36+263828.5,SDSS J093017.37+263828.5,SDSS J093017.37+263828.6,UGC 05062;;; -IC2487;G;09:30:09.17;+20:05:27.1;Leo;1.84;0.46;164;14.20;;11.13;10.47;10.24;23.31;Sb;;;;;;;;2MASX J09300918+2005272,IRAS 09273+2018,MCG +03-24-061,PGC 026966,SDSS J093009.16+200527.0,SDSS J093009.17+200527.1,UGC 05059;;"CGCG misprints name as 'IC 2489'; corrected in CGCG errata."; -IC2488;OCl;09:27:38.23;-57:00:25.0;Car;7.20;;;;7.40;;;;;;;;;;;;;MWSC 1671;;; -IC2489;Other;09:31:11.63;-05:53:03.0;Hya;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2490;G;09:33:03.65;+29:55:42.1;Leo;0.97;0.65;177;14.70;;11.79;11.08;10.90;23.09;SABb;;;;;;;;2MASX J09330359+2955417,MCG +05-23-010,PGC 027121,SDSS J093303.64+295542.0,SDSS J093303.64+295542.1,UGC 05087;;; -IC2491;G;09:35:14.22;+34:43:54.0;LMi;0.87;0.61;74;15.00;;11.79;11.01;10.78;23.31;S0;;;;;;;;2MASX J09351419+3443536,MCG +06-21-053,PGC 027254,SDSS J093514.22+344354.0,UGC 05104;;; -IC2492;G;09:33:14.87;-37:51:58.8;Ant;0.76;0.31;48;15.77;;11.71;10.93;10.72;23.39;Sab;;;;;;;;2MASX J09331488-3751587,ESO 315-013,ESO-LV 315-0130,PGC 027129;;The IC identification is very uncertain.; -IC2493;G;09:36:17.54;+37:21:50.4;LMi;0.97;0.72;1;15.00;;11.60;10.90;10.67;23.51;E;;;;;;;;2MASX J09361758+3721502,MCG +06-21-056,PGC 027322,SDSS J093617.53+372150.3,SDSS J093617.53+372150.4,SDSS J093617.54+372150.4;;; -IC2494;Dup;09:36:05.79;-12:26:12.2;Hya;;;;;;;;;;;;;;;2947;;;;;; -IC2495;G;09:38:07.39;+28:03:27.6;Leo;0.73;0.30;11;14.80;;12.04;11.46;11.31;22.49;Sab;;;;;;;;2MASX J09380740+2803273,MCG +05-23-023,PGC 027455,SDSS J093807.38+280327.5,SDSS J093807.39+280327.6;;; -IC2496;G;09:38:44.50;+34:43:36.4;LMi;0.73;0.43;33;15.50;;12.59;11.94;11.61;23.09;Sbc;;;;;;;;2MASX J09384453+3443361,IRAS 09357+3457,PGC 027499,SDSS J093844.50+344336.3,SDSS J093844.50+344336.4;;; -IC2497;G;09:41:04.09;+34:43:57.8;LMi;0.72;0.38;115;15.78;;12.54;11.71;11.41;23.51;SBa;;;;;;;;2MASX J09410407+3443585,IRAS 09380+3457,LEDA 165538,SDSS J094104.11+344358.4;;;B-Mag taken from LEDA. -IC2498;G;09:41:21.94;+28:06:52.1;Leo;0.83;0.31;25;15.30;;12.23;11.69;11.55;23.12;Sb;;;;;;;;2MASX J09412191+2806518,PGC 027668,SDSS J094121.93+280652.0,SDSS J094121.93+280652.1,SDSS J094121.94+280652.1;;; -IC2499;G;09:41:24.63;+27:53:42.9;Leo;0.63;0.26;125;16.21;;;;;23.80;Sa;;;;;;;;2MASX J09412462+2753428,PGC 1820853,SDSS J094124.63+275342.9;;;B-Mag taken from LEDA. -IC2500;G;09:42:23.37;+36:20:58.9;LMi;1.35;0.43;164;15.20;;11.73;11.01;10.75;23.69;SBab;;;;;;;;2MASX J09422335+3620591,MCG +06-21-074,PGC 027748,SDSS J094223.37+362058.8,SDSS J094223.37+362058.9,SDSS J094223.38+362058.8;;; -IC2501;PN;09:38:47.18;-60:05:30.7;Car;0.03;;;11.30;10.40;10.39;10.24;9.24;;;;14.42;14.48;;;;HD 83832;2MASX J09384714-6005305,ESO 126-026,IRAS 09373-5951 ,PK 281-05 1,PN G281.0-05.6;;; -IC2502;Other;09:43:06.74;+33:03:37.1;LMi;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2503;Other;09:43:09.58;+33:06:28.0;LMi;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2504;Other;09:38:33.82;-69:05:06.4;Car;;;;;;;;;;;;;;;;;;;;"Nothing at this position; probably a defect on the Harvard plate."; -IC2505;G;09:45:06.95;+27:16:06.9;Leo;0.75;0.55;18;15.70;;12.83;12.23;11.79;23.73;Sab;;;;;;;;2MASX J09450693+2716069,MCG +05-23-034,PGC 027936,SDSS J094506.95+271606.9;;; -IC2506;G;09:45:12.77;+27:15:07.2;Leo;0.55;0.41;79;15.60;;12.60;11.80;11.21;22.98;Sab;;;;;;;;2MASX J09451278+2715069,MCG +05-23-035,PGC 027940,SDSS J094512.76+271507.1,SDSS J094512.77+271507.1,SDSS J094512.77+271507.2;;; -IC2507;G;09:44:33.90;-31:47:24.0;Ant;1.74;0.86;48;17.22;;11.73;11.18;11.05;22.65;IB;;;;;;;;2MASX J09443293-3147307,MCG -05-23-009,PGC 027903;;; -IC2508;G;09:47:07.08;+33:30:29.0;LMi;0.69;0.44;19;15.70;;12.88;12.17;11.94;23.85;E;;;;;;;;2MASX J09470711+3330290,PGC 028106,SDSS J094707.07+333028.9,SDSS J094707.08+333029.0;;; -IC2509;*;09:46:55.92;+05:42:07.0;Sex;;;;;;;;;;;;;;;;;;SDSS J094655.91+054207.0;;; -IC2510;G;09:47:43.48;-32:50:14.8;Ant;1.59;0.86;148;15.50;;11.05;10.32;10.01;;Sb;;;;;;;;2MASX J09474350-3250148,2MASX J09474417-3250247,ESO 373-029,MCG -05-23-017,PGC 028147;;; -IC2511;G;09:49:24.55;-32:50:21.1;Ant;4.22;0.81;43;13.01;;10.12;9.31;9.07;24.13;SABa;;;;;;2512;;2MASX J09492462-3250198,ESO 374-049,ESO-LV 374-0490,MCG -05-23-018,PGC 028246;;; -IC2512;Dup;09:49:24.55;-32:50:21.1;Ant;;;;;;;;;;;;;;;;2511;;;;; -IC2513;G;09:50:00.79;-32:52:58.2;Ant;3.39;0.68;63;13.29;;9.48;8.78;8.50;23.80;Sab;;;;;;2514;;2MASX J09500078-3252578,ESO 374-050,ESO-LV 374-0500,MCG -05-23-019,PGC 028283,PGC 028290;;; -IC2514;Dup;09:50:00.79;-32:52:58.2;Ant;;;;;;;;;;;;;;;;2513;;;;; -IC2515;G;09:54:39.42;+37:24:30.9;LMi;1.13;0.40;174;15.10;;11.70;10.92;10.60;23.27;Sb;;;;;;;;2MASX J09543943+3724308,IRAS 09516+3738,MCG +06-22-027,PGC 028581,SDSS J095439.41+372430.9,SDSS J095439.42+372430.9,UGC 05321;;; -IC2516;G;09:54:48.36;+37:41:13.0;LMi;0.97;0.87;13;15.00;;11.73;11.02;10.75;23.54;E-S0;;;;;;;;2MASX J09544835+3741128,MCG +06-22-028,PGC 028589,SDSS J095448.35+374113.0,SDSS J095448.36+374113.0;;; -IC2517;G;09:52:50.67;-33:44:31.0;Ant;0.68;0.56;98;15.43;;;;;23.36;S0;;;;;;;;ESO 374-006,ESO-LV 374-0060,PGC 028466;;; -IC2518;G;09:55:58.53;+37:09:19.9;LMi;0.70;0.53;110;15.60;;12.73;12.04;11.92;23.81;E;;;;;;;;2MASX J09555853+3709202,PGC 028659,SDSS J095558.52+370919.7,SDSS J095558.52+370919.8,SDSS J095558.53+370919.9;;; -IC2519;G;09:55:58.81;+34:02:11.7;LMi;0.35;0.25;90;15.60;;12.48;11.69;11.41;;E;;;;;;;;2MASX J09555878+3402123,IRAS 09530+3416,PGC 028660,SDSS J095558.80+340211.6,SDSS J095558.81+340211.7;;; -IC2520;G;09:56:20.12;+27:13:39.3;Leo;0.88;0.74;57;14.30;;11.39;10.66;10.38;22.75;S0-a;;;;;;;;2MASX J09562016+2713393,IRAS 09534+2727,MCG +05-24-003,PGC 028682,SDSS J095620.11+271339.2,SDSS J095620.12+271339.3,UGC 05335;;; -IC2521;G;09:57:15.75;+33:58:34.7;LMi;0.61;0.57;15;15.30;;13.42;12.89;12.69;23.28;SBbc;;;;;;;;2MASX J09571571+3358343,MCG +06-22-035,PGC 028740,SDSS J095715.74+335834.7,SDSS J095715.75+335834.7;;; -IC2522;G;09:55:08.96;-33:08:13.7;Ant;2.30;1.74;180;12.60;;10.24;9.61;9.32;23.38;Sc;;;;;;;;2MASX J09550896-3308137,ESO 374-010,ESO-LV 374-0100,IRAS 09529-3254,MCG -05-24-004,PGC 028606,UGCA 189;;; -IC2523;G;09:55:09.52;-33:12:36.8;Ant;1.43;0.86;30;13.62;;11.12;10.48;10.07;22.74;SBbc;;;;;;;;2MASX J09550951-3312367,ESO 374-011,ESO-LV 374-0110,IRAS 09529-3258,MCG -05-24-005,PGC 028607;;; -IC2524;G;09:57:32.86;+33:37:11.0;LMi;0.74;0.44;64;14.80;;13.10;12.54;12.19;22.86;S0-a;;;;;;;;2MASX J09573287+3337101,MCG +06-22-039,PGC 028758,SDSS J095732.85+333711.0,SDSS J095732.86+333711.0;;; -IC2525;G;09:58:24.96;+37:06:06.7;LMi;0.65;0.61;55;15.70;;12.40;11.97;11.37;23.76;E;;;;;;;;2MASX J09582493+3706071,PGC 028807,SDSS J095824.95+370606.7,SDSS J095824.96+370606.7;;; -IC2526;G;09:57:03.03;-32:15:24.7;Ant;2.07;0.70;56;13.65;;9.95;9.27;9.04;23.91;S0;;;;;;;;2MASX J09570304-3215248,ESO 435-012,ESO-LV 435-0120,MCG -05-24-008,PGC 028732;;; -IC2527;G;10:00:06.49;+38:10:19.9;LMi;0.57;0.48;123;15.20;;13.21;12.48;12.15;23.02;SBc;;;;;;;;2MASX J10000654+3810201,PGC 028920,SDSS J100006.49+381019.9;;; -IC2528;Dup;09:59:06.42;-27:07:43.7;Ant;;;;;;;;;;;;;;;3084;;;;;; -IC2529;Dup;09:59:29.54;-22:49:34.6;Hya;;;;;;;;;;;;;;;3081;;;;;; -IC2530;G;10:01:31.06;+37:12:14.2;LMi;0.97;0.94;20;15.00;;11.78;11.02;10.84;23.65;E;;;;;;;;2MASX J10013106+3712139,MCG +06-22-053,PGC 029019,SDSS J100131.06+371214.2;;; -IC2531;G;09:59:55.77;-29:37:01.1;Ant;6.55;0.60;74;13.19;;9.61;8.84;8.51;23.91;Sc;;;;;;;;2MASX J09595554-2937040,ESO 435-025,ESO-LV 435-0250,MCG -05-24-015,PGC 028909,UGCA 191;;The 2MASX position is weighted toward the south by the J-band image.; -IC2532;G;10:00:05.40;-34:13:41.8;Ant;2.04;1.12;36;13.91;;10.82;10.23;10.02;23.96;Sa;;;;;;;;2MASX J10000541-3413417,ESO 374-016,ESO-LV 374-0160,IRAS 09579-3359,MCG -06-22-007,PGC 028915;;; -IC2533;G;10:00:31.67;-31:14:42.0;Ant;2.04;1.45;180;12.89;;9.66;8.95;8.73;23.23;E-S0;;;;;;;;2MASX J10003168-3114419,ESO 435-027,ESO-LV 435-0270,MCG -05-24-017,PGC 028948;;; -IC2534;G;10:01:29.86;-34:06:44.7;Ant;1.84;1.25;98;13.38;;10.30;9.61;9.36;23.45;S0-a;;;;;;;;2MASX J10012985-3406445,ESO 374-019,ESO-LV 374-0190,MCG -06-22-011,PGC 029016;;; -IC2535;G;10:04:31.83;+38:00:21.7;LMi;0.85;0.74;75;14.60;;11.97;11.26;10.87;23.06;Sb;;;;;;;;2MASX J10043179+3800215,MCG +06-22-065,PGC 029222,SDSS J100431.82+380021.7,SDSS J100431.83+380021.7;;; -IC2536;G;10:03:30.22;-33:56:59.1;Ant;1.88;0.40;45;14.57;;11.37;10.62;10.37;23.44;SBc;;;;;;;;2MASX J10033022-3356590,ESO 374-026,ESO-LV 374-0260,IRAS 10012-3342,PGC 029157;;; -IC2537;G;10:03:51.89;-27:34:15.1;Ant;2.61;1.82;17;12.88;12.09;10.50;9.81;9.40;23.33;Sc;;;;;;;;2MASX J10035188-2734151,ESO 499-039,ESO-LV 499-0390,MCG -04-24-015,PGC 029179,UGCA 197;;; -IC2538;G;10:03:56.49;-34:48:27.1;Ant;1.49;0.75;180;14.62;;11.44;10.74;10.43;23.92;SABc;;;;;;;;2MASX J10035647-3448270,ESO 374-027,ESO-LV 374-0270,IRAS 10017-3434,MCG -06-22-015,PGC 029181;;; -IC2539;G;10:04:16.21;-31:21:46.6;Ant;1.98;0.56;25;14.04;;11.07;10.36;10.05;23.33;Sbc;;;;;;;;2MASX J10041619-3121464,ESO 435-034,ESO-LV 435-0340,IRAS 10020-3107,MCG -05-24-020,PGC 029203;;; -IC2540;G;10:06:46.71;+31:28:32.6;LMi;0.91;0.59;158;15.20;;11.92;11.21;11.20;23.76;E-S0;;;;;;;;2MASX J10064674+3128329,MCG +05-24-014,PGC 029389,SDSS J100646.71+312832.5,SDSS J100646.71+312832.6;;; -IC2541;G;10:05:48.01;-17:26:04.4;Hya;1.47;0.64;4;13.88;;11.25;10.59;10.29;22.82;SBbc;;;;;;;;2MASX J10054801-1726041,MCG -03-26-017,PGC 029309;;;B-Mag taken from LEDA. -IC2542;G;10:07:50.54;+34:18:55.1;LMi;1.04;0.77;171;14.60;;11.90;11.28;10.98;23.14;SBc;;;;;;;;2MASX J10075047+3418548,IRAS 10048+3433,MCG +06-22-076,PGC 029453,SDSS J100750.53+341855.0,SDSS J100750.54+341855.1;;; -IC2543;GPair;10:08:23.80;+37:50:34.0;LMi;0.80;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC2543 NED01;G;10:08:23.56;+37:50:29.5;LMi;0.74;0.29;134;15.70;;12.59;11.78;11.44;23.17;Sb;;;;;;;;2MASX J10082361+3750299,IRAS 10054+3805,PGC 029485;;; -IC2543 NED02;G;10:08:23.97;+37:50:39.2;LMi;0.20;0.14;6;17.51;;;;;22.73;;;;;;;;;SDSS J100823.97+375039.2;;;B-Mag taken from LEDA -IC2544;G;10:08:29.73;+33:20:47.0;LMi;0.52;0.40;65;15.10;;13.51;13.17;12.74;22.56;SBcd;;;;;;;;2MASX J10082971+3320467,PGC 029491,SDSS J100829.72+332046.9,SDSS J100829.73+332046.9;;; -IC2545;**;10:06:35.06;-33:51:29.8;Ant;;;;;;;;;;;;;;;;;;;;The IC identification is uncertain, but IRAS F10038-3338 is not IC 2545.; -IC2546;G;10:07:05.92;-33:15:40.9;Ant;0.83;0.60;95;15.59;;;;;23.93;;;;;;;;;ESO 374-036,ESO-LV 374-0360,PGC 029407;;; -IC2547;G;10:10:04.49;+36:30:08.8;LMi;0.82;0.36;121;15.70;;12.78;12.13;11.67;23.49;Sb;;;;;;;;2MASX J10100448+3630092,PGC 029582,SDSS J101004.48+363008.8,SDSS J101004.49+363008.8;;; -IC2548;G;10:07:54.95;-35:13:46.6;Ant;2.17;1.42;70;13.90;;10.99;10.35;10.11;24.07;SBbc;;;;;;;;2MASX J10075496-3513468,ESO 374-037,ESO-LV 374-0370,MCG -06-23-001,PGC 029461;;; -IC2549;G;10:10:10.16;+36:27:53.5;LMi;0.47;0.32;143;15.60;;13.60;12.95;12.57;22.81;Sbc;;;;;;;;2MASX J10101012+3627532,PGC 029592,SDSS J101010.15+362753.4,SDSS J101010.16+362753.5;;; -IC2550;G;10:10:27.92;+27:57:22.0;Leo;0.93;0.68;109;14.60;;11.88;11.15;10.88;22.85;SABb;;;;;;;;2MASX J10102794+2757221,IRAS 10076+2811,MCG +05-24-023,PGC 029615,SDSS J101027.91+275721.9,SDSS J101027.91+275722.0,UGC 05484;;; -IC2551;G;10:10:40.32;+24:24:50.9;Leo;0.76;0.56;36;14.60;;11.70;11.08;10.74;22.67;Sa;;;;;;;;2MASX J10104029+2424510,IRAS 10078+2439,MCG +04-24-016,PGC 029632,SDSS J101040.31+242450.9,SDSS J101040.32+242450.9,UGC 05488;;; -IC2552;G;10:10:46.14;-34:50:40.9;Ant;1.87;1.68;89;13.42;;9.94;9.26;8.97;23.19;E-S0;;;;;;;;2MASX J10104613-3450405,ESO 374-040,ESO-LV 374-0400,MCG -06-23-007,PGC 029637;;; -IC2553;PN;10:09:20.87;-62:36:49.3;Car;0.15;;;13.00;10.30;12.51;12.63;11.64;;;;15.40;15.50;;;;HD 88367;ESO 127-010,IRAS 10077-6222,PK 285-05 1,PN G285.4-05.3;;; -IC2554;G;10:08:50.56;-67:01:51.1;Car;3.31;1.29;8;12.43;13.20;9.56;8.86;8.56;23.11;SBbc;;;;;;;;2MASX J10085056-6701510,ESO 092-012,ESO-LV 92-0120,IRAS 10075-6647,PGC 029512;;"SGC calls this object double (1 plate only); RC1,2,3 and ESO call it single."; -IC2555;Dup;10:11:42.43;-31:38:34.3;Ant;;;;;;;;;;;;;;;3157;;;;;; -IC2556;G;10:12:37.63;-34:43:43.9;Ant;1.83;0.95;119;14.29;;13.11;12.28;12.50;23.90;Scd;;;;;;;;2MASX J10123762-3443440,ESO 374-042,ESO-LV 374-0420,IRAS 10104-3428,MCG -06-23-012,PGC 029727;;; -IC2557;G;10:16:05.87;+38:06:33.2;LMi;0.60;0.41;95;15.70;;12.46;11.73;11.67;23.12;S0-a;;;;;;;;2MASX J10160583+3806334,MCG +06-23-003,PGC 029977,SDSS J101605.87+380633.2;;; -IC2558;G;10:14:44.14;-34:20:19.4;Ant;1.01;0.61;17;14.48;;11.92;11.20;11.12;22.63;Sm;;;;;;;;2MASX J10144414-3420196,ESO 375-001,ESO-LV 375-0010,IRAS 10125-3405,MCG -06-23-018,PGC 029895;;; -IC2559;G;10:14:45.39;-34:03:31.7;Ant;1.69;0.53;17;14.39;;11.54;10.91;10.56;23.47;SBb;;;;;;;;2MASX J10144539-3403316,ESO 375-002,ESO-LV 375-0020,IRAS 10125-3348,MCG -06-23-019,PGC 029898;;; -IC2560;G;10:16:18.72;-33:33:49.7;Ant;3.55;1.67;46;12.53;13.31;9.68;8.97;8.69;23.55;SBb;;;;;;;;2MASX J10161866-3333498,ESO 375-004,ESO-LV 375-0040,IRAS 10140-3318,MCG -05-25-001,PGC 029993;;; -IC2561;G;10:19:08.61;+34:40:30.1;LMi;0.89;0.55;14;14.90;;12.33;11.60;11.28;23.02;Sb;;;;;;;;2MASX J10190862+3440303,IRAS 10162+3455,MCG +06-23-007,PGC 030147,SDSS J101908.60+344030.0,SDSS J101908.61+344030.1,UGC 05567;;; -IC2562;G;10:18:54.50;+16:09:19.9;Leo;0.66;0.44;166;15.20;;11.66;11.00;10.70;22.62;Sa;;;;;;;;2MASX J10185447+1609193,MCG +03-26-053,PGC 030119,SDSS J101854.50+160919.8,SDSS J101854.50+160919.9;;; -IC2563;G;10:18:51.93;-32:35:47.6;Ant;0.91;0.38;110;15.57;;;;;23.29;SBcd;;;;;;;;ESO 436-009,ESO-LV 436-0090,PGC 030125;;; -IC2564;G;10:21:27.70;+36:27:07.4;LMi;0.71;0.60;50;15.83;;12.46;11.81;11.64;24.06;E;;;;;;;;2MASX J10212774+3627075,LEDA 2080857,SDSS J102127.69+362707.3,SDSS J102127.70+362707.4;;;B-Mag taken from LEDA. -IC2565;G;10:21:17.87;+27:55:48.3;Leo;0.67;0.42;70;15.20;;11.81;11.19;10.81;23.07;S0-a;;;;;;;;2MASX J10211787+2755484,PGC 030288;;; -IC2566;G;10:22:19.39;+36:34:58.9;LMi;0.98;0.64;6;14.90;;11.60;10.88;10.56;23.54;S0-a;;;;;;;;2MASX J10221939+3634585,IRAS 10194+3650,MCG +06-23-008,PGC 030357,SDSS J102219.38+363458.8,SDSS J102219.38+363458.9,SDSS J102219.39+363458.9;;; -IC2567;G;10:21:57.80;+24:39:18.8;Leo;0.79;0.59;57;15.70;;12.03;11.42;11.09;23.59;S0-a;;;;;;;;2MASX J10215780+2439184,MCG +04-25-010,PGC 030339,SDSS J102157.80+243918.7,SDSS J102157.80+243918.8;;; -IC2568;G;10:22:30.01;+36:35:57.5;LMi;1.10;0.55;93;15.00;;11.77;11.08;10.83;23.65;SBa;;;;;;;;2MASX J10223002+3635574,MCG +06-23-009,PGC 030371,SDSS J102230.01+363557.4,UGC 05603;;; -IC2569;G;10:22:53.59;+24:36:23.1;Leo;0.67;0.57;146;15.46;;12.18;11.73;11.27;23.61;E;;;;;;;;2MASX J10225359+2436225,LEDA 1711559,SDSS J102253.59+243623.0,SDSS J102253.59+243623.1;;;B-Mag taken from LEDA. -IC2570;G;10:21:34.30;-33:37:23.6;Ant;0.82;0.44;172;16.04;;12.80;12.05;11.76;23.79;SBbc;;;;;;;;2MASX J10213427-3337234,ESO 375-011,ESO-LV 375-0110,PGC 030307;;; -IC2571;Dup;10:21:35.08;-34:16:00.5;Ant;;;;;;;;;;;;;;;3223;;;;;; -IC2572;G;10:25:07.28;+28:05:41.3;LMi;0.90;0.43;26;15.60;;12.45;11.68;11.55;23.64;Sa;;;;;;;;2MASX J10250725+2805409,IRAS 10222+2820,MCG +05-25-008,PGC 030562,SDSS J102507.27+280541.3,SDSS J102507.28+280541.3,UGC 05636;;; -IC2573;G;10:23:30.18;-35:27:20.1;Ant;1.50;0.33;2;15.37;;13.13;12.81;12.58;23.66;SBcd;;;;;;;;2MASX J10233017-3527199,ESO 375-017,ESO-LV 375-0170,PGC 030442;;; -IC2574;G;10:28:23.48;+68:24:43.7;UMa;12.91;5.57;48;11.07;10.87;11.48;10.91;10.72;24.38;SABm;;;;;;;;2MASX J10282348+6824437,MCG +12-10-038,PGC 030819,UGC 05666;Coddington's Nebula;; -IC2575;G;10:25:24.00;-32:38:10.5;Ant;0.63;0.58;55;15.90;;13.12;12.59;12.01;23.54;Sbc;;;;;;;;2MASX J10252399-3238102,ESO 436-017,ESO-LV 436-0170,PGC 030586;;; -IC2576;G;10:25:58.98;-32:54:12.5;Ant;0.94;0.63;42;14.81;;12.39;11.86;11.35;23.11;Sb;;;;;;;;2MASX J10255899-3254123,ESO 375-023,ESO-LV 375-0230,IRAS 10236-3238,MCG -05-25-003,PGC 030634;;; -IC2577;G;10:28:01.45;+32:45:50.0;LMi;0.70;0.41;103;15.30;;13.12;12.40;11.80;23.09;Sb;;;;;;;;2MASX J10280142+3245498,MCG +06-23-018,PGC 030797,SDSS J102801.45+324549.9,SDSS J102801.45+324550.0;;; -IC2578;G;10:27:22.69;-33:52:38.4;Ant;1.51;0.35;143;14.99;;11.56;10.78;10.50;23.48;Sc;;;;;;;;2MASX J10272268-3352384,ESO 375-029,ESO-LV 375-0290,IRAS 10250-3337,PGC 030753;;; -IC2579;Dup;10:29:16.84;+26:05:57.3;Leo;;;;;;;;;;;;;;;3251;;;;;; -IC2580;G;10:28:17.98;-31:31:04.9;Ant;2.05;1.75;128;13.21;;10.96;10.35;10.04;23.54;Sc;;;;;;;;2MASX J10281798-3131049,ESO 436-025,ESO-LV 436-0250,ESO-LV 436-0271,IRAS 10260-3115,MCG -05-25-004,PGC 030814;;ESO-LV has two entries for this object.; -IC2581;OCl;10:27:29.15;-57:37:02.3;Car;6.00;;;4.79;4.30;;;;;;;;;;;;;MWSC 1805;;; -IC2582;G;10:29:11.00;-30:20:33.0;Ant;1.29;1.25;150;13.68;;11.34;10.58;10.14;22.89;Sbc;;;;;;;;2MASX J10291098-3020329,ESO 436-028,ESO-LV 436-0280,IRAS 10268-3005,MCG -05-25-006,PGC 030880;;; -IC2583;G;10:31:10.44;+26:03:18.2;Leo;0.59;0.49;124;15.10;;11.98;11.29;11.05;22.78;E;;;;;;;;2MASX J10311044+2603185,MCG +04-25-027,PGC 031033,SDSS J103110.44+260318.0,SDSS J103110.44+260318.1,SDSS J103110.44+260318.2;;; -IC2584;G;10:29:51.49;-34:54:41.9;Ant;1.44;0.59;134;13.62;12.80;10.40;9.71;9.42;23.07;S0;;;;;;;;2MASX J10295150-3454417,ESO 375-043,ESO-LV 375-0430,MCG -06-23-037,PGC 030938;;; -IC2585;Dup;10:30:26.49;-35:21:34.2;Ant;;;;;;;;;;;;;;;3271;;;;;; -IC2586;G;10:31:02.40;-28:42:59.9;Hya;1.53;1.19;85;13.68;;10.32;9.58;9.37;23.34;E;;;;;;;;2MASX J10310240-2842597,ESO 436-030,ESO-LV 436-0300,MCG -05-25-008,PGC 031025;;; -IC2587;G;10:30:59.60;-34:33:46.6;Ant;1.98;1.47;36;13.38;12.95;10.07;9.37;9.11;23.56;E-S0;;;;;;;;2MASX J10305958-3433466,ESO 375-051,ESO-LV 375-0510,MCG -06-23-047,PGC 031020;;; -IC2588;G;10:31:50.14;-30:23:04.3;Ant;1.65;1.31;154;13.65;;10.51;9.82;9.42;23.27;Sa;;;;;;;;2MASX J10315013-3023044,ESO 436-033,ESO-LV 436-0330,IRAS 10295-3007,MCG -05-25-009,PGC 031088;;; -IC2589;G;10:32:20.82;-24:02:15.2;Hya;0.82;0.39;11;14.27;;11.41;10.72;10.42;22.21;Sb;;;;;;;;2MASX J10322081-2402152,ESO 501-004,ESO-LV 501-0040,IRAS 10299-2346,PGC 031126;;; -IC2590;G;10:36:16.58;+26:57:44.9;LMi;0.97;0.97;10;14.70;;11.25;10.41;10.19;23.43;S0;;;;;;;;2MASX J10361658+2657444,MCG +05-25-024,PGC 031429,SDSS J103616.57+265744.8,UGC 05756;;; -IC2591;G;10:36:38.67;+35:03:10.5;LMi;1.00;0.62;134;14.50;;12.31;11.50;11.38;22.98;SBc;;;;;;;;2MASX J10363862+3503109,IRAS 10337+3518,MCG +06-23-022,PGC 031474,SDSS J103638.66+350310.4,SDSS J103638.67+350310.5,UGC 05763;;; -IC2592;Dup;10:35:08.28;-43:41:30.5;Vel;;;;;;;;;;;;;;;3366;;;;;; -IC2593;G;10:36:15.95;-12:43:32.9;Hya;0.87;0.58;88;15.26;;12.26;11.48;11.38;23.93;S0-a;;;;;;;;2MASX J10361594-1243320,LEDA 155439;;; -IC2594;G;10:36:04.17;-24:19:23.1;Hya;1.66;1.39;112;13.39;;10.27;9.59;9.35;23.34;E-S0;;;;;;;;2MASX J10360418-2419229,ESO 501-028,ESO-LV 501-0280,MCG -04-25-028,PGC 031405;;; -IC2595;Other;10:37:33.12;-11:07:00.2;Sex;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2596;G;10:34:12.46;-73:14:24.5;Car;1.32;0.81;179;15.60;;10.83;10.09;9.72;22.89;Sab;;;;;;;;2MASX J10341244-7314245,ESO 038-002,IRAS 10329-7258,PGC 031265;;; -IC2597;G;10:37:47.45;-27:04:54.1;Hya;2.62;1.73;8;12.75;;9.46;8.78;8.53;23.86;E;;;;;;;;2MASX J10374734-2704524,ESO 501-058,ESO-LV 501-0580,MCG -04-25-051,PGC 031586;;; -IC2598;G;10:39:42.33;+26:43:39.2;LMi;0.66;0.39;152;15.10;;12.26;11.48;11.05;22.87;Sa;;;;;;;;2MASX J10394233+2643394,IRAS 10369+2659,PGC 031713;;; -IC2599;HII;10:37:27.09;-58:44:00.2;Car;20.00;20.00;;;;;;;;;;;;;;;;HD 092207,HIP 052004;;This is part of the emission nebula NGC 3324, and includes a star.; -IC2600;G;10:46:38.80;+72:19:13.6;UMa;0.62;0.45;115;15.60;;12.19;11.42;11.21;23.29;;;;;;;;;2MASX J10463880+7219136,MCG +12-10-075,PGC 032151;;; -IC2601;G;10:47:13.32;+72:19:22.9;UMa;0.35;0.28;165;15.50;;11.55;10.87;10.50;;E;;;;;;;;2MASX J10471326+7219228,MCG +12-10-078,PGC 032187;;; -IC2602;OCl;10:42:57.47;-64:23:39.1;Car;48.00;;;;;;;;;;;;;;;;;C 102,MWSC 1841;tet Car Cluster;; -IC2603;Other;10:48:25.36;+32:55:38.3;LMi;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2604;G;10:49:25.07;+32:46:21.8;LMi;1.18;1.03;40;15.00;;12.96;12.32;12.64;23.74;SBm;;;;;;;;2MASX J10492498+3246217,MCG +06-24-016,PGC 032390,SDSS J104925.06+324621.7,SDSS J104925.07+324621.8,UGC 05927;;; -IC2605;Other;10:49:47.54;+32:58:23.5;LMi;0.40;0.20;0;15.39;;;;;;;;;;;;;;;;This is the southwestern arm of NGC 3395. B-Mag taken from LEDA.; -IC2606;G;10:50:17.65;+37:57:22.4;LMi;1.07;0.40;112;14.80;;11.47;10.73;10.42;23.27;S0-a;;;;;;;;2MASX J10501764+3757221,MCG +06-24-021,PGC 032465,SDSS J105017.64+375722.3,SDSS J105017.65+375722.4;;; -IC2607;G;10:50:18.94;+37:59:38.2;LMi;0.75;0.48;63;15.30;;12.80;12.24;11.82;23.19;SBab;;;;;;;;2MASX J10501890+3759381,MCG +06-24-023,PGC 032468,SDSS J105018.93+375938.1,SDSS J105018.94+375938.2;;; -IC2608;G;10:50:15.52;+32:46:05.4;LMi;0.79;0.31;121;15.60;;13.16;12.54;12.21;22.99;SBc;;;;;;;;2MASX J10501549+3246055,PGC 032464,SDSS J105015.51+324605.3,SDSS J105015.51+324605.4,SDSS J105015.52+324605.4;;; -IC2609;Dup;10:50:17.98;-12:06:31.4;Hya;;;;;;;;;;;;;;;3404;;;;;; -IC2610;Other;10:52:08.07;+33:04:59.4;LMi;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2611;*;10:52:38.93;+10:08:10.9;Leo;;;;;;;;;;;;;;;;;;SDSS J105238.93+100810.8;;; -IC2612;G;10:53:37.16;+32:46:03.5;LMi;0.82;0.56;108;15.78;;12.25;11.60;11.60;24.06;E-S0;;;;;;;;2MASX J10533714+3246034,MCG +06-24-033,PGC 032704,SDSS J105337.15+324603.5,SDSS J105337.16+324603.4,SDSS J105337.16+324603.5;;;B-Mag taken from LEDA. -IC2613;Dup;10:49:50.11;+32:58:58.3;LMi;;;;;;;;;;;;;;;3395;;;;;; -IC2614;G;11:01:33.80;+38:48:13.2;UMa;0.24;0.24;16;16.50;;;;;;SBab;;;;;;;;2MASX J11013383+3848137,SDSS J110133.80+384813.2,SDSS J110133.81+384813.2;;;B-Mag taken from LEDA. -IC2615;G;11:02:02.28;+37:56:42.9;UMa;0.38;0.34;80;15.50;;12.53;11.83;11.61;;S0-a;;;;;;;;2MASX J11020228+3756427,PGC 033289,SDSS J110202.27+375642.8,SDSS J110202.28+375642.9;;; -IC2616;G;11:02:05.76;+38:47:14.1;UMa;0.66;0.48;69;15.60;;12.03;11.30;11.11;23.39;E;;;;;;;;2MASX J11020574+3847137,MCG +07-23-012,PGC 033291,SDSS J110205.75+384714.0,SDSS J110205.76+384714.0,SDSS J110205.76+384714.1;;; -IC2617;G;11:02:07.63;+38:39:51.3;UMa;0.89;0.45;97;15.00;;11.71;10.95;10.68;23.39;S0;;;;;;;;2MASX J11020760+3839511,MCG +07-23-011,PGC 033292,SDSS J110207.62+383951.2,SDSS J110207.63+383951.3;;; -IC2618;**;11:01:58.82;+27:47:21.3;LMi;;;;;;;;;;;;;;;;;;;;; -IC2619;G;11:02:15.26;+37:57:57.9;UMa;0.33;0.22;67;15.70;;13.01;12.35;12.02;;E;;;;;;;;2MASX J11021525+3757582,PGC 033297,SDSS J110215.25+375757.9,SDSS J110215.26+375757.9;;; -IC2620;G;11:02:23.95;+38:30:18.1;UMa;1.04;0.94;110;14.90;;11.73;10.99;10.67;23.88;S0-a;;;;;;;;2MASX J11022392+3830182,MCG +07-23-013,PGC 033301,SDSS J110223.95+383018.0,SDSS J110223.95+383018.1,UGC 06107;;; -IC2621;PN;11:00:19.99;-65:14:57.7;Car;0.08;;;11.30;11.20;11.61;11.46;10.52;;;;16.40;15.40;;;;HD 95541;ESO 093-004,IRAS 10583-6458,PK 291-04 1,PN G291.6-04.8;;Within 10 degrees of the galactic plane.; -IC2622;Dup;11:02:59.67;-16:17:22.0;Crt;;;;;;;;;;;;;;;3508;;;;;; -IC2623;G;11:03:50.96;-20:05:35.0;Crt;1.06;0.73;64;14.37;;11.50;10.84;10.55;23.32;E-S0;;;;;;;;2MASX J11035096-2005347,ESO 569-033,ESO-LV 569-0330,MCG -03-28-034,PGC 033418;;; -IC2624;Dup;11:07:18.07;-19:28:17.6;Crt;;;;;;;;;;;;;;;3497;;;;;; -IC2625;Dup;11:07:19.12;-19:33:20.3;Crt;;;;;;;;;;;;;;;3529;;;;;; -IC2626;G;11:09:03.87;+26:54:15.0;Leo;0.77;0.34;50;15.70;;13.08;12.38;12.10;23.43;Sb;;;;;;;;2MASX J11090387+2654152,PGC 033791,SDSS J110903.87+265415.0;;; -IC2627;G;11:09:53.39;-23:43:33.4;Crt;2.40;1.70;43;12.67;;9.90;9.18;8.99;23.04;SABc;;;;;;;;2MASX J11095340-2343335,ESO 502-021,ESO-LV 502-0210,IRAS 11074-2327,MCG -04-27-002,PGC 033860,UGCA 227;;; -IC2628;G;11:11:37.87;+12:07:19.1;Leo;0.75;0.69;110;15.10;;12.97;12.25;11.91;23.81;SBa;;;;;;;;2MASX J11113786+1207196,PGC 034038,SDSS J111137.87+120719.1;;; -IC2629;G;11:12:36.94;+12:06:17.8;Leo;0.70;0.34;28;16.20;;14.25;13.56;13.12;23.84;Sa;;;;;;;;2MASX J11123698+1206176,SDSS J111236.93+120617.7,SDSS J111236.94+120617.8;;;B-Mag taken from LEDA. -IC2630;*;11:12:43.19;+12:19:08.2;Leo;;;;;;;;;;;;;;;;;;SDSS J111243.19+121908.2;;; -IC2631;Neb;11:09:52.79;-76:36:51.5;Cha;;;;;;;;;;;;;;;;;;HD 97300;;; -IC2632;G;11:13:05.94;+11:40:23.8;Leo;0.41;0.37;55;17.07;;14.11;13.15;12.82;23.95;E;;;;;;;;2MASX J11130592+1140235,PGC 1397074,SDSS J111305.93+114023.7,SDSS J111305.93+114023.8,SDSS J111305.94+114023.8;;;B-Mag taken from LEDA. -IC2633;G;11:13:10.04;+11:36:03.6;Leo;0.62;0.36;17;16.53;;;;;23.79;Sc;;;;;;;;PGC 1396016,SDSS J111310.04+113603.5,SDSS J111310.04+113603.6;;;B-Mag taken from LEDA. -IC2634;G;11:13:28.25;+10:29:09.5;Leo;0.90;0.82;110;15.00;;12.61;11.91;11.75;23.52;Sb;;;;;;;;2MASX J11132821+1029090,MCG +02-29-010,PGC 034178,SDSS J111328.24+102909.4,SDSS J111328.25+102909.4,SDSS J111328.25+102909.5;;; -IC2635;**;11:13:29.81;+11:27:50.0;Leo;;;;;;;;;;;;;;;;;;;;; -IC2636;G;11:13:34.04;+11:27:22.2;Leo;0.67;0.37;73;16.60;;12.88;12.20;12.25;24.51;E;;;;;;;;2MASX J11133406+1127220,LEDA 1393913,SDSS J111334.04+112722.2;;;B-Mag taken from LEDA. -IC2637;G;11:13:49.75;+09:35:10.7;Leo;0.97;0.86;62;14.88;14.17;11.53;10.81;10.45;22.73;E-S0;;;;;;;;2MASX J11134972+0935106,IRAS 11112+0951,MCG +02-29-011,PGC 034199,SDSS J111349.73+093510.6,SDSS J111349.74+093510.6,SDSS J111349.74+093510.7,SDSS J111349.75+093510.7,UGC 06259;;; -IC2638;G;11:13:51.91;+10:33:48.2;Leo;0.97;0.65;100;15.10;;12.17;11.43;11.29;23.76;S0-a;;;;;;;;2MASX J11135191+1033476,MCG +02-29-012,PGC 034205,SDSS J111351.90+103348.2,UGC 06261;;; -IC2639;G;11:13:55.54;+09:38:34.1;Leo;0.57;0.42;100;16.43;;13.35;12.60;12.46;23.93;S0;;;;;;;;2MASX J11135553+0938336,LEDA 1367973,SDSS J111355.53+093834.0,SDSS J111355.53+093834.1,SDSS J111355.54+093834.1;;;B-Mag taken from LEDA. -IC2640;G;11:14:05.49;+10:59:51.6;Leo;0.43;0.35;105;16.65;;;;;23.50;Sc;;;;;;;;2MASX J11140548+1059516,PGC 1387441,SDSS J111405.48+105951.5,SDSS J111405.49+105951.5,SDSS J111405.49+105951.6;;;B-Mag taken from LEDA. -IC2641;*;11:14:10.55;+09:23:57.6;Leo;;;;;;;;;;;;;;;;;;SDSS J111410.55+092357.5;;; -IC2642;Other;11:14:15.80;+12:15:56.4;Leo;;;;;;;;;;;;;;;;;;;;;NED lists this object as type G, but there's nothing at these coords. -IC2643;*;11:14:26.56;+10:07:34.4;Leo;;;;;;;;;;;;;;;;;;SDSS J111426.55+100734.3;;; -IC2644;G;11:14:29.81;+10:46:06.5;Leo;0.61;0.36;76;16.52;;;;;24.28;E;;;;;;;;2MASX J11142982+1046062,SDSS J111429.80+104606.4,SDSS J111429.80+104606.5;;;B-Mag taken from LEDA. -IC2645;G;11:14:30.82;+11:53:12.4;Leo;0.79;0.29;92;15.70;;12.96;12.10;11.87;23.70;S0-a;;;;;;;;2MASX J11143084+1153122,PGC 034250,SDSS J111430.82+115312.3,SDSS J111430.82+115312.4;;; -IC2646;G;11:14:37.60;+12:31:42.6;Leo;0.45;0.34;2;16.91;;;;;23.70;Sc;;;;;;;;2MASX J11143759+1231427,PGC 1411161,SDSS J111437.59+123142.6;;;B-Mag taken from LEDA. -IC2647;*;11:14:38.62;+12:08:31.2;Leo;;;;;;;;;;;;;;;;;;SDSS J111438.61+120831.2;;; -IC2648;G;11:14:45.63;+10:13:29.4;Leo;0.58;0.46;16;15.70;;13.91;13.45;12.78;23.53;Sb;;;;;;;;2MASX J11144560+1013292,PGC 034267,SDSS J111445.62+101329.3,SDSS J111445.63+101329.3,SDSS J111445.63+101329.4;;; -IC2649;G;11:14:46.45;+11:07:39.7;Leo;0.85;0.74;74;15.00;;11.95;11.42;11.11;23.88;E;;;;;;;;2MASX J11144643+1107393,MCG +02-29-015,PGC 034273,SDSS J111446.44+110739.6;;; -IC2650;G;11:14:52.66;+13:51:08.9;Leo;0.48;0.43;21;16.74;;;;;23.74;Sbc;;;;;;;;2MASX J11145254+1351086,PGC 1442333,SDSS J111452.66+135108.8,SDSS J111452.66+135108.9;;;B-Mag taken from LEDA. -IC2651;G;11:14:52.28;+12:14:23.2;Leo;0.52;0.39;84;16.27;;;;;23.48;Sb;;;;;;;;2MASX J11145228+1214226,PGC 1406082,SDSS J111452.28+121423.0,SDSS J111452.28+121423.1,SDSS J111452.28+121423.2;;;B-Mag taken from LEDA. -IC2652;G;11:14:52.32;+12:26:53.0;Leo;0.67;0.64;45;16.32;;12.88;12.14;11.88;24.31;E;;;;;;;;2MASX J11145234+1226526,PGC 3090987,SDSS J111452.31+122653.0,SDSS J111452.32+122653.0;;;B-Mag taken from LEDA. -IC2653;**;11:14:53.83;+10:32:54.1;Leo;;;;;;;;;;;;;;;;;;;;; -IC2654;G;11:15:02.86;+12:29:58.1;Leo;0.41;0.35;93;16.85;;;;;23.77;E;;;;;;;;2MASX J11150285+1229576,SDSS J111502.85+122958.0,SDSS J111502.86+122958.1;;;B-Mag taken from LEDA. -IC2655;G;11:15:05.16;+12:09:51.8;Leo;0.36;0.30;68;17.44;;;;;24.09;E;;;;;;;;2MASX J11150517+1209516,PGC 1404832,SDSS J111505.15+120951.7,SDSS J111505.16+120951.8;;;B-Mag taken from LEDA. -IC2656;G;11:15:05.38;+12:22:44.9;Leo;0.64;0.30;128;16.88;;;;;24.10;Sbc;;;;;;;;2MASX J11150531+1222446,PGC 1408477,SDSS J111505.37+122244.8,SDSS J111505.38+122244.9;;;B-Mag taken from LEDA. -IC2657;G;11:15:08.71;+13:41:41.0;Leo;0.29;0.17;131;17.27;;;;;;E;;;;;;;;2MASX J11150874+1341406,SDSS J111508.70+134140.9,SDSS J111508.71+134140.9,SDSS J111508.71+134141.0;;;B-Mag taken from LEDA. -IC2658;*;11:15:08.75;+12:59:47.8;Leo;;;;;;;;;;;;;;;;;;SDSS J111508.75+125947.7;;; -IC2659;*;11:15:27.84;+12:53:15.6;Leo;;;;;;;;;;;;;;;;;;SDSS J111527.83+125315.6;;; -IC2660;G;11:15:28.44;+12:26:13.9;Leo;0.40;0.31;158;16.78;;;;;23.45;Sb;;;;;;;;2MASX J11152842+1226139,PGC 1409536,SDSS J111528.44+122613.9;;;B-Mag taken from LEDA. -IC2661;G;11:15:29.17;+13:36:31.2;Leo;0.68;0.26;110;15.40;;13.47;12.50;12.49;23.96;S0-a;;;;;;;;PGC 034330,SDSS J111529.05+133631.2;;; -IC2662;Other;11:15:30.79;+12:46:15.8;Leo;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC2663;*;11:15:32.38;+12:36:14.1;Leo;;;;;;;;;;;;;;;;;;SDSS J111532.38+123614.0;;; -IC2664;**;11:15:38.44;+12:33:45.7;Leo;;;;;;;;;;;;;;;;;;SDSS J111538.43+123345.6;;; -IC2665;G;11:15:40.78;+11:43:26.9;Leo;0.59;0.21;103;17.51;;;;;24.19;Sm;;;;;;;;PGC 1397841,SDSS J111540.78+114326.8,SDSS J111540.78+114326.9;;;B-Mag taken from LEDA. -IC2666;G;11:15:43.77;+13:46:56.1;Leo;1.07;0.72;167;14.60;;11.50;10.75;10.53;23.05;S0-a;;;;;;;;2MASX J11154377+1346559,MCG +02-29-016,PGC 034342,SDSS J111543.76+134656.1,SDSS J111543.77+134656.1;;; -IC2667;G;11:15:44.04;+12:07:00.6;Leo;0.63;0.51;173;16.68;;;;;24.56;E;;;;;;;;2MASX J11154408+1207009,PGC 1404066,SDSS J111544.03+120700.5,SDSS J111544.04+120700.5,SDSS J111544.04+120700.6;;;B-Mag taken from LEDA. -IC2668;G;11:15:32.28;-14:10:15.9;Crt;1.55;0.54;140;14.59;;11.72;11.04;10.66;23.79;SBa;;;;;;;;2MASX J11153229-1410158,IRAS 11130-1353,MCG -02-29-015,PGC 034333;;;B-Mag taken from LEDA. -IC2669;**;11:15:53.22;+13:25:46.4;Leo;;;;;;;;;;;;;;;;;;;;; -IC2670;G;11:15:59.56;+11:47:00.1;Leo;0.46;0.29;166;16.57;;;;;23.46;Sab;;;;;;;;2MASX J11155959+1147005,PGC 1398699,SDSS J111559.55+114700.1;;;B-Mag taken from LEDA. -IC2671;*;11:16:03.32;+13:07:27.3;Leo;;;;;;;;;;;;;;;;;;SDSS J111603.32+130727.2;;; -IC2672;*;11:16:03.82;+10:09:26.2;Leo;;;;;;;;;;;;;;;;;;;;; -IC2673;G;11:16:04.13;+10:09:45.2;Leo;0.85;0.55;35;15.30;;13.92;13.40;13.22;23.57;Sc;;;;;;;;2MASX J11160413+1009445,MCG +02-29-017,PGC 034368,SDSS J111604.13+100945.1,SDSS J111604.13+100945.2,SDSS J111604.14+100945.2,UGC 06288;;"Incorrectly called IC 2672 in CGCG; IC 2672 is a star 20 arcsec south."; -IC2674;G;11:16:08.25;+11:02:55.1;Leo;1.12;0.65;23;15.30;;;;;24.09;Sc;;;;;;;;PGC 034373,SDSS J111608.25+110255.1,SDSS J111608.26+110255.1,UGC 06290;;; -IC2675;*;11:16:10.81;+12:14:57.5;Leo;;;;;;;;;;;;;;;;;;SDSS J111610.80+121457.5;;; -IC2676;G;11:16:18.51;+09:49:18.6;Leo;0.14;0.11;155;17.69;;;;;21.97;Sc;;;;;;;;2MASX J11161848+0949188,SDSS J111618.50+094918.5,SDSS J111618.51+094918.6;;;B-Mag taken from LEDA. -IC2677;G;11:16:19.30;+12:12:57.1;Leo;0.23;0.19;10;18.16;;;;;23.69;;;;;;;;;SDSS J111619.29+121257.0,SDSS J111619.30+121257.1;;The IC number includes a neighboring star.;B-Mag taken from LEDA -IC2678;G;11:16:21.64;+11:56:56.8;Leo;0.67;0.26;121;16.39;;;;;24.27;S0-a;;;;;;;;2MASX J11162163+1156564,PGC 1401305,SDSS J111621.63+115656.7,SDSS J111621.64+115656.8;;;B-Mag taken from LEDA. -IC2679;G;11:16:23.20;+12:00:55.4;Leo;0.87;0.56;23;15.67;;12.61;12.06;11.75;24.17;S0-a;;;;;;;;2MASX J11162320+1200554,PGC 1402378,SDSS J111623.19+120055.3,SDSS J111623.20+120055.4;;;B-Mag taken from LEDA. -IC2680;G;11:16:25.53;+09:48:25.7;Leo;0.79;0.28;132;15.60;;13.41;12.70;12.29;23.82;S0-a;;;;;;;;2MASX J11162551+0948259,PGC 034387,SDSS J111625.53+094825.7;;; -IC2681;Other;11:16:33.25;+11:12:25.9;Leo;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC2682;**;11:16:36.12;+09:24:38.8;Leo;;;;;;;;;;;;;;;;;;;;; -IC2683;G;11:16:54.30;+12:05:57.4;Leo;0.42;0.28;87;17.01;;;;;23.98;E;;;;;;;;SDSS J111654.29+120557.3,SDSS J111654.30+120557.4;;;B-Mag taken from LEDA. -IC2684;G;11:17:01.05;+13:05:58.7;Leo;0.76;0.57;171;15.40;;;;;24.91;I;;;;;;;;PGC 034438,SDSS J111701.05+130558.6,SDSS J111701.05+130558.7;;; -IC2685;*;11:17:00.09;+10:05:38.7;Leo;;;;;;;;;;;;;;;;;;SDSS J111700.09+100538.6;;; -IC2686;*;11:17:02.51;+12:57:06.0;Leo;;;;;;;;;;;;;;;;;;SDSS J111702.51+125706.0;;; -IC2687;**;11:17:11.98;+10:09:29.2;Leo;;;;;;;;;;;;;;;;;;SDSS J111711.97+100929.1;;; -IC2689;G;11:17:19.50;+12:57:35.8;Leo;0.66;0.24;31;16.94;;;;;23.96;Sm;;;;;;;;LEDA 1419739,SDSS J111719.49+125735.7,SDSS J111719.50+125735.8;;;B-Mag taken from LEDA. -IC2690;G;11:17:21.59;+12:58:31.5;Leo;0.28;0.26;47;18.03;;;;;24.06;;;;;;;;;2MASX J11172157+1258310,PGC 1420052,SDSS J111721.58+125831.5;;;B-Mag taken from LEDA. -IC2691;*;11:17:24.58;+12:01:51.9;Leo;;;;;;;;;;;;;;;;;;SDSS J111724.58+120151.9;;; -IC2692;G;11:17:33.22;+10:46:05.0;Leo;0.52;0.39;100;16.62;;13.28;12.31;12.12;24.05;E;;;;;;;;2MASX J11173324+1046050,LEDA 1384189,SDSS J111733.21+104604.8,SDSS J111733.21+104604.9,SDSS J111733.21+104605.0,SDSS J111733.22+104604.9;;;B-Mag taken from LEDA. -IC2693;*;11:17:36.31;+13:32:55.8;Leo;;;;;;;;;;;;;;;;;;SDSS J111736.30+133255.8;;; -IC2694;G;11:17:38.60;+13:22:34.0;Leo;0.76;0.36;86;15.30;;;;;23.17;SBbc;;;;;;;;PGC 034491;;Possibly a GPair.; -IC2695;G;11:17:48.57;+13:43:39.6;Leo;0.51;0.39;58;16.53;;;;;23.60;Sbc;;;;;;;;PGC 1438811,SDSS J111748.57+134339.5,SDSS J111748.57+134339.6;;;B-Mag taken from LEDA. -IC2696;*;11:17:48.93;+12:45:20.7;Leo;;;;;;;;;;;;;;;;;;SDSS J111748.93+124520.6;;; -IC2697;*;11:17:51.13;+13:23:59.9;Leo;;;;;;;;;;;;;;;;;;SDSS J111751.13+132359.9;;; -IC2698;G;11:17:51.02;+11:53:08.8;Leo;0.70;0.48;43;15.60;;;;;23.68;Scd;;;;;;;;PGC 034510,SDSS J111751.01+115308.7,SDSS J111751.02+115308.8;;Interacting compact companion superposed 8 arcsec east.; -IC2699;*;11:17:52.65;+11:54:33.2;Leo;;;;;;;;;;;;;;;;;;SDSS J111752.64+115433.2;;; -IC2700;G;11:17:54.18;+12:03:15.1;Leo;0.38;0.31;120;17.03;;;;;23.59;Sc;;;;;;;;2MASX J11175419+1203144,PGC 1402998,SDSS J111754.18+120315.1;;;B-Mag taken from LEDA. -IC2701;G;11:17:57.02;+11:07:05.0;Leo;0.44;0.22;78;17.20;;;;;23.55;Sc;;;;;;;;PGC 1389044,SDSS J111757.01+110704.9,SDSS J111757.02+110705.0;;;B-Mag taken from LEDA. -IC2702;G;11:17:57.23;+09:24:44.9;Leo;0.40;0.34;117;17.01;;13.99;13.57;13.16;23.72;Sb;;;;;;;;2MASX J11175723+0924445,LEDA 1364735,SDSS J111757.22+092444.9,SDSS J111757.23+092444.9;;;B-Mag taken from LEDA. -IC2703;G;11:18:05.13;+17:38:58.3;Leo;0.93;0.82;19;15.70;;12.85;11.97;12.07;24.23;S0;;;;;;;;2MASX J11180516+1738574,MCG +03-29-026,PGC 034536,SDSS J111805.12+173858.2;;; -IC2704;G;11:18:04.01;+12:27:15.1;Leo;0.65;0.40;70;15.50;;13.09;12.54;12.06;23.25;Sab;;;;;;;;2MASX J11180401+1227154,PGC 034533,SDSS J111804.00+122715.0,SDSS J111804.01+122715.0,SDSS J111804.01+122715.1;;; -IC2705;*;11:18:03.68;+11:54:14.7;Leo;;;;;;;;;;;;;;;;;;SDSS J111803.68+115414.6;;; -IC2706;*;11:18:29.20;+12:32:54.4;Leo;;;;;;;;;;;;;;;;;;SDSS J111829.20+123254.4;;; -IC2707;G;11:18:30.84;+09:28:29.5;Leo;0.46;0.38;148;16.51;;;;;23.49;SBbc;;;;;;;;2MASX J11183086+0928291,PGC 1365644,SDSS J111830.83+092829.4,SDSS J111830.83+092829.5,SDSS J111830.84+092829.5;;;B-Mag taken from LEDA. -IC2708;G;11:18:34.61;+12:42:40.0;Leo;0.92;0.77;63;15.10;;12.04;11.26;11.10;23.79;E;;;;;;;;2MASX J11183461+1242400,PGC 034584,SDSS J111834.60+124239.9,SDSS J111834.61+124239.9,SDSS J111834.61+124240.0;;; -IC2709;G;11:18:42.16;+12:33:42.1;Leo;0.54;0.38;153;17.47;;;;;24.56;I;;;;;;;;SDSS J111842.18+123341.7;;The IC number includes a nearby star and a defect on the original plate.;B-Mag taken from LEDA -IC2710;**;11:18:44.32;+13:33:59.7;Leo;;;;;;;;;;;;;;;;;;SDSS J111844.31+133359.7;;; -IC2711;*;11:18:46.49;+13:44:18.4;Leo;;;;;;;;;;;;;;;;;;;;; -IC2712;G;11:18:52.78;+09:37:36.8;Leo;0.46;0.41;44;16.55;;14.36;13.49;13.33;23.58;Sb;;;;;;;;2MASX J11185281+0937362,LEDA 3091441,SDSS J111852.77+093736.7,SDSS J111852.78+093736.8;;The IC number also includes a faint galaxy 20 arcsec southwest.;B-Mag taken from LEDA. -IC2713;G;11:19:10.22;+12:09:53.3;Leo;0.59;0.57;40;16.29;;13.22;12.31;11.88;24.01;E;;;;;;;;2MASX J11191020+1209535,PGC 3090989,SDSS J111910.21+120953.3,SDSS J111910.22+120953.1,SDSS J111910.22+120953.3;;;B-Mag taken from LEDA. -IC2714;OCl;11:17:27.35;-62:43:30.4;Car;7.20;;;;8.20;;;;;;;;;;;;;MWSC 1930;;; -IC2715;G;11:19:14.39;+11:57:07.8;Leo;0.74;0.37;100;21.01;;;;;28.48;I;;;;;;;;SDSS J111914.39+115707.7,SDSS J111914.39+115707.8;;;B-Mag taken from LEDA -IC2716;G;11:19:16.34;+11:41:54.8;Leo;0.38;0.19;81;17.70;;;;;23.70;Sm;;;;;;;;PGC 1397453,SDSS J111916.33+114154.7,SDSS J111916.34+114154.8;;;B-Mag taken from LEDA. -IC2717;*;11:19:18.77;+12:02:54.8;Leo;;;;;;;;;;;;;;;;;;SDSS J111918.77+120254.8;;; -IC2718;G;11:19:20.90;+12:01:20.2;Leo;0.59;0.26;99;15.60;;13.64;13.11;12.98;23.12;Sbc;;;;;;;;2MASX J11192097+1201205,PGC 034644,SDSS J111920.89+120120.1,SDSS J111920.89+120120.2,SDSS J111920.90+120120.2;;; -IC2719;G;11:19:32.20;+12:03:35.2;Leo;0.22;0.21;83;17.87;;;;;23.48;E;;;;;;;;2MASX J11193218+1203351,SDSS J111932.19+120335.2,SDSS J111932.20+120335.2;;;B-Mag taken from LEDA -IC2720;G;11:19:35.65;+12:04:35.7;Leo;0.79;0.59;24;15.60;;12.41;11.65;11.46;24.01;E;;;;;;;;2MASX J11193566+1204361,2MASX J11193598+1204432,PGC 034662,SDSS J111935.64+120435.6,SDSS J111935.64+120435.7,SDSS J111935.65+120435.6,SDSS J111935.65+120435.7;;; -IC2721;Other;11:19:42.81;+12:18:38.3;Leo;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2722;GTrpl;11:19:44.36;+13:57:46.5;Leo;0.70;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC2722 NED01;G;11:19:43.94;+13:57:50.1;Leo;0.69;0.48;70;16.10;;12.47;11.92;11.42;24.15;E;;;;;;;;2MASX J11194398+1357503,SDSS J111943.94+135750.1;;;B-Mag taken from LEDA -IC2722 NED03;G;11:19:44.36;+13:57:46.5;Leo;0.11;0.07;80;17.08;;;;;;Sa;;;;;;;;2MASS J11194435+1357465,SDSS J111944.36+135746.5;;;B-Mag taken from LEDA -IC2723;G;11:19:47.90;+12:02:00.4;Leo;0.47;0.25;104;17.38;;;;;24.58;E;;;;;;;;2MASX J11194792+1202004,PGC 1402669,SDSS J111947.90+120200.3,SDSS J111947.90+120200.4;;;B-Mag taken from LEDA. -IC2724;G;11:19:48.44;+10:42:59.6;Leo;0.48;0.44;85;16.84;;13.87;13.15;12.76;23.91;Sb;;;;;;;;2MASX J11194843+1043002,PGC 3091274,SDSS J111948.46+104300.5,SDSS J111948.46+104300.6;;;B-Mag taken from LEDA. -IC2725;G;11:19:57.44;+13:25:45.4;Leo;0.48;0.42;116;17.20;;13.52;12.51;12.23;24.34;E;;;;;;;;2MASX J11195746+1325455,LEDA 1430824,SDSS J111957.44+132545.4;;;B-Mag taken from LEDA. -IC2726;Other;11:19:58.44;+13:24:56.1;Leo;;;;;;;;;;;;;;;;;;;;"Only a faint star nearby; nominal position."; -IC2727;G;11:20:00.07;+12:02:00.0;Leo;0.43;0.38;70;16.70;;;;;23.52;Sbc;;;;;;;;PGC 1402667,SDSS J112000.06+120159.9,SDSS J112000.07+120159.9,SDSS J112000.07+120200.0,SDSS J112000.08+120200.0;;;B-Mag taken from LEDA. -IC2728;*;11:20:05.13;+13:25:37.2;Leo;;;;;;;;;;;;;;;;;;SDSS J112005.12+132537.1;;The IC identification is uncertain.; -IC2729;G;11:20:06.77;+13:24:33.5;Leo;0.43;0.23;177;17.65;;;;;23.90;Sc;;;;;;;;2MASX J11200675+1324333,PGC 1430330,SDSS J112006.76+132433.4,SDSS J112006.77+132433.5;;The IC identification is uncertain.;B-Mag taken from LEDA. -IC2730;*;11:20:07.39;+12:21:59.5;Leo;;;;;;;;;;;;;;;;;;SDSS J112007.39+122159.5;;; -IC2731;*;11:20:10.27;+13:33:29.8;Leo;;;;;;;;;;;;;;;;;;SDSS J112010.26+133329.7;;; -IC2732;G;11:20:12.38;+12:24:14.5;Leo;0.40;0.34;114;17.17;;;;;23.76;Sbc;;;;;;;;2MASX J11201239+1224143,PGC 1408926,SDSS J112012.37+122414.4;;;B-Mag taken from LEDA. -IC2733;**;11:20:17.31;+13:50:06.9;Leo;;;;;;;;;;;;;;;;;;;;The IC identification is uncertain.; -IC2734;G;11:20:23.82;+12:26:34.9;Leo;0.84;0.30;12;16.51;;13.27;12.61;12.07;24.00;SBc;;;;;;;;2MASX J11202380+1226353,LEDA 1409656,SDSS J112023.81+122634.8,SDSS J112023.82+122634.8,SDSS J112023.82+122634.9;;;B-Mag taken from LEDA. -IC2735;G;11:21:03.90;+34:20:38.2;UMa;1.18;0.25;100;15.40;;11.46;10.65;10.30;23.36;Sab;;;;;;;;2MASX J11210388+3420388,MCG +06-25-048,PGC 034772,SDSS J112103.89+342038.1,SDSS J112103.89+342038.2,SDSS J112103.90+342038.2,UGC 06364;;; -IC2736;*;11:20:54.62;+12:24:31.2;Leo;;;;;;;;;;;;;;;;;;SDSS J112054.62+122431.2;;; -IC2737;*;11:21:08.25;+14:17:35.5;Leo;;;;;;;;;;;;;;;;;;;;; -IC2738;G;11:21:23.06;+34:21:24.0;UMa;0.85;0.75;144;15.30;;11.74;11.10;10.79;23.50;E-S0;;;;;;;;2MASX J11212302+3421244,MCG +06-25-049,PGC 034797,SDSS J112123.04+342124.3;;; -IC2739;G;11:21:12.43;+11:54:53.1;Leo;0.37;0.31;65;16.86;;;;;23.46;Sbc;;;;;;;;2MASX J11211247+1154529,PGC 1400779,SDSS J112112.42+115453.0,SDSS J112112.43+115453.0,SDSS J112112.43+115453.1;;;B-Mag taken from LEDA. -IC2740;G;11:21:17.06;+08:45:08.3;Leo;0.37;0.30;57;17.39;;;;;23.78;Sb;;;;;;;;2MASX J11211707+0845089,PGC 1353045,SDSS J112117.06+084508.3;;;B-Mag taken from LEDA. -IC2741;G;11:21:17.47;+09:09:08.5;Leo;0.42;0.31;122;16.65;;;;;23.72;SBbc;;;;;;;;PGC 1360528,SDSS J112117.47+090908.5,SDSS J112117.48+090908.5;;"Star 17"" north-northwest of galaxy.";B-Mag taken from LEDA. -IC2742;G;11:21:18.73;+10:26:48.2;Leo;0.34;0.16;38;17.46;;;;;23.51;Sc;;;;;;;;PGC 1379662,SDSS J112118.72+102648.2,SDSS J112118.73+102648.2;;;B-Mag taken from LEDA. -IC2743;*;11:21:24.99;+08:41:35.2;Leo;;;;;;;;;;;;;;;;;;SDSS J112124.98+084135.1;;; -IC2744;G;11:21:42.51;+34:21:46.1;UMa;1.12;0.74;38;15.50;14.77;11.90;11.18;11.00;24.23;E-S0;;;;;;;;2MASX J11214248+3421455,MCG +06-25-052,PGC 034833,SDSS J112142.50+342146.0;;; -IC2745;G;11:21:31.76;+13:25:35.8;Leo;0.62;0.21;70;15.30;;12.29;11.57;11.24;;SBb;;;;;;;;2MASX J11213146+1325353,PGC 034811,SDSS J112131.75+132535.8,SDSS J112131.76+132535.7,SDSS J112131.76+132535.8;;; -IC2746;G;11:21:36.42;+11:44:13.5;Leo;0.53;0.34;166;16.72;;14.00;13.18;12.97;24.18;E;;;;;;;;2MASX J11213641+1144142,LEDA 3090990,SDSS J112136.41+114413.5,SDSS J112136.42+114413.5;;;B-Mag taken from LEDA. -IC2747;**;11:21:40.16;+08:48:11.7;Leo;;;;;;;;;;;;;;;;;;;;; -IC2748;G;11:21:44.04;+08:48:17.9;Leo;0.54;0.43;91;16.63;;13.14;12.59;12.25;24.15;E;;;;;;;;2MASX J11214406+0848182,LEDA 3091442,SDSS J112144.03+084817.9,SDSS J112144.04+084817.9;;;B-Mag taken from LEDA. -IC2749;G;11:21:45.20;+08:34:29.2;Leo;0.60;0.34;84;15.60;;15.15;14.23;14.07;23.25;SABc;;;;;;;;2MASX J11214515+0834282,PGC 034829,SDSS J112145.20+083429.1,SDSS J112145.20+083429.2;;; -IC2750;G;11:21:50.79;+09:39:30.4;Leo;0.43;0.20;43;17.37;;;;;23.74;Sbc;;;;;;;;2MASX J11215073+0939312,PGC 1368199,SDSS J112150.78+093930.3,SDSS J112150.79+093930.4;;;B-Mag taken from LEDA. -IC2751;G;11:22:07.39;+34:21:58.9;UMa;0.63;0.54;133;15.70;;12.46;11.75;11.55;23.44;E;;;;;;;;2MASX J11220737+3421587,LEDA 2048050,SDSS J112207.39+342158.8,SDSS J112207.39+342158.9;;; -IC2752;G;11:22:01.94;+14:07:28.2;Leo;0.63;0.19;100;16.73;;;;;24.58;E;;;;;;;;2MASX J11220194+1407279,PGC 1449874,SDSS J112201.94+140728.1,SDSS J112201.94+140728.2;;;B-Mag taken from LEDA. -IC2753;G;11:21:59.71;+09:52:41.0;Leo;0.32;0.31;80;16.66;;;;;23.09;E;;;;;;;;2MASX J11215967+0952412,SDSS J112159.70+095240.9,SDSS J112159.71+095241.0;;;B-Mag taken from LEDA. -IC2754;G;11:22:02.38;+14:08:38.6;Leo;0.52;0.24;82;16.97;;;;;23.73;Sc;;;;;;;;2MASX J11220235+1408389,PGC 1450402,SDSS J112202.37+140838.5,SDSS J112202.37+140838.6,SDSS J112202.38+140838.6;;;B-Mag taken from LEDA. -IC2755;*;11:22:02.41;+13:47:35.2;Leo;;;;;;;;;;;;;;;;;;SDSS J112202.40+134735.2;;; -IC2756;G;11:22:00.91;+09:57:36.6;Leo;0.51;0.19;101;17.10;;;;;23.62;Sbc;;;;;;;;PGC 1372583,SDSS J112200.90+095736.5,SDSS J112200.91+095736.6;;;B-Mag taken from LEDA. -IC2757;G;11:22:02.10;+08:23:37.8;Leo;0.72;0.52;79;15.10;;12.86;12.01;11.84;23.34;SBa;;;;;;;;2MASX J11220207+0823372,PGC 034858,SDSS J112202.09+082337.8,SDSS J112202.10+082337.8;;; -IC2758;G;11:22:03.33;+07:48:48.7;Leo;0.65;0.23;34;15.30;;12.21;11.51;11.13;22.88;Sa;;;;;;;;2MASX J11220334+0748482,PGC 034857,SDSS J112203.32+074848.6,SDSS J112203.32+074848.7;;; -IC2759;G;11:22:13.28;+24:19:01.8;Leo;0.73;0.65;178;15.41;;12.15;11.42;11.09;23.28;E;;;;;;;;2MASX J11221325+2419017,MCG +04-27-027,PGC 034881,SDSS J112213.28+241901.7;;; -IC2760;G;11:22:12.80;+12:39:55.5;Leo;0.45;0.33;108;17.39;;;;;24.45;E;;;;;;;;2MASX J11221278+1239553,PGC 1413842,SDSS J112212.79+123955.5,SDSS J112212.80+123955.4,SDSS J112212.80+123955.5;;;B-Mag taken from LEDA. -IC2761;G;11:22:17.17;+14:10:39.3;Leo;0.40;0.34;175;16.79;;;;;23.57;Sab;;;;;;;;2MASX J11221719+1410393,PGC 1451251,SDSS J112217.16+141039.2,SDSS J112217.17+141039.3;;;B-Mag taken from LEDA. -IC2762;G;11:22:17.92;+12:43:21.1;Leo;0.92;0.31;145;15.50;;14.42;13.57;13.71;23.62;Sd;;;;;;;;2MASX J11221784+1243223,PGC 034888,SDSS J112217.91+124321.1,SDSS J112217.92+124321.1;;; -IC2763;G;11:22:18.56;+13:03:54.2;Leo;1.44;0.39;98;14.90;;13.24;12.82;12.53;23.53;Sc;;;;;;;;2MASX J11221838+1303543,MCG +02-29-021,PGC 034887,SDSS J112218.55+130354.1,SDSS J112218.56+130354.2,UGC 06387;;; -IC2764;G;11:27:05.03;-28:58:48.8;Hya;2.20;1.18;179;13.15;;10.11;9.48;9.25;23.49;S0-a;;;;;;;;2MASX J11270503-2858488,ESO 439-008,ESO-LV 439-0080,MCG -05-27-012,PGC 035222;;; -IC2765;G;11:22:23.12;+14:11:56.6;Leo;0.31;0.21;90;17.17;;;;;23.63;E;;;;;;;;2MASX J11222310+1411563,PGC 1451814,SDSS J112223.12+141156.5,SDSS J112223.12+141156.6;;;B-Mag taken from LEDA. -IC2766;G;11:22:23.06;+12:54:12.5;Leo;0.53;0.35;149;17.12;;;;;24.19;Sc;;;;;;;;2MASX J11222303+1254123,PGC 1418531,SDSS J112223.05+125412.4,SDSS J112223.06+125412.4,SDSS J112223.06+125412.5;;;B-Mag taken from LEDA. -IC2767;G;11:22:23.19;+13:04:40.1;Leo;0.87;0.30;90;14.89;;;;;24.52;S?;;;;;;;;MCG +02-29-021 NOTES01,SDSS J112223.18+130440.1,SDSS J112223.19+130440.1,UGC 06387 NOTES01;;;B-Mag taken from LEDA. -IC2768;G;11:22:23.56;+12:31:44.1;Leo;0.40;0.30;46;17.32;;;;;23.91;SBb;;;;;;;;2MASX J11222358+1231433,PGC 1411172,SDSS J112223.55+123144.0,SDSS J112223.56+123144.1;;;B-Mag taken from LEDA. -IC2769;G;11:22:25.65;+14:11:45.2;Leo;0.43;0.32;166;15.60;;13.82;12.94;13.05;22.79;Sb;;;;;;;;2MASX J11222564+1411453,PGC 034894,SDSS J112225.64+141145.2;;; -IC2770;G;11:22:24.76;+09:13:14.4;Leo;0.39;0.38;169;16.64;;13.99;13.43;12.94;23.30;Sb;;;;;;;;2MASX J11222474+0913144,PGC 3091444,SDSS J112224.75+091314.4,SDSS J112224.76+091314.4;;;B-Mag taken from LEDA. -IC2771;G;11:22:28.05;+12:31:09.0;Leo;0.28;0.20;22;18.11;;;;;24.12;;;;;;;;;SDSS J112228.04+123109.0,SDSS J112228.05+123109.0;;;B-Mag taken from LEDA. -IC2772;*;11:22:30.40;+13:35:56.9;Leo;;;;;;;;;;;;;;;;;;SDSS J112230.39+133556.8;;; -IC2773;*;11:22:35.31;+13:34:28.3;Leo;;;;;;;;;;;;;;;;;;SDSS J112235.31+133428.3;;The IC identification is uncertain.; -IC2774;*;11:22:37.15;+12:30:53.8;Leo;;;;;;;;;;;;;;;;;;SDSS J112237.15+123053.8;;; -IC2775;G;11:22:39.56;+12:30:43.2;Leo;0.32;0.25;60;17.73;;;;;24.14;E;;;;;;;;2MASX J11223958+1230435,PGC 1410888,SDSS J112239.55+123043.1,SDSS J112239.55+123043.2,SDSS J112239.56+123043.2;;;B-Mag taken from LEDA. -IC2776;G;11:22:39.99;+13:19:49.9;Leo;0.87;0.44;160;15.15;;;;;23.37;Sc;;;;;;;;2MASX J11223998+1319495,MCG +02-29-022 NED01,PGC 034924,SDSS J112239.99+131949.9;;;B-Mag taken from LEDA. -IC2777;G;11:22:40.55;+12:01:32.1;Leo;0.79;0.59;154;15.40;;12.87;12.23;12.04;23.34;Sb;;;;;;;;2MASX J11224057+1201317,PGC 034923,SDSS J112240.54+120132.0,SDSS J112240.54+120132.1;;; -IC2778;Other;11:22:41.93;+12:31:34.7;Leo;;;;;;;;;;;;;;;;;;SDSS J112241.92+123134.7;;;NED lists this object as type G, but there's nothing at these coords in LEDA. -IC2779;G;11:22:44.51;+13:20:43.1;Leo;0.30;0.26;179;14.90;;;;;23.48;Sd;;;;;;;;MCG +02-29-022 NED02,PGC 1428682,SDSS J112244.49+132043.3,SDSS J112244.50+132043.4;;; -IC2780;G;11:22:48.13;+10:08:58.4;Leo;0.65;0.41;5;16.53;;;;;24.45;E;;;;;;;;2MASX J11224813+1008577,SDSS J112248.13+100858.3;;;B-Mag taken from LEDA. -IC2781;G;11:22:50.67;+12:20:41.6;Leo;0.36;0.34;146;17.19;;;;;23.67;I;;;;;;;;PGC 1407849,SDSS J112250.66+122041.6,SDSS J112250.67+122041.5,SDSS J112250.67+122041.6;;;B-Mag taken from LEDA. -IC2782;G;11:22:55.36;+13:26:28.6;Leo;0.94;0.84;19;15.20;;13.93;13.21;13.08;23.71;Sd;;;;;;;;2MASX J11225519+1326266,MCG +02-29-023,PGC 034934,SDSS J112255.35+132628.6,SDSS J112255.36+132628.6,UGC 06395;;; -IC2783;G;11:22:53.63;+08:53:02.6;Leo;0.70;0.27;162;16.36;;13.02;12.43;11.98;23.84;Sa;;;;;;;;2MASX J11225363+0853027,LEDA 3091445,SDSS J112253.62+085302.6,SDSS J112253.63+085302.6;;;B-Mag taken from LEDA. -IC2784;G;11:23:11.63;+13:07:03.8;Leo;0.65;0.38;17;16.37;;13.25;12.67;12.26;23.83;SBab;;;;;;;;2MASX J11231160+1307041,LEDA 3090855,SDSS J112311.62+130703.7,SDSS J112311.63+130703.7,SDSS J112311.63+130703.8;;;B-Mag taken from LEDA. -IC2785;G;11:23:15.36;+13:23:28.5;Leo;0.87;0.72;2;15.20;;12.36;11.69;11.41;24.14;E;;;;;;;;2MASX J11231537+1323281,MCG +02-29-024 NED01,PGC 034968,SDSS J112315.36+132328.5;;; -IC2786;G;11:23:17.50;+13:23:31.2;Leo;0.95;0.34;115;16.55;;12.96;12.08;11.77;24.60;Sab;;;;;;;;MCG +02-29-024 NED02,PGC 1429884,SDSSJ112317.48+132331.3,SDSSJ112317.49+132331.3;;;B-Mag taken from LEDA. -IC2787;G;11:23:19.08;+13:37:47.2;Leo;0.80;0.74;34;15.50;;;;;23.84;Sc;;;;;;;;PGC 034969,SDSS J112319.07+133747.1,SDSS J112319.07+133747.2,UGC 06401;;; -IC2788;G;11:23:26.97;+12:41:52.9;Leo;0.42;0.25;156;18.15;;;;;24.98;;;;;;;;;PGC 1414481,SDSS J112326.96+124152.8,SDSS J112326.97+124152.9;;;B-Mag taken from LEDA. -IC2789;G;11:23:32.66;+14:11:16.9;Leo;0.05;0.03;132;18.04;;;;;;;;;;;;;;SDSS J112332.65+141116.8,SDSS J112332.66+141116.9;;"Star superposed 5"" south of galaxy.";B-Mag taken from LEDA -IC2790;G;11:23:34.06;+09:33:19.3;Leo;0.46;0.32;15;16.91;;;;;23.65;Sc;;;;;;;;PGC 1366741,SDSS J112334.06+093319.2,SDSS J112334.06+093319.3;;;B-Mag taken from LEDA. -IC2791;G;11:23:37.62;+12:53:44.8;Leo;0.57;0.36;156;17.08;;;;;24.24;I;;;;;;;;SDSS J112337.61+125344.8,SDSS J112337.62+125344.8;;;B-Mag taken from LEDA. -IC2792;G;11:23:41.51;+11:24:17.4;Leo;0.49;0.29;82;17.06;;;;;24.34;E;;;;;;;;SDSS J112341.50+112417.3,SDSS J112341.51+112417.3,SDSS J112341.52+112417.4;;;B-Mag taken from LEDA. -IC2793;GPair;11:23:47.39;+09:26:59.2;Leo;0.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC2793 NED01;G;11:23:47.28;+09:27:04.8;Leo;0.35;0.27;94;17.65;;;;;24.25;E;;;;;;;;2MASX J11234725+0927050,SDSS J112347.27+092704.8,SDSS J112347.28+092704.8;;;B-Mag taken from LEDA -IC2793 NED02;G;11:23:47.54;+09:26:54.4;Leo;0.36;0.20;83;17.69;;;;;24.21;;;;;;;;;SDSS J112347.53+092654.3;;;B-Mag taken from LEDA -IC2794;*;11:24:03.65;+12:47:27.5;Leo;;;;;;;;;;;;;;;;;;SDSS J112403.65+124727.5;;The IC identification is uncertain.; -IC2795;G;11:24:04.07;+12:08:06.4;Leo;0.36;0.33;37;17.36;;14.84;14.17;13.46;23.79;Sc;;;;;;;;2MASX J11240401+1208052,PGC 1404358,SDSS J112404.06+120806.3,SDSS J112404.06+120806.4;;;B-Mag taken from LEDA. -IC2796;GPair;11:24:08.35;+09:20:38.9;Leo;0.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC2796 NED01;G;11:24:08.39;+09:20:44.6;Leo;0.51;0.26;5;17.44;;;;;24.23;Sb;;;;;;;;2MASX J11240837+0920442,SDSS J112408.38+092044.5;;;B-Mag taken from LEDA -IC2796 NED02;G;11:24:08.42;+09:20:34.5;Leo;0.37;0.17;17;18.19;;;;;24.79;;;;;;;;;PGC 1363734,SDSS J112408.41+092034.4,SDSS J112408.42+092034.5;;;B-Mag taken from LEDA. -IC2797;G;11:24:21.06;+11:42:21.4;Leo;0.76;0.47;136;16.41;;13.10;12.45;12.20;24.65;E;;;;;;;;2MASX J11242105+1142212,LEDA 3091132,SDSS J112421.05+114221.3,SDSS J112421.06+114221.3,SDSS J112421.06+114221.4;;;B-Mag taken from LEDA. -IC2798;G;11:24:23.99;+12:24:56.2;Leo;0.77;0.26;173;16.94;;13.91;12.86;12.55;24.16;Sc;;;;;;;;2MASX J11242396+1224574,LEDA 091114,SDSS J112423.99+122456.1,SDSS J112423.99+122456.2;;;B-Mag taken from LEDA. -IC2799;G;11:24:26.67;+13:50:56.8;Leo;0.45;0.32;137;17.18;;14.83;13.88;13.66;23.88;SBbc;;;;;;;;2MASX J11242669+1350564,LEDA 1442248,SDSS J112426.66+135056.7,SDSS J112426.66+135056.8,SDSS J112426.67+135056.8;;;B-Mag taken from LEDA. -IC2800;G;11:24:27.08;+12:12:31.7;Leo;0.63;0.19;92;17.35;;;;;24.08;Sc;;;;;;;;2MASX J11242708+1212314,SDSS J112427.08+121231.7;;;B-Mag taken from LEDA. -IC2801;G;11:24:29.03;+10:11:01.8;Leo;0.50;0.32;84;16.34;;;;;23.43;Sb;;;;;;;;2MASX J11242901+1011012,PGC 1375823,SDSS J112429.02+101101.8,SDSS J112429.03+101101.8;;;B-Mag taken from LEDA. -IC2802;G;11:24:30.36;+12:12:31.5;Leo;0.28;0.23;61;17.80;;;;;;;;;;;;;;PGC 1405555,SDSS J112430.35+121231.4,SDSS J112430.36+121231.5;;;B-Mag taken from LEDA. -IC2803;G;11:24:35.41;+09:51:00.1;Leo;0.43;0.21;65;17.30;;;;;23.75;Sb;;;;;;;;2MASX J11243543+0950595,PGC 1370912,SDSS J112435.40+095100.0,SDSS J112435.41+095100.0,SDSS J112435.41+095100.1;;;B-Mag taken from LEDA. -IC2804;G;11:24:55.73;+13:13:19.4;Leo;0.87;0.23;18;15.11;;12.52;11.73;11.42;22.64;Sb;;;;;;;;2MASX J11245604+1313315,MCG +02-29-026,PGC 035083,SDSS J112455.72+131319.4,SDSS J112455.73+131319.4;;;B-Mag taken from LEDA. -IC2805;*;11:24:59.89;+14:00:52.1;Leo;;;;;;;;;;;;;;;;;;;;Faint star or galaxy just west.; -IC2806;*;11:25:15.30;+09:39:08.0;Leo;;;;;;;;;;;;;;;;;;SDSS J112515.29+093907.9;;; -IC2807;G;11:25:17.05;+11:31:48.2;Leo;0.32;0.18;30;17.47;;;;;23.31;Sbc;;;;;;;;PGC 1394989,SDSS J112517.04+113148.2,SDSS J112517.05+113148.2;;;B-Mag taken from LEDA. -IC2808;*;11:25:26.88;+09:07:55.4;Leo;;;;;;;;;;;;;;;;;;SDSS J112526.87+090755.4;;; -IC2809;*;11:25:37.77;+08:31:34.6;Leo;;;;;;;;;;;;;;;;;;SDSS J112537.76+083134.5;;; -IC2810;G;11:25:45.05;+14:40:35.7;Leo;1.03;0.41;33;15.40;;12.12;11.37;11.07;23.58;SBab;;;;;;;;2MASX J11254505+1440359,IRAS 11231+1456,MCG +03-29-043,PGC 035142,SDSS J112545.04+144035.6,SDSS J112545.04+144035.7,SDSS J112545.05+144035.7,UGC 06436;;Called 'IC 2810a' in MCG.; -IC2811;G;11:25:44.65;+09:10:13.9;Leo;0.73;0.35;89;16.70;;;;;24.20;Sb;;;;;;;;2MASX J11254464+0910132,SDSS J112544.64+091013.8,SDSS J112544.64+091013.9;;;B-Mag taken from LEDA. -IC2812;G;11:25:55.82;+11:31:47.7;Leo;0.52;0.23;24;16.94;;;;;23.62;Sc;;;;;;;;PGC 1394991,SDSS J112555.82+113147.7,SDSS J112555.83+113147.7;;;B-Mag taken from LEDA. -IC2813;G;11:26:06.50;+11:15:20.7;Leo;0.48;0.40;71;16.75;;14.27;13.68;13.53;23.75;Sb;;;;;;;;2MASX J11260649+1115207,LEDA 3091133,SDSS J112606.49+111520.6,SDSS J112606.50+111520.6,SDSS J112606.50+111520.7;;;B-Mag taken from LEDA. -IC2814;G;11:26:08.51;+09:39:42.5;Leo;0.40;0.29;58;16.70;;;;;23.58;E;;;;;;;;2MASX J11260847+0939417,SDSS J112608.50+093942.4,SDSS J112608.51+093942.5;;;B-Mag taken from LEDA. -IC2815;G;11:26:16.55;+12:48:13.8;Leo;0.50;0.35;116;17.09;;;;;24.13;Sab;;;;;;;;2MASX J11261657+1248136,PGC 1416518,SDSS J112616.54+124813.8;;;B-Mag taken from LEDA. -IC2816;G;11:26:18.28;+10:38:11.4;Leo;0.74;0.27;180;16.58;;;;;23.92;Sbc;;;;;;;;2MASX J11261831+1038117,SDSS J112618.27+103811.4,SDSS J112618.28+103811.4;;;B-Mag taken from LEDA. -IC2817;*;11:26:18.81;+09:08:56.4;Leo;;;;;;;;;;;;;;;;;;;;; -IC2818;G;11:26:26.87;+12:55:15.4;Leo;0.46;0.34;94;17.31;;14.10;13.34;13.01;24.43;E;;;;;;;;2MASX J11262683+1255156,LEDA 1418899,SDSS J112626.88+125516.0,SDSS J112626.89+125516.0;;;B-Mag taken from LEDA. -IC2819;G;11:26:27.44;+13:50:41.6;Leo;0.59;0.28;59;15.70;;14.07;13.31;13.17;23.25;Sc;;;;;;;;2MASX J11262743+1350416,PGC 035194;;; -IC2820;G;11:26:26.85;+10:14:18.5;Leo;0.54;0.25;24;16.55;;13.39;12.75;12.59;23.28;Sc;;;;;;;;2MASX J11262683+1014187,LEDA 3091278,SDSS J112626.85+101418.5;;;B-Mag taken from LEDA. -IC2821;G;11:26:34.88;+13:57:46.5;Leo;0.25;0.18;32;16.82;;;;;;E;;;;;;;;2MASX J11263491+1357461,SDSS J112634.87+135746.4,SDSS J112634.87+135746.5,SDSS J112634.88+135746.5;;;B-Mag taken from LEDA. -IC2822;G;11:26:34.05;+11:26:24.3;Leo;1.35;0.60;118;15.20;;13.18;12.72;12.42;23.97;SBbc;;;;;;;;2MASX J11263405+1126250,PGC 035196,SDSS J112634.03+112624.2,SDSS J112634.04+112624.2,SDSS J112634.05+112624.3,UGC 06449;;; -IC2823;G;11:26:44.67;+12:50:54.3;Leo;0.89;0.31;12;15.50;;13.24;12.41;12.11;23.55;Sb;;;;;;;;2MASX J11264467+1250541,PGC 035205,SDSS J112644.66+125054.3,SDSS J112644.67+125054.3;;Two MAPS entries for the same object.; -IC2824;*;11:27:04.87;+14:05:07.0;Leo;;;;;;;;;;;;;;;;;;SDSS J112704.86+140507.0;;; -IC2825;*;11:27:03.56;+08:26:38.1;Leo;;;;;;;;;;;;;;;;;;SDSS J112703.55+082638.1;;; -IC2826;G;11:27:06.08;+13:14:19.4;Leo;0.73;0.70;56;15.10;;13.71;12.99;12.76;23.46;Sbc;;;;;;;;2MASX J11270610+1314191,PGC 035223,SDSS J112706.08+131419.3,SDSS J112706.09+131419.4;;; -IC2827;*;11:27:09.67;+11:30:51.8;Leo;;;;;;;;;;;;;;;;;;SDSS J112709.66+113051.7;;; -IC2828;G;11:27:10.94;+08:43:51.8;Leo;1.01;0.44;52;14.70;;13.35;12.69;12.66;23.10;I;;;;;;;;2MASX J11271096+0843517,MCG +02-29-028,PGC 035225,SDSS J112710.93+084351.7,SDSS J112710.94+084351.7,SDSS J112710.94+084351.8;;; -IC2829;G;11:27:14.98;+10:19:20.5;Leo;0.88;0.52;175;15.40;;12.40;11.62;11.28;23.93;Sa;;;;;;;;2MASX J11271496+1019207,PGC 035226,SDSS J112714.97+101920.4,SDSS J112714.98+101920.5;;; -IC2830;G;11:27:21.58;+07:48:51.5;Leo;0.50;0.44;58;15.20;;13.64;12.95;13.01;22.87;Sbc;;;;;;;;2MASX J11272159+0748516,PGC 035240,SDSS J112721.58+074851.4,SDSS J112721.58+074851.5;;; -IC2831;*;11:27:22.61;+08:58:44.1;Leo;;;;;;;;;;;;;;;;;;SDSS J112722.60+085844.0;;; -IC2832;*;11:27:25.12;+13:59:22.0;Leo;;;;;;;;;;;;;;;;;;;;; -IC2833;*;11:27:26.11;+13:36:10.1;Leo;;;;;;;;;;;;;;;;;;SDSS J112726.10+133610.0;;; -IC2834;G;11:27:31.82;+13:34:13.2;Leo;0.45;0.37;17;17.47;;;;;24.42;E;;;;;;;;2MASX J11273179+1334135,PGC 1434524,SDSS J112731.81+133413.2,SDSS J112731.82+133413.2;;;B-Mag taken from LEDA. -IC2835;G;11:27:31.59;+12:08:34.4;Leo;0.59;0.30;149;16.87;;13.55;12.77;12.33;24.54;E;;;;;;;;2MASX J11273159+1208339,LEDA 3090991,SDSS J112731.58+120834.3,SDSS J112731.59+120834.4;;;B-Mag taken from LEDA. -IC2836;*;11:27:37.21;+09:05:05.3;Leo;;;;;;;;;;;;;;;;;;SDSS J112737.21+090505.3;;; -IC2837;G;11:27:41.96;+10:18:47.0;Leo;0.43;0.37;39;16.48;;;;;23.52;E;;;;;;;;2MASX J11274195+1018476,SDSS J112741.96+101846.9,SDSS J112741.96+101847.0;;;B-Mag taken from LEDA. -IC2838;G;11:27:45.24;+14:00:40.5;Leo;0.22;0.19;173;16.82;;14.13;13.34;13.08;;Sbc;;;;;;;;2MASX J11274523+1400406,LEDA 3090746,SDSS J112745.23+140040.4,SDSS J112745.24+140040.5;;;B-Mag taken from LEDA. -IC2839;G;11:27:45.42;+10:49:11.1;Leo;0.54;0.24;0;17.15;;;;;24.64;E;;;;;;;;2MASX J11274542+1049106,SDSS J112745.42+104911.0,SDSS J112745.42+104911.1;;;B-Mag taken from LEDA. -IC2840;G;11:27:47.60;+13:25:33.2;Leo;0.43;0.29;154;17.28;;;;;23.83;Sc;;;;;;;;PGC 1430728,SDSS J112747.59+132533.1,SDSS J112747.60+132533.2;;;B-Mag taken from LEDA. -IC2841;*;11:27:48.86;+12:36:11.2;Leo;;;;;;;;;;;;;;;;;;SDSS J112748.86+123611.2;;; -IC2842;G;11:27:47.69;+09:39:07.1;Leo;0.45;0.24;63;17.12;;;;;23.66;Sbc;;;;;;;;2MASX J11274771+0939076,PGC 1368101,SDSS J112747.69+093907.1;;;B-Mag taken from LEDA. -IC2843;G;11:27:58.09;+13:11:02.1;Leo;0.73;0.68;15;15.40;;13.97;13.25;13.32;23.88;Sc;;;;;;;;2MASX J11275811+1311025,PGC 035284,SDSS J112758.08+131102.0,SDSS J112758.09+131102.1;;; -IC2844;G;11:27:58.10;+11:27:11.8;Leo;0.70;0.35;127;16.38;;;;;23.81;Sbc;;;;;;;;2MASX J11275806+1127119,PGC 1393867,SDSS J112758.09+112711.7,SDSS J112758.10+112711.7,SDSS J112758.10+112711.8;;;B-Mag taken from LEDA. -IC2845;G;11:28:00.46;+12:31:47.1;Leo;0.71;0.50;81;16.75;;13.14;12.31;12.15;24.58;S0-a;;;;;;;;2MASX J11280047+1231475,LEDA 1411193,SDSS J112800.45+123147.0,SDSS J112800.46+123147.0,SDSS J112800.46+123147.1;;;B-Mag taken from LEDA. -IC2846;G;11:28:00.49;+11:09:29.8;Leo;0.89;0.74;119;14.80;;12.14;11.20;10.75;23.40;SBa;;;;;;;;2MASX J11280051+1109299,IRAS 11254+1126,MCG +02-29-029,PGC 035283,SDSS J112800.49+110929.8;;; -IC2847;G;11:28:03.39;+13:55:49.4;Leo;0.17;0.12;15;17.20;;;;;;E;;;;;;;;2MASX J11280338+1355486,SDSS J112803.38+135549.3,SDSS J112803.38+135549.4;;;B-Mag taken from LEDA. -IC2848;G;11:28:13.67;+13:01:49.7;Leo;0.47;0.39;9;17.12;;;;;24.30;Sc;;;;;;;;SDSS J112813.67+130149.7;;;B-Mag taken from LEDA. -IC2849;*;11:28:11.66;+09:05:38.4;Leo;;;;;;;;;;;;;;;;;;SDSS J112811.65+090538.3;;; -IC2850;G;11:28:12.96;+09:03:44.1;Leo;0.80;0.28;126;14.80;;13.32;12.60;12.43;22.49;Sc;;;;;;;;2MASX J11281296+0903439,IRAS 11256+0920,MCG +02-29-030,PGC 035301,SDSS J112812.96+090344.1;;; -IC2851;G;11:28:14.61;+11:23:39.8;Leo;0.44;0.23;46;17.27;;;;;23.72;Sc;;;;;;;;PGC 1392951,SDSS J112814.61+112339.7,SDSS J112814.61+112339.8;;;B-Mag taken from LEDA. -IC2852;G;11:28:14.05;+09:48:01.7;Leo;0.49;0.31;119;16.73;;;;;23.55;SABc;;;;;;;;PGC 1370252,SDSS J112814.05+094801.7;;;B-Mag taken from LEDA. -IC2853;G;11:28:14.86;+09:08:49.3;Leo;0.91;0.44;172;14.60;;11.78;11.05;10.77;22.57;Sab;;;;;;;;2MASX J11281485+0908499,IRAS 11256+0925,MCG +02-29-031,PGC 035302,SDSS J112814.86+090849.3,SDSS J112814.86+090849.4,UGC 06470;;UGC misprints name as 'MCG +01-29-031'.; -IC2854;*;11:28:19.87;+08:58:07.4;Leo;;;;;;;;;;;;;;;;;;SDSS J112819.87+085807.4;;; -IC2855;G;11:28:24.99;+09:41:15.9;Leo;0.34;0.19;121;18.49;;;;;24.86;;;;;;;;;SDSSJ112824.93+094114.3;;;B-Mag taken from LEDA. -IC2856;G;11:28:16.31;-12:53:26.5;Crt;0.99;0.43;45;14.60;;11.92;11.26;10.92;22.81;Sab;;;;;;;;2MASX J11281630-1253265,IRAS 11257-1236,MCG -02-29-033,PGC 035304;;;B-Mag taken from LEDA. -IC2857;G;11:28:31.04;+09:06:15.9;Leo;1.79;0.32;160;15.30;;12.27;11.44;11.05;23.97;Sc;;;;;;;;2MASX J11283107+0906162,IRAS 11259+0922,MCG +02-29-033,PGC 035320,SDSS J112831.04+090615.8,SDSS J112831.04+090615.9,SDSS J112831.05+090615.9,UGC 06475;;; -IC2858;G;11:28:35.96;+13:39:41.4;Leo;0.21;0.17;111;16.95;;;;;;E;;;;;;;;2MASX J11283591+1339408,SDSS J112835.95+133941.3,SDSS J112835.95+133941.4;;;B-Mag taken from LEDA. -IC2859;*;11:28:41.76;+09:06:30.6;Leo;;;;;;;;;;;;;;;;;;SDSS J112841.75+090630.5;;; -IC2860;G;11:28:44.60;+14:02:30.8;Leo;0.29;0.20;157;16.64;;;;;;E;;;;;;;;2MASX J11284461+1402298,SDSS J112844.59+140230.6,SDSS J112844.59+140230.7,SDSS J112844.60+140230.8;;;B-Mag taken from LEDA. -IC2861;G;11:28:58.97;+38:51:04.6;UMa;0.83;0.74;113;15.50;;12.19;11.40;11.19;23.57;S0-a;;;;;;;;2MASX J11285898+3851042,MCG +07-24-011,PGC 035357,SDSS J112858.96+385104.5,SDSS J112858.97+385104.6;;; -IC2862;G;11:28:43.32;+10:07:38.2;Leo;0.54;0.30;31;16.91;;13.45;12.78;12.22;24.41;E;;;;;;;;2MASX J11284331+1007382,LEDA 3091279,SDSS J112843.31+100738.2,SDSS J112843.32+100738.2;;;B-Mag taken from LEDA. -IC2863;*;11:28:53.98;+09:05:43.1;Leo;;;;;;;;;;;;;;;;;;SDSS J112853.98+090543.1;;; -IC2864;G;11:28:59.67;+12:22:03.8;Leo;0.61;0.39;157;16.80;;13.36;12.66;12.19;24.25;Sa;;;;;;;;2MASX J11285965+1222038,LEDA 3090992,SDSS J112859.66+122203.7,SDSS J112859.67+122203.7,SDSS J112859.67+122203.8;;;B-Mag taken from LEDA. -IC2865;*;11:28:59.75;+09:06:55.8;Leo;;;;;;;;;;;;;;;;;;;;; -IC2866;*;11:29:00.03;+09:02:31.9;Leo;;;;;;;;;;;;;;;;;;SDSS J112900.03+090231.9;;; -IC2867;G;11:29:00.54;+09:05:21.8;Leo;0.45;0.36;88;15.60;;;;;23.08;Sc;;;;;;;;PGC 035358,SDSS J112900.53+090521.7,SDSS J112900.54+090521.7,SDSS J112900.54+090521.8;;; -IC2868;*;11:29:05.80;+09:05:39.5;Leo;;;;;;;;;;;;;;;;;;SDSS J112905.80+090539.4;;; -IC2869;*;11:29:08.72;+09:01:02.6;Leo;;;;;;;;;;;;;;;;;;SDSS J112908.71+090102.6;;; -IC2870;G;11:29:12.42;+11:51:55.8;Leo;1.05;0.95;0;18.00;;;;;26.74;I;;;;;;;;PGC 035377,SDSS J112912.42+115155.8,UGC 06486;;Multiple SDSS entries describe this source.;B-Mag taken from LEDA. -IC2871;G;11:29:20.69;+08:36:08.5;Leo;0.91;0.66;81;15.20;;12.99;12.51;12.04;23.57;SABc;;;;;;;;2MASX J11292068+0836089,MCG +02-29-037,PGC 035388,SDSS J112920.68+083608.4,SDSS J112920.69+083608.3,SDSS J112920.69+083608.4,SDSS J112920.69+083608.5;;; -IC2872;Neb;11:28:08.03;-62:59:20.2;Cen;15.14;6.03;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC2873;GPair;11:29:27.43;+13:13:05.9;Leo;0.70;;;;;;;;;;;;;;;;;MCG +02-29-038;;;Diameter of the group inferred by the author. -IC2873 NED01;G;11:29:27.47;+13:12:56.5;Leo;0.42;0.37;98;17.39;;;;;24.11;Sbc;;;;;;;;SDSS J112927.46+131256.5,SDSS J112927.47+131256.5;;;B-Mag taken from LEDA -IC2873 NED02;G;11:29:27.64;+13:13:12.4;Leo;0.82;0.58;2;15.08;;;;;23.21;I;;;;;;;;2MASX J11292762+1313121,MCG +02-29-038 NED02,PGC 035406,SDSS J112927.63+131312.4,SDSS J112927.64+131312.4;;;B-Mag taken from LEDA. -IC2874;G;11:29:27.55;+10:37:45.0;Leo;0.45;0.27;50;16.85;;;;;23.41;Sm;;;;;;;;PGC 1382231,SDSS J112927.55+103745.0;;;B-Mag taken from LEDA. -IC2875;*;11:29:34.93;+12:59:23.6;Leo;;;;;;;;;;;;;;;;;;SDSS J112934.92+125923.6;;; -IC2876;G;11:29:33.60;+09:00:58.2;Leo;0.62;0.32;176;16.74;;;;;23.90;Sbc;;;;;;;;2MASX J11293360+0900580,PGC 1358040,SDSS J112933.59+090058.2,SDSS J112933.60+090058.2;;;B-Mag taken from LEDA. -IC2877;G;11:29:37.74;+12:51:11.8;Leo;0.58;0.45;110;15.70;;14.26;13.85;13.51;23.62;Sbc;;;;;;;;2MASX J11293772+1251110,PGC 035408,SDSS J112937.73+125111.7,SDSS J112937.74+125111.8;;; -IC2878;G;11:29:38.21;+09:58:03.3;Leo;0.53;0.25;119;16.54;;;;;24.01;E;;;;;;;;2MASX J11293819+0958030,SDSS J112938.21+095803.3;;;B-Mag taken from LEDA. -IC2879;G;11:29:44.29;+09:00:49.9;Leo;0.44;0.33;170;16.84;;;;;23.62;Sb;;;;;;;;2MASX J11294427+0900500,PGC 1357989,SDSS J112944.29+090049.8;;;B-Mag taken from LEDA. -IC2880;*;11:29:53.02;+13:11:55.8;Leo;;;;;;;;;;;;;;;;;;;;; -IC2881;G;11:29:54.41;+12:30:40.4;Leo;0.32;0.21;90;18.52;;;;;24.75;;;;;;;;;PGC 1410870,SDSS J112954.40+123040.4,SDSS J112954.41+123040.4;;;B-Mag taken from LEDA. -IC2882;*;11:30:09.44;+11:59:20.9;Leo;;;;;;;;;;;;;;;;;;SDSS J113009.43+115920.9;;; -IC2883;G;11:30:15.79;+10:54:39.3;Leo;0.33;0.28;94;17.23;;14.36;13.58;13.55;23.45;Sc;;;;;;;;2MASX J11301578+1054394,LEDA 3091134,SDSS J113015.78+105439.3,SDSS J113015.79+105439.4;;;B-Mag taken from LEDA. -IC2884;*Ass;11:27:41.05;-79:44:03.8;Cha;;;;;;;;;;;;;;;;;;;;Six or seven Galactic stars in a line.; -IC2885;*;11:30:22.61;+09:46:19.4;Leo;;;;;;;;;;;;;;;;;;SDSS J113022.60+094619.4;;; -IC2886;G;11:30:24.44;+11:33:45.6;Leo;0.32;0.25;15;17.06;;;;;23.43;E;;;;;;;;2MASX J11302441+1133458,SDSS J113024.43+113345.5,SDSS J113024.44+113345.6;;;B-Mag taken from LEDA. -IC2887;Dup;11:30:29.72;+09:23:16.6;Leo;;;;;;;;;;;;;;;3705A;;;;;; -IC2888;Other;11:30:35.11;+09:54:30.6;Leo;;;;;;;;;;;;;;;;;;;;;NED lists this object as type G, but there's nothing at these coords in LEDA. -IC2889;G;11:30:28.99;-13:05:27.6;Crt;1.22;0.69;151;14.70;;12.10;11.34;10.99;23.20;SABc;;;;;;;;2MASX J11302898-1305276,MCG -02-29-038,PGC 035469;;;B-Mag taken from LEDA. -IC2890;*;11:30:46.15;+13:10:54.6;Leo;;;;;;;;;;;;;;;;;;SDSS J113046.14+131054.6;;; -IC2891;G;11:30:48.14;+12:40:39.8;Leo;0.46;0.35;118;16.65;;;;;23.52;SBbc;;;;;;;;2MASX J11304818+1240397,PGC 1414074,SDSS J113048.13+124039.7,SDSS J113048.14+124039.8;;;B-Mag taken from LEDA. -IC2892;G;11:30:48.91;+10:35:18.8;Leo;0.68;0.23;118;16.95;;;;;23.96;Sc;;;;;;;;2MASX J11304892+1035188,SDSS J113048.91+103518.8;;;B-Mag taken from LEDA. -IC2893;GPair;11:30:53.28;+13:23:27.7;Leo;0.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC2893 NED01;G;11:30:53.21;+13:23:31.1;Leo;0.06;0.05;73;17.75;;;;;;;;;;;;;;SDSS J113053.20+132331.0,SDSS J113053.20+132331.1;;;B-Mag taken from LEDA -IC2893 NED02;G;11:30:53.46;+13:23:23.7;Leo;0.45;0.28;180;15.60;;14.64;14.50;13.32;22.81;Sd;;;;;;;;2MASX J11305347+1323267,PGC 035488,SDSS J113053.45+132323.6,SDSS J113053.46+132323.7;;The 2MASX position applies to the northern end of the galaxy.; -IC2894;G;11:30:57.50;+13:14:07.3;Leo;0.62;0.32;70;15.70;;13.17;12.49;12.27;23.28;SBb;;;;;;;;2MASX J11305750+1314067,PGC 035493,SDSS J113057.49+131407.2,SDSS J113057.50+131407.2,SDSS J113057.50+131407.3;;; -IC2895;*;11:30:57.29;+09:58:36.7;Leo;;;;;;;;;;;;;;;;;;SDSS J113057.29+095836.6;;; -IC2896;G;11:31:13.43;+12:21:00.2;Leo;0.47;0.31;159;16.56;;13.97;13.34;13.03;23.33;Sc;;;;;;;;2MASX J11311343+1220599,LEDA 3090993,SDSS J113113.42+122100.1;;;B-Mag taken from LEDA. -IC2897;*;11:31:19.37;+11:32:56.6;Leo;;;;;;;;;;;;;;;;;;SDSS J113119.37+113256.5;;; -IC2898;G;11:31:20.41;+13:20:10.4;Leo;0.48;0.33;146;16.63;;;;;23.55;Sbc;;;;;;;;2MASX J11312044+1320099,PGC 1428474,SDSS J113120.41+132010.3,SDSS J113120.42+132010.4;;;B-Mag taken from LEDA. -IC2899;**;11:31:20.37;+10:38:05.0;Leo;;;;;;;;;;;;;;;;;;;;; -IC2900;G;11:31:29.69;+13:10:02.3;Leo;0.33;0.28;114;17.31;;14.45;13.66;13.52;23.47;SBbc;;;;;;;;2MASX J11312967+1310019,LEDA 1424467,SDSS J113129.68+131002.2,SDSS J113129.69+131002.3;;;B-Mag taken from LEDA. -IC2901;G;11:31:32.13;+12:41:59.0;Leo;0.61;0.37;114;16.97;;13.18;12.34;11.94;24.44;S0-a;;;;;;;;2MASX J11313214+1241589,LEDA 1414499,SDSS J113132.13+124158.9,SDSS J113132.13+124159.0;;;B-Mag taken from LEDA. -IC2902;*;11:31:33.16;+14:13:21.9;Leo;;;;;;;;;;;;;;;;;;SDSS J113133.16+141321.8;;; -IC2903;G;11:31:40.76;+12:38:33.3;Leo;0.44;0.27;34;16.81;;;;;23.39;Sb;;;;;;;;2MASX J11314076+1238340,PGC 1413381,SDSS J113140.75+123833.2,SDSS J113140.75+123833.3;;;B-Mag taken from LEDA. -IC2904;*;11:31:42.37;+13:11:02.9;Leo;;;;16.80;;15.68;15.62;;;;;;;;;;;2MASS J11314236+1311028,SDSS J113142.36+131102.9;;; -IC2905;*;11:31:46.98;+09:06:25.1;Leo;;;;;;;;;;;;;;;;;;SDSS J113146.98+090625.0;;; -IC2906;*;11:31:49.61;+13:07:58.4;Leo;;;;;;;;;;;;;;;;;;SDSS J113149.61+130758.4;;; -IC2907;*;11:31:48.75;+09:53:58.0;Leo;;;;;;;;;;;;;;;;;;;;; -IC2908;*;11:31:50.48;+12:56:16.4;Leo;;;;;;;;;;;;;;;;;;SDSS J113150.47+125616.3;;; -IC2909;G;11:31:50.89;+11:28:12.8;Leo;0.24;0.21;35;17.77;;;;;23.44;;;;;;;;;PGC 1394107,SDSS J113150.88+112812.8,SDSS J113150.89+112812.8;;;B-Mag taken from LEDA. -IC2910;G;11:31:54.71;-09:43:31.3;Crt;1.28;0.88;139;14.64;;10.91;10.20;9.92;23.83;S0-a;;;;;;;;2MASX J11315470-0943304,MCG -01-30-001,PGC 035557;;;B-Mag taken from LEDA. -IC2911;**;11:32:04.63;+12:58:38.5;Leo;;;;;;;;;;;;;;;;;;;;; -IC2912;G;11:32:07.11;+11:42:35.1;Leo;0.55;0.19;84;17.11;;;;;23.73;Sc;;;;;;;;2MASX J11320710+1142351,PGC 1397617,SDSS J113207.11+114235.1;;;B-Mag taken from LEDA. -IC2913;G;11:31:51.35;-30:24:38.8;Hya;1.00;0.79;143;13.75;;11.41;10.75;10.48;22.72;S0-a;;;;;;;;2MASX J11315134-3024386,ESO 439-016,ESO-LV 439-0160,IRAS 11293-3008,MCG -05-27-016,PGC 035554;;; -IC2914;G;11:32:12.43;+13:29:32.9;Leo;0.65;0.34;179;15.30;;13.61;12.77;12.67;23.08;Sc;;;;;;;;2MASX J11321243+1329328,PGC 035580,SDSS J113212.42+132932.8,SDSS J113212.43+132932.8,SDSS J113212.43+132932.9;;; -IC2916;*;11:32:16.15;+11:41:01.4;Leo;;;;;;;;;;;;;;;;;;SDSS J113216.15+114101.4;;; -IC2917;G;11:32:19.33;+10:56:43.6;Leo;0.26;0.19;38;18.01;;;;;23.79;;;;;;;;;PGC 1386736,SDSS J113219.33+105643.5,SDSS J113219.33+105643.6;;;B-Mag taken from LEDA. -IC2918;*;11:32:26.23;+13:14:54.6;Leo;;;;;;;;;;;;;;;;;;SDSS J113226.23+131454.6;;; -IC2919;G;11:32:34.90;+14:11:21.2;Leo;0.55;0.31;45;15.50;;14.22;13.61;13.09;23.13;Sd;;;;;;;;2MASX J11323487+1411222,PGC 035614,SDSS J113234.89+141121.2;;; -IC2920;*;11:32:48.67;+12:33:25.6;Leo;;;;;;;;;;;;;;;;;;SDSS J113248.66+123325.6;;; -IC2921;G;11:32:49.28;+10:17:47.3;Leo;0.59;0.25;124;17.61;16.94;12.80;12.06;11.62;23.49;Sa;;;;;;;;2MASX J11324928+1017473,LEDA 3091281,SDSS J113249.27+101747.2,SDSS J113249.28+101747.3;;; -IC2922;*;11:32:51.22;+12:55:22.2;Leo;;;;;;;;;;;;;;;;;;SDSS J113251.22+125522.2;;; -IC2923;G;11:32:53.55;+13:09:50.3;Leo;0.41;0.29;12;16.79;;;;;23.84;E;;;;;;;;2MASX J11325356+1309502,PGC 1424388,SDSS J113253.54+130950.2,SDSS J113253.54+130950.3;;;B-Mag taken from LEDA. -IC2924;*;11:32:52.19;+09:01:23.8;Leo;;;;;;;;;;;;;;;;;;SDSS J113252.18+090123.7;;; -IC2925;G;11:33:13.23;+34:15:54.4;UMa;0.48;0.18;21;15.60;;12.15;11.45;11.08;22.24;S0-a;;;;;;;;2MASX J11331323+3415543,PGC 035667,SDSS J113313.22+341554.4,SDSS J113313.23+341554.4;;; -IC2926;*;11:33:04.07;+12:26:11.2;Leo;;;;;;;;;;;;;;;;;;SDSS J113304.06+122611.1;;; -IC2927;*;11:33:04.77;+13:05:08.6;Leo;;;;;;;;;;;;;;;;;;SDSS J113304.77+130508.6;;; -IC2928;G;11:33:29.96;+34:18:58.5;UMa;0.90;0.74;143;14.70;;12.23;11.62;11.25;23.11;SABb;;;;;;;;2MASX J11333001+3418584,MCG +06-25-086,PGC 035687,SDSS J113329.95+341858.4,SDSS J113329.96+341858.5,UGC 06540;;HOLM 264C does not exist (it is probably a plate defect).; -IC2929;G;11:33:31.47;+12:08:14.4;Leo;0.53;0.43;118;16.21;;;;;23.86;E?;;;;;;;;2MASX J11333147+1208143,LEDA 1404385,SDSS J113331.46+120814.3,SDSS J113331.47+120814.4;;;B-Mag taken from LEDA. -IC2930;G;11:33:44.14;+10:05:19.2;Leo;0.69;0.29;58;15.70;;13.12;12.43;12.16;23.21;Sb;;;;;;;;2MASX J11334411+1005189,PGC 035700,SDSS J113344.13+100519.1,SDSS J113344.14+100519.2;;; -IC2931;*;11:33:50.49;+12:28:02.0;Leo;;;;;;;;;;;;;;;;;;SDSS J113350.49+122802.0;;; -IC2932;**;11:33:53.71;+10:32:36.2;Leo;;;;;;;;;;;;;;;;;;;;; -IC2933;G;11:34:12.75;+34:18:45.0;UMa;1.18;0.36;7;15.20;;11.43;10.71;10.46;23.38;SBab;;;;;;;;2MASX J11341269+3418450,MCG +06-26-004,PGC 035732,SDSS J113412.74+341844.9,SDSS J113412.75+341845.0,UGC 06550;;; -IC2934;G;11:34:19.55;+13:19:19.2;Leo;0.74;0.38;153;14.80;;15.60;14.83;14.43;22.90;Sd;;;;;;;;2MASX J11341986+1319135,MCG +02-30-002,PGC 035739,SDSS J113419.54+131919.1,SDSS J113419.55+131919.1,SDSS J113419.55+131919.2;;; -IC2935;*;11:34:48.21;+10:15:00.5;Leo;;;;;;;;;;;;;;;;;;SDSS J113448.21+101500.5;;; -IC2936;G;11:34:56.82;+13:00:31.7;Leo;0.39;0.35;109;16.48;;;;;23.06;Sbc;;;;;;;;PGC 1420782,SDSS J113456.81+130031.6,SDSS J113456.82+130031.7;;;B-Mag taken from LEDA. -IC2937;*;11:35:03.37;+10:06:12.1;Leo;;;;;;;;;;;;;;;;;;SDSS J113503.37+100612.0;;; -IC2938;G;11:35:36.30;+13:40:50.6;Leo;0.89;0.62;130;15.30;;11.82;11.18;10.80;23.86;E;;;;;;;;2MASX J11353633+1340507,PGC 035837,SDSS J113536.29+134050.6;;; -IC2939;*;11:35:37.98;+10:41:49.5;Leo;;;;;;;;;;;;;;;;;;SDSS J113537.97+104149.4;;; -IC2940;Other;11:36:02.74;+21:57:42.0;Leo;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2941;G;11:36:09.97;+10:03:20.1;Leo;0.85;0.59;73;15.00;;12.84;12.04;11.70;23.28;Sbc;;;;;;;;2MASX J11360997+1003195,MCG +02-30-003,PGC 035881,SDSS J113609.97+100320.0,SDSS J113609.97+100320.1;;; -IC2942;G;11:36:12.21;+11:48:57.2;Leo;0.66;0.35;68;16.18;;;;;23.49;Sc;;;;;;;;PGC 1399175,SDSS J113612.20+114857.1,SDSS J113612.20+114857.2,SDSS J113612.21+114857.2;;;B-Mag taken from LEDA. -IC2943;G;11:36:42.31;+54:50:45.7;UMa;0.41;0.33;25;15.00;;12.78;12.05;11.71;21.87;Sa;;;;;;;;2MASX J11364237+5450455,IRAS 11339+5507,PGC 035926,SDSS J113642.30+545045.7,SDSS J113642.30+545046.0,SDSS J113642.31+545045.7;;; -IC2944;Cl+N;11:35:46.93;-63:01:11.4;Cen;7.20;;;4.50;;;;;;;;;;;;;;C 100,HD 100841,HIP 056561,MWSC 1957;lam Cen Nebula;Position is for Lambda Centauri, more or less centered in 40' x 20' nebula.;B-Mag taken from LEDA. -IC2945;GPair;11:37:04.29;+12:55:35.7;Leo;1.00;;;;;;;;;;;;;;;;;MCG +02-30-004,UGC 06585;;;Diameter of the group inferred by the author. -IC2945 NED01;G;11:37:04.30;+12:55:35.2;Leo;0.96;0.70;115;15.00;;11.86;11.12;10.80;23.96;E;;;;;;;;2MASX J11370431+1255361,MCG +02-30-004 NED01,PGC 035958,SDSS J113704.29+125535.7,SDSS J113704.30+125535.7,UGC 06585 NED01;;; -IC2946;G;11:37:29.69;+32:15:08.9;UMa;0.46;0.27;154;15.20;;12.15;11.47;11.12;;SBab;;;;;;;;2MASX J11372968+3215088,PGC 035984,SDSS J113729.68+321508.8,SDSS J113729.69+321508.8,SDSS J113729.69+321508.9;;; -IC2947;G;11:37:30.97;+31:21:44.4;UMa;0.75;0.56;3;14.60;;12.43;11.78;11.57;22.52;SBm;;;;;;;;2MASX J11373079+3121437,MCG +05-28-002,PGC 035981,SDSS J113730.97+312144.3,SDSS J113730.97+312144.4;;; -IC2948;Cl+N;11:39:05.94;-63:26:37.9;Cen;6.00;;;;;;;;;;;;;;;;;MWSC 1961;;The open cluster ESO 094-SC 005 may be associated with this nebula.; -IC2949;**;11:40:54.35;-46:27:16.5;Cen;;;;;;;;;;;;;;;;;;;;IC identification is uncertain.; -IC2950;G;11:41:37.92;+37:59:31.6;UMa;0.65;0.56;81;14.80;;12.49;11.78;11.51;22.57;Sc;;;;;;;;2MASX J11413792+3759310,PGC 036287,SDSS J114137.92+375931.6;;; -IC2951;G;11:43:24.56;+19:44:59.3;Leo;1.54;0.43;81;14.98;13.55;11.23;10.44;10.23;23.65;Sa;;;;;;;;2MASX J11432453+1944595,MCG +03-30-061,PGC 036436,SDSS J114324.55+194459.3,UGC 06688;;; -IC2952;G;11:44:17.13;+33:21:04.9;UMa;0.35;0.28;161;15.60;;13.60;12.81;12.35;22.07;Sbc;;;;;;;;2MASX J11441709+3321050,MCG +06-26-024,PGC 036508,SDSS J114417.12+332104.9,SDSS J114417.13+332104.9,SDSS J114417.13+332105.0;;; -IC2953;Dup;11:44:25.78;+33:21:18.3;UMa;;;;;;;;;;;;;;;3855;;;;;; -IC2954;*;11:45:03.26;+26:47:11.4;Leo;;;;;;;;;;;;;;;;;;;;; -IC2955;G;11:45:03.91;+19:37:14.2;Leo;0.38;0.37;5;15.20;;11.91;11.26;11.14;21.86;E-S0;;;;;;;;2MASX J11450385+1937139,MCG +03-30-096,PGC 036603,SDSS J114503.90+193714.1;;; -IC2956;G;11:45:17.56;+26:46:02.6;Leo;0.94;0.80;56;14.90;;11.91;11.06;10.74;23.39;Sbc;;;;;;;;2MASX J11451760+2646025,MCG +05-28-027,PGC 036625,SDSS J114517.56+264602.6,UGC 06729;;; -IC2957;G;11:45:36.94;+31:17:58.4;UMa;0.79;0.47;23;15.00;;12.32;11.63;11.47;23.28;S0;;;;;;;;2MASX J11453698+3117584,MCG +05-28-028,PGC 036653,SDSS J114536.93+311758.4,SDSS J114536.93+311758.5;;Not to be confused with IC 2954 which is a star 4.5 degrees away.; -IC2958;G;11:45:42.32;+33:09:16.0;UMa;0.71;0.58;55;15.70;;13.10;12.40;12.07;23.62;Sbc;;;;;;;;2MASX J11454232+3309154,MCG +06-26-030,PGC 036665,SDSS J114542.32+330915.9,SDSS J114542.32+330916.0;;;B-Mag taken from LEDA. -IC2959;Dup;11:46:10.14;+33:06:31.5;UMa;;;;;;;;;;;;;;;3871;;;;;; -IC2960;G;11:46:19.70;+35:00:13.5;UMa;0.83;0.72;104;15.60;;12.52;11.89;11.62;23.66;Sb;;;;;;;;2MASX J11461969+3500131,PGC 036709,SDSS J114619.69+350013.4,SDSS J114619.70+350013.5;;; -IC2961;G;11:47:49.57;+31:20:41.1;UMa;0.48;0.29;21;15.50;;13.87;13.36;12.93;23.02;S0;;;;;;;;2MASX J11474957+3120415,PGC 036812,SDSS J114749.57+312041.0,SDSS J114749.57+312041.1;;; -IC2962;Other;11:49:05.99;-12:18:40.9;Crt;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2963;Dup;11:49:24.53;-05:07:06.4;Vir;;;;;;;;;;;;;;;3915;;;;;; -IC2964;Other;11:49:52.47;+12:03:01.1;Leo;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2965;Dup;11:54:01.51;-19:34:08.0;Crt;;;;;;;;;;;;;;;3957;;;;;; -IC2966;RfN;11:50:13.55;-64:52:22.6;Mus;3.00;2.00;130;;;;;;;;;;;;;;;2MASX J11501351-6452222;;; -IC2967;G;11:50:55.13;+30:51:02.5;UMa;0.85;0.63;17;14.80;;11.73;10.99;10.75;23.34;E;;;;;;;;2MASX J11505514+3051032,MCG +05-28-038,PGC 037042,SDSS J115055.12+305102.4,SDSS J115055.13+305102.5;;; -IC2968;G;11:52:30.53;+20:37:31.7;Leo;0.89;0.39;80;15.50;;12.55;11.91;11.52;23.90;S0-a;;;;;;;;2MASX J11523053+2037317,PGC 037192,SDSS J115230.53+203731.6,SDSS J115230.53+203731.7;;; -IC2969;G;11:52:31.27;-03:52:20.1;Vir;1.30;0.74;95;13.80;;11.91;11.36;11.15;22.66;SBbc;;;;;;;;2MASX J11523127-0352199,IRAS 11499-0335,MCG -01-30-040,PGC 037196;;Confused HIPASS source; -IC2970;Other;11:53:09.75;-23:07:23.8;Crt;;;;;;;;;;;;;;;;;;;;"Nominal position; nothing here."; -IC2971;G;11:53:27.54;+30:41:48.9;UMa;0.70;0.48;150;15.70;;12.47;11.71;11.63;23.84;E;;;;;;;;2MASX J11532757+3041487,PGC 037275,SDSS J115327.53+304148.8,SDSS J115327.54+304148.8,SDSS J115327.54+304148.9;;; -IC2972;Dup;11:53:40.63;-03:59:47.5;Vir;;;;;;;;;;;;;;;3952;;;;;; -IC2973;G;11:53:50.76;+33:21:55.8;UMa;1.42;0.82;120;14.50;;12.64;11.93;11.73;23.51;SBcd;;;;;;;;2MASX J11535082+3321563,MCG +06-26-052,PGC 037308,SDSS J115350.56+332158.1,SDSS J115351.07+332153.7,UGC 06872;;; -IC2974;G;11:53:48.73;-05:10:04.2;Vir;2.19;0.47;100;13.84;;10.83;10.00;9.78;23.13;Sc;;;;;;2975;;2MASX J11534872-0510044,IRAS 11512-0453,MCG -01-30-045,PGC 037304;;The identification as IC 2975 is not certain.; -IC2975;Dup;11:53:48.73;-05:10:04.2;Vir;;;;;;;;;;;;;;;;2974;;;;; -IC2976;Dup;11:56:01.05;-02:43:15.1;Vir;;;;;;;;;;;;;;;3979;;;;;; -IC2977;G;11:55:14.66;-37:41:46.7;Cen;2.14;1.17;121;13.28;;10.14;9.46;9.12;23.03;I;;;;;;;;2MASX J11551464-3741464,ESO 379-009,ESO-LV 379-0090,MCG -06-26-014,PGC 037405;;; -IC2978;G;11:56:23.23;+32:02:19.4;UMa;1.00;0.42;130;15.40;;13.68;13.77;13.08;23.48;SBcd;;;;;;;;2MASX J11562287+3202144,MCG +05-28-051,PGC 037515,SDSS J115623.22+320219.4,SDSS J115623.23+320219.4,UGC 06915;;; -IC2979;G;11:56:54.24;+32:09:31.7;UMa;0.84;0.54;174;14.50;;11.58;10.89;10.66;22.98;S0;;;;;;;;2MASX J11565423+3209321,MCG +05-28-054,PGC 037559,SDSS J115654.23+320931.7,SDSS J115654.24+320931.7,UGC 06925;;; -IC2980;G;11:57:30.16;-73:41:04.2;Mus;2.04;1.29;41;14.60;;10.06;9.27;9.07;23.65;E;;;;;;;;2MASX J11573016-7341042,ESO 039-005,PGC 037612;;; -IC2981;G;11:55:42.62;+32:11:20.0;UMa;0.53;0.42;3;14.70;;12.71;12.11;11.84;22.44;SBa;;;;;;;;2MASX J11554260+3211203,MCG +05-28-048,PGC 037462,SDSS J115542.62+321120.0;;Often mistakenly called NGC 3966.; -IC2982;Dup;11:57:51.38;+27:52:07.2;Com;;;;;;;;;;;;;;;4004B;;;;;; -IC2983;Other;11:58:16.73;-02:06:36.2;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2984;G;11:59:07.23;+30:41:49.0;UMa;0.73;0.49;77;15.60;;14.71;14.28;14.07;23.45;SBd;;;;;;;;MCG +05-28-068,PGC 037734;;; -IC2985;G;11:59:12.75;+30:43:52.4;UMa;0.90;0.43;139;15.20;;13.93;13.38;13.07;23.85;S0;;;;;;;;2MASX J11591277+3043521,MCG +05-28-069,PGC 037744,SDSS J115912.75+304352.3,SDSS J115912.75+304352.4,SDSS J115912.76+304352.4,UGC 06981;;; -IC2986;G;11:59:49.61;+30:50:39.9;UMa;0.99;0.91;15;15.00;;11.95;11.35;11.18;23.46;S0;;;;;;;;2MASX J11594960+3050397,MCG +05-28-072,PGC 037795,SDSS J115949.60+305039.8,SDSS J115949.61+305039.9;;; -IC2987;G;12:03:24.54;+38:48:47.9;UMa;0.60;0.42;64;15.30;;12.72;12.05;11.67;22.85;SBbc;;;;;;;;2MASX J12032450+3848479,PGC 038088,SDSS J120324.53+384847.9,SDSS J120324.54+384847.9,SDSS J120324.54+384848.0;;; -IC2988;Other;12:03:42.20;+03:25:45.3;Vir;;;;;;;;;;;;;;;;;;SDSS J120342.19+032545.2;;;No exact match in LEDA. -IC2989;Dup;12:04:34.03;+01:48:05.8;Vir;;;;;;;;;;;;;;;4139;;;;;; -IC2990;G;12:04:38.60;+11:03:00.2;Vir;0.73;0.32;15;15.10;;12.92;12.20;12.17;22.82;Sb;;;;;;;;2MASX J12043860+1102599,MCG +02-31-022,PGC 038219,SDSS J120438.58+110300.4,SDSS J120438.59+110300.1,SDSS J120438.60+110300.1,SDSS J120438.60+110300.2;;; -IC2991;G;12:05:12.51;+10:38:25.3;Vir;0.67;0.24;35;15.50;;13.99;13.67;13.49;23.19;Sc;;;;;;;;2MASX J12051250+1038252,MCG +02-31-025,PGC 038273,SDSS J120512.50+103825.2,SDSS J120512.51+103825.3;;; -IC2992;G;12:05:15.83;+30:51:20.3;UMa;0.63;0.52;161;14.80;;13.21;12.63;12.44;22.52;S?;;;;;;;;2MASX J12051584+3051194,MCG +05-29-008,PGC 038277,SDSS J120515.83+305120.2,SDSS J120515.83+305120.3;;; -IC2993;G;12:05:38.33;+32:49:19.9;Com;0.35;0.31;6;16.01;;12.66;12.05;11.37;;E;;;;;;;;2MASX J12053836+3249203,PGC 3088758,SDSS J120538.33+324919.9;;;B-Mag taken from LEDA. -IC2994;G;12:05:27.87;+12:42:10.4;Vir;0.47;0.39;62;15.60;;13.64;12.84;12.78;22.75;Sc;;;;;;;;2MASX J12052789+1242105,PGC 038291,SDSS J120527.86+124210.4,SDSS J120527.87+124210.4;;; -IC2995;G;12:05:46.91;-27:56:24.5;Hya;3.37;0.85;114;13.03;;10.25;9.87;9.32;23.46;SBc;;;;;;;;2MASX J12054690-2756244,ESO 440-050,ESO-LV 440-0500,IRAS 12032-2739,MCG -05-29-008,PGC 038330,UGCA 268;;; -IC2996;G;12:05:48.63;-29:58:18.9;Hya;1.78;0.44;23;14.27;;11.91;11.21;11.05;23.34;Sb;;;;;;;;2MASX J12054863-2958188,ESO 440-051,ESO-LV 440-0510,IRAS 12032-2941,MCG -05-29-009,PGC 038334;;; -IC2997;Other;12:05:44.47;+20:16:51.1;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2998;Other;12:05:55.24;+20:45:12.1;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC2999;G;12:05:57.54;+31:20:54.6;Com;0.67;0.26;51;15.60;;13.16;12.40;12.13;22.93;Sc;;;;;;;;2MASX J12055752+3120543,PGC 038352,SDSS J120557.53+312054.5,SDSS J120557.54+312054.6;;; -IC3000;Other;12:06:08.55;-29:40:24.2;Hya;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3001;G;12:06:16.81;+33:31:33.1;CVn;0.73;0.37;73;15.70;;12.12;11.41;11.28;23.09;SBbc;;;;;;;;2MASX J12061679+3331332,MCG +06-27-007,PGC 038379,SDSS J120616.80+333133.1,SDSS J120616.81+333133.1;;; -IC3002;G;12:07:04.19;+33:22:58.2;Com;0.61;0.47;86;15.60;;13.52;13.06;12.59;23.26;Sc;;;;;;;;2MASX J12070421+3322583,MCG +06-27-010,PGC 038443,SDSS J120704.18+332258.1,SDSS J120704.19+332258.2;;; -IC3003;G;12:07:32.62;+32:48:46.8;Com;0.80;0.58;145;15.00;;11.78;11.02;10.87;23.20;S0-a;;;;;;;;2MASX J12073262+3248471,MCG +06-27-013,PGC 038490,SDSS J120732.62+324846.7,SDSS J120732.63+324846.8;;; -IC3004;G;12:07:10.24;+13:14:51.1;Vir;0.61;0.40;24;15.60;;;;;23.58;SBc;;;;;;;;MCG +02-31-030,PGC 038457,SDSS J120710.23+131451.0,SDSS J120710.24+131451.0,SDSS J120710.24+131451.1;;; -IC3005;G;12:07:14.17;-30:01:28.7;Hya;2.42;0.66;160;13.80;;11.07;10.30;9.97;23.58;SBc;;;;;;;;2MASX J12071415-3001287,ESO 441-002,ESO-LV 441-0020,IRAS 12046-2944,MCG -05-29-018,PGC 038464;;; -IC3006;Other;12:07:24.34;+12:59:36.2;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; probably a defect on the original Harvard plate."; -IC3007;G;12:07:30.78;+31:20:53.2;Com;0.69;0.42;75;15.50;;12.51;11.60;11.49;23.67;E;;;;;;;;2MASX J12073077+3120531,PGC 038486,SDSS J120730.78+312053.1,SDSS J120730.78+312053.2;;; -IC3008;G;12:07:51.80;+13:34:38.3;Com;0.93;0.51;22;15.00;;12.48;11.94;11.71;23.03;Sb;;;;;;;;MCG +02-31-031,PGC 038512;;; -IC3009;Other;12:08:00.11;+12:38:47.3;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3010;G;12:07:57.41;-30:20:22.1;Hya;2.09;1.91;84;13.22;;10.15;9.46;9.20;23.55;S0-a;;;;;;;;2MASX J12075742-3020222,ESO 441-006,ESO-LV 441-0060,MCG -05-29-020,PGC 038511;;; -IC3011;Dup;12:08:09.62;+10:22:44.0;Vir;;;;;;;;;;;;;;;4119;;;;;; -IC3012;G;12:08:23.94;+11:10:35.8;Vir;0.59;0.26;46;15.40;;12.73;12.10;11.74;23.15;Sa;;;;;;;;2MASX J12082392+1110360,PGC 038546,SDSS J120823.91+111035.7,SDSS J120823.93+111035.7,SDSS J120823.94+111035.7;;; -IC3013;G;12:08:25.58;+10:01:00.0;Vir;0.58;0.41;159;15.30;;14.40;13.74;13.30;22.92;Sc;;;;;;;;2MASX J12082559+1001000,MCG +02-31-037,PGC 038547,SDSS J120825.57+100100.0,SDSS J120825.58+100100.0;;; -IC3014;G;12:08:37.00;+38:49:54.4;CVn;0.82;0.58;20;14.40;;11.85;11.14;10.85;22.66;Sb;;;;;;;;2MASX J12083696+3849543,MCG +07-25-028a,PGC 038562,SDSS J120837.00+384954.3,UGC 07119;;; -IC3015;G;12:09:00.28;-31:31:11.6;Hya;0.72;0.23;164;13.15;;9.78;9.12;8.81;20.64;Sbc;;;;;;;;2MASX J12090026-3131114,ESO 441-009,ESO-LV 441-0090,IRAS 12064-3114,MCG -05-29-023,PGC 038588;;; -IC3016;G;12:09:18.54;+11:25:48.8;Vir;0.49;0.45;16;15.60;;13.71;13.08;12.82;22.42;SBbc;;;;;;;;2MASX J12091849+1125488,PGC 038620,SDSS J120918.53+112548.7,SDSS J120918.54+112548.7,SDSS J120918.54+112548.8;;; -IC3017;G;12:09:22.83;+13:37:05.4;Com;0.60;0.35;50;16.44;;13.81;13.21;12.84;23.75;SBbc;;;;;;;;2MASX J12092282+1337050,PGC 1435797,SDSS J120922.82+133705.3,SDSS J120922.83+133705.4;;;B-Mag taken from LEDA. -IC3018;G;12:09:24.96;+13:34:28.0;Com;0.66;0.25;176;15.30;;13.58;12.92;12.64;23.16;Sab;;;;;;;;2MASX J12092495+1334290,LEDA 1434085,PGC 038627,SDSS J120924.95+133427.9,SDSS J120924.96+133428.0;;Often mistakenly called IC 3017.; -IC3019;G;12:09:22.26;+13:59:32.7;Com;1.26;0.99;130;15.00;;;;;23.34;E;;;;;;;;MCG +02-31-038,PGC 038624,SDSS J120922.25+135932.7,SDSS J120922.26+135932.7,UGC 07136;;; -IC3020;G;12:09:27.22;+14:13:28.2;Com;0.36;0.28;77;16.42;;13.14;12.56;11.99;23.21;E;;;;;;;;2MASX J12092723+1413280,LEDA 1452566,SDSS J120927.22+141328.1,SDSS J120927.22+141328.2;;;B-Mag taken from LEDA. -IC3021;G;12:09:54.57;+13:02:59.9;Vir;1.29;0.81;178;15.40;;;;;24.41;SABm;;;;;;;;PGC 038684,SDSS J120954.57+130259.9,UGC 07149;;; -IC3022;G;12:10:02.38;+38:44:23.9;CVn;0.20;0.20;179;14.60;;11.44;10.74;10.51;;E;;;;;;;;2MASX J12100235+3844243,MCG +07-25-039,PGC 038694,SDSS J121002.37+384423.8,SDSS J121002.37+384423.9,SDSS J121002.38+384423.9;;; -IC3023;G;12:10:01.75;+14:22:00.7;Com;1.04;0.64;138;16.00;;;;;24.31;I;;;;;;;;MCG +03-31-051,PGC 038692,SDSS J121001.74+142200.7,SDSS J121001.75+142200.7,UGC 07150;;; -IC3024;G;12:10:11.93;+12:19:32.4;Vir;0.90;0.29;168;15.10;;12.50;11.79;11.46;22.92;Sab;;;;;;;;2MASX J12101195+1219323,IRAS 12076+1236,MCG +02-31-039,PGC 038709,SDSS J121011.93+121932.3,SDSS J121011.94+121932.4,UGC 07161;;; -IC3025;G;12:10:23.09;+10:11:18.8;Vir;0.73;0.43;102;15.30;;13.38;12.84;12.42;22.97;E-S0;;;;;;;;2MASX J12102318+1011186,MCG +02-31-040,PGC 038726,SDSS J121023.08+101118.7,SDSS J121023.09+101118.7,SDSS J121023.09+101118.8;;; -IC3026;Other;12:10:34.30;-29:55:23.6;Hya;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3027;Other;12:10:30.07;+14:11:36.7;Com;;;;;;;;;;;;;;;;;;;;This is a defect on the original Harvard plate.; -IC3028;G;12:10:35.69;+11:45:38.9;Vir;0.55;0.31;152;14.90;;13.54;12.74;12.57;23.12;S0;;;;;;;;2MASX J12103572+1145386,PGC 038747,SDSS J121035.68+114538.9,SDSS J121035.69+114538.9;;; -IC3029;G;12:10:41.86;+13:19:52.6;Vir;1.26;0.43;30;15.00;;12.44;11.83;11.47;23.25;SBc;;;;;;;;2MASX J12104186+1319525,MCG +02-31-041 NED01,PGC 038755,SDSS J121041.85+131952.5,SDSS J121041.86+131952.6,UGC 07171;;; -IC3030;Other;12:11:06.03;+14:08:36.8;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3031;G;12:11:04.18;+13:18:30.4;Vir;0.61;0.22;31;16.99;;13.99;13.37;13.05;24.07;Sbc;;;;;;;;2MASX J12110415+1318301,LEDA 092941,SDSS J121104.17+131830.4,SDSS J121104.18+131830.4;;;B-Mag taken from LEDA. -IC3032;G;12:11:07.76;+14:16:29.3;Com;0.59;0.52;40;15.30;;12.82;12.34;12.17;22.86;E-S0;;;;;;;;2MASX J12110776+1416301,MCG +03-31-059,PGC 038800,SDSS J121107.75+141629.3,SDSS J121107.76+141629.3;;; -IC3033;G;12:11:09.95;+13:35:15.0;Com;1.03;0.47;3;14.92;;;;;23.20;Sd;;;;;;;;MCG +02-31-043,PGC 038803,SDSS J121109.95+133515.0,UGC 07181;;; -IC3034;G;12:11:47.80;+14:12:04.1;Com;0.74;0.23;150;16.23;;13.14;12.21;12.11;23.48;Sbc;;;;;;;;2MASX J12114782+1412036,LEDA 1451880,SDSS J121147.80+141204.1;;;B-Mag taken from LEDA. -IC3035;Dup;12:12:11.80;+13:14:47.5;Vir;;;;;;;;;;;;;;;4165;;;;;; -IC3036;G;12:12:15.11;+12:29:18.2;Vir;0.88;0.47;165;15.30;;;;;22.70;SABm;;;;;;;;PGC 038888,UGC 07200;;; -IC3037;G;12:12:20.48;+09:59:11.2;Vir;0.48;0.44;40;15.50;;14.22;13.29;13.12;22.42;Sbc;;;;;;;;2MASX J12122046+0959110,PGC 038894,SDSS J121220.47+095911.1,SDSS J121220.47+095911.2,SDSS J121220.48+095911.1,SDSS J121220.48+095911.2;;; -IC3038;G;12:12:32.61;+11:21:10.2;Vir;0.41;0.30;106;15.70;;13.72;13.03;12.45;21.99;Sab;;;;;;;;2MASX J12123263+1121101,PGC 038920,SDSS J121232.60+112110.1,SDSS J121232.61+112110.2;;; -IC3039;G;12:12:32.57;+12:18:35.6;Vir;0.91;0.37;22;15.20;;12.97;12.55;12.24;22.94;SBbc;;;;;;;;2MASX J12123256+1218354,MCG +02-31-048,PGC 038919,SDSS J121232.57+121835.5;;; -IC3040;G;12:12:34.53;+11:04:30.1;Vir;0.77;0.69;171;15.60;;;;;23.37;S?;;;;;;;;MCG +02-31-049,PGC 038922,SDSS J121234.53+110430.1;;; -IC3041;G;12:12:42.66;+12:45:46.2;Vir;0.62;0.17;60;16.96;;;;;23.50;Sd;;;;;;;;PGC 1415716,SDSS J121242.66+124546.2;;;B-Mag taken from LEDA. -IC3042;Dup;12:12:46.45;+10:51:57.5;Vir;;;;;;;;;;;;;;;4178;;;;;; -IC3043;G;12:12:47.18;+10:00:34.8;Vir;0.93;0.22;170;16.60;;13.97;13.10;13.05;24.41;Sab;;;;;;;;2MASX J12124717+1000345,SDSS J121247.17+100034.8,SDSS J121247.18+100034.8;;;B-Mag taken from LEDA. -IC3044;G;12:12:48.52;+13:58:35.3;Com;1.26;0.50;70;14.70;;;;;22.74;Sc;;;;;;;;MCG +02-31-051,PGC 038945,UGC 07216;;; -IC3045;Other;12:12:59.67;+12:46:46.2;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3046;G;12:13:07.87;+12:55:05.6;Vir;1.34;0.29;132;15.29;;12.33;11.61;11.30;23.53;Sbc;;;;;;;;2MASX J12130788+1255053,MCG +02-31-052,PGC 038977,SDSS J121307.86+125505.5,SDSS J121307.87+125505.6,UGC 07220;;; -IC3047;G;12:13:14.63;+12:59:51.6;Vir;0.58;0.35;37;16.54;;14.71;14.03;13.92;23.91;Sbc;;;;;;;;2MASX J12131463+1259513,PGC 1420536,SDSS J121314.63+125951.5,SDSS J121314.63+125951.6;;;B-Mag taken from LEDA. -IC3048;*;12:13:21.44;+13:04:08.5;Vir;;;;;;;;;;;;;;;;;;;;; -IC3049;G;12:13:33.70;+14:28:49.0;Com;0.90;0.60;0;15.70;;;;;23.82;Sm;;;;;;;;PGC 039009,UGC 07227;;; -IC3050;Dup;12:13:47.27;+13:25:29.3;Com;;;;;;;;;;;;;;;4189;;;;;; -IC3051;Dup;12:13:53.59;+13:10:22.3;Vir;;;;;;;;;;;;;;;4193;;;;;; -IC3052;G;12:13:48.27;+12:41:26.0;Vir;0.49;0.33;131;16.30;;;;;23.99;I;;;;;;;;PGC 039031,SDSS J121348.27+124125.9,SDSS J121348.27+124126.0;;; -IC3053;G;12:13:51.93;+14:13:22.7;Com;0.56;0.35;4;15.70;;13.41;13.03;12.42;22.49;Sab;;;;;;;;2MASX J12135191+1413224,PGC 039038,SDSS J121351.93+141322.6,SDSS J121351.93+141322.7;;; -IC3054;G;12:14:14.43;+13:32:34.6;Com;0.68;0.54;158;16.33;;;;;24.34;E;;;;;;;;PGC 039080,SDSS J121414.42+133234.5,SDSS J121414.42+133234.6,SDSS J121414.43+133234.6;;;B-Mag taken from LEDA. -IC3055;GTrpl;12:14:22.30;+12:05:29.0;Vir;0.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3055 NED01;G;12:14:21.87;+12:05:26.0;Vir;0.52;0.26;61;17.47;;;;;24.47;Sa;;;;;;;;2MASX J12142188+1205256,SDSS J121421.86+120526.0,SDSS J121421.87+120526.0;;;B-Mag taken from LEDA -IC3055 NED02;G;12:14:22.11;+12:05:30.8;Vir;;;;;;;;;;;;;;;;;;SDSS J121422.10+120530.8;;;No data available in LEDA -IC3055 NED03;G;12:14:22.61;+12:05:29.9;Vir;0.42;0.29;69;16.46;;;;;23.06;Sbc;;;;;;;;2MASX J12142260+1205292,PGC 1403639,SDSS J121422.61+120529.9;;;B-Mag taken from LEDA. -IC3056;G;12:14:36.94;+12:48:42.7;Vir;1.30;0.50;62;15.43;14.73;;;;24.00;IAB;;;;;;;;MCG +02-31-056,PGC 039113,SDSS J121436.93+124842.6,SDSS J121436.94+124842.7,UGC 07249;;; -IC3057;Other;12:15:02.67;-44:28:22.7;Cen;;;;;;;;;;;;;;;;;;;;"Nothing here; probably a defect on the original Harvard plate."; -IC3058;G;12:14:47.45;+14:05:43.8;Com;0.54;0.35;127;16.29;;14.02;13.25;12.63;23.32;Scd;;;;;;;;PGC 1449108,SDSS J121447.45+140543.8;;;B-Mag taken from LEDA. -IC3059;G;12:14:55.02;+13:27:37.9;Com;1.69;1.39;3;14.70;14.19;;;;24.48;I;;;;;;;;MCG +02-31-062,PGC 039142,UGC 07254;;; -IC3060;G;12:15:02.09;+12:32:49.6;Vir;0.72;0.53;178;15.10;;12.61;11.88;11.69;22.69;Sab;;;;;;;;2MASX J12150210+1232493,MCG +02-31-061,PGC 039147,SDSS J121502.08+123249.5,SDSS J121502.08+123249.6;;; -IC3061;G;12:15:04.44;+14:01:44.3;Com;2.22;0.40;120;14.90;;11.59;10.87;10.64;23.49;SBc;;;;;;;;2MASX J12150451+1401443,MCG +02-31-063,PGC 039152,SDSS J121504.43+140144.2,SDSS J121504.44+140144.3,UGC 07255;;; -IC3062;G;12:15:05.37;+13:35:41.1;Com;0.81;0.67;175;14.90;;12.36;11.69;11.31;22.75;Sc;;;;;;;;2MASX J12150536+1335413,MCG +02-31-065,PGC 039156,SDSS J121505.36+133541.0,SDSS J121505.37+133541.0,SDSS J121505.37+133541.1;;; -IC3063;G;12:15:06.73;+12:01:00.2;Vir;0.98;0.49;18;14.90;;12.06;11.37;11.31;23.16;Sa;;;;;;;;MCG +02-31-064,PGC 039160,SDSS J121506.72+120100.2,SDSS J121506.73+120100.2,UGC 07259;;; -IC3064;Dup;12:15:16.81;+13:01:26.3;Vir;;;;;;;;;;;;;;;4206;;;;;; -IC3065;G;12:15:12.56;+14:25:58.4;Com;1.24;0.88;179;14.70;;11.79;11.23;10.95;23.59;S0;;;;;;;;2MASX J12151254+1425582,MCG +03-31-082,PGC 039173,SDSS J121512.56+142558.3,SDSS J121512.56+142558.4;;; -IC3066;G;12:15:16.58;+13:28:23.3;Com;0.97;0.32;138;15.58;;13.71;13.54;13.18;23.51;Sc;;;;;;;;2MASX J12151612+1328292,MCG +02-31-068,PGC 039181,SDSS J121516.58+132822.9,UGC 07262;;; -IC3067;Dup;12:15:15.89;+23:57:29.4;Com;;;;;;;;;;;;;;;;0772;;;;; -IC3068;G;12:15:23.20;+11:30:39.2;Vir;0.46;0.21;44;16.52;;;;;22.90;SBcd;;;;;;;;PGC 1394706,SDSS J121523.20+113039.1,SDSS J121523.21+113039.2;;;B-Mag taken from LEDA. -IC3069;G;12:15:19.87;+10:09:38.9;Vir;0.50;0.21;111;16.58;;;;;23.08;Sc;;;;;;;;PGC 1375482,SDSS J121519.87+100938.9;;;B-Mag taken from LEDA. -IC3070;*;12:15:24.67;+13:02:22.1;Vir;;;;;;;;;;;;;;;;;;SDSS J121524.67+130222.1;;; -IC3071;*;12:15:31.86;+09:32:44.0;Vir;;;;;;;;;;;;;;;;;;SDSS J121531.85+093243.9;;; -IC3072;*;12:15:38.13;+09:33:20.3;Vir;;;;;;;;;;;;;;;;;;SDSS J121538.13+093320.2;;; -IC3073;G;12:15:35.60;+13:37:09.0;Com;0.88;0.67;103;15.19;;;;;23.37;I;;;;;;;;PGC 039215,SDSS J121535.60+133709.0,UGC 07274;;; -IC3074;G;12:15:46.19;+10:41:57.1;Vir;0.34;0.29;157;15.10;;;;;21.07;SBd;;;;;;;;MCG +02-31-071,PGC 039233,SDSS J121546.00+104203.3,SDSS J121546.19+104157.1,UGC 07279;;; -IC3075;G;12:15:55.09;+23:35:44.0;Com;0.93;0.55;62;15.10;;11.80;11.13;11.01;23.37;Sa;;;;;;;;2MASX J12155507+2335438,MCG +04-29-056,PGC 039240,SDSS J121555.08+233543.9;;; -IC3076;*;12:16:03.98;+09:04:44.2;Vir;;;;;;;;;;;;;;;;;;SDSS J121603.98+090444.2;;; -IC3077;G;12:15:56.34;+14:25:58.9;Com;1.07;0.73;179;15.40;;13.44;12.76;12.69;23.17;Sc;;;;;;;;MCG +03-31-085,PGC 039256,SDSS J121556.33+142558.9,SDSS J121556.34+142558.9,UGC 07285;;; -IC3078;G;12:16:00.04;+12:41:14.3;Vir;0.58;0.50;31;18.03;17.17;12.58;11.92;11.53;22.36;Sb;;;;;;;;2MASX J12160000+1241138,MCG +02-31-073,PGC 039263,SDSS J121600.04+124114.3;;; -IC3079;G;12:16:04.13;+11:32:05.5;Vir;0.71;0.44;22;15.50;;12.68;12.01;11.95;23.16;S0-a;;;;;;;;2MASX J12160411+1132050,PGC 039273,SDSS J121604.12+113205.4,SDSS J121604.13+113205.5;;; -IC3080;G;12:16:02.67;+14:11:21.8;Com;0.73;0.60;55;15.40;;12.31;11.51;11.53;23.01;SBa;;;;;;;;2MASX J12160268+1411218,LEDA 4103623,PGC 039269,SDSS J121602.66+141121.8,SDSS J121602.67+141121.8;;; -IC3081;G;12:16:09.06;+12:41:28.7;Vir;0.77;0.40;86;15.60;;13.38;12.64;12.61;23.77;E-S0;;;;;;;;2MASX J12160902+1241288,MCG +02-31-074,PGC 039282,SDSS J121609.06+124128.6,SDSS J121609.06+124128.7;;; -IC3082;G;12:16:12.10;+23:50:31.5;Com;0.67;0.19;8;15.91;;12.76;11.95;11.86;23.71;S0-a;;;;;;;;2MASX J12161209+2350319,PGC 1694700,SDSS J121612.09+235031.5,SDSS J121612.10+235031.5;;;B-Mag taken from LEDA. -IC3083;G;12:16:21.24;+12:31:40.0;Vir;0.47;0.40;21;17.14;;;;;24.09;Sb;;;;;;;;2MASX J12162126+1231404,PGC 1411150,SDSS J121621.23+123140.0,SDSS J121621.24+123140.0;;The IC identification is not certain.;B-Mag taken from LEDA. -IC3084;G;12:16:23.46;+23:55:04.4;Com;0.45;0.34;0;15.70;;;;;22.67;;;;;;;;;MCG +04-29-057,PGC 039301;;; -IC3085;*;12:16:26.01;+09:28:08.4;Vir;;;;;;;;;;;;;;;;;;SDSS J121626.00+092808.4;;; -IC3086;**;12:16:27.74;+09:00:33.0;Vir;;;;;;;;;;;;;;;;;;;;; -IC3087;**;12:16:26.50;+13:17:16.0;Vir;;;;;;;;;;;;;;;;;;;;; -IC3088;*;12:16:28.36;+09:27:31.7;Vir;;;;;;;;;;;;;;;;;;SDSS J121628.36+092731.6;;; -IC3089;G;12:16:29.70;+23:49:39.8;Com;0.73;0.73;58;15.70;;12.45;11.76;11.56;23.88;E;;;;;;;;2MASX J12162968+2349398,MCG +04-29-058,PGC 039302,SDSS J121629.69+234939.8;;; -IC3090;**;12:16:31.61;+09:26:22.0;Vir;;;;;;;;;;;;;;;;;;;;; -IC3091;G;12:16:29.17;+14:00:44.5;Com;1.08;0.50;125;14.70;;11.72;10.97;10.74;23.24;S0-a;;;;;;;;2MASX J12162914+1400444,MCG +02-31-077,PGC 039318,SDSS J121629.16+140044.4,SDSS J121629.17+140044.4,SDSS J121629.17+140044.5;;; -IC3092;G;12:16:32.29;+10:02:47.1;Vir;0.37;0.26;159;16.38;;;;;22.96;Sb;;;;;;;;2MASX J12163231+1002466,PGC 1373788,SDSS J121632.28+100247.1,SDSS J121632.29+100247.1;;;B-Mag taken from LEDA. -IC3093;G;12:16:42.36;+14:16:40.1;Com;0.37;0.26;177;15.40;;13.54;12.90;12.71;21.11;Sc;;;;;;;;PGC 039342,SDSS J121642.36+141640.1;;; -IC3094;G;12:16:56.01;+13:37:31.5;Com;0.54;0.46;108;14.10;;12.14;11.45;11.25;21.83;Sab;;;;;;;;2MASX J12165600+1337310,MCG +02-31-078,PGC 039362,SDSS J121656.00+133731.4,SDSS J121656.00+133731.5,SDSS J121656.01+133731.5,UGC 07305;;; -IC3095;G;12:16:55.54;+23:57:28.5;Com;0.53;0.36;77;15.60;;13.38;13.22;12.81;22.82;Sc;;;;;;;;2MASX J12165551+2357285,MCG +04-29-059,PGC 039357,SDSS J121655.54+235728.4;;; -IC3096;G;12:16:52.36;+14:30:52.5;Com;1.11;0.37;96;15.40;;12.87;12.10;12.01;23.73;Sa;;;;;;;;MCG +03-31-090,PGC 039358,SDSS J121652.36+143052.5;;; -IC3097;G;12:17:01.11;+09:24:27.2;Vir;0.79;0.53;26;15.30;;13.67;13.33;13.16;23.61;E;;;;;;;;2MASX J12170107+0924275,PGC 039375,SDSS J121701.10+092427.1,SDSS J121701.10+092427.2,SDSS J121701.11+092427.2;;; -IC3098;Dup;12:17:09.88;+07:11:29.7;Vir;;;;;;;;;;;;;;;4235;;;;;; -IC3099;G;12:17:09.27;+12:27:14.5;Vir;1.85;0.33;174;15.10;;12.46;11.57;11.81;23.61;Sc;;;;;;;;MCG +02-31-079,PGC 039390,SDSS J121709.27+122714.4,SDSS J121709.27+122714.5,UGC 07313;;; -IC3100;G;12:17:05.55;+12:17:23.4;Vir;1.41;0.44;58;15.30;;13.03;12.51;12.38;24.49;S0;;;;;;;;PGC 039381,UGC 07312;;; -IC3101;G;12:17:19.65;+11:56:36.5;Vir;0.63;0.49;37;15.50;;13.83;13.26;12.92;23.59;E;;;;;;;;2MASX J12171966+1156369,PGC 039405,SDSS J121719.65+115636.4,SDSS J121719.65+115636.5;;; -IC3102;Dup;12:17:25.81;+06:41:24.3;Vir;;;;;;;;;;;;;;;4223;;;;;; -IC3103;*;12:17:28.45;+09:21:37.6;Vir;;;;15.29;14.56;;;;;;;;;;;;;SDSS J121728.45+092137.6,UCAC2 35031960,UCAC3 199-127258,UCAC4 497-057518;;; -IC3104;G;12:18:46.06;-79:43:33.8;Cha;2.40;1.32;42;13.66;;;;;23.74;IB;;;;;;;;2MASX J12184412-7943165,PGC 039573;;The diameter in the AM catalogue is incorrect.;B-Mag taken from LEDA. -IC3105;G;12:17:33.75;+12:23:17.2;Vir;1.55;0.31;28;15.00;;;;;23.07;I;;;;;;;;MCG +02-31-080,PGC 039431,SDSS J121733.75+122317.1,SDSS J121733.75+122317.2,UGC 07326;;; -IC3106;*;12:17:45.81;+09:36:47.3;Vir;;;;;;;;;;;;;;;;;;SDSS J121745.80+093647.2;;; -IC3107;G;12:17:46.93;+10:50:40.7;Vir;1.25;0.55;130;14.50;;11.70;10.96;10.71;22.91;Sbc;;;;;;;;2MASX J12174695+1050411,MCG +02-31-082,PGC 039458,SDSS J121746.92+105040.6,SDSS J121746.92+105040.7,SDSS J121746.93+105040.6,SDSS J121746.93+105040.7,SDSS J121746.94+105040.6,UGC 07330;;; -IC3108;G;12:17:42.70;+13:22:47.7;Vir;0.77;0.21;93;14.76;;;;;22.26;Sab;;;;;;;;2MASX J12174270+1322477,PGC 039449,SDSS J121742.69+132247.7,SDSS J121742.70+132247.6,SDSS J121742.70+132247.7;;;B-Mag taken from LEDA -IC3109;G;12:17:44.11;+13:10:15.7;Vir;0.67;0.51;160;15.30;;12.86;12.19;11.91;22.54;Sbc;;;;;;;;2MASX J12174409+1310157,MCG +02-31-081,PGC 039451,SDSS J121744.10+131015.7;;; -IC3110;G;12:17:44.84;+37:23:58.9;CVn;0.27;0.22;44;16.39;;13.91;13.38;12.88;;Sb;;;;;;;;2MASX J12174479+3723584,PGC 3088320,SDSS J121744.83+372358.9,SDSS J121744.84+372358.9;;;B-Mag taken from LEDA. -IC3111;G;12:17:50.81;+08:25:49.0;Vir;0.62;0.30;18;15.50;;12.74;12.09;11.71;22.31;Sab;;;;;;;;2MASX J12175087+0825491,PGC 039464,SDSS J121750.80+082548.9,SDSS J121750.81+082549.0;;; -IC3112;G;12:17:48.36;+26:01:50.6;Com;1.14;0.57;174;15.30;;11.90;11.10;10.84;23.50;Sb;;;;;;;;2MASX J12174831+2601507,MCG +04-29-061,PGC 039450,SDSS J121748.35+260150.5;;; -IC3113;Dup;12:17:58.12;+07:11:09.3;Vir;;;;;;;;;;;;;;;4246;;;;;; -IC3114;*;12:17:56.75;+09:08:07.4;Vir;;;;;;;;;;;;;;;;;;SDSS J121756.75+090807.4;;; -IC3115;Dup;12:17:59.90;+06:39:15.1;Vir;;;;;;;;;;;;;;;4241;;;;;; -IC3116;G;12:17:57.17;+25:04:35.5;Com;0.45;0.41;19;16.50;;14.61;13.93;13.85;23.17;Sc;;;;;;;;2MASX J12175727+2504350,PGC 089574,SDSS J121757.16+250435.4;;; -IC3117;**;12:18:04.66;+09:04:35.5;Vir;;;;;;;;;;;;;;;;;;;;; -IC3118;G;12:18:11.05;+09:29:59.3;Vir;1.29;0.52;171;15.20;;;;;23.22;I;;;;;;;;MCG +02-31-083,PGC 039503,UGC 07339;;; -IC3119;G;12:18:08.48;+24:41:17.9;Com;0.57;0.51;146;15.40;;12.98;12.34;11.93;22.82;Sbc;;;;;;;;2MASX J12180846+2441180,PGC 039490,SDSS J121808.47+244117.9;;; -IC3120;G;12:18:15.35;+13:44:56.9;Com;0.64;0.54;134;15.30;;15.05;14.39;14.20;23.57;E-S0;;;;;;;;2MASX J12181523+1344570,PGC 039513,SDSS J121815.34+134456.9;;; -IC3121;GPair;12:18:17.50;+13:15:26.0;Vir;0.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3121 NED01;G;12:18:17.69;+13:15:23.2;Vir;0.53;0.27;129;18.10;;13.43;13.06;12.53;23.73;Sab;;;;;;;;2MASX J12181772+1315230,PGC 039512,SDSS J121817.69+131523.1,SDSS J121817.69+131523.2;;; -IC3121 NED02;G;12:18:17.36;+13:15:29.8;Vir;0.49;0.43;158;17.50;;;;;24.55;Sb;;;;;;;;PGC 039508,SDSS J121817.36+131529.7;;;B-Mag taken from LEDA. -IC3122;G;12:18:21.42;+25:13:00.5;Com;1.27;0.57;150;14.70;;11.86;11.14;11.01;23.24;Sb;;;;;;;;2MASX J12182145+2513001,MCG +04-29-062,PGC 039519,SDSS J121821.42+251300.3,SDSS J121821.42+251300.4,UGC 07341;;; -IC3123;*;12:18:27.59;+08:03:53.7;Vir;;;;8.30;7.26;5.56;5.13;4.93;;;;;;;;;;BD +08 2586,HD 107035,HIP 060013,SDSS J121827.59+080353.7,TYC 873-87-1;;; -IC3124;*;12:18:27.53;+09:35:18.2;Vir;;;;;;;;;;;;;;;;;;SDSS J121827.53+093518.2;;; -IC3125;*;12:18:25.47;+24:21:54.4;Com;;;;;;;;;;;;;;;;;;SDSS J121825.46+242154.3;;; -IC3126;G;12:18:37.16;+13:48:54.6;Com;0.50;0.38;26;16.18;;;;;23.65;Sc;;;;;;;;2MASX J12183713+1348540,PGC 1441312,SDSS J121837.15+134854.6,SDSS J121837.16+134854.6;;;B-Mag taken from LEDA. -IC3127;G;12:18:35.23;+11:52:13.5;Vir;0.52;0.45;24;15.70;;14.17;13.40;12.89;22.58;Sc;;;;;;;;2MASX J12183518+1152125,MCG +02-31-084,PGC 039546,SDSS J121835.23+115213.3,SDSS J121835.23+115213.4,SDSS J121835.23+115213.5;;; -IC3128;GTrpl;12:18:40.20;+11:44:01.0;Vir;1.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3128A;G;12:18:41.87;+11:43:54.6;Vir;0.65;0.34;156;15.20;;13.70;12.78;12.64;22.25;Sc;;;;;;;;2MASX J12184186+1143555,IRAS 12161+1200,MCG +02-31-085,PGC 039562;;ALFALFA source may include the galaxy VIII Zw 180 NOTES03.; -IC3128B;G;12:18:38.56;+11:44:06.1;Vir;0.33;0.17;179;17.60;;;;;23.98;Sb;;;;;;;;MCG +02-31-086,PGC 039557,SDSS J121838.55+114406.0,SDSS J121838.56+114406.1;;; -IC3129;*;12:18:44.96;+09:35:26.4;Vir;;;;;;;;;;;;;;;;;;SDSS J121844.96+093526.3;;; -IC3130;**;12:18:49.60;+08:13:58.7;Vir;;;;;;;;;;;;;;;;;;;;; -IC3131;G;12:18:50.89;+07:51:42.8;Vir;1.00;0.99;50;14.80;;11.63;11.11;11.09;22.86;E-S0;;;;;;3132;;2MASX J12185089+0751425,MCG +01-31-046,PGC 039583;;; -IC3132;Dup;12:18:50.89;+07:51:42.8;Vir;;;;;;;;;;;;;;;;3131;;;;; -IC3133;Other;12:18:54.56;+07:38:22.8;Vir;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -IC3134;G;12:18:56.12;+08:57:41.8;Vir;0.80;0.33;169;15.40;;12.01;11.34;10.99;22.77;S0-a;;;;;;;;2MASX J12185609+0857415,PGC 039593,SDSS J121856.11+085741.7,SDSS J121856.12+085741.7,SDSS J121856.12+085741.8;;; -IC3135;G;12:18:52.58;+27:29:29.4;Com;0.33;0.24;117;16.50;;;;;23.15;Sc;;;;;;;;PGC 089577,SDSS J121852.58+272929.4;;; -IC3136;G;12:18:57.37;+06:11:03.8;Vir;1.22;0.46;33;14.70;;11.91;11.32;10.98;23.27;SBc;;;;;;;;2MASX J12185732+0611035,MCG +01-31-048,PGC 039601,SDSS J121857.36+061103.7,SDSS J121857.37+061103.8,UGC 07349;;; -IC3137;G;12:18:54.67;+12:28:12.2;Vir;0.67;0.17;43;16.50;;14.19;13.53;13.16;23.65;Sc;;;;;;;;2MASX J12185469+1228117,PGC 039580,SDSS J121854.67+122812.2,UGC 07347;;; -IC3138;GPair;12:18:56.20;+12:26:38.0;Vir;0.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3138 NED01;G;12:18:56.16;+12:26:43.0;Vir;0.44;0.32;72;16.53;;;;;23.58;E;;;;;;;;PGC 213972,SDSS J121856.16+122643.0;;;B-Mag taken from LEDA. -IC3138 NED02;G;12:18:56.20;+12:26:31.6;Vir;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC3139;*;12:19:00.76;+09:07:36.4;Vir;;;;;;;;;;;;;;;;;;SDSS J121900.75+090736.4;;; -IC3140;*;12:18:57.88;+27:07:46.1;Com;;;;;;;;;;;;;;;;;;SDSS J121857.88+270746.0;;Possibly a double star?; -IC3141;G;12:18:58.44;+24:11:10.6;Com;0.89;0.51;36;15.70;;12.04;11.23;10.88;23.72;S0-a;;;;;;;;2MASX J12185844+2411105,PGC 039590,SDSS J121858.41+241110.7;;; -IC3142;GPair;12:19:03.50;+13:58:53.0;Com;1.40;;;;;;;;;;;;;;;;;UGC 07355;;;Diameter of the group inferred by the author. -IC3142 NED01;G;12:19:01.98;+13:58:56.8;Com;0.67;0.58;33;15.39;;;;;23.39;E;;;;;;;;MCG +02-31-089,PGC 039610,SDSS J121901.98+135856.8,UGC 07355 NED01;;Component 'b)' in UGC notes.;B-Mag taken from LEDA. -IC3142 NED02;G;12:19:05.15;+13:58:49.9;Com;0.86;0.37;140;15.40;;;;;22.87;IAB;;;;;;;;MCG +02-31-090,PGC 039619,SDSS J121905.38+135848.3,UGC 07355 NED02;;Identified in VCC as bright component of IC 3142. Mult. SDSS entries.; -IC3143;G;12:19:05.39;+27:17:54.3;Com;0.63;0.44;146;15.70;;13.78;13.30;13.08;23.28;Sc;;;;;;;;2MASX J12190540+2717535,PGC 039617,SDSS J121905.39+271754.3;;; -IC3144;G;12:19:09.76;+25:17:49.1;Com;0.38;0.29;29;16.50;;;;;23.16;Sbc;;;;;;;;PGC 089578,SDSS J121909.77+251749.0;;; -IC3145;*;12:19:10.49;+24:17:38.9;Com;;;;;;;;;;;;;;;;;;SDSS J121910.48+241738.9;;; -IC3146;G;12:19:12.50;+25:42:54.1;Com;0.51;0.47;54;16.77;;15.02;14.85;14.51;24.00;Sc;;;;;;;;2MASX J12191254+2542535,LEDA 089579,SDSS J121912.49+254254.0,SDSS J121912.49+254254.1;;;B-Mag taken from LEDA. -IC3147;GPair;12:19:17.90;+12:01:02.0;Vir;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3147 NED01;G;12:19:17.19;+12:00:58.3;Vir;0.66;0.39;74;15.50;;12.67;12.00;11.77;23.63;S?;;;;;;;;MCG +02-31-091,PGC 039644,SDSS J121917.19+120058.3;;; -IC3147 NED02;G;12:19:18.67;+12:01:05.5;Vir;0.51;0.33;71;15.50;;13.54;12.85;12.71;23.52;S0-a;;;;;;;;MCG +02-31-092,PGC 039643,SDSS J121918.67+120105.5;;; -IC3148;G;12:19:21.62;+07:52:13.2;Vir;0.62;0.41;42;15.30;;;;;22.93;SBm;;;;;;;;MCG +01-31-055,PGC 039658,SDSS J121921.62+075213.1;;Multiple SDSS entries describe this source.; -IC3149;G;12:19:24.21;+12:18:05.0;Vir;0.64;0.62;85;15.60;;12.80;12.01;11.61;23.01;S0-a;;;;;;;;MCG +02-31-093,PGC 039664,SDSS J121924.21+121805.0;;; -IC3150;G;12:19:28.49;+07:47:53.6;Vir;0.36;0.23;37;15.50;;;;;21.65;Sbc;;;;;;;;PGC 039673,SDSS J121928.52+074754.7;;; -IC3151;G;12:19:32.88;+09:24:51.2;Vir;0.90;0.39;115;15.10;;12.09;11.37;11.14;22.93;SBa;;;;;;;;2MASX J12193286+0924508,MCG +02-32-002,PGC 039682,SDSS J121932.87+092451.1,SDSS J121932.87+092451.2,SDSS J121932.88+092451.1,SDSS J121932.88+092451.2;;; -IC3152;G;12:19:35.99;-26:08:43.8;Hya;1.66;1.45;41;13.28;;9.99;9.38;9.08;23.30;E-S0;;;;;;;;2MASX J12193599-2608440,ESO 506-001,ESO-LV 506-0010,MCG -04-29-018,PGC 039688;;; -IC3153;G;12:19:36.84;+05:23:52.1;Vir;0.54;0.45;44;15.20;;12.75;12.14;11.85;22.28;SBbc;;;;;;;;2MASX J12193685+0523524,PGC 039693,SDSS J121936.84+052352.1,SDSS J121936.84+052352.2;;; -IC3154;G;12:19:33.99;+25:35:09.3;Com;0.61;0.44;105;15.99;;12.98;12.40;12.23;23.74;E;;;;;;;;2MASX J12193402+2535092,LEDA 3089509,SDSS J121933.98+253509.3,SDSS J121933.99+253509.3;;;B-Mag taken from LEDA. -IC3155;G;12:19:45.31;+06:00:20.7;Vir;1.00;0.46;34;15.00;;11.63;11.07;10.97;23.11;S0;;;;;;;;2MASX J12194529+0600211,MCG +01-32-003,PGC 039708,SDSS J121945.31+060021.1,SDSS J121945.32+060021.2;;; -IC3156;G;12:19:44.14;+09:08:54.9;Vir;0.72;0.49;64;15.00;;13.16;12.94;12.42;22.43;SBcd;;;;;;;;2MASX J12194408+0908548,MCG +02-32-003,PGC 039703,SDSS J121944.14+090854.8,SDSS J121944.14+090854.9;;; -IC3157;G;12:19:47.92;+12:25:19.0;Vir;0.96;0.54;109;15.50;;12.11;11.36;11.04;23.73;S0;;;;;;;;2MASX J12194788+1225191,PGC 039716,SDSS J121947.91+122518.9,SDSS J121947.92+122519.0;;; -IC3158;**;12:19:49.86;+09:17:23.1;Vir;;;;;;;;;;;;;;;;;;;;The IC identification is not certain.; -IC3159;G;12:19:53.21;+11:40:28.1;Vir;0.50;0.35;29;16.50;;;;;23.55;SBc;;;;;;;;PGC 139797,SDSS J121953.20+114028.0,SDSS J121953.20+114028.1,SDSS J121953.21+114028.1;;; -IC3160;*;12:19:59.85;+09:06:06.8;Vir;;;;;;;;;;;;;;;;;;SDSS J121959.85+090606.7;;; -IC3161;*;12:20:01.21;+08:59:56.6;Vir;;;;;;;;;;;;;;;;;;SDSS J122001.20+085956.5;;; -IC3162;*;12:20:03.13;+08:59:49.1;Vir;;;;;;;;;;;;;;;;;;SDSS J122003.13+085949.0;;; -IC3163;**;12:20:05.75;+09:15:20.2;Vir;;;;;;;;;;;;;;;;;;;;The IC identification is very uncertain.; -IC3164;**;12:20:04.89;+24:57:21.3;Com;;;;;;;;;;;;;;;;;;;;; -IC3165;G;12:20:04.77;+27:58:31.2;Com;1.00;0.63;9;14.90;;12.04;11.14;10.91;23.17;Sb;;;;;;;;2MASX J12200478+2758312,MCG +05-29-061,PGC 039749,SDSS J122004.76+275831.1,SDSS J122004.77+275831.2,UGC 07384;;; -IC3166;Other;12:19:54.00;+60:41:39.4;UMa;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3167;G;12:20:18.78;+09:32:43.3;Vir;1.35;0.78;110;15.10;;12.66;11.93;11.93;24.09;S0;;;;;;;;2MASX J12201881+0932411,PGC 039795,SDSS J122018.77+093243.3,SDSS J122018.78+093243.3;;; -IC3168;G;12:20:18.54;+27:55:13.4;Com;0.72;0.43;58;15.70;;12.91;12.20;12.03;23.31;SBbc;;;;;;;;2MASX J12201852+2755132,MCG +05-29-064,PGC 039793,SDSS J122018.54+275513.3,SDSS J122018.54+275513.4;;; -IC3169;G;12:20:21.39;+25:35:58.2;Com;0.48;0.33;136;16.57;;;;;23.80;E;;;;;;;;2MASX J12202133+2535582,SDSS J122021.38+253558.1;;;B-Mag taken from LEDA. -IC3170;G;12:20:26.55;+09:25:27.3;Vir;0.58;0.57;55;15.00;;12.72;12.08;11.60;22.23;Sbc;;;;;;;;2MASX J12202651+0925271,MCG +02-32-007,PGC 039816,SDSS J122026.54+092527.3,SDSS J122026.55+092527.3,SDSS J122026.55+092527.4;;; -IC3171;G;12:20:24.06;+25:33:38.1;Com;0.92;0.68;56;14.80;;11.50;10.76;10.56;23.28;E;;;;;;;;2MASX J12202407+2533382,MCG +04-29-065,PGC 039796,SDSS J122024.05+253338.0;;; -IC3172;G;12:20:24.55;+27:49:07.6;Com;0.68;0.49;6;16.29;;;;;23.97;Sb;;;;;;;;2MASX J12202455+2749072,SDSS J122024.53+274907.6,SDSS J122024.54+274907.6,SDSS J122024.54+274907.7;;;B-Mag taken from LEDA. -IC3173;G;12:20:30.18;+11:20:27.4;Vir;0.72;0.54;85;15.60;;12.48;11.78;11.37;23.22;Sa;;;;;;;;2MASX J12203019+1120269,PGC 039823,SDSS J122030.17+112027.3,SDSS J122030.18+112027.3,SDSS J122030.18+112027.4;;; -IC3174;G;12:20:29.53;+10:14:42.6;Vir;0.63;0.40;149;15.60;;13.25;12.36;12.11;22.74;Sab;;;;;;;;2MASX J12202950+1014419,PGC 039822,SDSS J122029.52+101442.6,SDSS J122029.53+101442.6;;; -IC3175;G;12:20:33.35;+09:51:12.3;Vir;0.83;0.39;53;15.50;;12.35;11.62;11.40;22.86;Sb;;;;;;;;2MASX J12203338+0951119,PGC 039831,SDSS J122033.35+095112.2,SDSS J122033.36+095112.3;;; -IC3176;G;12:20:30.08;+25:30:55.5;Com;0.67;0.26;151;16.33;;;;;24.24;E;;;;;;;;2MASX J12203006+2530553,SDSS J122030.07+253055.4,SDSS J122030.07+253055.5;;;B-Mag taken from LEDA. -IC3177;Other;12:20:34.33;+14:07:39.4;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3178;*;12:20:35.06;+26:10:09.5;Com;;;;;;;;;;;;;;;;;;SDSS J122035.05+261009.4;;; -IC3179;G;12:20:37.73;+26:09:55.4;Com;0.32;0.32;123;16.50;;14.37;13.80;13.38;23.02;Sbc;;;;;;;;2MASX J12203774+2609554,PGC 089585;;; -IC3180;Other;12:20:23.74;+60:41:39.6;UMa;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3181;Dup;12:20:42.09;+29:20:45.2;Com;;;;;;;;;;;;;;;4286;;;;;; -IC3182;**;12:20:47.76;+12:43:48.5;Vir;;;;;;;;;;;;;;;;;;;;; -IC3183;**;12:20:48.87;+06:41:12.2;Vir;;;;;;;;;;;;;;;;;;SDSS J122048.87+064112.1;;; -IC3184;G;12:20:46.80;+24:54:56.1;Com;0.77;0.39;42;15.60;;13.17;12.52;12.18;23.24;Sbc;;;;;;;;2MASX J12204678+2454554,PGC 039847,SDSS J122046.79+245456.0;;; -IC3185;G;12:20:52.68;+25:25:46.9;Com;0.68;0.22;106;15.70;;13.81;13.30;12.89;23.20;Sbc;;;;;;;;2MASX J12205266+2525474,PGC 039874,SDSS J122052.67+252546.8;;; -IC3186;G;12:20:55.88;+24:40:06.9;Com;0.53;0.41;155;15.00;;12.44;11.79;11.48;22.23;Sb;;;;;;;;2MASX J12205567+2440084,MCG +04-29-066,PGC 039875,SDSS J122055.88+244006.8,SDSS J122055.88+244006.9;;; -IC3187;G;12:20:54.68;+11:09:42.5;Vir;0.69;0.42;101;15.60;;13.14;12.86;12.06;23.06;Sbc;;;;;;;;2MASX J12205466+1109429,PGC 039871,SDSS J122054.67+110942.5,SDSS J122054.68+110942.5;;; -IC3188;G;12:20:55.10;+11:00:32.0;Vir;0.77;0.55;54;15.10;;12.61;11.93;11.63;22.75;Sc;;;;;;;;2MASX J12205506+1100319,MCG +02-32-008,PGC 039872,SDSS J122055.09+110032.0;;; -IC3189;G;12:20:56.32;+25:25:35.5;Com;0.60;0.30;111;16.24;;;;;23.34;Sbc;;;;;;;;2MASX J12205628+2525354,PGC 3098279,SDSS J122056.31+252535.4,SDSS J122056.31+252535.5;;;B-Mag taken from LEDA. -IC3190;*;12:21:02.41;+09:34:11.2;Vir;;;;;;;;;;;;;;;;;;SDSS J122102.40+093411.1;;; -IC3191;*;12:21:05.15;+07:42:15.9;Vir;;;;;;;;;;;;;;;;;;SDSS J122105.14+074215.8;;; -IC3192;G;12:21:04.81;+11:45:16.6;Vir;0.58;0.45;170;16.11;;;;;23.75;E;;;;;;;;PGC 039893,SDSS J122104.80+114516.5,SDSS J122104.80+114516.6;;;B-Mag taken from LEDA. -IC3193;G;12:21:01.28;+27:53:55.6;Com;0.98;0.38;132;15.70;;12.78;12.29;12.18;23.60;Sbc;;;;;;;;2MASX J12210131+2753548,MCG +05-29-067,PGC 039870;;; -IC3194;G;12:21:09.00;+25:08:00.6;Com;0.57;0.43;172;16.37;;;;;24.00;E;;;;;;;;2MASX J12210897+2508008,SDSS J122109.00+250800.5;;;B-Mag taken from LEDA. -IC3195;G;12:21:17.43;+25:48:29.8;Com;0.52;0.46;44;16.38;;;;;23.84;E;;;;;;;;2MASX J12211739+2548298,SDSS J122117.42+254829.7;;;B-Mag taken from LEDA. -IC3196;G;12:21:26.63;+11:45:28.0;Vir;0.53;0.41;88;16.43;;13.08;12.53;12.22;23.60;Sbc;;;;;;;;2MASX J12212664+1145279,PGC 165092,SDSS J122126.62+114528.0,SDSS J122126.63+114528.0;;;B-Mag taken from LEDA. -IC3197;*;12:21:25.90;+25:26:38.0;Com;;;;;;;;;;;;;;;;;;SDSS J122125.90+252637.9;;; -IC3198;*;12:21:31.14;+26:21:58.7;Com;;;;;;;;;;;;;;;;;;SDSS J122131.14+262158.7;;; -IC3199;G;12:21:45.60;+10:35:44.3;Vir;1.00;0.52;2;15.40;;11.89;11.23;10.99;23.38;SBab;;;;;;;;2MASX J12214563+1035438,PGC 039983,SDSS J122145.60+103544.2,SDSS J122145.60+103544.3,UGC 07417;;; -IC3200;G;12:21:37.19;+26:45:38.8;Com;0.53;0.39;6;16.46;;;;;23.94;E;;;;;;;;2MASX J12213715+2645385,SDSS J122137.18+264538.7,SDSS J122137.19+264538.8;;;B-Mag taken from LEDA. -IC3201;G;12:21:40.37;+25:43:33.6;Com;0.40;0.25;111;17.05;;13.81;13.05;12.69;23.42;Sc;;;;;;;;2MASX J12214041+2543325,LEDA 3089427,SDSS J122140.37+254333.6;;;B-Mag taken from LEDA. -IC3202;G;12:21:44.33;+27:03:25.6;Com;0.67;0.55;130;16.69;;13.02;12.39;11.85;24.67;E;;;;;;;;2MASX J12214431+2703255,LEDA 3089316,SDSS J122144.32+270325.5,SDSS J122144.32+270325.6,SDSS J122144.33+270325.6;;;B-Mag taken from LEDA. -IC3203;G;12:21:45.63;+25:53:04.8;Com;1.31;0.22;146;15.70;;11.70;10.84;10.53;23.55;Sb;;;;;;;;2MASX J12214567+2553045,MCG +04-29-067,PGC 039984,SDSS J122145.62+255304.7,UGC 07419;;; -IC3204;G;12:21:50.43;+24:14:56.8;Com;0.52;0.30;108;16.50;;14.42;13.56;13.15;23.67;Sbc;;;;;;;;2MASX J12215043+2414565,LEDA 089593,SDSS J122150.42+241456.7,SDSS J122150.43+241456.7;;; -IC3205;G;12:21:50.94;+26:20:27.6;Com;0.62;0.52;113;15.70;;12.09;11.26;11.00;23.40;E;;;;;;;;2MASX J12215094+2620275,PGC 039989,SDSS J122150.93+262027.5,SDSS J122150.94+262027.5,SDSS J122150.94+262027.6;;; -IC3206;G;12:21:51.31;+26:21:48.9;Com;0.53;0.31;106;15.70;;13.93;13.22;12.92;22.95;Sc;;;;;;;;2MASX J12215132+2621485,PGC 039988,SDSS J122151.30+262148.8,SDSS J122151.31+262148.8,SDSS J122151.31+262148.9;;; -IC3207;G;12:21:52.23;+24:21:16.4;Com;0.79;0.31;91;16.37;;;;;24.05;Sab;;;;;;;;2MASX J12215219+2421165,SDSS J122152.22+242116.4,SDSS J122152.23+242116.4;;;B-Mag taken from LEDA. -IC3208;G;12:21:55.58;+11:58:00.6;Vir;0.98;0.40;78;15.96;;;;;23.85;IB;;;;;;;;PGC 040005,SDSS J122155.57+115800.5,SDSS J122155.58+115800.5,SDSS J122155.58+115800.6,UGC 07421;;;B-Mag taken from LEDA. -IC3209;G;12:22:06.15;+11:45:17.0;Vir;1.00;0.36;151;15.30;;12.36;11.65;11.38;22.91;Sc;;;;;;;;2MASX J12220613+1145167,PGC 040038,SDSS J122206.14+114516.9,SDSS J122206.15+114517.0;;; -IC3210;G;12:22:00.98;+28:25:51.9;Com;0.66;0.50;85;15.50;;12.30;11.69;11.34;23.20;S0-a;;;;;;;;2MASX J12220096+2825515,MCG +05-29-070,PGC 039987,SDSS J122200.98+282551.8,SDSS J122200.99+282551.9;;; -IC3211;Dup;12:22:07.32;+08:59:26.0;Vir;;;;;;;;;;;;;;;4307A;;;;;; -IC3212;G;12:22:03.40;+28:11:09.6;Com;0.71;0.65;110;15.70;;12.96;12.55;12.26;23.47;Sc;;;;;;;;2MASX J12220335+2811095,MCG +05-29-071,PGC 040036,SDSS J122203.39+281109.5,SDSS J122203.40+281109.6;;; -IC3213;G;12:22:07.67;+23:52:10.6;Com;0.49;0.28;175;15.70;;12.12;11.34;11.03;;E-S0;;;;;;;;2MASX J12220764+2352106,IRAS 12195+2409,PGC 040042,SDSS J122207.67+235210.6;;; -IC3214;*;12:22:09.11;+27:14:06.3;Com;;;;;;;;;;;;;;;;;;SDSS J122209.11+271406.3;;; -IC3215;G;12:22:10.38;+26:03:07.0;Com;1.27;0.35;93;15.70;;;;;23.76;Sd;;;;;;;;MCG +04-29-068,PGC 040040,SDSS J122210.18+260307.7,UGC 07434;;; -IC3216;G;12:22:11.81;+25:17:12.1;Com;0.52;0.40;104;16.52;;;;;23.68;SBab;;;;;;;;2MASX J12221180+2517121,SDSS J122211.80+251712.0,SDSS J122211.81+251712.0;;;B-Mag taken from LEDA. -IC3217;G;12:22:13.07;+26:23:16.9;Com;0.41;0.23;40;17.53;;;;;23.86;Scd;;;;;;;;2MASX J12221301+2623161,SDSS J122213.07+262316.8,SDSS J122213.07+262316.9;;The IC number includes a nearby star.;B-Mag taken from LEDA -IC3218;G;12:22:19.52;+06:55:40.5;Vir;0.64;0.56;74;15.60;;13.50;12.98;13.38;23.57;E;;;;;;;;2MASX J12221947+0655398,MCG +01-32-026,PGC 040067,SDSS J122219.52+065540.4,SDSS J122219.52+065540.5;;The IC number includes a nearby star.; -IC3219;G;12:22:15.03;+25:57:04.8;Com;0.84;0.25;5;16.45;;;;;23.84;Sc;;;;;;;;2MASX J12221498+2557051,SDSS J122215.02+255704.8,SDSS J122215.03+255704.8;;;B-Mag taken from LEDA. -IC3220;G;12:22:21.59;+10:36:07.1;Vir;1.05;0.48;4;15.95;;;;;24.85;E;;;;;;;;PGC 040074;;;B-Mag taken from LEDA. -IC3221;G;12:22:20.15;+25:17:01.6;Com;0.57;0.27;128;17.14;;;;;24.09;Sbc;;;;;;;;2MASX J12222013+2517012,SDSS J122220.14+251701.5;;;B-Mag taken from LEDA. -IC3222;G;12:22:19.47;+28:49:53.7;Com;0.59;0.36;16;15.99;15.10;12.88;12.23;11.86;23.12;Sc;;;;;;;;2MASX J12221942+2849541,IRAS 12198+2906,MCG +05-29-073,PGC 040065,SDSS J122219.46+284953.7,SDSS J122219.47+284953.7,UGC 07437;;; -IC3223;Other;12:22:30.61;+09:29:14.1;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3224;G;12:22:35.91;+12:09:28.9;Vir;0.38;0.31;51;16.30;;;;;22.74;I;;;;;;;;PGC 040100,SDSS J122235.91+120928.9;;;B-Mag taken from LEDA. -IC3225;G;12:22:38.99;+06:40:37.4;Vir;0.91;0.40;34;14.90;;12.87;12.31;12.38;22.21;Sd;;;;;;;;2MASX J12223914+0640421,2MASX J12223988+0640491,MCG +01-32-028,PGC 040111,SDSS J122238.99+064037.3,SDSS J122239.00+064037.4,UGC 07441;;; -IC3226;*;12:22:34.95;+26:04:02.4;Com;;;;;;;;;;;;;;;;;;SDSS J122234.94+260402.3;;The IC number may include the neighboring star about 20 arcsec southwest.; -IC3227;G;12:22:35.66;+24:05:06.5;Com;0.46;0.22;169;16.52;;14.95;14.25;14.18;23.55;S0;;;;;;;;2MASX J12223570+2405063,PGC 040093,SDSS J122235.65+240508.0;;;B-Mag taken from LEDA. -IC3228;G;12:22:39.38;+24:19:48.3;Com;1.11;0.25;141;16.19;;13.41;12.63;12.37;24.05;Sc;;;;;;;;2MASX J12223933+2419483,SDSS J122239.37+241948.3,SDSS J122239.38+241948.3;;;B-Mag taken from LEDA. -IC3229;G;12:22:52.80;+06:40:47.5;Vir;1.23;0.41;43;15.00;;13.78;12.87;12.85;23.59;SBbc;;;;;;;;2MASX J12225276+0640501,MCG +01-32-030,PGC 040147,SDSS J122252.79+064047.5,SDSS J122252.80+064047.5,UGC 07448;;; -IC3230;G;12:22:39.68;+27:44:49.1;Com;0.44;0.32;101;16.41;;14.85;14.19;14.02;23.16;Sc;;;;;;;;2MASX J12223954+2744493,PGC 040113,SDSS J122239.67+274449.1,SDSS J122239.68+274449.1;;;B-Mag taken from LEDA. -IC3231;G;12:22:43.78;+24:49:13.7;Com;0.65;0.47;0;;;;;;;Sc;;;;;;;;PGC 089595,SDSS J122243.77+244913.7;;; -IC3232;*;12:22:47.79;+24:25:28.3;Com;;;;;;;;;;;;;;;;;;;;; -IC3233;G;12:22:54.89;+12:34:00.4;Vir;0.69;0.34;90;15.50;;13.62;13.16;12.88;23.99;S?;;;;;;;;2MASX J12225487+1234006,SDSS J122254.89+123400.2,SDSS J122254.89+123400.3,SDSS J122254.89+123400.4;;; -IC3234;G;12:22:52.16;+28:06:45.1;Com;0.42;0.38;82;16.93;;;;;23.73;Sa;;;;;;;;2MASX J12225212+2806453,SDSS J122252.15+280645.1,SDSS J122252.16+280645.0;;;B-Mag taken from LEDA. -IC3235;G;12:22:57.90;+13:32:44.8;Com;0.62;0.33;146;16.10;;14.31;14.29;13.74;23.83;Sc;;;;;;;;2MASX J12225786+1332446,PGC 040155,SDSS J122257.90+133244.8;;; -IC3236;G;12:23:00.23;+10:06:04.4;Vir;0.42;0.23;132;16.46;;14.33;13.93;12.60;23.06;Sc;;;;;;;;2MASX J12230017+1006040,PGC 1374570,SDSS J122300.23+100604.4;;;B-Mag taken from LEDA -IC3237;G;12:22:58.01;+28:29:39.0;Com;0.47;0.32;67;15.89;;;;;23.11;Sbc;;;;;;;;2MASX J12225797+2829383,PGC 1837411,SDSS J122258.00+282938.9,SDSS J122258.01+282939.0;;;B-Mag taken from LEDA -IC3238;G;12:23:06.38;+14:27:30.0;Com;0.67;0.47;11;15.20;;12.12;11.39;11.10;22.54;S0;;;;;;;;2MASX J12230637+1427299,MCG +03-32-017,PGC 040182,SDSS J122306.37+142729.9;;; -IC3239;G;12:23:09.57;+11:43:33.6;Vir;0.78;0.30;147;15.60;;;13.59;;23.52;Scd;;;;;;;;PGC 040187,SDSS J122309.57+114333.6,SDSS J122309.58+114333.5;;; -IC3240;G;12:23:07.32;+10:21:44.2;Vir;0.46;0.31;77;16.54;;13.29;12.96;12.19;23.32;Sbc;;;;;;;;2MASX J12230735+1021440,PGC 165116,SDSS J122307.32+102144.2;;;B-Mag taken from LEDA -IC3241;G;12:23:08.44;+26:54:19.0;Com;0.67;0.49;17;16.33;;12.93;12.37;11.95;24.32;E;;;;;;;;2MASX J12230841+2654187,LEDA 3089318,SDSS J122308.43+265419.0,SDSS J122308.44+265419.0;;;B-Mag taken from LEDA. -IC3242;G;12:23:10.44;+26:14:56.0;Com;0.63;0.38;158;16.48;;;;;23.85;Sb;;;;;;;;2MASX J12231046+2614557,SDSS J122310.44+261456.0;;;B-Mag taken from LEDA. -IC3243;G;12:23:11.33;+27:45:56.5;Com;0.75;0.36;62;15.70;;13.08;12.48;12.26;23.33;Sbc;;;;;;;;2MASX J12231129+2745567,PGC 040197,SDSS J122311.32+274556.4,SDSS J122311.33+274556.5;;; -IC3244;G;12:23:12.26;+14:23:20.3;Com;0.77;0.61;80;15.30;;12.74;11.92;11.73;22.97;Sc;;;;;;;;2MASX J12231223+1423199,IRAS 12206+1439,MCG +03-32-018,PGC 040196,SDSS J122312.26+142320.2,SDSS J122312.26+142320.3;;; -IC3245;Other;12:23:17.71;+09:07:46.4;Vir;;;;;;;;;;;;;;;;;;;;This is a defect on the original Harvard plate.; -IC3246;G;12:23:17.15;+13:03:06.6;Vir;0.54;0.48;43;16.32;;13.35;12.66;12.67;23.63;SBbc;;;;;;;;2MASX J12231716+1303069,PGC 040202,SDSS J122317.14+130306.5,SDSS J122317.15+130306.6;;;B-Mag taken from LEDA. -IC3247;G;12:23:13.99;+28:53:37.5;Com;1.86;0.26;174;15.60;;13.34;12.47;12.12;24.38;Sc;;;;;;;;2MASX J12231393+2853387,MCG +05-29-077,PGC 040205,SDSS J122313.99+285337.5,UGC 07459;;; -IC3248;*;12:23:16.88;+25:33:07.3;Com;;;;;;;;;;;;;;;;;;SDSS J122316.87+253307.3;;; -IC3249;G;12:23:17.93;+25:26:40.8;Com;0.37;0.21;13;16.79;;;;;;E;;;;;;;;SDSS J122317.93+252640.7;;"Brightest in a group; cD?";B-Mag taken from LEDA. -IC3250;*;12:23:17.82;+25:37:43.7;Com;;;;;;;;;;;;;;;;;;SDSS J122317.82+253743.6;;; -IC3251;*;12:23:18.89;+25:39:12.2;Com;;;;;;;;;;;;;;;;;;SDSS J122318.88+253912.1;;; -IC3252;**;12:23:24.92;+28:37:05.6;Com;;;;;;;;;;;;;;;;;;;;; -IC3253;G;12:23:45.22;-34:37:19.9;Cen;3.02;1.20;24;12.81;11.62;10.08;9.38;9.11;22.99;Sc;;;;;;;;2MASX J12234523-3437198,ESO 380-024,ESO-LV 380-0240,IRAS 12211-3420,MCG -06-27-021,PGC 040265;;; -IC3254;Dup;12:23:29.83;+19:25:36.9;Com;;;;;;;;;;;;;;;4336;;;;;; -IC3255;G;12:23:34.74;+09:38:55.0;Vir;0.60;0.49;101;15.30;;12.69;11.97;11.95;22.25;SBbc;;;;;;;;2MASX J12233474+0938551,IRAS 12210+0955,PGC 040241,SDSS J122334.64+093903.5;;; -IC3256;Dup;12:23:39.00;+07:03:14.4;Vir;;;;;;;;;;;;;;;4342;;;;;; -IC3257;Other;12:23:44.71;+07:15:13.6;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3258;G;12:23:44.47;+12:28:42.0;Vir;1.35;1.09;88;14.30;;15.18;14.81;14.80;22.98;IB;;;;;;;;2MASX J12234449+1228420,IRAS 12211+1245,MCG +02-32-021,PGC 039911,PGC 040264,SDSS J122344.46+122841.9,UGC 07470;;Multiple SDSS entries describe this object.; -IC3259;G;12:23:48.52;+07:11:12.6;Vir;1.64;0.83;18;14.70;;12.07;11.47;11.06;23.45;SABd;;;;;;;;2MASX J12234849+0711071,MCG +01-32-040,PGC 040273,SDSS J122348.52+071112.6,UGC 07469;;"CGCG misprints R.A. as 12h21.2m; corrected in CGCG errata in vol III."; -IC3260;Dup;12:23:53.56;+07:06:25.6;Vir;;;;;;;;;;;;;;;4341;;;;;; -IC3261;G;12:23:52.50;+11:28:52.7;Vir;0.47;0.24;110;17.21;;;;;23.91;SBab;;;;;;;;2MASX J12235252+1128521,PGC 169197,SDSS J122352.49+112852.6,SDSS J122352.50+112852.7;;The IC identification is not certain.;B-Mag taken from LEDA. -IC3262;G;12:23:48.17;+27:23:39.4;Com;0.77;0.38;149;15.30;;12.33;11.65;11.35;23.06;SBab;;;;;;;;2MASX J12234820+2723391,PGC 040271,SDSS J122348.16+272339.3,SDSS J122348.17+272339.4;;; -IC3263;G;12:23:50.59;+28:11:58.2;Com;0.60;0.57;57;15.10;;12.33;11.72;11.47;22.70;SBbc;;;;;;;;2MASX J12235054+2811581,MCG +05-29-078,PGC 040270,SDSS J122350.58+281158.1,SDSS J122350.59+281158.2;;; -IC3264;G;12:23:51.95;+25:33:26.6;Com;0.59;0.36;145;16.72;;;;;24.39;E;;;;;;;;2MASX J12235191+2533261,SDSS J122351.94+253326.5,SDSS J122351.94+253326.6;;;B-Mag taken from LEDA. -IC3265;*;12:23:58.83;+07:48:13.6;Vir;;;;;;;;;;;;;;;;;;SDSS J122358.83+074813.6;;; -IC3266;Dup;12:24:00.26;+07:47:06.7;Vir;;;;;;;;;;;;;;;4353;;;;;; -IC3267;G;12:24:05.53;+07:02:28.6;Vir;1.21;1.17;30;14.60;;11.90;11.37;10.95;23.25;Sc;;;;;;;;2MASX J12240554+0702288,MCG +01-32-044,PGC 040317,SDSS J122405.52+070228.6,SDSS J122405.53+070228.6,UGC 07474;;"CGCG misprints R.A. as 12h21.5m; corrected in CGCG errata in vol III."; -IC3268;G;12:24:07.44;+06:36:26.9;Vir;1.00;0.80;12;14.20;;12.13;11.65;11.49;22.32;I;;;;;;;;2MASX J12240743+0636268,IRAS 12215+0653,MCG +01-32-045,PGC 040321,SDSS J122407.38+063630.9,UGC 07477;;HOLM 392B is a star.; -IC3269;G;12:24:04.40;+27:26:05.2;Com;0.75;0.43;167;16.48;;;;;24.19;Sb;;;;;;;;2MASX J12240435+2726050,SDSS J122404.40+272605.1,SDSS J122404.40+272605.2;;;B-Mag taken from LEDA. -IC3270;G;12:24:05.85;+27:34:40.4;Com;0.61;0.52;128;16.34;;;;;23.89;SBb;;;;;;;;2MASX J12240587+2734400,SDSS J122405.84+273440.4,SDSS J122405.85+273440.4;;;B-Mag taken from LEDA. -IC3271;G;12:24:13.93;+07:57:10.7;Vir;0.79;0.71;102;15.00;;13.31;12.72;12.01;22.81;SABc;;;;;;;;2MASX J12241393+0757118,MCG +01-32-047,PGC 040337,SDSS J122413.91+075710.8,SDSS J122413.92+075710.7,SDSS J122413.93+075710.7,UGC 07481;;; -IC3272;G;12:24:09.31;+23:17:04.7;Com;0.51;0.25;153;16.81;;;;;23.45;Sbc;;;;;;;;2MASX J12240926+2317041,PGC 1684676,SDSS J122409.30+231704.6;;;B-Mag taken from LEDA. -IC3273;Dup;12:24:14.53;+08:32:09.1;Vir;;;;;;;;;;;;;;;4356;;;;;; -IC3274;Dup;12:24:14.72;+09:16:00.7;Vir;;;;;;;;;;;;;;;4360B;;;;;; -IC3275;G;12:24:19.48;+10:26:46.8;Vir;0.53;0.35;89;16.49;;13.46;12.98;12.47;23.59;Sc;;;;;;;;2MASX J12241948+1026468,PGC 165137,SDSS J122419.47+102646.7,SDSS J122419.47+102646.8,SDSS J122419.48+102646.7,SDSS J122419.48+102646.8;;;B-Mag taken from LEDA. -IC3276;G;12:24:14.10;+25:49:07.6;Com;0.57;0.43;102;16.49;;;;;24.13;E;;;;;;;;2MASX J12241409+2549072,SDSS J122414.08+254907.9;;;B-Mag taken from LEDA. -IC3277;Other;12:24:15.71;+25:33:50.4;Com;;;;;;;;;;;;;;;;;;;;;NED lists this object as type G, but listed as Unknown in LEDA. -IC3278;GTrpl;12:24:14.96;+27:25:14.9;Com;0.90;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3278 NED01;G;12:24:14.35;+27:25:24.5;Com;0.36;0.32;9;17.69;;;;;24.10;Sb;;;;;;;;SDSS J122414.34+272524.4,SDSS J122414.35+272524.5;;;B-Mag taken from LEDA -IC3278 NED02;G;12:24:15.06;+27:25:23.7;Com;0.54;0.49;10;16.71;;;;;24.23;E;;;;;;;;2MASX J12241505+2725232,SDSS J122415.05+272523.7,SDSS J122415.06+272523.7;;;B-Mag taken from LEDA -IC3278 NED03;G;12:24:15.44;+27:25:06.5;Com;0.43;0.30;86;16.50;;;;;23.34;SBbc;;;;;;;;PGC 040345,SDSS J122415.44+272506.5;;; -IC3279;**;12:24:24.03;+12:51:08.8;Vir;;;;;;;;;;;;;;;;;;SDSS J122424.02+125108.8;;; -IC3280;G;12:24:26.74;+13:14:00.4;Vir;0.70;0.57;38;16.40;;12.99;12.21;12.10;22.95;Sbc;;;;;;;;2MASX J12242675+1313595,MCG +02-32-030,PGC 040372,SDSS J122426.74+131400.3,SDSS J122426.74+131400.4;;; -IC3281;Other;12:24:27.91;+07:49:08.9;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3282;*;12:24:28.05;+25:40:14.3;Com;;;;;;;;;;;;;;;;;;SDSS J122428.05+254014.2;;; -IC3283;G;12:24:28.02;+27:12:40.5;Com;0.68;0.32;46;;;;;;23.86;Sb;;;;;;;;2MASX J12242804+2712403,PGC 3788276,SDSS J122428.01+271240.4,SDSS J122428.02+271240.5;;; -IC3284;G;12:24:37.56;+10:50:20.5;Vir;0.55;0.50;137;15.60;;13.00;12.18;11.93;22.69;SBab;;;;;;;;2MASX J12243754+1050203,PGC 040400,SDSS J122437.55+105020.5,SDSS J122437.56+105020.5,SDSS J122437.57+105020.5;;; -IC3285;*;12:24:33.49;+24:51:34.8;Com;;;;;;;;;;;;;;;;;;SDSS J122433.49+245134.7;;; -IC3286;G;12:24:34.48;+23:44:52.4;Com;0.49;0.40;69;16.11;;;;;23.41;E;;;;;;;;2MASX J12243449+2344522,PGC 1692968,SDSS J122434.47+234452.3;;;B-Mag taken from LEDA. -IC3287;G;12:24:36.96;+24:35:41.0;Com;0.21;0.19;16;17.60;;;;;;;;;;;;;;SDSS J122436.92+243539.5;;;B-Mag taken from LEDA. -IC3288;G;12:24:39.41;+24:56:59.5;Com;0.55;0.36;131;16.31;;;;;23.84;E;;;;;;;;2MASX J12243940+2456592,SDSS J122439.40+245659.5;;;B-Mag taken from LEDA. -IC3289;G;12:24:57.45;-26:01:50.6;Hya;1.15;1.08;28;14.07;;10.64;9.96;9.69;23.22;S0;;;;;;;;2MASX J12245743-2601508,ESO 506-007,ESO-LV 506-0070,MCG -04-29-023,PGC 040446;;; -IC3290;G;12:25:08.96;-39:46:31.8;Cen;2.22;1.49;36;12.97;;9.99;9.36;9.00;23.91;S0-a;;;;;;;;2MASX J12250897-3946317,ESO 322-004,ESO-LV 322-0040,MCG -06-27-024,PGC 040470;;; -IC3291;G;12:24:48.41;+12:01:06.6;Vir;0.57;0.37;80;16.46;;13.07;12.40;12.14;23.76;Sa;;;;;;;;2MASX J12244836+1201063,LEDA 165140,SDSS J122448.40+120106.6,SDSS J122448.41+120106.6;;;B-Mag taken from LEDA. -IC3292;G;12:24:48.36;+18:11:42.4;Com;1.09;0.82;134;15.50;;12.55;11.93;11.83;23.96;S0;;;;;;;;2MASX J12244836+1811422,PGC 040425,SDSS J122448.35+181142.4,SDSS J122448.36+181142.4;;; -IC3293;G;12:24:53.51;+17:25:56.7;Com;0.69;0.44;65;16.31;;;;;23.88;SBbc;;;;;;;;2MASX J12245354+1725573,SDSS J122453.51+172556.6,SDSS J122453.51+172556.7;;;B-Mag taken from LEDA. -IC3294;G;12:24:49.73;+25:35:50.9;Com;0.38;0.29;2;17.28;;;;;24.02;E;;;;;;;;2MASX J12244975+2535506,SDSS J122449.72+253550.9;;;B-Mag taken from LEDA -IC3295;Other;12:24:48.98;+28:42:28.2;Com;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC3296;G;12:24:57.84;+24:22:58.3;Com;0.49;0.35;101;15.60;;12.44;11.72;11.43;22.84;E;;;;;;;;2MASX J12245778+2422586,PGC 040450,SDSS J122457.83+242258.2,SDSS J122457.83+242258.3;;; -IC3297;*;12:24:58.14;+26:46:16.3;Com;;;;;;;;;;;;;;;;;;SDSS J122458.13+264616.2;;; -IC3298;G;12:25:03.80;+17:00:55.2;Com;1.28;0.37;156;15.30;;13.15;12.20;12.34;23.46;SBcd;;;;;;;;MCG +03-32-024,PGC 040458;;; -IC3299;G;12:25:03.14;+27:22:28.1;Com;0.60;0.41;36;17.20;;13.53;12.71;12.53;24.24;SBbc;;;;;;;;2MASX J12250313+2722286,LEDA 3089319,SDSS J122503.13+272228.0,SDSS J122503.14+272228.1;;;B-Mag taken from LEDA. -IC3300;G;12:25:04.98;+25:57:27.2;Com;1.15;0.30;80;15.30;;12.22;11.55;11.15;23.05;Sc;;;;;;;;2MASX J12250498+2557266,MCG +04-29-070,PGC 040459,SDSS J122504.97+255727.1,UGC 07495;;; -IC3301;G;12:25:17.54;+14:10:21.2;Com;0.52;0.40;31;16.12;;14.10;13.71;13.38;23.58;E;;;;;;3307;;2MASX J12251758+1410230,PGC 040491,SDSS J122517.53+141021.2,SDSS J122517.54+141021.2;;;B-Mag taken from LEDA. -IC3302;G;12:25:10.43;+25:52:47.3;Com;0.37;0.35;29;16.98;;;;;23.53;Sc;;;;;;;;2MASX J12251047+2552476,SDSS J122510.42+255247.2;;;B-Mag taken from LEDA. -IC3303;G;12:25:15.20;+12:42:52.6;Vir;0.95;0.55;70;15.10;14.24;12.66;11.73;11.95;23.73;E;;;;;;;;2MASX J12251519+1242519,MCG +02-32-035,PGC 040485,SDSS J122515.20+124252.6,UGC 07500;;; -IC3304;G;12:25:11.72;+25:25:27.4;Com;0.24;0.17;92;18.61;;;;;24.29;;;;;;;;;;;;B-Mag taken from LEDA. -IC3305;G;12:25:14.50;+11:50:58.6;Vir;1.08;0.44;41;15.12;;13.59;13.11;12.95;23.86;E;;;;;;;;2MASX J12251449+1150584,MCG +02-32-036,PGC 040488,SDSS J122514.50+115058.5,UGC 07499;;; -IC3306;G;12:25:12.48;+27:24:08.5;Com;0.94;0.32;142;16.15;;;;;23.95;Sbc;;;;;;;;2MASX J12251245+2724086,SDSS J122512.48+272408.4,SDSS J122512.48+272408.5;;;B-Mag taken from LEDA. -IC3307;Dup;12:25:17.54;+14:10:21.2;Com;;;;;;;;;;;;;;;;3301;;;;; -IC3308;G;12:25:18.21;+26:42:54.4;Com;0.58;0.28;64;15.40;;;;;22.54;Sd;;;;;;;;MCG +05-29-081,PGC 040495,UGC 07505;;; -IC3309;G;12:25:20.13;+28:22:51.6;Com;1.00;0.37;87;15.70;;;;;23.80;Sc;;;;;;;;MCG +05-29-082,PGC 040501,SDSS J122520.13+282251.6,UGC 07509;;; -IC3310;*;12:25:55.30;+15:40:49.9;Com;;;;;;;;;;;;;;;;;;;;Superposed on the northwestern arm of NGC 4396.; -IC3311;G;12:25:33.11;+12:15:37.2;Vir;1.85;0.44;134;14.87;;13.09;11.81;12.01;23.52;Scd;;;;;;;;2MASX J12253310+1215370,MCG +02-32-038,PGC 040530,SDSS J122533.00+121538.0,SDSS J122533.35+121533.3,UGC 07510;;; -IC3312;G;12:25:29.90;+23:34:53.9;Com;0.50;0.30;157;17.05;;;;;24.37;E;;;;;;;;2MASX J12252986+2334538,SDSS J122529.89+233453.8;;;B-Mag taken from LEDA -IC3313;G;12:25:36.44;+15:49:47.4;Com;1.34;1.27;179;15.60;;;10.83;;23.72;E;;;;;;;;MCG +03-32-033,PGC 040551,SDSS J122536.42+154947.3,SDSS J122536.43+154947.4,SDSS J122536.44+154947.4;;; -IC3314;G;12:25:31.49;+23:35:27.8;Com;0.53;0.47;19;16.26;;12.66;12.10;11.61;23.68;E;;;;;;;;2MASX J12253146+2335278,LEDA 1690073,SDSS J122531.48+233527.7,SDSS J122531.49+233527.7;;;B-Mag taken from LEDA. -IC3315;G;12:25:38.93;+12:18:49.5;Vir;0.60;0.49;85;15.90;;;;;23.67;E;;;;;;;;PGC 040556,SDSS J122538.92+121849.5,SDSS J122538.93+121849.5;;;B-Mag taken from LEDA. -IC3316;G;12:25:36.15;+26:09:47.7;Com;0.46;0.40;96;16.55;;;;;23.83;Sc;;;;;;;;LEDA 089598,SDSS J122536.14+260947.7;;;B-Mag taken from LEDA. -IC3317;G;12:25:38.91;+25:20:38.1;Com;0.52;0.48;14;17.16;;;;;24.62;E;;;;;;;;SDSS J122538.91+252038.1;;;B-Mag taken from LEDA. -IC3318;*;12:25:49.85;+09:45:46.1;Vir;;;;12.67;11.44;9.50;8.94;8.78;;;;;;;;;;2MASS J12254984+0945460,SDSS J122549.85+094546.0,TYC 874-225-1,UCAC3 200-124833;;;Variable star - Classical Cepheid. -IC3319;Other;12:25:50.93;+10:23:27.6;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3320;Dup;12:25:50.67;+10:27:32.6;Vir;;;;;;;;;;;;;;;4390;;;;;; -IC3321;G;12:25:46.18;+26:04:57.1;Com;0.71;0.32;8;16.55;;;;;24.70;E;;;;;;;;2MASX J12254617+2604571,SDSS J122546.17+260456.9;;;B-Mag taken from LEDA. -IC3322;G;12:25:54.10;+07:33:17.2;Vir;2.33;0.65;156;14.70;;11.37;10.68;10.47;23.57;SABc;;;;;;;;2MASX J12255412+0733173,IRAS 12233+0750,MCG +01-32-057,PGC 040607,SDSS J122554.09+073317.1,SDSS J122554.10+073317.2,UGC 07518;;; -IC3323;*;12:25:48.08;+27:32:32.6;Com;;;;;;;;;;;;;;;;;;SDSS J122548.08+273232.6;;Superposed on the southwestern side of NGC 4393.; -IC3324;G;12:25:49.16;+26:44:23.6;Com;0.30;0.27;171;17.06;;;;;23.33;E;;;;;;;;2MASX J12254914+2644237,SDSS J122549.16+264423.6;;"The IC number includes a star 6"" SW of the galaxy.";B-Mag taken from LEDA -IC3325;G;12:25:51.47;+23:53:45.3;Com;0.71;0.59;26;15.85;;;;;23.71;Sb;;;;;;;;2MASX J12255142+2353451,SDSS J122551.46+235345.2;;;B-Mag taken from LEDA. -IC3326;G;12:25:52.75;+23:46:06.4;Com;0.44;0.22;168;16.66;;;;;23.24;Sb;;;;;;;;2MASX J12255272+2346061,PGC 1693354,SDSS J122552.74+234606.4;;;B-Mag taken from LEDA. -IC3327;G;12:26:02.78;+14:52:49.3;Com;0.90;0.78;42;15.50;;12.44;11.76;11.24;23.53;SBa;;;;;;;;2MASX J12260276+1452492,PGC 040624,SDSS J122602.77+145249.2;;; -IC3328;G;12:25:57.93;+10:03:13.6;Vir;0.88;0.82;45;14.90;;11.97;11.48;11.30;22.86;E-S0;;;;;;;;2MASX J12255796+1003133,MCG +02-32-042,PGC 040616,SDSS J122557.92+100313.5,SDSS J122557.93+100313.6;;; -IC3329;HII;12:25:55.92;+27:33:50.8;Com;;;;;;;;;;;;;;;;;;SDSS J122555.91+273350.8;;HII region in NGC 4393.;SIMBAD considers this a duplicate of NGC4393. -IC3330;G;12:25:56.31;+30:50:36.9;Com;1.14;0.50;101;14.90;;12.21;11.56;11.32;23.51;Sab;;;;;;;;2MASX J12255632+3050370,MCG +05-29-084,PGC 040612,SDSS J122556.30+305036.8,SDSS J122556.31+305036.9,UGC 07527;;HOLM 404B is a star.; -IC3331;G;12:26:05.32;+11:48:44.0;Vir;1.02;0.54;51;15.20;;13.02;12.29;12.34;23.92;E;;;;;;;;2MASX J12260536+1148433,MCG +02-32-043,PGC 040638,SDSS J122605.31+114843.9,SDSS J122605.32+114844.0;;; -IC3332;G;12:26:05.19;+25:16:47.4;Com;0.28;0.12;135;;;;;;;;;;;;;;;2MASX J12260514+2516478,SDSS J122605.19+251647.3;;; -IC3333;*;12:26:08.77;+13:07:58.6;Vir;;;;15.88;14.80;12.95;12.43;12.30;;;;;;;;;;2MASS J12260875+1307583,SDSS J122608.76+130758.5;;; -IC3334;G;12:26:09.53;+28:27:57.0;Com;0.75;0.65;2;;;;;;24.21;I;;;;;;;;PGC 4326375,SDSS J122609.52+282757.0,SDSS J122609.53+282757.0;;; -IC3335;G;12:26:19.13;+26:07:45.5;Com;0.34;0.25;10;17.25;;;;;23.76;E;;;;;;;;2MASX J12261909+2607457,SDSS J122619.12+260745.5,SDSS J122619.13+260745.5;;;B-Mag taken from LEDA. -IC3336;G;12:26:19.89;+26:50:18.4;Com;0.64;0.29;74;15.50;;12.12;11.46;11.21;22.91;Sa;;;;;;;;2MASX J12261987+2650182,PGC 040669,SDSS J122619.88+265018.3;;; -IC3337;G;12:26:21.47;+25:18:41.5;Com;0.55;0.47;44;16.93;;;;;24.22;Sc;;;;;;;;PGC 089603,SDSS J122621.46+251841.4,SDSS J122621.46+251841.5;;;B-Mag taken from LEDA. -IC3338;G;12:26:22.28;+25:53:10.4;Com;0.83;0.36;67;15.94;;;;;23.68;Sbc;;;;;;;;2MASX J12262228+2553102,SDSS J122622.27+255310.7;;;B-Mag taken from LEDA. -IC3339;Dup;12:26:30.10;+08:52:20.0;Vir;;;;;;;;;;;;;;;4411;;;;;; -IC3340;G;12:26:32.71;+16:50:40.8;Com;0.70;0.36;24;15.41;;12.72;11.97;11.52;22.92;SBb;;;;;;;;2MASX J12263269+1650410,IRAS 12240+1707,MCG +03-32-037,PGC 040708,SDSS J122632.70+165040.7,SDSS J122632.71+165040.7;;;B-Mag taken from LEDA. -IC3341;G;12:26:23.19;+27:44:43.9;Com;0.46;0.26;72;16.50;;;;;23.54;I;;;;;;;;PGC 040682,SDSS J122623.34+274443.9;;; -IC3342;*;12:26:27.37;+27:08:19.1;Com;;;;;;;;;;;;;;;;;;SDSS J122627.37+270819.1;;; -IC3343;*;12:26:35.10;+08:52:27.4;Vir;;;;;;;;;;;;;;;;;;;;; -IC3344;G;12:26:32.39;+13:34:43.6;Com;0.80;0.44;60;15.20;;13.18;12.51;12.65;23.86;E;;;;;;;;2MASX J12263242+1334440,MCG +02-32-050,PGC 040706,SDSS J122632.39+133443.5,SDSS J122632.39+133443.6;;; -IC3345;G;12:26:33.34;+24:22:07.9;Com;0.33;0.30;106;17.19;;;;;23.67;E;;;;;;;;2MASX J12263332+2422073,SDSS J122633.33+242207.8,SDSS J122633.34+242207.8;;;B-Mag taken from LEDA. -IC3346;G;12:26:44.43;+11:22:47.0;Vir;0.65;0.50;147;15.78;;;12.15;;23.70;E;;;;;;;;PGC 040739,SDSS J122644.41+112247.0,SDSS J122644.43+112247.0;;;B-Mag taken from LEDA. -IC3347;G;12:26:44.57;+10:55:06.9;Vir;0.55;0.36;141;16.31;;14.79;14.46;14.24;23.50;Sc;;;;;;;;2MASX J12264455+1055074,PGC 165158,SDSS J122644.56+105506.8;;;B-Mag taken from LEDA. -IC3348;G;12:26:38.11;+25:37:29.6;Com;0.41;0.36;66;17.30;;;;;24.06;Sc;;;;;;;;SDSS J122638.11+253729.6;;;B-Mag taken from LEDA. -IC3349;G;12:26:47.06;+12:27:14.3;Vir;0.90;0.85;25;15.30;13.98;12.74;12.25;11.88;23.47;E;;;;;;;;2MASX J12264704+1227147,PGC 040744,SDSS J122647.06+122714.3,SDSS J122647.07+122714.3;;; -IC3350;**;12:26:46.43;+09:26:33.4;Vir;;;;12.86;12.68;11.08;10.84;10.83;;;;;;;;;;2MASS J12264641+0926335,SDSS J122646.42+092633.3,TYC 874-632-1;;;Main component is TYC 874-632-1. -IC3351;*;12:26:40.99;+27:36:20.1;Com;;;;;;;;;;;;;;;;;;SDSS J122640.98+273620.1;;; -IC3352;Other;12:26:47.80;+08:45:27.0;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3353;G;12:26:45.08;+27:54:44.4;Com;0.83;0.15;98;16.82;;;;;23.84;Sc;;;;;;;;PGC 040741,SDSS J122645.07+275444.3,SDSS J122645.08+275444.4;;;B-Mag taken from LEDA. -IC3354;*;12:26:51.46;+12:05:49.7;Vir;;;;;;;;;;;;;;;;;;SDSS J122651.45+120549.7;;; -IC3355;G;12:26:51.14;+13:10:32.6;Vir;1.09;0.43;166;15.18;14.86;;13.36;;23.49;I;;;;;;;;MCG +02-32-056,PGC 040754,UGC 07548;;Several SDSS objects comprise this galaxy.; -IC3356;G;12:26:50.49;+11:33:32.5;Vir;1.47;0.80;70;15.19;;;;;24.49;IB;;;;;;;;PGC 040761,SDSS J122650.49+113332.4,SDSS J122650.49+113332.5,UGC 07547;;The position in 1995ApJS...96..359Y is for a superposed star.; -IC3357;G;12:26:51.35;+09:46:39.0;Vir;0.51;0.25;164;15.40;;13.37;12.85;12.38;22.14;Sbc;;;;;;;;2MASX J12265135+0946388,PGC 040757,SDSS J122651.35+094638.9,SDSS J122651.35+094639.0;;; -IC3358;G;12:26:54.34;+11:39:50.3;Vir;1.05;0.82;118;14.28;13.52;12.27;11.50;11.45;23.30;E;;;;;;;;2MASX J12265442+1139488,MCG +02-32-057,PGC 040764,SDSS J122654.33+113950.2,SDSS J122654.33+113950.3,SDSS J122654.34+113950.3,UGC 07550;;; -IC3359;G;12:26:51.40;+23:29:53.4;Com;0.51;0.28;70;16.50;;14.34;13.38;13.12;23.47;Sbc;;;;;;;;2MASX J12265135+2329534,IRAS 12243+2346,LEDA 089605,SDSS J122651.39+232953.3,SDSS J122651.39+232953.4;;; -IC3360;*;12:26:50.72;+26:02:47.9;Com;;;;;;;;;;;;;;;;;;SDSS J122650.71+260247.8;;; -IC3361;G;12:26:54.55;+10:39:57.1;Vir;1.02;0.71;119;15.49;;;12.58;;24.40;E;;;;;;;;PGC 040759,SDSS J122654.55+103957.0,SDSS J122654.55+103957.1;;"The IC identification is not certain; nothing at nominal position.";B-Mag taken from LEDA. -IC3362;G;12:26:54.41;+26:41:24.3;Com;0.80;0.56;118;16.15;;12.68;12.20;11.98;24.05;SBab;;;;;;;;2MASX J12265440+2641239,LEDA 3089430,SDSS J122654.40+264124.2,SDSS J122654.41+264124.3;;;B-Mag taken from LEDA. -IC3363;G;12:27:03.07;+12:33:38.9;Vir;0.97;0.43;124;15.31;14.54;13.64;13.09;12.75;24.26;E;;;;;;;;2MASX J12270330+1233376,PGC 040786,SDSS J122703.06+123338.9,SDSS J122703.07+123338.9;;; -IC3364;G;12:27:04.91;+25:33:47.7;Com;0.59;0.40;86;16.54;;;;;23.86;Sab;;;;;;;;2MASX J12270493+2533479,SDSS J122704.91+253347.6,SDSS J122704.91+253347.7;;;B-Mag taken from LEDA. -IC3365;G;12:27:11.18;+15:53:48.0;Com;0.87;0.66;67;14.36;;14.88;14.19;14.04;22.49;I;;;;;;;;2MASX J12271135+1553472,MCG +03-32-041,PGC 040811,SDSS J122711.17+155347.9,SDSS J122711.18+155348.0,UGC 07563;;; -IC3366;G;12:27:12.12;+09:24:36.7;Vir;0.37;0.21;154;16.56;;;;;23.25;E;;;;;;;;PGC 213994;;;B-Mag taken from LEDA. PGC 213994 is the best matching object found in LEDA for these NED coords. -IC3367;GPair;12:27:11.90;+26:57:24.3;Com;1.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. Only one component is specified in NED. -IC3367 NED01;G;12:27:10.07;+26:57:26.7;Com;0.72;0.59;84;15.70;;12.46;11.61;11.65;24.04;E;;;;;;;;2MASX J12271004+2657268,PGC 040812,SDSS J122710.06+265726.7,SDSS J122710.07+265726.7;;; -IC3368;G;12:27:20.38;+16:25:42.9;Com;0.71;0.52;0;15.08;;;12.72;;23.19;I;;;;;;;;PGC 040835,SDSS J122720.42+162542.0;;; -IC3369;G;12:27:16.94;+16:01:28.1;Com;0.81;0.55;136;15.10;;12.15;11.59;11.43;23.01;E-S0;;;;;;;;2MASX J12271690+1601282,MCG +03-32-043,PGC 040828,SDSS J122716.93+160128.0,SDSS J122716.94+160128.1;;; -IC3370;G;12:27:37.33;-39:20:16.0;Cen;3.12;2.29;53;11.99;12.12;8.83;8.11;7.86;23.32;E;;;;;;;;2MASX J12273730-3920161,ESO 322-014,ESO-LV 322-0140,MCG -06-27-029,PGC 040887;;; -IC3371;G;12:27:22.25;+10:52:00.4;Vir;1.17;0.26;54;15.00;;;12.79;;23.09;Sc;;;;;;;;MCG +02-32-060,PGC 040839,SDSS J122722.25+105200.4,UGC 07565;;; -IC3372;G;12:27:24.54;+25:17:14.0;Com;0.28;0.27;98;17.02;;14.92;13.83;13.61;23.16;E;;;;;;;;2MASX J12272451+2517141,PGC 089606,SDSS J122724.54+251713.9;;The IC number includes a defect on the original Heidelberg plate.;B-Mag taken from LEDA. -IC3373;G;12:27:27.81;+25:27:14.1;Com;0.68;0.38;99;16.37;;;;;23.80;SBc;;;;;;;;2MASX J12272781+2527141,SDSS J122727.81+252714.0;;;B-Mag taken from LEDA. -IC3374;G;12:27:33.48;+10:00:13.6;Vir;0.95;0.50;155;15.60;;;12.87;;23.46;IB;;;;;;;;PGC 040876,SDSS J122733.24+100009.1,SDSS J122733.24+100009.2;;; -IC3375;*;12:27:40.36;+27:21:53.1;Com;;;;;;;;;;;;;;;;;;SDSS J122740.36+272153.1;;; -IC3376;G;12:27:50.34;+26:59:36.7;Com;0.87;0.60;81;14.40;;11.27;10.56;10.29;22.68;SBa;;;;;;;;2MASX J12275036+2659361,IRAS 12253+2716,MCG +05-29-087,PGC 040920,SDSS J122750.33+265936.6,SDSS J122750.34+265936.6,SDSS J122750.34+265936.7,UGC 07578;;; -IC3377;G;12:27:51.95;+24:56:31.8;Com;0.51;0.30;129;16.18;;13.16;12.46;12.28;23.08;SBab;;;;;;;;2MASX J12275199+2456311,LEDA 3089512,SDSS J122751.94+245631.8,SDSS J122751.95+245631.8;;;B-Mag taken from LEDA. -IC3378;G;12:28:01.51;+17:17:46.7;Com;0.54;0.34;175;15.30;;13.94;13.37;13.07;23.30;Sc;;;;;;;;2MASX J12280152+1717474,SDSS J122801.55+171747.3,SDSS J122801.56+171747.3;;; -IC3379;G;12:28:04.26;+17:18:20.7;Com;0.73;0.35;32;15.30;;13.94;13.37;13.07;23.52;Sbc;;;;;;;;PGC 040955;;; -IC3380;G;12:28:05.53;+26:40:22.3;Com;0.51;0.43;109;16.82;;;;;24.25;E;;;;;;;;PGC 3089432,SDSS J122805.52+264022.2,SDSS J122805.53+264022.3;;;B-Mag taken from LEDA. -IC3381;G;12:28:14.88;+11:47:23.4;Vir;1.19;0.87;104;14.42;;11.67;10.97;11.05;23.18;E;;;;;;;;2MASX J12281485+1147236,MCG +02-32-074,PGC 040985,SDSS J122814.88+114723.3,SDSS J122814.88+114723.4,UGC 07589;;; -IC3382;G;12:28:13.54;+13:34:14.5;Com;1.00;0.28;150;16.00;;13.17;12.50;12.08;24.01;Sc;;;;;;;;2MASX J12281360+1334139,PGC 040954,SDSS J122813.53+133414.4,SDSS J122813.54+133414.5,UGC 07588;;; -IC3383;G;12:28:12.32;+10:17:51.6;Vir;0.78;0.54;29;15.50;15.18;13.09;12.50;12.82;23.33;E-S0;;;;;;;;2MASX J12281237+1017516,MCG +02-32-075,PGC 040970,SDSS J122812.31+101751.5,SDSS J122812.32+101751.5,SDSS J122812.32+101751.6;;; -IC3384;G;12:28:12.26;+25:05:28.8;Com;0.68;0.30;52;16.50;;;;;25.73;Sm;;;;;;;;PGC 089610;;Multiple SDSS entries describe this object.; -IC3385;G;12:28:14.95;+25:25:57.4;Com;0.78;0.51;147;16.47;;;;;24.48;Sbc;;;;;;;;SDSS J122814.94+252557.4;;;B-Mag taken from LEDA. -IC3386;G;12:28:23.68;+13:11:44.7;Vir;0.81;0.35;100;16.01;15.47;;13.18;;24.35;E;;;;;;;;PGC 041007,SDSS J122823.67+131144.6,SDSS J122823.68+131144.7;;;B-Mag taken from LEDA. -IC3387;G;12:28:18.82;+27:59:44.6;Com;0.35;0.27;24;16.50;;14.22;13.68;13.08;22.93;Sbc;;;;;;;;2MASX J12281878+2759451,PGC 040994,SDSS J122818.82+275944.5,SDSS J122818.82+275944.6;;; -IC3388;G;12:28:28.06;+12:49:25.2;Vir;0.74;0.55;74;15.40;14.73;;12.71;;23.67;E;;;;;;;;PGC 041018,SDSS J122828.05+124925.2,SDSS J122828.06+124925.2;;; -IC3389;G;12:28:23.52;+27:50:41.8;Com;0.33;0.20;159;18.11;;;;;24.42;;;;;;;;;2MASX J12282352+2750420,2MASX J12282435+2750420,SDSS J122823.52+275041.7,SDSS J122823.52+275041.8;;;B-Mag taken from LEDA. -IC3390;G;12:28:28.57;+24:48:33.6;Com;0.61;0.46;107;16.56;;;;;24.01;SBbc;;;;;;;;2MASX J12282854+2448335,SDSS J122828.56+244833.6,SDSS J122828.57+244833.5;;;B-Mag taken from LEDA. -IC3391;G;12:28:27.30;+18:24:54.1;Com;1.03;0.83;71;13.90;;11.51;11.30;10.45;22.28;Sc;;;;;;;;2MASX J12282727+1824550,IRAS 12259+1841,MCG +03-32-047,PGC 041013,SDSS J122827.30+182454.1,UGC 07595;;; -IC3392;G;12:28:43.26;+14:59:58.2;Com;2.60;1.10;39;13.30;;10.20;9.52;9.26;23.25;Sab;;;;;;;;2MASX J12284329+1459578,IRAS 12262+1516,MCG +03-32-049,PGC 041061,SDSS J122843.25+145958.2,SDSS J122843.26+145958.2,UGC 07602;;; -IC3393;G;12:28:41.71;+12:54:57.3;Vir;1.10;0.48;132;14.85;14.24;12.55;11.86;11.75;23.83;S0;;;;;;;;2MASX J12284172+1254568,MCG +02-32-081,PGC 041054,SDSS J122841.71+125457.2,SDSS J122841.71+125457.3,SDSS J122841.72+125457.3;;; -IC3394;G;12:28:41.21;+26:47:54.3;Com;0.59;0.50;143;15.86;;12.21;11.48;11.13;23.53;E;;;;;;;;2MASX J12284126+2647536,MCG +05-30-003,PGC 041073,SDSS J122841.25+264754.0,SDSS J122841.26+264754.1;;;B-Mag taken from LEDA. -IC3395;G;12:28:44.50;+25:02:05.1;Com;0.58;0.30;50;16.43;;13.64;12.80;12.60;23.54;Sab;;;;;;;;2MASX J12284448+2502046,SDSS J122844.49+250205.0;;;B-Mag taken from LEDA. -IC3396;G;12:28:44.98;+25:03:00.8;Com;0.11;0.08;84;17.23;;14.31;13.84;13.46;;E;;;;;;;;2MASX J12284500+2503006,SDSS J122844.97+250300.7;;;B-Mag taken from LEDA. -IC3397;G;12:28:46.56;+25:43:54.9;Com;0.61;0.53;10;15.99;;13.64;12.72;12.39;23.54;SBb;;;;;;;;2MASX J12284655+2543546,SDSS J122846.55+254354.9;;;B-Mag taken from LEDA. -IC3399;*;12:28:55.98;+25:41:45.9;Com;;;;;;;;;;;;;;;;;;SDSS J122855.97+254145.9;;; -IC3400;*;12:29:02.90;+09:24:22.2;Vir;;;;11.72;11.50;10.35;10.09;9.96;;;;;;;;;;2MASS J12290289+0924220,SDSS J122902.90+092422.1,TYC 874-198-1;;; -IC3401;G;12:28:58.84;+26:27:36.3;Com;0.41;0.37;5;17.28;;14.38;13.35;13.22;24.00;Sb;;;;;;;;2MASX J12285887+2627360,LEDA 3089434,SDSS J122858.83+262736.2,SDSS J122858.83+262736.3,SDSS J122858.84+262736.3;;;B-Mag taken from LEDA. -IC3402;G;12:28:59.32;+28:51:43.0;Com;1.17;0.21;7;15.70;15.16;13.26;12.35;12.18;23.64;Sbc;;;;;;;;2MASX J12285930+2851430,PGC 041100,SDSS J122859.31+285142.9,SDSS J122859.32+285143.0,UGC 07616;;; -IC3403;G;12:29:01.46;+24:37:57.6;Com;0.43;0.42;35;15.70;;13.66;13.25;12.88;22.95;Sc;;;;;;;;2MASX J12290147+2437581,PGC 041105,SDSS J122901.45+243757.5,SDSS J122901.46+243757.5;;; -IC3404;Other;12:29:10.72;+07:09:14.2;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3405;G;12:28:59.61;+37:43:48.4;CVn;0.71;0.32;27;16.30;;12.80;12.09;11.88;23.63;Sbc;;;;;;;;2MASX J12285963+3743489,LEDA 2108047,SDSS J122859.61+374348.3,SDSS J122859.61+374348.4,SDSS J122859.61+374348.4 bg,SDSS J122859.62+374348.4;;;B-Mag taken from LEDA. -IC3406;G;12:29:02.63;+27:38:25.9;Com;0.65;0.40;70;15.70;;13.15;12.66;12.15;23.11;Sbc;;;;;;;;2MASX J12290263+2738251,MCG +05-30-004,PGC 041116,SDSS J122902.62+273825.8,SDSS J122902.63+273825.9;;; -IC3407;G;12:29:03.86;+27:46:43.9;Com;0.97;0.54;147;14.70;;11.98;11.34;10.98;22.92;SBb;;;;;;;;2MASX J12290381+2746441,IRAS 12265+2803,MCG +05-30-005,PGC 041112,SDSS J122903.85+274643.8,SDSS J122903.86+274643.9,UGC 07615;;; -IC3408;*;12:29:15.79;+11:52:33.2;Vir;;;;11.55;10.87;9.89;9.65;9.59;;;;;;;;;;2MASS J12291585+1152324,TYC 877-865-1;;; -IC3409;G;12:29:21.23;+14:47:21.5;Com;0.58;0.52;156;15.96;;13.19;12.54;12.25;23.43;SBc;;;;;;;;MCG +03-32-050,PGC 041147,SDSS J122921.23+144721.5;;;B-Mag taken from LEDA. -IC3410;G;12:29:06.17;+19:00:17.2;Com;0.69;0.62;8;15.70;;12.59;11.90;11.65;23.77;E;;;;;;;;2MASX J12290620+1900178,PGC 041122,SDSS J122906.16+190017.1;;; -IC3411;G;12:29:12.39;+24:35:03.1;Com;0.70;0.23;170;17.22;;14.46;13.84;13.06;24.36;Sbc;;;;;;;;2MASX J12291233+2435031,SDSS J122912.38+243503.0,SDSS J122912.38+243503.1;;;B-Mag taken from LEDA. -IC3412;G;12:29:22.65;+09:59:20.5;Vir;0.74;0.34;9;15.40;;;;;22.96;Sm;;;;;;;;PGC 041152,SDSS J122922.64+095920.4,SDSS J122922.65+095920.5;;; -IC3413;G;12:29:22.51;+11:26:02.0;Vir;1.21;0.70;164;15.20;;11.88;11.02;11.25;23.60;E;;;;;;;;2MASX J12292248+1126016,MCG +02-32-088,PGC 041155,SDSS J122922.51+112601.9,UGC 07620;;; -IC3414;G;12:29:28.78;+06:46:18.5;Vir;0.81;0.38;32;14.20;;12.95;12.34;12.04;21.60;Sd;;;;;;;;2MASX J12292882+0646186,MCG +01-32-079,PGC 041166,SDSS J122928.77+064618.5,UGC 07621;;; -IC3415;*;12:29:21.61;+26:45:58.4;Com;;;;;;;;;;;;;;;;;;SDSS J122921.61+264558.3;;; -IC3416;G;12:29:34.96;+10:47:35.1;Vir;0.95;0.52;71;15.30;;;12.71;;23.49;I;;;;;;;;MCG +02-32-091,PGC 041178,SDSS J122934.96+104735.1;;MCG notes this as a possible interacting pair.; -IC3417;*;12:29:39.22;+07:51:40.6;Vir;;;;;;;;;;;;;;;;;;SDSS J122939.22+075140.6;;; -IC3418;G;12:29:43.92;+11:24:16.9;Vir;1.32;0.90;68;16.50;;;;;23.38;IB;;;;;;;;MCG +02-32-092,PGC 041207,SDSS J122943.91+112416.8,SDSS J122943.92+112416.8,UGC 07630;;Star superposed.; -IC3419;G;12:29:44.58;+15:01:29.1;Com;0.68;0.43;1;16.30;;;;;24.29;E;;;;;;;;PGC 041211,SDSS J122944.58+150129.1;;;B-Mag taken from LEDA. -IC3420;*;12:29:42.56;+13:26:47.1;Com;;;;;;;;;;;;;;;;;;;;; -IC3421;G;12:29:38.59;+26:13:50.2;Com;0.69;0.53;17;15.48;;13.55;13.56;12.82;23.65;Sbc;;;;;;;;2MASX J12293863+2613502,MCG +05-30-007,PGC 041204,SDSS J122938.59+261350.2;;;B-Mag taken from LEDA. -IC3422;G;12:29:54.61;+14:41:18.1;Com;0.58;0.45;88;16.08;;13.11;12.31;11.90;23.42;Sc;;;;;;;;2MASX J12295460+1441182,PGC 165191,SDSS J122954.61+144118.1,SDSS J122954.62+144118.1;;;B-Mag taken from LEDA. -IC3423;*;12:29:46.52;+13:39:31.6;Com;;;;15.60;;14.43;14.04;14.01;;;;;;;;;;2MASS J12294651+1339314,SDSS J122946.51+133931.6;;; -IC3424;G;12:29:45.04;+24:24:31.2;Com;0.41;0.20;105;17.49;;;;;24.36;E;;;;;;;;SDSS J122945.03+242431.2;;;B-Mag taken from LEDA. -IC3425;G;12:29:56.39;+10:36:55.2;Vir;0.61;0.32;35;15.30;;12.98;11.85;11.83;22.26;S0-a;;;;;;;;2MASX J12295635+1036551,MCG +02-32-095,PGC 041244,SDSS J122956.38+103655.2,UGC 07633;;; -IC3426;*;12:30:01.46;+13:35:53.4;Com;;;;15.10;14.90;13.28;12.88;12.81;;;;;;;;;;2MASS J12300146+1335534,SDSS J123001.46+133553.4;;; -IC3427;Dup;12:30:10.33;+10:46:46.1;Vir;;;;;;;;;;;;;;;4482;;;;;; -IC3428;*;12:30:07.51;+23:40:30.1;Com;;;;;;;;;;;;;;;;;;SDSS J123007.51+234030.1;;; -IC3429;G;12:30:07.94;+23:32:42.5;Com;0.38;0.33;18;16.95;;13.92;12.78;12.70;23.47;Sb;;;;;;;;2MASX J12300799+2332426,SDSS J123007.93+233242.4;;;B-Mag taken from LEDA. -IC3430;G;12:30:16.88;+09:05:06.4;Vir;1.11;0.38;112;15.40;;;;;24.14;S0-a;;;;;;;;PGC 041294,UGC 07643;;; -IC3431;G;12:30:24.18;+11:36:52.1;Vir;0.47;0.32;13;16.60;;;;;23.64;Sc;;;;;;;;PGC 139911,SDSS J123024.17+113652.1,SDSS J123024.18+113652.1;;; -IC3432;G;12:30:27.84;+14:09:36.7;Com;0.69;0.42;56;15.10;;12.96;12.30;12.07;22.32;Sc;;;;;;;;2MASX J12302783+1409368,MCG +02-32-102,PGC 041320,SDSS J123027.83+140936.6,SDSS J123027.84+140936.7;;ASIAGO3 320 is the bar of IC 3432.; -IC3433;G;12:30:28.21;+17:18:35.0;Com;0.80;0.57;87;15.14;;13.82;12.83;13.07;24.50;E-S0;;;;;;;;2MASX J12302824+1718348,PGC 041321,SDSS J123028.21+171834.9;;; -IC3434;G;12:30:27.26;+18:48:35.0;Com;0.76;0.40;55;15.40;;12.82;12.06;11.70;23.14;Sb;;;;;;;;2MASX J12302726+1848353,PGC 041324,SDSS J123027.26+184834.9,SDSS J123027.26+184835.0;;; -IC3435;G;12:30:39.88;+15:07:46.9;Com;1.35;0.47;141;15.70;;12.57;12.06;11.97;24.53;S0;;;;;;;;2MASX J12303979+1507472,MCG +03-32-053,PGC 041338,SDSS J123039.87+150746.8,UGC 07650;;UGC misprints name as 'IC 3455'.; -IC3436;G;12:30:29.93;+19:40:22.9;Com;0.75;0.44;144;15.00;;12.26;11.57;11.39;22.96;S0;;;;;;;;2MASX J12302995+1940233,MCG +03-32-052,PGC 041323,SDSS J123029.93+194022.9;;; -IC3437;G;12:30:45.91;+11:20:35.5;Vir;0.61;0.39;68;15.50;;13.47;13.09;12.78;23.44;E;;;;;;;;2MASX J12304595+1120354,PGC 041350,SDSS J123045.90+112035.5;;; -IC3438;Dup;12:30:59.71;+08:04:40.3;Vir;;;;;;;;;;;;;;;4492;;;;;; -IC3439;G;12:30:59.47;+25:33:42.5;Com;0.66;0.58;40;16.29;;;;;24.04;Sbc;;;;;;;;SDSS J123059.47+253342.6;;;B-Mag taken from LEDA. -IC3440;G;12:31:05.16;+12:01:47.5;Vir;0.60;0.49;85;16.75;;;;;24.21;Sc;;;;;;;;PGC 169460,SDSS J123105.15+120147.4,SDSS J123105.16+120147.5;;;B-Mag taken from LEDA. -IC3441;G;12:31:04.42;+28:51:09.7;Com;0.64;0.43;142;15.79;15.11;12.20;11.46;11.33;23.48;E-S0;;;;;;;;2MASX J12310444+2851099,MCG +05-30-010,PGC 041412,SDSS J123104.42+285109.7;;;B-Mag taken from LEDA. -IC3442;G;12:31:20.19;+14:06:54.7;Com;0.94;0.71;20;15.40;;;;;23.28;E;;;;;;;;MCG +02-32-111,PGC 041435,SDSS J123120.19+140654.7;;; -IC3443;G;12:31:15.73;+12:19:54.4;Vir;0.55;0.51;49;16.15;14.95;13.29;12.64;12.61;23.48;E;;;;;;;;2MASX J12311570+1219545,MCG +02-32-112,PGC 041421,SDSS J123115.72+121954.3,SDSS J123115.73+121954.3,SDSS J123115.73+121954.4;;; -IC3444;**;12:31:13.89;+27:32:58.7;Com;;;;;;;;;;;;;;;;;;SDSS J123113.89+273258.7;;; -IC3445;G;12:31:19.43;+12:44:16.8;Vir;0.47;0.35;36;16.51;15.87;15.10;14.56;14.19;23.73;E;;;;;;;;2MASX J12311932+1244174,PGC 041432,SDSS J123119.42+124416.8;;;B-Mag taken from LEDA. -IC3446;G;12:31:22.94;+11:29:32.6;Vir;0.62;0.39;1;15.63;;14.55;14.13;14.05;22.82;I;;;;;;;;2MASX J12312313+1129341,PGC 041440,SDSS J123122.93+112932.5,SDSS J123122.94+112932.6;;; -IC3447;G;12:31:17.90;+10:40:48.6;Vir;0.37;0.32;6;16.69;;14.32;13.78;13.05;23.30;Sc;;;;;;;;2MASX J12311792+1040481,PGC 165209,SDSS J123117.90+104048.5,SDSS J123117.90+104048.6;;;B-Mag taken from LEDA. -IC3448;G;12:31:23.19;+17:12:23.1;Com;0.97;0.57;97;16.50;;14.79;14.31;14.10;24.17;E-S0;;;;;;;;2MASX J12312269+1712254,PGC 041439,SDSS J123123.18+171223.0,SDSS J123123.19+171223.0;;; -IC3449;G;12:31:22.94;+25:54:50.4;Com;0.31;0.22;142;16.50;;15.14;14.43;14.06;23.16;SBc;;;;;;;;2MASX J12312299+2554499,LEDA 089615,SDSS J123122.94+255450.3;;; -IC3450;G;12:31:24.82;+26:47:46.1;Com;0.47;0.27;158;16.40;;14.22;13.65;13.72;23.31;Sc;;;;;;;;2MASX J12312481+2647439,LEDA 089616,SDSS J123124.81+264746.1,SDSS J123124.82+264746.1;;;B-Mag taken from LEDA. -IC3451;G;12:31:24.07;+28:51:18.7;Com;0.68;0.48;92;15.67;14.65;12.09;11.63;11.12;23.55;S0;;;;;;;;2MASX J12312406+2851189,MCG +05-30-011,PGC 041437,SDSS J123124.07+285118.6,SDSS J123124.08+285118.7;;;B-Mag taken from LEDA. -IC3452;Dup;12:31:32.53;+11:37:29.0;Vir;;;;;;;;;;;;;;;4497;;;;;; -IC3453;G;12:31:37.74;+14:51:35.3;Com;0.95;0.26;164;14.80;;;;;22.28;IB;;;;;;;;2MASX J12313803+1451241,MCG +03-32-057,PGC 041466,SDSS J123137.74+145135.2,SDSS J123137.74+145135.3,UGC 07666;;"MRK 1328 is the 'head' of the ""comet-like"" galaxy UGC 07666.";B-Mag taken from LEDA. -IC3454;G;12:31:38.65;+27:29:44.6;Com;1.12;0.26;26;15.70;;12.47;11.93;11.52;23.59;Sb;;;;;;;;2MASX J12313858+2729438,MCG +05-30-013,PGC 041468,SDSS J123138.64+272944.5,UGC 07670;;; -IC3455;G;12:31:44.55;+25:47:09.9;Com;0.59;0.31;0;16.71;;13.88;13.03;12.90;23.79;Sbc;;;;;;;;2MASX J12314455+2547098,SDSS J123144.54+254709.9,SDSS J123144.55+254709.8;;;B-Mag taken from LEDA. -IC3456;Other;12:31:43.75;+28:21:25.8;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3457;G;12:31:51.34;+12:39:25.2;Vir;1.00;0.67;143;14.69;14.56;;12.34;;23.68;E;;;;;;;;MCG +02-32-114,PGC 041494,SDSS J123151.34+123925.2,UGC 07672;;The 2MASS peak is 5 arcsec southwest of the optical nucleus.; -IC3458;G;12:31:44.00;+28:08:50.5;Com;0.67;0.58;76;15.73;;13.33;12.74;12.13;23.48;Sbc;;;;;;;;2MASX J12314400+2808508,SDSS J123143.99+280850.5,SDSS J123144.00+280850.5;;;B-Mag taken from LEDA. -IC3459;G;12:31:55.92;+12:10:26.5;Vir;1.11;0.86;163;14.83;;13.41;13.19;12.63;23.65;I;;;;;;;;2MASX J12315603+1210261,MCG +02-32-115,PGC 041505,SDSS J123155.91+121026.5,UGC 07674;;; -IC3460;G;12:31:50.39;+27:23:12.8;Com;0.62;0.20;109;16.22;;;;;23.16;Sd;;;;;;;;PGC 041492,SDSS J123150.38+272312.7,SDSS J123150.39+272312.8;;;B-Mag taken from LEDA. -IC3461;G;12:32:02.74;+11:53:24.3;Vir;0.73;0.55;154;15.40;14.88;12.88;12.27;12.41;23.34;E;;;;;;;;2MASX J12320274+1153231,MCG +02-32-116,PGC 041529,SDSS J123202.73+115324.2,SDSS J123202.73+115324.3;;; -IC3462;G;12:32:09.58;+15:18:03.4;Com;0.67;0.39;43;16.09;;14.55;13.70;13.82;24.07;E;;;;;;;;2MASX J12320960+1518047,PGC 041544,SDSS J123209.58+151803.3,SDSS J123209.58+151803.4;;;B-Mag taken from LEDA. -IC3463;Other;12:32:04.58;+12:19:09.9;Vir;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -IC3464;*;12:32:00.20;+26:00:17.4;Com;;;;;;;;;;;;;;;;;;;;The IC number includes a defect on the original Heidelberg plate.; -IC3465;G;12:32:12.24;+12:03:41.6;Vir;0.44;0.32;110;16.93;16.16;15.18;14.61;14.24;23.67;E;;;;;;;;2MASX J12321236+1203397,PGC 041548,SDSS J123212.24+120341.5,SDSS J123212.24+120341.6;;; -IC3466;G;12:32:05.68;+11:49:04.5;Vir;0.65;0.46;69;15.30;;;10.85;;23.26;I;;;;;;;;MCG +02-32-117,PGC 041536,SDSS J123205.68+114904.4,SDSS J123205.68+114904.5;;Noted in MCG as a possible interacting system.; -IC3467;G;12:32:24.57;+11:47:15.3;Vir;0.96;0.27;69;15.28;15.40;13.97;13.50;13.55;22.94;SABc;;;;;;;;2MASX J12322464+1147165,MCG +02-32-121,PGC 041572,SDSS J123224.57+114715.3,UGC 07686;;; -IC3468;G;12:32:14.21;+10:15:05.3;Vir;1.28;1.15;170;14.60;;11.39;10.76;10.51;23.30;E;;;;;;;;2MASX J12321420+1015055,MCG +02-32-119,PGC 041552,SDSS J123214.21+101505.2,SDSS J123214.21+101505.3,UGC 07681;;; -IC3469;G;12:32:10.98;+25:48:10.0;Com;0.34;0.27;55;17.64;;15.59;15.05;14.33;23.87;Sb;;;;;;;;2MASX J12321099+2548098,SDSS J123210.95+254810.2;;;B-Mag taken from LEDA. -IC3470;G;12:32:23.39;+11:15:46.7;Vir;0.95;0.95;21;15.00;;11.93;11.37;11.18;23.33;E;;;;;;;;2MASX J12322335+1115475,MCG +02-32-122,PGC 041573,SDSS J123223.38+111546.6,SDSS J123223.39+111546.7;;; -IC3471;G;12:32:22.82;+16:01:07.8;Com;1.00;0.58;1;15.70;;;12.77;;23.75;I;;;;;;;;MCG +03-32-063,PGC 041567;;; -IC3472;G;12:32:18.78;+24:43:41.7;Com;0.50;0.45;136;17.10;;;;;24.17;Sd;;;;;;;;LEDA 086418,SDSS J123218.77+244341.7,SDSS J123218.78+244341.7;;;B-Mag taken from LEDA. -IC3473;G;12:32:19.12;+18:14:38.9;Com;1.05;0.70;37;15.40;;;;;22.91;Sc;;;;;;;;MCG +03-32-062,PGC 041558,SDSS J123219.07+181441.0,UGC 07684;;; -IC3474;G;12:32:36.51;+02:39:41.5;Vir;2.26;0.39;43;15.00;;;;;23.61;Scd;;;;;;;;MCG +01-32-091,PGC 041599,SDSS J123236.09+023931.3,UGC 07687;;Multiple SDSS entries describe this object.; -IC3475;G;12:32:41.06;+12:46:15.6;Vir;1.56;1.29;84;15.40;13.29;;10.69;;23.92;E;;;;;;;;MCG +02-32-123,PGC 041606,UGC 07692;;; -IC3476;G;12:32:41.88;+14:03:01.6;Com;1.67;1.18;28;13.50;;11.75;11.40;10.91;22.86;Sm;;;;;;;;2MASX J12324174+1403058,IRAS 12301+1419,MCG +02-32-125,PGC 041608,SDSS J123241.88+140301.5,UGC 07695;;ASIAGO3 396 is a knot in IC 3476.; -IC3477;*;12:32:38.21;+26:02:18.4;Com;;;;;;;;;;;;;;;;;;SDSS J123238.20+260218.4;;; -IC3478;G;12:32:44.20;+14:11:46.3;Com;0.91;0.81;120;15.00;;12.14;11.48;11.45;22.92;S0;;;;;;;;2MASX J12324421+1411458,MCG +02-32-126,PGC 041614,SDSS J123244.19+141146.2,SDSS J123244.20+141146.3,UGC 07696;;; -IC3479;G;12:32:40.93;+25:24:22.0;Com;0.29;0.20;6;17.13;;14.62;13.87;13.87;23.11;Sb;;;;;;;;2MASX J12324089+2524221,LEDA 089618,SDSS J123240.92+252421.9;;;B-Mag taken from LEDA. -IC3480;**;12:32:41.49;+26:49:42.8;Com;;;;;;;;;;;;;;;;;;;;; -IC3481;G;12:32:52.26;+11:24:15.8;Vir;0.87;0.84;33;14.80;;11.09;10.28;10.13;23.18;E-S0;;;;;;;;2MASX J12325228+1124151,MCG +02-32-127,PGC 041634,SDSS J123252.25+112415.6,SDSS J123252.25+112415.7,SDSS J123252.26+112415.8;;"VCC declination should read ""+11d40.8m"", not ""+11d40.0m""."; -IC3482;G;12:33:01.00;+27:49:49.1;Com;0.43;0.18;44;16.61;;;;;23.00;Sab;;;;;;;;2MASX J12330103+2749491,PGC 1819127,SDSS J123300.99+274949.0,SDSS J123300.99+274949.1,SDSS J123301.00+274949.1;;;B-Mag taken from LEDA. -IC3483;G;12:33:10.06;+11:20:50.4;Vir;0.87;0.55;177;15.40;;12.20;11.50;11.55;23.09;SABb;;;;;;;;2MASX J12331006+1120507,MCG +02-32-129,PGC 041670,SDSS J123310.05+112050.4;;; -IC3484;G;12:33:05.30;+17:24:10.8;Com;0.78;0.63;27;15.40;;12.52;11.89;11.78;23.04;Sc;;;;;;;;MCG +03-32-066,PGC 041655;;; -IC3485;*;12:33:11.26;+09:13:02.2;Vir;;;;;;;;;;;;;;;;;;SDSS J123311.26+091302.1;;; -IC3486;G;12:33:14.01;+12:51:28.2;Vir;0.82;0.56;39;15.30;;12.88;12.41;11.94;23.58;E;;;;;;;;2MASX J12331402+1251277,MCG +02-32-131,PGC 041682,SDSS J123314.01+125128.1,SDSS J123314.01+125128.2;;Identified incorrectly as IC 3492 in CGCG.; -IC3487;G;12:33:13.44;+09:23:50.5;Vir;0.92;0.54;76;15.10;;13.12;12.08;12.23;23.57;E-S0;;;;;;;;2MASX J12331360+0923497,MCG +02-32-133,PGC 041680,SDSS J123313.43+092350.4,SDSS J123313.43+092350.5,SDSS J123313.44+092350.4;;; -IC3488;G;12:33:08.45;+26:20:57.7;Com;0.64;0.59;73;15.60;;12.06;11.32;11.15;23.39;E;;;;;;;;2MASX J12330846+2620571,MCG +05-30-019,PGC 041671,SDSS J123308.43+262057.6,SDSS J123308.44+262057.6,SDSS J123308.44+262057.7,SDSS J123308.45+262057.7;;; -IC3489;G;12:33:13.70;+12:14:49.2;Vir;0.65;0.60;5;15.20;;12.49;11.97;11.49;22.58;Sbc;;;;;;;;2MASX J12331368+1214487,IRAS 12307+1231,MCG +02-32-130,PGC 041683,SDSS J123313.69+121449.1,SDSS J123313.69+121449.2,SDSS J123313.70+121449.2;;; -IC3490;G;12:33:13.90;+10:55:42.7;Vir;0.59;0.33;64;15.60;;;13.76;;23.70;E;;;;;;;;PGC 041681,SDSS J123313.90+105542.7;;; -IC3491;G;12:33:08.99;+27:05:39.8;Com;0.83;0.21;6;16.05;;13.12;12.41;11.93;23.35;Sc;;;;;;;;2MASX J12330893+2705401,LEDA 086322,SDSS J123308.99+270539.7,SDSS J123308.99+270539.8;;;B-Mag taken from LEDA. -IC3492;G;12:33:19.78;+12:51:12.4;Vir;0.70;0.57;56;15.12;15.30;13.46;12.83;12.90;23.20;E;;;;;;;;2MASX J12331977+1251127,MCG +02-32-132,PGC 041698,SDSS J123319.77+125112.3;;;B-Mag taken from LEDA. -IC3493;*;12:33:18.88;+09:23:35.5;Vir;;;;;;;;;;;;;;;;;;SDSS J123318.87+092335.5;;; -IC3494;G;12:33:13.71;+27:35:02.8;Com;0.30;0.24;127;17.14;;15.72;15.06;14.62;23.27;E;;;;;;;;2MASX J12331373+2735021,LEDA 1812401,SDSS J123313.70+273502.6,SDSS J123313.71+273502.7,SDSS J123313.71+273502.8;;;B-Mag taken from LEDA. -IC3495;**;12:33:16.29;+26:48:31.7;Com;;;;;;;;;;;;;;;;;;SDSS J123316.28+264831.6;;; -IC3496;*;12:33:19.31;+26:45:19.6;Com;;;;;;;;;;;;;;;;;;SDSS J123319.31+264519.6;;The IC number includes a defect on the original Heidelberg plate.; -IC3497;*;12:33:28.54;+25:29:19.5;Com;;;;;;;;;;;;;;;;;;SDSS J123328.53+252919.5;;; -IC3498;G;12:33:28.97;+26:44:17.0;Com;0.69;0.24;56;16.50;;14.12;13.17;13.17;23.44;Sc;;;;;;;;2MASX J12332905+2644170,LEDA 086323,SDSS J123328.96+264416.9,SDSS J123328.97+264417.0;;; -IC3499;G;12:33:45.00;+10:59:44.6;Vir;1.61;0.56;125;14.50;;11.31;10.67;10.46;23.76;S0-a;;;;;;;;2MASX J12334500+1059445,MCG +02-32-138,PGC 041738,SDSS J123344.99+105944.6,UGC 07712;;; -IC3500;G;12:33:49.67;+13:57:46.0;Com;0.57;0.40;93;15.30;;;;;22.39;SBc;;;;;;;;PGC 041751,SDSS J123349.66+135745.9,SDSS J123349.67+135746.0;;; -IC3501;G;12:33:51.62;+13:19:20.8;Vir;0.93;0.84;25;15.00;;12.07;11.56;11.24;23.40;E;;;;;;;;2MASX J12335160+1319213,MCG +02-32-139,PGC 041754,SDSS J123351.61+131920.7,SDSS J123351.61+131920.8,SDSS J123351.62+131920.8;;; -IC3502;G;12:33:42.33;+26:37:02.5;Com;0.76;0.22;5;17.44;;;;;24.51;SBm;;;;;;;;SDSS J123342.33+263702.4,SDSS J123342.33+263702.5;;The IC number includes a neighboring star.;B-Mag taken from LEDA. -IC3503;*;12:33:48.27;+37:47:21.5;CVn;;;;;;;;;;;;;;;;;;SDSS J123348.27+374721.5;;; -IC3504;*;12:34:07.85;+06:53:10.9;Vir;;;;;;;;;;;;;;;;;;SDSS J123407.85+065310.9;;; -IC3505;G;12:34:10.31;+15:58:05.6;Com;0.85;0.35;172;15.30;;12.41;11.72;11.31;22.68;SBcd;;;;;;;;2MASX J12341031+1558058,IRAS 12316+1614,MCG +03-32-070,PGC 041792,SDSS J123410.30+155805.5,SDSS J123410.31+155805.6;;; -IC3506;G;12:34:06.74;+12:44:29.8;Vir;0.71;0.65;49;16.67;15.93;;12.83;;24.02;E;;;;;;;;PGC 041782,SDSS J123406.73+124429.7,SDSS J123406.74+124429.8;;; -IC3507;G;12:34:04.45;+25:21:46.2;Com;0.41;0.35;158;17.26;;14.08;13.45;12.83;24.20;E;;;;;;;;2MASX J12340447+2521461,LEDA 3089514,SDSS J123404.44+252146.1,SDSS J123404.44+252146.2;;;B-Mag taken from LEDA. -IC3508;G;12:34:06.95;+26:40:14.8;Com;1.03;0.95;49;15.40;;12.07;11.26;11.06;24.13;S0-a;;;;;;;;2MASX J12340693+2640151,MCG +05-30-021,PGC 041774,SDSS J123406.94+264014.8,SDSS J123406.95+264014.8;;; -IC3509;G;12:34:11.53;+12:02:56.3;Vir;1.01;0.72;69;15.30;;12.67;12.16;11.98;24.03;E;;;;;;;;2MASX J12341156+1202558,PGC 041797,SDSS J123411.53+120256.2,SDSS J123411.54+120256.3;;; -IC3510;G;12:34:14.81;+11:04:17.5;Vir;0.81;0.62;15;15.20;;12.30;11.79;11.42;23.26;E;;;;;;;;2MASX J12341479+1104177,MCG +02-32-142,PGC 041803,SDSS J123414.80+110417.4,UGC 07728;;; -IC3511;*;12:34:09.49;+27:20:55.1;Com;;;;;;;;;;;;;;;;;;;;The IC number includes a defect on the original Heidelberg plate.; -IC3512;*;12:34:09.66;+27:21:40.0;Com;;;;;;;;;;;;;;;;;;SDSS J123409.66+272140.0;;The IC number includes a defect on the original Heidelberg plate.; -IC3513;*;12:34:11.61;+27:19:50.0;Com;;;;;;;;;;;;;;;;;;SDSS J123411.60+271950.0;;The IC number includes a defect on the original Heidelberg plate.; -IC3514;**;12:34:15.79;+26:42:02.2;Com;;;;;;;;;;;;;;;;;;;;; -IC3515;G;12:34:16.10;+27:51:44.1;Com;0.65;0.26;62;15.61;;12.65;11.65;11.60;22.93;Sbc;;;;;;;;2MASX J12341609+2751441,PGC 1819983,SDSS J123416.09+275144.0,SDSS J123416.09+275144.1;;;B-Mag taken from LEDA. -IC3516;G;12:34:17.14;+27:27:08.3;Com;0.87;0.17;70;16.00;;13.07;12.42;12.11;23.40;Sbc;;;;;;;;2MASX J12341734+2727084,MCG +05-30-022,PGC 041808,SDSS J123417.14+272708.2,SDSS J123417.14+272708.3,UGC 07724;;The position in 1989H&RHI.C...0000H is incorrect.; -IC3517;G;12:34:30.76;+09:09:17.1;Vir;1.16;0.72;16;15.30;;;11.41;;23.94;SABd;;;;;;;;MCG +02-32-143,PGC 041829,UGC 07733;;; -IC3518;G;12:34:31.29;+09:37:24.4;Vir;1.32;0.54;37;14.79;;;;;23.34;I;;;;;;;;2MASX J12343187+0937347,PGC 041828,SDSS J123431.29+093724.3,SDSS J123431.29+093724.4,UGC 07734;;The 2MASX position is for a knot 13 arcsec northeast of the center.;B-Mag taken from LEDA. -IC3519;G;12:34:38.40;+15:36:09.7;Com;0.68;0.49;14;15.88;;;;;23.89;E;;;;;;;;PGC 041845;;;B-Mag taken from LEDA. -IC3520;G;12:34:31.81;+13:30:13.2;Com;0.85;0.60;26;15.40;;;12.71;;23.88;Sd;;;;;;;;PGC 041830,SDSS J123431.80+133013.2,SDSS J123431.81+133013.2;;2MASS position is off the western edge.; -IC3521;G;12:34:39.51;+07:09:36.7;Vir;1.39;1.03;21;13.74;;11.93;11.31;11.01;22.93;IB;;;;;;;;2MASX J12343901+0709260,IRAS 12321+0726,MCG +01-32-106,PGC 041847,SDSS J123439.50+070936.6,SDSS J123439.51+070936.7,UGC 07736;;2MASS position is in the southwestern portion.;B-Mag taken from LEDA. -IC3522;G;12:34:45.58;+15:13:14.8;Com;1.08;0.58;93;15.41;;;12.64;;23.77;I;;;;;;;;MCG +03-32-072,PGC 041865,SDSS J123445.57+151314.8,SDSS J123445.58+151314.8,UGC 07737;;;B-Mag taken from LEDA. -IC3523;G;12:34:39.40;+14:01:00.4;Com;0.38;0.32;139;17.08;;;;;23.74;Sbc;;;;;;;;2MASX J12343931+1401002,PGC 169559,SDSS J123439.40+140100.3,SDSS J123439.40+140100.4;;;B-Mag taken from LEDA. -IC3524;*;12:34:43.10;+14:14:39.6;Com;;;;;;;;;;;;;;;;;;SDSS J123443.10+141439.5;;; -IC3525;G;12:34:46.44;+10:10:36.1;Vir;0.36;0.29;6;16.49;;;;;23.36;Sc;;;;;;;;LEDA 1375716,SDSS J123446.43+101036.0,SDSS J123446.43+101036.1;;;B-Mag taken from LEDA. -IC3526;**;12:34:40.61;+25:41:02.9;Com;;;;;;;;;;;;;;;;;;;;; -IC3527;**;12:34:42.29;+26:09:18.4;Com;;;;;;;;;;;;;;;;;;;;; -IC3528;G;12:34:55.90;+15:33:56.2;Com;0.33;0.33;115;17.62;17.00;12.47;11.79;11.37;21.76;SABb;;;;;;;;2MASX J12345592+1533561,MCG +03-32-074a,PGC 041882,SDSS J123455.90+153356.1,SDSS J123455.90+153356.2,SDSS J123455.91+153356.2,UGC 07742 NOTES01;;; -IC3529;*;12:34:49.76;+25:41:55.6;Com;;;;;;;;;;;;;;;;;;SDSS J123449.76+254155.5;;; -IC3530;G;12:34:49.32;+17:48:51.4;Com;1.75;1.22;133;15.20;;12.30;11.66;11.43;24.48;E-S0;;;;;;;;2MASX J12344930+1748522,MCG +03-32-073,PGC 041853;;; -IC3531;G;12:34:56.54;+26:37:35.7;Com;0.43;0.39;80;16.55;;13.91;13.20;12.93;23.56;E;;;;;;;;2MASX J12345653+2637358,SDSS J123456.54+263735.6,SDSS J123456.55+263735.7;;;B-Mag taken from LEDA. -IC3532;*;12:34:57.52;+25:52:50.3;Com;;;;;;;;;;;;;;;;;;;;The IC number may include a faint neighboring galaxy.; -IC3533;G;12:35:01.28;+25:46:47.0;Com;0.44;0.30;27;15.70;;13.09;12.25;11.99;22.84;Sab;;;;;;;;2MASX J12350125+2546468,PGC 041891,SDSS J123501.27+254647.0,SDSS J123501.28+254646.9;;; -IC3534;G;12:34:52.13;+14:58:41.4;Com;0.48;0.47;106;16.12;;;;;23.23;SBc;;;;;;;;2MASX J12345214+1458412,PGC 165235,SDSS J123452.13+145841.4;;;B-Mag taken from LEDA. -IC3535;*;12:35:10.90;+25:43:55.1;Com;;;;;;;;;;;;;;;;;;;;; -IC3536;G;12:35:12.49;+26:32:00.3;Com;0.87;0.19;155;16.13;;13.97;13.30;13.17;23.53;Sc;;;;;;;;2MASX J12351248+2631598,MCG +05-30-024,PGC 041912,SDSS J123512.48+263200.3,SDSS J123512.49+263200.3;;;B-Mag taken from LEDA. -IC3537;*;12:35:22.46;+07:39:10.8;Vir;;;;;;;;;;;;;;;;;;SDSS J123522.46+073910.8;;; -IC3538;*;12:35:15.56;+26:14:07.9;Com;;;;;;;;;;;;;;;;;;;;; -IC3539;*;12:35:20.09;+23:58:59.3;Com;;;;;;;;;;;;;;;;;;SDSS J123520.08+235859.2;;; -IC3540;G;12:35:27.23;+12:45:00.9;Vir;0.88;0.79;68;14.80;;12.15;11.51;11.28;23.04;S0;;;;;;;;2MASX J12352723+1245014,MCG +02-32-146,PGC 041936,SDSS J123527.22+124500.7,SDSS J123527.22+124500.8;;; -IC3541;*;12:35:21.72;+23:58:30.9;Com;;;;;;;;;;;;;;;;;;SDSS J123521.72+235830.8;;; -IC3542;G;12:35:41.19;+11:40:01.8;Vir;0.66;0.43;164;15.65;;12.54;11.80;11.62;23.19;SBb;;;;;;;;2MASX J12354122+1140020,IRAS 12332+1156,PGC 041970,SDSS J123541.18+114001.7,SDSS J123541.18+114001.8,SDSS J123541.19+114001.8;;Listed incorrectly as CGCG 1233.2+1158 (non-existent galaxy) in VCC.;B-Mag taken from LEDA. -IC3543;Dup;12:35:41.42;+26:17:09.0;Com;;;;;;;;;;;;;;;4565C;;;;;; -IC3544;**;12:35:47.40;+14:18:02.0;Com;;;;;;;;;;;;;;;;;;;;; -IC3545;Dup;12:35:41.18;+26:31:23.2;Com;;;;;;;;;;;;;;;4555;;;;;; -IC3546;Dup;12:35:41.69;+26:13:19.9;Com;;;;;;;;;;;;;;;4565B;;;;;; -IC3547;*;12:35:48.89;+26:19:44.8;Com;;;;;;;;;;;;;;;;;;SDSS J123548.88+261944.7;;; -IC3548;G;12:35:56.63;+10:56:10.7;Vir;0.74;0.48;122;16.10;;;12.82;;24.30;E;;;;;;;;PGC 042001,SDSS J123556.62+105610.6;;;B-Mag taken from LEDA. -IC3549;*;12:35:50.85;+26:23:42.8;Com;;;;;;14.55;13.97;13.91;;;;;;;;;;2MASS J12355084+2623430,SDSS J123550.85+262342.8;;; -IC3550;Dup;12:35:52.12;+27:55:55.5;Com;;;;;;;;;;;;;;;4559C;;;;;; -IC3551;HII;12:35:53.71;+27:57:51.0;Com;;;;;;;;;;;;;;;;;;;;Group of HII regions in NGC 4559.; -IC3552;HII;12:35:53.90;+27:59:38.0;Com;;;;;;;;;;;;;;;;;;;;HII region in NGC 4559.; -IC3553;*;12:35:55.93;+26:11:35.0;Com;;;;;;;;;;;;;;;;;;SDSS J123555.93+261135.0;;; -IC3554;*;12:35:55.19;+27:55:38.4;Com;;;;;;;;;;;;;;;;;;SDSS J123555.19+275538.3;;; -IC3555;HII;12:35:55.95;+27:59:20.0;Com;;;;;;;;;;;;;;;;;;;;Group of HII regions in NGC 4559.; -IC3556;G;12:35:58.46;+26:57:57.8;Com;0.56;0.34;177;15.60;;12.71;12.08;11.81;23.08;S0;;;;;;;;2MASX J12355844+2657570,MCG +05-30-029,PGC 042005,SDSS J123558.45+265757.7,SDSS J123558.45+265757.8,UGC 07765 NOTES03;;UGC NOTES misprints the identification as 'NGC 4536'.; -IC3557;GPair;12:36:08.17;+16:38:27.1;Com;0.40;;;;;;;;;;;;;;;;;MCG +03-32-077;;;Diameter of the group inferred by the author. -IC3557 NED01;G;12:36:08.14;+16:38:29.3;Com;0.95;0.90;85;15.97;;12.20;11.51;11.05;24.73;E;;;;;;;;2MASX J12360813+1638291,MCG +03-32-077 NED01,PGC 042015,SDSS J123608.14+163829.3;;;B-Mag taken from LEDA. -IC3557 NED02;G;12:36:08.44;+16:38:26.1;Com;0.10;0.10;129;17.56;;;;;;;;;;;;;;SDSS J123608.45+163825.3,SDSS J123608.45+163825.2;;Forms a close GPair with IC 3557 NED01.;B-Mag taken from LEDA -IC3558;G;12:36:02.80;+11:50:59.3;Vir;0.33;0.30;51;17.39;;14.62;13.56;13.23;23.71;Sbc;;;;;;;;2MASX J12360281+1150595,PGC 165253,SDSS J123602.79+115059.2,SDSS J123602.80+115059.3;;;B-Mag taken from LEDA. -IC3559;G;12:36:03.36;+26:59:14.5;Com;0.50;0.18;69;15.60;;13.68;12.92;12.38;23.15;Sbc;;;;;;;;2MASX J12360338+2659141,MCG +05-30-031,PGC 042012,SDSS J123603.35+265914.4,SDSS J123603.36+265914.5;;; -IC3560;G;12:36:03.91;+27:04:41.5;Com;0.78;0.64;52;16.38;;13.04;12.26;12.01;24.20;SBab;;;;;;;;2MASX J12360390+2704411,LEDA 3089322,SDSS J123603.90+270441.5,SDSS J123603.91+270441.5;;;B-Mag taken from LEDA. -IC3561;G;12:36:04.79;+26:53:58.6;Com;0.60;0.19;71;15.70;;12.54;11.71;11.62;23.41;E;;;;;;;;2MASX J12360480+2653581,MCG +05-30-032,PGC 042013,SDSS J123604.79+265358.5,SDSS J123604.80+265358.5;;; -IC3562;G;12:36:10.56;+09:55:21.4;Vir;0.93;0.36;46;15.60;;;13.95;;23.93;I;;;;;;;;PGC 042021,SDSS J123610.55+095521.4,SDSS J123610.56+095521.4;;; -IC3563;HII;12:36:07.22;+27:55:38.5;Com;;;;;;;;;;;;;;;;;;;;HII region in NGC 3559.; -IC3564;*Ass;12:36:08.09;+27:55:42.2;Com;;;;;;;;;;;;;;;;;;;;"Stellar association in NGC 3559; IC number includes a neighboring star."; -IC3565;G;12:36:12.26;+26:45:22.0;Com;0.31;0.23;23;16.96;;14.49;13.96;13.72;23.48;E;;;;;;;;2MASX J12361227+2645221,LEDA 1787382,SDSS J123612.26+264521.9,SDSS J123612.26+264522.0;;;B-Mag taken from LEDA. -IC3566;Other;12:36:21.72;+11:09:53.6;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3567;G;12:36:22.72;+13:36:10.3;Com;0.67;0.52;15;15.30;;13.47;12.85;12.71;22.90;Sbc;;;;;;;;2MASX J12362267+1336101,PGC 042044,SDSS J123622.72+133610.3;;; -IC3568;PN;12:33:06.78;+82:33:50.1;Cam;0.17;;;12.80;10.60;11.37;11.40;10.84;;;;;;;;;;2MASX J12330668+8233506,IRAS 12317+8250,PK 123+34 1,PN G123.6+34.5,UGC 07731;;; -IC3569;Dup;12:36:08.20;+19:19:22.5;Com;;;;;;;;;;;;;;;4561;;;;;; -IC3570;*;12:36:18.28;+24:04:42.5;Com;;;;;;;;;;;;;;;;;;SDSS J123618.27+240442.5;;; -IC3571;G;12:36:19.99;+26:05:01.6;Com;0.60;0.51;121;17.52;;;;;25.03;I;;;;;;;;PGC 2793674,SDSS J123619.99+260501.5;;;B-Mag taken from LEDA. -IC3572;**;12:36:27.93;+11:37:06.6;Vir;;;;;;;;;;;;;;;;;;;;; -IC3573;G;12:36:27.22;+11:45:32.8;Vir;0.46;0.32;141;16.65;;13.58;12.77;12.62;23.40;Sc;;;;;;;;2MASX J12362720+1145335,LEDA 165255,SDSS J123627.18+114533.7;;;B-Mag taken from LEDA. -IC3574;G;12:36:27.83;+12:24:18.6;Vir;0.73;0.58;121;15.34;;12.17;11.50;11.14;23.54;E;;;;;;;;2MASX J12362782+1224191,PGC 042052,SDSS J123627.82+122418.6;;;B-Mag taken from LEDA. -IC3575;G;12:36:32.38;+13:44:54.3;Com;0.66;0.47;156;16.26;;;;;24.21;E;;;;;;;;PGC 042062,SDSS J123632.37+134454.3,SDSS J123632.38+134454.3;;;B-Mag taken from LEDA. -IC3576;G;12:36:37.68;+06:37:15.2;Vir;2.30;2.17;0;15.90;15.40;;11.83;;24.86;Sm;;;;;;;;MCG +01-32-112,PGC 042074,SDSS J123637.67+063715.1,SDSS J123637.67+063715.2,SDSS J123637.68+063715.2,UGC 07781;;; -IC3577;Other;12:36:36.27;+11:53:49.7;Vir;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC3578;G;12:36:39.41;+11:06:06.7;Vir;0.85;0.35;138;15.10;;;12.64;;22.90;Sc;;;;;;;;MCG +02-32-153,PGC 042079,SDSS J123639.41+110606.7,UGC 07782;;; -IC3579;*;12:36:32.74;+26:06:14.9;Com;;;;;;;16.67;15.76;;;;;;;;;;2MASS J12363272+2606149,SDSS J123632.74+260614.9;;; -IC3580;G;12:36:29.23;+18:18:01.8;Com;0.86;0.76;57;15.67;;;;;24.23;E;;;;;;;;2MASX J12362919+1818022,SDSS J123629.22+181801.7,SDSS J123629.23+181801.7;;;B-Mag taken from LEDA. -IC3581;G;12:36:38.11;+24:25:44.5;Com;0.79;0.48;49;14.90;;11.82;11.12;10.73;22.74;SBb;;;;;;;;2MASX J12363799+2425429,IRAS 12341+2442,MCG +04-30-009,PGC 042076,SDSS J123637.87+242541.8,SDSS J123638.05+242543.5,SDSS J123638.06+242543.5,SDSS J123638.11+242544.4;;; -IC3582;G;12:36:36.91;+26:14:04.8;Com;0.29;0.25;54;16.67;;13.87;13.03;13.05;23.02;E;;;;;;;;2MASX J12363689+2614049,LEDA 1768338,SDSS J123636.90+261404.8,SDSS J123636.91+261404.8;;;B-Mag taken from LEDA. -IC3583;G;12:36:43.49;+13:15:33.6;Vir;1.05;0.52;5;13.31;;;11.51;;21.23;IB;;;;;;;;IRAS 12341+1332,MCG +02-32-154,PGC 042081,UGC 07784;;; -IC3584;*;12:36:45.10;+12:13:59.0;Vir;;;;;;;;;;;;;;;;;;;;; -IC3585;G;12:36:39.90;+26:49:47.8;Com;0.82;0.67;108;15.00;;11.45;10.70;10.51;23.31;S0;;;;;;;;2MASX J12363990+2649479,MCG +05-30-035,PGC 042067,SDSS J123639.89+264947.7,SDSS J123639.90+264947.7,SDSS J123639.90+264947.8,SDSS J123639.91+264947.7,UGC 07783;;; -IC3586;G;12:36:54.85;+12:31:12.3;Vir;1.16;1.00;73;15.30;;13.02;12.46;12.13;23.58;S0;;;;;;;;2MASX J12365485+1231124,MCG +02-32-157,PGC 042099,SDSS J123654.84+123112.2,SDSS J123654.84+123112.3;;; -IC3587;G;12:36:48.33;+27:32:54.7;Com;1.43;0.21;121;16.00;;12.57;11.68;11.25;23.78;SBc;;;;;;;;2MASX J12364835+2732549,IRAS 12343+2749,MCG +05-30-036,PGC 042083,SDSS J123648.36+273256.2,SDSS J123648.37+273256.1,SDSS J123648.37+273256.2,UGC 07787;;Multiple SDSS entries describe this object.; -IC3588;Dup;12:36:56.38;+14:13:02.5;Com;;;;;;;;;;;;;;;4571;;;;;; -IC3589;*;12:37:01.20;+06:56:13.2;Vir;;;;15.60;;13.93;13.58;13.54;;;;;;;;;;2MASS J12370120+0656133,SDSS J123701.20+065613.2;;IC 3591 = UGC 07790 is often mistakenly called IC 3589.; -IC3590;G;12:36:50.71;+27:16:41.3;Com;0.91;0.24;127;15.62;;12.51;11.81;11.57;23.44;Sab;;;;;;;;2MASX J12365067+2716409,LEDA 1803149,SDSS J123650.70+271641.3,SDSS J123650.71+271641.3;;;B-Mag taken from LEDA. -IC3591;G;12:37:03.04;+06:55:35.9;Vir;0.79;0.49;46;14.60;;;11.29;;22.20;I;;;;;;;;MCG +01-32-115,PGC 042108,UGC 07790;;HOLM 428B = IC 3589 is a star.; -IC3592;Dup;12:36:53.44;+27:51:43.3;Com;;;;;;;;;;;;;;;4559A;;;;;; -IC3593;Dup;12:36:53.93;+27:44:56.8;Com;;;;;;;;;;;;;;;4559B;;;;;; -IC3594;*;12:36:56.39;+26:06:55.8;Com;;;;;;;;;;;;;;;;;;SDSS J123656.39+260655.7;;The IC number includes a defect on the original Heidelberg plate.; -IC3595;G;12:37:06.40;+23:47:12.8;Com;0.39;0.27;109;16.80;;;;;23.51;Sc;;;;;;;;2MASX J12370638+2347120,PGC 1693713,SDSS J123706.39+234712.7,SDSS J123706.40+234712.7;;;B-Mag taken from LEDA. -IC3596;Other;12:37:18.90;+26:31:15.3;Com;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC3597;G;12:37:24.64;+23:51:50.6;Com;0.82;0.62;78;16.65;;;;;24.80;SBc;;;;;;;;LEDA 086325,SDSS J123724.63+235150.5,SDSS J123724.64+235150.6;;;B-Mag taken from LEDA. -IC3598;G;12:37:21.08;+28:12:29.4;Com;1.41;0.40;139;14.74;;11.68;10.97;10.64;23.77;Sab;;;;;;;;2MASX J12372104+2812294,MCG +05-30-040,PGC 042137,SDSS J123721.07+281229.3,SDSS J123721.08+281229.3,SDSS J123721.08+281229.4,UGC 07791;;; -IC3599;G;12:37:41.20;+26:42:27.6;Com;0.51;0.30;129;15.70;16.50;12.98;12.55;11.97;22.84;Sb;;;;;;;;2MASX J12374117+2642272,PGC 042154,SDSS J123741.18+264227.4,SDSS J123741.19+264227.5,SDSS J123741.20+264227.5;;; -IC3600;G;12:37:41.16;+27:07:46.4;Com;0.67;0.61;134;15.50;;13.72;12.78;12.72;23.56;S0;;;;;;;;2MASX J12374116+2707442,MCG +05-30-041,PGC 042161,SDSS J123741.16+270746.4;;; -IC3601;G;12:37:53.64;+15:13:28.8;Com;0.79;0.52;152;15.73;;12.41;11.73;11.63;23.84;E?;;;;;;;;2MASX J12375363+1513287,PGC 165275,SDSS J123753.64+151328.7;;;B-Mag taken from LEDA. -IC3602;G;12:38:18.30;+10:04:22.2;Vir;0.82;0.28;74;16.35;;13.04;12.34;11.84;24.71;E;;;;;;;;2MASX J12381827+1004222,LEDA 3091291,SDSS J123818.30+100422.2;;The IC identification is not certain.;B-Mag taken from LEDA. -IC3603;G;12:38:16.15;+15:34:11.3;Com;0.36;0.24;157;16.12;;12.78;12.23;11.74;;E;;;;;;;;2MASX J12381616+1534110,PGC 3090633,SDSS J123816.15+153411.2,SDSS J123816.15+153411.3;;;B-Mag taken from LEDA. -IC3604;G;12:38:20.72;+11:43:50.6;Vir;0.52;0.36;174;15.98;;;;;23.37;SBa;;;;;;;;2MASX J12382074+1143502,PGC 1397945,SDSS J123820.71+114350.5,SDSS J123820.71+114350.6,SDSS J123820.72+114350.6;;;B-Mag taken from LEDA. -IC3605;G;12:38:20.95;+19:32:28.8;Com;0.70;0.45;12;16.50;;;;;23.36;Sm;;;;;;;;LEDA 086642,SDSS J123820.95+193228.7;;; -IC3606;G;12:38:25.09;+12:36:38.2;Vir;0.61;0.49;16;16.49;;12.91;12.15;11.88;24.27;E;;;;;;;;2MASX J12382508+1236380,PGC 1412725,SDSS J123825.09+123638.2;;;B-Mag taken from LEDA. -IC3607;G;12:38:32.17;+10:22:35.5;Vir;0.42;0.25;141;16.58;;;;;23.49;E;;;;;;;;PGC 042248,SDSS J123832.16+102235.5;;;B-Mag taken from LEDA. -IC3608;G;12:38:37.33;+10:28:33.2;Vir;3.35;0.45;93;15.40;;12.12;11.07;10.69;24.76;Sb;;;;;;;;2MASX J12383732+1028342,PGC 042264,SDSS J123837.33+102833.1,SDSS J123837.33+102833.2,SDSS J123837.35+102833.1,UGC 07808;;; -IC3609;G;12:38:34.72;+14:21:08.7;Com;0.38;0.26;18;14.96;;;;;21.45;Sa;;;;;;;;2MASX J12383473+1421082,PGC 042251,SDSS J123834.72+142108.6,SDSS J123834.72+142108.7;;;B-Mag taken from LEDA. -IC3610;G;12:38:47.14;+26:52:22.3;Com;0.32;0.18;130;17.43;;15.24;15.03;14.40;23.42;Sb;;;;;;;;2MASX J12384716+2652221,PGC 1790902,SDSS J123847.13+265222.2,SDSS J123847.13+265222.3,SDSS J123847.14+265222.3;;The IC number also includes a neighboring star.;B-Mag taken from LEDA. -IC3611;G;12:39:04.14;+13:21:48.7;Vir;1.37;0.70;132;14.70;;12.37;11.84;11.42;23.14;S?;;;;;;;;2MASX J12390399+1321496,MCG +02-32-164,PGC 042307,SDSS J123904.05+132149.2,SDSS J123904.22+132146.6,SDSS J123904.22+132146.7,UGC 07817;;; -IC3612;G;12:39:04.70;+14:43:52.1;Com;1.05;0.63;44;15.40;;13.94;13.50;13.57;23.84;S0;;;;;;3616;;2MASX J12390464+1443456,PGC 042309,SDSS J123904.70+144352.0,SDSS J123904.71+144352.1,UGC 07814;;; -IC3613;G;12:39:04.79;+13:45:32.4;Com;0.49;0.28;159;17.03;;13.09;12.36;12.04;24.08;S0-a;;;;;;;;2MASX J12390481+1345316,PGC 165284,SDSS J123904.78+134532.4,SDSS J123904.79+134532.4;;;B-Mag taken from LEDA. -IC3614;G;12:39:01.08;+26:18:10.2;Com;0.30;0.22;158;17.73;;;;;23.56;Sc;;;;;;;;PGC 169886,SDSS J123901.07+261810.2;;The IC number includes a neighboring star.;B-Mag taken from LEDA. -IC3615;G;12:39:01.61;+18:12:02.4;Com;1.06;0.31;11;15.40;;12.97;12.21;12.38;23.09;Sc;;;;;;;;2MASX J12390161+1812023,MCG +03-32-079,PGC 042306,SDSS J123901.61+181202.7,UGC 07815;;; -IC3616;Dup;12:39:04.70;+14:43:52.1;Com;;;;;;;;;;;;;;;;3612;;;;; -IC3617;G;12:39:25.00;+07:57:57.0;Vir;0.74;0.31;63;14.80;;;12.19;;21.79;I;;;;;;;;MCG +01-32-127,PGC 042348,UGC 07822;;; -IC3618;G;12:39:17.13;+26:40:40.0;Com;0.50;0.48;74;15.50;;12.27;11.48;11.17;22.84;S0;;;;;;;;2MASX J12391710+2640394,PGC 042315,SDSS J123917.12+264039.9,SDSS J123917.13+264040.0;;; -IC3619;**;12:39:18.78;+24:08:32.7;Com;;;;;;;;;;;;;;;;;;;;; -IC3620;G;12:39:18.02;+27:54:31.1;Com;0.76;0.22;165;15.60;;12.80;12.09;11.74;22.86;Sc;;;;;;;;2MASX J12391801+2754314,PGC 042330,SDSS J123918.01+275431.0,SDSS J123918.02+275431.1;;; -IC3621;G;12:39:33.58;+15:30:09.4;Com;1.01;0.75;14;15.00;;12.23;11.46;11.27;24.52;E;;;;;;;;2MASX J12393357+1530091,LEDA 3090634,SDSS J123933.58+153009.3;;; -IC3622;G;12:39:32.48;+15:25:55.4;Com;0.30;0.25;131;16.03;;;;;;Sbc;;;;;;;;2MASX J12393247+1525550,SDSS J123932.48+152555.3,SDSS J123932.49+152555.4;;;B-Mag taken from LEDA. -IC3623;G;12:39:27.62;+27:06:08.4;Com;0.80;0.58;56;15.20;;12.13;11.43;11.16;23.51;E;;;;;;;;2MASX J12392764+2706084,MCG +05-30-050,PGC 042353,SDSS J123927.62+270608.3,SDSS J123927.62+270608.4,SDSS J123927.63+270608.3;;; -IC3624;G;12:39:34.48;+11:58:55.9;Vir;0.49;0.40;99;16.52;;;;;23.67;Sb;;;;;;;;2MASX J12393449+1158561,PGC 1401857,SDSS J123934.47+115855.8,SDSS J123934.47+115855.9,SDSS J123934.48+115855.9;;;B-Mag taken from LEDA. -IC3625;G;12:39:33.17;+10:58:03.6;Vir;0.43;0.41;80;15.50;;12.55;11.77;11.46;22.37;S0;;;;;;;;2MASX J12393314+1058037,MCG +02-32-165,PGC 042361,PGC 042364,SDSS J123933.16+105803.6,SDSS J123933.17+105803.6;;Identified by VCC as bright component of CGCG 1237.1+1115.; -IC3626;G;12:39:31.64;+25:40:38.6;Com;0.54;0.32;15;15.70;;13.17;12.49;12.16;23.01;SBc;;;;;;;;2MASX J12393166+2540384,PGC 042355,SDSS J123931.64+254038.6;;; -IC3627;G;12:39:32.00;+27:29:50.2;Com;0.44;0.25;76;16.37;;13.22;12.54;12.25;23.47;E;;;;;;;;2MASX J12393201+2729504,IRAS 12370+2746,LEDA 139990,SDSS J123932.01+272950.4,SDSS J123932.01+272950.5;;;B-Mag taken from LEDA. -IC3628;*;12:39:38.81;+26:14:20.0;Com;;;;;;;;;;;;;;;;;;SDSS J123938.80+261420.0;;; -IC3629;G;12:39:46.66;+13:31:59.9;Com;0.98;0.47;73;15.20;;12.62;11.86;11.51;23.49;SBab;;;;;;;;2MASX J12394667+1332001,MCG +02-32-167,PGC 042387,SDSS J123946.65+133159.8,SDSS J123946.66+133159.8,SDSS J123946.66+133159.9,SDSS J123946.67+133159.9;;; -IC3630;*;12:39:46.60;+25:25:57.1;Com;;;;;;;;;;;;;;;;;;SDSS J123946.59+252557.0;;; -IC3631;G;12:39:48.01;+12:58:26.3;Vir;1.06;0.72;91;14.50;;11.91;11.26;11.11;23.05;S0-a;;;;;;;;2MASX J12394804+1258261,MCG +02-32-169,PGC 042389,SDSS J123948.00+125826.2,SDSS J123948.01+125826.2,SDSS J123948.01+125826.3,UGC 07825;;; -IC3632;G;12:40:00.00;+26:40:56.0;Com;0.40;0.30;92;16.75;;15.09;14.44;14.09;24.09;E;;;;;;;;2MASX J12395987+2640552,PGC 169888;;;B-Mag taken from LEDA. -IC3633;G;12:40:11.25;+09:53:46.1;Vir;0.58;0.44;125;15.40;;14.17;13.42;13.50;23.45;E;;;;;;;;2MASX J12401125+0953454,PGC 042426,SDSS J124011.25+095346.0,SDSS J124011.25+095346.1;;; -IC3634;G;12:40:11.36;+09:50:52.0;Vir;0.93;0.72;48;15.75;;;13.69;;24.47;E;;;;;;;;PGC 042425,SDSS J124011.36+095051.9;;Multiple SDSS entries describe this source.;B-Mag taken from LEDA. -IC3635;G;12:40:13.38;+12:52:29.2;Vir;0.85;0.65;165;15.50;;13.24;12.53;12.74;23.47;S?;;;;;;;;2MASX J12401333+1252299,PGC 042430,SDSS J124013.37+125229.1,SDSS J124013.37+125229.2,UGC 07830;;; -IC3636;**;12:40:15.54;+22:04:28.4;Com;;;;;;;;;;;;;;;;;;;;; -IC3637;G;12:40:19.57;+14:42:54.0;Com;1.23;0.74;19;15.60;;;11.52;;24.00;E-S0;;;;;;;;PGC 042443,SDSS J124019.56+144253.9,SDSS J124019.57+144254.0;;; -IC3638;G;12:40:16.60;+10:31:06.7;Vir;0.68;0.58;55;14.60;;12.62;11.74;11.47;22.20;Sbc;;;;;;;;2MASX J12401660+1031064,MCG +02-32-172,PGC 042435,SDSS J124016.59+103106.7;;; -IC3639;G;12:40:52.85;-36:45:21.1;Cen;1.24;1.16;41;13.01;13.50;10.57;9.93;9.60;22.21;SBbc;;;;;;;;2MASX J12405287-3645210,ESO 381-008,ESO-LV 381-0080,IRAS 12381-3628,MCG -06-28-011,PGC 042504;;; -IC3640;G;12:40:25.20;+26:31:27.0;Com;0.45;0.25;47;15.97;;13.11;12.44;12.18;23.31;E;;;;;;;;2MASX J12402516+2631287,LEDA 169892;;;B-Mag taken from LEDA. -IC3641;G;12:40:26.88;+26:31:17.7;Com;0.66;0.14;174;17.90;;;;;25.75;;;;;;;;;PGC 2800811,SDSS J124026.87+263117.7,SDSS J124026.88+263117.7;;;B-Mag taken from LEDA. -IC3642;G;12:40:25.73;+26:43:52.4;Com;0.37;0.34;26;16.41;;14.05;13.39;12.84;23.16;E;;;;;;;;2MASX J12402569+2643517,PGC 1786619;;;B-Mag taken from LEDA. -IC3643;G;12:40:40.87;+12:24:23.7;Vir;0.53;0.34;109;16.61;;;;;23.78;Sb;;;;;;;;2MASX J12404087+1224237,PGC 1408965,SDSS J124040.86+122423.7,SDSS J124040.87+122423.7;;;B-Mag taken from LEDA. -IC3644;G;12:40:36.23;+26:30:16.6;Com;0.91;0.23;15;15.40;;12.72;11.92;11.58;23.72;SBb;;;;;;;;2MASX J12403619+2630207,MCG +05-30-052,PGC 042479,SDSS J124036.23+263016.6;;; -IC3645;*;12:40:37.61;+26:32:28.9;Com;;;;;;;;;;;;;;;;;;SDSS J124037.60+263228.9;;; -IC3646;G;12:40:38.50;+26:31:34.3;Com;0.69;0.30;89;15.40;;13.30;12.81;12.53;22.90;Sbc;;;;;;;;2MASX J12403850+2631336,MCG +05-30-053,PGC 042478,SDSS J124038.50+263134.3;;; -IC3647;G;12:40:53.11;+10:28:31.3;Vir;1.34;0.84;140;15.30;;;11.75;;24.08;I;;;;;;;;MCG +02-32-173,PGC 042503,SDSS J124053.11+102831.3,UGC 07834;;Multiple SDSS entries describe this source.; -IC3648;*;12:40:52.19;+12:59:06.0;Vir;;;;;;;;;;;;;;;;;;;;; -IC3649;G;12:40:49.69;+21:06:17.1;Com;0.30;0.26;97;16.94;;14.73;13.86;13.84;23.18;Sbc;;;;;;;;2MASX J12404968+2106175,PGC 1642864,SDSS J124049.68+210617.0;;;B-Mag taken from LEDA. -IC3650;**;12:40:48.51;+26:28:21.8;Com;;;;;;;;;;;;;;;;;;;;; -IC3651;G;12:40:52.91;+26:43:41.3;Com;1.05;1.04;95;14.40;;11.35;10.68;10.43;23.30;S0;;;;;;;;2MASX J12405286+2643405,MCG +05-30-054,PGC 042500,SDSS J124052.90+264341.2,UGC 07835;;; -IC3652;G;12:40:58.56;+11:11:04.2;Vir;0.99;0.92;94;15.10;;11.85;11.24;11.05;23.15;E;;;;;;;;2MASX J12405858+1111038,MCG +02-32-175,PGC 042521,SDSS J124058.56+111104.1,SDSS J124058.56+111104.2,UGC 07838;;; -IC3653;G;12:41:15.73;+11:23:14.1;Vir;0.62;0.48;15;14.70;;11.46;10.79;10.58;22.25;E;;;;;;;;2MASX J12411572+1123138,MCG +02-32-178,PGC 042550,SDSS J124115.73+112314.0,SDSS J124115.73+112314.1;;; -IC3654;G;12:41:12.50;+22:35:22.0;Com;0.39;0.30;49;16.99;;13.62;12.82;12.65;23.72;E;;;;;;;;2MASX J12411246+2235221,LEDA 086326,SDSS J124112.49+223522.0;;;B-Mag taken from LEDA. -IC3655;G;12:41:14.46;+20:39:58.3;Com;0.30;0.23;114;16.75;;14.53;13.81;13.51;23.05;Sab;;;;;;;;2MASX J12411443+2039581,LEDA 1633163,SDSS J124114.46+203958.1,SDSS J124114.46+203958.2;;;B-Mag taken from LEDA. -IC3656;G;12:41:13.93;+22:35:41.9;Com;0.41;0.21;94;16.50;;13.52;12.67;12.46;23.28;Sbc;;;;;;;;2MASX J12411390+2235421,LEDA 086327,SDSS J124113.93+223541.8,SDSS J124113.93+223541.9;;; -IC3657;G;12:41:19.02;+21:40:21.0;Com;0.23;0.19;20;17.82;;;;;23.50;E;;;;;;;;SDSS J124119.02+214020.9;;The IC number includes a defect on the original Heidelberg plate.;B-Mag taken from LEDA -IC3658;G;12:41:20.63;+14:42:02.0;Com;1.34;0.70;74;15.50;;;11.83;;24.68;E;;;;;;;;PGC 042558,SDSS J124120.63+144201.9;;; -IC3659;G;12:41:27.62;+22:55:50.9;Com;0.47;0.25;76;16.09;;14.13;13.47;13.34;23.04;Sbc;;;;;;;;2MASX J12412760+2255508,LEDA 086328,SDSS J124127.61+225550.8,SDSS J124127.62+225550.8;;;B-Mag taken from LEDA. -IC3660;*;12:41:36.84;+21:05:36.1;Com;;;;;;;;;;;;;;;;;;SDSS J124136.83+210536.0;;; -IC3661;G;12:41:35.73;+22:29:41.5;Com;0.55;0.14;109;17.25;;;;;23.46;Sm;;;;;;;;PGC 1670992,SDSS J124135.72+222941.4;;;B-Mag taken from LEDA. -IC3662;G;12:41:36.27;+23:25:30.6;Com;0.63;0.47;133;15.20;;12.41;11.77;11.29;22.78;Sb;;;;;;;;2MASX J12413628+2325308,MCG +04-30-014,PGC 042583,SDSS J124136.26+232530.5;;; -IC3663;G;12:41:39.41;+12:14:50.6;Vir;0.95;0.56;3;15.65;;;12.40;;24.19;E;;;;;;;;PGC 042586,SDSS J124139.41+121450.6;;; -IC3664;*;12:41:41.55;+19:56:38.9;Com;;;;;;;;;;;;;;;;;;SDSS J124141.55+195638.8;;; -IC3665;G;12:41:46.70;+11:29:17.7;Vir;0.82;0.58;85;15.30;;;11.85;;23.09;I;;;;;;;;MCG +02-32-180,PGC 042598,SDSS J124146.70+112917.7,UGC 07855;;Multiple SDSS entries describe this object.; -IC3666;*;12:41:53.37;+07:50:42.1;Vir;;;;;;;;;;;;;;;;;;SDSS J124153.36+075042.1;;; -IC3667;Dup;12:41:32.85;+41:09:02.8;CVn;;;;;;;;;;;;;;;4618;;;;;; -IC3668;Other;12:41:32.89;+41:07:27.0;CVn;0.79;0.44;31;13.13;;;;;;;;;;;;;;2MASX J12413292+4107257,SDSS J124132.87+410726.9,SDSS J124132.89+410727.0;;This is part of the galaxy NGC 4618. B-Mag taken from LEDA.; -IC3669;Other;12:41:35.91;+41:08:11.7;CVn;0.02;0.02;0;19.07;;;;;;;;;;;;;;;;This is part of the galaxy NGC 4618. B-Mag taken from LEDA.; -IC3670;G;12:41:55.02;+11:46:27.0;Vir;0.37;0.30;55;15.86;;;;;22.26;Sbc;;;;;;;;PGC 1398556,SDSS J124155.01+114626.9,SDSS J124155.02+114627.0;;;B-Mag taken from LEDA. -IC3671;G;12:41:51.38;+23:30:38.4;Com;0.58;0.56;35;15.50;;;;;23.06;Sbc;;;;;;;;MCG +04-30-015,PGC 042599,SDSS J124151.37+233038.3;;; -IC3672;Dup;12:42:08.66;+11:45:15.4;Vir;;;;;;;;;;;;;;;;0809;;;;; -IC3673;*;12:42:04.32;+21:08:18.0;Com;;;;;;;;;;;;;;;;;;SDSS J124204.32+210818.0;;; -IC3674;**;12:42:05.12;+22:30:38.8;Com;;;;;;;;;;;;;;;;;;;;; -IC3675;Dup;12:41:52.72;+41:16:26.3;CVn;;;;;;;;;;;;;;;4625;;;;;; -IC3676;*;12:42:12.28;+13:33:35.4;Com;;;;;;;;;;;;;;;;;;SDSS J124212.27+133335.3;;; -IC3677;G;12:42:11.84;+20:53:05.5;Com;0.36;0.28;49;16.78;;13.23;12.62;12.05;23.46;E;;;;;;;;2MASX J12421183+2053055,LEDA 1638014,SDSS J124211.83+205305.4;;;B-Mag taken from LEDA. -IC3678;G;12:42:12.58;+20:52:49.7;Com;0.32;0.22;46;16.86;;;;;23.43;E;;;;;;;;2MASX J12421255+2052495,PGC 1637920,SDSS J124212.58+205249.7;;;B-Mag taken from LEDA. -IC3679;**;12:42:11.23;+22:49:05.8;Com;;;;;;;;;;;;;;;;;;;;; -IC3680;*;12:42:00.91;+39:06:15.3;CVn;;;;;;;;;;;;;;;;;;SDSS J124200.90+390615.3;;; -IC3681;*;12:42:01.75;+39:05:00.3;CVn;;;;;;;;;;;;;;;;;;SDSS J124201.74+390500.2;;; -IC3682;*;12:42:19.48;+20:51:52.0;Com;;;;;;;;;;;;;;;;;;SDSS J124219.47+205151.9;;; -IC3683;G;12:42:20.64;+20:52:16.7;Com;0.36;0.29;24;16.54;;13.23;12.61;12.13;23.02;SBb;;;;;;;;2MASX J12422061+2052165,LEDA 1637726,SDSS J124220.64+205216.7;;;B-Mag taken from LEDA. -IC3684;G;12:42:26.51;+11:44:25.1;Vir;0.91;0.31;4;15.99;;;12.48;;24.45;E-S0;;;;;;;;PGC 042679,SDSS J124226.50+114425.0,SDSS J124226.51+114425.1;;;B-Mag taken from LEDA. -IC3685;*;12:42:32.24;+06:52:15.3;Vir;;;;;;;;;;;;;;;;;;SDSS J124232.24+065215.3;;; -IC3686;G;12:42:36.00;+10:33:55.1;Vir;0.84;0.34;172;15.60;;12.76;12.09;12.04;22.77;Sc;;;;;;;;2MASX J12423601+1033548,MCG +02-32-186,PGC 042698,SDSS J124236.00+103355.1;;HOLM 444B is part of this galaxy.; -IC3687;G;12:42:15.10;+38:30:12.0;CVn;3.34;3.08;0;15.50;;;;;25.04;IAB;;;;;;;;MCG +07-26-039,PGC 042656,UGC 07866;;; -IC3688;Dup;12:42:37.38;+14:21:25.9;Com;;;;;;;;;;;;;;;4633;;;;;; -IC3689;G;12:42:36.96;+20:51:01.8;Com;0.62;0.47;84;16.26;;13.00;12.20;12.13;24.09;E;;;;;;;;2MASX J12423696+2051018,SDSS J124236.95+205101.7;;;B-Mag taken from LEDA. -IC3690;G;12:42:49.19;+10:21:26.9;Vir;0.86;0.36;4;15.30;;12.48;11.75;11.26;23.10;SBa;;;;;;;;2MASX J12424923+1021268,IRAS 12402+1037,PGC 042732,SDSS J124249.18+102126.8,SDSS J124249.19+102126.8,UGC 07879;;; -IC3691;G;12:42:49.53;+22:46:20.0;Com;0.38;0.28;34;16.47;;;;;22.86;Sc;;;;;;;;PGC 1675869;;;B-Mag taken from LEDA. -IC3692;G;12:42:54.00;+20:59:23.1;Com;0.82;0.62;95;14.80;;11.56;10.81;10.52;23.07;Sa;;;;;;;;2MASX J12425397+2059225,MCG +04-30-016,PGC 042743,SDSS J124253.99+205923.0,UGC 07885;;; -IC3693;G;12:42:58.02;+10:40:54.5;Vir;0.66;0.46;94;15.40;;;12.53;;23.64;E;;;;;;;;PGC 042754,SDSS J124258.03+104054.9;;; -IC3694;G;12:43:07.28;+11:12:43.2;Vir;0.53;0.38;42;15.30;;13.37;12.45;12.20;22.05;Sbc;;;;;;;;2MASX J12430724+1112429,MCG +02-32-192,PGC 042766,SDSS J124307.28+111243.1,SDSS J124307.28+111243.2;;; -IC3695;*;12:43:06.80;+22:44:31.0;Com;;;;;;;;;;;;;;;;;;SDSS J124306.80+224430.9;;; -IC3696;G;12:43:09.64;+19:55:40.9;Com;0.39;0.22;94;17.59;;;;;24.39;E;;;;;;;;SDSS J124309.63+195540.9,SDSS J124309.64+195540.9;;;B-Mag taken from LEDA. -IC3697;G;12:42:58.85;+39:50:44.4;CVn;0.77;0.66;56;15.88;;13.18;12.32;12.13;23.95;Sb;;;;;;;;2MASX J12425885+3950442,MCG +07-26-041,PGC 042756,SDSS J124258.84+395044.4;;;B-Mag taken from LEDA. -IC3698;G;12:43:17.30;+11:12:41.5;Vir;0.49;0.41;5;15.40;;13.95;13.36;12.96;22.10;Sc;;;;;;;;2MASX J12431730+1112419,MCG +02-32-193,PGC 042790,SDSS J124317.29+111241.5,SDSS J124317.30+111241.5;;; -IC3699;**;12:43:17.13;+19:00:00.7;Com;;;;;;;;;;;;;;;;;;;;; -IC3700;GPair;12:43:20.46;+19:15:54.7;Com;0.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3700 NED01;G;12:43:20.00;+19:15:57.4;Com;;;;;;;;;;;;;;;;;;SDSS J124319.99+191557.4;;;No data available in LEDA -IC3700 NED02;G;12:43:20.96;+19:15:51.4;Com;0.04;0.03;156;21.00;;;;;;;;;;;;;;SDSS J124320.94+191551.5;;;B-Mag taken from LEDA -IC3701;G;12:43:30.91;+11:02:49.7;Vir;0.45;0.34;59;16.59;;;;;23.58;E-S0;;;;;;;;PGC 042812,SDSS J124330.88+110249.5,SDSS J124331.16+110250.4;;Multiple SDSS entries describe this source.;B-Mag taken from LEDA. -IC3702;G;12:43:28.37;+10:52:25.9;Vir;0.49;0.34;43;15.50;;13.93;13.45;13.20;21.97;SBc;;;;;;;;2MASX J12432837+1052264,PGC 042810,SDSS J124328.36+105225.8;;; -IC3703;*;12:43:22.00;+37:58:28.3;CVn;;;;;;;;;;;;;;;;;;SDSS J124322.00+375828.2;;; -IC3704;G;12:43:45.61;+10:46:12.3;Vir;1.28;0.36;41;14.70;;12.04;11.26;11.10;23.05;SBbc;;;;;;;;2MASX J12434561+1046124,IRAS 12412+1102,MCG +02-33-003,PGC 042836,SDSS J124345.57+104611.7,UGC 07899;;; -IC3705;GPair;12:43:41.51;+19:19:31.0;Com;0.70;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3705 NED01;G;12:43:41.52;+19:19:37.3;Com;0.37;0.34;20;17.33;;;;;24.04;E;;;;;;;;2MASX J12434154+1919369,SDSS J124341.52+191937.2,SDSS J124341.52+191937.3;;;B-Mag taken from LEDA -IC3705 NED02;G;12:43:41.52;+19:19:23.3;Com;0.38;0.18;163;17.62;;;;;23.67;Sbc;;;;;;;;2MASX J12434154+1919229,SDSS J124341.51+191923.2,SDSS J124341.51+191923.3;;;B-Mag taken from LEDA -IC3706;**;12:43:47.99;+09:13:52.1;Vir;;;;;;;;;;;;;;;;;;SDSS J124347.99+091352.1;;; -IC3707;*;12:43:28.68;+37:58:57.7;CVn;;;;;;;;;;;;;;;;;;SDSS J124328.67+375857.6;;; -IC3708;Other;12:43:52.55;+13:08:15.1;Vir;;;;;;;;;;;;;;;;;;;;This is the northwestern arm of NGC 4654.; -IC3709;G;12:44:04.03;+09:03:48.0;Vir;0.67;0.58;4;15.30;;12.89;12.01;11.84;22.73;Sbc;;;;;;;;2MASX J12440405+0903482,PGC 042869,SDSS J124404.02+090347.9,SDSS J124404.03+090347.9;;; -IC3710;G;12:44:09.45;+12:06:59.5;Vir;1.17;0.85;131;16.50;;;;;24.54;I;;;;;;;;PGC 042881,UGC 07906;;; -IC3711;G;12:44:09.37;+11:10:35.8;Vir;0.81;0.60;41;15.65;;;12.63;;24.05;E;;;;;;;;PGC 042878,SDSS J124409.36+111035.7;;;B-Mag taken from LEDA. -IC3712;Other;12:44:16.65;+10:22:28.4;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3713;G;12:44:03.17;+41:10:08.1;CVn;0.70;0.52;136;15.50;;11.99;11.30;10.97;23.07;S0-a;;;;;;;;2MASX J12440320+4110079,MCG +07-26-046,PGC 042867,SDSS J124403.16+411008.1,SDSS J124403.17+411008.1;;; -IC3714;G;12:44:23.08;+10:11:19.8;Vir;0.71;0.43;143;15.60;;13.61;13.08;13.10;22.93;SBab;;;;;;;;2MASX J12442309+1011199,MCG +02-33-005,PGC 042899,SDSS J124423.08+101119.7;;; -IC3715;G;12:44:21.41;+20:01:27.6;Com;0.56;0.53;64;16.54;;;;;24.11;SBc;;;;;;;;SDSS J124421.41+200127.6;;;B-Mag taken from LEDA. -IC3716;Other;12:44:45.14;+08:06:07.8;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3717;G;12:44:22.96;+39:31:20.3;CVn;0.80;0.22;155;15.97;;13.12;12.35;12.06;24.16;E?;;;;;;;;2MASX J12442295+3931207,MCG +07-26-047,PGC 042900,SDSS J124422.95+393120.2,SDSS J124422.96+393120.3;;;B-Mag taken from LEDA. -IC3718;G;12:44:45.98;+12:21:05.2;Vir;2.24;0.72;71;14.70;;13.25;12.25;11.91;24.37;S0;;;;;;;;2MASX J12444599+1221052,MCG +02-33-008,PGC 042944,SDSS J124445.22+122108.5,UGC 07920;;The SDSS position is 12 arcsec northwest of the nucleus.; -IC3719;G;12:44:47.50;+08:06:24.9;Vir;0.49;0.33;87;15.50;;;13.14;;22.87;I;;;;;;;;PGC 042947,SDSS J124447.49+080624.8,SDSS J124447.50+080624.8,SDSS J124447.50+080624.9;;"Often incorrectly called IC 3716; that does not exist."; -IC3720;G;12:44:47.48;+12:03:51.5;Vir;2.34;1.36;125;16.00;;;12.05;;25.66;E;;;;;;;;PGC 042949,UGC 07919;;; -IC3721;G;12:44:53.12;+18:45:18.9;Com;0.96;0.37;136;14.40;;11.38;10.63;10.31;22.19;Sm;;;;;;3725;;2MASX J12445314+1845182,IRAS 12423+1901,MCG +03-33-002,PGC 042956,SDSS J124453.11+184518.9,UGC 07923;;; -IC3722;Other;12:44:50.69;+11:46:42.9;Vir;;;;;;;;;;;;;;;;;;;;Two double stars.; -IC3723;G;12:44:30.55;+40:44:12.8;CVn;0.33;0.22;106;15.50;;13.58;12.91;12.70;21.89;S?;;;;;;;;2MASX J12443060+4044127,MCG +07-26-048,PGC 042914,SDSS J124430.54+404412.8,SDSS J124430.55+404412.9;;; -IC3724;G;12:44:53.76;+10:16:56.5;Vir;0.63;0.45;40;15.60;;14.29;13.69;13.35;22.78;Sc;;;;;;;;2MASX J12445373+1016570,PGC 042960,SDSS J124453.75+101656.4,SDSS J124453.76+101656.4;;; -IC3725;Dup;12:44:53.12;+18:45:18.9;Com;;;;;;;;;;;;;;;;3721;;;;; -IC3726;G;12:44:42.59;+40:40:44.4;CVn;1.33;0.29;115;15.60;;11.84;11.00;10.62;23.44;Sc;;;;;;;;2MASX J12444253+4040439,IRAS 12423+4057,MCG +07-26-049,PGC 042938,SDSS J124442.59+404044.3,SDSS J124442.59+404044.4,UGC 07921;;; -IC3727;G;12:45:05.66;+10:54:03.2;Vir;1.23;1.07;139;15.60;;;10.70;;23.79;Sc;;;;;;;;MCG +02-33-009,PGC 042969,SDSS J124505.66+105403.1,UGC 07927;;; -IC3728;G;12:45:03.13;+20:58:26.7;Com;0.37;0.33;116;16.61;;14.10;13.51;12.94;23.38;Sbc;;;;;;;;2MASX J12450313+2058261,PGC 1639926,SDSS J124503.12+205826.6;;;B-Mag taken from LEDA. -IC3729;G;12:44:53.12;+39:21:04.3;CVn;0.34;0.26;44;16.32;;;;;22.82;SBb;;;;;;;;MCG +07-26-050,PGC 042958,SDSS J124453.12+392104.2,SDSS J124453.12+392104.3;;;B-Mag taken from LEDA. -IC3730;G;12:45:06.56;+21:10:10.5;Com;0.55;0.53;136;15.30;;12.42;11.71;11.55;22.50;Scd;;;;;;;;2MASX J12450657+2110101,IRAS 12426+2126,MCG +04-30-018,PGC 042971,SDSS J124506.55+211010.4;;; -IC3731;G;12:45:05.26;+12:26:46.9;Vir;0.55;0.45;129;16.05;;13.33;12.54;12.41;23.23;Sbc;;;;;;;;2MASX J12450528+1226467,LEDA 1409720,SDSS J124505.25+122646.9,SDSS J124505.26+122646.9;;;B-Mag taken from LEDA. -IC3732;G;12:45:11.96;+10:19:28.0;Vir;0.49;0.36;47;16.35;;;;;23.28;I;;;;;;;;PGC 042980,SDSS J124511.82+101927.4;;;B-Mag taken from LEDA. -IC3733;*;12:45:16.72;+06:57:24.8;Vir;;;;;;;;;;;;;;;;;;SDSS J124516.72+065724.8;;; -IC3734;G;12:45:09.28;+23:02:20.6;Com;0.41;0.22;131;17.74;;14.05;13.51;13.40;23.79;SBc;;;;;;;;2MASX J12450925+2302211,LEDA 214024,MCG +04-30-019 NED02,SDSS J124509.27+230220.5,SDSS J124509.28+230220.6,UGC 07928 NOTES01;;;B-Mag taken from LEDA. -IC3735;G;12:45:20.42;+13:41:33.6;Com;1.18;0.87;151;15.10;;12.41;11.80;11.38;23.79;E;;;;;;;;2MASX J12452037+1341337,MCG +02-33-010,PGC 042991,SDSS J124520.42+134133.5;;; -IC3736;G;12:45:18.96;+21:32:08.7;Com;0.48;0.38;170;15.70;;14.19;13.11;13.05;23.00;Sc;;;;;;;;2MASX J12451901+2132090,MCG +04-30-020,PGC 042986,SDSS J124518.95+213208.7,SDSS J124518.96+213208.7;;; -IC3737;**;12:45:19.87;+21:57:29.4;Com;;;;;;;;;;;;;;;;;;;;; -IC3738;G;12:45:25.74;+19:13:51.1;Com;0.25;0.12;57;19.08;;;;;24.78;;;;;;;;;;;The IC number includes two neighboring stars.;B-Mag taken from LEDA -IC3739;Other;12:45:32.27;+12:59:50.5;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3740;G;12:45:30.62;+20:48:57.4;Com;0.64;0.29;7;15.60;;13.38;12.93;12.82;22.68;Sc;;;;;;;;2MASX J12453062+2048579,PGC 042995,SDSS J124530.61+204857.4;;; -IC3741;**;12:45:33.28;+19:12:14.9;Com;;;;;;;;;;;;;;;;;;SDSS J124533.27+191214.8;;; -IC3742;G;12:45:32.02;+13:19:57.3;Vir;1.02;0.32;45;14.60;;;11.39;;21.98;SBc;;;;;;;;MCG +02-33-011,PGC 043001,SDSS J124532.01+131957.2,SDSS J124532.02+131957.3,UGC 07932;;The 2MASX position applies to a knot north of the center.; -IC3743;Other;12:45:41.30;+11:06:07.6;Vir;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -IC3744;G;12:45:41.48;+19:30:01.2;Com;0.70;0.47;161;16.29;;13.18;12.39;11.94;23.96;Sb;;;;;;;;2MASX J12454151+1930019,LEDA 3090098,SDSS J124541.52+193002.0;;;B-Mag taken from LEDA. -IC3745;G;12:45:44.86;+19:10:38.1;Com;1.04;0.91;39;15.00;;12.15;11.43;11.32;23.73;S0-a;;;;;;;;2MASX J12454486+1910379,MCG +03-33-003,PGC 043009,SDSS J124544.85+191038.1,SDSS J124544.86+191038.1;;; -IC3746;G;12:45:31.91;+37:49:24.8;CVn;0.54;0.44;37;15.60;;13.85;13.30;12.83;23.33;Sbc;;;;;;;;2MASX J12453187+3749252,PGC 043000,SDSS J124531.90+374924.7,SDSS J124531.91+374924.8;;; -IC3747;*;12:45:34.42;+37:58:06.7;CVn;;;;;;;;;;;;;;;;;;SDSS J124534.41+375806.6;;; -IC3748;*;12:45:50.92;+19:25:49.2;Com;;;;;;;;;;;;;;;;;;SDSS J124550.91+192549.2;;; -IC3749;*;12:45:51.38;+19:32:08.1;Com;;;;;;;;;;;;;;;;;;SDSS J124551.37+193208.0;;; -IC3750;*;12:45:57.06;+19:06:13.9;Com;;;;;;;;;;;;;;;;;;SDSS J124557.06+190613.8;;; -IC3751;G;12:45:45.10;+37:49:23.0;CVn;0.20;0.17;85;16.60;;14.40;13.61;13.42;;Sc;;;;;;;;2MASX J12454512+3749232,LEDA 3088212,SDSS J124545.10+374922.9,SDSS J124545.11+374923.0;;;B-Mag taken from LEDA. -IC3752;**;12:46:04.09;+19:00:41.2;Com;;;;;;;;;;;;;;;;;;SDSS J124604.09+190041.1;;; -IC3753;*;12:46:04.38;+19:07:16.2;Com;;;;;;;;;;;;;;;;;;SDSS J124604.37+190716.1;;; -IC3754;G;12:46:15.54;+08:20:54.4;Vir;1.32;0.57;126;14.90;;11.42;10.68;10.47;23.38;Sab;;;;;;;;2MASX J12461549+0820540,MCG +02-33-013,PGC 043074,SDSS J124615.53+082054.4,UGC 07937;;; -IC3755;**;12:46:09.41;+19:09:26.1;Com;;;;;;;;;;;;;;;;;;;;; -IC3756;G;12:46:10.10;+11:54:52.6;Vir;0.38;0.30;26;16.86;;;;;23.28;SBc;;;;;;;;2MASX J12461012+1154519,PGC 1400776,SDSS J124610.09+115452.5,SDSS J124610.10+115452.6;;Position is for the eccentric nucleus.;B-Mag taken from LEDA. -IC3757;Other;12:45:59.78;+38:30:55.1;CVn;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC3758;G;12:45:59.67;+40:46:29.5;CVn;0.58;0.54;53;15.50;;12.28;11.68;11.40;22.95;E;;;;;;;;2MASX J12455970+4046289,PGC 043046,SDSS J124559.66+404629.4,SDSS J124559.67+404629.4;;; -IC3759;G;12:46:17.77;+20:46:58.8;Com;0.62;0.18;157;16.31;;13.21;12.43;12.15;23.27;Sc;;;;;;;;2MASX J12461777+2046594,PGC 1635801,SDSS J124617.76+204658.8;;;B-Mag taken from LEDA. -IC3760;G;12:46:18.26;+11:52:24.9;Vir;0.43;0.33;120;15.50;;13.21;12.62;12.27;23.52;E;;;;;;;;2MASX J12461822+1152249,MCG +02-33-014,PGC 043076,SDSS J124618.26+115224.8,SDSS J124618.26+115224.9;;; -IC3761;G;12:46:27.33;+20:17:20.9;Com;0.32;0.17;60;17.43;;14.69;14.02;13.25;23.85;E;;;;;;;;2MASX J12462732+2017213,LEDA 1622809,SDSS J124627.33+201720.8;;;B-Mag taken from LEDA. -IC3762;G;12:46:37.60;+22:14:46.9;Com;0.38;0.21;40;17.80;;;;;23.91;I;;;;;;;;SDSS J124637.59+221446.8,SDSS J124637.60+221446.8;;;B-Mag taken from LEDA. -IC3763;G;12:46:46.03;+21:59:06.4;Com;0.40;0.35;130;16.50;;14.06;13.51;12.86;23.56;SBbc;;;;;;;;2MASX J12464601+2159064,LEDA 086329,SDSS J124646.02+215906.3,SDSS J124646.02+215906.4;;; -IC3764;Dup;12:46:56.80;+09:51:25.6;Vir;;;;;;;;;;;;;;;;0817;;;;; -IC3765;**;12:46:35.15;+38:34:26.0;CVn;;;;;;;;;;;;;;;;;;SDSS J124635.15+383425.9;;The IC number includes a defect on the original Heidelberg plate.; -IC3766;G;12:46:53.52;+19:06:38.1;Com;0.41;0.35;47;16.99;;14.45;13.97;13.61;23.70;Sb;;;;;;;;2MASX J12465355+1906384,LEDA 3090099,SDSS J124653.51+190638.4;;;B-Mag taken from LEDA. -IC3767;G;12:46:55.48;+10:10:56.7;Vir;1.07;0.34;77;16.07;;;;;24.99;E;;;;;;;;PGC 043119,SDSS J124655.47+101056.6,SDSS J124655.48+101056.6;;;B-Mag taken from LEDA. -IC3768;*;12:46:40.71;+40:35:51.6;CVn;;;;;;;;;;;;;;;;;;;;; -IC3769;*;12:46:48.07;+40:28:12.7;CVn;;;;;;;;;;;;;;;;;;SDSS J124648.07+402812.7;;; -IC3770;*;12:47:15.70;+09:11:56.8;Vir;;;;;;;;;;;;;;;;;;SDSS J124715.70+091156.8;;; -IC3771;G;12:46:52.69;+39:10:23.0;CVn;0.33;0.26;83;16.78;;14.45;13.80;13.31;23.05;SBb;;;;;;;;2MASX J12465263+3910230,LEDA 2144774,SDSS J124652.68+391022.9,SDSS J124652.69+391023.0;;The IC number includes a defect on the original Heidelberg plate.;B-Mag taken from LEDA. -IC3772;G;12:46:56.09;+36:31:51.4;CVn;0.83;0.52;15;15.70;;12.96;12.36;12.26;23.55;Sbc;;;;;;;;2MASX J12465609+3631510,IRAS 12445+3648,MCG +06-28-028,PGC 043123,SDSS J124656.08+363151.3,SDSS J124656.08+363151.4;;; -IC3773;G;12:47:15.30;+10:12:12.9;Vir;1.93;0.73;20;14.30;;11.70;11.17;10.93;24.29;E;;;;;;;;2MASX J12471526+1012124,MCG +02-33-021,PGC 043146,SDSS J124715.29+101212.8,SDSS J124715.29+101212.9,UGC 07952;;The IC number includes a nearby star.; -IC3774;G;12:47:01.09;+36:17:17.9;CVn;0.97;0.42;106;16.00;;12.97;12.32;12.08;23.74;Sbc;;;;;;;;2MASX J12470110+3617180,MCG +06-28-029,PGC 043117,SDSS J124701.09+361717.8,SDSS J124701.09+361717.9,UGC 07947;;; -IC3775;G;12:47:16.10;+11:45:36.8;Vir;0.81;0.34;51;16.00;;;;;23.77;Sc;;;;;;;;PGC 043148,SDSS J124716.09+114536.7,SDSS J124716.10+114536.7,SDSS J124716.10+114536.8,UGC 07953;;; -IC3776;G;12:47:12.21;+22:29:04.6;Com;0.50;0.21;37;16.50;;;;;23.05;Sc;;;;;;;;PGC 086432,SDSS J124712.22+222904.0;;;B-Mag taken from LEDA. -IC3777;*;12:47:25.35;+09:08:36.5;Vir;;;;;;;;;;;;;;;;;;SDSS J124725.35+090836.4;;; -IC3778;G;12:47:01.97;+40:35:47.1;CVn;0.55;0.35;38;15.60;;13.25;12.20;12.10;22.57;Sbc;;;;;;;;2MASX J12470193+4035470,IRAS 12446+4052,PGC 043131,SDSS J124701.93+403547.1,SDSS J124701.94+403547.1;;; -IC3779;G;12:47:20.64;+12:09:59.1;Vir;0.90;0.53;126;15.50;;13.84;12.63;12.81;24.06;E;;;;;;;;2MASX J12472028+1209595,PGC 043154,SDSS J124720.63+120959.1,SDSS J124720.64+120959.1;;; -IC3780;*;12:47:08.08;+40:14:09.7;CVn;;;;;;;;;;;;;;;;;;SDSS J124708.07+401409.7;;; -IC3781;**;12:47:24.57;+22:34:11.2;Com;;;;;;;;;;;;;;;;;;;;; -IC3782;*;12:47:15.67;+40:22:03.9;CVn;;;;;;;;;;;;;;;;;;SDSS J124715.66+402203.8;;; -IC3783;G;12:47:27.84;+40:33:59.7;CVn;0.66;0.52;98;15.60;;13.07;12.75;12.55;23.14;Sbc;;;;;;;;2MASX J12472782+4033591,MCG +07-26-052,PGC 043163,SDSS J124727.84+403359.6;;; -IC3784;G;12:47:50.70;+19:23:02.6;Com;0.56;0.32;45;16.77;;;;;23.75;SBbc;;;;;;;;LEDA 089739,SDSS J124750.71+192303.0;;;B-Mag taken from LEDA. -IC3785;G;12:47:52.17;+19:16:30.8;Com;0.18;0.16;157;17.46;;;;;;Sb;;;;;;;;2MASX J12475214+1916311,SDSS J124752.17+191630.8;;;B-Mag taken from LEDA. -IC3786;G;12:47:36.90;+39:02:45.7;CVn;0.34;0.26;168;16.67;;14.22;13.69;13.26;22.95;Sbc;;;;;;;;2MASX J12473687+3902461,LEDA 2142309,SDSS J124736.89+390245.6,SDSS J124736.90+390245.7;;;B-Mag taken from LEDA. -IC3787;**;12:47:41.85;+40:37:25.6;CVn;;;;;;;;;;;;;;;;;;;;; -IC3788;G;12:48:07.26;+18:52:07.9;Com;0.66;0.66;20;15.95;;13.36;12.96;12.65;23.79;Sbc;;;;;;;;2MASX J12480725+1852076,MCG +03-33-005,PGC 043220,SDSS J124807.26+185207.8;;;B-Mag taken from LEDA. -IC3789;G;12:48:07.10;+20:11:38.5;Com;0.48;0.40;3;16.10;;13.25;12.60;12.36;23.35;Sb;;;;;;;;2MASX J12480706+2011386,PGC 1619535,SDSS J124807.09+201138.4,SDSS J124807.09+201138.5;;;B-Mag taken from LEDA. -IC3790;*;12:48:14.65;+11:06:27.3;Vir;;;;;;;;;;;;;;;;;;SDSS J124814.64+110627.3;;; -IC3791;Dup;12:47:32.11;+54:22:29.4;UMa;;;;;;;;;;;;;;;4695;;;;;; -IC3792;**;12:48:14.16;+11:05:10.8;Vir;;;;;;;;;;;;;;;;;;;;"Nominal position is 20 arcsec south; includes a defect on original plate?"; -IC3793;G;12:48:11.89;+19:09:06.1;Com;0.43;0.23;74;17.35;;;;;23.78;Sbc;;;;;;;;2MASX J12481188+1909056,SDSS J124811.88+190906.0;;;B-Mag taken from LEDA. -IC3794;*;12:48:21.51;+19:10:13.1;Com;;;;;;;;;;;;;;;;;;SDSS J124821.50+191013.1;;; -IC3795;G;12:48:05.11;+40:43:10.7;CVn;0.90;0.24;18;15.70;;13.27;12.30;12.41;24.21;E;;;;;;;;2MASX J12480514+4043104,MCG +07-26-053,PGC 043221,SDSS J124805.10+404310.6,SDSS J124805.11+404310.6,SDSS J124805.11+404310.7;;; -IC3796;*;12:48:27.00;+20:02:15.7;Com;;;;;;;;;;;;;;;;;;SDSS J124827.00+200215.7;;; -IC3797;Other;12:48:34.91;+11:35:52.1;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3798;*;12:48:42.92;+09:14:27.7;Vir;;;;;;;;;;;;;;;;;;SDSS J124842.92+091427.7;;; -IC3799;G;12:48:59.64;-14:23:57.2;Crv;2.77;0.38;32;14.10;;11.50;10.76;10.49;23.85;SBcd;;;;;;;;2MASX J12485965-1423572,MCG -02-33-011,PGC 043313;;Confused HIPASS source; -IC3800;GPair;12:48:26.43;+36:34:33.1;CVn;0.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3800 NED01;G;12:48:26.42;+36:34:33.1;CVn;0.32;0.21;47;18.31;;;;;24.60;;;;;;;;;2MASX J12482642+3634332,SDSS J124826.41+363433.0;;;B-Mag taken from LEDA -IC3800 NED02;G;12:48:27.25;+36:34:31.3;CVn;0.54;0.36;100;16.55;;;;;24.07;E;;;;;;;;2MASX J12482726+3634313,SDSS J124827.25+363431.2,SDSS J124827.25+363431.3;;;B-Mag taken from LEDA -IC3801;Other;12:49:00.65;+10:57:21.5;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3802;*;12:48:42.61;+38:14:47.2;CVn;;;;;;;;;;;;;;;;;;SDSS J124842.60+381447.2;;; -IC3803;*;12:49:04.40;+10:37:54.5;Vir;;;;;;;;;;;;;;;;;;SDSS J124904.39+103754.5;;; -IC3804;Dup;12:48:45.87;+35:19:57.7;CVn;;;;;;;;;;;;;;;4711;;;;;; -IC3805;**;12:48:42.63;+38:15:11.0;CVn;;;;;;;;;;;;;;;;;;;;; -IC3806;G;12:48:55.36;+14:54:28.4;Com;1.29;0.44;179;14.60;;11.46;10.77;10.61;22.98;Sa;;;;;;;;2MASX J12485538+1454273,MCG +03-33-006,PGC 043303,SDSS J124855.36+145428.3,SDSS J124855.36+145428.4,UGC 07974;;; -IC3807;Other;12:49:29.80;-04:24:08.2;Vir;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3808;G;12:48:58.76;+40:35:45.3;CVn;0.95;0.42;156;18.20;17.19;12.22;11.50;11.34;23.36;Sbc;;;;;;;;2MASX J12485871+4035455,MCG +07-26-055,PGC 043312,SDSS J124858.76+403545.3;;"This is sometimes incorrectly called IC 3810; that is a star."; -IC3809;G;12:49:04.51;+36:29:20.7;CVn;0.64;0.38;159;16.29;;13.29;12.59;12.31;23.61;Sb;;;;;;;;2MASX J12490454+3629205,LEDA 3088424,SDSS J124904.50+362920.6,SDSS J124904.51+362920.7;;;B-Mag taken from LEDA. -IC3810;*;12:49:03.18;+40:38:47.9;CVn;;;;;;;;;;;;;;;;;;SDSS J124903.17+403847.8;;; -IC3811;*;12:49:25.57;+21:27:43.7;Com;;;;;;;;;;;;;;;;;;SDSS J124925.57+212743.6;;; -IC3812;G;12:49:53.80;-06:43:02.8;Vir;1.13;0.41;6;14.85;;11.18;10.38;10.01;23.34;Sab;;;;;;;;2MASX J12495381-0643027,IRAS 12472-0626,MCG -01-33-019,PGC 043409;;;B-Mag taken from LEDA. -IC3813;G;12:50:02.32;-25:55:14.5;Hya;1.32;0.96;179;13.72;;10.41;9.66;9.51;23.12;S0;;;;;;;;2MASX J12500230-2555143,ESO 507-019,ESO-LV 507-0190,MCG -04-30-024,PGC 043418;;; -IC3814;G;12:49:32.41;+20:03:01.7;Com;0.59;0.38;132;16.52;;;;;24.07;Sbc;;;;;;;;2MASX J12493246+2002594,PGC 1614633,SDSS J124932.40+200301.7,SDSS J124932.41+200301.7;;;B-Mag taken from LEDA. -IC3815;G;12:49:38.53;+19:16:30.1;Com;0.55;0.36;150;16.50;;14.26;13.87;13.17;24.05;Sbc;;;;;;;;2MASX J12493852+1916295,LEDA 089740,SDSS J124938.53+191630.0;;; -IC3816;G;12:49:28.47;+37:13:49.0;CVn;0.81;0.76;7;15.67;;12.38;11.68;11.47;24.07;E;;;;;;;;2MASX J12492846+3713488,MCG +06-28-034,PGC 043369,SDSS J124928.46+371349.0,SDSS J124928.47+371349.0;;;B-Mag taken from LEDA. -IC3817;G;12:49:43.47;+22:49:52.9;Com;0.26;0.18;34;17.29;;14.31;13.69;13.26;23.04;Sbc;;;;;;;;2MASX J12494348+2249525,PGC 1676864,SDSS J124943.47+224952.5;;;B-Mag taken from LEDA. -IC3818;G;12:49:46.73;+21:45:08.0;Com;0.41;0.19;169;16.92;;14.31;13.85;13.45;23.49;Sb;;;;;;;;2MASX J12494675+2145075,PGC 1656496,SDSS J124946.72+214507.9,SDSS J124946.72+214508.0;;;B-Mag taken from LEDA. -IC3819;G;12:50:16.37;-14:22:50.7;Crv;0.56;0.45;70;16.36;;12.77;12.19;11.84;23.61;;;;;;;;;2MASX J12501632-1422505,LEDA 925330;;;B-Mag taken from LEDA. -IC3820;G;12:49:38.95;+37:07:01.8;CVn;0.46;0.43;54;16.99;;14.52;13.98;13.12;24.04;Sc;;;;;;;;2MASX J12493886+3707009,PGC 2093327,SDSS J124938.94+370701.7,SDSS J124938.94+370701.8;;The IC number includes a defect on the original Heidelberg plate.;B-Mag taken from LEDA. -IC3821;**;12:49:57.55;+20:58:08.5;Com;;;;;;;;;;;;;;;;;;;;; -IC3822;G;12:50:22.73;-14:19:18.7;Crv;1.43;0.31;35;15.34;;11.93;11.16;10.92;23.48;Sc;;;;;;;;2MASX J12502272-1419185,2MASX J12502370-1418578,MCG -02-33-019,PGC 043443;;;B-Mag taken from LEDA. -IC3823;*;12:49:43.98;+40:53:00.4;CVn;;;;16.70;;14.71;14.35;14.19;;;;;;;;;;2MASS J12494397+4053005,SDSS J124943.97+405300.3;;; -IC3824;G;12:50:30.55;-14:25:33.3;Crv;1.13;0.71;0;14.83;;11.39;10.66;10.40;24.12;S0-a;;;;;;;;2MASX J12503058-1425328,LEDA 170210;;; -IC3825;G;12:50:37.05;-14:28:58.1;Crv;0.60;0.38;178;15.77;;13.43;12.60;12.15;;;;;;;;;;2MASX J12503705-1428578,LEDA 3082083;;; -IC3826;G;12:50:39.90;-09:01:51.9;Vir;1.84;0.65;178;14.26;;11.18;10.55;10.26;24.24;S0;;;;;;;;2MASX J12503990-0901518,MCG -01-33-025,PGC 043473;;;B-Mag taken from LEDA. -IC3827;G;12:50:52.12;-14:29:30.8;Crv;1.13;0.83;162;14.05;;12.01;11.39;11.00;22.80;Sc;;;;;;3838;;2MASX J12505213-1429308,IRAS 12482-1413,MCG -02-33-021,PGC 043487;;;B-Mag taken from LEDA. -IC3828;G;12:50:20.70;+37:56:56.2;CVn;0.68;0.34;53;16.06;;13.51;12.96;12.56;23.59;Sab;;;;;;;;2MASX J12502065+3756566,LEDA 3088213,SDSS J125020.69+375656.1,SDSS J125020.69+375656.2;;;B-Mag taken from LEDA. -IC3829;G;12:52:13.30;-29:50:26.4;Hya;3.41;1.04;10;12.55;;9.41;8.71;8.42;23.97;S0;;;;;;;;2MASX J12521331-2950262,ESO 442-026,ESO-LV 442-0260,IRAS 12495-2934,MCG -05-30-011,PGC 043642;;The IC identification is not certain.; -IC3830;*;12:50:51.37;+19:50:12.1;Com;;;;;;;;;;;;;;;;;;SDSS J125051.36+195012.0;;; -IC3831;G;12:51:18.59;-14:34:24.9;Crv;1.50;1.11;138;14.22;;10.38;9.68;9.49;23.69;S0;;;;;;;;2MASX J12511856-1434248,MCG -02-33-027,PGC 043536;;;B-Mag taken from LEDA. -IC3832;G;12:50:49.20;+39:48:37.7;CVn;0.46;0.39;72;16.17;;;;;23.28;SBc;;;;;;;;MCG +07-26-057,PGC 043482,SDSS J125049.19+394837.7,SDSS J125049.20+394837.7;;;B-Mag taken from LEDA. -IC3833;Dup;12:51:32.39;-13:19:48.1;Crv;;;;;;;;;;;;;;;4722;;;;;; -IC3834;G;12:51:32.40;-14:13:17.0;Crv;0.95;0.55;70;17.00;;11.30;10.60;10.29;23.04;Sb;;;;;;;;2MASX J12513238-1413162,MCG -02-33-030,PGC 043559;;Incorrectly called NGC 4726 by VCV.; -IC3835;G;12:50:55.84;+40:11:12.3;CVn;0.50;0.25;98;13.80;;13.75;13.12;12.65;22.96;Sc;;;;;;;;2MASX J12505586+4011119,PGC 2161970,SDSS J125055.83+401112.2,SDSS J125055.84+401112.2,SDSS J125055.84+401112.3;;; -IC3836;G;12:51:03.72;+40:11:03.2;CVn;0.49;0.22;86;16.47;;;;;23.20;SBc;;;;;;;;2MASX J12510372+4011039,PGC 2161937,SDSS J125103.72+401103.1,SDSS J125103.72+401103.2;;;B-Mag taken from LEDA. -IC3837;G;12:51:33.01;+19:43:23.0;Com;0.56;0.32;73;17.02;;;;;24.00;I;;;;;;;;SDSS J125133.00+194322.9;;;B-Mag taken from LEDA. -IC3838;Dup;12:50:52.12;-14:29:30.8;Crv;;;;;;;;;;;;;;;;3827;;;;; -IC3839;*;12:51:46.26;+20:25:15.5;Com;;;;;;;;;;;;;;;;;;SDSS J125146.26+202515.5;;; -IC3840;G;12:51:46.10;+21:44:06.7;Com;0.78;0.78;76;16.02;;;;;24.21;Sm;;;;;;;;PGC 086644;;;B-Mag taken from LEDA. -IC3841;**;12:51:50.50;+22:20:40.2;Com;;;;;;;;;;;;;;;;;;;;; -IC3842;G;12:51:35.88;+40:22:16.9;CVn;0.34;0.30;164;16.09;;12.95;12.14;12.13;;E;;;;;;;;2MASX J12513585+4022166,PGC 3088021,SDSS J125135.88+402216.8,SDSS J125135.88+402216.9;;;B-Mag taken from LEDA. -IC3843;G;12:51:39.19;+39:00:04.7;CVn;0.49;0.25;179;16.54;;;;;23.19;Sc;;;;;;;;PGC 2141362,SDSS J125139.19+390004.7;;;B-Mag taken from LEDA. -IC3844;G;12:52:06.50;+39:49:05.7;CVn;0.39;0.30;31;16.34;;13.95;13.34;12.78;22.90;Sc;;;;;;;;2MASX J12520646+3949060,MCG +07-26-059,PGC 043622,SDSS J125206.50+394905.6,SDSS J125206.50+394905.7;;;B-Mag taken from LEDA. -IC3845;*;12:52:08.66;+38:37:08.4;CVn;;;;;;;;;;;;;;;;;;;;; -IC3846;Other;12:52:39.22;+13:38:50.0;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC3847;G;12:52:33.74;+22:03:53.0;Com;0.30;0.25;126;16.50;;15.10;14.18;14.27;23.29;Sc;;;;;;;;2MASX J12523380+2203524,LEDA 086330,SDSS J125233.73+220352.9;;; -IC3848;GPair;12:52:40.19;+21:24:58.0;Com;0.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3848 NED01;G;12:52:40.00;+21:25:00.0;Com;0.55;0.28;113;17.56;;;;;25.09;E;;;;;;;;SDSS J125240.15+212500.2,SDSS J125240.14+212500.2,SDSS J125240.14+212500.1;;;B-Mag taken from LEDA -IC3848 NED02;G;12:52:40.59;+21:24:52.7;Com;0.67;0.38;158;16.57;;12.76;12.13;11.79;24.54;E;;;;;;;;2MASX J12524055+2124524,PGC 1649526,SDSS J125240.59+212452.6,SDSS J125240.59+212452.7;;;B-Mag taken from LEDA. -IC3849;Other;12:52:36.83;+40:46:20.0;CVn;;;;;;;;;;;;;;;;;;SDSS J125236.82+404619.9;;;NED lists this object as type G, but there's nothing at these coords in LEDA. -IC3850;G;12:52:39.52;+40:06:11.0;CVn;0.72;0.48;49;15.29;;12.34;11.66;11.43;23.64;E;;;;;;;;2MASX J12523956+4006110,MCG +07-27-001,PGC 043702,SDSS J125239.51+400611.0,SDSS J125239.52+400611.0,SDSS J125239.53+400610.9;;;B-Mag taken from LEDA. -IC3851;*;12:53:04.73;+21:54:33.0;Com;;;;;;;;;;;;;;;;;;SDSS J125304.72+215433.0;;The IC number includes a defect on the original Heidelberg plate.; -IC3852;G;12:53:03.30;+35:46:24.4;CVn;1.10;0.43;60;16.00;;15.32;14.91;14.39;24.24;Scd;;;;;;;;2MASX J12530328+3546247,MCG +06-28-038,PGC 043750,UGC 08019;;; -IC3853;G;12:53:10.30;+38:49:45.4;CVn;0.36;0.28;6;17.29;;;;;23.62;Sbc;;;;;;;;PGC 2137536,SDSS J125310.30+384945.4,SDSS J125310.31+384945.5;;;B-Mag taken from LEDA. -IC3854;G;12:53:14.54;+40:50:53.4;CVn;0.37;0.24;24;16.59;;13.58;12.95;12.54;22.96;SBa;;;;;;;;2MASX J12531450+4050529,LEDA 2171843,SDSS J125314.53+405053.4;;;B-Mag taken from LEDA. -IC3855;G;12:53:22.69;+36:47:09.6;CVn;0.85;0.35;107;16.39;;13.18;12.54;12.26;24.70;E;;;;;;;;2MASX J12532267+3647100,LEDA 3088326,SDSS J125322.69+364709.5,SDSS J125322.69+364709.6;;;B-Mag taken from LEDA. -IC3856;G;12:53:45.92;+20:05:31.5;Com;0.67;0.20;122;16.60;;13.96;13.16;13.03;23.77;Sc;;;;;;;;2MASX J12534596+2005318,LEDA 1616133;;;B-Mag taken from LEDA. -IC3857;G;12:53:56.06;+19:36:25.7;Com;0.42;0.34;109;17.51;;;;;24.38;Sbc;;;;;;;;2MASX J12535604+1936258,PGC 1598782,SDSS J125356.09+193625.4;;;B-Mag taken from LEDA. -IC3858;*;12:53:55.54;+20:47:20.5;Com;;;;;;;;;;;;;;;;;;;;; -IC3859;G;12:54:19.86;-09:07:03.8;Vir;1.12;0.32;159;14.94;;11.31;10.62;10.39;22.88;Sc;;;;;;;;2MASX J12541987-0907039,LEDA 170216;;; -IC3860;G;12:54:06.71;+19:18:02.6;Com;0.36;0.32;119;17.66;;;;;24.20;;;;;;;;;SDSS J125406.70+191802.5,SDSS J125406.71+191802.5;;;B-Mag taken from LEDA -IC3861;G;12:53:50.83;+38:16:54.5;CVn;0.44;0.34;133;16.54;;;;;23.33;SBb;;;;;;;;2MASX J12535081+3816541,SDSS J125350.83+381654.4,SDSS J125350.84+381654.5;;;B-Mag taken from LEDA. -IC3862;GPair;12:53:53.40;+36:05:13.0;CVn;0.90;;;;;;;;;;;;;;;;;MCG +06-28-039,UGC 08023;;;Diameter of the group inferred by the author. -IC3862 NED01;G;12:53:52.96;+36:05:13.0;CVn;0.87;0.42;134;16.00;;15.16;14.71;13.85;24.20;Sd;;;;;;;;2MASX J12535292+3605131,MCG +06-28-039 NED01,PGC 043844,UGC 08023 NED01;;; -IC3862 NED02;G;12:53:53.44;+36:05:19.3;CVn;;;;;;;;;;;;;;;;;;MCG +06-28-039 NED02,PGC 200292,SDSS J125353.12+360512.8,SDSS J125353.44+360519.2,UGC 08023 NED02;;; -IC3863;G;12:53:53.84;+38:28:49.6;CVn;0.71;0.28;86;16.02;;12.79;12.01;11.67;23.50;Sab;;;;;;;;2MASX J12535384+3828501,LEDA 2128241,SDSS J125353.83+382849.5,SDSS J125353.84+382849.6;;"Star superposed 7"" north.";B-Mag taken from LEDA. -IC3864;G;12:54:12.34;+18:57:04.6;Com;0.23;0.16;146;18.57;;;;;24.13;;;;;;;;;;;The IC number includes the superposed star, SDSS J125412.42+185705.1.;B-Mag taken from LEDA. -IC3865;G;12:54:14.15;+18:52:08.2;Com;0.48;0.35;145;16.49;;;;;23.75;E;;;;;;;;2MASX J12541413+1852086,SDSS J125414.15+185208.1,SDSS J125414.15+185208.2;;;B-Mag taken from LEDA. -IC3866;GPair;12:54:15.22;+22:21:42.6;Com;0.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3866 NED01;G;12:54:14.97;+22:21:34.7;Com;0.33;0.22;123;17.66;;;;;23.77;SBbc;;;;;;;;2MASX J12541498+2221346,PGC 1668455,SDSS J125414.97+222135.1;;;B-Mag taken from LEDA. -IC3866 NED02;G;12:54:15.50;+22:21:51.4;Com;0.34;0.26;15;16.95;;;;;23.31;SBbc;;;;;;;;2MASX J12541549+2221516,PGC 1668545,SDSS J125415.49+222151.4;;;B-Mag taken from LEDA. -IC3867;G;12:54:19.58;+18:56:30.5;Com;0.67;0.42;115;16.41;;13.20;12.57;11.98;24.10;SBb;;;;;;;;2MASX J12541955+1856306,LEDA 087471,SDSS J125419.57+185630.4;;; -IC3868;G;12:54:21.00;+18:59:25.2;Com;0.41;0.25;63;17.32;;;;;23.76;SBb;;;;;;;;2MASX J12542096+1859246,SDSS J125420.99+185925.1,SDSS J125421.00+185925.1,SDSS J125421.00+185925.2;;;B-Mag taken from LEDA. -IC3869;G;12:54:21.27;+18:58:17.1;Com;0.59;0.25;64;17.57;;13.84;13.11;12.74;23.87;Sc;;;;;;;;2MASX J12542125+1858176,LEDA 087472,SDSS J125421.26+185817.1,SDSS J125421.27+185817.1;;; -IC3870;G;12:54:21.58;+22:22:54.1;Com;0.30;0.27;34;17.15;;14.93;13.89;13.75;23.43;Sb;;;;;;;;2MASX J12542154+2222536,PGC 1668852,SDSS J125421.58+222254.0,SDSS J125421.58+222254.1;;;B-Mag taken from LEDA. -IC3871;G;12:54:25.67;+18:55:44.9;Com;0.52;0.43;17;16.51;;13.47;12.83;12.35;23.94;E;;;;;;;;2MASX J12542568+1855446,SDSS J125425.66+185544.9,SDSS J125425.67+185544.9;;;B-Mag taken from LEDA. -IC3872;G;12:54:30.56;+18:57:47.4;Com;0.23;0.18;38;16.54;;;;;;E;;;;;;;;2MASX J12543055+1857476,SDSS J125430.56+185747.4;;;B-Mag taken from LEDA. -IC3873;G;12:54:31.60;+18:52:57.6;Com;0.43;0.42;120;16.76;;;;;24.00;SBb;;;;;;;;2MASX J12543160+1852566,PGC 1573410,SDSS J125431.60+185257.6;;;B-Mag taken from LEDA. -IC3874;G;12:54:34.42;+18:57:25.2;Com;0.45;0.38;102;16.23;;13.48;12.74;12.63;23.95;E;;;;;;;;2MASX J12543443+1857246,LEDA 087473,SDSS J125434.42+185725.2;;; -IC3875;G;12:54:37.17;+22:02:11.2;Com;0.35;0.27;11;16.74;;;;;22.99;Sbc;;;;;;;;PGC 1662288,SDSS J125437.17+220211.1,SDSS J125437.17+220211.2;;;B-Mag taken from LEDA. -IC3876;G;12:54:48.33;+19:00:55.2;Com;0.40;0.23;43;17.79;;;;;24.09;Sbc;;;;;;;;2MASX J12544834+1900550,SDSS J125448.32+190055.8;;;B-Mag taken from LEDA. -IC3877;G;12:54:48.68;+19:10:41.8;Com;3.07;0.73;25;14.10;;12.27;11.79;11.96;23.92;SBc;;;;;;;;2MASX J12544868+1910420,MCG +03-33-016,PGC 043961,UGC 08036;;Often incorrectly called IC 3881.; -IC3878;*;12:54:29.56;+40:04:11.0;CVn;;;;;;;;;;;;;;;;;;SDSS J125429.55+400411.0;;; -IC3879;G;12:54:31.87;+38:37:42.8;CVn;0.64;0.42;179;16.03;;13.77;13.09;13.23;23.58;Sbc;;;;;;;;2MASX J12543185+3837425,MCG +07-27-002,PGC 043911,SDSS J125431.87+383742.7,SDSS J125431.87+383742.8;;;B-Mag taken from LEDA. -IC3880;G;12:54:47.99;+22:30:08.0;Com;0.42;0.25;175;17.03;;14.50;13.84;13.77;23.57;SBbc;;;;;;;;2MASX J12544795+2230080,LEDA 1671124,SDSS J125447.98+223008.0;;;B-Mag taken from LEDA. -IC3881;G;12:54:53.95;+19:07:05.0;Com;0.40;0.31;94;13.93;;;;;23.91;SBb;;;;;;;;2MASX J12545391+1907050,SDSS J125453.94+190704.9,SDSS J125453.95+190704.9;;;B-Mag taken from LEDA. -IC3882;G;12:54:53.71;+22:34:32.1;Com;0.53;0.28;157;16.72;;14.51;14.22;13.58;23.84;Sb;;;;;;;;2MASX J12545373+2234310,PGC 1672479,SDSS J125453.71+223432.0;;;B-Mag taken from LEDA. -IC3883;G;12:55:13.52;-08:07:11.1;Vir;1.09;0.54;11;14.18;;11.66;11.02;10.73;22.64;Sb;;;;;;;;2MASX J12551352-0807110,IRAS 12526-0750,MCG -01-33-049,PGC 044016;;;B-Mag taken from LEDA. -IC3884;G;12:54:57.73;+19:40:52.6;Com;0.85;0.62;147;16.36;;13.72;12.88;12.57;24.50;Sbc;;;;;;;;2MASX J12545772+1940530,LEDA 3090101,SDSS J125457.72+194052.5,SDSS J125457.73+194052.6;;;B-Mag taken from LEDA. -IC3885;G;12:54:42.73;+37:09:17.0;CVn;0.48;0.39;35;16.75;;14.14;13.48;13.08;23.74;Sbc;;;;;;;;2MASX J12544269+3709165,PGC 2094086,SDSS J125442.72+370917.0,SDSS J125442.73+370917.0;;;B-Mag taken from LEDA. -IC3886;G;12:55:00.30;+19:00:42.1;Com;0.40;0.34;22;17.75;;;;;24.49;;;;;;;;;SDSS J125500.30+190042.1;;;B-Mag taken from LEDA. -IC3887;**;12:54:43.77;+40:18:16.7;CVn;;;;;;;;;;;;;;;;;;;;; -IC3888;G;12:54:46.37;+39:34:16.6;CVn;0.90;0.35;57;15.24;;12.06;11.35;11.01;23.39;Sa;;;;;;;;2MASX J12544637+3934165,MCG +07-27-003,PGC 043956,SDSS J125446.36+393416.5,SDSS J125446.36+393416.6;;;B-Mag taken from LEDA. -IC3889;*;12:54:50.90;+36:01:00.6;CVn;;;;;;;;;;;;;;;;;;SDSS J125450.89+360100.5;;The IC number may also include two other stars and a faint galaxy.; -IC3890;G;12:54:50.26;+37:11:07.1;CVn;0.44;0.34;19;17.32;;14.47;13.83;13.69;24.06;Sc;;;;;;;;2MASX J12545022+3711075,PGC 2094744,SDSS J125450.25+371107.0,SDSS J125450.26+371107.0,SDSS J125450.26+371107.1;;;B-Mag taken from LEDA. -IC3891;G;12:54:58.25;+36:03:09.8;CVn;0.46;0.34;105;16.86;;15.15;14.37;14.41;23.83;Sbc;;;;;;;;2MASX J12545821+3603103,LEDA 2074181,SDSS J125458.24+360309.7,SDSS J125458.25+360309.7,SDSS J125458.25+360309.8;;;B-Mag taken from LEDA. -IC3892;G;12:55:06.04;+39:13:19.0;CVn;1.22;0.55;176;15.70;;12.13;11.49;11.33;24.16;S0-a;;;;;;;;2MASX J12550600+3913193,MCG +07-27-005,PGC 044001,SDSS J125506.03+391318.9,SDSS J125506.04+391319.0,UGC 08044;;; -IC3893;G;12:55:07.45;+38:37:25.9;CVn;0.58;0.18;72;16.91;;13.93;12.97;12.72;23.45;SBm;;;;;;;;2MASX J12550744+3837263,PGC 2132124,SDSS J125507.44+383725.8,SDSS J125507.44+383725.9,SDSS J125507.45+383725.9;;;B-Mag taken from LEDA. -IC3894;**;12:55:27.61;+19:04:08.8;Com;;;;;;;;;;;;;;;;;;;;; -IC3895;G;12:55:09.23;+39:12:11.7;CVn;0.71;0.69;18;15.70;;12.84;12.19;12.15;23.57;Sb;;;;;;;;2MASX J12550918+3912113,MCG +07-27-006,PGC 044010,SDSS J125509.22+391211.6,SDSS J125509.23+391211.6;;; -IC3896;G;12:56:43.23;-50:20:48.7;Cen;3.05;2.12;6;12.53;11.60;8.76;8.01;7.79;23.45;E;;;;;;;;2MASX J12564324-5020486,ESO 219-012,ESO-LV 219-0120,PGC 044180;;; -IC3897;G;12:55:19.10;+39:40:21.4;CVn;0.15;0.08;19;16.57;;;;;;Sc;;;;;;;;PGC 3088119,SDSS J125519.09+394021.6,SDSS J125519.09+394021.7;;;B-Mag taken from LEDA. -IC3898;G;12:55:23.84;+37:34:58.4;CVn;0.31;0.25;166;17.23;;14.50;13.69;13.17;23.28;Sc;;;;;;;;2MASX J12552386+3734583,LEDA 3088328,SDSS J125523.83+373458.3,SDSS J125523.84+373458.4;;;B-Mag taken from LEDA. -IC3899;G;12:55:40.66;+20:38:11.2;Com;0.43;0.23;40;17.06;;14.03;13.69;12.81;23.57;Sbc;;;;;;;;2MASX J12554067+2038112,LEDA 1632466,SDSS J125540.65+203811.2;;;B-Mag taken from LEDA. -IC3900;G;12:55:41.30;+27:15:02.7;Com;0.96;0.59;178;14.80;;11.65;10.97;10.77;23.49;S0;;;;;;;;2MASX J12554133+2715025,MCG +05-31-009,PGC 044068,SDSS J125541.29+271502.7,SDSS J125541.30+271502.7,SDSS J125541.30+271502.8;;; -IC3901;*;12:55:50.50;+21:56:20.5;Com;;;;;;;;;;;;;;;;;;SDSS J125550.49+215620.4;;; -IC3902;*;12:55:38.58;+35:59:45.0;CVn;;;;;;;;;;;;;;;;;;;;; -IC3903;*;12:55:38.74;+40:23:58.8;CVn;;;;;;;;;;;;;;;;;;SDSS J125538.73+402358.7;;; -IC3904;G;12:55:45.60;+36:17:36.3;CVn;0.62;0.37;72;15.70;;13.05;12.50;12.16;23.01;SABb;;;;;;;;2MASX J12554559+3617361,MCG +06-28-043,PGC 044075,SDSS J125545.60+361736.2,SDSS J125545.60+361736.3;;; -IC3905;GTrpl;12:56:08.59;+19:51:07.5;Com;0.90;;;;;;;;;;;;;;;;;;;IC 3905 includes the three brightest galaxies of a quadruple system.;Diameter of the group inferred by the author. -IC3905 NED01;G;12:56:07.99;+19:51:21.2;Com;0.22;0.11;30;19.11;;;;;24.58;;;;;;;;;SDSSJ125608.05+195120.4;;;B-Mag taken from LEDA -IC3905 NED02;G;12:56:08.58;+19:51:11.6;Com;0.48;0.32;123;16.99;;;;;23.84;Sb;;;;;;;;2MASX J12560862+1951109,SDSS J125608.60+195111.0;;;B-Mag taken from LEDA -IC3905 NED03;G;12:56:09.27;+19:50:48.2;Com;;;;;;;;;;;;;;;;;;SDSS J125609.26+195048.1;;;No data available in LEDA -IC3906;*;12:55:51.06;+40:27:49.9;CVn;;;;;;;;;;;;;;;;;;;;; -IC3907;G;12:56:18.18;+18:47:02.5;Com;0.46;0.20;2;17.51;;;;;24.56;;;;;;;;;SDSS J125618.17+184702.4,SDSS J125618.18+184702.4;;;B-Mag taken from LEDA. -IC3908;G;12:56:40.62;-07:33:46.0;Vir;2.43;0.79;172;13.50;;10.25;9.45;9.10;23.16;SBcd;;;;;;;;2MASX J12564062-0733460,IRAS 12540-0717,MCG -01-33-056,PGC 044166;;The APM position refers to the northern arm.; -IC3909;G;12:56:02.82;+40:23:07.6;CVn;0.37;0.28;55;16.64;;;;;23.03;Sb;;;;;;;;PGC 2165019,SDSS J125602.81+402307.5,SDSS J125602.81+402307.6,SDSS J125602.82+402307.6;;;B-Mag taken from LEDA. -IC3910;**;12:56:04.53;+39:43:11.6;CVn;;;;;;;;;;;;;;;;;;;;; -IC3911;GPair;12:56:09.43;+35:38:17.7;CVn;0.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC3911 NED01;G;12:56:09.22;+35:38:12.3;CVn;0.56;0.38;26;16.26;;13.40;12.69;12.46;23.77;E;;;;;;;;2MASX J12560925+3538115,PGC 2067661,SDSS J125609.23+353812.1,SDSS J125609.23+353812.2;;;B-Mag taken from LEDA. -IC3911 NED02;G;12:56:09.60;+35:38:23.0;CVn;0.50;0.24;36;18.43;;;;;25.77;E;;;;;;;;2MASS J12560966+3538216,SDSS J125609.64+353821.8;;;B-Mag taken from LEDA -IC3912;*;12:56:07.54;+39:54:38.4;CVn;;;;;;;;;;;;;;;;;;SDSS J125607.54+395438.3;;; -IC3913;G;12:56:28.57;+27:17:28.6;Com;0.66;0.45;57;15.82;;13.27;12.65;12.42;23.15;SABc;;;;;;;;2MASX J12562853+2717280,MCG +05-31-012,PGC 044147,SDSS J125628.56+271728.7,SDSS J125628.57+271728.5,SDSS J125628.57+271728.6;;; -IC3914;G;12:56:22.78;+36:21:39.3;CVn;0.36;0.25;112;17.29;;14.19;13.61;12.94;23.50;Sc;;;;;;;;2MASX J12562277+3621393,PGC 2079346,SDSS J125622.77+362139.2,SDSS J125622.78+362139.2,SDSS J125622.78+362139.3;;The IC number includes a neighboring star.;B-Mag taken from LEDA. -IC3915;*;12:56:39.02;+20:17:30.1;Com;;;;;;;;;;;;;;;;;;SDSS J125639.02+201730.0;;; -IC3916;G;12:56:31.17;+38:36:48.4;CVn;0.89;0.60;124;15.60;;11.88;11.10;10.82;23.45;Sab;;;;;;;;2MASX J12563118+3836483,MCG +07-27-008,PGC 044150,SDSS J125631.16+383648.4,SDSS J125631.17+383648.4,UGC 08063;;; -IC3917;*;12:56:51.63;+22:00:21.8;Com;;;;;;;;;;;;;;;;;;SDSS J125651.63+220021.8;;The IC number includes a defect on the original Heidelberg plate.; -IC3918;G;12:56:53.54;+22:22:25.0;Com;0.55;0.40;164;15.60;;13.84;13.17;12.97;23.00;Sc;;;;;;;;2MASX J12565354+2222254,PGC 044205,SDSS J125653.54+222224.9;;Often mistakenly called IC 3917 (that is a nearby star).; -IC3919;G;12:56:48.71;+38:35:19.5;CVn;0.59;0.43;108;15.87;;13.08;12.34;12.12;23.60;E;;;;;;;;2MASX J12564871+3835195,LEDA 3088214,SDSS J125648.71+383519.4,SDSS J125648.71+383519.5;;;B-Mag taken from LEDA. -IC3920;G;12:56:50.05;+39:57:31.2;CVn;0.68;0.21;16;15.83;;12.82;12.20;11.91;23.70;E-S0;;;;;;;;2MASX J12565002+3957315,LEDA 2158373,SDSS J125650.04+395731.2,SDSS J125650.05+395731.2;;;B-Mag taken from LEDA. -IC3921;G;12:56:56.65;+38:38:22.2;CVn;0.52;0.25;73;16.12;;14.19;13.37;12.86;23.10;Sc;;;;;;;;2MASX J12565656+3838215,PGC 2132575,SDSS J125656.64+383822.2,SDSS J125656.65+383822.2;;;B-Mag taken from LEDA. -IC3922;G;12:56:57.50;+38:28:41.8;CVn;0.72;0.23;90;16.12;;13.20;12.45;12.12;23.42;Sb;;;;;;;;2MASX J12565750+3828415,IRAS 12546+3844,LEDA 140039,SDSS J125657.49+382841.7,SDSS J125657.49+382841.8,SDSS J125657.50+382841.8;;;B-Mag taken from LEDA. -IC3923;**;12:57:01.13;+37:57:20.6;CVn;;;;;;;;;;;;;;;;;;;;; -IC3924;G;12:57:24.88;+18:46:53.5;Com;0.42;0.29;121;18.11;;;;;25.13;E;;;;;;;;2MASX J12572484+1846530,PGC 1570093,SDSS J125724.87+184653.4,SDSS J125724.88+184653.4;;;B-Mag taken from LEDA. -IC3925;**;12:57:15.12;+36:25:19.2;CVn;;;;;;;;;;;;;;;;;;;;; -IC3926;*;12:57:30.41;+22:48:43.0;Com;;;;;;;;;;;;;;;;;;SDSS J125730.41+224843.0;;; -IC3927;G;12:58:10.39;-22:52:33.7;Hya;1.29;1.05;166;13.63;;10.30;9.58;9.34;23.02;E-S0;;;;;;;;2MASX J12581040-2252334,ESO 507-058,ESO-LV 507-0580,MCG -04-31-012,PGC 044419;;; -IC3928;G;12:57:18.29;+40:26:29.8;CVn;0.33;0.26;145;17.00;;;;;23.04;Sbc;;;;;;;;2MASX J12571827+4026298,PGC 2165833,SDSS J125718.29+402629.8;;;B-Mag taken from LEDA. -IC3929;G;12:57:41.09;+20:23:48.8;Com;0.38;0.28;40;17.08;;13.48;12.76;12.27;23.55;Sb;;;;;;;;2MASX J12574102+2023480,IRAS 12551+2040,LEDA 1626078;;Double nuclei.;B-Mag taken from LEDA. -IC3930;G;12:57:22.39;+38:45:53.7;CVn;0.57;0.29;7;16.23;;;;;23.20;Sbc;;;;;;;;2MASX J12572240+3845539,LEDA 2135973,SDSS J125722.38+384553.6,SDSS J125722.38+384553.7;;;B-Mag taken from LEDA. -IC3931;G;12:57:57.20;+19:37:03.5;Com;0.73;0.39;154;16.08;;13.24;12.51;12.09;23.68;Sb;;;;;;;;2MASX J12575716+1937036,SDSS J125757.19+193703.4;;;B-Mag taken from LEDA. -IC3932;*;12:58:05.30;+19:35:00.4;Com;;;;;;;;;;;;;;;;;;SDSS J125805.30+193500.4;;; -IC3933;*;12:57:57.20;+36:38:42.2;CVn;;;;;;;;;;;;;;;;;;SDSS J125757.19+363842.1;;; -IC3934;G;12:58:17.56;+18:49:31.5;Com;0.51;0.48;58;16.47;;;;;23.98;SBbc;;;;;;;;2MASX J12581756+1849316,PGC 1571543,SDSS J125817.54+184931.4,SDSS J125817.55+184931.5;;;B-Mag taken from LEDA. -IC3935;Dup;12:58:12.68;+26:23:48.8;Com;;;;;;;;;;;;;;;4849;;;;;; -IC3936;Other;12:58:19.93;+19:03:29.8;Com;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -IC3937;G;12:58:24.74;+18:49:07.2;Com;0.54;0.40;111;16.63;;;;;24.13;E;;;;;;;;2MASX J12582475+1849066,SDSS J125824.73+184907.1;;;B-Mag taken from LEDA. -IC3938;*;12:58:25.36;+18:45:09.5;Com;;;;;;;;;;;;;;;;;;SDSS J125825.36+184509.4;;; -IC3939;*;12:58:28.02;+18:45:06.7;Com;;;;;;;;;;;;;;;;;;SDSS J125828.02+184506.6;;; -IC3940;G;12:58:16.47;+35:50:20.2;CVn;0.64;0.33;136;15.66;;13.02;12.22;11.90;23.09;Sb;;;;;;;;2MASX J12581646+3550195,IRAS 12559+3606,PGC 044429,SDSS J125816.46+355020.1,SDSS J125816.46+355020.2;;;B-Mag taken from LEDA. -IC3941;G;12:58:13.91;+39:46:22.2;CVn;0.65;0.49;14;16.41;;13.15;12.30;12.03;24.33;E;;;;;;;;2MASX J12581387+3946225,LEDA 3088023,SDSS J125813.91+394622.1;;The IC number includes a defect on the original Heidelberg plate.;B-Mag taken from LEDA. -IC3942;*;12:58:19.89;+36:06:31.5;CVn;;;;;;;;;;;;;;;;;;SDSS J125819.88+360631.4;;; -IC3943;G;12:58:36.35;+28:06:49.5;Com;0.92;0.33;59;15.60;14.13;12.20;11.45;11.27;23.91;S0;;;;;;;;2MASX J12583636+2806497,PGC 044485,SDSS J125836.34+280649.4,SDSS J125836.35+280649.4,SDSS J125836.36+280649.3;;; -IC3944;G;12:58:44.75;+23:46:51.8;Com;0.56;0.34;63;16.10;;13.27;12.59;12.26;23.28;Sab;;;;;;;;PGC 140043;;;B-Mag taken from LEDA. -IC3945;G;12:58:29.63;+39:56:09.3;CVn;0.49;0.19;13;16.07;;;;;;Sc;;;;;;;;2MASX J12582961+3956088,SDSS J125829.62+395609.3,SDSS J125829.63+395609.3;;;B-Mag taken from LEDA. -IC3946;G;12:58:48.72;+27:48:37.4;Com;0.86;0.44;71;15.30;13.85;11.89;11.19;11.12;23.46;S0;;;;;;;;2MASX J12584869+2748368,MCG +05-31-050,PGC 044508,SDSS J125848.72+274837.4;;Position in 1973A&AS...12...89G is incorrect.; -IC3947;G;12:58:52.10;+27:47:06.2;Com;0.66;0.49;100;15.87;14.61;12.69;12.01;11.63;23.58;S0;;;;;;;;2MASX J12585208+2747059,PGC 044515,SDSS J125852.09+274706.1,SDSS J125852.09+274706.2,SDSS J125852.10+274706.3;;; -IC3948;G;12:58:58.15;+24:03:40.9;Com;0.33;0.29;5;17.57;;14.56;13.97;13.38;24.08;E;;;;;;;;2MASX J12585817+2403409,PGC 1698944,SDSS J125858.14+240340.9,SDSS J125858.15+240340.9;;;B-Mag taken from LEDA. -IC3949;G;12:58:56.01;+27:50:00.1;Com;1.01;0.16;72;15.10;14.26;11.98;11.36;11.01;23.72;S0;;;;;;;;2MASX J12585577+2749589,MCG +05-31-052,PGC 044524,SDSS J125855.94+275000.2,SDSS J125855.96+275000.1,SDSS J125855.96+275000.2,SDSS J125855.97+275000.2,UGC 08096;;Position in Gallouet et al (1973A&AS...12...89G) is incorrect.; -IC3950;G;12:59:06.12;+18:44:08.2;Com;0.58;0.49;145;16.48;;13.29;12.45;11.88;23.91;SBb;;;;;;;;2MASX J12590615+1844077,LEDA 3090103,SDSS J125906.11+184408.1,SDSS J125906.12+184408.1;;;B-Mag taken from LEDA. -IC3951;G;12:59:10.20;+18:45:51.4;Com;0.60;0.37;157;16.53;;13.26;12.64;12.18;24.24;E;;;;;;;;2MASX J12591016+1845507,LEDA 3090104,SDSS J125910.19+184551.3,SDSS J125910.19+184551.4;;The IC number includes a defect on the original Heidelberg plate.;B-Mag taken from LEDA. -IC3952;G;12:58:52.15;+38:52:10.2;CVn;0.52;0.38;153;16.68;;;;;23.85;Sbc;;;;;;;;2MASX J12585210+3852099,SDSS J125852.15+385210.2,SDSS J125852.16+385210.2;;;B-Mag taken from LEDA. -IC3953;G;12:59:09.12;+23:05:11.8;Com;0.37;0.32;45;16.89;;14.05;13.32;12.80;23.50;Sab;;;;;;;;2MASX J12590913+2305117,PGC 1681197,SDSS J125909.11+230511.7,SDSS J125909.12+230511.7;;;B-Mag taken from LEDA. -IC3954;G;12:59:12.65;+19:16:22.6;Com;0.22;0.15;83;17.08;;;;;;Sb;;;;;;;;2MASX J12591261+1916227,SDSS J125912.64+191622.5;;;B-Mag taken from LEDA. -IC3955;G;12:59:06.03;+27:59:48.1;Com;0.77;0.51;41;15.59;14.31;12.35;11.64;11.38;23.51;S0;;;;;;;;2MASX J12590603+2759479,PGC 044544,SDSS J125906.02+275948.0,SDSS J125906.02+275948.1;;; -IC3956;G;12:58:56.38;+37:23:53.4;CVn;0.51;0.41;165;15.92;;12.71;12.23;11.83;23.30;E;;;;;;;;2MASX J12585640+3723538,LEDA 2099843,SDSS J125856.38+372353.4;;;B-Mag taken from LEDA. -IC3957;G;12:59:07.49;+27:46:04.0;Com;0.56;0.54;40;15.86;14.72;12.71;11.79;11.81;23.40;E;;;;;;;;2MASX J12590745+2746039,MCG +05-31-060,PGC 044554,SDSS J125907.48+274604.0,SDSS J125907.49+274603.9;;; -IC3958;G;12:59:11.41;+24:01:20.2;Com;0.53;0.40;112;16.71;;13.76;12.88;12.57;24.18;E;;;;;;;;2MASX J12591138+2401199,SDSS J125911.40+240120.1;;;B-Mag taken from LEDA. -IC3959;G;12:59:08.20;+27:47:02.9;Com;0.70;0.70;10;15.20;14.03;11.98;11.33;11.09;23.35;E;;;;;;;;2MASX J12590821+2747029,MCG +05-31-059,PGC 044553,SDSS J125908.19+274702.8,SDSS J125908.20+274702.7,SDSS J125908.20+274702.8;;; -IC3960;G;12:59:07.96;+27:51:18.0;Com;0.55;0.53;14;15.50;14.47;12.36;11.82;11.50;23.33;S0;;;;;;;;2MASX J12590791+2751179,MCG +05-31-055,PGC 044551,SDSS J125907.94+275117.8,SDSS J125907.94+275117.9,SDSS J125907.94+275118.0;;; -IC3961;Dup;12:59:02.34;+34:51:34.0;CVn;;;;;;;;;;;;;;;4861;;;;;; -IC3962;*;12:59:14.98;+23:40:04.8;Com;;;;;;;;;;;;;;;;;;;;; -IC3963;G;12:59:13.50;+27:46:28.6;Com;0.70;0.41;82;15.84;14.72;12.65;12.03;11.89;23.62;S0;;;;;;;;2MASX J12591348+2746289,MCG +05-31-061,PGC 044567,SDSS J125913.48+274628.5,SDSS J125913.49+274628.5;;; -IC3964;*;12:59:13.73;+27:51:03.4;Com;;;;16.52;15.91;14.80;14.45;14.46;;;;;;;;;;2MASS J12591371+2751032,SDSS J125913.72+275103.4;;; -IC3965;G;12:59:22.68;+18:50:34.6;Com;0.33;0.25;158;17.15;;;;;23.31;Sb;;;;;;;;2MASX J12592270+1850341,SDSS J125922.67+185034.6;;;B-Mag taken from LEDA. -IC3966;G;12:59:13.12;+35:51:19.2;CVn;0.74;0.50;15;15.43;;12.91;12.31;11.93;23.24;Sc;;;;;;;;2MASX J12591317+3551190,MCG +06-29-007,PGC 044565,SDSS J125913.12+355119.2;;;B-Mag taken from LEDA. -IC3967;G;12:59:12.90;+36:07:45.4;CVn;0.76;0.49;42;15.70;;12.32;11.62;11.33;23.61;E?;;;;;;;;2MASX J12591294+3607460,MCG +06-29-005,PGC 044561,SDSS J125912.89+360745.4,SDSS J125912.90+360745.3,SDSS J125912.90+360745.4;;; -IC3968;G;12:59:25.49;+27:58:23.5;Com;0.44;0.36;48;16.80;15.32;13.36;12.74;12.45;23.29;E-S0;;;;;;;;2MASX J12592544+2758238,PGC 044598,SDSS J125925.48+275823.5,SDSS J125925.49+275823.5;;; -IC3969;GTrpl;12:59:32.91;+19:39:07.2;Com;0.80;;;;;;;;;;;;;;;;;;;The IC number also includes a neighboring star.;Diameter of the group inferred by the author. -IC3969 NED01;G;12:59:32.71;+19:39:11.0;Com;0.69;0.39;99;17.21;;;;;24.75;SBb;;;;;;;;2MASX J12593270+1939111,PGC 1600532;;;B-Mag taken from LEDA. -IC3969 NED02;G;12:59:32.65;+19:38:51.2;Com;0.30;0.20;89;18.58;;;;;24.70;;;;;;;;;2MASX J12593263+1938511,SDSS J125932.65+193851.1;;;B-Mag taken from LEDA -IC3969 NED03;G;12:59:33.73;+19:39:17.1;Com;0.23;0.12;149;19.48;;;;;25.06;;;;;;;;;SDSS J125933.73+193917.0;;;B-Mag taken from LEDA -IC3970;*;12:59:11.43;+40:24:06.9;CVn;;;;;;;;;;;;;;;;;;SDSS J125911.42+402406.9;;; -IC3971;G;12:59:31.79;+22:50:41.3;Com;0.38;0.33;119;16.68;;13.53;12.97;12.31;23.28;Sbc;;;;;;;;2MASX J12593176+2250411,PGC 044617,SDSS J125931.79+225041.2;;;B-Mag taken from LEDA. -IC3972;*;12:59:17.15;+37:16:44.9;CVn;;;;;;;;;;;;;;;;;;SDSS J125917.15+371644.9;;; -IC3973;G;12:59:30.82;+27:53:03.2;Com;0.76;0.44;141;15.20;14.03;12.19;11.48;11.10;23.49;S0;;;;;;;;2MASX J12593079+2753028,PGC 044612,SDSS J125930.81+275303.1,SDSS J125930.82+275303.1,SDSS J125930.82+275303.2;;; -IC3974;Dup;13:05:20.20;-35:20:14.7;Cen;;;;;;;;;;;;;;;4947;;;;;; -IC3975;G;12:59:15.69;+38:52:57.9;CVn;0.87;0.51;31;15.13;;11.99;11.18;10.94;23.46;S0-a;;;;;;;;2MASX J12591570+3852580,MCG +07-27-009,PGC 044555,SDSS J125915.68+385257.8,SDSS J125915.69+385257.9;;;B-Mag taken from LEDA. -IC3976;G;12:59:29.40;+27:51:00.5;Com;0.66;0.31;153;15.50;14.42;12.49;11.75;11.50;23.62;E;;;;;;;;2MASX J12592936+2751008,PGC 044603,SDSS J125929.40+275100.4,SDSS J125929.40+275100.5,SDSS J125929.40+275100.7;;; -IC3977;*;12:59:19.66;+36:47:53.1;CVn;;;;;;;;;;;;;;;;;;;;; -IC3978;G;12:59:37.45;+19:37:20.0;Com;0.21;0.19;131;18.62;;;;;23.96;;;;;;;;;SDSS J125937.45+193720.0;;;B-Mag taken from LEDA. -IC3979;*;12:59:20.75;+36:19:27.6;CVn;;;;;;;;;;;;;;;;;;;;The IC number also includes a defect on the original plate.; -IC3980;G;12:59:18.60;+39:09:04.5;CVn;0.36;0.31;45;16.82;;;;;23.25;SBb;;;;;;;;2MASX J12591861+3909040,PGC 2144346,SDSS J125918.60+390904.4;;;B-Mag taken from LEDA. -IC3981;*;12:59:21.45;+37:13:40.1;CVn;;;;;;;;;;;;;;;;;;;;; -IC3982;*;12:59:18.59;+40:04:49.9;CVn;;;;;;;;;;;;;;;;;;SDSS J125918.58+400449.9;;; -IC3983;**;12:59:20.51;+39:14:47.9;CVn;;;;;;;;;;;;;;;;;;;;; -IC3984;GPair;12:59:40.31;+19:37:28.3;Com;0.50;;;;;;;;;;;;;;;;;;;The IC number also includes a neighboring star.;Diameter of the group inferred by the author. -IC3984 NED01;G;12:59:40.39;+19:37:32.6;Com;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC3984 NED02;G;12:59:40.26;+19:37:23.1;Com;0.35;0.33;70;17.66;;;;;24.25;E;;;;;;;;2MASX J12594027+1937231,SDSS J125940.25+193723.0;;;B-Mag taken from LEDA -IC3985;G;12:59:43.15;+19:35:28.0;Com;0.37;0.33;75;16.44;;15.06;14.39;14.01;22.94;Sc;;;;;;;;2MASX J12594311+1935281,PGC 3090105,SDSS J125943.15+193527.9;;;B-Mag taken from LEDA. -IC3986;G;13:01:32.14;-32:17:27.8;Cen;1.85;1.38;124;13.35;;9.80;9.10;8.85;23.54;E;;;;;;;;2MASX J13013213-3217276,ESO 443-032,ESO-LV 443-0320,MCG -05-31-016,PGC 044905;;; -IC3987;G;12:59:25.04;+38:44:00.4;CVn;0.49;0.41;40;15.63;;12.77;12.06;11.80;23.07;E;;;;;;;;2MASX J12592502+3844000,LEDA 2135098,SDSS J125925.03+384400.3,SDSS J125925.04+384400.4;;;B-Mag taken from LEDA. -IC3988;*;12:59:26.82;+37:14:41.9;CVn;;;;;;;;;;;;;;;;;;;;; -IC3989;*;12:59:28.74;+36:45:23.7;CVn;;;;;;;;;;;;;;;;;;SDSS J125928.73+364523.6;;; -IC3990;G;12:59:39.11;+28:53:43.9;Com;0.87;0.29;30;15.00;14.00;11.61;10.87;10.51;22.83;Sa;;;;;;;;2MASX J12593914+2853437,MCG +05-31-071,PGC 044633,SDSS J125939.11+285343.8,SDSS J125939.11+285343.9,SDSS J125939.12+285343.8,SDSS J125939.12+285343.9;;; -IC3991;G;12:59:39.79;+28:55:35.7;Com;0.91;0.41;66;15.50;14.36;12.12;11.44;11.23;23.69;E-S0;;;;;;;;2MASX J12593975+2855357,MCG +05-31-072,PGC 044632,SDSS J125939.78+285535.6,SDSS J125939.79+285535.7;;; -IC3992;*;12:59:33.29;+36:46:18.6;CVn;;;;;;;;;;;;;;;;;;SDSS J125933.28+364618.6;;; -IC3993;G;12:59:30.47;+40:36:06.4;CVn;0.48;0.41;1;15.90;;13.36;12.53;12.00;23.17;E;;;;;;;;2MASX J12593044+4036060,LEDA 3088024,SDSS J125930.46+403606.3;;;B-Mag taken from LEDA. -IC3994;G;12:59:50.84;+22:43:00.3;Com;0.30;0.23;164;17.22;;;;;23.09;SBc;;;;;;;;PGC 1674890,SDSS J125950.83+224300.3;;;B-Mag taken from LEDA. -IC3995;*;12:59:33.93;+39:02:23.2;CVn;;;;;;;;;;;;;;;;;;SDSS J125933.92+390223.2;;; -IC3996;**;12:59:31.50;+40:28:03.2;CVn;;;;;;;;;;;;;;;;;;SDSS J125931.49+402803.2;;; -IC3997;G;12:59:36.93;+36:41:44.4;CVn;0.38;0.31;45;16.88;;;;;23.65;E;;;;;;;;PGC 2085297,SDSS J125936.93+364144.4;;;B-Mag taken from LEDA. -IC3998;G;12:59:46.78;+27:58:25.9;Com;0.56;0.41;8;15.91;14.61;12.63;11.89;11.57;23.04;S0;;;;;;;;2MASX J12594681+2758252,PGC 044664,SDSS J125946.77+275825.8,SDSS J125946.77+275826.0,SDSS J125946.78+275825.8;;; -IC3999;Dup;12:59:30.82;-14:07:56.4;Vir;;;;;;;;;;;;;;;4862;;;;;; -IC4000;G;12:59:36.62;+39:35:15.9;CVn;0.36;0.26;53;17.14;;;;;23.33;Sbc;;;;;;;;2MASX J12593659+3935159,PGC 2152407,SDSS J125936.62+393515.9;;;B-Mag taken from LEDA. -IC4001;G;12:59:37.93;+38:52:12.9;CVn;0.58;0.34;32;15.74;;;;;23.47;E;;;;;;;;2MASX J12593796+3852129,LEDA 2138467,SDSS J125937.92+385212.8,SDSS J125937.93+385212.9;;;B-Mag taken from LEDA. -IC4002;G;12:59:40.61;+36:45:48.5;CVn;0.43;0.23;68;17.14;;;;;23.46;Sm;;;;;;;;PGC 044648,SDSS J125940.61+364548.5;;Multiple SDSS entries describe this object.;B-Mag taken from LEDA. -IC4003;G;12:59:39.33;+38:48:56.1;CVn;1.07;1.07;91;15.40;;12.09;11.37;11.10;24.13;E;;;;;;;;2MASX J12593931+3848557,2MASX J12594016+3849157,MCG +07-27-010,PGC 044619,SDSS J125939.32+384856.1,SDSS J125939.33+384856.1;;; -IC4004;G;12:59:42.77;+38:48:40.7;CVn;0.87;0.81;143;15.41;;12.34;11.86;11.45;23.99;E;;;;;;;;2MASX J12594273+3848408,MCG +07-27-011,PGC 044618,SDSS J125942.76+384840.6,SDSS J125942.76+384840.7,SDSS J125942.77+384840.7;;;B-Mag taken from LEDA. -IC4005;**;13:00:02.54;+22:38:23.7;Com;;;;;;;;;;;;;;;;;;;;; -IC4006;*;12:59:48.72;+37:00:39.9;CVn;;;;;;;;;;;;;;;;;;SDSS J125948.72+370039.8;;The IC number includes a defect on the original Heidelberg plate.; -IC4007;GPair;13:00:06.85;+19:57:50.8;Com;0.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4007 NED01;G;13:00:06.63;+19:57:43.7;Com;;;;;;;;;;;;;;;;;;SDSS J130006.62+195743.7;;;No data available in LEDA -IC4007 NED02;G;13:00:06.99;+19:57:52.8;Com;0.34;0.22;146;16.33;;13.35;12.67;12.25;;E;;;;;;;;2MASX J13000700+1957531,SDSS J130006.99+195752.8;;;B-Mag taken from LEDA -IC4008;**;13:00:05.74;+22:21:01.8;Com;;;;;;;;;;;;;;;;;;;;; -IC4009;*;12:59:52.80;+36:39:38.7;CVn;;;;;;;;;;;;;;;;;;;;; -IC4010;G;12:59:54.04;+37:51:32.8;CVn;0.52;0.28;65;16.31;;13.27;12.53;12.27;23.18;Sab;;;;;;;;2MASX J12595407+3751329,LEDA 2111366,SDSS J125954.04+375132.8;;;B-Mag taken from LEDA. -IC4011;G;13:00:06.39;+28:00:14.9;Com;0.40;0.38;1;16.21;15.05;13.01;12.39;12.14;22.95;E;;;;;;;;2MASX J13000643+2800142,PGC 044705,SDSS J130006.38+280014.7,SDSS J130006.38+280014.8;;; -IC4012;G;13:00:07.99;+28:04:42.8;Com;0.51;0.42;131;15.95;14.64;12.62;11.98;11.59;23.38;E;;;;;;;;2MASX J13000803+2804422,PGC 044714,SDSS J130007.99+280442.8,SDSS J130007.99+280442.9;;; -IC4013;*;12:59:57.83;+37:11:57.8;CVn;;;;;;;;;;;;;;;;;;;;; -IC4014;G;13:00:13.90;+22:29:58.6;Com;0.40;0.36;4;16.76;;14.20;13.39;13.13;23.61;Sb;;;;;;;;2MASX J13001390+2229591,PGC 1671081,SDSS J130013.89+222958.5,SDSS J130013.89+222958.6;;;B-Mag taken from LEDA. -IC4015;Dup;12:59:59.61;+37:11:36.2;CVn;;;;;;;;;;;;;;;4893;;;;;; -IC4016;Dup;12:59:59.84;+37:11:17.3;CVn;;;;;;;;;;;;;;;4893A;;;;;; -IC4017;G;13:00:15.92;+22:33:20.5;Com;0.39;0.20;91;17.44;;14.65;13.92;13.15;23.65;SBc;;;;;;;;2MASX J13001592+2233203,LEDA 1672129,SDSS J130015.93+223320.5;;;B-Mag taken from LEDA. -IC4018;G;12:59:57.44;+40:29:19.4;CVn;0.18;0.15;168;17.01;;;;;;E;;;;;;;;2MASX J12595745+4029189,SDSS J125957.43+402919.3,SDSS J125957.44+402919.4;;The IC number includes the star 25 arcsec south-southwest.;B-Mag taken from LEDA. -IC4019;**;13:00:17.43;+23:43:15.0;Com;;;;;;;;;;;;;;;;;;;;; -IC4020;G;13:00:03.40;+38:36:35.6;CVn;0.93;0.19;80;16.59;;13.47;12.58;12.10;23.89;Sc;;;;;;;;2MASX J13000344+3836359,LEDA 2131719,SDSS J130003.39+383635.6,SDSS J130003.40+383635.6;;;B-Mag taken from LEDA. -IC4021;G;13:00:14.74;+28:02:28.7;Com;0.40;0.38;26;15.97;14.75;12.74;12.02;11.78;22.60;E;;;;;;;;2MASX J13001475+2802282,MCG +05-31-080,PGC 044726,SDSS J130014.73+280228.6,SDSS J130014.74+280228.6;;; -IC4022;*;13:00:04.93;+38:28:44.1;CVn;;;;;;;;;;;;;;;;;;SDSS J130004.93+382844.0;;; -IC4023;G;13:00:26.54;+19:05:50.4;Com;0.62;0.35;176;16.60;;;;;24.40;E;;;;;;;;2MASX J13002654+1905503,SDSS J130026.52+190550.4,SDSS J130026.53+190550.4;;;B-Mag taken from LEDA -IC4024;*;13:00:03.97;+40:30:32.9;CVn;;;;;;;;;;;;;;;;;;SDSS J130003.97+403032.9;;; -IC4025;G;13:00:28.36;+19:06:18.1;Com;0.62;0.35;176;16.60;;;;;24.40;E;;;;;;;;SDSS J130028.35+190618.1;;;B-Mag taken from LEDA. -IC4026;G;13:00:22.14;+28:02:49.2;Com;0.58;0.41;73;15.50;14.63;12.44;11.78;11.55;23.11;S0;;;;;;;;2MASX J13002215+2802495,PGC 044749,SDSS J130022.12+280249.2,SDSS J130022.13+280249.2;;; -IC4027;G;13:00:13.62;+37:08:29.1;CVn;0.45;0.33;167;16.31;;;;;23.29;S0-a;;;;;;;;2MASX J13001358+3708289,LEDA 2093834,SDSS J130013.61+370829.1,SDSS J130013.62+370829.1;;;B-Mag taken from LEDA. -IC4028;G;13:00:16.13;+36:15:14.8;CVn;0.78;0.61;151;15.50;;12.60;12.13;11.90;23.32;Sc;;;;;;;;2MASX J13001616+3615152,MCG +06-29-012,PGC 044731,SDSS J130016.13+361514.8,SDSS J130016.14+361514.8,UGC 08115;;; -IC4029;G;13:00:14.20;+38:45:35.0;CVn;0.42;0.20;109;16.57;;;;;23.58;E;;;;;;;;2MASX J13001419+3845352,PGC 2135829,SDSS J130014.19+384535.0,SDSS J130014.20+384535.0;;;B-Mag taken from LEDA. -IC4030;G;13:00:27.97;+27:57:21.5;Com;0.53;0.36;16;16.50;15.27;13.31;12.58;12.36;23.77;S0;;;;;;;;2MASX J13002798+2757216,PGC 044763,SDSS J130027.96+275721.5,SDSS J130027.96+275721.6,SDSS J130027.97+275721.5;;; -IC4031;G;13:00:15.48;+39:08:41.8;CVn;0.21;0.17;124;16.42;;;;;;Sb;;;;;;;;2MASX J13001542+3908422,SDSS J130015.47+390841.8,SDSS J130015.48+390841.8;;;B-Mag taken from LEDA. -IC4032;G;13:00:25.65;+28:52:04.1;Com;0.60;0.44;176;15.40;14.68;12.29;11.52;11.43;22.93;E-S0;;;;;;;;2MASX J13002568+2852036,MCG +05-31-083,PGC 044756,SDSS J130025.64+285204.1,SDSS J130025.65+285204.0,SDSS J130025.65+285204.1;;; -IC4033;G;13:00:28.39;+27:58:20.7;Com;0.50;0.28;100;16.74;15.23;13.02;12.16;12.29;23.44;S0;;;;;;;;2MASX J13002835+2758206,PGC 044771,SDSS J130028.39+275820.6;;; -IC4034;G;13:00:19.59;+37:02:46.3;CVn;0.41;0.24;63;16.26;;;;;22.60;Sc;;;;;;;;PGC 214050,SDSS J130019.58+370246.3,SDSS J130019.59+370246.3;;;B-Mag taken from LEDA. -IC4035;GPair;13:00:17.34;+40:18:05.2;CVn;0.80;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4035 NED01;G;13:00:16.69;+40:17:58.7;CVn;0.48;0.23;34;16.89;;;;;23.25;Sbc;;;;;;;;2MASX J13001667+4017582,PGC 2163772,SDSS J130016.68+401758.6,SDSS J130016.68+401758.7,SDSS J130016.69+401758.7;;;B-Mag taken from LEDA. -IC4035 NED02;G;13:00:18.00;+40:18:08.5;CVn;0.55;0.09;179;18.80;;;;;26.24;;;;;;;;;SDSS J130017.99+401808.2;;;B-Mag taken from LEDA -IC4036;*;13:00:20.75;+36:54:32.6;CVn;;;;;;;;;;;;;;;;;;SDSS J130020.75+365432.6;;; -IC4037;G;13:00:19.42;+39:00:09.5;CVn;0.35;0.28;109;16.54;;13.90;13.09;12.62;22.79;Sb;;;;;;;;2MASX J13001939+3900092,LEDA 2141402,SDSS J130019.41+390009.4,SDSS J130019.41+390009.5,SDSS J130019.42+390009.5;;;B-Mag taken from LEDA. -IC4038;G;13:00:21.77;+37:02:21.7;CVn;0.59;0.31;168;16.18;;13.04;12.37;12.06;23.86;E;;;;;;;;2MASX J13002176+3702212,LEDA 214051,SDSS J130021.76+370221.6,SDSS J130021.76+370221.7;;;B-Mag taken from LEDA. -IC4039;G;13:00:39.38;+21:41:30.2;Com;0.50;0.42;10;16.04;;13.22;12.38;12.40;23.31;SBa;;;;;;;;2MASX J13003938+2141293,LEDA 1655188,SDSS J130039.38+214130.1;;;B-Mag taken from LEDA. -IC4040;G;13:00:37.93;+28:03:26.5;Com;0.78;0.34;152;15.10;14.76;12.92;12.29;11.84;22.81;SABc;;;;;;;;2MASX J13003794+2803266,IRAS 12582+2819,MCG +05-31-085,PGC 044789,SDSS J130037.78+280326.8,SDSS J130037.78+280327.0,SDSS J130037.87+280329.2,SDSS J130037.94+280326.6;;Multiple SDSS entries describe this object.; -IC4041;G;13:00:40.85;+27:59:47.8;Com;0.61;0.44;44;15.88;14.77;12.58;12.11;11.67;23.16;E;;;;;;;;2MASX J13004081+2759476,MCG +05-31-086,PGC 044802,PGC 044804,SDSS J130040.84+275947.7,SDSS J130040.85+275947.8;;; -IC4042;G;13:00:42.77;+27:58:17.0;Com;0.72;0.60;2;15.27;14.01;11.79;10.97;10.76;23.18;S0;;;;;;;;2MASX J13004277+2758166,PGC 044808,SDSS J130042.74+275816.6,SDSS J130042.75+275816.5,SDSS J130042.77+275816.7;;; -IC4043;G;13:00:34.68;+37:04:18.9;CVn;0.98;0.30;160;16.50;;;;;24.09;SBd;;;;;;;;PGC 044814,SDSS J130034.67+370418.9,SDSS J130034.68+370418.9,SDSS J130034.68+370418.9 bg,UGC 08123;;; -IC4044;G;13:00:47.41;+27:55:19.8;Com;0.48;0.30;43;16.81;15.47;13.24;12.68;12.50;23.45;S0-a;;;;;;;;2MASX J13004737+2755196,PGC 044821,SDSS J130047.40+275519.7,SDSS J130047.40+275519.8,SDSS J130047.40+275519.9,SDSS J130047.41+275519.8;;; -IC4045;G;13:00:48.64;+28:05:26.8;Com;0.79;0.44;109;15.10;13.77;11.85;11.05;10.90;23.20;E;;;;;;;;2MASX J13004867+2805266,MCG +05-31-088,PGC 044818,SDSS J130048.64+280526.5,SDSS J130048.64+280526.6,SDSS J130048.65+280526.5;;; -IC4046;*;13:00:39.43;+36:41:09.3;CVn;;;;;;;;;;;;;;;;;;SDSS J130039.43+364109.3;;; -IC4047;G;13:00:57.69;+19:41:13.2;Com;0.88;0.81;90;15.70;;12.77;12.19;11.73;23.97;Sbc;;;;;;;;2MASX J13005770+1941130,MCG +03-33-021,PGC 044816,SDSS J130057.68+194113.1,SDSS J130057.69+194113.1;;; -IC4048;G;13:00:38.15;+39:49:51.5;CVn;0.46;0.21;178;16.84;;13.77;13.22;12.67;23.16;SBbc;;;;;;;;2MASX J13003817+3949512,LEDA 2156354,SDSS J130038.15+394951.4,SDSS J130038.16+394951.5;;;B-Mag taken from LEDA. -IC4049;G;13:00:42.66;+36:20:44.0;CVn;1.07;1.07;69;15.30;;11.82;11.04;10.74;23.88;S0;;;;;;;;2MASX J13004264+3620442,MCG +06-29-013,PGC 044806,SDSS J130042.65+362043.9,SDSS J130042.66+362044.0,UGC 08124;;; -IC4050;**;13:00:43.82;+36:44:23.5;CVn;;;;;;;;;;;;;;;;;;SDSS J130043.82+364423.5;;; -IC4051;G;13:00:51.56;+28:02:34.1;Com;0.96;0.58;51;14.90;13.58;11.67;10.88;10.66;23.39;E;;;;;;;;2MASX J13005158+2802341,MCG +05-31-092,PGC 044828,SDSS J130051.54+280234.3,SDSS J130051.55+280234.4;;The identifications of IC 4051 and NGC 4908 are often confused.; -IC4052;**;13:00:41.92;+39:40:03.5;CVn;;;;;;;;;;;;;;;;;;SDSS J130041.91+394003.4;;; -IC4053;*;13:01:01.31;+22:55:29.0;Com;;;;;;;;;;;;;;;;;;SDSS J130101.30+225528.9;;; -IC4054;*;13:01:01.36;+22:54:18.1;Com;;;;;;;;;;;;;;;;;;SDSS J130101.36+225418.0;;; -IC4055;Other;13:01:02.63;+22:54:30.8;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4056;G;13:00:44.29;+39:45:14.9;CVn;0.68;0.37;96;16.00;;13.61;12.95;12.60;23.46;SBbc;;;;;;;;2MASX J13004431+3945141,MCG +07-27-012,PGC 044810,SDSS J130044.28+394514.8,SDSS J130044.29+394514.9,UGC 08126;;The position in 2002PNAOJ...6..107M refers to a superposed star.; -IC4057;GGroup;13:01:05.23;+23:09:44.9;Com;0.70;;;;;;;;;;;;;;;;;;;The IC number includes a neighboring star.;Diameter of the group inferred by the author. -IC4057 NED01;G;13:01:04.92;+23:09:44.7;Com;;;;;;;;;;;;;;;;;;SDSS J130104.92+230944.6;;;No data available in LEDA -IC4057 NED02;G;13:01:05.29;+23:09:36.9;Com;0.35;0.13;82;19.01;;;;;25.42;;;;;;;;;2MASX J13010525+2309370,PGC 1682504,SDSS J130105.28+230936.8;;;B-Mag taken from LEDA. -IC4057 NED03;G;13:01:05.60;+23:09:49.4;Com;;;;;;;;;;;;;;;;;;SDSS J130105.59+230949.4;;;No data available in LEDA -IC4057 NED04;G;13:01:06.13;+23:09:53.8;Com;;;;;;;;;;;;;;;;;;SDSS J130106.13+230953.7;;;No data available in LEDA -IC4058;G;13:01:09.34;+19:29:39.0;Com;0.62;0.34;116;16.35;;13.27;12.46;12.04;23.59;SBbc;;;;;;;;2MASX J13010937+1929390,SDSS J130109.33+192938.9,SDSS J130109.33+192939.0;;;B-Mag taken from LEDA. -IC4059;G;13:01:15.47;+19:16:24.8;Com;0.41;0.33;58;17.00;;;;;23.91;E;;;;;;;;2MASX J13011549+1916249,SDSS J130115.46+191624.7;;;B-Mag taken from LEDA. -IC4060;G;13:00:52.56;+40:35:04.4;CVn;0.79;0.59;147;15.11;;12.34;11.46;11.42;23.12;Sb;;;;;;;;2MASX J13005254+4035048,MCG +07-27-013,PGC 044823,SDSS J130052.55+403504.4,SDSS J130052.56+403504.4;;;B-Mag taken from LEDA. -IC4061;GPair;13:00:57.64;+39:34:57.9;CVn;0.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4061 NED01;G;13:00:57.39;+39:34:59.2;CVn;0.39;0.30;122;15.96;;;;;;E;;;;;;;;2MASX J13005735+3934589,SDSS J130057.39+393459.2;;;B-Mag taken from LEDA -IC4061 NED02;G;13:00:58.10;+39:35:02.2;CVn;0.48;0.37;123;17.01;;;;;24.25;E;;;;;;;;SDSS J130058.10+393502.1;;;B-Mag taken from LEDA -IC4062;G;13:00:58.64;+39:51:32.2;CVn;0.38;0.38;93;15.00;;;;;21.52;SABb;;;;;;;;MCG +07-27-014,PGC 044836,SDSS J130058.63+395132.1,SDSS J130058.64+395132.1,SDSS J130058.65+395132.2;;UGC says CGCG 1258.8+4007 is incorrectly identified as IC 4062.; -IC4063;G;13:01:06.65;+39:14:42.7;CVn;0.30;0.24;158;16.92;;;;;22.88;Sb;;;;;;;;2MASX J13010665+3914430,PGC 2146202,SDSS J130106.64+391442.6,SDSS J130106.65+391442.6,SDSS J130106.65+391442.7;;;B-Mag taken from LEDA. -IC4064;G;13:01:06.73;+39:50:29.3;CVn;1.40;1.08;35;15.00;;10.75;10.04;9.72;23.79;S0;;;;;;;;2MASX J13010676+3950290,MCG +07-27-015,PGC 044867,SDSS J130106.72+395029.3,SDSS J130106.73+395029.2,SDSS J130106.73+395029.3,SDSS J130106.74+395029.3,UGC 08131;;Often mistakenly called IC 4062.; -IC4065;G;13:01:10.99;+39:44:40.1;CVn;0.73;0.38;155;15.32;;12.30;11.63;11.20;23.04;SBb;;;;;;;;2MASX J13011101+3944400,MCG +07-27-016,PGC 044868,SDSS J130110.98+394440.0,SDSS J130110.99+394440.0,SDSS J130110.99+394440.1;;;B-Mag taken from LEDA. -IC4066;*;13:01:40.16;+19:16:21.4;Com;;;;;;;;;;;;;;;;;;SDSS J130140.15+191621.3;;; -IC4067;G;13:01:20.10;+39:56:25.3;CVn;0.38;0.25;12;16.30;;;;;23.16;E;;;;;;;;2MASX J13012005+3956250,LEDA 2158105,SDSS J130120.09+395625.2,SDSS J130120.10+395625.3;;;B-Mag taken from LEDA. -IC4068;G;13:01:20.18;+39:53:56.6;CVn;0.57;0.35;70;15.87;;13.04;12.36;12.04;23.37;E?;;;;;;;;2MASX J13012013+3953570,MCG +07-27-017,PGC 044889,SDSS J130120.17+395356.6,SDSS J130120.18+395356.6;;Often mistakenly called IC 4067.;B-Mag taken from LEDA. -IC4069;G;13:01:24.78;+36:06:45.8;CVn;0.41;0.23;13;16.85;;14.92;14.09;13.91;23.32;Scd;;;;;;;;2MASX J13012480+3606460,LEDA 2075162,SDSS J130124.77+360645.7,SDSS J130124.78+360645.8;;;B-Mag taken from LEDA. -IC4070;G;13:01:43.29;+19:18:07.0;Com;0.58;0.39;44;16.21;;;;;23.47;SBb;;;;;;;;2MASX J13014326+1918070,SDSS J130143.28+191806.9,SDSS J130143.28+191807.0;;;B-Mag taken from LEDA. -IC4071;G;13:02:04.09;-07:36:11.5;Vir;0.97;0.55;8;14.70;;11.99;11.36;11.42;23.38;S0;;;;;;;;2MASX J13020410-0736118,IRAS 12594-0720,MCG -01-33-073,PGC 044956;;;B-Mag taken from LEDA. -IC4072;*;13:01:25.84;+37:21:13.4;CVn;;;;;;;;;;;;;;;;;;;;; -IC4073;G;13:01:25.71;+39:54:51.4;CVn;0.81;0.27;143;15.45;;12.17;11.42;11.10;23.20;Sab;;;;;;;;2MASX J13012570+3954509,MCG +07-27-018,PGC 044888,SDSS J130125.71+395451.4;;;B-Mag taken from LEDA. -IC4074;G;13:01:48.98;+19:00:31.9;Com;0.59;0.38;43;16.90;;;;;24.15;Sbc;;;;;;;;2MASX J13014900+1900315,SDSS J130148.98+190031.8;;;B-Mag taken from LEDA. -IC4075;G;13:01:48.56;+19:57:54.0;Com;0.44;0.31;104;16.80;;;;;23.87;E;;;;;;;;2MASX J13014853+1957535,SDSS J130148.55+195753.9;;;B-Mag taken from LEDA. -IC4076;G;13:01:48.59;+23:23:20.8;Com;0.41;0.37;143;16.75;;13.78;13.28;12.79;23.53;Sb;;;;;;;;2MASX J13014858+2323205,LEDA 1686546,SDSS J130148.58+232320.7,SDSS J130148.59+232320.7;;;B-Mag taken from LEDA. -IC4077;G;13:01:34.05;+37:23:10.4;CVn;0.42;0.28;61;16.22;;13.31;12.63;12.20;22.81;SBbc;;;;;;;;2MASX J13013405+3723097,PGC 044907,SDSS J130134.05+372310.3,SDSS J130134.05+372310.4;;;B-Mag taken from LEDA. -IC4078;**;13:01:35.66;+36:35:35.6;CVn;;;;;;;;;;;;;;;;;;;;; -IC4079;G;13:01:56.79;+19:14:55.7;Com;0.42;0.37;10;17.41;;14.94;14.12;13.85;24.39;Sab;;;;;;;;2MASX J13015679+1914556,PGC 1585609,SDSS J130156.78+191455.6;;May contribute to the IR flux of IRAS 12594+1931.;B-Mag taken from LEDA. -IC4080;GPair;13:01:57.80;+19:15:16.9;Com;0.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4080 NED01;G;13:01:57.71;+19:15:11.7;Com;0.79;0.16;38;17.28;;15.13;14.85;14.16;24.27;Sc;;;;;;;;2MASX J13015771+1915116,SDSS J130157.70+191511.6;;May contribute to the IR flux of IRAS 12594+1931.;B-Mag taken from LEDA -IC4080 NED02;G;13:01:58.25;+19:15:21.3;Com;0.23;0.12;64;18.66;;;;;24.19;;;;;;;;;2MASS J13015825+1915210,SDSS J130158.24+191521.2;;May contribute to the IR flux of IRAS 12594+1931.;B-Mag taken from LEDA -IC4081;G;13:01:55.30;+22:46:15.7;Com;0.42;0.28;157;16.59;;14.02;13.43;13.08;23.64;E;;;;;;;;2MASX J13015529+2246156,LEDA 1675832,SDSS J130155.30+224616.2;;;B-Mag taken from LEDA. -IC4082;G;13:01:39.09;+37:20:29.9;CVn;0.44;0.27;92;16.57;;14.77;14.02;13.70;23.16;Sc;;;;;;;;2MASX J13013908+3720297,PGC 2098435;;;B-Mag taken from LEDA. -IC4083;G;13:01:38.91;+38:08:32.5;CVn;0.41;0.26;20;16.29;;;;;22.86;SBbc;;;;;;;;2MASX J13013894+3808328,LEDA 2118953,SDSS J130138.90+380832.5,SDSS J130138.91+380832.5;;;B-Mag taken from LEDA. -IC4084;**;13:01:41.03;+36:57:56.4;CVn;;;;;;;;;;;;;;;;;;;;; -IC4085;G;13:01:38.19;+39:42:09.7;CVn;0.30;0.25;132;16.01;;12.98;12.28;11.99;;E;;;;;;;;2MASX J13013821+3942097,PGC 3088120,SDSS J130138.19+394209.7,SDSS J130138.20+394209.7;;;B-Mag taken from LEDA. -IC4086;G;13:01:42.84;+36:38:54.3;CVn;0.82;0.66;178;15.70;;12.91;11.98;11.84;23.70;SABc;;;;;;;;2MASX J13014278+3638538,MCG +06-29-017,PGC 044920,SDSS J130142.83+363854.3,UGC 08141;;; -IC4087;G;13:02:00.41;+19:59:42.7;Com;0.23;0.13;9;17.04;;;;;;SBb;;;;;;;;2MASX J13020037+1959426,SDSS J130200.40+195942.6,SDSS J130200.40+195942.7;;;B-Mag taken from LEDA. -IC4088;G;13:01:43.37;+29:02:40.8;Com;1.45;0.40;88;14.70;13.82;11.70;10.99;10.72;23.53;SABa;;;;;;;;2MASX J13014338+2902407,MCG +05-31-102,PGC 044921,SDSS J130143.36+290240.9,SDSS J130143.37+290240.7,SDSS J130143.37+290240.8,UGC 08140;;; -IC4089;G;13:02:01.85;+19:30:10.4;Com;0.36;0.32;149;17.44;;;;;23.88;SBb;;;;;;;;2MASX J13020185+1930106,SDSS J130201.84+193010.3;;;B-Mag taken from LEDA. -IC4090;*;13:01:46.30;+36:50:16.6;CVn;;;;;;;;;;;;;;;;;;SDSS J130146.29+365016.5;;The IC number also includes a defect on the original Heidelberg plate.; -IC4091;G;13:02:12.96;+19:53:34.8;Com;0.52;0.26;131;16.85;;;;;23.65;Sbc;;;;;;;;2MASX J13021293+1953347,SDSS J130212.95+195334.7,SDSS J130212.95+195334.8;;;B-Mag taken from LEDA. -IC4092;*;13:02:13.63;+19:11:03.0;Com;;;;;;;;;;;;;;;;;;;;; -IC4093;Other;13:02:03.99;+28:59:41.1;Com;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4094;G;13:01:58.59;+37:47:42.1;CVn;0.44;0.30;132;16.30;;14.42;13.68;13.58;23.06;Sc;;;;;;;;2MASX J13015857+3747418,LEDA 2109709,SDSS J130158.59+374742.1;;;B-Mag taken from LEDA. -IC4095;G;13:02:20.38;+19:05:58.9;Com;0.77;0.33;27;16.25;;12.92;12.20;11.95;23.83;SBb;;;;;;;;2MASX J13022035+1905592,LEDA 3090106,SDSS J130220.36+190558.9,SDSS J130220.37+190558.9;;;B-Mag taken from LEDA. -IC4096;G;13:02:16.96;+24:00:39.0;Com;0.67;0.52;132;16.70;;13.13;12.72;12.25;24.69;E;;;;;;;;2MASX J13021696+2400389,LEDA 140053,SDSS J130216.95+240039.0;;;B-Mag taken from LEDA. -IC4097;*;13:02:04.94;+36:36:19.6;CVn;;;;;;;;;;;;;;;;;;SDSS J130204.94+363619.5;;; -IC4098;G;13:02:03.84;+37:58:51.2;CVn;0.51;0.28;112;16.33;;;;;23.20;SBbc;;;;;;;;2MASX J13020388+3758511,LEDA 2114739,SDSS J130203.83+375851.2;;;B-Mag taken from LEDA. -IC4099;G;13:02:23.23;+24:01:45.0;Com;0.65;0.49;104;16.38;;12.81;12.21;11.98;24.23;E;;;;;;;;2MASX J13022324+2401449,LEDA 1698322,SDSS J130223.22+240144.9;;;B-Mag taken from LEDA. -IC4100;G;13:02:04.91;+40:24:30.1;CVn;1.16;0.75;104;15.10;;11.68;11.07;10.84;23.41;Sc;;;;;;;;2MASX J13020491+4024301,MCG +07-27-019,PGC 044963,SDSS J130204.91+402430.0,SDSS J130204.91+402430.1,UGC 08144;;; -IC4101;*;13:02:13.75;+39:56:25.3;CVn;;;;;;;;;;;;;;;;;;SDSS J130213.74+395625.2;;; -IC4102;G;13:02:17.99;+36:09:08.8;CVn;0.34;0.22;78;16.97;;;;;23.16;Sc;;;;;;;;2MASX J13021788+3609083,LEDA 2075831,SDSS J130217.99+360908.7,SDSS J130217.99+360908.8,SDSS J130218.00+360908.8;;The IC number includes a neighboring star.;B-Mag taken from LEDA. -IC4103;G;13:02:19.05;+38:01:03.0;CVn;0.76;0.52;64;15.88;;13.35;12.28;12.40;23.70;Sbc;;;;;;;;2MASX J13021910+3801032,MCG +06-29-019,PGC 044989,SDSS J130219.05+380102.9,SDSS J130219.05+380103.0;;;B-Mag taken from LEDA. -IC4104;G;13:02:18.12;+38:35:32.7;CVn;0.51;0.37;167;15.95;;;;;23.42;E;;;;;;;;2MASX J13021808+3835322,LEDA 2131244,SDSS J130218.11+383532.6,SDSS J130218.12+383532.7;;;B-Mag taken from LEDA. -IC4105;G;13:02:19.00;+38:16:16.6;CVn;0.48;0.39;89;16.47;;;;;23.73;E;;;;;;;;2MASX J13021898+3816162,SDSS J130218.99+381616.6,SDSS J130219.00+381616.6;;;B-Mag taken from LEDA. -IC4106;G;13:02:38.44;+28:06:52.5;Com;0.74;0.55;135;15.50;;12.50;11.83;12.03;23.49;S0-a;;;;;;;;2MASX J13023845+2806523,MCG +05-31-109,PGC 045025,SDSS J130238.44+280652.4,SDSS J130238.44+280652.5;;; -IC4107;G;13:02:41.87;+21:59:50.6;Com;0.89;0.81;0;16.62;;;;;25.24;E;;;;;;;;PGC 087149,SDSS J130241.87+215950.6;;Multiple SDSS entries describe this source.;B-Mag taken from LEDA. -IC4108;G;13:02:31.53;+38:28:42.6;CVn;0.71;0.37;132;15.40;;12.38;11.69;11.47;23.55;E;;;;;;;;2MASX J13023155+3828423,MCG +07-27-020,PGC 045005,SDSS J130231.53+382842.5,SDSS J130231.53+382842.6;;;B-Mag taken from LEDA. -IC4109;*;13:02:57.97;+19:00:13.3;Com;;;;;;;;;;;;;;;;;;SDSS J130257.97+190013.3;;; -IC4110;G;13:02:58.29;+19:13:37.1;Com;0.20;0.14;151;17.71;;;;;;Sab;;;;;;;;2MASX J13025826+1913368,SDSS J130258.28+191337.0;;;B-Mag taken from LEDA. -IC4111;G;13:02:56.57;+28:04:13.5;Com;0.73;0.34;133;15.70;;12.91;12.24;12.13;23.72;S0;;;;;;;;2MASX J13025659+2804133,MCG +05-31-113,PGC 045051,SDSS J130256.56+280413.4,SDSS J130256.57+280413.4;;; -IC4112;*;13:02:45.16;+37:12:43.8;CVn;;;;;;;;;;;;;;;;;;SDSS J130245.15+371243.8;;; -IC4113;GPair;13:03:03.37;+20:28:20.1;Com;0.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4113 NED01;G;13:03:03.31;+20:28:24.2;Com;0.37;0.23;111;16.69;;14.01;13.38;13.16;23.20;Sb;;;;;;;;2MASX J13030331+2028239,PGC 1628367;;;B-Mag taken from LEDA. -IC4113 NED02;G;13:03:03.52;+20:28:15.4;Com;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC4114;G;13:02:41.83;+40:06:16.3;CVn;0.46;0.21;41;16.56;;;;;23.78;E;;;;;;;;2MASX J13024184+4006160,PGC 2160643,SDSS J130241.82+400616.3,SDSS J130241.83+400616.3;;;B-Mag taken from LEDA. -IC4115;G;13:02:48.73;+37:13:23.6;CVn;0.56;0.44;15;15.87;;13.33;12.79;12.26;23.15;Sbc;;;;;;;;2MASX J13024873+3713231,MCG +06-29-020,PGC 045036,PGC 045041,SDSS J130248.72+371323.5,SDSS J130248.73+371323.6;;"Often incorrectly called IC 4112; that is a star.";B-Mag taken from LEDA. -IC4116;*;13:03:10.12;+19:05:00.1;Com;;;;;;;;;;;;;;;;;;;;; -IC4117;*;13:02:48.60;+40:31:29.6;CVn;;;;;;;;;;;;;;;;;;SDSS J130248.59+403129.6;;; -IC4118;G;13:02:51.70;+38:17:34.6;CVn;0.63;0.39;102;15.38;;12.20;11.73;11.22;22.86;SBb;;;;;;;;2MASX J13025168+3817341,MCG +07-27-021,PGC 045040,SDSS J130251.69+381734.5,SDSS J130251.70+381734.6;;;B-Mag taken from LEDA. -IC4119;G;13:03:15.17;+19:13:58.0;Com;0.43;0.15;24;18.18;;;;;25.11;;;;;;;;;2MASX J13031513+1913578,SDSS J130315.16+191357.9,SDSS J130315.17+191357.9;;"Star 17"" north.";B-Mag taken from LEDA. -IC4120;*;13:03:01.55;+37:04:54.0;CVn;;;;;;;;;;;;;;;;;;SDSS J130301.54+370454.0;;; -IC4121;*;13:03:21.52;+19:16:56.3;Com;;;;;;;;;;;;;;;;;;SDSS J130321.52+191656.2;;; -IC4122;G;13:03:24.43;+20:11:48.9;Com;0.84;0.69;26;15.50;;12.18;11.70;11.08;23.66;S0-a;;;;;;;;2MASX J13032442+2011490,PGC 045092,SDSS J130324.43+201148.8;;; -IC4123;G;13:03:05.82;+38:18:52.1;CVn;0.55;0.47;138;15.60;;13.05;12.71;11.94;22.99;SBb;;;;;;;;2MASX J13030578+3818521,MCG +07-27-023,PGC 045059,SDSS J130305.82+381852.0,SDSS J130305.82+381852.1;;;B-Mag taken from LEDA. -IC4124;G;13:03:31.57;+22:50:48.5;Com;0.38;0.26;37;16.82;;13.64;13.10;12.69;23.72;E;;;;;;;;2MASX J13033154+2250480,PGC 1677120,SDSS J130331.56+225048.5,SDSS J130331.57+225048.4;;The IC number includes a neighboring star.;B-Mag taken from LEDA. -IC4125;G;13:03:34.97;+18:48:12.2;Com;1.01;0.65;74;15.75;;12.05;11.47;11.02;24.62;E;;;;;;;;2MASX J13033493+1848120,LEDA 3090108,SDSS J130334.96+184812.2;;;B-Mag taken from LEDA. -IC4126;*;13:03:36.45;+19:19:24.4;Com;;;;;;;;;;;;;;;;;;SDSS J130336.45+191924.3;;; -IC4127;G;13:03:17.40;+38:02:48.9;CVn;0.58;0.37;40;15.93;;13.05;12.10;11.79;23.28;Sab;;;;;;;;2MASX J13031742+3802486,MCG +06-29-022,PGC 045089,SDSS J130317.39+380248.8,SDSS J130317.40+380248.9;;;B-Mag taken from LEDA. -IC4128;G;13:03:41.24;+20:12:59.9;Com;0.40;0.28;65;16.40;;13.63;12.75;12.41;23.01;Sb;;;;;;;;2MASX J13034126+2013000,LEDA 1620290,SDSS J130341.24+201259.8;;;B-Mag taken from LEDA. -IC4129;G;13:03:43.97;+18:52:37.7;Com;0.47;0.29;28;17.04;;;;;23.75;Sbc;;;;;;;;2MASX J13034395+1852380,SDSS J130343.95+185237.7,SDSS J130343.96+185237.7;;"Star 17"" east.";B-Mag taken from LEDA. -IC4130;G;13:03:46.59;+19:16:17.5;Com;1.20;1.05;70;15.42;14.30;12.03;11.32;11.11;24.67;E;;;;;;;;2MASX J13034658+1916170,MCG +03-33-024,PGC 045103,SDSS J130346.59+191617.4,SDSS J130346.59+191617.5;;; -IC4131;G;13:03:25.58;+38:57:04.6;CVn;0.38;0.28;158;16.39;;;;;23.00;Sc;;;;;;;;2MASX J13032556+3857037,PGC 2140322,SDSS J130325.57+385704.5,SDSS J130325.58+385704.5,SDSS J130325.59+385704.6;;;B-Mag taken from LEDA. -IC4132;*;13:03:33.84;+38:22:39.3;CVn;;;;;;;;;;;;;;;;;;SDSS J130333.84+382239.2;;; -IC4133;G;13:03:50.80;+27:59:18.2;Com;0.57;0.52;66;15.40;;12.24;11.58;11.38;23.06;E;;;;;;;;2MASX J13035077+2759179,MCG +05-31-117,PGC 045140,SDSS J130350.79+275918.1,SDSS J130350.80+275918.2;;; -IC4134;Dup;13:02:04.15;-11:22:42.3;Vir;;;;;;;;;;;;;;;4920;;;;;; -IC4135;G;13:03:37.39;+40:14:56.3;CVn;0.67;0.38;36;16.50;;12.83;12.18;11.78;23.38;Sb;;;;;;;;2MASX J13033738+4014567,PGC 045108,SDSS J130337.38+401456.3,SDSS J130337.39+401456.3,UGC 08163;;; -IC4136;Dup;13:04:19.11;-07:38:58.0;Vir;;;;;;;;;;;;;;;4942;;;;;; -IC4137;G;13:03:59.30;+22:44:23.9;Com;0.39;0.31;166;16.52;;13.97;13.63;12.92;23.21;Sab;;;;;;;;2MASX J13035927+2244233,LEDA 1675316,SDSS J130359.29+224423.9,SDSS J130359.30+224423.9;;;B-Mag taken from LEDA. -IC4138;G;13:04:02.11;+20:39:55.8;Com;0.38;0.24;162;16.61;;13.54;12.92;12.69;23.15;SBab;;;;;;;;2MASX J13040208+2039554,PGC 1633151,SDSS J130402.10+203955.7;;;B-Mag taken from LEDA. -IC4139;G;13:04:04.15;+19:17:41.9;Com;0.64;0.52;60;16.54;;13.20;12.24;11.94;24.43;E;;;;;;;;2MASX J13040416+1917414,LEDA 3090109,SDSS J130404.14+191741.8,SDSS J130404.14+191741.9;;;B-Mag taken from LEDA. -IC4140;G;13:04:06.04;+20:05:46.9;Com;0.32;0.26;71;17.54;;;;;23.94;E;;;;;;;;2MASX J13040600+2005464,SDSS J130406.04+200546.8,SDSS J130406.04+200546.9;;;B-Mag taken from LEDA. -IC4141;G;13:04:07.73;+19:12:38.3;Com;0.66;0.55;108;16.26;;13.25;12.19;12.07;23.97;Sb;;;;;;;;2MASX J13040769+1912384,MCG +03-33-027,PGC 045147,SDSS J130407.72+191238.3,SDSS J130407.73+191238.3;;;B-Mag taken from LEDA. -IC4142;*;13:03:47.19;+38:11:42.3;CVn;;;;;;;;;;;;;;;;;;;;; -IC4143;*;13:03:45.50;+40:12:25.5;CVn;;;;;;;;;;;;;;;;;;;;The IC number also includes a defect on the original Heidelberg plate.; -IC4144;G;13:03:50.07;+36:56:36.2;CVn;0.96;0.18;6;16.00;;;;;23.44;Sb;;;;;;;;MCG +06-29-023,PGC 045145,SDSS J130350.06+365636.2,SDSS J130350.07+365636.2,UGC 08169;;; -IC4145;G;13:03:49.77;+38:17:11.7;CVn;0.71;0.17;135;16.75;;13.37;12.67;12.33;23.57;Sc;;;;;;;;2MASX J13034979+3817107,LEDA 2122937,SDSS J130349.76+381711.6,SDSS J130349.77+381711.7;;;B-Mag taken from LEDA. -IC4146;G;13:04:10.38;+19:16:41.7;Com;0.52;0.38;9;16.94;;13.57;12.85;12.65;24.06;SBab;;;;;;;;2MASX J13041038+1916423,SDSS J130410.37+191641.6,SDSS J130410.37+191641.7;;;B-Mag taken from LEDA. -IC4147;G;13:04:09.43;+20:15:03.2;Com;0.32;0.17;156;17.35;;;;;;;;;;;;;;SDSS J130409.43+201503.1,SDSS J130409.42+201503.0;;;B-Mag taken from LEDA -IC4148;G;13:04:10.69;+19:15:33.0;Com;0.41;0.21;68;17.85;;14.37;13.71;13.21;24.16;Sbc;;;;;;;;2MASX J13041066+1915323,SDSS J130410.68+191532.8,SDSS J130410.68+191532.9;;;B-Mag taken from LEDA. -IC4149;G;13:04:10.82;+22:17:22.8;Com;0.65;0.39;82;15.50;;;;;23.09;Sb;;;;;;;;MCG +04-31-004,PGC 045159,SDSS J130410.82+221722.7,SDSS J130410.82+221722.8;;; -IC4150;*;13:04:13.04;+21:59:12.2;Com;;;;;;;;;;;;;;;;;;SDSS J130413.04+215912.2;;; -IC4151;GPair;13:03:58.94;+36:51:28.4;CVn;0.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4151 NED01;G;13:03:58.82;+36:51:25.4;CVn;0.25;0.18;65;17.76;;14.33;13.77;13.28;23.45;;;;;;;;;2MASX J13035913+3651297,PGC 2088237;;;B-Mag taken from LEDA. -IC4151 NED02;G;13:03:59.34;+36:51:30.4;CVn;0.47;0.23;8;17.58;;;;;24.12;Sbc;;;;;;;;SDSS J130359.07+365128.8,SDSS J130359.07+365128.7;;;B-Mag taken from LEDA -IC4152;G;13:03:58.46;+38:11:55.0;CVn;0.75;0.63;11;15.92;;12.76;11.92;11.75;24.16;E;;;;;;;;2MASX J13035841+3811547,LEDA 3088215,SDSS J130358.45+381154.9,SDSS J130358.46+381155.0;;;B-Mag taken from LEDA. -IC4153;*;13:04:26.57;+19:02:41.9;Com;;;;;;;;;;;;;;;;;;SDSS J130426.56+190241.9;;; -IC4154;G;13:04:28.27;+23:34:30.1;Com;0.62;0.53;111;15.50;;13.12;12.69;12.14;23.34;Sbc;;;;;;;;2MASX J13042827+2334306,PGC 1689776,SDSS J130428.26+233430.1;;;B-Mag taken from LEDA. -IC4155;*;13:04:08.90;+40:00:55.6;CVn;;;;;;;;;;;;;;;;;;SDSS J130408.89+400055.5;;; -IC4156;Dup;13:04:55.96;-07:56:51.7;Vir;;;;;;;;;;;;;;;4948;;;;;; -IC4157;*;13:04:18.58;+38:39:48.9;CVn;;;;;;;;;;;;;;;;;;SDSS J130418.57+383948.9;;The IC number also includes a defect on the original Heidelberg plate.; -IC4158;G;13:04:24.64;+36:28:47.6;CVn;0.76;0.25;125;15.74;;12.84;12.17;11.80;23.31;Sab;;;;;;;;2MASX J13042469+3628478,LEDA 2081347,SDSS J130424.64+362847.9,SDSS J130424.65+362847.9;;;B-Mag taken from LEDA. -IC4159;G;13:04:45.99;+22:14:31.7;Com;0.33;0.24;127;17.21;;14.73;14.07;13.39;23.52;Sbc;;;;;;;;2MASX J13044590+2214325,PGC 1666258,SDSS J130445.98+221431.6;;;B-Mag taken from LEDA. -IC4160;G;13:04:48.06;+22:53:32.9;Com;0.43;0.20;22;16.90;;13.53;12.78;12.43;23.38;SBb;;;;;;;;2MASX J13044806+2253325,IRAS 13023+2309,LEDA 1677859,SDSS J130448.05+225332.8,SDSS J130448.06+225332.8;;;B-Mag taken from LEDA. -IC4161;G;13:04:35.32;+39:58:38.9;CVn;0.71;0.18;107;16.04;;12.66;11.80;11.50;22.98;Sc;;;;;;;;2MASX J13043532+3958386,LEDA 2158676,SDSS J130435.31+395838.8,SDSS J130435.32+395838.9;;;B-Mag taken from LEDA. -IC4162;G;13:05:02.99;+20:33:17.3;Com;0.33;0.24;165;16.97;;14.06;13.69;13.27;23.27;Sb;;;;;;;;2MASX J13050299+2033176,PGC 1630533,SDSS J130502.98+203317.2,SDSS J130502.98+203317.3;;;B-Mag taken from LEDA. -IC4163;G;13:05:08.01;+20:46:14.6;Com;0.40;0.33;31;16.39;;13.52;12.82;12.52;23.10;Sbc;;;;;;;;2MASX J13050798+2046146,LEDA 1635544,SDSS J130508.00+204614.5,SDSS J130508.01+204614.5;;;B-Mag taken from LEDA. -IC4164;G;13:05:14.49;+20:32:49.6;Com;0.45;0.20;127;16.81;;13.88;13.31;13.06;23.42;Sb;;;;;;;;2MASX J13051445+2032496,PGC 1630316,SDSS J130514.48+203249.5,SDSS J130514.49+203249.5;;;B-Mag taken from LEDA. -IC4165;G;13:04:56.96;+39:55:29.7;CVn;0.64;0.60;16;19.02;17.95;14.98;14.30;13.96;23.06;Sc;;;;;;;;2MASX J13045697+3955296,MCG +07-27-025,PGC 045223,SDSS J130456.95+395529.7,SDSS J130456.96+395529.8;;; -IC4166;G;13:05:18.59;+31:26:32.3;CVn;1.01;0.49;177;15.20;;12.04;11.16;11.07;23.43;Sab;;;;;;;;2MASX J13051858+3126324,MCG +05-31-122,PGC 045264,SDSS J130518.30+312631.9,SDSS J130518.59+312632.3,UGC 08180;;Multiple SDSS entries describe this object.; -IC4167;G;13:05:30.75;+21:54:36.1;Com;0.40;0.25;160;16.83;;13.36;12.66;12.45;23.77;E;;;;;;;;2MASX J13053072+2154358,LEDA 1659732,SDSS J130530.75+215436.0,SDSS J130530.75+215436.1;;;B-Mag taken from LEDA. -IC4168;G;13:05:10.71;+40:02:58.9;CVn;0.65;0.50;74;15.36;;12.76;11.92;11.65;23.37;E;;;;;;;;2MASX J13051071+4002585,MCG +07-27-029,PGC 045244,SDSS J130510.70+400258.9,SDSS J130510.71+400258.8,SDSS J130510.71+400258.9;;;B-Mag taken from LEDA. -IC4169;GPair;13:05:12.09;+38:46:20.9;CVn;0.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4169 NED01;G;13:05:12.01;+38:46:14.5;CVn;0.15;0.12;120;19.09;;;;;23.73;;;;;;;;;2MASX J13051200+3846135,SDSS J130512.01+384614.4,SDSS J130512.01+384614.5;;;B-Mag taken from LEDA -IC4169 NED02;G;13:05:12.52;+38:46:24.8;CVn;0.51;0.47;130;16.41;;;;;23.81;E;;;;;;;;2MASX J13051251+3846245,SDSS J130512.51+384624.8,SDSS J130512.52+384624.8;;;B-Mag taken from LEDA -IC4170;GPair;13:05:34.85;+21:08:06.1;Com;0.80;;;;;;;;;;;;;;;;;;;; -IC4170 NED01;G;13:05:34.99;+21:08:05.8;Com;0.51;0.50;79;18.60;12.70;12.83;12.34;11.75;23.53;E;;;;;;;;2MASX J13053500+2108028,PGC 045290;;; -IC4170 NED02;G;13:05:35.27;+21:07:46.9;Com;0.26;0.17;95;18.93;;;;;24.78;;;;;;;;;SDSS J130535.26+210746.9;;;B-Mag taken from LEDA -IC4171;G;13:05:18.81;+36:06:10.4;CVn;0.71;0.39;82;16.00;;;;;23.50;Scd;;;;;;;;MCG +06-29-026,PGC 045265,SDSS J130518.80+360610.3,SDSS J130518.81+360610.4,UGC 08182;;; -IC4172;G;13:06:33.36;+22:51:01.4;Com;0.49;0.39;85;16.50;;13.91;13.06;12.88;23.41;Sb;;;;;;;;2MASX J13063328+2251010,PGC 045379,SDSS J130633.35+225101.3,SDSS J130633.35+225101.4;;; -IC4173;Dup;13:03:54.73;-11:30:18.2;Vir;;;;;;;;;;;;;;;4933A;;;;;; -IC4174;*;13:05:28.56;+36:23:47.1;CVn;;;;;;;;;;;;;;;;;;SDSS J130528.56+362347.0;;The IC number also includes a defect on the original Heidelberg plate.; -IC4175;G;13:05:47.47;+20:22:28.9;Com;0.40;0.27;138;16.84;;15.03;14.29;14.29;23.84;SBbc;;;;;;;;2MASX J13054747+2022288,PGC 1625424,SDSS J130547.47+202228.9;;;B-Mag taken from LEDA. -IC4176;Dup;13:03:56.74;-11:29:53.0;Vir;;;;;;;;;;;;;;;4933B;;;;;; -IC4177;G;13:06:28.95;-13:34:17.9;Vir;0.87;0.45;90;14.96;;12.88;12.25;12.13;23.09;Sa;;;;;;;;2MASX J13062894-1334180,MCG -02-33-107,PGC 045365;;;B-Mag taken from LEDA. -IC4178;G;13:05:41.50;+36:01:02.9;CVn;0.63;0.24;120;16.00;;;;;23.26;I;;;;;;;;MCG +06-29-030,PGC 045306,SDSS J130541.49+360102.8,SDSS J130541.50+360102.9,UGC 08187;;; -IC4179;*;13:05:45.90;+37:11:52.1;CVn;;;;;;;;;;;;;;;;;;SDSS J130545.89+371152.1;;; -IC4180;G;13:06:56.49;-23:55:01.6;Hya;1.38;1.02;163;13.60;;10.57;9.87;9.60;23.14;S0-a;;;;;;;;2MASX J13065651-2355014,ESO 508-005,ESO-LV 508-0050,IRAS 13042-2338,MCG -04-31-029,PGC 045408;;"Joguet et al. (2001A&A...380...19J) claim ""No activity""."; -IC4181;G;13:06:06.42;+21:29:38.0;Com;0.53;0.47;125;16.15;;13.46;12.91;12.53;23.43;SBb;;;;;;;;2MASX J13060644+2129375,LEDA 140073,SDSS J130606.41+212937.9,SDSS J130606.41+212938.0;;;B-Mag taken from LEDA. -IC4182;G;13:05:49.54;+37:36:17.6;CVn;6.01;5.52;0;11.86;;;;;25.09;Sm;;;;;;;;MCG +06-29-031,PGC 045314,SDSS J130548.70+373613.0,UGC 08188;;; -IC4183;G;13:06:11.56;+21:30:15.7;Com;0.46;0.40;113;16.72;;13.20;12.63;12.22;23.91;E;;;;;;;;2MASX J13061153+2130155,LEDA 3089889,SDSS J130611.55+213015.6,SDSS J130611.55+213015.7;;;B-Mag taken from LEDA. -IC4184;G;13:05:51.77;+38:50:14.6;CVn;0.33;0.22;111;15.54;;12.80;12.24;11.72;;E;;;;;;;;2MASX J13055179+3850141,LEDA 3088122,SDSS J130551.76+385014.5,SDSS J130551.77+385014.5,SDSS J130551.77+385014.6;;;B-Mag taken from LEDA. -IC4185;GPair;13:06:12.64;+21:46:22.9;Com;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4185 NED01;G;13:06:12.57;+21:46:09.3;Com;0.55;0.23;147;16.59;;13.36;12.51;12.27;24.18;E;;;;;;;;2MASX J13061255+2146095,PGC 1656882,SDSS J130612.57+214609.2;;;B-Mag taken from LEDA. -IC4185 NED02;G;13:06:12.77;+21:46:33.1;Com;0.32;0.19;21;18.03;;;;;23.80;Sm;;;;;;;;SDSS J130612.76+214633.1;;;B-Mag taken from LEDA -IC4186;**;13:05:57.36;+36:59:09.8;CVn;;;;;;;;;;;;;;;;;;;;; -IC4187;G;13:05:59.62;+36:17:54.5;CVn;0.55;0.43;157;15.53;;12.73;12.12;11.73;23.12;E-S0;;;;;;;;2MASX J13055960+3617551,MCG +06-29-032,PGC 045333,SDSS J130559.61+361754.4,SDSS J130559.62+361754.5;;;B-Mag taken from LEDA. -IC4188;G;13:06:02.33;+36:19:41.6;CVn;0.46;0.37;53;16.36;;14.61;14.33;13.64;23.42;Sbc;;;;;;;;2MASX J13060233+3619411,MCG +06-29-033,PGC 045332,SDSS J130602.32+361941.5,SDSS J130602.33+361941.6;;;B-Mag taken from LEDA. -IC4189;G;13:06:03.55;+35:58:49.2;CVn;1.25;0.84;180;14.50;;11.88;10.89;11.00;23.32;Sc;;;;;;;;2MASX J13060351+3558491,MCG +06-29-034,PGC 045336,SDSS J130603.54+355849.1,SDSS J130603.54+355849.2,UGC 08191;;; -IC4190;*;13:06:06.38;+37:36:36.1;CVn;;;;;;;;;;;;;;;;;;SDSS J130606.38+373636.0;;; -IC4191;PN;13:08:47.23;-67:38:37.5;Mus;0.08;;;12.00;10.60;11.63;11.73;10.75;;;;16.80;16.40;;;;HD 113981;ESO 096-002,IRAS 13054-6722,PK 304-04 1,PN G304.5-04.8;;Within 10 degrees of the galactic plane.; -IC4192;Other;13:06:08.60;+37:36:20.0;CVn;;;;;;;;;;;;;;;;;;;;This is a defect on the original Heidelberg plate.; -IC4193;G;13:06:06.33;+39:25:25.0;CVn;0.49;0.32;61;15.60;;12.88;12.07;11.82;22.40;Sbc;;;;;;;;2MASX J13060630+3925251,PGC 045342,SDSS J130606.32+392524.9,SDSS J130606.33+392525.0;;; -IC4194;*;13:06:07.79;+38:52:24.9;CVn;;;;;;;;;;;;;;;;;;SDSS J130607.79+385224.8;;; -IC4195;*;13:06:15.43;+37:02:23.2;CVn;;;;;;;;;;;;;;;;;;SDSS J130615.42+370223.2;;; -IC4196;Dup;13:07:33.74;-24:00:30.8;Hya;;;;;;;;;;;;;;;4970;;;;;; -IC4197;G;13:08:04.33;-23:47:48.7;Hya;1.84;1.12;162;13.50;;10.24;9.55;9.28;23.59;E-S0;;;;;;;;2MASX J13080432-2347486,ESO 508-013,ESO-LV 508-0130,MCG -04-31-036,PGC 045514;;; -IC4198;Dup;13:07:42.82;+24:48:38.1;Com;;;;;;;;;;;;;;;4979;;;;;; -IC4199;*;13:07:32.67;+35:51:35.4;CVn;;;;;;;;;;;;;;;;;;SDSS J130732.67+355135.4;;; -IC4200;G;13:09:34.76;-51:58:06.9;Cen;1.69;1.06;154;13.89;13.82;9.85;9.09;8.78;23.73;S0;;;;;;;;2MASX J13093473-5158066,ESO 219-033,ESO-LV 219-0330,PGC 045634;;; -IC4201;G;13:07:51.22;+35:50:05.5;CVn;0.66;0.63;85;15.50;;12.11;11.46;11.16;23.47;E;;;;;;;;2MASX J13075120+3550050,MCG +06-29-042,PGC 045490,SDSS J130751.21+355005.5;;;B-Mag taken from LEDA. -IC4202;G;13:08:31.58;+24:42:02.8;Com;1.74;0.36;142;15.20;;11.50;10.71;10.41;23.77;Sbc;;;;;;;;2MASX J13083158+2442030,IRAS 13060+2458,MCG +04-31-008,PGC 045549,SDSS J130831.57+244202.7,UGC 08220;;; -IC4203;*;13:08:19.07;+40:25:40.4;CVn;;;;;;;;;;;;;;;;;;SDSS J130819.06+402540.4;;; -IC4204;G;13:08:21.58;+39:27:40.2;CVn;0.95;0.21;42;16.00;;13.31;12.80;12.69;23.25;Sc;;;;;;;;2MASX J13082162+3927399,PGC 045534,SDSS J130821.57+392740.2,SDSS J130821.58+392740.2,UGC 08224;;; -IC4205;Dup;13:08:41.73;+52:46:27.4;UMa;;;;;;;;;;;;;;;;0853;;;;; -IC4206;*;13:09:21.94;+39:01:20.1;CVn;;;;;;;;;;;;;;;;;;SDSS J130921.94+390120.0;;; -IC4207;G;13:09:26.73;+37:49:22.6;CVn;0.49;0.30;2;16.61;;14.10;13.36;13.00;23.46;SBb;;;;;;;;2MASX J13092668+3749224,PGC 2110457,SDSS J130926.73+374922.5,SDSS J130926.73+374922.6;;;B-Mag taken from LEDA. -IC4208;*;13:09:37.99;+37:15:20.1;CVn;;;;;;;;;;;;;;;;;;SDSS J130937.99+371520.0;;; -IC4209;G;13:10:22.49;-07:10:14.5;Vir;1.28;0.53;99;14.50;;11.67;10.78;10.71;23.03;SBbc;;;;;;;;2MASX J13102248-0710144,IRAS 13077-0654,MCG -01-34-009,PGC 045702;;; -IC4210;Dup;13:10:47.65;+29:42:35.6;Com;;;;;;;;;;;;;;;5004B;;;;;; -IC4211;*;13:10:56.48;+37:10:34.5;CVn;;;;;;;;;;;;;;;;;;SDSS J131056.48+371034.4;;; -IC4212;G;13:12:02.99;-06:58:33.0;Vir;0.33;0.21;140;14.16;;;;;20.51;SBc;;;;;;;;MCG -01-34-011,PGC 045845,UGCA 333;;The IC identification is not certain.; -IC4213;G;13:12:11.22;+35:40:10.9;CVn;2.48;0.48;176;14.10;;12.41;11.62;11.44;23.33;Sc;;;;;;;;2MASX J13121121+3540107,MCG +06-29-057,PGC 045848,UGC 08280;;; -IC4214;G;13:17:42.69;-32:06:06.1;Cen;2.96;1.84;165;12.15;11.65;9.19;8.48;8.21;23.11;SBa;;;;;;;;2MASX J13174267-3206061,ESO 444-005,ESO-LV 444-0050,IRAS 13149-3150,MCG -05-31-043,PGC 046304;;; -IC4215;G;13:16:16.83;+25:24:18.8;Com;1.55;0.36;46;15.00;;11.54;10.82;10.52;23.58;Sab;;;;;;;;2MASX J13161713+2524241,IRAS 13138+2540,MCG +04-31-017,PGC 046186,SDSS J131616.82+252418.7,SDSS J131616.83+252418.7,UGC 08336;;; -IC4216;G;13:17:01.87;-10:46:12.0;Vir;2.05;0.77;53;13.50;;11.48;11.07;10.75;23.09;SABc;;;;;;;;2MASX J13170188-1046121,IRAS 13144-1030,MCG -02-34-013,PGC 046252;;Marginal HIPASS detection.; -IC4217;G;13:17:13.28;-13:09:14.7;Vir;0.68;0.62;30;15.10;;13.39;13.11;12.92;23.09;Sbc;;;;;;;;2MASX J13171328-1309142,MCG -02-34-014,PGC 046275;;; -IC4218;G;13:17:03.41;-02:15:40.6;Vir;1.20;0.37;159;14.60;14.73;11.74;10.95;10.58;22.82;Sbc;;;;;;;;2MASX J13170341-0215411,MCG +00-34-022,PGC 046254,SDSS J131703.41-021540.7,UGC 08348;;; -IC4219;G;13:18:29.74;-31:37:51.2;Cen;1.12;0.97;114;13.49;12.84;10.97;10.26;9.91;22.47;SBb;;;;;;;;2MASX J13182974-3137514,ESO 444-006,ESO-LV 444-0060,IRAS 13157-3122,MCG -05-31-044,PGC 046363;;; -IC4220;G;13:17:54.32;-13:36:19.7;Vir;0.85;0.61;105;14.94;;12.26;11.54;11.29;23.12;Sa;;;;;;;;2MASX J13175432-1336196,MCG -02-34-017,PGC 046316;;; -IC4221;G;13:18:30.35;-14:36:32.0;Vir;1.54;0.71;167;13.93;;11.20;10.47;10.27;22.63;SBc;;;;;;;;2MASX J13183034-1436319,IRAS 13158-1420,MCG -02-34-021,PGC 046366;;; -IC4222;Dup;13:19:40.57;-27:25:44.3;Hya;;;;;;;;;;;;;;;0879;;;;;; -IC4223;G;13:18:55.21;+07:47:43.8;Vir;0.72;0.53;140;15.40;;12.34;11.88;11.22;23.32;Sb;;;;;;;;2MASX J13185520+0747443,PGC 046397,SDSS J131855.21+074743.7;;; -IC4224;G;13:19:05.05;-02:30:55.1;Vir;0.88;0.37;99;14.60;;12.24;11.22;11.75;22.64;SBd;;;;;;;;2MASX J13190498-0230549,MCG +00-34-027,PGC 046420,SDSS J131905.04-023055.1,SDSS J131905.05-023055.1;;Position is for eccentric nucleus.; -IC4225;G;13:20:00.95;+31:58:53.0;CVn;1.64;0.33;131;15.10;;11.52;10.76;10.47;24.44;S0-a;;;;;;;;2MASX J13200088+3158527,MCG +05-31-177,PGC 046507,SDSS J132000.95+315853.0,UGC 08378;;; -IC4226;G;13:20:30.41;+32:00:14.1;CVn;0.49;0.35;140;15.20;;12.11;11.44;11.23;22.50;S0-a;;;;;;;;2MASX J13203041+3200138,MCG +05-32-002,PGC 046555,SDSS J132030.41+320014.1;;; -IC4227;G;13:20:53.48;+32:11:26.8;CVn;0.54;0.44;77;15.60;;13.03;12.35;12.14;22.87;SBb;;;;;;;;2MASX J13205351+3211263,PGC 046594,SDSS J132053.47+321126.7,SDSS J132053.48+321126.7,SDSS J132053.49+321126.7,SDSS J132053.49+321126.8;;; -IC4228;G;13:21:34.10;+25:30:58.5;Com;0.80;0.55;67;15.40;;11.93;11.15;10.90;23.16;SBa;;;;;;;;2MASX J13213407+2530585,MCG +04-32-001,PGC 046632,SDSS J132134.09+253058.4;;; -IC4229;G;13:22:26.13;-02:25:05.8;Vir;0.80;0.67;15;14.16;;11.82;11.22;10.83;22.59;Sb;;;;;;;;2MASX J13222614-0225062,IRAS 13198-0209,MCG +00-34-032,PGC 046717,SDSS J132226.12-022505.7,SDSS J132226.13-022505.7,SDSS J132226.13-022505.8,UGC 08404;;The APM position is east of the nucleus.; -IC4230;G;13:21:59.20;+26:44:01.9;Com;1.19;0.36;1;15.20;;11.54;10.86;10.57;23.64;Sa;;;;;;;;2MASX J13215917+2644015,MCG +05-32-008,PGC 046678,SDSS J132159.19+264401.8,UGC 08402;;; -IC4231;G;13:23:13.38;-26:18:01.4;Hya;2.06;0.57;34;14.17;;11.47;10.80;10.70;23.62;Sbc;;;;;;;;2MASX J13231382-2617531,MCG -04-32-009,PGC 046768;;; -IC4232;G;13:23:22.45;-26:06:34.2;Hya;1.19;0.37;4;14.57;;11.54;10.90;10.62;22.80;Sbc;;;;;;;;2MASX J13232245-2606342,ESO 508-061,ESO-LV 508-0610,IRAS 13206-2550,MCG -04-32-010,PGC 046779;;; -IC4233;Dup;13:24:50.43;-30:18:27.1;Cen;;;;;;;;;;;;;;;5124;;;;;; -IC4234;G;13:22:59.87;+27:06:59.1;Com;0.78;0.68;12;14.90;;12.03;11.38;11.10;22.91;SABa;;;;;;;;2MASX J13225983+2706585,MCG +05-32-011,PGC 046761,SDSS J132259.87+270659.1;;; -IC4235;G;13:23:52.97;-12:44:36.1;Vir;0.91;0.25;78;15.94;;12.85;12.31;11.96;24.48;;;;;;;;;2MASX J13235299-1244361,LEDA 158867;;; -IC4236;Dup;13:23:27.45;+06:23:33.2;Vir;;;;;;;;;;;;;;;5118;;;;;; -IC4237;G;13:24:32.76;-21:08:12.6;Vir;2.14;1.39;135;13.25;;10.23;9.55;9.32;23.24;SBb;;;;;;;;2MASX J13243276-2108124,ESO 576-048,ESO-LV 576-0480,IRAS 13218-2052,MCG -03-34-068,PGC 046878;;; -IC4238;G;13:23:59.95;+30:55:56.7;CVn;0.87;0.24;29;15.75;;12.60;11.82;11.43;23.61;Sab;;;;;;;;2MASX J13235992+3055568,LEDA 214106,SDSS J132359.95+305556.7,SDSS J132359.96+305556.7;;; -IC4239;G;13:24:25.43;+30:57:33.4;CVn;0.88;0.63;132;15.30;;12.30;11.69;11.42;23.59;S0-a;;;;;;;;2MASX J13242547+3057336,MCG +05-32-015,PGC 046872,SDSS J132425.42+305733.4,SDSS J132425.43+305733.4;;; -IC4240;G;13:24:27.56;+30:58:40.5;CVn;0.54;0.25;34;15.87;;;;;23.63;E;;;;;;;;2MASX J13242757+3058406,PGC 1926210,SDSS J132427.56+305840.4;;;B-Mag taken from LEDA. -IC4241;G;13:24:46.55;+26:44:18.3;Com;0.62;0.47;64;15.50;;12.45;11.80;11.54;23.25;E;;;;;;;;2MASX J13244652+2644186,MCG +05-32-016,PGC 046894,SDSS J132446.51+264418.2,SDSS J132446.54+264418.2,SDSS J132446.55+264418.3;;; -IC4242;G;13:24:40.92;+31:01:35.4;CVn;0.58;0.41;137;16.33;;13.14;12.76;12.32;23.47;SBb;;;;;;;;2MASX J13244099+3101351,PGC 1928313,SDSS J132440.91+310135.3,SDSS J132440.92+310135.4;;; -IC4243;G;13:25:51.24;-27:37:36.8;Hya;0.50;0.38;35;15.19;;12.12;11.54;11.35;22.64;E-S0;;;;;;;;2MASX J13255125-2737365,ESO 509-001,ESO-LV 509-0010,PGC 046984;;; -IC4244;G;13:24:56.27;+26:27:48.7;Com;0.81;0.34;82;15.60;;12.31;11.65;11.28;23.25;SBab;;;;;;;;2MASX J13245625+2627487,PGC 046914,SDSS J132456.26+262748.6,SDSS J132456.26+262748.7,SDSS J132456.27+262748.7;;; -IC4245;G;13:25:59.05;-26:40:39.8;Hya;0.73;0.52;112;15.25;;;;;23.23;Sa;;;;;;;;MCG -04-32-012,PGC 046998;;;B-Mag taken from LEDA. -IC4246;G;13:26:00.25;-26:40:41.0;Hya;0.62;0.26;147;15.34;;;;;22.65;Sa;;;;;;;;MCG -04-32-013,PGC 047012;;;B-Mag taken from LEDA. -IC4247;G;13:26:44.43;-30:21:44.7;Cen;1.38;0.52;154;14.67;14.28;;;;23.02;S?;;;;;;;;ESO 444-034,ESO-LV 444-0340,MCG -05-32-017,PGC 047073;;; -IC4248;G;13:26:47.22;-29:52:52.9;Hya;1.04;0.65;89;13.88;14.80;11.88;11.29;10.93;22.59;Sc;;;;;;;;2MASX J13264722-2952528,ESO 444-035,ESO-LV 444-0350,IRAS 13239-2937,MCG -05-32-018,PGC 047078;;; -IC4249;G;13:27:06.56;-27:57:23.0;Hya;1.43;0.41;111;14.48;14.57;12.14;11.64;11.73;23.17;Sab;;;;;;;;2MASX J13270656-2757229,ESO 444-039,ESO-LV 444-0390,IRAS 13243-2741,MCG -05-32-020,PGC 047119;;; -IC4250;G;13:26:08.94;+26:28:37.8;Com;0.55;0.32;53;15.20;;13.75;13.17;12.86;22.62;Sc;;;;;;;;2MASX J13260895+2628371,PGC 047008,SDSS J132608.93+262837.7,SDSS J132608.93+262837.8,SDSS J132608.94+262837.8;;; -IC4251;G;13:27:24.28;-29:26:39.7;Hya;0.98;0.65;145;14.96;;11.94;11.30;11.00;23.45;SBa;;;;;;;;2MASX J13272427-2926398,ESO 444-041,ESO-LV 444-0410,MCG -05-32-021,PGC 047145;;; -IC4252;G;13:27:28.00;-27:19:29.2;Hya;2.00;1.08;135;14.15;;10.88;10.14;9.87;24.33;E-S0;;;;;;;;2MASX J13272804-2719288,ESO 509-013,ESO-LV 509-0130,MCG -04-32-018,PGC 047150;;; -IC4253;G;13:27:32.37;-27:52:19.7;Hya;1.41;0.71;135;14.82;;11.58;10.92;10.43;23.70;Sbc;;;;;;;;2MASX J13273235-2752198,ESO 444-042,ESO-LV 444-0420,MCG -05-32-022,PGC 047161;;; -IC4254;G;13:27:45.37;-27:13:21.1;Hya;0.75;0.54;81;15.59;;12.79;11.98;11.84;23.40;Sb;;;;;;;;2MASX J13274544-2713208,ESO 509-017,ESO-LV 509-0170,PGC 047176;;; -IC4255;G;13:28:00.12;-27:21:15.5;Hya;1.34;0.99;45;14.18;;11.03;10.35;10.04;23.75;E-S0;;;;;;;;2MASX J13280012-2721154,ESO 509-020,ESO-LV 509-0200,MCG -04-32-020,PGC 047209;;; -IC4256;G;13:27:03.19;+30:58:36.6;CVn;0.66;0.32;44;15.50;;13.48;12.76;12.37;23.02;Sb;;;;;;;;2MASX J13270315+3058365,PGC 047120,SDSS J132703.18+305836.6,SDSS J132703.19+305836.6;;; -IC4257;Other;13:27:20.33;+46:52:01.2;CVn;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4258;G;13:27:53.26;+28:30:29.5;CVn;0.85;0.68;29;15.20;;11.70;11.07;10.77;23.61;E;;;;;;;;2MASX J13275328+2830291,MCG +05-32-022,PGC 047200,SDSS J132753.26+283029.4,SDSS J132753.26+283029.5,SDSS J132753.27+283029.5;;; -IC4259;G;13:29:28.15;-30:08:05.8;Cen;0.99;0.56;149;15.10;;12.27;11.52;11.31;23.66;SBab;;;;;;;;2MASX J13292815-3008058,2MASX J13292869-3008008,ESO 444-051,ESO-LV 444-0510,PGC 047356;;; -IC4260;G;13:29:40.42;-28:15:57.9;Hya;1.17;0.29;96;15.65;;12.45;11.75;11.38;23.92;Sab;;;;;;;;2MASX J13294041-2815578,ESO 444-052,ESO-LV 444-0520,PGC 047374;;; -IC4261;G;13:29:47.66;-28:00:22.9;Hya;1.17;0.86;131;14.52;;11.38;10.64;10.42;23.79;S0;;;;;;;;2MASX J13294767-2800228,ESO 444-054,ESO-LV 444-0540,MCG -05-32-032,PGC 047392;;; -IC4262;G;13:30:23.10;-28:16:14.1;Hya;1.18;0.37;65;15.61;;12.17;11.44;11.30;23.83;Sb;;;;;;;;2MASX J13302309-2816141,ESO 444-058,ESO-LV 444-0580,PGC 047457;;; -IC4263;G;13:28:33.19;+46:55:37.9;CVn;1.71;0.42;102;15.10;;13.22;12.61;12.16;23.95;SBcd;;;;;;;;MCG +08-25-007,PGC 047270,SDSS J132833.18+465537.8,SDSS J132833.19+465537.9,UGC 08470;;; -IC4264;G;13:30:17.72;-27:55:42.4;Hya;1.88;0.47;105;14.98;;12.92;12.23;12.16;23.81;Sc;;;;;;;;2MASX J13301771-2755421,ESO 444-057,ESO-LV 444-0570,MCG -05-32-033,PGC 047452;;; -IC4265;G;13:30:22.97;-25:45:56.0;Hya;0.84;0.53;5;15.54;;12.68;12.03;11.51;23.46;Sab;;;;;;;;2MASX J13302296-2545561,ESO 509-034,ESO-LV 509-0340,PGC 047456;;; -IC4266;G;13:29:05.63;+37:36:42.3;CVn;0.55;0.50;10;16.17;;13.36;12.71;12.57;23.57;SBab;;;;;;;;2MASX J13290566+3736420,PGC 2105009,SDSS J132905.63+373642.3;;;B-Mag taken from LEDA. -IC4267;G;13:30:36.10;-26:15:21.8;Hya;1.30;0.45;135;15.22;;13.01;12.47;12.26;23.62;Sbc;;;;;;;;2MASX J13303610-2615219,ESO 509-035,ESO-LV 509-0350,MCG -04-32-024,PGC 047474;;; -IC4268;G;13:29:12.33;+37:39:37.8;CVn;0.63;0.46;90;16.28;;13.01;12.41;12.00;24.10;E;;;;;;;;2MASX J13291231+3739381,LEDA 2106228,SDSS J132912.33+373937.8,SDSS J132912.33+373937.9;;;B-Mag taken from LEDA. -IC4269;G;13:29:21.04;+37:37:23.1;CVn;0.46;0.46;85;;;11.59;10.96;10.65;;E;;;;;;;;2MASX J13292098+3737231,MCG +06-30-014,PGC 047348,SDSS J132920.99+373722.8;;; -IC4270;G;13:30:49.09;-25:20:01.2;Hya;0.95;0.83;7;14.75;;12.07;11.52;11.21;23.14;Sbc;;;;;;;;2MASX J13304907-2520009,ESO 509-037,ESO-LV 509-0370,MCG -04-32-027,PGC 047500;;; -IC4271;GPair;13:29:21.40;+37:24:42.0;CVn;0.80;;;;;;;;;;;;;;;;;MCG +06-30-015;;;Diameter of the group inferred by the author. -IC4271 NED01;G;13:29:21.44;+37:24:50.5;CVn;0.87;0.66;167;15.60;;12.67;11.99;11.61;23.48;SBbc;;;;;;;;2MASX J13292141+3724501,MCG +06-30-015 NED01,PGC 047334,SDSS J132921.43+372450.4;;; -IC4271 NED02;G;13:29:21.31;+37:24:34.8;CVn;;;;;;;;;;;;;;;;;;MCG +06-30-015 NED02,PGC 3096774,SDSS J132921.31+372434.8;;Multiple SDSS entries describe this object.;No data available in LEDA -IC4272;G;13:31:16.56;-29:57:26.5;Hya;0.98;0.18;111;15.60;;12.84;12.14;11.79;23.08;Sbc;;;;;;;;2MASX J13311656-2957266,ESO 444-063,ESO-LV 444-0630,IRAS 13284-2941,PGC 047533;;; -IC4273;G;13:31:29.86;-28:53:36.4;Hya;0.95;0.64;24;15.21;;12.63;12.14;11.71;23.83;S0;;;;;;;;2MASX J13312986-2853366,ESO 444-065,ESO-LV 444-0650,MCG -05-32-035,PGC 047552;;; -IC4274;Dup;13:33:32.91;-65:58:26.6;Mus;;;;;;;;;;;;;;;5189;;;;;; -IC4275;G;13:31:51.30;-29:43:56.6;Hya;0.95;0.54;25;14.23;16.60;11.79;11.17;10.85;22.49;SBbc;;;;;;;;2MASX J13315129-2943567,ESO 444-067,ESO-LV 444-0670,IRAS 13290-2928,MCG -05-32-038,PGC 047573;;; -IC4276;G;13:32:06.26;-28:09:24.6;Hya;1.32;0.18;61;15.36;;11.91;11.03;10.75;23.19;Sc;;;;;;;;2MASX J13320625-2809246,ESO 444-068,ESO-LV 444-0680,IRAS 13292-2753,PGC 047594;;; -IC4277;G;13:30:16.72;+47:18:51.0;CVn;0.67;0.08;91;;;;;;;;;;;;;;;PGC 4662915;;;NED lists this object as type G, but listed as Unknown in LEDA. Axes dimensions inferred by the author. -IC4278;G;13:30:27.55;+47:14:48.8;CVn;0.43;0.40;65;17.79;;;;;24.23;SBc;;;;;;;;LEDA 2294907;;Possible double nucleus or interacting pair?;B-Mag taken from LEDA. -IC4279;G;13:32:30.97;-27:07:38.9;Hya;0.68;0.38;52;15.48;;12.11;11.43;11.10;22.96;Sb;;;;;;;;2MASX J13323097-2707388,ESO 509-047,ESO-LV 509-0470,MCG -04-32-032,PGC 047642;;; -IC4280;G;13:32:53.40;-24:12:25.7;Hya;1.13;0.76;64;13.48;;10.47;9.75;9.47;22.36;Sbc;;;;;;;;2MASX J13325338-2412258,ESO 509-054,ESO-LV 509-0540,IRAS 13301-2357,MCG -04-32-036,PGC 047688;;; -IC4281;G;13:32:38.25;-27:10:10.7;Hya;1.30;0.79;98;14.10;;11.29;10.57;10.18;23.36;Sc;;;;;;;;2MASX J13323824-2710108,MCG -04-32-033,PGC 047653;;; -IC4282;G;13:31:19.77;+47:11:01.9;CVn;0.40;0.38;156;17.83;;;;;24.59;;;;;;;;;SDSS J133119.76+471101.8,SDSS J133119.76+471101.9,SDSS J133119.77+471101.9;;;B-Mag taken from LEDA. -IC4283;G;13:32:10.68;+28:23:20.8;CVn;0.65;0.34;69;15.40;;12.82;12.01;11.69;22.82;SBb;;;;;;;;2MASX J13321068+2823203,PGC 047611,SDSS J133210.67+282320.8,SDSS J133210.68+282320.8;;; -IC4284;G;13:31:31.94;+46:47:42.4;CVn;0.32;0.30;21;17.27;;;;;23.44;Sc;;;;;;;;PGC 2287260,SDSS J133131.93+464742.4,SDSS J133131.94+464742.4;;;B-Mag taken from LEDA. -IC4285;G;13:31:45.54;+46:49:17.8;CVn;0.32;0.17;92;17.88;;;;;24.10;;;;;;;;;PGC 2287732,SDSS J133145.53+464917.7,SDSS J133145.54+464917.8;;;B-Mag taken from LEDA. -IC4286;G;13:33:35.65;-27:37:52.4;Hya;0.41;0.34;20;15.95;;14.05;13.55;13.25;22.63;Sbc;;;;;;;;2MASX J13333565-2737520,ESO 509-058,ESO-LV 509-0580,PGC 047754;;; -IC4287;GPair;13:32:39.00;+25:26:28.0;Com;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4287 NED01;G;13:32:38.97;+25:26:28.0;Com;0.96;0.46;152;15.30;;12.29;11.66;11.31;23.59;Sa;;;;;;;;2MASX J13323896+2526279,PGC 047659;;; -IC4287 NED02;G;13:32:39.66;+25:26:24.7;Com;;;;;;;;;;;;;;;;;;SDSS J133239.65+252624.6;;;No data available in LEDA -IC4288;G;13:34:30.42;-27:18:15.2;Hya;1.36;0.60;114;14.76;;11.20;10.39;10.03;23.51;Sbc;;;;;;;;2MASX J13343041-2718154,ESO 509-061,ESO-LV 509-0610,MCG -04-32-039,PGC 047831;;; -IC4289;G;13:34:47.81;-27:07:37.5;Hya;1.40;0.62;8;14.33;;11.12;10.39;10.14;23.75;E-S0;;;;;;;;2MASX J13344779-2707374,ESO 509-067,ESO-LV 509-0670,MCG -04-32-041,PGC 047861;;; -IC4290;G;13:35:19.58;-28:01:18.5;Hya;1.35;1.11;99;14.24;;11.20;10.57;10.33;23.46;Sb;;;;;;;;2MASX J13351958-2801185,ESO 444-074,ESO-LV 444-0740,MCG -05-32-044,PGC 047905;;; -IC4291;OCl;13:36:56.41;-62:05:35.2;Cen;5.10;;;10.30;9.70;;;;;;;;;;;;;MWSC 2142;;; -IC4292;G;13:35:46.60;-27:40:25.9;Hya;0.56;0.48;14;15.03;;12.98;12.32;11.90;22.57;Sbc;;;;;;;;2MASX J13354660-2740258,ESO 509-076,ESO-LV 509-0760,IRAS 13329-2725,PGC 047956;;; -IC4293;G;13:36:02.26;-25:52:56.3;Hya;2.19;1.39;177;13.52;13.50;10.38;9.73;9.49;23.98;E-S0;;;;;;;;2MASX J13360226-2552562,ESO 509-077,ESO-LV 509-0770,MCG -04-32-044,PGC 047987;;; -IC4294;G;13:36:31.23;-28:46:52.1;Hya;0.93;0.45;32;15.59;;12.69;12.13;11.76;23.62;SBb;;;;;;;;2MASX J13363121-2846518,ESO 444-079,ESO-LV 444-0790,PGC 048031;;; -IC4295;G;13:36:34.46;-29:05:22.0;Hya;1.04;0.40;114;15.13;;12.72;12.17;11.79;23.21;Sbc;;;;;;;;2MASX J13363446-2905218,ESO 444-080,ESO-LV 444-0800,MCG -05-32-049,PGC 048035;;; -IC4296;G;13:36:39.03;-33:57:57.0;Cen;4.62;2.43;42;11.52;12.99;8.48;7.77;7.50;23.73;E;;;;;;;;2MASX J13363905-3357572,ESO 383-039,ESO-LV 383-0390,MCG -06-30-016,PGC 048040;;; -IC4297;G;13:35:19.25;+26:25:29.2;Boo;0.88;0.40;70;15.50;;12.52;11.63;11.55;23.57;SBa;;;;;;;;2MASX J13351924+2625288,MCG +05-32-040,PGC 047906,SDSS J133519.24+262529.1,SDSS J133519.25+262529.1,UGC 08570;;; -IC4298;G;13:36:34.73;-26:33:13.9;Hya;1.60;0.82;177;14.16;;11.24;10.56;10.21;23.39;Sc;;;;;;;;2MASX J13363471-2633139,ESO 509-080,ESO-LV 509-0800,MCG -04-32-045,PGC 048036;;; -IC4299;G;13:36:47.48;-34:03:56.9;Cen;1.87;0.81;58;13.82;12.67;10.29;9.62;9.37;23.41;Sa;;;;;;;;2MASX J13364758-3403572,ESO 383-042,ESO-LV 383-0420,MCG -06-30-017,PGC 048057;;; -IC4300;G;13:35:25.20;+33:25:11.3;CVn;0.23;0.23;12;15.75;;12.77;11.87;11.84;21.43;E;;;;;;;;2MASX J13352519+3325116,MCG +06-30-048,PGC 047912,SDSS J133525.19+332511.3,SDSS J133525.20+332511.3;;;B-Mag taken from LEDA. -IC4301;G;13:35:35.80;+33:22:28.2;CVn;1.29;0.39;130;16.00;;12.30;11.47;11.17;24.03;SBb;;;;;;;;PGC 047936,2MASX J13353581+3322286,MCG+06-30-050,SDSS J133535.80+332228.1,UGC 08579;;; -IC4302;G;13:35:35.95;+33:28:46.5;CVn;1.36;0.27;126;16.50;;12.78;11.94;11.74;23.97;Sc;;;;;;;;2MASX J13353598+3328466,MCG +06-30-051,PGC 047935,SDSS J133535.94+332846.4,SDSS J133535.94+332846.5,SDSS J133535.95+332846.5,UGC 08580;;; -IC4303;G;13:37:18.22;-28:39:28.7;Hya;0.98;0.54;71;15.27;;13.91;13.47;13.19;23.44;SABb;;;;;;;;2MASX J13371823-2839285,ESO 444-083,ESO-LV 444-0830,MCG -05-32-051,PGC 048104;;; -IC4304;G;13:35:57.88;+33:25:48.1;CVn;1.31;0.55;41;15.00;;11.26;10.54;10.26;23.47;Sab;;;;;;;;2MASX J13355786+3325477,MCG +06-30-055,PGC 047980,SDSS J133557.87+332548.0,SDSS J133557.88+332548.0,SDSS J133557.88+332548.1,UGC 08586;;; -IC4305;G;13:35:58.37;+33:28:26.1;CVn;0.98;0.86;173;15.10;;11.52;10.76;10.59;23.49;S0;;;;;;;;2MASX J13355834+3328257,MCG +06-30-054,PGC 047981,SDSS J133558.37+332826.0,SDSS J133558.37+332826.1;;; -IC4306;G;13:36:19.64;+33:25:24.4;CVn;1.10;0.39;81;15.70;;12.25;11.44;11.18;23.92;Sa;;;;;;;;2MASX J13361966+3325247,MCG +06-30-058,PGC 048015,SDSS J133619.63+332524.3,SDSS J133619.64+332524.4;;; -IC4307;G;13:36:36.17;+27:14:31.9;Boo;0.66;0.59;84;15.20;;12.05;11.26;11.20;23.02;S0;;;;;;;;2MASX J13363615+2714322,MCG +05-32-043,PGC 048032,SDSS J133636.17+271431.8;;; -IC4308;Other;13:36:52.36;+32:44:00.1;CVn;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4309;G;13:38:50.04;-29:39:45.8;Hya;0.77;0.50;132;15.47;;12.59;11.85;11.80;23.24;Sbc;;;;;;;;2MASX J13385002-2939457,ESO 444-091,ESO-LV 444-0910,PGC 048250;;; -IC4310;G;13:38:57.14;-25:50:44.6;Hya;2.38;0.96;73;13.25;;9.81;9.08;8.87;23.89;S0;;;;;;;;2MASX J13385713-2550447,ESO 509-088,ESO-LV 509-0880,MCG -04-32-047,PGC 048258;;; -IC4311;G;13:40:07.96;-51:02:10.1;Cen;1.11;0.78;161;14.06;;11.93;11.37;10.95;22.77;Sbc;;;;;;;;2MASX J13400796-5102102,ESO 220-027,ESO-LV 220-0270,IRAS 13370-5047,PGC 048352;;; -IC4312;G;13:40:30.90;-51:04:15.2;Cen;1.21;0.89;75;13.41;;9.80;9.12;8.82;22.78;S0;;;;;;;;2MASX J13403087-5104152,ESO 220-029,ESO-LV 220-0290,IRAS 13373-5049,PGC 048384;;; -IC4313;G;13:38:20.71;+26:45:35.2;Boo;0.59;0.38;38;15.60;;12.73;12.04;11.66;23.71;E;;;;;;;;2MASX J13382069+2645346,MCG +05-32-046,PGC 048186,SDSS J133820.70+264535.1,SDSS J133820.71+264535.2;;; -IC4314;G;13:38:25.07;+26:44:33.0;Boo;0.91;0.65;10;15.00;;11.45;10.56;10.46;23.54;E;;;;;;;;2MASX J13382503+2644326,MCG +05-32-047,PGC 048197,SDSS J133825.06+264432.9;;; -IC4315;G;13:40:03.19;-25:28:28.4;Hya;1.60;0.32;132;14.99;;12.91;12.29;12.18;23.41;SBc;;;;;;;;2MASX J13400317-2528282,ESO 509-091,ESO-LV 509-0910,MCG -04-32-049,PGC 048346;;; -IC4316;G;13:40:18.41;-28:53:32.0;Hya;1.38;1.00;56;15.02;15.93;;;;23.70;IB;;;;;;;;ESO 445-006,ESO-LV 445-0060,MCG -05-32-062,PGC 048368,PGC 048369;;Noted in MCG as possibly interacting.; -IC4317;G;13:41:45.82;+27:06:22.9;Boo;0.51;0.34;23;15.72;;13.09;12.57;12.18;23.16;Sa;;;;;;;;2MASX J13414585+2706228,LEDA 087672,SDSS J134145.81+270622.8,SDSS J134145.82+270622.8,SDSS J134145.82+270622.9;;; -IC4318;G;13:43:22.69;-28:58:04.6;Hya;1.08;0.95;10;14.58;;11.95;11.19;10.98;23.28;Sc;;;;;;;;2MASX J13432267-2858046,ESO 445-017,ESO-LV 445-0170,IRAS 13405-2842,MCG -05-32-069,PGC 048613;;; -IC4319;G;13:43:26.57;-29:48:12.5;Hya;1.61;0.54;73;14.35;;11.09;10.46;10.11;23.30;Sbc;;;;;;;;2MASX J13432657-2948126,ESO 445-019,ESO-LV 445-0190,IRAS 13406-2933,MCG -05-32-071,PGC 048617;;; -IC4320;G;13:44:03.72;-27:13:54.1;Hya;1.31;1.18;30;14.25;;10.95;10.26;9.96;23.52;S0-a;;;;;;;;2MASX J13440372-2713542,ESO 509-101,ESO-LV 509-1010,MCG -04-32-053,PGC 048655;;; -IC4321;G;13:44:31.25;-30:08:22.5;Cen;1.02;0.62;33;15.15;;12.72;12.01;11.57;23.50;Sbc;;;;;;;;2MASX J13443124-3008225,ESO 445-022,ESO-LV 445-0220,MCG -05-32-073,PGC 048694;;; -IC4322;G;13:43:44.15;+25:23:31.7;Boo;0.69;0.55;71;15.50;;12.03;11.21;10.87;23.35;E-S0;;;;;;;;2MASX J13434413+2523318,PGC 048635,SDSS J134344.15+252331.7;;; -IC4323;G;13:45:06.88;-28:39:04.5;Hya;1.10;0.20;58;15.91;;14.14;13.51;13.12;23.57;Sbc;;;;;;;;2MASX J13450689-2839048,ESO 445-024,ESO-LV 445-0240,PGC 048748,TYC 6727-722-1;;; -IC4324;G;13:45:27.31;-30:13:38.0;Cen;0.90;0.57;126;14.82;;12.26;11.75;11.42;23.01;Sb;;;;;;;;2MASX J13452731-3013377,ESO 445-025,ESO-LV 445-0250,IRAS 13426-2958,MCG -05-32-075,PGC 048776;;; -IC4325;G;13:47:39.65;-29:26:03.7;Hya;1.20;0.48;101;14.76;;11.86;11.14;10.77;23.23;SABb;;;;;;;;2MASX J13473964-2926035,ESO 445-032,ESO-LV 445-0320,IRAS 13448-2911,MCG -05-33-007,PGC 048908;;; -IC4326;G;13:48:21.49;-29:37:35.0;Hya;1.00;0.81;166;14.46;;11.58;10.89;10.60;22.97;Sc;;;;;;;;2MASX J13482148-2937349,ESO 445-038,ESO-LV 445-0380,IRAS 13454-2922,MCG -05-33-012,PGC 048966;;; -IC4327;G;13:48:43.80;-30:13:03.0;Cen;1.15;0.58;56;14.61;11.81;12.38;12.10;11.64;23.00;Sc;;;;;;;;2MASX J13484378-3013031,ESO 445-041,ESO-LV 445-0410,IRAS 13458-2958,MCG -05-33-016,PGC 048997;;; -IC4328;G;13:49:02.90;-29:56:13.3;Hya;1.07;0.70;174;14.94;;11.90;11.32;11.10;23.49;SBab;;;;;;;;2MASX J13490291-2956132,ESO 445-045,ESO-LV 445-0450,PGC 049023;;; -IC4329;G;13:49:05.31;-30:17:45.1;Cen;4.74;2.65;67;11.96;11.54;8.95;8.35;8.06;24.33;E-S0;;;;;;;;2MASX J13490531-3017452,ESO 445-046,ESO-LV 445-0460,MCG -05-33-019,PGC 049025;;; -IC4330;G;13:47:14.85;-28:19:54.5;Hya;1.29;0.65;93;14.75;;11.77;11.06;10.71;23.38;SBc;;;;;;;;2MASX J13471484-2819544,ESO 445-027,ESO-LV 445-0270,MCG -05-33-003,PGC 048881;;Two minute error in IC RA.; -IC4331;G;13:49:24.61;+25:09:16.8;Boo;0.63;0.51;64;15.73;;;;;23.24;SBb;;;;;;;;2MASX J13492460+2509166,PGC 1727130,SDSS J134924.60+250916.7,SDSS J134924.61+250916.7,SDSS J134924.61+250916.8;;;B-Mag taken from LEDA. -IC4332;G;13:49:52.55;+25:11:27.2;Boo;0.85;0.78;3;15.30;;12.26;11.56;11.31;23.69;S0;;;;;;;;2MASX J13495252+2511272,MCG +04-33-008,PGC 049081,SDSS J134952.54+251127.1,SDSS J134952.55+251127.2;;; -IC4333;G;14:05:20.59;-84:16:21.7;Oct;1.80;0.46;60;14.56;;11.30;10.63;10.36;24.70;S0-a;;;;;;;;2MASX J14052054-8416219,ESO 008-005,IRAS 13574-8402,PGC 050242;;; -IC4334;G;13:49:48.27;+29:41:38.7;CVn;0.59;0.50;147;15.40;;12.60;11.78;11.57;23.17;E-S0;;;;;;;;2MASX J13494831+2941391,MCG +05-33-008,PGC 049072,SDSS J134948.27+294138.6,SDSS J134948.27+294138.7;;; -IC4335;*;13:49:45.07;+33:40:25.1;CVn;;;;;;;;;;;;;;;;;;;;Could be a double star with a blended image on the DSS.; -IC4336;G;13:50:43.37;+39:42:24.4;CVn;1.37;0.41;155;14.60;;11.33;10.69;10.63;23.34;Sb;;;;;;;;2MASX J13504341+3942246,IRAS 13485+3957,MCG +07-28-077,PGC 049146,SDSS J135043.36+394224.3,SDSS J135043.36+394224.4,UGC 08761;;; -IC4337;G;13:52:19.28;+14:16:18.9;Boo;0.77;0.38;106;15.20;;12.04;11.18;11.04;23.40;S0-a;;;;;;;;2MASX J13521931+1416185,PGC 049253,SDSS J135219.28+141618.8,SDSS J135219.28+141618.9;;; -IC4338;Dup;13:52:54.46;-01:06:52.7;Vir;;;;;;;;;;;;;;;5334;;;;;; -IC4339;*;13:53:28.83;+37:32:20.5;CVn;;;;12.04;11.50;10.76;10.45;10.40;;;;;;;;;;2MASS J13532882+3732206,SDSS J135328.82+373220.4,TYC 3027-379-1;;; -IC4340;G;13:53:33.53;+37:23:13.1;CVn;1.27;0.90;31;15.00;;11.15;10.46;10.16;23.79;E-S0;;;;;;;;2MASX J13533353+3723132,MCG +06-31-009,PGC 049364,SDSS J135333.53+372313.1,SDSS J135333.54+372313.1;;; -IC4341;G;13:53:34.25;+37:31:20.1;CVn;0.92;0.84;50;14.90;;12.44;12.03;11.70;23.28;Sc;;;;;;;;2MASX J13533422+3731202,MCG +06-31-010,PGC 049366,SDSS J135334.24+373120.0,SDSS J135334.25+373120.1;;; -IC4342;G;13:54:22.11;+25:09:11.1;Boo;1.09;0.43;53;15.40;;12.07;11.52;11.39;23.54;Sab;;;;;;;;2MASX J13542211+2509114,MCG +04-33-021,PGC 049425,SDSS J135422.10+250911.1,SDSS J135422.11+250911.1;;; -IC4343;G;13:54:55.80;+25:07:21.5;Boo;1.05;0.61;102;15.60;;11.82;11.12;10.84;24.06;E;;;;;;;;2MASX J13545583+2507214,MCG +04-33-024,PGC 049470,SDSS J135455.79+250721.5,SDSS J135455.80+250721.5;;; -IC4344;G;13:55:12.59;+25:01:17.2;Boo;1.10;0.70;67;15.50;;11.74;11.06;10.82;23.64;Sab;;;;;;;;2MASX J13551261+2501175,MCG +04-33-026,PGC 049492,SDSS J135512.58+250117.1,SDSS J135512.59+250117.2;;; -IC4345;G;13:55:13.39;+25:03:06.5;Boo;1.23;1.18;134;14.70;;11.11;10.41;10.09;23.55;E;;;;;;;;2MASX J13551342+2503065,MCG +04-33-025,PGC 095536,SDSS J135513.38+250306.4,SDSS J135513.38+250306.5,SDSS J135513.39+250306.5;;; -IC4346;G;13:55:40.57;+25:09:11.0;Boo;0.73;0.66;4;15.40;;12.36;11.64;11.43;23.07;S0-a;;;;;;;;2MASX J13554060+2509109,MCG +04-33-029,PGC 215031,SDSS J135540.56+250910.9,SDSS J135540.57+250910.9,SDSS J135540.57+250911.0;;; -IC4347;Dup;13:57:43.87;-39:58:42.3;Cen;;;;;;;;;;;;;;;5367;;;;;; -IC4348;G;13:55:45.09;+25:12:11.2;Boo;1.13;1.13;117;15.70;;12.07;11.36;11.26;24.74;E;;;;;;;;2MASX J13554510+2512110,MCG +04-33-030,PGC 049531,SDSS J135545.08+251211.2,SDSS J135545.09+251211.2;;; -IC4349;G;13:55:46.34;+25:09:06.9;Boo;1.04;0.50;119;15.30;;12.07;11.38;11.04;23.41;Sab;;;;;;;;2MASX J13554635+2509070,MCG +04-33-032,PGC 049530,SDSS J135546.34+250906.8,SDSS J135546.34+250906.9;;; -IC4350;G;13:57:13.92;-25:14:44.9;Hya;1.88;0.74;133;13.70;;10.27;9.57;9.29;23.74;S0-a;;;;;;;;2MASX J13571393-2514451,ESO 510-022,ESO-LV 510-0220,MCG -04-33-019,PGC 049628;;; -IC4351;G;13:57:54.26;-29:18:56.6;Hya;6.55;1.04;18;12.61;;9.09;8.34;8.02;24.19;Sb;;;;;;;;2MASX J13575425-2918566,ESO 445-084,ESO-LV 445-0840,IRAS 13550-2904,LEDA 3149676,MCG -05-33-034,PGC 049676,UGCA 376;;; -IC4352;G;13:58:25.12;-34:31:02.4;Cen;1.82;0.73;88;13.59;;9.92;9.20;8.89;23.10;Sab;;;;;;;;2MASX J13582512-3431024,ESO 384-022,ESO-LV 384-0220,MCG -06-31-007,PGC 049726;;; -IC4353;Other;13:57:03.70;+37:43:44.6;CVn;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4354;G;13:58:30.90;-12:36:19.3;Vir;1.36;0.33;106;15.33;;11.95;11.31;11.02;23.64;Sc;;;;;;;;2MASX J13583078-1236185,IRAS 13558-1221,MCG -02-36-001,PGC 049731;;;B-Mag taken from LEDA. -IC4355;G;13:58:06.12;+28:25:21.7;CVn;0.43;0.40;54;15.00;;13.08;12.30;12.08;22.19;Sa;;;;;;;;2MASX J13580609+2825221,MCG +05-33-030,PGC 049690,SDSS J135806.11+282521.6;;; -IC4356;G;13:58:45.10;+37:29:26.4;CVn;0.54;0.46;15;15.86;;12.86;12.18;11.88;23.32;S0;;;;;;;;2MASX J13584507+3729264,PGC 049759,SDSS J135845.09+372926.4;;;B-Mag taken from LEDA. -IC4357;G;14:00:43.69;+31:53:39.0;CVn;0.93;0.51;67;14.90;;12.86;12.19;12.08;22.98;Sbc;;;;;;;;2MASX J14004369+3153392,MCG +05-33-040,PGC 049879,SDSS J140043.65+315339.0,UGC 08926;;; -IC4358;G;14:03:34.18;-10:09:04.5;Vir;1.39;0.29;111;15.30;;13.61;12.80;12.69;23.22;Sbc;;;;;;;;2MASX J14033416-1009043,MCG -02-36-004,PGC 050092;;; -IC4359;G;14:05:23.33;-45:16:11.2;Cen;1.18;0.89;13;13.82;;11.23;10.50;10.32;22.68;Sc;;;;;;;;2MASX J14052333-4516113,ESO 271-015,ESO-LV 271-0150,IRAS 14022-4501,PGC 050248;;; -IC4360;G;14:04:21.34;-11:25:29.4;Vir;0.78;0.47;33;16.46;;13.29;12.62;12.54;23.75;SBab;;;;;;;;2MASX J14042133-1125287,LEDA 094256;;; -IC4361;G;14:04:07.47;-09:46:08.0;Vir;0.66;0.34;170;;;13.05;12.52;12.34;;Sb;;;;;;;;2MASX J14040746-0946079,MCG -02-36-007,PGC 050131;;; -IC4362;G;14:05:22.22;-41:49:08.3;Cen;1.81;0.69;147;17.49;;11.42;10.81;10.47;22.67;SBc;;;;;;;;2MASX J14052149-4148552,IRAS 14022-4134,MCG -07-29-007,PGC 050246;;This is a part of the galaxy IC 4362.; -IC4363;G;14:04:12.30;-09:38:29.9;Vir;0.45;0.21;25;15.29;;12.77;11.96;11.72;;Sc;;;;;;;;2MASX J14041231-0938297,PGC 170328;;; -IC4364;G;14:04:19.72;-09:59:35.8;Vir;0.91;0.66;106;14.76;;12.86;12.17;11.88;23.21;Sbc;;;;;;;;2MASX J14041970-0959357,MCG -02-36-009,PGC 050149;;;B-Mag taken from LEDA. -IC4365;Dup;14:03:47.34;+09:31:25.3;Boo;;;;;;;;;;;;;;;5437;;;;;; -IC4366;G;14:05:11.48;-33:45:36.4;Cen;1.63;1.21;149;13.60;;11.34;10.54;10.28;22.86;Sc;;;;;;;;2MASX J14051147-3345363,ESO 384-045,ESO-LV 384-0450,IRAS 14022-3331,MCG -05-33-042,PGC 050230;;; -IC4367;G;14:05:36.58;-39:12:12.1;Cen;1.64;1.43;71;13.00;;10.04;9.36;9.09;22.74;SABc;;;;;;;;2MASX J14053656-3912121,ESO 325-051,ESO-LV 325-0510,IRAS 14025-3857,MCG -06-31-021,PGC 050266;;; -IC4368;G;14:04:46.44;-09:57:44.1;Vir;0.55;0.38;40;15.15;;11.55;10.90;10.58;;S0;;;;;;;;2MASX J14044646-0957440,LEDA 170329;;; -IC4369;G;14:04:05.87;+33:19:14.6;CVn;0.44;0.38;29;16.32;;13.49;12.85;12.39;23.04;Sbc;;;;;;;;2MASX J14040585+3319140,MCG +06-31-058,PGC 050134,SDSS J140405.87+331914.5,UGC 08990 NOTES03;;; -IC4370;G;14:04:09.86;+33:20:45.6;CVn;0.44;0.33;96;15.88;;;;;22.60;Sc;;;;;;;;2MASX J14040984+3320460,MCG +06-31-060,PGC 050138,SDSS J140409.85+332045.5,UGC 08990 NOTES01;;;B-Mag taken from LEDA. -IC4371;G;14:04:10.87;+33:18:28.1;CVn;0.81;0.54;50;15.26;;11.91;11.27;10.94;23.23;SBa;;;;;;;;2MASX J14041088+3318280,MCG +06-31-061,PGC 050140,SDSS J140410.86+331828.0,SDSS J140410.87+331828.0,UGC 08990 NOTES06;;; -IC4372;G;14:05:46.09;-10:54:00.3;Vir;0.48;0.15;75;16.18;;13.31;12.46;12.02;;S0-a;;;;;;;;2MASX J14054608-1054003,PGC 184370;;; -IC4373;G;14:05:43.17;+25:13:52.9;Boo;0.82;0.78;23;15.30;;12.07;11.48;11.04;23.63;E;;;;;;;;2MASX J14054320+2513530,PGC 050274,SDSS J140543.16+251352.9;;; -IC4374;G;14:07:29.76;-27:01:04.3;Hya;1.80;1.39;106;13.61;;10.62;9.88;9.57;23.70;E-S0;;;;;;;;2MASX J14072978-2701043,ESO 510-069,ESO-LV 510-0690,MCG -04-33-046,PGC 050385;;; -IC4375;Dup;14:08:03.11;-33:18:53.7;Cen;;;;;;;;;;;;;;;5488;;;;;; -IC4376;Other;14:10:50.47;-30:47:33.9;Cen;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC4377;G;14:16:58.81;-75:38:49.9;Aps;1.98;0.69;95;13.60;;10.67;9.95;9.72;24.08;S0-a;;;;;;;;2MASX J14165880-7538496,ESO 041-004,PGC 051013;;; -IC4378;G;14:12:09.57;-34:15:55.2;Cen;1.54;0.61;158;14.53;;11.22;10.54;10.18;24.17;S0;;;;;;;;2MASX J14120952-3415550,ESO 384-064,ESO-LV 384-0640,MCG -06-31-027,PGC 050711;;; -IC4379;G;14:12:10.24;-34:16:21.8;Cen;0.92;0.42;93;15.51;;;;;23.40;Sbc;;;;;;;;ESO 384-065,ESO-LV 384-0650,MCG -06-31-028,PGC 050710;;; -IC4380;G;14:10:02.12;+37:32:59.5;Boo;0.73;0.68;10;15.10;;12.85;12.53;11.91;23.22;SBcd;;;;;;;;MCG +06-31-075,PGC 050565;;; -IC4381;Dup;14:10:57.24;+25:29:50.0;Boo;;;;;;;;;;;;;;;5008;;;;;; -IC4382;G;14:11:02.54;+25:31:09.7;Boo;0.64;0.16;9;15.40;;12.63;11.84;11.57;22.30;SBb;;;;;;;;2MASX J14110257+2531102,IRAS 14087+2545,PGC 050635,SDSS J141102.53+253109.6,SDSS J141102.54+253109.7;;; -IC4383;Dup;14:12:12.72;+15:52:08.0;Boo;;;;;;;;;;;;;;;5504B;;;;;; -IC4384;G;14:11:56.02;+27:06:50.1;Boo;1.13;0.80;165;15.00;;11.45;10.71;10.37;23.78;S0-a;;;;;;;;2MASX J14115599+2706503,MCG +05-33-054,PGC 050690,SDSS J141156.01+270650.0,SDSS J141156.02+270650.0,SDSS J141156.02+270650.1,UGC 09082;;; -IC4385;Other;14:14:31.72;-42:19:25.0;Cen;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -IC4386;G;14:15:02.37;-43:57:40.8;Cen;2.57;0.38;146;12.75;;;;;22.87;Sd;;;;;;;;2MASX J14150192-4357293,IRAS 14118-4343,MCG -07-29-011,PGC 050905;;The 2MASX position refers to a knot northwest of the nucleus.;B-Mag taken from LEDA. -IC4387;G;14:15:01.75;-43:59:24.4;Cen;1.26;0.72;67;14.90;;;;;23.63;SABm;;;;;;;;ESO 271-024,ESO-LV 271-0240,MCG -07-29-010,PGC 050904;;; -IC4388;G;14:16:03.48;-31:45:09.5;Cen;1.14;0.97;4;14.35;;12.14;11.57;11.23;23.14;Sbc;;;;;;;;2MASX J14160347-3145094,ESO 446-038,ESO-LV 446-0380,IRAS 14131-3131,MCG -05-34-003,PGC 050964;;Marginal HIPASS detection.; -IC4389;G;14:16:46.20;-40:33:09.0;Cen;0.83;0.60;100;15.30;;;;;23.36;Sc;;;;;;;;ESO 326-016,PGC 051000;;;B-Mag taken from LEDA. -IC4390;G;14:16:59.20;-44:58:38.4;Lup;1.95;0.63;10;13.81;;10.66;9.96;9.70;23.11;SABb;;;;;;;;2MASX J14165917-4458385,ESO 271-028,ESO-LV 271-0280,IRAS 14137-4444,MCG -07-29-012,PGC 051015;;; -IC4391;G;14:16:27.04;-31:41:05.9;Cen;0.98;0.78;55;14.45;;12.29;11.75;11.39;22.99;Sab;;;;;;;;2MASX J14162704-3141058,ESO 446-041,ESO-LV 446-0410,IRAS 14135-3127,MCG -05-34-005,PGC 050988;;Confused HIPASS source; -IC4392;Other;14:15:53.17;-13:03:04.5;Vir;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -IC4393;G;14:17:48.95;-31:20:56.7;Cen;2.30;0.38;75;14.59;;11.51;10.68;10.40;23.72;Sc;;;;;;;;2MASX J14174895-3120571,ESO 446-044,ESO-LV 446-0440,IRAS 14148-3107,MCG -05-34-006,PGC 051061;;Confused HIPASS source; -IC4394;Other;14:16:22.36;+39:41:51.7;Boo;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4395;G;14:17:21.08;+26:51:26.8;Boo;1.16;0.80;25;15.10;;11.55;10.84;10.45;23.76;Sab;;;;;;;;2MASX J14172108+2651264,IRAS 14151+2705,MCG +05-34-007,PGC 051033,SDSS J141721.07+265126.7,SDSS J141721.07+265126.8,SDSS J141721.08+265126.8,UGC 09141;;; -IC4396;G;14:17:30.24;+28:48:00.0;Boo;0.63;0.41;21;15.84;14.99;12.77;12.01;11.79;23.07;Sc;;;;;;;;2MASX J14173020+2847595,MCG +05-34-008,PGC 051050,SDSS J141730.23+284800.0;;; -IC4397;G;14:17:58.72;+26:24:45.2;Boo;1.08;0.74;160;14.20;;11.48;10.90;10.54;22.69;Sbc;;;;;;;;2MASX J14175868+2624454,IRAS 14156+2638,MCG +05-34-012,PGC 051073,SDSS J141758.70+262445.4,UGC 09150;;; -IC4398;G;14:18:03.44;+28:51:59.0;Boo;0.62;0.56;10;15.30;;12.37;11.66;11.37;22.85;SBb;;;;;;;;2MASX J14180344+2851584,MCG +05-34-013,PGC 051082,SDSS J141803.44+285159.0;;; -IC4399;G;14:18:23.96;+26:23:09.2;Boo;0.71;0.35;139;15.50;;12.54;11.89;11.44;23.00;SBb;;;;;;;;2MASX J14182398+2623095,MCG +05-34-014,PGC 051100,SDSS J141823.95+262309.1,SDSS J141823.96+262309.2,UGC 09157;;; -IC4400;Other;14:22:13.45;-60:34:11.3;Cen;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -IC4401;G;14:19:25.07;-04:29:20.9;Vir;1.50;0.60;10;14.44;;11.53;10.85;10.56;23.50;SABa;;;;;;;;2MASX J14192507-0429208,MCG -01-36-015,PGC 051173;;The IC identification is not certain.;B-Mag taken from LEDA. -IC4402;G;14:21:13.09;-46:17:52.4;Lup;5.78;0.96;126;12.79;;9.22;8.47;8.17;23.43;Sb;;;;;;;;2MASX J14211309-4617524,ESO 272-005,ESO-LV 272-0050,IRAS 14179-4604,PGC 051288;;; -IC4403;G;14:18:16.87;+31:39:13.8;Boo;1.23;0.48;137;14.90;;11.56;10.82;10.55;23.51;SBa;;;;;;;;2MASX J14181681+3139143,IRAS 14160+3153,MCG +05-34-016,PGC 051091,SDSS J141816.86+313913.7,SDSS J141816.86+313913.8,UGC 09158;;; -IC4404;*;14:09:51.02;+78:37:40.2;UMi;;;;;;;;;;;;;;;;;;;;; -IC4405;G;14:19:16.59;+26:17:54.9;Boo;1.35;0.87;105;15.70;;11.71;10.99;10.67;24.02;S0-a;;;;;;;;2MASX J14191656+2617550,MCG +05-34-019,PGC 051167,SDSS J141916.58+261754.9,SDSS J141916.59+261754.9,SDSS J141916.59+261755.0;;; -IC4406;PN;14:22:26.48;-44:09:00.7;Lup;0.58;;;10.60;10.20;;;;;;;17.44;;;;;HD 125720;ESO 272-006,IRAS 14192-4355,PK 319+15 1,PN G319.6+15.7;;; -IC4407;G;14:23:36.86;-05:58:59.6;Vir;1.48;0.71;173;14.70;;14.08;13.86;13.78;23.66;SBm;;;;;;;;2MASX J14233689-0558598,MCG -01-37-005,PGC 051404;;; -IC4408;G;14:21:13.09;+29:59:36.6;Boo;0.83;0.39;128;15.00;;11.64;10.91;10.59;22.82;Sab;;;;;;;;2MASX J14211313+2959367,IRAS 14190+3013,MCG +05-34-024,PGC 051283,SDSS J142113.09+295936.6,UGC 09191;;; -IC4409;G;14:21:33.30;+31:35:07.9;Boo;0.79;0.54;38;15.10;;12.70;12.19;11.92;23.08;Sbc;;;;;;;;2MASX J14213325+3135078,IRAS 14193+3148,MCG +05-34-026,PGC 051306,SDSS J142133.30+313507.9;;; -IC4410;G;14:22:13.95;+17:23:50.4;Boo;0.79;0.41;57;15.60;;12.85;11.88;11.65;23.33;SBbc;;;;;;;;2MASX J14221396+1723505,MCG +03-37-009,PGC 051338,SDSS J142213.95+172350.4;;HOLM 636B is a Galactic foreground star.; -IC4411;Other;14:25:01.10;-35:01:14.2;Cen;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4412;Dup;14:23:10.31;+26:15:56.9;Boo;;;;;;;;;;;;;;;5594;;;;;; -IC4413;G;14:22:57.32;+37:31:38.7;Boo;0.51;0.40;129;15.50;;12.38;11.66;11.52;22.85;E-S0;;;;;;;;2MASX J14225735+3731384,MCG +06-32-015,PGC 051375,SDSS J142257.32+373138.7;;;B-Mag taken from LEDA. -IC4414;Dup;14:23:42.59;+28:20:52.3;Boo;;;;;;;;;;;;;;;;1008;;;;; -IC4415;G;14:24:26.72;+16:38:22.6;Boo;0.62;0.30;139;16.10;;12.97;12.33;11.91;23.58;Sa;;;;;;;;2MASX J14242668+1638226,LEDA 084155,SDSS J142426.72+163822.5;;;B-Mag taken from LEDA. -IC4416;G;14:24:17.42;+29:38:08.9;Boo;0.92;0.67;130;15.70;;11.85;11.15;10.91;24.15;E;;;;;;;;2MASX J14241745+2938093,MCG +05-34-031,PGC 051452,SDSS J142417.41+293808.8;;; -IC4417;G;14:24:53.69;+17:02:16.5;Boo;1.11;0.78;144;15.50;;11.73;11.11;10.68;24.52;E;;;;;;;;2MASX J14245369+1702165,MCG +03-37-014,PGC 051480,SDSS J142453.68+170216.5;;; -IC4418;G;14:25:27.24;+25:31:34.6;Boo;0.94;0.80;96;15.10;;11.74;10.75;10.43;23.57;E;;;;;;;;2MASX J14252722+2531344,PGC 051510,SDSS J142527.24+253134.5;;; -IC4419;G;14:25:54.67;+16:37:57.1;Boo;0.79;0.52;148;16.06;;13.10;12.29;12.13;24.02;Sab;;;;;;;;2MASX J14255463+1637570,LEDA 084167,SDSS J142554.66+163757.0,SDSS J142554.66+163757.1,SDSS J142554.67+163757.1;;;B-Mag taken from LEDA. -IC4420;G;14:25:39.41;+25:22:42.1;Boo;0.67;0.37;18;15.50;;13.84;13.04;12.95;23.06;SBc;;;;;;;;2MASX J14253941+2522414,MCG +04-34-027,PGC 051520,SDSS J142539.40+252242.0,SDSS J142539.41+252242.1;;; -IC4421;G;14:28:31.31;-37:35:01.5;Cen;1.43;1.08;164;13.65;;10.30;9.59;9.34;23.02;E;;;;;;;;2MASX J14283128-3735017,ESO 385-027,ESO-LV 385-0270,MCG -06-32-006,PGC 051704;;; -IC4422;G;14:25:59.13;+30:28:25.4;Boo;0.74;0.65;142;15.30;;12.08;11.42;11.05;23.46;E;;;;;;;;2MASX J14255913+3028256,MCG +05-34-039,PGC 051530,SDSS J142559.12+302825.4;;HOLM 644B is a star.; -IC4423;G;14:26:17.74;+26:14:46.1;Boo;1.02;0.57;71;15.50;;12.30;11.57;11.30;23.54;Sbc;;;;;;;;2MASX J14261771+2614459,MCG +04-34-028,PGC 051549,SDSS J142617.73+261446.0,UGC 09247;;; -IC4424;Dup;14:27:32.37;+04:49:17.8;Vir;;;;;;;;;;;;;;;5619B;;;;;; -IC4425;G;14:26:44.18;+27:11:22.3;Boo;0.64;0.58;3;15.30;;12.39;11.74;11.40;22.93;SBb;;;;;;;;2MASX J14264421+2711217,PGC 051575,SDSS J142644.17+271122.3,SDSS J142644.18+271122.3;;; -IC4426;G;14:27:17.09;+16:49:51.5;Boo;0.69;0.65;5;15.60;;11.97;11.30;10.98;23.63;E;;;;;;;;2MASX J14271705+1649516,MCG +03-37-016,PGC 051607,SDSS J142717.09+164951.4;;; -IC4427;G;14:26:59.57;+26:51:50.3;Boo;0.86;0.35;116;15.40;;12.46;11.83;11.49;23.29;Sab;;;;;;;;2MASX J14265954+2651502,MCG +05-34-041,PGC 051591,SDSS J142659.56+265150.2;;; -IC4428;G;14:27:25.55;+16:11:27.0;Boo;0.76;0.35;49;15.71;;12.83;12.16;11.84;23.63;Sa;;;;;;;;2MASX J14272555+1611275,LEDA 084193,SDSS J142725.55+161126.9;;;B-Mag taken from LEDA. -IC4429;G;14:27:37.37;+16:53:59.5;Boo;1.02;0.61;96;15.40;;11.89;11.03;10.84;24.32;E;;;;;;;;2MASX J14273738+1653596,MCG +03-37-017,PGC 051637,SDSS J142737.36+165359.4,SDSS J142737.37+165359.5;;; -IC4430;G;14:29:19.40;-33:27:18.4;Cen;2.47;1.26;24;12.96;;9.57;8.85;8.59;23.65;S0;;;;;;;;2MASX J14291940-3327184,ESO 385-030,ESO-LV 385-0300,MCG -05-34-014,PGC 051763;;; -IC4431;Dup;14:27:09.50;+30:56:53.6;Boo;;;;;;;;;;;;;;;;1012;;;;; -IC4432;G;14:28:49.76;-39:33:07.9;Cen;0.85;0.22;47;16.37;;12.33;11.66;11.24;23.59;Sbc;;;;;;;;2MASX J14284975-3933077,ESO 326-025,PGC 051727;;; -IC4433;G;14:27:53.35;+16:11:44.0;Boo;0.48;0.34;44;15.30;;13.42;13.04;12.39;23.22;Sbc;;;;;;;;PGC 084202,SDSS J142753.34+161144.0;;; -IC4434;G;14:27:54.74;+16:12:25.8;Boo;0.64;0.46;6;16.25;;12.31;11.60;11.23;23.43;E;;;;;;;;PGC 051651,SDSS J142754.74+161225.9;;; -IC4435;G;14:27:24.28;+37:28:17.2;Boo;0.94;0.94;50;15.30;;11.61;10.92;10.60;23.81;E;;;;;;;;2MASX J14272425+3728170,MCG +06-32-037,PGC 051615,SDSS J142724.23+372817.0,SDSS J142724.23+372817.1,SDSS J142724.24+372817.1;;; -IC4436;G;14:27:58.18;+26:30:16.2;Boo;1.20;1.03;87;15.20;;11.58;10.92;10.56;24.00;E;;;;;;;;2MASX J14275816+2630166,MCG +05-34-045,PGC 051654,SDSS J142758.17+263016.1,SDSS J142758.18+263016.2;;; -IC4437;**;14:27:31.66;+41:30:11.6;Boo;;;;;;;;;;;;;;;;;;SDSS J142731.66+413011.5;;The IC identification is not certain.; -IC4438;G;14:28:34.47;+17:20:04.4;Boo;0.48;0.40;77;15.70;;13.46;12.62;12.65;23.07;Sbc;;;;;;;;2MASX J14283446+1720042,MCG +03-37-020,PGC 051709,SDSS J142834.46+172004.4,SDSS J142834.47+172004.4;;; -IC4439;G;14:28:40.04;+17:01:29.1;Boo;0.67;0.36;76;15.70;;13.75;12.67;12.46;23.30;Scd;;;;;;;;2MASX J14284004+1701294,PGC 051720,SDSS J142840.04+170129.1;;; -IC4440;G;14:28:59.24;+17:19:14.1;Boo;0.77;0.46;72;15.60;;12.30;11.54;11.13;23.74;S0-a;;;;;;;;2MASX J14285923+1719144,MCG +03-37-022,PGC 051734,SDSS J142859.23+171914.0;;; -IC4441;G;14:31:38.62;-43:25:06.4;Lup;1.95;1.53;83;12.25;11.55;9.54;8.86;8.60;22.10;SABb;;;;;;4444;;2MASX J14313860-4325060,ESO 272-014,ESO-LV 272-0140,IRAS 14284-4311,MCG -07-30-002,PGC 051905;;; -IC4442;G;14:28:45.27;+28:57:51.3;Boo;0.85;0.50;15;15.20;;11.96;11.31;11.01;23.26;SBa;;;;;;;;2MASX J14284530+2857507,MCG +05-34-050,PGC 051725,SDSS J142845.26+285751.2,SDSS J142845.27+285751.3,UGC 09287;;HOLM 652B is a star.; -IC4443;G;14:29:17.49;+16:10:53.6;Boo;0.62;0.28;12;16.25;;13.59;13.08;12.63;23.49;Sbc;;;;;;;;2MASX J14291747+1610536,LEDA 084220,SDSS J142917.43+161053.1;;;B-Mag taken from LEDA. -IC4444;Dup;14:31:38.62;-43:25:06.4;Lup;;;;;;;;;;;;;;;;4441;;;;; -IC4445;G;14:31:54.61;-46:02:07.1;Lup;1.19;0.45;154;14.99;;11.64;10.88;10.61;23.28;Scd;;;;;;;;2MASX J14315459-4602070,ESO 272-015,ESO-LV 272-0150,IRAS 14285-4548,PGC 051917,TYC 8278-476-1;;; -IC4446;G;14:29:01.32;+37:27:47.3;Boo;0.77;0.40;109;15.77;;13.78;13.13;13.05;23.46;Sc;;;;;;;;2MASX J14290128+3727473,MCG +06-32-044,PGC 051742,SDSS J142901.31+372747.2,SDSS J142901.31+372747.3,SDSS J142901.32+372747.3;;;B-Mag taken from LEDA. -IC4447;G;14:29:17.98;+30:49:56.0;Boo;0.82;0.67;174;14.70;;11.76;11.08;10.77;23.03;S0-a;;;;;;;;2MASX J14291797+3049559,MCG +05-34-056,PGC 051754,UGC 09306;;; -IC4448;G;14:40:27.96;-78:48:33.2;Aps;1.10;0.86;176;13.90;13.99;11.71;10.88;10.61;22.82;SBc;;;;;;;;2MASX J14402798-7848329,ESO 022-002,ESO-LV 22-0020,IRAS 14343-7835,PGC 052426;;; -IC4449;G;14:31:21.59;+15:14:27.1;Boo;0.72;0.41;115;15.72;;;;;23.82;IB;;;;;;;;2MASX J14312157+1514272,PGC 1479230,SDSS J143121.58+151427.0,SDSS J143121.58+151427.1;;;B-Mag taken from LEDA. -IC4450;G;14:32:12.34;+28:33:24.6;Boo;0.98;0.45;48;15.40;;12.23;11.50;11.13;23.32;Sbc;;;;;;;;2MASX J14321232+2833241,IRAS 14300+2846,MCG +05-34-065,PGC 051939,SDSS J143212.34+283324.5,SDSS J143212.34+283324.6,UGC 09349;;; -IC4451;G;14:34:37.14;-36:17:09.0;Cen;1.79;1.29;95;13.36;;9.90;9.25;8.99;23.49;E;;;;;;;;2MASX J14343713-3617092,ESO 385-046,ESO-LV 385-0460,MCG -06-32-010,PGC 052094;;; -IC4452;G;14:32:27.43;+27:25:38.7;Boo;0.50;0.47;78;14.90;;12.53;12.03;11.71;22.10;Sa;;;;;;;;2MASX J14322741+2725382,IRAS 14302+2738,PGC 051951,SDSS J143227.42+272538.7,SDSS J143227.43+272538.7;;; -IC4453;G;14:34:28.65;-27:31:06.8;Hya;2.09;0.97;160;13.05;;9.78;9.08;8.81;23.44;S0;;;;;;;;2MASX J14342863-2731067,ESO 512-004,ESO-LV 512-0040,MCG -04-34-020,PGC 052084;;; -IC4454;G;14:33:16.69;+17:42:42.5;Boo;0.45;0.32;0;16.70;;13.59;13.06;12.71;23.50;Sab;;;;;;;;2MASX J14331672+1742426,LEDA 1539655,SDSS J143316.68+174242.4;;;B-Mag taken from LEDA. -IC4455;Dup;14:33:43.62;-14:37:10.9;Lib;;;;;;;;;;;;;;;5664;;;;;; -IC4456;G;14:34:09.17;+16:11:02.5;Boo;0.58;0.21;129;16.08;;;;;23.47;Sbc;;;;;;;;2MASX J14340917+1611027,PGC 1502760,SDSS J143409.17+161102.5;;;B-Mag taken from LEDA. -IC4457;G;14:34:28.88;+18:13:28.9;Boo;0.46;0.39;85;16.00;;;;;23.03;Sbc;;;;;;;;2MASX J14342883+1813289,PGC 1553586,SDSS J143428.87+181328.8;;;B-Mag taken from LEDA. -IC4458;G;14:38:05.87;-39:30:21.5;Cen;0.59;0.26;70;17.03;;14.03;13.42;13.21;23.98;Sbc;;;;;;;;2MASX J14380587-3930217,ESO 327-003,PGC 052300;;;B-Mag taken from LEDA. -IC4459;G;14:34:32.20;+30:58:28.8;Boo;0.89;0.30;13;15.30;;12.60;11.86;11.59;23.23;Sb;;;;;;;;2MASX J14343217+3058290,MCG +05-34-074,PGC 052087,SDSS J143432.20+305828.7,SDSS J143432.20+305828.8;;HOLM 662B is a star.; -IC4460;G;14:34:36.53;+30:16:45.8;Boo;0.55;0.41;161;15.00;;13.40;12.95;12.49;22.96;Sa;;;;;;;;2MASX J14343656+3016460,MCG +05-34-075,PGC 052089,SDSS J143436.53+301645.7,SDSS J143436.53+301645.8;;; -IC4461;G;14:35:00.38;+26:31:54.9;Boo;0.41;0.28;117;15.30;;14.19;13.54;13.05;23.14;Sc;;;;;;;;2MASX J14350038+2631548,MCG +05-34-076,PGC 052120,SDSS J143500.38+263154.8,UGC 09384 NOTES01;;; -IC4462;G;14:35:01.90;+26:32:38.1;Boo;0.74;0.54;11;15.30;;12.80;12.21;12.10;23.25;Sb;;;;;;;;2MASX J14350187+2632378,MCG +05-34-077,PGC 052119,SDSS J143501.90+263238.0,UGC 09384 NED01;;Component 'a)' in UGC notes.; -IC4463;G;14:35:49.00;+16:01:09.4;Boo;0.81;0.61;30;15.40;;13.11;12.38;12.24;23.49;Sbc;;;;;;;;2MASX J14354899+1601096,PGC 052175,SDSS J143548.99+160109.3,SDSS J143549.00+160109.3;;; -IC4464;G;14:37:49.00;-36:52:40.8;Cen;1.68;0.67;62;13.64;;10.03;9.35;9.11;23.47;S0;;;;;;;;2MASX J14374900-3652409,ESO 385-050,ESO-LV 385-0500,MCG -06-32-011,PGC 052286;;; -IC4465;G;14:35:51.16;+15:34:22.5;Boo;0.56;0.23;80;16.53;;13.49;12.63;12.27;24.02;S0-a;;;;;;;;2MASX J14355115+1534226,IRAS 14335+1547,PGC 1488159,SDSS J143551.17+153422.6;;;B-Mag taken from LEDA. -IC4466;G;14:36:48.11;+18:20:37.6;Boo;1.00;1.00;14;15.50;;12.36;11.70;11.26;24.34;S0-a;;;;;;;;2MASX J14364808+1820372,PGC 052228,SDSS J143648.10+182037.5,SDSS J143648.10+182037.6;;Multiple SDSS entries describe this object.; -IC4467;G;14:36:53.67;+18:22:14.3;Boo;0.54;0.48;32;15.99;;12.57;11.95;11.53;23.31;Sa;;;;;;;;2MASX J14365363+1822142,LEDA 1557696,SDSS J143653.66+182214.2;;;B-Mag taken from LEDA. -IC4468;G;14:38:26.74;-22:22:03.4;Lib;2.30;0.54;158;13.78;;10.81;10.09;9.86;23.18;SBc;;;;;;;;2MASX J14382673-2222034,ESO 580-006,ESO-LV 580-0060,IRAS 14355-2209,MCG -04-35-001,PGC 052324;;; -IC4469;G;14:37:20.49;+18:14:57.6;Boo;1.67;0.22;109;15.60;;12.43;11.66;11.50;23.70;Sc;;;;;;;;2MASX J14372048+1814572,MCG +03-37-026,PGC 052258,SDSS J143720.46+181457.0,UGC 09414;;; -IC4470;G;14:28:22.89;+78:53:08.2;UMi;0.89;0.25;94;15.00;;11.83;11.12;10.87;22.77;Sb;;;;;;;;2MASX J14282277+7853078,MCG +13-10-019,PGC 051696;;; -IC4471;Dup;14:36:32.06;+41:41:09.2;Boo;;;;;;;;;;;;;;;5697;;;;;; -IC4472;G;14:40:10.84;-44:18:52.5;Lup;2.69;0.60;0;13.95;;10.36;9.53;9.16;23.65;Sc;;;;;;;;2MASX J14401087-4418526,ESO 272-023,ESO-LV 272-0230,IRAS 14369-4406,MCG -07-30-005,PGC 052410;;; -IC4473;GGroup;14:37:54.14;+15:51:42.0;Boo;1.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4473 NED01;G;14:37:54.39;+15:51:38.5;Boo;0.74;0.59;1;15.97;;;;;23.90;SBb;;;;;;;;2MASS J14375438+1551384,SDSS J143754.38+155138.4,SDSS J143754.38+155138.5;;;B-Mag taken from LEDA. NED coordinates appear to be wrong. -IC4473 NED02;G;14:37:54.05;+15:51:49.2;Boo;0.93;0.59;178;15.20;;12.26;11.63;11.24;23.61;SBb;;;;;;;;2MASX J14375402+1551490,MCG +03-37-027,PGC 052287,SDSS J143754.04+155149.1;;; -IC4473 NED03;G;14:37:54.22;+15:52:12.6;Boo;;;;;;;;;;;;;;;;;;;;;No data available in LEDA -IC4473 NED04;G;14:37:53.60;+15:51:29.4;Boo;;;;;;;;;;;;;;;;;;SDSS J143753.59+155129.4;;;No data available in LEDA -IC4474;G;14:38:22.30;+23:25:43.5;Boo;0.65;0.52;134;15.87;;;;;23.55;SBab;;;;;;;;2MASX J14382229+2325435,PGC 1687216,SDSS J143822.29+232543.5,SDSS J143822.30+232543.5;;;B-Mag taken from LEDA. -IC4475;G;14:38:23.26;+23:20:00.8;Boo;1.05;0.88;26;15.00;;11.41;10.74;10.37;23.77;E;;;;;;;;2MASX J14382325+2320005,MCG +04-35-001,PGC 052325,SDSS J143823.26+232000.8;;; -IC4476;G;14:39:51.85;-16:14:41.1;Lib;0.76;0.55;164;15.17;;11.75;11.07;10.81;23.46;S0;;;;;;;;2MASX J14395187-1614405,LEDA 170358;;; -IC4477;G;14:38:35.24;+28:27:33.8;Boo;0.60;0.34;16;15.50;;12.84;12.05;11.68;22.84;SBb;;;;;;;;2MASX J14383522+2827334,PGC 052327,SDSS J143835.24+282733.7;;; -IC4478;G;14:39:12.69;+15:52:38.6;Boo;0.58;0.49;61;15.30;;12.31;11.70;11.54;23.04;E;;;;;;;;2MASX J14391270+1552385,PGC 052363,SDSS J143912.68+155238.5,SDSS J143912.68+155238.6;;; -IC4479;G;14:38:45.90;+28:30:19.6;Boo;1.16;1.07;17;14.80;;11.78;11.06;10.91;23.88;Sc;;;;;;;;2MASX J14384590+2830195,IRAS 14365+2842,MCG +05-35-001,PGC 052338,SDSS J143845.90+283019.5,SDSS J143845.90+283019.6,UGC 09433;;; -IC4480;G;14:39:45.63;+18:29:32.5;Boo;0.64;0.58;65;15.40;;13.06;12.31;12.34;23.22;SBbc;;;;;;;;2MASX J14394564+1829329,MCG +03-37-034,PGC 052394,SDSS J143945.62+182932.4,SDSS J143945.63+182932.4;;; -IC4481;G;14:40:10.11;+16:08:29.2;Boo;0.50;0.35;68;16.59;;;;;23.62;SBbc;;;;;;;;2MASX J14401008+1608288,PGC 1501729,SDSS J144010.11+160829.1,SDSS J144010.11+160829.2;;;B-Mag taken from LEDA. -IC4482;G;14:40:12.46;+18:56:35.8;Boo;0.62;0.56;25;15.50;;13.59;12.98;12.69;23.32;Sbc;;;;;;;;2MASX J14401238+1856349,PGC 052408,SDSS J144012.45+185635.8,SDSS J144012.46+185635.8;;; -IC4483;G;14:40:19.51;+16:41:06.8;Boo;1.34;0.46;25;15.00;;12.10;11.42;11.09;23.61;Sb;;;;;;;;2MASX J14401950+1641068,MCG +03-37-035,PGC 052417,SDSS J144019.51+164106.4,UGC 09455;;; -IC4484;G;14:47:43.88;-73:18:21.4;Aps;2.96;0.30;132;14.23;;11.19;10.29;;23.47;Sc;;;;;;;;2MASX J14474389-7318214,ESO 041-009,ESO-LV 41-0900,IRAS 14427-7305,PGC 052837;;Stars superposed.; -IC4485;G;14:40:31.46;+28:40:07.9;Boo;0.64;0.37;43;15.70;;12.82;12.18;11.79;23.25;SBb;;;;;;;;2MASX J14403143+2840081,PGC 052419,SDSS J144031.45+284007.8;;; -IC4486;G;14:41:40.79;+18:33:26.0;Boo;0.52;0.32;142;15.20;;12.51;11.65;11.51;23.09;E;;;;;;;;2MASX J14414075+1833256,PGC 052481,SDSS J144140.78+183325.9;;; -IC4487;G;14:41:52.19;+18:34:37.2;Boo;0.68;0.52;22;15.65;;;;;23.38;Sbc;;;;;;;;2MASX J14415218+1834372,MCG +03-37-037,PGC 052496,SDSS J144152.19+183437.2;;;B-Mag taken from LEDA. -IC4488;G;14:42:52.58;+18:37:13.0;Boo;0.61;0.39;9;15.84;;;;;23.44;Sbc;;;;;;;;2MASX J14425258+1837129,PGC 1564980,SDSS J144252.57+183712.9,SDSS J144252.58+183712.9;;;B-Mag taken from LEDA. -IC4489;G;14:43:15.95;+18:31:43.0;Boo;0.42;0.36;122;16.78;;;;;23.39;Sc;;;;;;;;2MASX J14431593+1831429,PGC 1562198,SDSS J144315.94+183142.9;;;B-Mag taken from LEDA. -IC4490;**;14:45:21.27;-36:10:24.1;Cen;;;;;;;;;;;;;;;;;;;;; -IC4491;Dup;14:47:25.69;-13:42:58.1;Lib;;;;;;;;;;;;;;;;1055;;;;; -IC4492;G;14:42:33.87;+37:27:08.4;Boo;0.63;0.50;61;15.60;;12.20;11.48;11.42;23.18;E;;;;;;;;2MASX J14423382+3727081,MCG +06-32-088,PGC 052536,SDSS J144233.86+372708.3,SDSS J144233.86+372708.4,SDSS J144233.87+372708.4;;; -IC4493;Dup;14:44:20.80;+12:07:47.0;Boo;;;;;;;;;;;;;;;5747;;;;;; -IC4494;G;14:44:25.54;+15:33:05.0;Boo;0.93;0.39;136;15.20;;12.88;12.18;12.04;23.83;S0-a;;;;;;;;2MASX J14442552+1533055,MCG +03-38-003,PGC 052644,SDSS J144425.53+153304.9;;The IC identification is not certain.; -IC4495;G;14:44:14.57;+23:33:30.2;Boo;0.78;0.44;10;15.70;;12.90;12.17;11.83;23.49;SBb;;;;;;;;2MASX J14441459+2333301,PGC 052634,SDSS J144414.57+233330.1,SDSS J144414.57+233330.2;;; -IC4496;G;14:43:54.58;+33:24:23.6;Boo;0.85;0.69;45;15.00;;11.71;11.02;10.77;23.29;S0;;;;;;;;2MASX J14435459+3324236,MCG +06-32-090,PGC 052610,SDSS J144354.57+332423.5,SDSS J144354.58+332423.6;;; -IC4497;G;14:44:20.86;+28:33:03.7;Boo;0.84;0.81;134;15.10;;12.69;12.10;12.00;23.73;E;;;;;;;;2MASX J14442082+2833028,MCG +05-35-009,PGC 052636,SDSS J144420.86+283303.6,SDSS J144420.86+283303.7;;; -IC4498;G;14:45:00.79;+26:18:04.1;Boo;0.75;0.70;17;15.10;;11.98;11.23;;23.10;E-S0;;;;;;;;2MASX J14450081+2618042,MCG +05-35-010,PGC 052667,SDSS J144500.79+261804.0;;; -IC4499;GCl;15:00:19.25;-82:12:48.6;Aps;5.10;;;;8.56;;;;;;;;;;;;;MWSC 2263;;; -IC4500;G;14:44:35.66;+37:28:56.9;Boo;0.56;0.44;74;15.60;;;;;22.91;Sbc;;;;;;;;MCG +06-32-091,PGC 052656,SDSS J144435.65+372856.8,SDSS J144435.66+372856.9;;; -IC4501;G;14:47:25.47;-22:24:21.7;Lib;1.03;0.75;59;14.27;;12.30;11.62;11.10;22.91;Sab;;;;;;;;2MASX J14472546-2224217,ESO 580-025,ESO-LV 580-0250,IRAS 14445-2211,MCG -04-35-009,PGC 052810;;; -IC4502;G;14:45:15.83;+37:18:01.3;Boo;0.64;0.33;110;11.30;;12.44;11.74;11.49;23.38;Sb;;;;;;;;2MASX J14451579+3718016,PGC 2097463,SDSS J144515.83+371801.3;;; -IC4503;G;14:46:39.51;+16:08:47.2;Boo;1.20;1.05;6;14.90;;11.85;11.12;10.87;23.95;E;;;;;;;;2MASX J14463952+1608470,MCG +03-38-010,PGC 052763,SDSS J144639.50+160847.1,SDSS J144639.50+160847.2;;; -IC4504;G;14:46:36.98;+31:41:57.1;Boo;0.51;0.29;98;15.40;;12.27;11.65;11.43;;S0;;;;;;;;2MASX J14463697+3141571,PGC 052750,SDSS J144636.97+314157.1,SDSS J144636.98+314157.1;;; -IC4505;G;14:46:33.37;+33:24:31.0;Boo;1.13;0.78;176;15.10;;11.38;10.81;10.49;23.79;E-S0;;;;;;;;2MASX J14463337+3324311,MCG +06-32-099,PGC 052754,SDSS J144633.36+332430.9,SDSS J144633.36+332431.0,SDSS J144633.37+332430.9,SDSS J144633.37+332431.0,UGC 09520;;; -IC4506;G;14:46:39.94;+33:24:04.4;Boo;0.49;0.44;2;15.50;;12.88;12.10;11.88;22.74;S0;;;;;;;;2MASX J14463992+3324042,PGC 052764,SDSS J144639.93+332404.3,SDSS J144639.93+332404.4,SDSS J144639.94+332404.4;;; -IC4507;G;14:47:42.16;+18:27:20.6;Boo;0.68;0.41;149;15.70;;13.09;12.46;12.06;23.34;Sb;;;;;;;;2MASX J14474216+1827204,MCG +03-38-016,PGC 052834,SDSS J144742.16+182720.6;;; -IC4508;G;14:47:51.41;+31:46:05.8;Boo;0.76;0.60;31;15.56;;12.51;11.78;11.69;23.62;S0-a;;;;;;;;2MASX J14475075+3145531,2MASX J14475137+3146051,PGC 052843,SDSS J144751.40+314605.8;;;B-Mag taken from LEDA. -IC4509;G;14:48:27.06;+31:47:29.7;Boo;0.83;0.20;46;14.70;;12.82;12.25;12.18;22.26;Sb;;;;;;;;2MASX J14482711+3147302,MCG +05-35-016,PGC 052874,SDSS J144827.05+314729.6,SDSS J144827.06+314729.7,UGC 09536;;; -IC4510;Other;14:50:40.71;-20:43:51.2;Lib;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4511;Other;14:52:05.28;-40:29:41.7;Cen;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4512;G;14:49:54.30;+27:42:02.9;Boo;0.55;0.50;162;16.12;;14.40;13.77;13.66;23.70;Sc;;;;;;;;2MASX J14495426+2742036,PGC 1815627,SDSS J144954.29+274202.9;;;B-Mag taken from LEDA. -IC4513;Other;14:52:16.83;-20:43:40.5;Lib;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4514;G;14:50:55.44;+27:34:42.7;Boo;0.83;0.68;124;17.63;16.98;12.31;11.64;11.55;23.34;Sab;;;;;;;;2MASX J14505541+2734432,MCG +05-35-019,PGC 053010,SDSS J145055.43+273442.6,UGC 09557;;; -IC4515;G;14:51:06.67;+37:29:41.3;Boo;0.98;0.70;61;15.60;;12.41;11.64;11.35;23.99;Sa;;;;;;;;2MASX J14510670+3729414,MCG +06-33-003,PGC 053026,SDSS J145106.66+372941.2,SDSS J145106.67+372941.2,SDSS J145106.67+372941.3;;; -IC4516;G;14:54:23.45;+16:21:19.0;Boo;1.36;1.09;158;14.53;14.22;11.03;10.35;10.06;24.05;E;;;;;;;;2MASX J14542347+1621187,MCG +03-38-049,PGC 053274,SDSS J145423.44+162119.0,UGC 09587;;;B-Mag taken from LEDA. -IC4517;G;14:54:35.09;+23:38:35.8;Boo;1.12;0.30;156;15.50;;11.78;11.08;10.66;23.43;SBb;;;;;;;;2MASX J14543506+2338359,PGC 053291,SDSS J145435.08+233835.8,SDSS J145435.09+233835.8;;; -IC4518;GPair;14:57:42.90;-43:07:54.0;Lup;2.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4518A;G;14:57:41.18;-43:07:55.6;Lup;0.92;0.32;135;16.64;;10.75;9.92;9.58;;Sc;;;;;;4518W;;MCG -07-31-001,PGC 053466;;Western component of an interacting double system.; -IC4518B;G;14:57:44.46;-43:07:52.9;Lup;1.26;0.24;106;16.46;;10.33;9.57;9.48;24.40;Sc;;;;;;4518E;;2MASX J14574441-4307526,MCG -07-31-002,PGC 053467;;Eastern component of an interacting double system.; -IC4519;G;14:54:44.54;+37:24:45.8;Boo;0.89;0.48;124;15.30;;11.88;11.28;11.05;24.07;S0-a;;;;;;;;2MASX J14544451+3724455,MCG +06-33-007,PGC 053311,SDSS J145444.53+372445.7,SDSS J145444.54+372445.8;;; -IC4520;G;14:55:07.01;+33:43:28.0;Boo;0.51;0.41;120;15.00;;12.85;12.05;11.72;22.54;Sb;;;;;;;;2MASX J14550703+3343279,IRAS 14530+3355,MCG +06-33-008,PGC 053328,SDSS J145507.00+334328.0;;; -IC4521;G;14:59:27.45;+25:35:02.7;Boo;0.66;0.44;114;15.30;;12.42;11.71;11.45;22.92;Sc;;;;;;;;2MASX J14592740+2535026,IRAS 14572+2546,MCG +04-35-022,PGC 053558,SDSS J145927.44+253502.7;;; -IC4522;G;15:11:28.92;-75:51:35.9;Aps;3.02;0.86;112;13.10;;10.61;10.02;9.64;;Sb;;;;;;;;2MASX J15112889-7551360,ESO 042-002,IRAS 15056-7540,PGC 054216;;; -IC4523;G;15:05:10.54;-43:30:34.3;Lup;1.65;1.49;119;13.20;;10.72;10.02;9.67;23.41;SABc;;;;;;;;2MASX J15051054-4330340,ESO 273-015,IRAS 15018-4318,MCG -07-31-005,PGC 053845;;; -IC4524;G;15:02:06.36;+25:36:05.4;Boo;0.64;0.48;19;15.60;;;;;22.98;SBbc;;;;;;;;2MASX J15020635+2536048,PGC 1742463,SDSS J150206.35+253605.4,SDSS J150206.36+253605.4;;; -IC4525;G;15:02:24.86;+25:38:18.6;Boo;0.58;0.52;31;15.70;;13.49;12.74;12.09;23.10;SBd;;;;;;;;2MASX J15022483+2538188,MCG +04-35-025,PGC 053705,SDSS J150224.85+253818.5;;; -IC4526;G;15:02:38.20;+23:21:01.6;Boo;0.50;0.37;19;17.02;;12.95;12.33;11.81;23.69;Sm;;;;;;;;2MASX J15023819+2321019,MCG +04-35-026,PGC 053707,SDSS J150238.19+232101.5,SDSS J150238.20+232101.5,SDSS J150238.20+232101.6,UGC 09673 NOTES01;;; -IC4527;G;15:05:41.02;-42:26:58.3;Lup;1.43;0.51;49;15.00;;10.84;10.09;9.78;22.66;Sbc;;;;;;;;2MASX J15054101-4226581,ESO 328-015,IRAS 15023-4215,MCG -07-31-006,PGC 053879;;; -IC4528;G;15:01:33.37;+49:06:44.9;Boo;0.81;0.60;155;15.30;;12.65;12.10;11.73;23.15;Sb;;;;;;;;MCG +08-27-055,PGC 053658,SDSS J150133.35+490644.7,SDSS J150133.35+490644.8,SDSS J150133.36+490644.8,SDSS J150133.36+490644.9,SDSS J150133.37+490644.9;;; -IC4529;G;15:06:25.98;-43:13:57.5;Lup;0.77;0.46;6;14.80;;;;;22.83;Sbc;;;;;;;;2MASX J15062599-4313575,IRAS 15031-4302,MCG -07-31-007,PGC 053926;;;B-Mag taken from LEDA. -IC4530;G;15:03:45.31;+26:06:03.1;Boo;0.91;0.16;19;15.30;;11.82;11.13;10.87;22.71;SBb;;;;;;;;2MASX J15034529+2606026,MCG +04-36-001,PGC 053752,SDSS J150345.30+260603.0,UGC 09679;;; -IC4531;G;15:04:26.44;+23:24:53.8;Boo;0.92;0.53;178;15.60;;12.36;11.81;11.50;24.22;E;;;;;;;;2MASX J15042640+2324537,PGC 053792,SDSS J150426.43+232453.8,SDSS J150426.44+232453.8;;; -IC4532;G;15:04:53.81;+23:15:23.8;Boo;0.86;0.58;92;15.60;;12.13;11.37;11.20;23.99;E;;;;;;;;2MASX J15045379+2315237,PGC 053828,SDSS J150453.80+231523.8;;; -IC4533;G;15:04:30.34;+27:47:34.3;Boo;0.98;0.66;154;14.90;;11.97;11.24;10.93;23.66;SABa;;;;;;;;2MASX J15043037+2747340,MCG +05-36-004,PGC 053803,SDSS J150430.33+274734.2,UGC 09687;;; -IC4534;G;15:06:41.77;+23:38:30.9;Boo;1.45;0.79;164;14.70;;11.09;10.39;10.17;23.80;S0;;;;;;;;2MASX J15064176+2338312,MCG +04-36-013,PGC 053943,SDSS J150641.77+233830.9,UGC 09713;;; -IC4535;G;15:08:41.60;+37:34:13.2;Boo;0.54;0.23;162;15.99;;13.04;12.31;12.12;23.07;SBb;;;;;;;;2MASX J15084159+3734129,PGC 2103997,SDSS J150841.59+373413.1,SDSS J150841.60+373413.2;;;B-Mag taken from LEDA. -IC4536;G;15:13:17.23;-18:08:14.2;Lib;1.32;0.89;4;13.71;;;;;22.72;SBcd;;;;;;;;ESO 581-024,ESO-LV 581-0240,IRAS 15104-1756,MCG -03-39-002,PGC 054324,UGCA 401;;The 2MASX position applies to a knot north of the nucleus.; -IC4537;G;15:17:32.44;+02:02:50.6;Se1;0.75;0.43;45;15.60;;12.61;11.99;11.50;23.98;S0-a;;;;;;;;2MASX J15173246+0202503,PGC 054583,SDSS J151732.44+020250.6;;; -IC4538;G;15:21:11.61;-23:39:30.3;Lib;2.48;1.95;55;12.83;;10.44;9.77;9.50;23.39;SABc;;;;;;;;2MASX J15211162-2339302,ESO 514-010,ESO-LV 514-0100,IRAS 15182-2328,MCG -04-36-013,PGC 054776,UGCA 406;;; -IC4539;G;15:18:31.15;+32:23:34.3;CrB;0.55;0.45;153;15.77;;13.01;12.38;12.13;23.16;SABb;;;;;;;;2MASX J15183111+3223345,MCG +06-34-003,PGC 054642,SDSS J151831.15+322334.2,SDSS J151831.15+322334.3;;;B-Mag taken from LEDA. -IC4540;Other;15:20:03.11;+01:47:11.7;Se1;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4541;G;15:29:55.57;-70:35:05.8;Aps;1.74;0.53;151;13.95;;10.20;9.42;9.13;23.17;Sb;;;;;;;;2MASX J15295558-7035059,ESO 068-006,IRAS 15249-7025,PGC 055252;;; -IC4542;G;15:22:05.39;+33:08:54.9;Boo;1.05;0.65;102;15.10;;11.82;11.16;10.80;23.95;S0-a;;;;;;;;2MASX J15220538+3308547,MCG +06-34-006,PGC 054855,SDSS J152205.39+330854.9;;Brighter component of interacting pair.; -IC4543;Dup;15:24:59.53;+13:26:42.3;Se1;;;;;;;;;;;;;;;;1118;;;;; -IC4544;Nova;15:29:22.99;-50:35:00.4;Nor;;;;7.00;;16.11;15.63;15.43;;;;;;;;;;2MASS J15292318-5035007,HD 137677;;Position is from P. Woudt (w.r.t. six 2MASS stars) via B. Skiff.; -IC4545;G;15:41:27.78;-81:37:33.4;Aps;2.02;0.85;166;14.04;;12.71;11.73;11.40;23.55;SABc;;;;;;;;2MASX J15412906-8138012,ESO 022-011,ESO-LV 22-0110,IRAS 15328-8127,PGC 055799;;; -IC4546;G;15:26:58.41;+28:51:09.4;CrB;0.70;0.60;104;16.35;15.54;12.57;11.97;11.67;23.19;Sc;;;;;;;;2MASX J15265841+2851093,MCG +05-36-031,PGC 055115,SDSS J152658.40+285109.3,SDSS J152658.40+285109.4,SDSS J152658.41+285109.4;;; -IC4547;G;15:27:15.07;+28:47:20.3;CrB;0.80;0.57;138;15.40;;12.29;11.64;11.55;23.72;E-S0;;;;;;;;2MASX J15271508+2847203,PGC 055130,SDSS J152715.06+284720.3,SDSS J152715.07+284720.3,SDSS J152715.07+284720.4;;; -IC4548;G;15:27:24.02;+28:50:59.4;CrB;0.48;0.33;11;16.17;;13.14;12.40;12.14;23.80;E;;;;;;;;2MASX J15272399+2850593,PGC 055136,SDSS J152724.01+285059.4;;; -IC4549;G;15:29:14.57;+32:49:32.0;Boo;0.70;0.23;96;15.50;;12.44;11.67;11.31;22.69;Sb;;;;;;;;2MASX J15291493+3249306,IRAS 15272+3259,MCG +06-34-011,PGC 055217,SDSS J152914.57+324932.0;;; -IC4550;Dup;15:35:28.57;-50:39:35.0;Nor;;;;;;;;;;;;;;;5946;;;;;; -IC4551;Dup;15:37:36.22;+05:58:26.5;Se1;;;;;;;;;;;;;;;5964;;;;;; -IC4552;G;15:38:54.89;+04:34:59.0;Se1;1.00;0.94;70;14.40;;11.49;10.80;10.51;22.95;Sc;;;;;;;;2MASX J15385489+0434589,IRAS 15364+0444,MCG +01-40-009,PGC 055687,UGC 09945;;The IC identification is not certain.; -IC4553;G;15:34:57.25;+23:30:11.3;Se1;1.11;0.72;96;14.76;13.88;11.04;10.31;9.85;22.53;Sm;;;;;;1127;;2MASX J15345727+2330104,IRAS 15327+2340,MCG +04-37-005,PGC 055497,SDSS J153457.20+233013.2,UGC 09913;;IC 4554 is another galaxy 2 arcmin southeast of Arp 220 = IC 4553.; -IC4554;G;15:35:04.83;+23:28:45.4;Se1;0.47;0.33;151;16.09;;12.98;12.44;11.98;22.99;Sab;;;;;;;;2MASX J15350481+2328457,LEDA 214390,SDSS J153504.83+232845.4;;;B-Mag taken from LEDA. -IC4555;G;15:48:14.81;-78:10:43.9;Aps;2.14;0.46;62;13.55;;11.38;10.88;10.68;22.68;SBc;;;;;;;;2MASX J15481484-7810438,ESO 022-012,ESO-LV 22-0120,IRAS 15411-7801,PGC 056077;;; -IC4556;G;15:35:22.45;+25:17:49.7;Se1;1.17;1.06;141;14.80;;11.19;10.49;10.22;23.76;E;;;;;;;;2MASX J15352244+2517494,MCG +04-37-007,PGC 055523,SDSS J153522.45+251749.6,SDSS J153522.46+251749.7;;; -IC4557;G;15:34:36.93;+39:43:44.0;Boo;0.52;0.36;137;15.70;;13.01;12.36;12.15;22.82;Sbc;;;;;;;;2MASX J15343692+3943435,PGC 055483,SDSS J153436.92+394343.9;;; -IC4558;G;15:35:46.20;+25:20:45.2;Se1;0.45;0.28;158;15.60;;13.01;12.33;11.98;22.66;Sb;;;;;;;;2MASX J15354620+2520449,PGC 055537,SDSS J153546.20+252045.1,SDSS J153546.20+252045.2;;; -IC4559;G;15:35:53.52;+25:20:28.1;Se1;0.64;0.44;70;15.10;;11.86;11.06;10.83;23.13;E;;;;;;;;2MASX J15355350+2520278,MCG +04-37-008,PGC 055553,SDSS J153553.52+252028.0,SDSS J153553.52+252028.1;;; -IC4560;G;15:35:54.08;+39:48:50.8;Boo;0.61;0.35;104;16.39;;12.39;11.88;11.60;24.04;S0;;;;;;;;2MASX J15355410+3948512,LEDA 214393,SDSS J153554.06+394851.0,SDSS J153554.07+394851.2;;;B-Mag taken from LEDA. -IC4561;G;15:36:47.07;+25:25:00.5;Se1;0.83;0.45;129;15.20;;11.85;11.18;10.95;23.05;Sb;;;;;;;;2MASX J15364705+2525004,MCG +04-37-011,PGC 055610,SDSS J153647.06+252500.5,SDSS J153647.07+252500.5;;; -IC4562;G;15:35:57.00;+43:29:35.7;Boo;1.19;1.09;55;13.80;;10.50;9.78;9.54;23.10;E;;;;;;;;2MASX J15355700+4329351,MCG +07-32-034,PGC 055559,SDSS J153557.00+432935.6,UGC 09928;;; -IC4563;G;15:36:03.68;+39:49:53.5;Boo;1.06;0.54;163;15.10;;;;;23.65;S0-a;;;;;;;;MCG +07-32-033,PGC 055565,SDSS J153603.68+394953.3,SDSS J153603.68+394953.4,SDSS J153603.69+394953.5;;; -IC4564;G;15:36:27.06;+43:31:07.6;Boo;1.20;0.44;71;14.40;;11.37;10.68;10.44;22.79;Sc;;;;;;;;2MASX J15362709+4331075,IRAS 15347+4340,MCG +07-32-036,PGC 055584,SDSS J153627.05+433107.5,SDSS J153627.05+433107.6,SDSS J153627.06+433107.6,UGC 09930;;; -IC4565;G;15:36:35.13;+43:25:29.6;Boo;0.80;0.46;11;14.80;;12.83;12.01;12.01;22.78;Sc;;;;;;;;2MASX J15363521+4325326,MCG +07-32-037,PGC 055592,SDSS J153635.12+432529.5,SDSS J153635.12+432529.6,SDSS J153635.13+432529.6,UGC 09931;;; -IC4566;G;15:36:42.16;+43:32:21.6;Boo;1.35;0.89;163;14.30;;11.16;10.46;10.16;23.23;Sb;;;;;;;;2MASX J15364216+4332217,MCG +07-32-038,PGC 055601,SDSS J153642.16+433221.5,SDSS J153642.16+433221.6,UGC 09933;;; -IC4567;G;15:37:13.27;+43:17:53.9;Boo;1.34;0.96;131;13.50;;11.02;10.34;10.02;22.73;Sc;;;;;;;;2MASX J15371331+4317544,IRAS 15354+4327,MCG +07-32-040,PGC 055620,SDSS J153713.26+431753.9,SDSS J153713.27+431753.9,UGC 09940;;; -IC4568;G;15:40:07.70;+28:09:08.2;CrB;0.54;0.25;39;15.30;;12.44;11.86;11.55;;Sb;;;;;;;;2MASX J15400772+2809082,PGC 055746,SDSS J154007.70+280908.2;;; -IC4569;G;15:40:48.38;+28:17:31.5;CrB;0.91;0.82;115;15.00;;11.57;10.89;10.63;23.52;E;;;;;;;;2MASX J15404835+2817314,MCG +05-37-013,PGC 055783,SDSS J154048.37+281731.5;;; -IC4570;G;15:41:22.59;+28:13:47.1;CrB;0.76;0.67;178;15.10;;12.52;11.68;11.53;23.09;SABc;;;;;;;;2MASX J15412255+2813472,MCG +05-37-014,PGC 055797,SDSS J154122.58+281347.1,UGC 09975;;; -IC4571;G;15:48:51.50;-67:19:24.5;TrA;1.58;0.57;139;14.64;;10.61;9.82;9.55;22.94;SBb;;;;;;;;2MASX J15485148-6719243,ESO 099-011,IRAS 15440-6710,PGC 056106;;; -IC4572;G;15:41:54.19;+28:08:02.4;CrB;1.16;0.78;76;15.00;;11.59;10.88;10.67;23.59;SBa;;;;;;;;2MASX J15415419+2808027,MCG +05-37-016,PGC 055817,SDSS J154154.19+280802.4;;; -IC4573;G;15:42:12.34;+23:47:59.9;Se1;0.62;0.27;138;15.50;;13.22;12.56;12.29;22.90;Sc;;;;;;;;2MASX J15421227+2348005,PGC 055825,SDSS J154212.33+234759.8,SDSS J154212.34+234759.9;;; -IC4574;G;15:41:59.24;+28:14:25.2;CrB;0.63;0.36;23;15.70;;14.39;13.73;13.83;23.29;SBa;;;;;;;;2MASX J15415925+2814247,PGC 055820,SDSS J154159.23+281425.2,SDSS J154159.24+281425.2;;; -IC4575;G;15:42:19.65;+23:48:27.5;Se1;0.50;0.35;84;15.50;;12.54;11.75;11.48;22.66;Sa;;;;;;;;2MASX J15421963+2348275,PGC 055828,SDSS J154219.64+234827.5;;; -IC4576;G;15:42:35.50;+23:40:12.2;Se1;1.39;0.90;79;14.80;;11.34;10.70;10.48;24.15;E;;;;;;;;2MASX J15423550+2340124,PGC 055840,SDSS J154235.49+234012.1,SDSS J154235.50+234012.1,SDSS J154235.51+234012.2;;; -IC4577;G;15:42:45.56;+23:47:33.5;Se1;0.58;0.49;145;15.40;;12.11;11.62;11.08;23.00;E;;;;;;;;2MASX J15424555+2347334,PGC 055848,SDSS J154245.54+234733.4,SDSS J154245.56+234733.4,SDSS J154245.56+234733.5;;; -IC4578;G;15:53:10.66;-74:49:31.0;Aps;1.63;0.62;139;13.90;;10.87;10.34;9.98;23.06;SBb;;;;;;;;2MASX J15531068-7449310,ESO 042-013,IRAS 15471-7440,PGC 056305;;; -IC4579;G;15:42:51.51;+23:46:23.4;Se1;0.55;0.43;72;15.50;;12.37;11.60;11.37;23.08;E;;;;;;;;2MASX J15425152+2346234,PGC 055852,SDSS J154251.49+234623.4,SDSS J154251.51+234623.4;;; -IC4580;G;15:43:14.24;+28:21:24.6;CrB;0.98;0.48;164;15.40;;12.40;11.63;11.37;23.86;S0-a;;;;;;;;2MASX J15431427+2821218,PGC 055862,SDSS J154314.23+282124.5;;; -IC4581;G;15:44:01.52;+28:16:37.3;CrB;0.79;0.60;24;15.30;;12.63;12.10;11.77;23.25;Sc;;;;;;;;2MASX J15440148+2816369,IRAS 15419+2826,MCG +05-37-019,PGC 055893,SDSS J154401.51+281637.2,SDSS J154401.52+281637.2,SDSS J154401.52+281637.3;;; -IC4582;G;15:45:39.45;+28:05:19.2;CrB;1.20;0.31;172;14.90;;11.69;10.90;10.57;22.98;SBbc;;;;;;;;2MASX J15453941+2805193,IRAS 15435+2814,MCG +05-37-020,PGC 055967,SDSS J154539.44+280519.1,UGC 10021;;Multiple SDSS entries describe this object.; -IC4583;G;15:46:21.94;+23:48:32.5;Se1;1.21;0.28;39;15.10;;11.44;10.74;10.41;23.23;Sab;;;;;;;;2MASX J15462194+2348327,MCG +04-37-032,PGC 055999,SDSS J154621.93+234832.5,SDSS J154621.94+234832.5;;; -IC4584;G;16:00:12.26;-66:22:59.8;TrA;1.96;1.64;90;13.44;;10.55;9.96;9.61;25.83;Sc;;;;;;;;2MASX J16001226-6622598,ESO 100-004,IRAS 15554-6614,PGC 056627;;; -IC4585;G;16:00:17.64;-66:19:20.2;TrA;1.58;0.76;56;13.00;;10.43;9.69;9.74;22.22;SBb;;;;;;;;2MASX J16001729-6619189,ESO 100-005,IRAS 15555-6610,PGC 056630;;; -IC4586;Dup;15:55:57.40;+05:55:54.8;Se1;;;;;;;;;;;;;;;6014;;;;;; -IC4587;G;15:59:51.61;+25:56:26.3;CrB;0.83;0.56;98;15.50;;12.36;11.52;11.41;24.20;E;;;;;;;;2MASX J15595161+2556263,PGC 056614,SDSS J155951.61+255626.2,SDSS J155951.61+255626.3;;; -IC4588;G;16:05:04.25;+23:55:01.7;Se1;0.50;0.39;141;15.87;;12.54;11.67;11.36;23.41;E;;;;;;;;2MASX J16050427+2355015,PGC 057025,SDSS J160504.24+235501.6,SDSS J160504.25+235501.7;;; -IC4589;*;16:07:24.59;-06:23:07.1;Oph;;;;;;;;;;;;;;;;;;;;; -IC4590;G;16:08:21.15;+28:28:43.3;CrB;0.65;0.43;158;15.61;14.90;12.53;11.72;11.54;23.50;E;;;;;;;;2MASX J16082116+2828436,PGC 057260,SDSS J160821.15+282843.3;;; -IC4591;HII;16:12:18.16;-27:55:39.9;Sco;12.00;10.00;;;;;;;;;;;;;;;;LBN 1096;;Star embedded in nebulosity.; -IC4592;RfN;16:11:58.67;-19:27:16.8;Sco;60.00;40.00;;3.90;;;;;;;;;;;;;;LBN 1113;;Very large nebula + bright star. Position on nu2 Scorpii.; -IC4593;PN;16:11:44.50;+12:04:17.0;Her;0.22;;;10.93;10.70;;;;;;;11.05;11.20;;;;BD +12 2966,HD 145649;PK 25+40 1,PN G025.3+40.8,TYC 953-381-1;;; -IC4594;Dup;16:11:22.59;+23:57:54.0;Her;;;;;;;;;;;;;;;6075;;;;;; -IC4595;G;16:20:44.44;-70:08:33.4;TrA;3.26;0.55;60;13.10;;10.05;9.18;8.84;23.39;Sc;;;;;;;;2MASX J16204443-7008333,ESO 069-002,IRAS 16153-7001,PGC 057876;;; -IC4596;G;16:16:03.61;-22:37:31.4;Sco;1.66;0.38;56;14.96;;11.31;10.56;10.22;23.83;SBab;;;;;;;;2MASX J16160361-2237314,ESO 516-009,MCG -04-38-005,PGC 057665;;; -IC4597;G;16:17:39.73;-34:21:57.4;Sco;1.27;1.02;145;13.30;;9.88;9.10;8.81;23.49;Sc;;;;;;;;2MASX J16173974-3421572,ESO 390-002,IRAS 16144-3414,PGC 057746;;This may also be NGC 6082.; -IC4598;G;16:18:13.31;-31:26:34.4;Sco;1.46;0.40;175;14.40;;11.77;11.13;10.98;23.39;Sbc;;;;;;;;2MASX J16181331-3126343,ESO 451-018,IRAS 16150-3119,PGC 057772;;; -IC4599;PN;16:19:23.17;-42:15:36.5;Sco;0.24;;;12.40;;11.01;10.56;10.08;;;;16.70;16.30;;;;;2MASX J16192317-4215366,ESO 331-001,IRAS 16158-4208,PK 338+05 1,PN G338.8+05.6;;; -IC4600;Other;16:18:08.67;-22:47:07.9;Sco;;;;;;;;;;;;;;;;;;;;"Group of Galactic stars; the IC identification is not certain."; -IC4601;Neb;16:20:17.80;-20:05:14.3;Sco;20.00;10.00;;;;;;;;;;;;;;;;;;Group of Galactic stars embedded in nebulosity.;Dimensions taken from LEDA -IC4602;Dup;16:23:38.84;+11:47:10.5;Her;;;;;;;;;;;;;;;6132;;;;;; -IC4603;Neb;16:25:24.48;-24:28:06.1;Oph;20.00;5.00;;;;;;;;;;;;;;;;LBN 1109;;Two Galactic stars embedded in nebulosity.; -IC4604;Neb;16:25:31.17;-23:26:11.7;Oph;60.00;25.00;;5.10;;;;;;;;;;;;;;LBN 1111;rho Oph Nebula;Three Galactic stars embedded in nebulosity.; -IC4605;Neb;16:30:12.48;-25:06:54.6;Sco;30.00;15.00;;4.70;;;;;;;;;;;;;;HD 148605,HIP 080815,LBN 1110;;Three Galactic stars embedded in nebulosity.; -IC4606;Other;16:31:33.89;-26:03:23.5;Sco;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position. IC 4606 may be the globular NGC 6144."; -IC4607;G;16:30:15.87;+24:34:27.7;Her;0.72;0.38;149;15.97;;11.94;11.25;10.83;24.11;E;;;;;;;;2MASX J16301588+2434274,MCG +04-39-010 NED06,PGC 058366,SDSS J163015.86+243427.6,SDSS J163015.87+243427.6;;;B-Mag taken from LEDA. -IC4608;G;16:46:53.98;-77:29:19.3;Aps;0.86;0.64;74;14.30;;12.20;11.61;11.31;22.36;SBm;;;;;;;;2MASX J16465395-7729192,ESO 043-004,IRAS 16396-7723,PGC 058968;;; -IC4609;G;16:33:01.62;+22:47:50.6;Her;0.87;0.83;19;15.40;;11.60;11.00;10.54;23.67;E-S0;;;;;;;;2MASX J16330166+2247500,MCG +04-39-014,PGC 058489,SDSS J163301.61+224750.6,SDSS J163301.62+224750.6;;; -IC4610;G;16:33:39.16;+39:15:27.5;Her;1.03;0.31;50;16.31;;13.11;12.43;12.08;24.36;Sab;;;;;;;;2MASX J16333912+3915279,PGC 3098331,SDSS J163339.14+391527.5,SDSS J163339.15+391527.5,SDSS J163339.16+391527.5;;;B-Mag taken from LEDA. -IC4611;G;16:33:42.34;+39:11:06.5;Her;0.51;0.46;20;15.81;;12.96;12.15;11.87;23.04;Sa;;;;;;;;2MASX J16334229+3911069,MCG +07-34-112,PGC 058498,SDSS J163342.33+391106.4,SDSS J163342.33+391106.5,SDSS J163342.34+391106.5;;;B-Mag taken from LEDA. -IC4612;G;16:33:49.62;+39:15:47.5;Her;1.00;1.00;103;14.60;;11.98;11.22;10.95;23.86;S0-a;;;;;;;;2MASX J16334964+3915478,IRAS 16320+3922,MCG +07-34-113,PGC 058505,SDSS J163349.61+391547.4,SDSS J163349.61+391547.5,SDSS J163349.62+391547.4,SDSS J163349.62+391547.5;;This is often incorrectly called IC 4610.; -IC4613;Other;16:37:10.15;+36:07:50.1;Her;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4614;G;16:37:47.18;+36:06:54.0;Her;0.77;0.69;85;15.30;;12.54;11.92;11.44;23.33;Sa;;;;;;;;2MASX J16374718+3606543,MCG +06-36-057,PGC 058641,SDSS J163747.17+360653.9,SDSS J163747.18+360653.9,SDSS J163747.18+360654.0;;; -IC4615;Dup;16:37:53.92;+36:04:23.0;Her;;;;;;;;;;;;;;;6196;;;;;; -IC4616;Dup;16:37:59.88;+35:59:43.8;Her;;;;;;;;;;;;;;;6197;;;;;; -IC4617;G;16:42:08.06;+36:41:02.7;Her;0.69;0.40;32;16.02;;12.65;12.24;11.80;23.51;Sbc;;;;;;;;2MASX J16420807+3641025,PGC 2085077,SDSS J164208.06+364102.6,SDSS J164208.06+364102.7;;Seen through the outskirts of MESSIER 013.;B-Mag taken from LEDA. -IC4618;G;16:57:50.01;-76:59:34.7;Aps;1.69;0.81;119;13.02;;10.48;10.13;9.88;22.04;SBbc;;;;;;;;2MASX J16574998-7659348,ESO 043-009,IRAS 16506-7654,PGC 059325;;; -IC4619;G;16:44:11.12;+17:45:33.0;Her;0.69;0.58;85;15.20;;12.74;12.10;11.87;23.02;Sbc;;;;;;;;2MASX J16441111+1745328,PGC 058871;;; -IC4620;G;16:48:30.04;+19:18:19.4;Her;0.71;0.51;93;15.60;;13.14;12.62;12.30;23.51;Sb;;;;;;;;2MASX J16483000+1918193,MCG +03-43-004,PGC 059034,SDSS J164830.03+191819.4,SDSS J164830.04+191819.4;;; -IC4621;G;16:50:51.17;+08:47:01.2;Oph;0.81;0.62;151;15.00;;12.10;11.35;11.09;23.27;Sab;;;;;;;;2MASX J16505118+0847019,IRAS 16484+0852,MCG +01-43-004,PGC 059104,UGC 10576;;; -IC4622;Other;16:52:08.31;-16:14:10.5;Oph;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4623;G;16:51:05.34;+22:31:38.7;Her;0.70;0.36;107;15.40;;12.26;11.47;11.10;22.96;Sb;;;;;;;;2MASX J16510537+2231394,MCG +04-40-003,PGC 059115,SDSS J165105.34+223138.7;;; -IC4624;G;16:51:33.54;+17:26:56.8;Her;0.47;0.32;115;15.71;;;;;23.17;;;;;;;;;2MASX J16513354+1726564,PGC 059131;;;B-Mag taken from LEDA. -IC4625;Dup;16:52:58.87;+02:24:03.3;Oph;;;;;;;;;;;;;;;6240;;;;;; -IC4626;**;16:53:21.43;+02:20:19.4;Oph;;;;;;;;;;;;;;;;;;;;; -IC4627;G;16:54:08.75;-07:38:07.2;Oph;0.65;0.27;74;16.15;;12.16;11.13;10.78;23.23;Sc;;;;;;;;2MASX J16540875-0738073,IRAS 16514-0733,LEDA 165701;;;B-Mag taken from LEDA. -IC4628;Neb;16:56:58.43;-40:27:03.5;Sco;89.13;58.88;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC4629;Other;16:56:09.99;-16:42:35.6;Oph;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4630;G;16:55:09.58;+26:39:46.5;Her;0.84;0.49;20;14.80;;11.77;11.12;10.81;23.21;S0-a;;;;;;;;2MASX J16550959+2639463,IRAS 16531+2644,MCG +04-40-007,PGC 059257,SDSS J165509.57+263946.4,SDSS J165509.58+263946.5,UGC 10607;;; -IC4631;Other;17:11:00.03;-77:36:12.8;Aps;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4632;Other;16:58:32.13;+22:54:56.0;Her;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4633;G;17:13:47.04;-77:32:10.3;Aps;2.70;1.32;148;12.40;;9.35;8.70;8.47;23.98;Sc;;;;;;;;2MASX J17134699-7732102,ESO 044-003,IRAS 17062-7728,PGC 059884;;; -IC4634;PN;17:01:33.59;-21:49:33.5;Oph;0.14;;;10.70;10.90;12.09;12.17;11.44;;;;13.72;13.94;;;;BD -21 4483,HD 153655;ESO 587-001,IRAS 16585-2145,PK 0+12 1,PN G000.3+12.2;;; -IC4635;G;17:15:39.19;-77:29:22.3;Aps;1.62;0.45;160;13.94;;10.36;9.52;9.19;23.77;SABb;;;;;;;;2MASX J17153915-7729220,ESO 044-005,IRAS 17080-7725,PGC 059959;;; -IC4636;*;16:59:06.82;+47:11:43.5;Her;;;;;;;;;;;;;;;;;;SDSS J165906.82+471143.5;;; -IC4637;PN;17:05:10.82;-40:53:10.9;Sco;0.31;;;13.60;12.50;;;;;;;12.88;12.50;;;;HD 154072;ESO 332-021,PK 345+00 1,PN G345.4+00.1;;; -IC4638;G;17:01:13.70;+33:30:47.5;Her;0.68;0.51;53;15.70;15.54;12.72;11.95;11.78;23.29;SABb;;;;;;;;2MASX J17011365+3330478,MCG +06-37-021,PGC 059446,SDSS J170113.69+333047.4,SDSS J170113.69+333047.5,UCAC4 618-055995;;; -IC4639;G;17:02:54.75;+22:55:48.1;Her;0.58;0.51;152;15.99;;12.45;11.77;11.50;23.66;E;;;;;;;;2MASX J17025471+2255479,LEDA 1678509,SDSS J170254.75+225548.0,SDSS J170254.76+225548.1;;;B-Mag taken from LEDA. -IC4640;G;17:23:58.35;-80:03:50.7;Aps;1.34;1.20;130;14.78;;12.18;11.34;11.42;;SABc;;;;;;;;2MASX J17235841-8003506,ESO 024-001,PGC 060209;;; -IC4641;G;17:24:10.32;-80:08:50.7;Aps;1.22;1.12;45;13.90;;12.01;11.54;11.19;23.46;Sc;;;;;;;;2MASX J17241026-8008506,ESO 024-002,PGC 060221;;; -IC4642;PN;17:11:45.22;-55:23:56.4;Ara;0.28;;;13.40;;;;;;;;16.09;;;;;HD 154952;ESO 180-004,IRAS 17075-5520,PK 334-09 1,PN G334.3-09.3,UCAC3 70-402396,UCAC4 173-185414;;; -IC4643;Dup;17:08:32.74;+42:20:20.8;Her;;;;;;;;;;;;;;;6301;;;;;; -IC4644;G;17:24:36.90;-73:56:24.4;Aps;1.75;0.47;134;14.30;;11.97;11.11;10.62;24.55;Sb;;;;;;;;2MASX J17243684-7356244,ESO 044-011,IRAS 17182-7353,PGC 060234;;; -IC4645;G;17:14:43.13;+43:06:14.8;Her;0.57;0.50;121;15.70;;14.43;13.76;13.32;23.42;Scd;;;;;;;;2MASX J17144311+4306149,PGC 059915,SDSS J171443.13+430614.7;;; -IC4646;G;17:23:53.19;-59:59:57.8;Ara;2.77;1.85;179;12.65;;10.57;9.89;9.63;23.23;Sc;;;;;;;;2MASX J17235321-5959576,ESO 138-023,ESO-LV 138-0230,IRAS 17194-5957,PGC 060208;;; -IC4647;G;17:26:03.74;-80:11:42.4;Aps;1.64;0.84;176;14.47;;10.96;10.33;10.15;;S0;;;;;;;;2MASX J17260372-8011424,ESO 024-005,PGC 060280;;; -IC4648;**;17:16:10.03;+43:51:45.3;Her;;;;;;;;;;;;;;;;;;;;; -IC4649;Dup;17:15:50.38;+57:22:00.5;Dra;;;;;;;;;;;;;;;;1252;;;;; -IC4650;G;17:15:47.41;+57:18:06.8;Dra;0.61;0.25;67;15.84;;12.75;12.20;12.00;23.57;S0;;;;;;;;2MASX J17154740+5718066,LEDA 2562439,SDSS J171547.40+571806.7,SDSS J171547.40+571806.8,SDSS J171547.40+571807.0,SDSS J171547.41+571806.7,SDSS J171547.41+571806.8;;;B-Mag taken from LEDA. -IC4651;OCl;17:24:49.14;-49:56:17.7;Ara;9.60;;;7.76;6.90;;;;;;;;;;;;;MWSC 2590;;; -IC4652;G;17:26:26.67;-59:43:41.9;Ara;1.10;0.53;16;14.16;;11.63;10.94;10.61;22.64;Sb;;;;;;;;2MASX J17262672-5943402,ESO 138-025,ESO-LV 138-0250,IRAS 17220-5941,PGC 060290;;; -IC4653;G;17:27:07.18;-60:52:46.5;Ara;1.61;0.98;51;13.25;;10.94;10.28;10.09;22.96;S0-a;;;;;;;;2MASX J17270693-6052448,ESO 138-028,ESO-LV 138-0280,IRAS 17225-6050,PGC 060311;;; -IC4654;G;17:37:07.89;-74:22:53.2;Aps;1.97;1.11;102;13.36;;10.30;9.41;9.25;22.93;SABb;;;;;;;;2MASX J17370793-7422532,ESO 044-015,IRAS 17306-7420,PGC 060582;;; -IC4655;Other;17:34:35.62;-60:43:16.8;Ara;;;;;;;;;;;;;;;;;;;;Line of six Galactic stars.; -IC4656;G;17:37:43.87;-63:43:46.8;Ara;2.65;0.57;90;13.74;;10.97;10.20;9.92;23.33;Sc;;;;;;;;2MASX J17374387-6343466,ESO 102-010,ESO-LV 102-0100,IRAS 17329-6341,PGC 060595;;; -IC4657;Other;17:32:42.70;-17:31:29.4;Oph;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4658;Other;17:36:10.81;-59:35:05.7;Ara;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4659;Other;17:34:12.23;-17:55:40.9;Oph;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4660;G;17:21:45.18;+75:50:54.6;UMi;1.28;0.33;170;15.40;;12.16;11.67;11.33;22.75;Sb;;;;;;;;2MASX J17214521+7550552,IRAS 17235+7553,MCG +13-12-023,PGC 060124,UGC 10848;;; -IC4661;G;17:51:02.76;-74:01:56.6;Aps;1.62;1.30;63;13.48;;11.68;10.53;10.37;23.04;Sc;;;;;;;;2MASX J17510271-7401565,ESO 044-021,IRAS 17447-7401,PGC 060990;;; -IC4662;G;17:47:08.87;-64:38:30.3;Pav;2.09;0.83;106;11.75;11.10;10.10;9.76;9.51;21.34;IB;;;;;;;;2MASX J17470919-6438192,2MASX J17471068-6438207,ESO 102-014,ESO-LV 102-0140,IRAS 17422-6437,PGC 060849,PGC 060851;;The 2MASS positions apply to HII regions northeast of the center.; -IC4663;PN;17:45:28.20;-44:54:17.5;Sco;0.22;;;13.10;12.50;15.48;;14.29;;;;16.00;15.20;;;;HD 161028;ESO 279-006,IRAS 17417-4453,PK 346-08 1,PN G346.2-08.2;;; -IC4664;G;17:48:58.59;-63:15:16.3;Pav;1.67;0.89;106;13.57;;10.78;10.02;9.78;23.03;Sb;;;;;;;;2MASX J17485857-6315162,ESO 102-015,ESO-LV 102-0150,IRAS 17442-6314,PGC 060907;;; -IC4665;OCl;17:46:27.18;+05:38:55.4;Oph;24.60;;;4.49;4.20;;;;;;;;;;;;;MWSC 2689;;; -IC4666;*;17:46:02.36;+55:46:32.1;Dra;;;;;;;;;;;;;;;;;;SDSS J174602.35+554632.1;;; -IC4667;Other;17:46:18.96;+55:52:32.3;Dra;;;;;;;;;;;;;;;;;;;;"Nominal position; only faint stars nearby."; -IC4668;*;17:46:59.41;+57:24:02.5;Dra;;;;;;;;;;;;;;;;;;;;; -IC4669;G;17:47:12.97;+61:26:03.2;Dra;0.61;0.29;103;15.10;;12.46;11.81;11.66;22.50;SBb;;;;;;;;2MASX J17471291+6126030,IRAS 17466+6127,PGC 060856,SDSS J174712.97+612603.2,UGC 10992;;; -IC4671;Other;17:55:07.90;-10:17:09.3;Se2;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4672;G;18:02:14.71;-62:49:57.0;Pav;0.89;0.52;40;15.27;;13.22;12.62;12.74;23.30;Sc;;;;;;;;2MASX J18021472-6249570,ESO 102-021,ESO-LV 102-0210,PGC 061307;;Marginal HIPASS detection.; -IC4673;PN;18:03:18.40;-27:06:22.0;Sgr;0.25;;;12.90;13.00;;;;;;;18.00;17.60;;;;;ESO 521-015,IRAS 18001-2706,PK 3-02 3,PN G003.5-02.4;;; -IC4674;G;18:08:13.08;-62:23:43.8;Pav;1.57;0.71;87;14.92;;12.07;11.55;11.31;23.85;SABc;;;;;;;;2MASX J18081306-6223438,ESO 140-001,ESO-LV 140-0010,IRAS 18035-6224,PGC 061445;;; -IC4675;Other;18:03:10.68;-09:15:34.1;Oph;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4676;G;18:02:52.99;+11:49:23.3;Oph;0.58;0.33;76;15.60;;13.56;12.81;12.34;23.27;;;;;;;;;2MASX J18025296+1149234,PGC 061317;;; -IC4677;Other;17:58:15.77;+66:37:59.8;Dra;;;;;;;;;;;;;;;;;;MCG +11-22-017,PGC 061193;;IC 4677 is a knot in the envelope of NGC 6543, a galactic planetary nebula.; -IC4678;Neb;18:06:33.47;-23:57:16.0;Sgr;;;;10.40;;;;;;;;;;;;;;;;A Galactic star embedded in nebulosity.; -IC4679;G;18:11:24.49;-56:15:15.8;Tel;1.17;0.39;125;13.83;;12.39;11.17;10.96;21.04;SBc;;;;;;;;2MASX J18112447-5615158,ESO 182-005,ESO-LV 182-0050,IRAS 18071-5615,PGC 061522;;; -IC4680;G;18:13:29.64;-64:28:36.2;Pav;1.61;0.52;72;13.91;;10.73;10.09;9.76;23.19;Sab;;;;;;;;2MASX J18132963-6428362,ESO 103-009,ESO-LV 103-0090,PGC 061598;;; -IC4681;*;18:08:20.00;-23:25:55.3;Sgr;;;;9.26;9.10;8.99;8.93;8.92;;;;;;;;;;2MASS J18081997-2325551,HD 165705,IDS 18022-2327 AB,SAO 186340,TYC 6842-1272-1,WDS J18083-2326AB;;The IC identification is not certain.; -IC4682;G;18:16:25.71;-71:34:52.7;Pav;2.21;1.51;140;13.25;;10.01;9.33;9.05;23.35;SBbc;;;;;;;;2MASX J18162565-7134527,ESO 071-005,ESO-LV 71-0050,IRAS 18105-7135,PGC 061669;;; -IC4683;Other;18:09:00.93;-26:23:27.4;Sgr;;;;;;;;;;;;;;;;;;;;IC number probably refers to the rich Milky Way starfield in this area.; -IC4684;RfN;18:09:08.44;-23:26:07.6;Sgr;3.00;2.00;;;;;;;;;;;;;;;;LBN 34;;Two Galactic stars embedded in nebulosity.; -IC4685;Neb;18:09:17.50;-23:59:14.1;Sgr;15.00;10.00;;;;;;;;;;;;;;;;;;A Galactic star embedded in nebulosity.;Dimensions taken from LEDA -IC4686;G;18:13:38.64;-57:43:57.1;Pav;0.78;0.59;45;14.67;;12.34;11.71;11.45;23.00;;;;;;;4687W;;2MASX J18133883-5743572,ESO 140-009,ESO-LV 140-0090,PGC 061601;;; -IC4687;G;18:13:39.63;-57:43:31.3;Pav;1.15;0.73;51;14.35;14.30;11.04;10.30;10.00;23.09;SABb;;;;;;;;2MASX J18133982-5743312,ESO 140-010,ESO-LV 140-0100,IRAS 18093-5744,PGC 061602;;; -IC4688;G;18:08:11.88;+11:42:44.0;Oph;1.30;0.95;174;14.70;;11.24;10.56;10.24;23.54;Sc;;;;;;;;2MASX J18081188+1142439,MCG +02-46-006,PGC 061441,UGC 11125;;; -IC4689;G;18:13:40.28;-57:44:53.5;Pav;0.91;0.38;141;15.07;;11.55;10.86;10.59;23.22;SABa;;;;;;4687S;;2MASX J18134033-5744542,ESO 140-011,ESO-LV 140-0110,PGC 061604;;; -IC4690;Dup;18:16:55.37;-19:46:37.5;Sgr;;;;;;;;;;;;;;;6589;;;;;; -IC4691;G;18:08:45.70;+11:49:48.3;Oph;1.00;0.64;150;15.50;;11.16;10.45;10.15;24.25;E;;;;;;;;2MASX J18084560+1149455,PGC 061456;;UZC position includes two stars superposed northeast of the nucleus.; -IC4692;G;18:14:49.97;-58:41:37.6;Pav;1.74;0.86;4;14.31;;11.57;11.03;10.69;23.51;SBc;;;;;;;;2MASX J18144995-5841375,ESO 140-013,ESO-LV 140-0130,IRAS 18104-5842,PGC 061638;;; -IC4693;Other;18:09:10.83;+17:20:52.4;Her;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC4694;G;18:15:26.45;-58:12:32.1;Pav;2.79;0.73;19;13.75;;;;;23.60;SBc;;;;;;;;ESO 140-014,ESO-LV 140-0140,PGC 061647;;; -IC4695;**;18:17:23.47;-58:55:31.7;Pav;;;;;;;;;;;;;;;;;;;;; -IC4696;G;18:20:17.91;-64:44:02.7;Pav;2.36;0.75;74;13.49;;10.47;9.88;9.50;23.20;Sbc;;;;;;;;2MASX J18201792-6444025,ESO 103-013,ESO-LV 103-0130,IRAS 18153-6445,PGC 061750;;; -IC4697;G;18:12:26.91;+25:25:37.9;Her;0.87;0.23;0;15.10;;10.95;10.25;10.02;22.72;Sab;;;;;;;;2MASX J18122689+2525373,MCG +04-43-013,PGC 061560;;; -IC4698;G;18:20:59.93;-63:20:52.6;Pav;1.75;0.26;39;15.31;;12.49;11.78;11.57;24.07;Sb;;;;;;;;2MASX J18205988-6320525,ESO 103-015,ESO-LV 103-0150,IRAS 18161-6322,PGC 061762;;; -IC4699;PN;18:18:32.79;-45:58:59.1;Tel;0.08;;;11.90;13.00;15.11;15.13;14.34;;;;14.82;15.10;;;;HD 167672;ESO 280-008,IRAS 18148-4600,PK 348-13 1,PN G348.0-13.8,UCAC2 12325246,UCAC3 89-368398,UCAC4 221-166083;;; -IC4700;Dup;18:17:04.99;-19:51:57.8;Sgr;;;;;;;;;;;;;;;6590;;;;;; -IC4701;Neb;18:16:35.74;-16:38:53.8;Sgr;60.00;40.00;;;;;;;;;;;;;;;;LBN 55;;; -IC4702;G;18:23:03.82;-59:14:20.2;Pav;1.66;1.19;155;14.04;;10.35;9.66;9.36;23.69;S0-a;;;;;;;;2MASX J18230381-5914203,ESO 140-020,ESO-LV 140-0200,PGC 061810;;; -IC4703;Neb;18:18:56.22;-13:50:43.4;Se2;5.05;5.05;90;6.58;6.00;;;;;;;;;;;;;;Eagle Nebula,Star Queen;This is the nebula associated with the open cluster MESSIER 16 = NGC 6611.;Diameters taken from SIMBAD. -IC4704;G;18:27:53.64;-71:36:35.5;Pav;2.70;1.99;165;12.61;;9.44;8.70;8.45;23.98;E-S0;;;;;;;;2MASX J18275369-7136353,ESO 071-011,ESO-LV 71-0110,PGC 061906;;; -IC4705;G;18:28:10.32;-71:41:38.2;Pav;1.73;1.02;53;14.31;;10.81;9.98;9.78;23.10;SBa;;;;;;;;2MASX J18281028-7141379,ESO 071-012,ESO-LV 71-0120,IRAS 18222-7143,PGC 061914;;; -IC4706;Neb;18:19:36.94;-16:01:52.6;Sgr;3.47;;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC4707;Neb;18:19:53.91;-16:00:33.3;Sgr;3.47;;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -IC4708;G;18:13:46.21;+61:09:26.2;Dra;0.50;0.45;113;15.50;;12.90;12.28;11.98;23.00;;;;;;;;;2MASX J18134618+6109262,PGC 061605;;; -IC4709;G;18:24:19.39;-56:22:09.0;Tel;1.17;0.59;5;14.41;;11.44;10.75;10.43;23.13;Sab;;;;;;;;2MASX J18241939-5622091,ESO 182-014,ESO-LV 182-0140,IRAS 18200-5623,PGC 061835;;; -IC4710;G;18:28:37.97;-66:58:56.2;Pav;3.49;2.99;5;12.53;;11.32;10.94;10.63;23.82;Sm;;;;;;;;2MASX J18283796-6658561,ESO 103-022,ESO-LV 103-0220,IRAS 18235-6700,PGC 061922;;; -IC4711;Other;18:28:06.82;-64:56:40.1;Pav;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC4712;G;18:31:06.92;-71:41:37.2;Pav;1.99;1.17;61;13.41;;10.28;9.83;9.41;22.83;Sbc;;;;;;;;2MASX J18310695-7141371,ESO 071-014,ESO-LV 71-0140,IRAS 18251-7143,PGC 061981;;; -IC4713;G;18:29:59.34;-67:13:27.8;Pav;0.91;0.79;95;14.61;14.04;11.36;10.69;10.35;22.67;SBm;;;;;;;;2MASX J18295935-6713279,ESO 103-023,ESO-LV 103-0230,IRAS 18247-6715,PGC 061956;;; -IC4714;G;18:30:55.75;-66:39:06.3;Pav;1.49;0.29;177;15.13;;12.65;12.18;11.92;23.40;Sc;;;;;;;;2MASX J18305572-6639061,ESO 103-024,ESO-LV 103-0240,PGC 061976;;; -IC4715;*Ass;18:16:56.12;-18:30:52.4;Sgr;120.00;60.00;;;4.50;;;;;;;;;024;;;;;Small Sgr Star Cloud;Milky Way star cloud.;V-mag taken from HEASARC's messier table -IC4716;G;18:32:45.04;-56:57:43.2;Pav;0.69;0.32;98;15.98;;13.71;13.11;13.03;23.25;SBbc;;;;;;;;2MASX J18324502-5657429,ESO 183-001,ESO-LV 183-0010,PGC 062013;;; -IC4717;G;18:33:17.25;-57:58:32.6;Pav;1.78;0.43;93;14.03;13.43;10.49;9.72;9.47;23.29;Sb;;;;;;;;2MASX J18331726-5758328,ESO 140-024,ESO-LV 140-0240,IRAS 18289-5800,PGC 062024;;; -IC4718;G;18:33:50.16;-60:07:44.8;Pav;1.67;0.80;116;13.95;13.14;10.92;10.29;9.92;23.18;Sab;;;;;;;;2MASX J18335014-6007446,ESO 140-026,ESO-LV 140-0260,PGC 062048;;; -IC4719;G;18:33:11.54;-56:43:55.9;Tel;1.47;0.61;112;13.58;13.98;11.31;10.65;10.31;22.41;Sd;;;;;;;;2MASX J18331155-5643558,ESO 183-002,ESO-LV 183-0020,IRAS 18289-5646,PGC 062022;;; -IC4720;G;18:33:32.50;-58:24:19.3;Pav;2.75;0.88;159;13.63;;;;;23.32;SBc;;;;;;;;ESO 140-025,ESO-LV 140-0250,IRAS 18291-5826,PGC 062030;;Confused HIPASS source; -IC4721;G;18:34:24.76;-58:29:47.8;Pav;5.30;1.64;149;12.64;11.63;9.84;9.15;8.93;23.75;SBc;;;;;;;;2MASX J18342476-5829478,ESO 140-027,ESO-LV 140-0270,IRAS 18300-5832,PGC 062066;;Confused HIPASS source; -IC4722;G;18:34:31.53;-57:47:34.0;Pav;1.64;1.14;45;13.66;;10.72;9.99;9.84;23.06;Sc;;;;;;;;2MASX J18343155-5747340,ESO 140-028,ESO-LV 140-0280,IRAS 18302-5749,PGC 062071;;; -IC4723;G;18:35:56.26;-63:22:36.0;Pav;0.70;0.67;6;14.69;;11.99;11.28;11.01;22.79;E;;;;;;;;2MASX J18355625-6322358,ESO 103-027,ESO-LV 103-0270,IRAS 18311-6325,PGC 062099;;; -IC4724;G;18:38:40.28;-70:07:32.4;Pav;0.83;0.40;158;15.12;;12.21;11.53;11.42;23.48;;;;;;;;;2MASX J18384023-7007324,ESO 071-019,ESO-LV 71-0190,PGC 062183,TYC 9295-404-1;;; -IC4725;OCl;18:31:46.77;-19:06:53.8;Sgr;14.10;;;5.29;4.60;;;;;;;;;025;;;;;;; -IC4726;G;18:36:58.81;-62:51:15.6;Pav;1.13;0.82;19;14.73;;11.11;10.36;10.13;23.66;S0;;;;;;;;2MASX J18365878-6251157,ESO 103-032,ESO-LV 103-0320,PGC 062133;;; -IC4727;G;18:37:56.06;-62:42:02.4;Pav;1.24;1.09;114;14.06;;10.30;9.60;9.23;23.29;E-S0;;;;;;;;2MASX J18375609-6242021,ESO 103-033,ESO-LV 103-0330,PGC 062165;;; -IC4728;G;18:37:57.00;-62:31:51.3;Pav;2.22;0.76;172;14.25;;10.24;9.45;9.17;24.01;SBab;;;;;;;;2MASX J18375700-6231511,ESO 103-034,ESO-LV 103-0340,IRAS 18333-6234,PGC 062166;;; -IC4729;G;18:39:56.43;-67:25:32.5;Pav;1.31;0.69;61;13.59;;10.64;10.05;9.53;22.11;Sc;;;;;;;;2MASX J18395639-6725325,ESO 103-040,ESO-LV 103-0400,IRAS 18347-6728,PGC 062218;;; -IC4730;G;18:38:50.17;-63:20:59.7;Pav;1.44;0.68;154;14.46;;11.25;10.59;10.25;23.93;S0-a;;;;;;;;2MASX J18385016-6320597,ESO 103-038,ESO-LV 103-0380,IRAS 18339-6323,PGC 062192;;; -IC4731;G;18:38:42.98;-62:56:34.9;Pav;1.55;0.76;80;13.84;;10.05;9.34;9.06;23.41;S0-a;;;;;;;;2MASX J18384297-6256346,ESO 103-037,ESO-LV 103-0370,PGC 062187;;; -IC4732;PN;18:33:54.60;-22:38:41.0;Sgr;0.07;;;13.30;12.10;12.88;12.80;11.90;;;;16.50;16.20;;;;BD -22 18309,HD 171131;ESO 523-001,IRAS 18308-2241,PK 10-06 1,PN G010.7-06.4;;; -IC4733;*;18:26:38.18;+64:58:02.7;Dra;;;;;;;;;;;;;;;;;;;;; -IC4734;G;18:38:25.70;-57:29:25.6;Pav;1.31;0.76;103;14.21;;10.90;10.14;9.79;23.14;SBb;;;;;;;;2MASX J18382569-5729258,ESO 140-033,ESO-LV 140-0330,IRAS 18341-5732,PGC 062175;;; -IC4735;G;18:39:49.94;-62:57:21.7;Pav;0.79;0.54;38;15.50;;12.05;11.25;11.15;23.64;;;;;;;;;2MASX J18394995-6257216,ESO 103-041,ESO-LV 103-0410,PGC 062213;;; -IC4736;G;18:38:39.81;-57:53:35.8;Pav;1.29;0.98;99;14.60;;12.38;11.65;11.66;23.65;SBd;;;;;;;;2MASX J18383982-5753357,ESO 140-034,ESO-LV 140-0340,PGC 062181;;Confused HIPASS source; -IC4737;G;18:39:58.40;-62:35:52.7;Pav;0.93;0.77;23;15.00;;11.40;10.58;10.30;23.46;SBa;;;;;;;;2MASX J18395835-6235526,ESO 103-042,ESO-LV 103-0420,IRAS 18352-6238,PGC 062222;;; -IC4738;G;18:40:26.92;-61:54:08.5;Pav;1.25;0.62;146;15.25;;12.18;11.23;11.44;23.83;Sc;;;;;;;;2MASX J18402686-6154085,ESO 140-035,ESO-LV 140-0350,PGC 062234;;; -IC4739;G;18:40:50.98;-61:54:05.6;Pav;0.95;0.57;95;15.18;;12.84;12.26;12.27;23.37;Sbc;;;;;;;;2MASX J18405094-6154054,ESO 140-036,ESO-LV 140-0360,PGC 062246;;Star superimposed.; -IC4740;G;18:43:00.58;-68:21:35.8;Pav;1.01;0.92;13;15.29;;12.55;12.20;11.57;23.90;SABc;;;;;;;;2MASX J18430060-6821356,ESO 071-020,ESO-LV 71-0200,PGC 062306;;; -IC4741;G;18:41:43.43;-63:56:53.5;Pav;1.43;0.90;30;13.77;;10.38;9.66;9.39;23.04;Sab;;;;;;;;2MASX J18414342-6356537,ESO 103-047,ESO-LV 103-0470,PGC 062269;;; -IC4742;G;18:41:52.57;-63:51:43.5;Pav;2.11;1.67;14;13.09;;9.27;8.71;8.49;23.55;E;;;;;;;;2MASX J18415254-6351437,ESO 103-048,ESO-LV 103-0480,PGC 062270;;; -IC4743;G;18:41:29.15;-61:46:20.0;Pav;0.93;0.52;99;14.91;;11.34;10.58;10.30;23.54;S0;;;;;;;;2MASX J18412916-6146202,ESO 140-037,ESO-LV 140-0370,PGC 062262;;; -IC4744;G;18:41:54.89;-63:13:25.9;Pav;0.66;0.39;76;15.07;;12.85;11.96;11.76;22.73;I;;;;;;;;2MASX J18415486-6313257,ESO 103-050,ESO-LV 103-0500,ESO-LV 103-0501,IRAS 18371-6316,PGC 062271,PGC 062272;;ESO-LV catalog has two entries for this galaxy.; -IC4745;G;18:42:35.88;-64:56:34.5;Pav;2.08;0.91;1;13.89;;10.46;9.66;9.30;23.70;Sab;;;;;;;;2MASX J18423586-6456345,ESO 103-052,ESO-LV 103-0520,IRAS 18376-6459,PGC 062292;;; -IC4746;G;18:45:54.51;-72:40:05.6;Pav;0.57;0.48;0;;;;;;;;;;;;;;;PGC 062371;;; -IC4747;G;18:45:57.34;-72:37:48.1;Pav;1.10;0.37;72;15.09;;12.68;11.90;11.57;;Sc;;;;;;;;2MASX J18455734-7237484,ESO 045-015,IRAS 18398-7240,PGC 062372;;; -IC4748;G;18:42:45.96;-64:04:21.6;Pav;1.01;0.88;95;14.33;;11.12;10.44;10.20;23.09;S0;;;;;;;;2MASX J18424592-6404215,ESO 103-053,ESO-LV 103-0530,PGC 062299;;; -IC4749;G;18:42:49.49;-63:12:30.3;Pav;1.20;1.01;57;14.29;;10.72;9.98;9.74;23.41;S0;;;;;;;;2MASX J18424946-6312305,ESO 103-054,ESO-LV 103-0540,PGC 062300;;; -IC4750;G;18:43:02.68;-62:58:17.3;Pav;1.16;0.52;110;15.14;;11.51;10.81;10.67;24.09;S0-a;;;;;;;;2MASX J18430271-6258175,ESO 103-055,ESO-LV 103-0550,PGC 062308;;; -IC4751;G;18:43:19.34;-62:06:44.2;Pav;1.08;0.57;6;14.08;;10.96;10.21;9.90;22.97;S0;;;;;;;;2MASX J18431930-6206444,ESO 140-040,ESO-LV 140-0400,PGC 062317;;; -IC4752;G;18:43:46.73;-64:04:55.6;Pav;0.73;0.65;129;15.48;;12.78;12.06;11.82;23.42;Sab;;;;;;;;2MASX J18434670-6404557,ESO 103-057,ESO-LV 103-0570,PGC 062323;;; -IC4753;G;18:43:32.62;-62:06:28.6;Pav;0.87;0.74;7;14.63;;11.19;10.50;10.24;22.39;E;;;;;;;;2MASX J18433262-6206286,ESO 140-041,ESO-LV 140-0410,PGC 062319;;; -IC4754;G;18:44:00.23;-61:59:24.2;Pav;1.27;1.10;31;14.37;;11.14;10.46;9.98;23.46;SBb;;;;;;;;2MASX J18440025-6159247,ESO 140-042,ESO-LV 140-0420,PGC 062321,PGC 062331;;; -IC4755;G;18:45:01.15;-63:41:32.0;Pav;1.42;0.32;96;15.14;;11.43;10.63;10.33;23.99;Sa;;;;;;;;2MASX J18450112-6341322,ESO 103-058,ESO-LV 103-0580,IRAS 18402-6344,PGC 062349;;; -IC4756;OCl;18:38:51.51;+05:27:43.8;Se2;24.00;;;4.96;4.60;;;;;;;;;;;;;MWSC 2967;;; -IC4757;G;18:43:55.75;-57:10:03.2;Pav;1.49;0.65;57;14.57;;11.01;10.14;9.86;23.98;S0-a;;;;;;;;2MASX J18435575-5710029,ESO 183-009,ESO-LV 183-0090,IRAS 18396-5713,PGC 062327;;; -IC4758;G;18:46:18.27;-65:45:24.0;Pav;1.04;0.53;142;14.16;;11.44;10.82;10.42;22.45;Sc;;;;;;;;2MASX J18461825-6545240,ESO 103-062,ESO-LV 103-0620,IRAS 18413-6548,PGC 062381;;; -IC4759;GPair;18:45:41.00;-63:05:07.0;Pav;0.80;;;;;;;;;;;;;;;;;;;; -IC4759 NED01;G;18:45:40.72;-63:05:05.2;Pav;0.59;0.14;71;17.33;;;;;24.92;;;;;;;;;PGC 062366;;;B-Mag taken from LEDA. -IC4759 NED02;G;18:45:41.30;-63:05:13.2;Pav;0.92;0.54;175;14.95;;13.29;12.19;12.27;23.84;I;;;;;;;;2MASX J18454128-6305131,IRAS 18409-6308,PGC 062367;;; -IC4760;G;18:45:45.95;-62:57:30.1;Pav;0.83;0.76;7;15.14;;11.61;11.00;10.70;23.47;S0;;;;;;;;2MASX J18454603-6257291,ESO 103-061,ESO-LV 103-0610,PGC 062369;;; -IC4761;G;18:43:55.60;-52:51:10.9;Tel;1.54;1.07;25;13.93;;11.57;10.80;10.58;23.32;SBbc;;;;;;;;2MASX J18435562-5251110,ESO 183-010,ESO-LV 183-0100,PGC 062326;;; -IC4762;**;18:32:28.53;+67:51:28.9;Dra;;;;;;;;;;;;;;;;;;;;; -IC4763;Dup;18:33:30.50;+67:08:14.3;Dra;;;;;;;;;;;;;;;6679;;;;;; -IC4764;G;18:47:07.57;-63:29:04.4;Pav;1.42;0.41;126;14.70;;11.34;10.67;10.32;23.81;Sa;;;;;;;;2MASX J18470755-6329042,ESO 104-004,ESO-LV 104-0040,PGC 062396;;; -IC4765;G;18:47:17.93;-63:19:52.8;Pav;3.79;2.84;121;12.33;11.36;9.11;8.52;8.16;24.09;E;;;;;;;;2MASX J18471814-6319521,ESO 104-006,ESO-LV 104-0060,PGC 062407;;; -IC4766;G;18:47:35.77;-63:17:31.8;Pav;1.23;0.44;110;14.91;13.42;11.35;10.61;10.37;24.08;S0-a;;;;;;;;2MASX J18473570-6317324,ESO 104-009,ESO-LV 104-0090,PGC 062421;;; -IC4767;G;18:47:41.73;-63:24:20.4;Pav;2.00;0.44;29;14.67;12.96;10.94;10.26;10.04;24.47;S0-a;;;;;;;;2MASX J18474176-6324204,ESO 104-010,ESO-LV 104-0100,PGC 062427;;; -IC4768;OCl;18:41:28.19;-05:32:05.4;Sct;;;;;;;;;;;;;;;;;;;;Two star clusters.; -IC4769;G;18:47:44.05;-63:09:25.2;Pav;1.81;1.10;165;14.09;;11.22;10.54;10.15;23.75;SBbc;;;;;;;;2MASX J18474403-6309254,ESO 104-011,ESO-LV 104-0110,IRAS 18429-6312,PGC 062428;;; -IC4770;G;18:48:10.33;-63:23:00.4;Pav;0.78;0.60;73;15.49;13.15;12.97;12.18;11.66;23.48;SABa;;;;;;;;2MASX J18481033-6323003,ESO 104-013,ESO-LV 104-0130,PGC 062439;;; -IC4771;G;18:48:23.84;-63:14:51.6;Pav;1.10;0.46;179;15.24;;12.37;11.45;11.37;23.50;Sc;;;;;;;;2MASX J18482370-6314513,ESO 104-015,ESO-LV 104-0150,PGC 062445;;; -IC4772;G;18:39:56.50;+40:01:35.0;Lyr;0.60;0.45;10;15.00;;11.83;11.28;10.86;23.03;E;;;;;;;;2MASX J18395646+4001351,MCG +07-38-014,PGC 062217;;; -IC4773;G;18:51:20.82;-69:55:29.1;Pav;1.39;0.72;137;14.36;;;;;23.29;SABd;;;;;;;;ESO 072-002,ESO-LV 72-0020,PGC 062498;;; -IC4774;G;18:48:10.65;-57:56:08.5;Pav;1.06;0.87;75;14.50;;11.49;10.81;10.38;23.17;SBbc;;;;;;;;2MASX J18481058-5756085,ESO 141-005,ESO-LV 141-0050,PGC 062438;;; -IC4775;G;18:48:26.29;-57:11:01.4;Pav;1.51;0.34;17;14.73;;12.39;11.68;11.41;23.36;Sb;;;;;;;;2MASX J18482629-5711014,ESO 183-014,ESO-LV 183-0140,PGC 062447;;; -IC4776;PN;18:45:50.70;-33:20:35.0;Sgr;0.12;;;11.70;10.80;;;;;;;14.30;14.10;;;;HD 173283;ESO 396-002,IRAS 18425-3323,PK 2-13 1,PN G002.0-13.4;;; -IC4777;G;18:48:11.30;-53:08:51.4;Tel;0.94;0.77;122;14.63;14.63;11.69;10.94;10.77;23.21;S0-a;;;;;;;;2MASX J18481131-5308512,ESO 183-013,ESO-LV 183-0130,IRAS 18442-5312,PGC 062440;;; -IC4778;G;18:50:00.37;-61:43:10.2;Pav;1.20;1.03;46;14.15;;11.03;10.44;10.11;23.27;S0-a;;;;;;;;2MASX J18500034-6143103,ESO 141-006,ESO-LV 141-0060,IRAS 18454-6146,PGC 062472;;; -IC4779;G;18:50:30.43;-63:00:46.4;Pav;0.86;0.79;90;14.91;;12.21;11.78;11.48;23.19;Sab;;;;;;;;2MASX J18503042-6300463,ESO 104-017,ESO-LV 104-0170,PGC 062480;;; -IC4780;G;18:49:56.09;-59:15:10.3;Pav;0.77;0.58;102;14.94;;12.18;11.48;11.20;22.87;Sbc;;;;;;;;2MASX J18495608-5915102,ESO 141-007,ESO-LV 141-0070,IRAS 18455-5918,PGC 062470;;; -IC4781;G;18:51:37.64;-62:47:33.4;Pav;0.96;0.65;1;15.22;;11.84;11.15;10.81;23.93;S0-a;;;;;;;;2MASX J18513762-6247333,ESO 104-018,ESO-LV 104-0180,PGC 062505;;; -IC4782;G;18:50:54.87;-55:29:28.4;Tel;0.40;0.29;101;14.73;;13.78;13.40;12.76;21.34;Sc;;;;;;;;2MASX J18505490-5529280,ESO 183-018,ESO-LV 183-0180,PGC 062495;;; -IC4783;G;18:51:33.37;-58:48:47.4;Pav;1.15;0.92;59;14.58;;12.95;12.18;12.53;23.43;Sbc;;;;;;;;2MASX J18513338-5848472,ESO 141-008,ESO-LV 141-0080,IRAS 18473-5852,PGC 062502;;; -IC4784;G;18:52:48.02;-63:15:34.6;Pav;1.51;1.21;98;13.73;;10.27;9.56;9.28;23.38;S0;;;;;;;;2MASX J18524802-6315345,ESO 104-020,ESO-LV 104-0200,PGC 062527;;; -IC4785;G;18:52:55.23;-59:15:19.5;Pav;3.12;1.60;135;13.10;;9.98;9.10;9.02;23.84;SBb;;;;;;;;2MASX J18525522-5915196,ESO 141-009,ESO-LV 141-0090,PGC 062528;;; -IC4786;G;18:52:44.57;-56:41:40.6;Tel;0.79;0.23;176;15.86;;12.70;11.97;11.98;23.13;Sbc;;;;;;;;2MASX J18524453-5641405,ESO 183-024,ESO-LV 183-0240,PGC 062526;;; -IC4787;G;18:56:04.66;-68:40:56.5;Pav;1.07;0.96;170;14.58;;;;;23.40;SBm;;;;;;;;ESO 072-004,ESO-LV 72-0040,PGC 062579;;Confused HIPASS source; -IC4788;G;18:54:41.02;-63:27:08.6;Pav;1.27;0.21;15;16.04;;13.11;12.63;12.39;23.77;Sc;;;;;;;;2MASX J18544104-6327084,ESO 104-021,ESO-LV 104-0210,PGC 062555;;; -IC4789;G;18:56:18.49;-68:34:01.6;Pav;1.63;0.65;174;14.02;;12.06;11.47;11.28;23.10;Sc;;;;;;;;2MASX J18561849-6834012,ESO 072-005,ESO-LV 72-0050,PGC 062582;;; -IC4790;G;18:56:32.21;-64:55:44.1;Pav;1.21;0.70;56;13.97;;10.80;10.07;9.83;22.68;SBc;;;;;;;;2MASX J18563221-6455443,ESO 104-023,ESO-LV 104-0230,IRAS 18516-6459,PGC 062590;;; -IC4791;G;18:49:01.18;+19:19:52.0;Her;1.41;1.19;164;14.01;;10.06;9.33;9.01;23.50;;;;;;;;;2MASX J18490117+1919518,LEDA 1588608;;;B-Mag taken from LEDA. -IC4792;G;18:55:41.76;-56:24:13.7;Tel;1.36;0.31;155;15.05;;;;;23.64;Sab;;;;;;;;ESO 183-026,ESO-LV 183-0260,IRAS 18514-5628,PGC 062573;;; -IC4793;G;18:56:55.60;-61:23:59.2;Pav;1.21;0.53;120;14.55;;11.86;11.23;10.89;23.10;Sb;;;;;;;;2MASX J18565561-6123592,ESO 141-012,ESO-LV 141-0120,IRAS 18523-6127,PGC 062599;;; -IC4794;G;18:57:09.63;-62:05:27.4;Pav;1.48;0.79;19;14.15;;10.71;10.02;9.70;23.71;E-S0;;;;;;;;2MASX J18570962-6205272,ESO 141-013,ESO-LV 141-0130,PGC 062605;;; -IC4795;G;18:57:16.36;-61:36:32.7;Pav;1.13;0.27;69;15.76;;;;;23.58;Sc;;;;;;;;ESO 141-014,ESO-LV 141-0140,PGC 062608;;; -IC4796;G;18:56:27.84;-54:12:50.2;Tel;1.95;1.08;133;13.48;;10.01;9.34;9.06;23.41;S0;;;;;;;;2MASX J18562781-5412500,ESO 183-028,ESO-LV 183-0280,PGC 062588;;; -IC4797;G;18:56:29.68;-54:18:20.8;Tel;2.62;1.85;148;12.32;11.27;8.98;8.32;8.07;23.21;E;;;;;;;;2MASX J18562965-5418210,ESO 183-029,ESO-LV 183-0290,PGC 062589;;; -IC4798;G;18:58:20.89;-62:07:06.3;Pav;2.02;1.32;111;13.18;;9.71;8.90;8.73;23.44;S0;;;;;;;;2MASX J18582088-6207063,ESO 141-015,ESO-LV 141-0150,PGC 062630;;; -IC4799;G;18:58:56.59;-63:55:51.5;Pav;1.55;1.02;44;14.02;;11.03;10.04;9.96;23.54;SBab;;;;;;;;2MASX J18585661-6355513,ESO 104-027,ESO-LV 104-0270,IRAS 18541-6359,PGC 062643;;; -IC4800;G;18:58:43.52;-63:08:21.2;Pav;1.95;1.10;161;13.72;;10.49;9.74;9.57;23.64;SBa;;;;;;;;2MASX J18584350-6308213,ESO 104-025,ESO-LV 104-0250,PGC 062637;;; -IC4801;G;18:59:38.39;-64:40:30.5;Pav;1.95;1.09;89;13.62;;10.22;9.54;9.26;23.75;S0-a;;;;;;;;2MASX J18593840-6440306,ESO 104-028,ESO-LV 104-0280,PGC 062655;;; -IC4802;Other;18:55:07.09;-22:41:53.9;Sgr;;;;;;;;;;;;;;;;;;;;"Clump of stars in NGC 6717; ESO identification is wrong."; -IC4803;G;19:00:39.87;-62:03:54.5;Pav;0.76;0.32;35;15.58;;13.36;12.58;12.57;23.82;;;;;;;;;2MASX J19003992-6203545,PGC 062677;;; -IC4804;G;19:01:07.38;-61:50:00.0;Pav;1.28;1.04;173;14.78;;12.37;12.05;11.38;23.87;Sc;;;;;;;;2MASX J19010736-6150000,ESO 141-018,ESO-LV 141-0180,PGC 062685;;; -IC4805;G;19:02:01.42;-63:02:51.5;Pav;0.76;0.28;26;14.91;;11.44;10.64;10.46;22.73;Sa;;;;;;;;2MASX J19020143-6302514,ESO 104-030,ESO-LV 104-0300,IRAS 18573-6307,PGC 062693;;; -IC4806;G;19:01:30.69;-57:31:55.4;Pav;2.40;0.54;9;13.79;13.67;10.29;9.55;9.30;22.73;Sb;;;;;;;;2MASX J19013071-5731553,ESO 141-020,ESO-LV 141-0200,PGC 062689;;; -IC4807;G;19:02:17.66;-56:55:52.3;Pav;1.01;0.68;14;14.20;;11.62;10.79;10.56;22.64;SBc;;;;;;;;2MASX J19021765-5655523,ESO 183-037,ESO-LV 183-0370,IRAS 18580-5700,PGC 062696;;; -IC4808;G;19:01:07.62;-45:18:49.4;CrA;2.26;0.87;43;13.23;;10.50;9.85;9.48;22.68;Sc;;;;;;;;2MASX J19010759-4518492,ESO 282-003,ESO-LV 282-0030,IRAS 18574-4523,PGC 062686;;; -IC4809;G;19:04:05.38;-62:11:38.7;Pav;1.01;0.60;11;15.07;;12.39;12.06;11.53;23.77;;;;;;;;;2MASX J19040540-6211385,ESO 141-022,ESO-LV 141-0220,PGC 062733;;; -IC4810;G;19:02:59.71;-56:09:35.0;Tel;4.04;0.41;135;14.42;14.44;11.49;10.91;10.66;23.12;SABc;;;;;;;;2MASX J19025970-5609350,ESO 184-002,ESO-LV 184-0020,PGC 062706;;; -IC4811;G;19:05:44.67;-67:08:01.8;Pav;0.62;0.49;106;15.75;;13.01;12.36;12.16;23.25;Sbc;;;;;;;;2MASX J19054467-6708018,ESO 104-034,ESO-LV 104-0340,IRAS 19006-6712,PGC 062760;;; -IC4812;Neb;19:01:03.63;-37:03:37.2;CrA;10.00;6.92;;;;;;;;;;;;;;;;;;Two Galactic stars embedded in nebulosity.;Dimensions taken from LEDA -IC4813;G;19:05:41.71;-66:31:19.4;Pav;1.31;0.64;34;14.46;12.57;;;;23.80;;;;;;;;;ESO 104-035,ESO-LV 104-0350,PGC 062758,TYC 9082-1592-1;;; -IC4814;G;19:04:58.89;-58:34:45.8;Pav;1.50;0.60;95;14.34;;11.89;11.34;10.95;23.30;Sb;;;;;;;;2MASX J19045886-5834454,ESO 141-023,ESO-LV 141-0230,IRAS 19006-5839,PGC 062749;;; -IC4815;G;19:06:50.61;-61:42:04.9;Pav;1.12;0.77;167;14.37;;11.32;10.61;10.37;23.36;S0;;;;;;;;2MASX J19065059-6142046,ESO 141-026,ESO-LV 141-0260,PGC 062778;;; -IC4816;Nova;19:01:50.52;-13:09:42.6;Sgr;;;;4.50;;15.61;15.33;14.84;;;;;;;;;;2MASS J19015056-1309420,HD 176654;;This is Nova Sgr 1898 = V1059 Sgr.; -IC4817;G;19:06:12.35;-56:09:33.7;Tel;1.46;0.48;14;14.52;;12.27;11.48;11.35;23.22;Sbc;;;;;;;;2MASX J19061235-5609334,ESO 184-010,ESO-LV 184-0100,PGC 062771;;; -IC4818;G;19:06:03.04;-55:08:12.6;Tel;0.95;0.24;77;15.39;;11.95;11.25;10.98;23.88;S0-a;;;;;;;;2MASX J19060306-5508124,ESO 184-009,ESO-LV 184-0090,PGC 062766;;; -IC4819;G;19:07:07.30;-59:28:01.0;Pav;3.00;0.37;123;14.15;;;;;23.68;Sc;;;;;;;;ESO 141-027,ESO-LV 141-0270,PGC 062782;;; -IC4820;G;19:09:13.51;-63:27:55.8;Pav;1.36;0.88;97;14.69;9.20;14.96;14.01;13.98;24.20;Scd;;;;;;;;2MASX J19091355-6327557,ESO 104-039,ESO-LV 104-0390,PGC 062824;;; -IC4821;G;19:09:32.01;-55:01:02.3;Tel;1.82;0.85;6;13.65;;11.04;10.39;10.38;23.08;Sc;;;;;;;;2MASX J19093201-5501022,ESO 184-017,ESO-LV 184-0170,IRAS 19054-5505,PGC 062830;;; -IC4822;G;19:14:45.49;-72:26:28.1;Pav;0.71;0.42;72;15.49;;12.53;11.80;11.41;;Sbc;;;;;;;;2MASX J19144546-7226283,ESO 045-019,PGC 062952;;; -IC4823;G;19:12:15.75;-63:58:33.1;Pav;1.23;0.87;18;14.69;;10.71;10.03;10.04;23.79;S0-a;;;;;;;;2MASX J19121580-6358361,PGC 062894;;;B-Mag taken from LEDA. -IC4824;G;19:13:14.07;-62:05:17.8;Pav;0.73;0.20;59;13.90;;;;;23.44;I;;;;;;;;ESO-LV 141-0331,LEDA 349375,PGC 062918;;-1m 10s, -7.6m error in A-M position.; -IC4825;G;19:17:15.63;-72:44:55.5;Pav;0.51;0.42;58;15.64;;13.10;12.23;12.12;22.76;Sbc;;;;;;;;2MASX J19171564-7244556,ESO 045-020,PGC 063014;;;B-Mag taken from LEDA. -IC4826;G;19:12:21.20;-57:12:08.3;Pav;1.29;0.75;45;14.47;;11.88;11.31;10.95;23.43;Sab;;;;;;;;2MASX J19122120-5712081,ESO 184-027,ESO-LV 184-0270,PGC 062897;;; -IC4827;G;19:13:21.24;-60:51:36.6;Pav;3.05;0.69;166;13.26;;9.74;9.19;8.81;23.54;Sab;;;;;;;;2MASX J19132127-6051367,ESO 141-034,ESO-LV 141-0340,IRAS 19088-6056,PGC 062922;;; -IC4828;G;19:13:40.69;-62:04:57.4;Pav;1.13;0.51;68;14.77;;12.49;12.04;11.91;23.16;Sbc;;;;;;;;2MASX J19134071-6204573,ESO 141-036,ESO-LV 141-0360,PGC 062930;;; -IC4829;G;19:12:33.70;-56:32:24.9;Tel;1.05;0.46;25;14.70;;12.01;11.31;11.36;22.96;Sb;;;;;;;;2MASX J19123367-5632247,ESO 184-031,ESO-LV 184-0310,PGC 062902;;; -IC4830;G;19:13:48.56;-59:17:39.7;Pav;1.94;1.45;27;13.18;;10.01;9.30;8.98;23.15;SBbc;;;;;;;;2MASX J19134856-5917396,ESO 141-037,ESO-LV 141-0370,IRAS 19094-5922,PGC 062934;;; -IC4831;G;19:14:43.84;-62:16:21.4;Pav;3.67;0.84;111;12.81;;9.63;8.88;8.68;23.52;SBab;;;;;;;;2MASX J19144383-6216214,ESO 141-038,ESO-LV 141-0380,IRAS 19101-6221,PGC 062951;;; -IC4832;G;19:14:03.87;-56:36:38.6;Tel;2.54;0.80;145;13.87;13.13;10.35;9.58;9.35;23.94;Sa;;;;;;;;2MASX J19140388-5636385,ESO 184-039,ESO-LV 184-0390,IRAS 19098-5641,PGC 062938;;; -IC4833;G;19:15:41.15;-62:19:47.8;Pav;0.78;0.44;94;14.66;;12.69;11.94;11.48;22.42;S?;;;;;;;;2MASX J19154118-6219479,ESO 141-040,ESO-LV 141-0400,IRAS 19111-6225,PGC 062980;;; -IC4834;G;19:16:31.33;-64:00:22.2;Pav;1.11;0.50;126;14.75;;11.52;10.74;10.44;23.37;Sa;;;;;;;;2MASX J19163134-6400221,ESO 104-047,ESO-LV 104-0470,PGC 062996;;; -IC4835;G;19:15:27.48;-58:14:16.8;Pav;0.88;0.57;165;14.74;;12.08;11.43;11.14;22.85;Sc;;;;;;;;2MASX J19152747-5814169,ESO 141-041,ESO-LV 141-0410,PGC 062970;;; -IC4836;G;19:16:17.93;-60:12:01.2;Pav;1.59;1.36;71;13.40;12.65;11.02;10.28;10.03;22.81;SBc;;;;;;;;2MASX J19161790-6012009,ESO 141-043,ESO-LV 141-0430,IRAS 19118-6017,PGC 062990;;; -IC4837;G;19:15:14.64;-54:39:41.1;Tel;2.25;1.23;24;13.15;12.23;;;;23.07;SBc;;;;;;;;ESO 184-046,ESO-LV 184-0460,IRAS 19112-5444,PGC 062963;;; -IC4838;G;19:16:46.11;-61:36:52.2;Pav;1.36;0.62;63;14.16;13.94;11.67;11.04;10.67;23.08;Sbc;;;;;;;;2MASX J19164612-6136521,ESO 141-045,ESO-LV 141-0450,IRAS 19122-6142,PGC 063002;;; -IC4839;G;19:15:34.12;-54:37:36.1;Tel;2.16;1.56;132;13.20;13.66;10.14;9.56;9.25;23.47;Sbc;;;;;;;;2MASX J19153413-5437359,ESO 184-048,ESO-LV 184-0480,IRAS 19114-5443,PGC 062975;;; -IC4840;G;19:15:51.69;-56:12:32.7;Tel;1.13;0.66;130;14.37;14.00;11.47;10.76;10.48;23.27;S0-a;;;;;;;;2MASX J19155168-5612326,ESO 184-049,ESO-LV 184-0490,IRAS 19116-5617,PGC 062983;;; -IC4841;G;19:20:42.83;-72:13:36.4;Pav;0.93;0.79;153;14.89;;12.50;11.97;11.07;23.32;SABc;;;;;;;;2MASX J19204286-7213365,ESO 072-014,ESO-LV 72-0140,PGC 063092;;; -IC4842;G;19:19:24.47;-60:38:39.3;Pav;2.22;1.14;21;13.45;12.29;10.28;9.57;9.37;23.99;E;;;;;;;;2MASX J19192446-6038392,ESO 141-052,ESO-LV 141-0520,PGC 063065;;; -IC4843;G;19:19:21.69;-59:18:31.9;Pav;1.15;0.26;91;15.12;;12.81;12.22;11.70;23.12;SBbc;;;;;;;;2MASX J19192167-5918315,ESO 141-053,ESO-LV 141-0530,IRAS 19149-5924,PGC 063064;;; -IC4844;G;19:19:02.64;-56:01:37.8;Tel;1.61;0.92;168;14.04;;11.16;10.35;10.25;23.36;SBb;;;;;;;;2MASX J19190260-5601377,ESO 184-054,ESO-LV 184-0540,PGC 063056;;; -IC4845;G;19:20:22.49;-60:23:21.0;Pav;1.95;1.46;83;12.87;11.57;9.86;9.17;8.92;22.34;SBb;;;;;;;;2MASX J19202250-6023208,ESO 141-054,ESO-LV 141-0540,IRAS 19159-6028,PGC 063081;;; -IC4846;PN;19:16:28.30;-09:02:37.0;Aql;0.03;;;12.70;11.90;12.68;12.84;11.90;;;;15.19;15.19;;;;HD 180324,BD -09 5069;IRAS 19137-0908,PK 27-09 1,PN G027.6-09.6;;; -IC4847;G;19:23:32.01;-65:30:24.0;Pav;0.97;0.69;142;14.97;;12.41;11.71;11.51;23.59;S0;;;;;;;;2MASX J19233202-6530239,ESO 104-049,ESO-LV 104-0490,PGC 063160;;; -IC4848;G;19:22:54.57;-56:46:50.9;Tel;0.69;0.50;28;14.88;;13.18;12.75;12.27;22.57;Sbc;;;;;;;;2MASX J19225456-5646509,ESO 184-061,ESO-LV 184-0610,IRAS 19188-5652,PGC 063152;;; -IC4849;G;19:25:35.99;-62:55:57.8;Pav;0.99;0.28;117;14.53;;11.65;10.97;10.64;22.28;SBc;;;;;;;;2MASX J19253598-6255578,ESO 104-054,ESO-LV 104-0540,IRAS 19209-6301,PGC 063192;;; -IC4850;Nova;19:20:24.09;-00:08:00.8;Aql;;;;20.81;20.41;;;;;;;;;;;;;HD 181419;;This is Nova Aql 1899 = V606 Aql.; -IC4851;G;19:25:29.44;-57:40:13.6;Pav;1.69;0.58;14;14.16;;10.67;9.93;9.68;23.44;SBab;;;;;;;;2MASX J19252942-5740137,ESO 142-003,ESO-LV 142-0030,PGC 063189;;; -IC4852;G;19:26:25.34;-60:20:09.8;Pav;1.71;0.86;171;13.46;12.43;11.05;10.49;10.04;22.99;SBc;;;;;;;;2MASX J19262534-6020097,ESO 142-006,ESO-LV 142-0060,IRAS 19220-6026,PGC 063204;;; -IC4853;G;19:30:47.31;-71:04:12.1;Pav;1.24;0.31;167;14.88;;12.88;12.16;11.76;23.06;Sbc;;;;;;;;2MASX J19304728-7104121,ESO 072-016,ESO-LV 72-0160,IRAS 19253-7110,PGC 063304;;; -IC4854;G;19:27:21.15;-59:18:55.6;Pav;1.31;1.25;28;13.87;;11.18;10.44;10.16;23.10;SABc;;;;;;4855;;2MASX J19272118-5918553,ESO 142-007,ESO-LV 142-0070,IRAS 19230-5925,PGC 063223;;; -IC4855;Dup;19:27:21.15;-59:18:55.6;Pav;;;;;;;;;;;;;;;;4854;;;;; -IC4856;G;19:27:30.53;-54:54:30.7;Tel;1.17;0.57;29;14.46;;;;;22.96;IB;;;;;;;;ESO 184-069,ESO-LV 184-0690,PGC 063226;;; -IC4857;G;19:28:39.18;-58:46:04.5;Pav;1.82;1.08;32;13.84;;11.55;10.91;10.42;23.32;Sc;;;;;;4858;;2MASX J19283917-5846043,ESO 142-012,ESO-LV 142-0120,IRAS 19244-5852,PGC 063256;;; -IC4858;Dup;19:28:39.18;-58:46:04.5;Pav;;;;;;;;;;;;;;;;4857;;;;; -IC4859;G;19:30:46.66;-66:18:53.0;Pav;1.17;0.62;35;14.75;;11.68;10.94;10.64;23.27;SABb;;;;;;;;2MASX J19304664-6618531,ESO 104-058,ESO-LV 104-0580,IRAS 19258-6625,PGC 063302;;; -IC4860;G;19:31:27.51;-67:22:08.5;Pav;0.96;0.73;150;14.68;;12.40;11.66;11.50;23.09;SBc;;;;;;;;2MASX J19312748-6722082,ESO 105-001,ESO-LV 105-0010,IRAS 19263-6728,PGC 063326;;; -IC4861;G;19:29:16.72;-57:34:29.9;Pav;1.21;0.47;28;15.50;;12.72;11.96;11.70;24.02;Sc;;;;;;;;2MASX J19291673-5734297,ESO 142-015,ESO-LV 142-0150,PGC 063274;;; -IC4862;G;19:31:40.35;-67:19:22.4;Pav;1.55;0.51;180;14.58;;11.62;10.94;10.61;23.36;Sbc;;;;;;;;2MASX J19314033-6719223,ESO 105-003,ESO-LV 105-0030,IRAS 19266-6726,PGC 063334;;; -IC4863;**;19:27:51.69;-36:13:00.8;Sgr;;;;11.93;11.38;10.34;10.03;9.96;;;;;;;;;;;;;Main component is TYC 7436-294-1. -IC4864;G;19:40:06.17;-77:33:29.4;Oct;1.76;0.43;177;15.02;;10.86;10.06;9.79;24.31;SABa;;;;;;;;2MASX J19400620-7733295,ESO 025-013,ESO-LV 25-0130,PGC 063494;;; -IC4865;**;19:30:50.34;-46:41:54.4;Tel;;;;;;;;;;;;;;;;;;;;; -IC4866;G;19:34:34.75;-61:08:44.8;Pav;1.64;1.02;164;13.89;;10.75;10.04;9.77;23.37;SABb;;;;;;;;2MASX J19343478-6108446,ESO 142-021,ESO-LV 142-0210,PGC 063376;;; -IC4867;Dup;19:26:31.98;+50:07:31.0;Cyg;;;;;;;;;;;;;;;;1301;;;;; -IC4868;**;19:33:33.40;-45:53:33.7;Tel;;;;11.12;10.56;;;;;;;;;;;;;HD 183845,IDS 19263-4606 AB,TYC 8389-736-1,WDS J19336-4554AB;;This is the Galactic double star IDS 19263-4606 AB.; -IC4869;G;19:36:02.33;-61:01:40.3;Pav;1.79;1.17;167;13.63;;13.03;12.65;12.20;23.33;Sm;;;;;;;;2MASX J19360232-6101402,ESO 142-025,ESO-LV 142-0250,IRAS 19316-6108,PGC 063398;;; -IC4870;G;19:37:37.60;-65:48:42.6;Pav;1.67;0.87;132;13.92;14.63;12.73;12.46;12.12;23.87;IB;;;;;;;;2MASX J19373757-6548425,ESO 105-011,ESO-LV 105-0110,IRAS 19327-6555,PGC 063432;;; -IC4871;G;19:35:42.23;-57:31:09.2;Pav;3.78;0.77;8;14.03;;11.92;11.15;10.89;24.40;SABc;;;;;;4872;;2MASX J19354222-5731092,ESO 142-024,ESO-LV 142-0240,PGC 063395;;; -IC4872;Dup;19:35:42.23;-57:31:09.2;Pav;;;;;;;;;;;;;;;;4871;;;;; -IC4873;G;19:34:54.69;-46:08:09.0;Tel;0.93;0.74;34;15.13;;12.62;12.09;11.73;23.43;Sbc;;;;;;;;2MASX J19345467-4608091,ESO 283-008,ESO-LV 283-0080,PGC 063382;;; -IC4874;G;19:36:21.54;-47:15:57.4;Tel;1.39;0.79;54;14.75;;11.83;11.28;11.06;23.65;SABb;;;;;;;;2MASX J19362154-4715574,ESO 283-011,ESO-LV 283-0110,PGC 063403;;; -IC4875;G;19:37:38.49;-52:04:32.6;Tel;1.00;0.68;68;14.54;;13.61;12.73;12.75;22.99;I;;;;;;;;2MASX J19373843-5204327,ESO 232-012,ESO-LV 232-0120,PGC 063433;;; -IC4876;G;19:37:42.77;-52:50:33.9;Tel;1.33;0.99;123;14.35;;11.78;11.18;10.79;23.33;SABc;;;;;;;;2MASX J19374278-5250337,ESO 185-004,ESO-LV 185-0040,IRAS 19338-5257,PGC 063434;;; -IC4877;G;19:37:55.89;-51:59:29.0;Tel;1.64;0.31;83;14.61;;12.26;11.56;11.30;24.31;S0;;;;;;;;2MASX J19375589-5159287,ESO 232-014,ESO-LV 232-0140,IRAS 19341-5206,PGC 063443;;; -IC4878;G;19:38:50.07;-58:13:35.2;Pav;1.50;0.31;43;15.42;;12.48;11.66;11.31;24.78;;;;;;;;;2MASX J19385011-5813353,IRAS 19346-5820,PGC 063467;;Marginal HIPASS detection.; -IC4879;G;19:39:36.45;-52:22:07.6;Tel;0.90;0.41;81;14.46;;11.77;11.15;10.85;22.65;Sa;;;;;;;;2MASX J19393646-5222075,ESO 232-016,ESO-LV 232-0160,IRAS 19357-5229,PGC 063480;;; -IC4880;G;19:40:30.91;-56:24:36.6;Tel;1.99;0.49;115;14.31;;10.90;10.18;10.02;24.41;S0-a;;;;;;;;2MASX J19403091-5624367,ESO 185-010,ESO-LV 185-0100,PGC 063508;;; -IC4881;G;19:40:26.02;-55:51:27.8;Tel;1.10;0.87;152;14.59;;11.75;11.25;10.91;23.31;SBbc;;;;;;;;2MASX J19402602-5551277,ESO 185-008,ESO-LV 185-0080,IRAS 19363-5558,PGC 063506;;; -IC4882;G;19:40:23.31;-55:11:48.9;Tel;0.98;0.84;2;14.61;;11.55;10.83;10.64;23.13;SBb;;;;;;;;2MASX J19402333-5511487,ESO 185-009,ESO-LV 185-0090,IRAS 19363-5518,PGC 063505;;; -IC4883;G;19:42:00.53;-55:32:43.9;Tel;1.51;0.50;157;14.62;;11.26;10.56;10.32;23.46;SBb;;;;;;;;2MASX J19420051-5532440,ESO 185-011,ESO-LV 185-0110,PGC 063537;;; -IC4884;G;19:42:41.10;-58:07:42.5;Pav;1.59;0.42;166;14.72;;11.39;10.66;10.57;24.34;S0;;;;;;;;2MASX J19424107-5807426,ESO 142-033,ESO-LV 142-0330,PGC 063546;;; -IC4885;G;19:43:52.04;-60:39:06.3;Pav;2.00;0.47;114;14.56;;11.88;11.46;11.03;23.59;Sc;;;;;;;;2MASX J19435203-6039062,ESO 142-036,ESO-LV 142-0360,PGC 063577;;; -IC4886;G;19:43:14.55;-51:48:27.0;Tel;1.48;0.75;110;14.18;;11.13;10.39;10.11;23.32;Sb;;;;;;;;2MASX J19431454-5148268,ESO 232-018,ESO-LV 232-0180,PGC 063555;;; -IC4887;G;19:48:21.29;-69:35:13.9;Pav;0.99;0.76;91;14.22;;11.70;11.08;10.75;22.81;SABa;;;;;;;;2MASX J19482143-6935141,ESO 073-009,ESO-LV 73-0090,PGC 063681;;; -IC4888;G;19:44:52.24;-54:27:23.9;Tel;1.14;0.87;100;14.68;;12.03;11.38;11.11;23.63;E-S0;;;;;;;;2MASX J19445224-5427238,ESO 185-012,ESO-LV 185-0120,PGC 063609;;; -IC4889;G;19:45:15.15;-54:20:38.9;Tel;2.99;2.49;2;12.25;11.08;9.01;8.34;8.11;23.30;E;;;;;;4891;;2MASX J19451516-5420389,ESO 185-014,ESO-LV 185-0140,PGC 063620,PGC 063621;;; -IC4890;G;19:45:35.46;-56:32:43.6;Tel;1.01;0.82;55;14.71;;12.12;11.48;11.16;23.35;SBb;;;;;;;;2MASX J19453547-5632435,ESO 185-016,ESO-LV 185-0160,PGC 063631;;; -IC4891;Dup;19:45:15.15;-54:20:38.9;Tel;;;;;;;;;;;;;;;;4889;;;;; -IC4892;G;19:49:31.61;-70:13:38.8;Pav;1.82;0.40;4;14.81;14.98;11.88;11.22;10.96;24.67;Sbc;;;;;;;;2MASX J19493156-7013387,ESO 073-011,ESO-LV 73-0110,PGC 063709;;; -IC4893;G;19:50:33.36;-72:30:36.0;Pav;0.57;0.48;65;15.65;;13.41;12.65;12.65;;;;;;;;;;2MASX J19503336-7230358,ESO 046-004,PGC 063726;;; -IC4894;G;19:46:59.11;-51:50:47.4;Tel;0.87;0.51;131;14.65;;12.78;12.33;11.75;22.72;;;;;;;;;2MASX J19465918-5150476,ESO 232-025,ESO-LV 232-0250,PGC 063662;;; -IC4895;Dup;19:44:57.74;-14:48:12.4;Sgr;;;;;;;;;;;;;;;6822;;;;;; -IC4896;G;19:49:04.91;-58:58:53.2;Pav;0.90;0.48;18;15.39;;12.46;11.78;11.59;23.41;Sb;;;;;;;;2MASX J19490488-5858529,ESO 142-045,ESO-LV 142-0450,PGC 063698;;; -IC4897;G;19:49:19.70;-51:52:04.8;Tel;0.80;0.46;111;15.64;;12.65;11.98;11.82;23.41;SBb;;;;;;;;2MASX J19491968-5152048,ESO 233-001,ESO-LV 233-0010,PGC 063703;;; -IC4898;Other;19:47:46.18;-33:19:14.1;Sgr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4899;G;19:54:26.75;-70:35:23.1;Pav;1.02;0.62;5;14.52;;12.34;11.84;11.68;22.95;Sbc;;;;;;;;2MASX J19542659-7035293,ESO 073-015,ESO-LV 73-0150,PGC 063799;;The 2MASX position refers to a knot 8 arcsec south of the nucleus.; -IC4900;G;19:50:22.10;-51:20:45.0;Tel;0.91;0.23;174;16.16;;13.10;12.63;12.22;23.64;Sbc;;;;;;;;2MASX J19502212-5120450,ESO 233-002,ESO-LV 233-0020,PGC 063718;;; -IC4901;G;19:54:23.53;-58:42:48.8;Pav;3.68;2.54;130;12.29;;9.69;9.20;8.85;23.22;SABc;;;;;;;;2MASX J19542352-5842488,ESO 142-050,ESO-LV 142-0500,IRAS 19501-5850,PGC 063797;;; -IC4902;G;19:54:24.11;-56:22:44.7;Tel;0.68;0.34;18;16.07;;13.04;12.45;12.20;23.44;Sbc;;;;;;;;2MASX J19542410-5622447,ESO 185-024,ESO-LV 185-0240,PGC 063798;;; -IC4903;G;19:58:13.42;-70:27:12.3;Pav;1.17;0.37;180;15.24;;12.59;12.05;11.40;23.49;Sb;;;;;;;;2MASX J19581338-7027122,ESO 073-016,ESO-LV 73-0160,PGC 063897;;; -IC4904;G;19:58:38.81;-70:11:03.1;Pav;1.07;0.76;52;14.77;;13.53;12.88;12.93;23.46;Sab;;;;;;;;2MASX J19583878-7011030,ESO 073-017,ESO-LV 73-0170,PGC 063913;;; -IC4905;G;19:56:05.87;-61:13:15.9;Pav;1.04;0.34;118;15.93;;12.89;12.12;11.73;24.08;Sab;;;;;;;;2MASX J19560588-6113161,ESO 142-055,ESO-LV 142-0550,PGC 063828;;; -IC4906;G;19:56:47.60;-60:28:05.1;Pav;1.61;0.91;68;13.72;;10.38;9.67;9.40;23.55;E-S0;;;;;;;;2MASX J19564754-6028049,ESO 142-057,ESO-LV 142-0570,PGC 063849;;; -IC4907;G;19:56:13.06;-52:27:14.3;Tel;0.54;0.43;1;16.10;;14.52;13.44;13.44;23.36;Sbc;;;;;;;;2MASX J19561307-5227143,ESO 185-028,ESO-LV 185-0280,PGC 063831;;; -IC4908;G;19:56:56.67;-55:47:30.2;Tel;0.66;0.59;168;15.01;;12.09;11.39;11.07;22.80;Sa;;;;;;;;2MASX J19565666-5547301,ESO 185-030,ESO-LV 185-0300,PGC 063855;;; -IC4909;G;19:56:45.60;-50:03:20.7;Tel;1.16;0.79;77;14.62;;12.04;11.31;11.16;23.38;Sbc;;;;;;;;2MASX J19564558-5003206,ESO 233-008,ESO-LV 233-0080,PGC 063848;;; -IC4910;G;19:57:46.99;-56:51:47.7;Pav;0.52;0.42;117;15.60;;13.02;12.45;11.98;22.77;SBbc;;;;;;;;2MASX J19574697-5651474,ESO 185-033,ESO-LV 185-0330,PGC 063879;;; -IC4911;G;19:57:41.83;-51:59:11.3;Tel;0.61;0.45;139;16.14;;13.75;13.01;12.71;23.71;S0;;;;;;;;2MASX J19574185-5159113,ESO 233-009,ESO-LV 233-0090,PGC 063877;;; -IC4912;G;20:06:49.69;-77:21:27.0;Oct;1.00;0.39;41;15.29;;13.04;12.75;12.10;23.49;SBc;;;;;;;;2MASX J20064966-7721270,ESO 046-005,PGC 064115,PGC 064117;;; -IC4913;G;19:56:47.64;-37:19:42.1;Sgr;1.57;1.07;127;13.98;;10.74;10.02;9.81;23.69;E-S0;;;;;;;;2MASX J19564762-3719422,ESO 399-005,ESO-LV 399-0050,MCG -06-43-013,PGC 063850;;; -IC4914;G;19:57:56.51;-50:07:53.4;Tel;0.46;0.37;91;15.87;;14.25;13.47;12.89;22.75;Sbc;;;;;;;;2MASX J19575654-5007537,ESO 233-011,ESO-LV 233-0110,PGC 063885;;; -IC4915;G;19:58:31.94;-52:38:32.0;Tel;1.37;0.88;97;14.85;;11.48;10.69;10.38;24.20;E-S0;;;;;;;;2MASX J19583194-5238323,ESO 185-038,ESO-LV 185-0380,PGC 063909;;; -IC4916;G;19:58:19.17;-50:16:19.6;Tel;1.05;0.94;175;14.40;;12.31;11.71;11.64;23.16;Sb;;;;;;;;2MASX J19581915-5016197,ESO 233-013,ESO-LV 233-0130,PGC 063902;;; -IC4917;G;19:58:54.77;-52:16:23.5;Tel;0.79;0.73;35;15.25;;11.88;11.14;11.04;23.45;S0;;;;;;;;2MASX J19585474-5216234,ESO 233-015,ESO-LV 233-0150,PGC 063923;;; -IC4918;G;19:59:13.19;-52:16:30.5;Tel;0.41;0.32;123;16.17;;14.24;13.35;12.48;23.04;;;;;;;;;2MASX J19591322-5216306,ESO 233-016,ESO-LV 233-0160,PGC 063929;;; -IC4919;G;20:00:09.05;-55:22:24.2;Tel;1.36;0.92;36;15.03;;;;;23.99;Sd;;;;;;;;ESO 185-043,ESO-LV 185-0430,PGC 063956;;; -IC4920;G;20:00:08.81;-53:23:01.6;Tel;0.64;0.34;34;16.63;;14.25;13.81;13.45;23.79;Sbc;;;;;;;;2MASX J20000878-5323014,ESO 185-044,ESO-LV 185-0440,PGC 063957;;; -IC4921;G;20:03:19.60;-67:49:36.7;Pav;0.80;0.42;136;15.33;;12.48;11.78;11.44;23.56;S0;;;;;;;;2MASX J20031959-6749368,ESO 073-020,ESO-LV 73-0200,IRAS 19583-6758,PGC 064037;;; -IC4922;Other;19:59:29.37;-40:21:47.1;Sgr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4923;G;20:00:57.37;-52:37:54.0;Tel;1.03;0.90;97;14.54;;11.24;10.52;10.26;23.30;S0;;;;;;;;2MASX J20005737-5237539,ESO 185-045,ESO-LV 185-0450,PGC 063984;;; -IC4924;Other;19:59:51.43;-41:32:45.8;Sgr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4925;G;20:01:09.87;-52:51:57.0;Tel;0.90;0.18;164;16.37;;12.89;12.17;11.83;23.61;Sbc;;;;;;;;2MASX J20010983-5251569,ESO 185-046,ESO-LV 185-0460,PGC 063991;;; -IC4926;G;20:00:12.15;-38:34:42.9;Sgr;1.29;1.00;54;13.88;;10.42;9.72;9.46;23.37;E;;;;;;;;2MASX J20001212-3834431,ESO 339-018,ESO-LV 339-0180,MCG -06-44-005,PGC 063961;;; -IC4927;G;20:01:49.48;-53:55:03.9;Tel;1.18;0.37;167;15.12;;12.32;11.57;11.34;23.45;Sb;;;;;;;;2MASX J20014948-5355038,ESO 185-048,ESO-LV 185-0480,PGC 064000;;; -IC4928;G;20:10:12.00;-77:18:32.3;Oct;0.90;0.27;33;15.97;;12.85;12.00;11.53;24.50;;;;;;;;;2MASX J20101200-7718324,ESO 046-006,IRAS 20034-7727,PGC 064198;;; -IC4929;G;20:06:41.70;-71:41:00.8;Pav;1.34;0.43;21;14.33;;11.59;10.89;10.63;22.94;Sb;;;;;;;;2MASX J20064169-7141007,ESO 073-022,ESO-LV 73-0220,IRAS 20011-7149,PGC 064108;;; -IC4930;Other;20:02:26.46;-54:18:30.9;Tel;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4931;G;20:00:50.36;-38:34:30.2;Sgr;2.28;1.43;135;12.82;;9.62;8.96;8.66;23.57;E;;;;;;;;2MASX J20005034-3834301,ESO 339-023,ESO-LV 339-0230,MCG -06-44-008,PGC 063976;;; -IC4932;G;20:02:15.48;-52:50:46.2;Tel;0.83;0.59;6;15.50;;12.12;11.42;11.08;23.58;Sa;;;;;;;;2MASX J20021550-5250463,ESO 185-049,ESO-LV 185-0490,PGC 064012;;; -IC4933;G;20:03:29.04;-54:58:47.8;Tel;2.08;1.28;9;13.29;12.24;10.66;9.98;9.70;22.91;SBbc;;;;;;;;2MASX J20032906-5458478,ESO 185-055,ESO-LV 185-0550,IRAS 19595-5507,PGC 064042;;; -IC4934;G;20:07:14.85;-69:28:45.1;Pav;1.55;0.26;27;14.94;;12.67;11.97;11.58;23.29;Sc;;;;;;;;2MASX J20071483-6928450,ESO 073-023,ESO-LV 73-0230,PGC 064133;;; -IC4935;G;20:04:34.12;-57:35:53.4;Pav;1.80;0.50;176;14.04;;10.58;10.08;9.75;23.54;SBa;;;;;;;;2MASX J20043412-5735534,ESO 143-003,ESO-LV 143-0030,PGC 064064;;; -IC4936;G;20:05:52.20;-61:25:42.7;Pav;1.35;0.70;12;14.57;;13.04;12.41;12.10;23.36;SBd;;;;;;;;2MASX J20055217-6125428,ESO 143-006,ESO-LV 143-0060,PGC 064088;;; -IC4937;G;20:05:17.58;-56:15:22.3;Tel;1.72;0.41;1;14.91;;11.15;10.42;10.12;23.91;Sb;;;;;;;;2MASX J20051756-5615223,ESO 185-060,ESO-LV 185-0600,IRAS 20012-5623,PGC 064074;;Star superposed.; -IC4938;G;20:06:11.70;-60:12:41.8;Pav;0.46;0.30;170;13.33;;10.77;10.16;9.92;20.22;SBab;;;;;;;;2MASX J20061173-6012416,ESO 143-007,ESO-LV 143-0070,PGC 064096;;; -IC4939;G;20:07:11.04;-60:44:19.7;Pav;0.74;0.44;148;15.08;;;;;22.76;Sc;;;;;;;;ESO 143-008,ESO-LV 143-0080,PGC 064131;;; -IC4940;Other;20:05:43.62;-44:41:59.8;Sgr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4941;G;20:06:58.61;-53:39:08.3;Tel;0.88;0.64;2;15.55;;13.92;12.70;13.28;23.70;SBd;;;;;;;;2MASX J20065863-5339084,ESO 185-066,ESO-LV 185-0660,PGC 064124;;; -IC4942;G;20:06:49.38;-52:36:35.7;Tel;0.65;0.35;147;16.27;;12.98;12.52;11.86;23.61;SBab;;;;;;;;2MASX J20064937-5236354,ESO 185-065,ESO-LV 185-0650,PGC 064114;;; -IC4943;G;20:06:28.26;-48:22:32.2;Tel;1.33;1.25;8;13.87;13.19;10.68;9.95;9.82;23.12;E;;;;;;;;2MASX J20062824-4822323,ESO 233-028,ESO-LV 233-0280,PGC 064102;;; -IC4944;G;20:07:08.84;-54:26:48.8;Tel;1.33;0.65;7;14.62;;11.32;10.57;10.32;23.92;S0-a;;;;;;;;2MASX J20070886-5426487,ESO 185-067,ESO-LV 185-0670,IRAS 20032-5435,PGC 064129;;; -IC4945;Dup;20:11:16.85;-71:00:46.6;Pav;;;;;;;;;;;;;;;6876A;;;;;; -IC4946;G;20:23:58.07;-43:59:43.0;Sgr;2.50;0.90;68;12.83;11.79;9.72;8.99;8.73;23.04;S0-a;;;;;;;;2MASX J20235805-4359432,ESO 285-007,ESO-LV 285-0070,IRAS 20205-4409,MCG -07-42-001,PGC 064614;;"The IC ID is not certain; ESO 284- ? 015 is for its nominal position."; -IC4947;G;20:07:31.75;-53:08:32.8;Tel;0.76;0.61;72;15.26;;11.70;10.92;10.72;23.32;E;;;;;;;;2MASX J20073177-5308329,ESO 185-069,ESO-LV 185-0690,PGC 064138;;; -IC4948;Dup;20:24:28.14;-43:39:12.7;Sgr;;;;;;;;;;;;;;;6902;;;;;; -IC4949;Dup;20:07:19.48;-48:22:12.8;Tel;;;;;;;;;;;;;;;6861;;;;;; -IC4950;G;20:08:27.36;-56:09:42.6;Tel;1.38;0.38;39;15.18;;12.11;11.74;11.14;23.60;SBbc;;;;;;;;2MASX J20082736-5609423,ESO 185-070,ESO-LV 185-0700,PGC 064159;;; -IC4951;G;20:09:31.77;-61:51:01.7;Pav;3.07;0.71;175;14.23;13.84;;;;23.93;SBd;;;;;;;;ESO 143-010,ESO-LV 143-0100,PGC 064181;;; -IC4952;G;20:08:37.65;-55:27:13.2;Tel;0.93;0.21;8;14.04;;10.96;10.20;9.96;22.43;S0-a;;;;;;;;2MASX J20083763-5527132,ESO 186-001,ESO-LV 186-0010,PGC 064163;;; -IC4953;G;20:09:59.92;-62:47:32.0;Pav;0.57;0.38;70;15.71;;13.13;12.52;12.34;22.91;Sbc;;;;;;;;2MASX J20095989-6247320,ESO 105-027,ESO-LV 105-0270,PGC 064193;;; -IC4954;HII;20:04:45.02;+29:15:10.1;Vul;3.00;1.00;;;;;;;;;;;;;;;;LBN 153;;Two Galactic stars embedded in nebulosity.; -IC4955;Neb;20:04:52.55;+29:11:33.4;Vul;2.09;1.55;80;12.98;;;;;;;;;;;;;;;;Several Galactic stars embedded in nebulosity.;Dimensions and B-Mag taken from LEDA -IC4956;G;20:11:31.26;-45:35:35.6;Tel;1.73;1.67;115;12.98;;9.87;9.12;8.84;23.43;E;;;;;;;;2MASX J20113123-4535357,ESO 284-023,ESO-LV 284-0230,IRAS 20079-4544,PGC 064230;;; -IC4957;G;20:09:35.63;-55:42:33.5;Tel;0.93;0.52;14;15.26;;12.13;11.53;11.06;23.47;SBab;;;;;;;;2MASX J20093561-5542333,ESO 186-003,ESO-LV 186-0030,IRAS 20056-5551,PGC 064183;;; -IC4958;G;20:15:35.34;-72:42:40.3;Pav;0.46;0.30;25;;;13.97;13.20;13.29;;Sc;;;;;;;;2MASX J20153537-7242402,ESO 046-007,PGC 064370;;; -IC4959;Other;20:10:57.22;-53:05:22.9;Tel;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4960;G;20:15:23.88;-70:32:15.9;Pav;1.26;0.39;166;14.53;;11.28;10.59;10.44;23.71;S0;;;;;;;;2MASX J20152387-7032159,ESO 073-028,ESO-LV 73-0280,PGC 064363;;; -IC4961;G;20:11:28.59;-53:07:30.4;Tel;1.64;0.46;91;15.07;;12.92;12.25;12.16;23.72;SABd;;;;;;;;2MASX J20112857-5307306,ESO 186-008,ESO-LV 186-0080,PGC 064229;;This may also be IC 4959.; -IC4962;G;20:16:42.49;-71:07:46.4;Pav;0.98;0.20;156;16.20;;;;;23.69;Sbc;;;;;;;;ESO 073-030,ESO-LV 73-0300,PGC 064402;;; -IC4963;G;20:12:05.49;-55:14:45.2;Tel;1.43;0.61;159;14.33;;10.90;10.26;9.95;23.49;SABa;;;;;;;;2MASX J20120552-5514452,ESO 186-010,ESO-LV 186-0100,IRAS 20081-5523,PGC 064255;;; -IC4964;G;20:17:23.93;-73:53:08.3;Pav;1.59;0.58;155;14.60;;12.96;12.07;11.63;23.30;Scd;;;;;;;;2MASX J20172390-7353083,ESO 046-008,PGC 064432;;; -IC4965;G;20:12:27.32;-56:49:36.4;Pav;1.23;0.85;143;14.42;;11.36;10.62;10.29;24.01;S0;;;;;;;;2MASX J20122726-5649363,ESO 186-011,ESO-LV 186-0110,PGC 064272;;; -IC4966;Other;20:12:16.42;-53:37:09.1;Tel;;;;;;;;;;;;;;;;;;;;Galactic triple star; -IC4967;G;20:16:23.15;-70:33:52.9;Pav;0.73;0.57;92;14.82;;11.82;11.20;10.83;23.00;E;;;;;;;;2MASX J20162313-7033530,ESO 073-029,ESO-LV 73-0290,PGC 064396;;; -IC4968;G;20:14:50.23;-64:47:54.2;Pav;0.76;0.61;37;15.01;;12.76;12.14;11.62;22.96;SBc;;;;;;;;2MASX J20145022-6447542,ESO 106-001,ESO-LV 106-0010,PGC 064345;;; -IC4969;G;20:12:56.30;-53:55:12.2;Tel;0.71;0.64;22;15.16;;;;;23.14;Sa;;;;;;;;2MASX J20125630-5355121,PGC 064288;;;B-Mag taken from LEDA. -IC4970;G;20:16:57.35;-70:44:59.1;Pav;1.66;0.44;12;14.16;13.88;;;;24.36;E-S0;;;;;;;;ESO 073-033,ESO-LV 73-0330,PGC 064415;;; -IC4971;G;20:17:02.86;-70:37:15.5;Pav;0.91;0.28;5;16.06;;13.16;12.29;12.46;23.67;Sbc;;;;;;;;2MASX J20170278-7037157,ESO 073-031,ESO-LV 73-0310,PGC 064417;;; -IC4972;G;20:17:42.72;-70:54:54.4;Pav;1.01;0.26;16;15.36;13.44;11.95;11.09;10.82;23.34;Sb;;;;;;;;2MASX J20174272-7054544,ESO 073-034,ESO-LV 73-0340,PGC 064436;;; -IC4973;G;20:14:34.13;-58:22:16.0;Pav;0.66;0.35;1;15.80;;13.61;12.72;12.84;23.28;Sbc;;;;;;;;2MASX J20143413-5822159,ESO 143-015,ESO-LV 143-0150,PGC 064337;;; -IC4974;GPair;20:15:26.50;-61:51:37.0;Pav;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC4974 NED01;G;20:15:26.13;-61:51:27.6;Pav;0.84;0.61;68;15.57;14.36;11.99;11.32;10.78;24.85;E;;;;;;;;2MASX J20152609-6151272,ESO 143-016,ESO-LV 143-0160,PGC 064366;;; -IC4974 NED02;G;20:15:26.95;-61:51:47.0;Pav;0.66;0.48;110;;;;;;;;;;;;;;;PGC 064361;;; -IC4975;G;20:14:03.02;-52:43:18.4;Tel;1.11;1.01;39;14.34;;11.35;10.49;10.19;23.34;S0;;;;;;;;2MASX J20140302-5243183,ESO 186-017,ESO-LV 186-0170,PGC 064325;;; -IC4976;G;20:15:41.06;-61:52:30.5;Pav;0.44;0.34;61;15.58;;12.41;11.68;11.22;22.50;Sa;;;;;;;;2MASX J20154106-6152304,ESO 143-017,ESO-LV 143-0170,PGC 064374;;; -IC4977;Other;20:11:53.20;-21:38:11.9;Cap;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4978;G;20:14:37.65;-54:25:19.1;Tel;0.74;0.30;91;15.43;;12.66;11.91;11.58;23.54;;;;;;;;;2MASX J20143763-5425190,ESO 186-018,ESO-LV 186-0180,PGC 064338;;; -IC4979;G;20:14:41.84;-53:27:31.3;Tel;1.08;0.90;13;14.96;;13.05;12.33;12.66;23.68;SABc;;;;;;;;2MASX J20144185-5327311,ESO 186-019,ESO-LV 186-0190,PGC 064342;;; -IC4980;G;20:15:28.93;-57:54:45.7;Pav;1.61;0.63;123;14.23;;10.96;10.20;9.95;23.66;S0-a;;;;;;;;2MASX J20152893-5754455,ESO 143-018,ESO-LV 143-0180,IRAS 20114-5803,PGC 064367;;; -IC4981;G;20:19:39.20;-70:50:54.7;Pav;1.07;0.35;136;15.05;;12.64;11.85;11.72;21.36;I;;;;;;;;2MASX J20193921-7050546,ESO 073-038,ESO-LV 73-0380,PGC 064486;;; -IC4982;G;20:20:20.84;-71:00:28.2;Pav;0.52;0.44;51;15.17;;13.85;13.31;13.13;22.57;;;;;;;;;2MASX J20202087-7100280,ESO 073-039,ESO-LV 73-0390,PGC 064498;;; -IC4983;G;20:16:05.95;-52:05:11.5;Tel;1.02;0.94;50;14.33;;11.99;11.31;10.85;23.00;SBc;;;;;;;;2MASX J20160592-5205114,ESO 233-048,ESO-LV 233-0480,IRAS 20123-5214,PGC 064382;;; -IC4984;G;20:16:17.45;-52:42:13.4;Tel;0.88;0.39;115;15.39;;12.33;11.55;11.40;23.25;Sb;;;;;;;;2MASX J20161744-5242135,ESO 186-023,ESO-LV 186-0230,PGC 064388;;; -IC4985;G;20:20:44.02;-70:59:13.2;Pav;0.85;0.56;66;14.90;;11.79;10.60;10.69;22.99;S?;;;;;;;;2MASX J20204401-7059130,ESO 073-040,ESO-LV 73-0400,PGC 064505;;; -IC4986;G;20:17:11.65;-55:02:11.0;Tel;2.23;0.86;15;14.16;;12.78;12.12;11.96;23.81;SABd;;;;;;;;2MASX J20171166-5502111,ESO 186-026,ESO-LV 186-0260,PGC 064423;;; -IC4987;G;20:17:19.38;-52:16:46.4;Tel;1.01;0.65;66;15.20;;12.51;11.73;11.59;23.54;SABc;;;;;;;;2MASX J20171935-5216464,ESO 233-052,ESO-LV 233-0520,PGC 064428;;; -IC4988;Other;20:21:46.25;-69:23:15.5;Pav;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC4989;G;20:19:23.69;-58:33:05.3;Pav;1.16;0.29;155;15.31;;12.10;11.33;10.93;23.39;Sb;;;;;;;;2MASX J20192373-5833052,ESO 143-019,ESO-LV 143-0190,PGC 064476;;; -IC4990;G;20:21:25.59;-66:53:27.1;Pav;0.77;0.36;19;15.74;;13.53;12.83;12.41;23.61;SBc;;;;;;;;2MASX J20212561-6653271,ESO 106-003,ESO-LV 106-0030,PGC 064520;;; -IC4991;G;20:18:23.28;-41:03:00.6;Sgr;2.91;2.13;129;12.33;;9.45;8.80;8.49;23.73;S0;;;;;;;;2MASX J20182327-4103006,ESO 340-011,ESO-LV 340-0110,MCG -07-41-024,PGC 064450;;; -IC4992;G;20:23:27.85;-71:33:53.7;Pav;1.71;0.26;55;14.49;;12.23;11.66;11.50;22.99;SBc;;;;;;;;2MASX J20232785-7133535,ESO 073-042,ESO-LV 73-0420,IRAS 20180-7143,PGC 064597;;Confused HIPASS source; -IC4993;G;20:21:56.36;-66:59:07.4;Pav;0.52;0.40;28;15.74;;13.46;12.69;12.76;22.78;Sm;;;;;;;;2MASX J20215637-6659072,ESO 106-004,ESO-LV 106-0040,PGC 064541;;; -IC4994;G;20:19:44.52;-53:26:50.5;Tel;1.36;1.06;96;13.92;;10.74;10.09;9.72;23.39;S0;;;;;;;;2MASX J20194454-5326502,ESO 186-033,ESO-LV 186-0330,PGC 064489;;; -IC4995;G;20:19:58.97;-52:37:19.1;Tel;1.19;0.81;158;14.32;14.06;11.16;10.45;10.20;23.45;S0;;;;;;;;2MASX J20195896-5237192,ESO 186-034,ESO-LV 186-0340,IRAS 20162-5246,PGC 064491;;; -IC4996;OCl;20:16:33.27;+37:33:19.0;Cyg;6.00;;;7.87;7.30;;;;;;;;;;;;;MWSC 3297;;; -IC4997;PN;20:20:08.80;+16:43:54.0;Del;0.03;;;11.60;10.50;10.45;10.41;9.67;;;;14.60;14.40;;;;HD 193538;IRAS 20178+1634,PK 58-10 1,PN G058.3-10.9,TYC 1631-1785-1;;; -IC4998;G;20:22:10.58;-38:18:30.0;Sgr;1.57;1.08;103;14.02;;11.35;10.81;10.42;23.39;SBc;;;;;;5018;;2MASX J20221058-3818300,ESO 340-020,ESO-LV 340-0200,IRAS 20188-3828,MCG -06-44-030,PGC 064546;;Neither IC identification is certain.; -IC4999;G;20:23:56.34;-26:00:53.8;Cap;2.03;1.00;92;13.51;;11.38;10.62;10.47;22.94;Sc;;;;;;;;2MASX J20235633-2600538,ESO 527-021,IRAS 20209-2610,MCG -04-48-004,PGC 064613;;Confused HIPASS source; -IC5000;Dup;20:22:21.51;+06:25:47.5;Aql;;;;;;;;;;;;;;;6901;;;;;; -IC5001;G;20:26:20.05;-54:46:29.0;Tel;0.97;0.39;28;15.24;;12.99;12.41;12.20;23.72;S0-a;;;;;;;;2MASX J20262000-5446288,ESO 186-042,ESO-LV 186-0420,PGC 064681;;; -IC5002;G;20:26:39.89;-54:47:58.9;Tel;1.35;0.72;93;14.22;;10.74;10.02;9.80;23.60;S0;;;;;;;;2MASX J20263988-5447588,ESO 186-044,ESO-LV 186-0440,PGC 064695;;; -IC5003;G;20:43:14.34;-29:51:12.2;Mic;2.36;0.66;162;13.45;12.60;10.81;10.14;9.91;22.89;Sbc;;;;;;5029,5039,5046;;2MASX J20431434-2951122,ESO 463-020,ESO-LV 463-0200,IRAS 20401-3002,MCG -05-49-001,PGC 065249;;; -IC5004;Dup;20:31:39.07;-30:49:54.8;Mic;;;;;;;;;;;;;;;6923;;;;;; -IC5005;G;20:25:20.21;-25:49:45.4;Cap;1.36;0.99;62;13.58;;11.28;10.47;10.41;22.76;SBc;;;;;;;;2MASX J20252020-2549454,ESO 528-004,ESO-LV 528-0040,IRAS 20223-2559,MCG -04-48-007,PGC 064657;;Confused HIPASS source; -IC5006;**;20:23:46.92;+06:26:57.0;Del;;;;;;;;;;;;;;;;;;;;; -IC5007;G;20:43:34.45;-29:42:13.1;Mic;2.31;1.45;30;13.11;;10.99;10.38;10.12;23.23;Scd;;;;;;5030,5041,5047;;2MASX J20433447-2942131,ESO 463-021,ESO-LV 463-0210,IRAS 20405-2953,MCG -05-49-002,PGC 065258;;; -IC5008;G;20:32:45.03;-72:41:41.0;Pav;1.19;0.33;77;15.55;;;;;23.57;SBd;;;;;;;;ESO 047-001,ESO-LV 47-0010,PGC 064929;;; -IC5009;G;20:32:34.35;-72:10:03.2;Pav;1.05;0.66;96;14.39;;11.52;10.80;10.53;23.20;S0-a;;;;;;;;2MASX J20323434-7210030,ESO 074-001,ESO-LV 74-0010,PGC 064923;;; -IC5010;G;20:30:26.68;-66:05:50.5;Pav;0.78;0.34;178;15.88;;12.65;11.92;11.53;23.36;Sc;;;;;;;;2MASX J20302670-6605502,ESO 106-006,ESO-LV 106-0060,PGC 064836;;; -IC5011;G;20:28:33.82;-36:01:37.6;Mic;3.01;1.32;18;12.67;;9.51;8.86;8.61;23.76;S0;;;;;;5013;;2MASX J20283383-3601376,ESO 400-029,ESO-LV 400-0290,MCG -06-45-003,PGC 064772;;; -IC5012;G;20:29:31.98;-56:44:35.2;Ind;1.06;0.52;78;15.28;;13.19;12.50;12.41;23.51;SBc;;;;;;;;2MASX J20293194-5644354,ESO 186-053,ESO-LV 186-0530,PGC 064802;;; -IC5013;Dup;20:28:33.82;-36:01:37.6;Mic;;;;;;;;;;;;;;;;5011;;;;; -IC5014;G;20:35:15.72;-73:27:09.4;Pav;0.77;0.66;102;14.36;;12.07;11.51;11.24;22.55;;;;;;;;;2MASX J20351571-7327096,ESO 047-002,ESO-LV 47-0020,IRAS 20296-7337,PGC 065015;;; -IC5015;Dup;20:34:20.57;-31:58:51.2;Mic;;;;;;;;;;;;;;;6925;;;;;; -IC5016;G;20:35:36.92;-72:54:40.1;Pav;0.63;0.48;94;15.84;;13.40;12.79;12.69;23.40;SBab;;;;;;;;2MASX J20353694-7254400,ESO 047-003,ESO-LV 47-0030,PGC 065025;;; -IC5017;G;20:32:03.83;-57:35:15.7;Ind;0.97;0.47;175;15.15;;11.73;10.89;10.80;23.56;S0;;;;;;;;2MASX J20320390-5735152,ESO 143-029,ESO-LV 143-0290,PGC 064902;;; -IC5018;Dup;20:22:10.58;-38:18:30.0;Sgr;;;;;;;;;;;;;;;;4998;;;;; -IC5019;G;20:30:47.09;-36:04:37.0;Mic;1.54;0.32;85;15.47;;12.52;11.98;11.60;24.00;SABb;;;;;;;;2MASX J20304709-3604369,ESO 400-035,ESO-LV 400-0350,PGC 064850;;; -IC5020;G;20:30:38.49;-33:29:08.0;Mic;2.33;1.75;148;12.95;12.72;10.26;9.56;9.28;23.38;Sb;;;;;;;;2MASX J20303849-3329079,ESO 400-034,ESO-LV 400-0340,IRAS 20274-3339,MCG -06-45-006,PGC 064845;;; -IC5021;G;20:33:34.04;-54:31:14.8;Ind;0.76;0.67;21;15.02;;13.68;12.84;12.93;23.08;S?;;;;;;;;2MASX J20333397-5431148,ESO 186-061,ESO-LV 186-0610,PGC 064960;;; -IC5022;G;20:41:06.14;-76:27:00.5;Oct;0.78;0.53;142;15.49;;12.41;11.65;11.51;23.36;SABc;;;;;;;;2MASX J20410618-7627005,ESO 047-005,ESO-LV 47-0050,PGC 065186;;; -IC5023;G;20:38:10.72;-67:11:04.7;Pav;1.43;0.49;118;14.24;;11.26;10.64;10.30;23.19;Sa;;;;;;;;2MASX J20381072-6711047,IRAS 20335-6721,PGC 065109;;; -IC5024;G;20:40:09.54;-71:06:27.7;Pav;0.98;0.71;17;14.88;;13.55;12.45;12.45;23.61;;;;;;;;;2MASX J20400957-7106277,ESO 074-003,ESO-LV 74-0030,PGC 065160;;; -IC5025;G;20:44:59.08;-76:59:04.9;Oct;1.65;0.25;110;15.42;;12.29;11.32;11.02;23.87;Sbc;;;;;;;;2MASX J20445908-7659048,ESO 047-010,ESO-LV 47-0100,IRAS 20389-7709,PGC 065304;;; -IC5026;G;20:48:28.05;-78:04:09.3;Oct;2.40;0.28;75;15.48;;12.68;12.40;12.00;24.27;Scd;;;;;;;;2MASX J20482798-7804089,ESO 026-006,ESO-LV 26-0060,PGC 065426;;; -IC5027;G;20:41:08.93;-55:28:19.6;Ind;0.51;0.46;55;15.26;;12.74;12.04;11.72;22.45;Sbc;;;;;;;;2MASX J20410891-5528197,ESO 186-074,ESO-LV 186-0740,PGC 065188;;; -IC5028;G;20:43:22.03;-65:38:52.1;Pav;1.32;0.77;170;15.24;;;;;24.09;I;;;;;;;;ESO 106-010,ESO-LV 106-0100,PGC 065250;;; -IC5029;Dup;20:43:14.34;-29:51:12.2;Mic;;;;;;;;;;;;;;;;5003;;;;; -IC5030;Dup;20:43:34.45;-29:42:13.1;Mic;;;;;;;;;;;;;;;;5007;;;;; -IC5031;G;20:45:20.27;-67:32:21.6;Pav;0.59;0.35;40;13.62;;13.14;12.42;12.38;;;;;;;;;;2MASX J20452030-6732218,ESO-LV 74-0081,PGC 065314;;; -IC5032;G;20:45:22.03;-67:33:06.8;Pav;1.30;0.37;144;14.68;;11.88;11.30;10.97;22.57;S0-a;;;;;;;;2MASX J20452203-6733068,ESO-LV 74-0080,PGC 065317;;; -IC5033;G;20:43:55.09;-57:20:03.4;Ind;0.95;0.54;45;15.52;;13.35;12.60;12.60;23.55;Sc;;;;;;;;2MASX J20435509-5720034,ESO 144-001,PGC 065272;;; -IC5034;G;20:43:41.67;-57:01:49.1;Ind;1.43;0.59;25;14.67;;11.56;10.85;10.54;23.49;Sbc;;;;;;;;2MASX J20434168-5701493,ESO 187-010,ESO-LV 187-0100,PGC 065261;;; -IC5035;G;20:44:14.45;-57:07:39.1;Ind;0.63;0.41;122;15.89;;13.22;12.60;12.25;23.26;Sc;;;;;;;;2MASX J20441444-5707392,ESO 187-011,ESO-LV 187-0110,PGC 065285;;; -IC5036;G;20:44:37.78;-57:37:36.4;Ind;0.99;0.30;119;16.04;;;;;23.77;Sc;;;;;;;;ESO 144-002,PGC 065296;;; -IC5037;G;20:45:39.25;-58:26:59.2;Ind;1.32;0.21;158;15.88;;12.37;11.56;11.24;23.74;Sc;;;;;;;;2MASX J20453927-5826591,ESO 144-003,PGC 065327;;; -IC5038;G;20:46:51.65;-65:01:00.5;Pav;1.51;0.69;73;14.22;;11.01;10.31;10.26;23.15;SBc;;;;;;;;2MASX J20465167-6501004,ESO 106-012,ESO-LV 106-0120,IRAS 20424-6512,PGC 065365;;; -IC5039;Dup;20:43:14.34;-29:51:12.2;Mic;;;;;;;;;;;;;;;;5003;;;;; -IC5040;G;20:52:19.61;-76:41:11.6;Oct;0.80;0.60;9;15.17;;13.06;11.81;11.62;23.11;Sd;;;;;;;;2MASX J20521963-7641115,ESO 047-014,ESO-LV 47-0140,PGC 065615;;; -IC5041;Dup;20:43:34.45;-29:42:13.1;Mic;;;;;;;;;;;;;;;;5007;;;;; -IC5042;G;20:47:46.02;-65:05:03.5;Pav;1.10;0.75;43;14.06;;11.29;10.69;10.36;22.73;Sc;;;;;;;;2MASX J20474601-6505034,ESO 106-013,ESO-LV 106-0130,IRAS 20434-6515,PGC 065394;;; -IC5043;G;20:46:38.26;-56:59:01.2;Ind;0.78;0.24;20;16.43;;14.05;13.44;12.78;23.62;Sc;;;;;;;;2MASX J20463825-5659012,ESO 187-014,ESO-LV 187-0140,PGC 065355;;; -IC5044;G;20:50:41.54;-71:53:57.9;Pav;0.64;0.44;99;15.51;;;;;23.31;;;;;;;;;2MASX J20504159-7153582,PGC 065515;;;B-Mag taken from LEDA. -IC5045;G;20:50:50.11;-71:54:35.2;Pav;0.81;0.36;71;15.25;;12.60;12.02;11.65;22.98;Sb;;;;;;;;2MASX J20505018-7154352,ESO 074-011,ESO-LV 74-0110,PGC 065525;;; -IC5046;Dup;20:43:14.34;-29:51:12.2;Mic;;;;;;;;;;;;;;;;5003;;;;; -IC5047;Dup;20:43:34.45;-29:42:13.1;Mic;;;;;;;;;;;;;;;;5007;;;;; -IC5048;G;20:51:40.64;-71:48:02.8;Pav;0.58;0.52;70;15.76;;12.99;12.64;12.14;23.31;SBbc;;;;;;;;2MASX J20514064-7148026,ESO 074-012,ESO-LV 74-0120,PGC 065570;;; -IC5049;GPair;20:47:23.44;-38:24:56.5;Mic;1.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC5049A;G;20:47:23.22;-38:24:47.4;Mic;1.10;0.84;149;15.15;;;;;24.21;E;;;;;;;;MCG -06-45-014,PGC 065377;;;B-Mag taken from LEDA. -IC5049B;G;20:47:23.83;-38:25:05.8;Mic;1.78;1.18;138;14.56;13.60;10.46;9.79;9.33;24.52;E;;;;;;;;2MASX J20472382-3825056,ESO-LV 341-0141,MCG -06-45-015,PGC 065378;;; -IC5050;G;20:45:15.05;-05:37:22.0;Aqr;1.33;0.80;83;14.21;;12.07;11.49;11.09;23.66;Sb;;;;;;;;2MASX J20451508-0537215,IRAS 20426-0548,MCG -01-53-005,PGC 065310,SDSS J204515.04-053721.8,SDSS J204515.04-053721.9,SDSS J204515.05-053721.9;;; -IC5051;G;20:52:22.65;-71:47:23.6;Pav;0.68;0.44;59;15.56;;13.55;12.90;11.81;23.09;Sc;;;;;;;;2MASX J20522267-7147233,ESO 074-014,ESO-LV 74-0140,IRAS 20473-7158,PGC 065618;;; -IC5052;G;20:52:05.57;-69:12:05.9;Pav;7.16;1.33;140;12.20;11.66;9.76;9.10;8.88;23.25;SBcd;;;;;;;;2MASX J20520163-6911359,ESO 074-015,ESO-LV 74-0150,IRAS 20473-6923,PGC 065603;;The 2MASX position is for the eccentric bulge.; -IC5053;G;20:53:36.21;-71:08:28.4;Pav;2.09;0.68;57;14.06;;11.02;10.19;9.91;23.87;Sa;;;;;;;;2MASX J20533616-7108280,ESO 074-018,ESO-LV 74-0180,IRAS 20485-7119,PGC 065662;;; -IC5054;G;20:53:45.42;-71:01:29.1;Pav;2.23;0.43;6;14.00;;11.11;10.53;10.14;23.83;SBa;;;;;;;;2MASX J20534539-7101291,ESO 074-019,ESO-LV 74-0190,IRAS 20489-7112,PGC 065665;;; -IC5055;G;20:52:57.17;-68:26:44.4;Pav;0.83;0.44;28;15.14;;13.11;12.36;12.29;23.46;;;;;;;;;2MASX J20525716-6826445,ESO 074-017,ESO-LV 74-0170,PGC 065643;;; -IC5056;Other;20:48:59.50;-39:10:51.3;Mic;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5057;*;20:47:13.50;+00:19:19.6;Aqr;;;;;;;;;;;;;;;;;;;;; -IC5058;Dup;20:47:20.37;+00:29:02.6;Aqr;;;;;;;;;;;;;;;6965;;;;;; -IC5059;G;20:51:13.48;-57:41:19.2;Ind;0.90;0.62;13;15.27;;13.55;12.77;12.74;23.41;Sab;;;;;;;;2MASX J20511346-5741188,ESO 144-006,PGC 065539;;; -IC5060;G;20:54:46.66;-71:38:11.3;Pav;0.87;0.18;79;15.49;;;;;22.74;Sc;;;;;;;;ESO 074-021,ESO-LV 74-0210,PGC 065695;;; -IC5061;Other;20:47:37.15;+00:20:08.4;Aqr;;;;;;;;;;;;;;;;;;;;Galactic triple star; -IC5062;**;20:48:10.20;-08:21:35.1;Aqr;;;;;;;;;;;;;;;;;;;;; -IC5063;G;20:52:02.34;-57:04:07.6;Ind;2.69;1.91;120;12.92;13.60;9.71;9.02;8.75;23.82;S0-a;;;;;;;;2MASX J20520232-5704076,ESO 187-023,ESO-LV 187-0230,IRAS 20481-5715,PGC 065600;;; -IC5064;G;20:52:38.28;-57:13:56.8;Ind;1.27;0.73;54;14.31;;11.17;10.45;10.13;23.31;SBa;;;;;;;;2MASX J20523826-5713568,ESO 187-028,ESO-LV 187-0280,IRAS 20487-5725,PGC 065634;;; -IC5065;G;20:51:45.80;-29:50:50.2;Mic;1.50;0.92;149;14.44;;11.34;10.70;10.38;24.13;S0;;;;;;;;2MASX J20514579-2950502,ESO 463-030,ESO-LV 463-0300,MCG -05-49-004,PGC 065580;;; -IC5066;G;20:57:03.02;-73:08:50.1;Pav;0.68;0.32;30;15.14;;12.70;12.20;11.59;22.71;Sab;;;;;;;;2MASX J20570303-7308501,ESO 047-018,ESO-LV 47-0180,IRAS 20519-7320,PGC 065768;;; -IC5067;Other;20:47:50.18;+44:22:01.1;Cyg;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5068;HII;20:50:29.76;+42:28:39.7;Cyg;40.00;30.00;;;;;;;;;;;;;;;;LBN 328;;; -IC5069;G;21:00:12.85;-71:48:42.1;Pav;1.15;0.95;36;14.16;;;;;23.07;SBb;;;;;;;;ESO 074-022,ESO-LV 74-0220,PGC 065870;;; -IC5070;HII;20:51:00.72;+44:24:05.4;Cyg;60.00;50.00;;8.00;;;;;;;;;;;;;;LBN 350;Pelican Nebula;Part of the Pelican Nebula.;B-Mag taken from LEDA. -IC5071;G;21:01:19.74;-72:38:33.8;Pav;3.17;0.56;17;13.28;;10.44;9.75;9.51;23.19;Sc;;;;;;;;2MASX J21011970-7238338,ESO 047-019,ESO-LV 47-0190,IRAS 20562-7250,PGC 065915;;; -IC5072;G;21:01:56.82;-72:59:18.5;Pav;0.81;0.37;107;15.57;;13.41;12.93;12.52;23.84;;;;;;;;;2MASX J21015682-7259184,ESO 047-020,ESO-LV 47-0200,PGC 065938;;; -IC5073;G;21:03:19.86;-72:41:16.4;Pav;1.18;0.91;50;14.87;;12.71;11.75;11.24;23.76;SBc;;;;;;;;2MASX J21031988-7241163,ESO 047-021,ESO-LV 47-0210,PGC 065992;;; -IC5074;G;21:01:00.46;-63:09:09.6;Pav;0.65;0.46;168;14.62;;12.86;12.35;12.01;22.72;Sc;;;;;;;;2MASX J21010043-6309096,ESO 107-001,ESO-LV 107-0010,IRAS 20569-6320,PGC 065902;;; -IC5075;G;21:04:38.10;-71:52:04.3;Pav;1.09;0.45;148;14.56;;11.73;10.94;10.60;22.96;Sab;;;;;;;;2MASX J21043789-7152042,ESO 074-023,ESO-LV 74-0230,PGC 066040;;; -IC5076;RfN;20:55:33.42;+47:23:44.0;Cyg;7.00;7.00;;;;;;;;;;;;;;;;LBN 394;;; -IC5077;G;21:08:53.96;-73:38:26.9;Pav;0.67;0.52;94;15.73;;13.79;12.93;12.93;23.39;Sbc;;;;;;;;2MASX J21085395-7338266,ESO 047-023,ESO-LV 47-0230,PGC 066197;;; -IC5078;G;21:02:31.27;-16:49:05.9;Cap;3.24;0.56;86;12.80;;10.42;9.88;9.64;23.44;Sc;;;;;;;;2MASX J21023127-1649058,IRAS 20597-1701,MCG -03-53-021,PGC 065960,UGCA 419;;; -IC5079;*;21:05:44.01;-56:13:48.9;Ind;;;;;;;;;;;;;;;;;;;;The IC identification is not certain.; -IC5080;G;21:02:33.07;+19:12:49.0;Del;0.49;0.39;45;15.60;;11.68;11.03;10.72;;E;;;;;;;;2MASX J21023303+1912488,PGC 065956;;; -IC5081;Other;21:03:01.23;+19:11:21.3;Del;;;;;;;;;;;;;;;;;;2MASX J21030124+1911213;;;NED lists this object as type G, but there's nothing at these coords in LEDA. -IC5082;Dup;21:04:39.50;-12:20:18.2;Aqr;;;;;;;;;;;;;;;7010;;;;;; -IC5083;G;21:03:51.50;+11:45:49.1;Equ;0.80;0.60;30;15.50;;11.63;11.00;10.80;;S0;;;;;;;;2MASX J21035147+1145494,PGC 066011;;; -IC5084;G;21:09:14.87;-63:17:24.1;Pav;1.67;1.07;137;13.53;;10.34;9.56;9.25;23.11;SBb;;;;;;;;2MASX J21091486-6317239,ESO 107-007,ESO-LV 107-0070,IRAS 21051-6329,PGC 066208;;; -IC5085;G;21:13:27.57;-74:06:11.0;Pav;0.72;0.52;31;15.28;;12.83;12.32;12.14;23.08;Sab;;;;;;;;2MASX J21132755-7406110,ESO 047-025,ESO-LV 47-0250,PGC 066370;;; -IC5086;G;21:08:32.01;-29:46:08.6;Mic;1.75;1.57;41;13.66;;10.41;9.67;9.44;23.75;E-S0;;;;;;;;2MASX J21083199-2946083,ESO 464-025,ESO-LV 464-0250,MCG -05-50-002,PGC 066179;;Identification as IC 5086 = ESO 464- ? 024 is not certain.; -IC5087;G;21:14:21.45;-73:46:25.8;Pav;1.46;0.38;95;15.17;;12.11;11.27;10.84;23.73;SBb;;;;;;;;2MASX J21142137-7346262,IRAS 21092-7358,PGC 066391;;; -IC5088;G;21:09:26.76;-22:52:42.9;Cap;1.37;1.06;96;14.38;;10.90;10.17;9.87;23.84;S0-a;;;;;;;;2MASX J21092677-2252423,ESO 530-010,ESO-LV 530-0100,MCG -04-50-001,PGC 066219;;; -IC5089;G;21:10:54.53;-03:51:46.0;Aqr;0.60;0.27;28;16.22;;12.61;11.97;11.61;23.23;Sab;;;;;;;;2MASX J21105454-0351458,LEDA 1065928;;; -IC5090;G;21:11:30.48;-02:01:57.2;Aqr;0.83;0.27;17;14.50;;11.16;10.46;10.14;23.02;Sa;;;;;;;;2MASX J21113046-0201572,IRAS 21089-0214,MCG +00-54-003,PGC 066299,SDSS J211130.50-020156.9,UGC 11691;;; -IC5091;G;21:17:37.02;-70:39:10.6;Pav;0.56;0.49;158;15.93;;14.19;13.62;13.23;23.23;Sc;;;;;;;;2MASX J21173700-7039106,ESO 074-027,ESO-LV 74-0270,PGC 066505;;; -IC5092;G;21:16:14.50;-64:27:52.8;Pav;2.75;2.43;33;12.78;;10.33;9.65;9.41;23.82;SBc;;;;;;;;2MASX J21161448-6427529,ESO 107-017,ESO-LV 107-0170,IRAS 21121-6440,PGC 066452;;; -IC5093;G;21:18:46.38;-70:37:20.6;Pav;0.79;0.34;125;16.00;;13.41;12.60;12.47;23.46;Sc;;;;;;;;2MASX J21184639-7037207,ESO 075-001,ESO-LV 75-0010,PGC 066543;;; -IC5094;G;21:17:49.50;-66:25:39.6;Pav;1.17;0.50;154;14.54;;11.78;11.10;10.88;22.93;SBc;;;;;;;;2MASX J21174948-6625397,ESO 107-018,ESO-LV 107-0180,PGC 066515;;; -IC5095;G;21:17:22.24;-59:56:51.2;Pav;0.92;0.39;72;15.41;;13.01;12.04;11.92;23.18;Sc;;;;;;;;2MASX J21172225-5956511,ESO 145-002,ESO-LV 145-0020,PGC 066498;;; -IC5096;G;21:18:21.54;-63:45:38.4;Pav;3.52;0.66;149;13.32;;9.65;8.78;8.51;23.71;Sbc;;;;;;;;2MASX J21182151-6345384,ESO 107-019,ESO-LV 107-0190,IRAS 21143-6358,PGC 066530;;; -IC5097;Other;21:14:58.08;+04:29:02.8;Equ;;;;;;;;;;;;;;;;;;;;Four Galactic stars. The IC identification is not certain.; -IC5098;Other;21:15:01.38;+04:29:37.0;Equ;;;;;;;;;;;;;;;;;;;;Two Galactic stars. The IC identification is not certain.; -IC5099;G;21:21:49.05;-70:59:00.1;Pav;0.72;0.28;6;15.42;;12.27;11.52;11.24;22.70;Sc;;;;;;;;2MASX J21214902-7059000,ESO 075-003,ESO-LV 75-0030,IRAS 21172-7111,PGC 066633;;; -IC5100;G;21:21:43.46;-65:56:00.1;Pav;1.15;0.20;114;14.61;;12.48;11.78;11.48;22.50;SBc;;;;;;;;2MASX J21214343-6556001,ESO 107-024,ESO-LV 107-0240,IRAS 21175-6608,PGC 066628;;; -IC5101;G;21:21:55.77;-65:50:09.8;Pav;1.10;0.89;2;14.04;;11.38;10.74;10.58;22.72;SBc;;;;;;;;2MASX J21215574-6550096,ESO 107-025,ESO-LV 107-0250,IRAS 21177-6602,PGC 066636;;The APM position is north of the nucleus.; -IC5102;G;21:26:13.46;-73:18:36.3;Pav;1.07;0.54;113;14.79;;11.57;10.94;10.60;23.75;S0;;;;;;;;2MASX J21261348-7318359,ESO 047-030,ESO-LV 47-0300,PGC 066751;;; -IC5103;G;21:29:12.55;-74:04:12.6;Pav;1.07;0.80;57;15.04;;12.38;11.71;11.58;23.67;SBc;;;;;;;;2MASX J21291250-7404126,ESO 047-031,ESO-LV 47-0310,PGC 066841;;; -IC5104;G;21:21:29.25;+21:14:31.1;Peg;1.48;0.43;172;14.81;13.82;11.53;10.84;10.50;23.30;Sab;;;;;;;;2MASX J21212925+2114309,IRAS 21191+2101,MCG +03-54-007,PGC 066622,UGC 11731;;; -IC5105;G;21:24:22.01;-40:32:15.8;Mic;2.98;1.64;44;12.43;11.54;9.44;8.72;8.45;23.78;E;;;;;;;;2MASX J21242200-4032159,ESO 342-039,ESO-LV 342-0390,MCG -07-44-001,PGC 066694;;; -IC5106;G;21:28:38.13;-70:50:04.5;Pav;1.51;1.17;145;13.77;;10.83;10.19;9.94;23.44;E-S0;;;;;;;;2MASX J21283805-7050044,ESO 075-009,ESO-LV 75-0090,PGC 066824;;; -IC5107;G;21:28:14.89;-65:44:07.9;Pav;1.02;0.38;4;15.17;;12.88;12.40;11.96;23.16;Sc;;;;;;;;2MASX J21281487-6544077,ESO 107-029,ESO-LV 107-0290,PGC 066813;;; -IC5108;G;21:32:51.50;-72:39:34.9;Ind;1.08;0.39;104;15.12;;12.78;12.17;11.71;23.17;SBc;;;;;;;;2MASX J21325148-7239347,ESO 048-025,ESO-LV 48-0250,PGC 066944;;; -IC5109;G;21:33:42.71;-74:06:43.2;Ind;0.92;0.69;168;14.66;;11.55;10.94;10.59;23.39;E;;;;;;;;2MASX J21334269-7406433,ESO 048-001,ESO-LV 48-0010,PGC 066963;;; -IC5110;G;21:30:43.39;-60:00:06.6;Ind;1.37;1.00;52;14.26;12.83;11.56;10.82;10.63;23.22;Sc;;;;;;;;2MASX J21304338-6000064,ESO 145-007,ESO-LV 145-0070,PGC 066878;;; -IC5111;G;21:28:10.76;+02:28:25.5;Peg;0.78;0.66;2;15.10;;12.17;11.46;11.18;23.17;Sbc;;;;;;;;2MASX J21281086+0228274,MCG +00-54-021,PGC 066811;;; -IC5113;**;21:29:39.49;+06:49:04.8;Peg;;;;;;;;;;;;;;;;;;;;The IC identification is uncertain.; -IC5114;Dup;21:34:07.94;-36:39:13.4;Gru;;;;;;;;;;;;;;;7091;;;;;; -IC5115;G;21:30:57.29;+11:45:48.6;Peg;0.71;0.42;109;15.70;;13.92;12.78;12.30;23.48;Sbc;;;;;;;;2MASX J21305728+1145489,PGC 066882,SDSS J213057.28+114548.5,SDSS J213057.28+114548.6,SDSS J213057.29+114548.6;;; -IC5116;G;21:37:05.50;-70:58:57.2;Ind;1.48;1.26;34;13.89;;12.12;11.42;11.19;23.34;SBbc;;;;;;;;2MASX J21370550-7058572,ESO 075-018,ESO-LV 75-0180,PGC 067055;;; -IC5117;PN;21:32:30.97;+44:35:47.6;Cyg;0.02;;;13.30;11.50;11.30;10.72;9.49;;;;17.50;16.70;;;;HD 205211;IRAS 21306+4422,PK 89-05 1,PN G089.8-05.1;;; -IC5118;G;21:42:13.80;-71:22:57.7;Ind;1.22;0.31;45;15.48;;12.38;11.64;11.49;23.49;Sc;;;;;;;;2MASX J21421380-7122578,ESO 075-020,ESO-LV 75-0200,PGC 067202;;; -IC5119;G;21:33:55.85;+21:50:16.5;Peg;0.82;0.23;153;15.30;;11.46;10.74;10.41;23.02;Sa;;;;;;;;2MASX J21335584+2150164,IRAS 21316+2136,PGC 066969,UGC 11766;;; -IC5120;Dup;21:38:48.27;-64:21:00.7;Ind;;;;;;;;;;;;;;;7096A;;;;;; -IC5121;Dup;21:41:19.28;-63:54:31.3;Ind;;;;;;;;;;;;;;;7096;;;;;; -IC5122;G;21:39:45.87;-22:24:23.5;Cap;0.65;0.38;55;16.03;;12.41;11.75;11.59;24.08;S0-a;;;;;;;;2MASX J21394588-2224231,ESO 531-014,MCG -04-51-006,PGC 067123;;; -IC5123;G;21:44:49.35;-72:25:14.7;Ind;1.48;0.57;17;14.49;;11.62;10.98;10.60;23.34;SABb;;;;;;;;2MASX J21444934-7225148,ESO 048-006,ESO-LV 48-0060,PGC 067283;;; -IC5124;G;21:39:55.19;-22:25:37.0;Cap;0.51;0.23;134;16.54;;13.16;12.48;12.15;23.83;S0-a;;;;;;;;2MASX J21395519-2225371,ESO 531-016,PGC 067127;;; -IC5125;G;21:41:50.18;-52:46:25.0;Ind;0.78;0.71;105;14.07;;12.12;11.56;11.34;22.20;Sbc;;;;;;;;2MASX J21415020-5246248,ESO 188-016,ESO-LV 188-0160,IRAS 21384-5300,PGC 067187;;; -IC5126;G;21:40:28.57;-06:20:44.7;Aqr;0.37;0.32;10;15.69;;12.65;12.45;12.49;;;;;;;;;;2MASX J21402857-0620448;;; -IC5127;Dup;21:39:44.49;+06:17:10.7;Peg;;;;;;;;;;;;;;;7102;;;;;; -IC5128;G;21:43:11.77;-38:58:05.8;Gru;0.96;0.64;128;14.06;;11.18;10.42;10.21;22.93;S0-a;;;;;;;;2MASX J21431177-3858059,ESO 343-022,ESO-LV 343-0220,IRAS 21401-3911,MCG -07-44-035,PGC 067232;;; -IC5129;G;21:47:46.58;-65:23:16.1;Ind;0.55;0.45;16;15.27;;12.62;11.89;11.41;22.70;Sc;;;;;;;;2MASX J21474655-6523160,ESO 108-003,ESO-LV 108-0030,PGC 067363;;; -IC5130;G;21:50:24.27;-73:59:50.7;Ind;1.63;0.55;108;14.53;;11.56;10.86;10.49;23.45;Sbc;;;;;;;;2MASX J21502428-7359506,ESO 048-008,ESO-LV 48-0080,IRAS 21456-7413,PGC 067445;;; -IC5131;G;21:47:25.31;-34:53:01.2;PsA;1.62;1.53;36;13.32;12.36;10.27;9.59;9.34;23.07;E-S0;;;;;;;;2MASX J21472531-3453011,ESO 403-027,ESO-LV 403-0270,MCG -06-47-014,PGC 067352;;; -IC5132;Neb;21:42:40.21;+66:10:06.4;Cep;;;;;;;;;;;;;;;;;;;;Includes a Galactic star.; -IC5133;Neb;21:42:47.14;+66:10:52.1;Cep;;;;;;;;;;;;;;;;;;;;Includes a Galactic star.; -IC5134;Neb;21:42:58.68;+66:06:10.2;Cep;7.59;;;;;;;;;;;;;;;;;;;This is part of the Galactic diffuse nebula NGC 7129. Includes a star.;Dimensions taken from LEDA -IC5135;Dup;21:48:19.52;-34:57:04.5;PsA;;;;;;;;;;;;;;;7130;;;;;; -IC5136;Dup;21:49:46.01;-34:52:34.6;PsA;;;;;;;;;;;;;;;7135;;;;;; -IC5137;Other;21:51:37.46;-65:35:01.2;Ind;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5138;G;21:53:21.69;-68:57:13.1;Ind;1.23;0.75;125;14.04;;12.57;11.71;11.56;22.88;SBb;;;;;;;;2MASX J21532167-6857131,ESO 075-034,ESO-LV 75-0340,PGC 067585;;; -IC5139;G;21:50:25.66;-30:59:41.0;PsA;2.19;1.04;32;13.34;;10.22;9.50;9.22;23.82;E-S0;;;;;;;;2MASX J21502565-3059410,ESO 466-011,ESO-LV 466-0110,IRAS 21474-3113,MCG -05-51-017,PGC 067447;;; -IC5140;G;21:54:16.03;-67:19:53.0;Ind;2.19;0.33;137;15.20;;12.47;11.86;11.62;24.02;SBcd;;;;;;;;2MASX J21541598-6719532,ESO 075-037,ESO-LV 75-0370,PGC 067609,PGC 067613;;; -IC5141;G;21:53:17.04;-59:29:36.8;Ind;1.50;1.18;25;13.49;;10.85;10.21;9.98;22.91;Sbc;;;;;;;;2MASX J21531701-5929367,ESO 145-022,ESO-LV 145-0220,IRAS 21496-5943,PGC 067580;;; -IC5142;G;21:55:20.49;-65:30:36.1;Ind;1.67;0.97;73;14.51;;12.43;11.97;11.92;23.81;Sc;;;;;;;;2MASX J21552048-6530360,ESO 108-006,ESO-LV 108-0060,PGC 067640;;; -IC5143;Dup;21:56:09.73;-49:31:19.0;Ind;;;;;;;;;;;;;;;7155;;;;;; -IC5144;G;21:54:09.53;+15:02:12.6;Peg;0.79;0.62;92;15.50;;11.97;11.19;10.95;23.83;E;;;;;;;;2MASX J21540950+1502125,LEDA 1473533,UGC 11845 NOTES01;;; -IC5145;G;21:54:23.06;+15:09:24.6;Peg;1.62;0.80;171;14.70;;10.88;10.15;9.86;23.85;Sab;;;;;;;;2MASX J21542304+1509244,MCG +02-55-028,PGC 067619,SDSS J215423.07+150924.9,UGC 11844;;; -IC5146;Cl+N;21:53:28.76;+47:16:00.9;Cyg;10.00;10.00;;7.82;7.20;;;;;;;;;;;;;C 019,LBN 424,MWSC 3571;Cocoon Nebula;The position is for the included star.; -IC5147;G;21:59:26.32;-65:26:59.5;Ind;1.59;0.72;29;15.11;;13.03;12.54;12.07;24.12;Sc;;;;;;;;2MASX J21592630-6526595,ESO 108-009,ESO-LV 108-0090,PGC 067787;;; -IC5148;PN;21:59:35.20;-39:23:09.0;Gru;1.88;;;12.90;11.00;;;;;;;;16.50;;;5150;;ESO 344-005,IRAS 21565-3937,PK 2-52 1,PN G002.7-52.4;;; -IC5149;G;21:58:59.04;-27:24:50.1;PsA;1.38;0.52;31;14.50;;11.55;10.98;10.61;23.38;Sa;;;;;;;;2MASX J21585905-2724501,ESO 466-027,ESO-LV 466-0270,MCG -05-51-033,PGC 067770;;; -IC5150;Dup;21:59:35.20;-39:23:09.0;Gru;;;;;;;;;;;;;;;;5148;;;;; -IC5151;G;21:58:52.60;+03:45:41.3;Peg;0.35;0.20;0;15.50;;12.68;12.10;11.72;;;;;;;;;;2MASX J21585259+0345413,PGC 067768;;; -IC5152;G;22:02:41.51;-51:17:47.2;Ind;5.13;3.60;103;11.03;10.90;9.82;9.70;9.28;22.38;IAB;;;;;;;;2MASX J22024152-5117471,ESO 237-027,ESO-LV 237-0270,IRAS 21594-5132,PGC 067908;;; -IC5153;G;22:00:23.56;+17:51:50.1;Peg;0.18;0.10;65;;;;;;;;;;;;;;;2MASX J22002357+1751498;;The IC number includes the superposed star.; -IC5154;G;22:04:30.29;-66:06:44.6;Ind;0.86;0.55;4;15.84;;12.71;12.10;11.98;23.87;Sm;;;;;;;;2MASX J22043032-6606444,ESO 108-010,IRAS 22006-6621,PGC 067984;;Resolved components may be multiple nuclei.; -IC5155;**;22:02:06.26;+00:29:17.8;Aqr;;;;;;;;;;;;;;;;;;;;; -IC5156;G;22:03:14.87;-33:50:18.4;PsA;2.28;0.82;175;13.04;12.17;10.02;9.33;9.06;22.85;SBab;;;;;;;;2MASX J22031486-3350184,ESO 404-025,ESO-LV 404-0250,IRAS 22003-3404,MCG -06-48-019,PGC 067932;;; -IC5157;G;22:03:27.00;-34:56:30.6;PsA;2.01;1.80;56;13.21;;10.05;9.38;9.12;23.76;E;;;;;;;;2MASX J22032698-3456304,ESO 404-026,ESO-LV 404-0260,MCG -06-48-020,PGC 067941;;; -IC5158;G;22:06:24.77;-67:31:01.2;Ind;1.01;0.55;64;15.21;;13.62;12.99;12.88;23.39;SBm;;;;;;;;2MASX J22062477-6731012,ESO 075-055,ESO-LV 75-0550,PGC 068038;;; -IC5159;*;22:02:39.89;+00:19:08.4;Aqr;;;;;;;;;;;;;;;;;;SDSS J220239.89+001908.3;;; -IC5160;G;22:03:04.84;+10:55:29.5;Peg;0.94;0.54;21;15.60;;11.70;11.00;10.73;24.05;S0;;;;;;;;2MASX J22030481+1055296,PGC 067929,UGC 11884;;"Often incorrectly called NGC 7190; that is UGC 11885."; -IC5161;G;22:05:39.01;+09:38:24.6;Peg;0.71;0.30;16;15.50;;12.06;11.31;11.16;23.32;Sa;;;;;;;;2MASX J22053903+0938246,PGC 068016;;; -IC5162;G;22:08:03.08;-52:42:49.9;Gru;1.08;0.63;134;15.07;;;;;23.50;Sc;;;;;;;;ESO 189-025,ESO-LV 189-0250,PGC 068108;;; -IC5163;Other;22:05:47.38;+27:05:07.8;Peg;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -IC5164;*;22:05:58.20;+27:02:50.9;Peg;;;;;;;;;;;;;;;;;;;;; -IC5165;G;22:10:07.08;-64:34:40.9;Tuc;1.52;0.51;43;14.80;;13.18;12.39;12.20;23.75;Sab;;;;;;;;2MASX J22100705-6434405,ESO 108-015,ESO-LV 108-0150,PGC 068196;;; -IC5166;*;22:06:06.84;+27:04:04.8;Peg;;;;;;;;;;;;;;;;;;;;; -IC5167;*;22:07:31.79;-08:07:21.4;Aqr;;;;;;;;;;;;;;;;;;SDSS J220731.78-080721.4;;; -IC5168;G;22:08:45.54;-27:51:23.3;PsA;1.30;0.36;141;15.54;;;;;23.77;SBc;;;;;;;;ESO 467-011,ESO-LV 467-0110,MCG -05-52-033,PGC 068133;;; -IC5169;G;22:10:09.98;-36:05:19.0;PsA;2.05;0.91;24;13.77;14.27;10.82;10.09;9.78;23.98;S0-a;;;;;;;;2MASX J22101000-3605192,ESO 404-036,ESO-LV 404-0360,IRAS 22072-3620,MCG -06-48-025,PGC 068198;;; -IC5170;G;22:12:29.64;-47:13:19.0;Gru;1.91;0.83;26;13.30;;10.49;9.88;9.58;23.10;SBa;;;;;;;;2MASX J22122966-4713190,ESO 237-046,ESO 288-051,ESO-LV 237-0460,ESO-LV 288-0510,IRAS 22093-4728,PGC 068283,PGC 068284;;Two entries for IC 5170 in ESO and ESO-LV.; -IC5171;G;22:10:56.70;-46:04:53.3;Gru;0.74;0.49;153;13.45;;10.33;9.65;9.36;21.32;SABb;;;;;;;;2MASX J22105669-4604533,ESO 288-046,ESO-LV 288-0460,IRAS 22078-4619,PGC 068223;;; -IC5172;G;22:09:55.51;+12:49:05.0;Peg;0.71;0.24;87;15.60;;12.91;12.12;11.97;23.10;Sbc;;;;;;;;2MASX J22095551+1249052,PGC 068190,SDSS J220955.51+124904.9,SDSS J220955.52+124905.0;;; -IC5173;GPair;22:14:41.40;-69:21:59.0;Ind;2.80;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC5173A;G;22:14:44.57;-69:21:55.4;Ind;1.82;0.32;75;15.94;;;;;24.71;SBc;;;;;;;;ESO 076-008,ESO-LV 76-0081,PGC 068380;;; -IC5173B;G;22:14:38.67;-69:22:03.9;Ind;0.69;0.25;74;16.31;;;;;24.03;;;;;;;;;PGC 068379;;; -IC5174;G;22:12:44.67;-38:10:17.0;Gru;0.75;0.65;149;14.63;;12.51;11.85;11.63;22.96;SBbc;;;;;;;;2MASX J22124467-3810169,ESO 344-013,MCG -06-48-028,PGC 068292;;; -IC5175;G;22:12:48.23;-38:07:38.8;Gru;1.59;0.54;87;14.14;;11.07;10.36;10.05;23.78;Sab;;;;;;;;2MASX J22124824-3807389,ESO 344-014,MCG -06-48-029,PGC 068296;;The APM image includes a nearby bright star.; -IC5176;G;22:14:55.93;-66:50:57.9;Tuc;4.51;0.63;28;13.54;;9.91;9.08;8.74;23.97;Sbc;;;;;;;;2MASX J22145592-6650578,ESO 108-020,ESO-LV 108-0200,IRAS 22112-6705,PGC 068389;;The APM position is southwest of the nucleus.; -IC5177;G;22:11:34.27;+11:47:45.4;Peg;0.85;0.38;9;15.20;;11.93;11.17;10.85;23.04;SBb;;;;;;;;2MASX J22113429+1147452,MCG +02-56-015,PGC 068244,SDSS J221134.27+114745.4,UGC 11939;;; -IC5178;G;22:12:33.35;-22:57:14.6;Aqr;1.04;0.63;91;14.74;;12.31;12.09;11.74;23.11;SBc;;;;;;;;2MASX J22123333-2257145,ESO 532-031,ESO-LV 532-0310,MCG -04-52-022,PGC 068287;;; -IC5179;G;22:16:09.10;-36:50:37.4;Gru;1.01;0.52;61;12.29;11.89;9.66;8.95;8.62;20.86;Sbc;;;;;;5183,5184;;2MASX J22160908-3650375,ESO 405-005,ESO-LV 405-0050,IRAS 22132-3705,MCG -06-48-031,PGC 068455;;; -IC5180;G;22:11:12.01;+38:55:37.9;Lac;1.38;1.20;146;14.80;;10.59;9.87;9.59;24.18;E;;;;;;;;2MASX J22111201+3855384,MCG +06-48-012,PGC 068234,UGC 11938;;May contribute to the radio flux of B2 2209+38.; -IC5181;G;22:13:21.70;-46:01:03.4;Gru;2.65;0.86;73;12.44;11.69;9.12;8.42;8.17;23.24;S0;;;;;;;;2MASX J22132171-4601036,ESO 289-001,ESO-LV 289-0010,PGC 068317;;; -IC5182;G;22:16:05.09;-65:27:17.0;Tuc;0.78;0.55;136;15.31;;13.51;13.15;12.61;23.22;Sd;;;;;;;;2MASX J22160509-6527172,ESO 108-022,ESO-LV 108-0220,PGC 068452;;; -IC5183;Dup;22:16:09.10;-36:50:37.4;Gru;;;;;;;;;;;;;;;;5179;;;;; -IC5184;Dup;22:16:09.10;-36:50:37.4;Gru;;;;;;;;;;;;;;;;5179;;;;; -IC5185;G;22:17:43.65;-65:51:26.9;Tuc;0.58;0.46;70;14.86;;12.77;11.95;11.82;22.25;Sc;;;;;;;;2MASX J22174368-6551268,ESO 108-024,ESO-LV 108-0240,IRAS 22140-6606,PGC 068513;;; -IC5186;G;22:18:46.52;-36:48:05.7;Gru;2.11;1.44;92;13.25;11.80;10.52;9.84;9.54;22.61;Sb;;;;;;;;2MASX J22184653-3648058,ESO 405-007,ESO-LV 405-0070,IRAS 22158-3703,MCG -06-49-001,PGC 068548;;; -IC5187;G;22:18:17.77;-59:36:25.1;Tuc;0.60;0.56;16;14.69;;12.90;12.22;12.02;22.27;Sc;;;;;;;;2MASX J22181776-5936247,ESO 146-016,ESO-LV 146-0160,PGC 068536;;; -IC5188;G;22:18:26.40;-59:38:28.8;Tuc;1.29;1.05;9;13.83;;11.45;10.92;10.40;22.89;SABc;;;;;;;;2MASX J22182640-5938287,ESO 146-017,ESO-LV 146-0170,PGC 068539;;; -IC5189;*;22:16:14.15;-05:00:15.5;Aqr;;;;;;;;;;;;;;;;;;;;; -IC5190;G;22:19:00.69;-59:52:57.8;Tuc;0.90;0.67;127;14.85;;12.71;11.93;11.75;23.08;SBbc;;;;;;;;2MASX J22190066-5952577,ESO 146-018,ESO-LV 146-0180,IRAS 22153-6008,LEDA 2817324,PGC 068556;;; -IC5191;G;22:15:02.47;+37:18:01.4;Lac;1.08;0.17;65;15.00;;11.43;10.69;10.32;23.56;S0-a;;;;;;;;2MASX J22150245+3718013,MCG +06-48-021,PGC 068399,UGC 11963;;; -IC5192;G;22:15:14.04;+37:16:15.7;Lac;0.53;0.28;162;16.40;;13.23;12.37;12.20;23.77;;;;;;;;;2MASX J22151402+3716154,MCG +06-48-022,PGC 068407;;Probably a galaxy with three stars superposed, rather than a group as in MCG.;B-Mag taken from LEDA. -IC5193;G;22:15:43.55;+37:14:34.2;Lac;0.75;0.68;178;15.46;;11.51;10.75;10.43;23.63;E;;;;;;;;2MASX J22154353+3714345,MCG +06-48-026,PGC 068436;;;B-Mag taken from LEDA. -IC5194;Other;22:17:08.13;-15:56:44.5;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5195;Dup;22:15:41.57;+37:18:10.0;Lac;;;;;;;;;;;;;;;7242 NED02;;;;;; -IC5196;G;22:20:11.26;-65:24:16.6;Tuc;1.49;0.35;100;15.37;;12.51;11.88;11.81;23.83;Sc;;;;;;;;2MASX J22201125-6524167,ESO 108-025,ESO-LV 108-0250,IRAS 22165-6539,PGC 068591;;The APMUKS position is southeast of the nucleus.; -IC5197;G;22:19:49.42;-60:08:11.2;Tuc;1.05;0.56;34;15.01;;11.77;11.11;10.78;23.35;SBb;;;;;;;;2MASX J22194943-6008111,ESO 146-019,ESO-LV 146-0190,PGC 068584;;; -IC5198;Dup;22:17:42.68;-15:34:16.6;Aqr;;;;;;;;;;;;;;;7246;;;;;; -IC5199;G;22:19:33.22;-37:32:01.7;Gru;1.90;0.32;153;14.72;;11.44;10.64;10.37;23.72;Sb;;;;;;;;2MASX J22193322-3732018,ESO 344-020,IRAS 22166-3747,MCG -06-49-002,PGC 068574;;; -IC5200;G;22:22:15.34;-65:45:58.8;Tuc;0.74;0.36;124;15.96;;12.91;12.21;11.90;23.35;Sc;;;;;;;;2MASX J22221534-6545587,ESO 108-026,ESO-LV 108-0260,PGC 068660;;; -IC5201;G;22:20:57.44;-46:02:09.1;Gru;6.70;2.86;22;11.53;;11.05;10.48;10.17;23.53;Sc;;;;;;;;2MASX J22205743-4602090,ESO 289-018,ESO-LV 289-0180,IRAS 22179-4617,PGC 068618;;The APM position is 0.5 arcmin north of the center of the bar.; -IC5202;G;22:22:55.67;-65:48:10.4;Tuc;1.62;0.58;128;14.67;;12.02;11.44;11.11;23.57;SBc;;;;;;;;2MASX J22225570-6548103,ESO 108-027,ESO-LV 108-0270,PGC 068707;;; -IC5203;G;22:22:34.30;-59:46:23.6;Tuc;1.11;0.68;12;14.74;;13.54;12.90;12.44;23.30;Sc;;;;;;;;2MASX J22223432-5946232,ESO 146-020,ESO-LV 146-0200,IRAS 22192-6001,PGC 068684;;; -IC5204;Dup;22:30:59.91;-14:00:12.7;Aqr;;;;;;;;;;;;;;;7300;;;;;; -IC5205;G;22:22:47.56;-59:47:13.4;Tuc;0.63;0.39;20;15.98;;14.26;13.43;13.22;23.30;Sc;;;;;;;;2MASX J22224755-5947133,ESO 146-021,ESO-LV 146-0210,PGC 068700;;; -IC5206;G;22:24:04.62;-66:51:28.2;Tuc;0.99;0.56;29;15.26;;12.54;11.90;11.57;23.46;SBbc;;;;;;;;2MASX J22240466-6651281,ESO 108-028,ESO-LV 108-0280,PGC 068762;;; -IC5207;G;22:23:29.45;-60:33:53.9;Tuc;1.23;0.66;178;15.18;;;;;23.79;SABc;;;;;;;;ESO 146-022,ESO-LV 146-0220,PGC 068738;;; -IC5208;G;22:24:34.27;-65:13:38.7;Tuc;1.86;0.33;62;14.82;;11.37;10.67;10.44;24.74;S0-a;;;;;;;;2MASX J22243429-6513386,ESO 108-029,ESO-LV 108-0290,PGC 068788;;; -IC5209;G;22:23:09.10;-37:59:35.8;Gru;0.72;0.46;127;15.58;;14.00;13.82;13.22;23.24;Sc;;;;;;;;2MASX J22230906-3759356,ESO 345-004,ESO-LV 345-0040,PGC 068722;;; -IC5210;G;22:22:31.11;-18:52:10.9;Aqr;1.13;0.95;80;14.01;;11.01;10.38;10.08;23.09;E-S0;;;;;;;;2MASX J22223109-1852109,ESO 602-012,ESO-LV 602-0120,MCG -03-57-004,PGC 068674;;; -IC5211;G;22:22:43.06;-18:52:48.8;Aqr;0.80;0.58;158;14.66;;11.51;10.79;10.45;22.79;Sa;;;;;;;;2MASX J22224307-1852490,ESO 602-014,ESO-LV 602-0140,MCG -03-57-005,PGC 068695;;; -IC5212;G;22:23:30.26;-38:02:15.5;Gru;0.99;0.56;40;14.63;;12.02;11.40;11.13;23.00;Sb;;;;;;;;2MASX J22233027-3802154,ESO 345-006,ESO-LV 345-0060,PGC 068739;;; -IC5213;G;22:25:04.79;-60:28:36.1;Tuc;0.66;0.41;131;15.79;;13.62;13.00;12.29;23.34;Sc;;;;;;;;2MASX J22250481-6028361,ESO 146-023,ESO-LV 146-0230,PGC 068809;;; -IC5214;Other;22:23:42.21;-27:28:11.3;PsA;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5215;G;22:26:58.11;-65:58:55.9;Tuc;0.65;0.53;180;15.72;;14.01;13.42;12.77;23.27;Sc;;;;;;;;2MASX J22265789-6558517,ESO 109-003,ESO-LV 109-0030,PGC 068888;;; -IC5216;Other;22:24:44.77;-18:05:15.4;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5217;PN;22:23:55.70;+50:58:00.0;Lac;0.11;;;12.60;11.30;12.59;12.62;12.01;;;;15.40;15.50;;;;HD 212534;IRAS 22219+5042,PK 100-05 1,PN G100.6-05.4;;; -IC5218;G;22:28:05.78;-60:23:41.5;Tuc;1.34;0.48;22;15.11;;12.66;12.01;11.87;23.71;SBbc;;;;;;;;2MASX J22280580-6023413,ESO 146-026,ESO-LV 146-0260,IRAS 22248-6038,PGC 068927;;; -IC5219;G;22:28:43.74;-65:53:37.4;Tuc;0.89;0.55;16;15.95;;;;;23.94;Scd;;;;;;;;ESO 109-004,ESO-LV 109-0040,PGC 068955;;; -IC5220;G;22:28:02.73;-59:43:24.4;Tuc;1.19;0.37;112;15.08;;12.53;11.87;11.58;23.17;Sc;;;;;;;;2MASX J22280272-5943244,ESO 146-025,ESO-LV 146-0250,PGC 068925;;; -IC5221;G;22:28:57.71;-65:54:16.5;Tuc;0.47;0.43;59;15.91;;13.21;12.44;12.18;22.96;Sc;;;;;;;;2MASX J22285771-6554163,ESO 109-005,ESO-LV 109-0050,PGC 068967;;; -IC5222;G;22:29:54.78;-65:39:40.9;Tuc;1.96;0.89;92;13.48;;10.59;9.62;9.67;23.06;SBbc;;;;;;;;2MASX J22295476-6539411,ESO 109-006,ESO-LV 109-0060,IRAS 22263-6555,PGC 068993;;; -IC5223;G;22:29:44.77;+07:59:19.5;Peg;0.66;0.29;4;15.60;;12.10;11.41;11.06;23.30;Sa;;;;;;;;2MASX J22294477+0759196,PGC 068988,UGC 12055 NED02;;; -IC5224;G;22:30:30.15;-45:59:46.3;Gru;1.65;0.39;165;14.35;;12.25;11.55;11.32;23.34;Sab;;;;;;;;2MASX J22303013-4559465,ESO 289-031,ESO-LV 289-0310,PGC 069011;;; -IC5225;Dup;22:32:08.06;-25:23:52.0;PsA;;;;;;;;;;;;;;;7294;;;;;; -IC5226;G;22:32:30.21;-25:39:43.1;PsA;1.98;1.49;35;13.41;;10.62;9.88;9.73;23.44;Sb;;;;;;;;2MASX J22323021-2539429,ESO 533-045,ESO-LV 533-0450,MCG -04-53-010,PGC 069097;;; -IC5227;G;22:34:03.71;-64:41:51.6;Tuc;1.19;0.86;176;13.97;;11.45;10.75;10.38;22.89;SBab;;;;;;;;2MASX J22340372-6441515,ESO 109-008,ESO-LV 109-0080,IRAS 22306-6457,PGC 069170;;; -IC5228;Dup;22:32:23.80;-14:07:13.9;Aqr;;;;;;;;;;;;;;;7302;;;;;; -IC5229;G;22:34:50.38;-61:22:52.9;Tuc;0.63;0.53;70;15.13;;12.82;12.24;12.12;22.81;Sbc;;;;;;;;2MASX J22345035-6122529,ESO 147-001,ESO-LV 147-0010,PGC 069217;;; -IC5230;G;22:35:40.17;-61:32:51.7;Tuc;1.05;0.41;43;15.14;;12.79;11.86;11.71;23.34;Sc;;;;;;;;2MASX J22354014-6132519,ESO 147-002,ESO-LV 147-0020,IRAS 22323-6148,PGC 069249,TYC 9118-1231-1;;; -IC5231;G;22:34:00.72;+23:20:19.2;Peg;0.72;0.63;65;14.80;;11.52;10.83;10.59;23.09;S0-a;;;;;;;;2MASX J22340076+2320190,MCG +04-53-004,PGC 069166;;; -IC5232;G;22:37:38.11;-68:52:20.0;Ind;0.71;0.47;3;15.39;;12.88;12.12;11.81;23.05;Sc;;;;;;;;2MASX J22373810-6852202,ESO 076-020,ESO-LV 76-0200,PGC 069358;;; -IC5233;G;22:36:32.88;+25:45:47.5;Peg;0.91;0.84;16;14.80;;11.79;11.12;10.82;23.34;Sbc;;;;;;;;2MASX J22363287+2545476,MCG +04-53-007,PGC 069290,SDSS J223632.87+254547.2,UGC 12106;;; -IC5234;G;22:40:11.45;-65:49:30.9;Tuc;1.20;0.54;147;15.29;;13.01;12.33;11.90;24.26;S0-a;;;;;;;;2MASX J22401141-6549310,ESO 109-011,ESO-LV 109-0110,PGC 069446;;; -IC5235;G;22:41:25.47;-66:34:49.1;Tuc;0.63;0.34;84;16.24;;13.33;12.78;12.74;20.03;S0-a;;;;;;;;2MASX J22412544-6634489,ESO 109-013,ESO-LV 109-0130,PGC 069497;;The APM image includes a superposed star.; -IC5236;G;22:41:30.14;-66:37:04.8;Tuc;0.84;0.56;64;15.42;;12.32;11.55;11.28;23.77;S0;;;;;;;;2MASX J22413012-6637049,ESO 109-014,ESO-LV 109-0140,PGC 069503;;; -IC5237;Dup;22:42:17.91;-30:03:27.6;PsA;;;;;;;;;;;;;;;7361;;;;;; -IC5238;G;22:41:29.77;-60:45:28.5;Tuc;0.71;0.44;63;15.79;;14.70;14.15;13.76;23.39;Sc;;;;;;;;2MASX J22412975-6045283,ESO 147-004,ESO-LV 147-0040,PGC 069501;;; -IC5239;G;22:31:07.18;-38:01:35.5;Gru;1.32;0.62;53;15.21;;11.95;11.13;11.03;24.70;E;;;;;;;;2MASX J22310718-3801352,ESO 345-017,ESO-LV 345-0170,PGC 069044,PGC 069471;;The IC RA is +10 minutes in error.; -IC5240;G;22:41:52.38;-44:46:01.8;Gru;3.20;2.22;96;12.25;11.31;9.53;8.90;8.53;23.79;SBa;;;;;;;;2MASX J22415236-4446016,ESO 290-002,ESO-LV 290-0020,PGC 069521;;; -IC5241;G;22:41:38.53;+02:38:23.8;Peg;0.91;0.74;174;14.90;;11.96;11.40;11.21;23.23;SBc;;;;;;;;2MASX J22413873+0238217,MCG +00-57-008,PGC 069504,UGC 12152;;MCG notes this as a possible interacting system.; -IC5242;G;22:41:15.21;+23:24:24.9;Peg;0.82;0.70;174;14.70;;12.00;11.53;11.06;23.10;Sab;;;;;;;;2MASX J22411521+2324250,IRAS 22388+2308,MCG +04-53-010,PGC 069487,UGC 12148;;Field star at north.; -IC5243;G;22:41:24.59;+23:22:28.7;Peg;0.74;0.63;16;14.30;;13.19;12.39;12.08;22.75;Sbc;;;;;;;;2MASX J22412451+2322320,MCG +04-53-011,PGC 069495,UGC 12153;;; -IC5244;G;22:44:13.75;-64:02:36.2;Tuc;2.86;0.47;174;13.68;;10.21;9.49;9.15;23.59;Sb;;;;;;;;2MASX J22441378-6402362,ESO 109-015,ESO-LV 109-0150,PGC 069620;;; -IC5245;G;22:44:56.37;-65:21:28.5;Tuc;0.85;0.71;114;15.06;;12.54;11.82;11.63;23.44;S0-a;;;;;;;;2MASX J22445637-6521283,ESO 109-016,ESO-LV 109-0160,PGC 069645;;The APMUKS position is east of the nucleus.; -IC5246;G;22:46:39.50;-64:53:52.7;Tuc;1.02;0.67;154;14.73;;12.63;12.00;12.22;23.18;Sc;;;;;;;;2MASX J22463922-6453547,ESO 109-019,ESO-LV 109-0190,PGC 069696;;; -IC5247;G;22:46:50.15;-65:16:26.0;Tuc;1.37;0.40;124;15.00;;12.00;11.32;10.93;23.60;Sb;;;;;;;;2MASX J22465014-6516256,ESO 109-020,ESO-LV 109-0200,PGC 069700;;; -IC5248;Other;22:44:42.75;-00:20:22.2;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5249;G;22:47:06.28;-64:49:55.3;Tuc;4.38;0.36;12;14.35;;13.12;12.31;12.58;24.12;SBcd;;;;;;;;2MASX J22470626-6449554,ESO 109-021,ESO-LV 109-0210,PGC 069707;;; -IC5250;GPair;22:47:20.42;-65:03:31.4;Tuc;3.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC5250A;G;22:47:17.50;-65:03:35.0;Tuc;1.51;1.31;73;12.10;11.11;;;;22.35;E-S0;;;;;;;;ESO 109-022,PGC 069713;;; -IC5250B;G;22:47:22.16;-65:03:30.6;Tuc;1.74;0.95;120;12.20;;9.24;8.71;8.39;22.58;S0;;;;;;;;2MASX J22472215-6503305,ESO-LV 109-0221,PGC 069714;;Bright star superposed on southeast side of core.; -IC5251;Other;22:45:10.63;+11:09:30.5;Peg;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC5252;G;22:48:08.99;-68:54:10.3;Ind;1.34;0.77;173;13.75;;11.12;10.39;10.13;22.69;SBbc;;;;;;;;2MASX J22480897-6854101,ESO 076-025,ESO-LV 76-0250,IRAS 22446-6910,PGC 069744;;; -IC5253;G;22:45:28.92;+21:48:29.0;Peg;0.89;0.36;164;15.50;;12.46;11.79;11.64;24.11;S0-a;;;;;;;;2MASX J22452899+2148287,PGC 069659,UGC 12180;;; -IC5254;G;22:46:00.51;+21:07:32.1;Peg;0.68;0.32;80;15.60;;12.60;11.96;11.69;22.98;Sc;;;;;;;;2MASX J22460050+2107322,PGC 069680;;; -IC5255;Other;22:45:46.04;+36:13:36.4;Lac;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5256;G;22:49:45.81;-68:41:26.4;Ind;1.20;0.51;17;15.00;14.42;12.86;12.41;12.04;23.00;SBd;;;;;;;;2MASX J22494579-6841265,ESO 076-028,ESO-LV 76-0280,PGC 069820;;; -IC5257;G;22:52:16.25;-67:25:10.4;Ind;0.70;0.47;18;15.24;;12.76;11.85;11.60;22.90;Sbc;;;;;;;;2MASX J22521622-6725102,ESO 076-029,ESO-LV 76-0290,IRAS 22489-6741,PGC 069885;;; -IC5258;G;22:51:31.57;+23:04:50.1;Peg;1.00;0.64;102;14.10;;10.90;10.26;10.01;22.97;E-S0;;;;;;;;2MASX J22513158+2304499,MCG +04-53-017,PGC 069869,UGC 12217;;; -IC5259;G;22:55:14.69;+36:40:18.4;Lac;1.08;0.77;79;14.80;;11.07;10.28;10.01;23.30;Sc;;;;;;;;2MASX J22551469+3640182,IRAS 22529+3624,MCG +06-50-010,PGC 070003;;; -IC5260;Dup;22:54:18.61;-39:18:53.8;Gru;;;;;;;;;;;;;;;7404;;;;;; -IC5261;G;22:54:25.24;-20:21:46.4;Aqr;1.44;1.28;21;13.91;;11.55;10.80;10.57;23.25;SBc;;;;;;;;2MASX J22542525-2021466,ESO 603-026,ESO-LV 603-0260,IRAS 22517-2037,MCG -04-54-001,PGC 069969;;; -IC5262;G;22:55:20.45;-33:53:16.5;PsA;1.35;0.68;179;14.29;13.21;11.11;10.41;10.15;23.32;S0-a;;;;;;;;2MASX J22552046-3353166,ESO-LV 406-0200,MCG -06-50-009,PGC 3442011;;Brighter of interacting pair.; -IC5263;G;22:58:13.57;-69:03:07.6;Ind;1.59;0.73;147;14.23;;11.17;10.49;10.25;23.92;S0-a;;;;;;;;2MASX J22581358-6903076,ESO 076-032,ESO-LV 76-0320,IRAS 22548-6919,PGC 070137;;; -IC5264;G;22:56:53.04;-36:33:15.0;Gru;2.43;0.53;80;13.46;;10.33;9.60;9.36;23.05;Sab;;;;;;;;2MASX J22565303-3633149,ESO 406-029,ESO-LV 406-0290,IRAS 22540-3649,MCG -06-50-014,PGC 070081;;; -IC5265;Dup;22:57:10.61;-36:27:44.0;Gru;;;;;;;;;;;;;;;;1459;;;;; -IC5266;G;22:58:20.83;-65:07:46.9;Tuc;1.89;0.52;33;14.67;;12.13;11.67;11.12;23.85;Sb;;;;;;;;2MASX J22582082-6507469,ESO 109-029,ESO-LV 109-0290,PGC 070142;;; -IC5267;G;22:57:13.57;-43:23:46.1;Gru;5.58;4.06;138;11.18;10.47;8.29;7.68;7.45;23.84;S0-a;;;;;;;;2MASX J22571357-4323461,ESO 290-029,ESO-LV 290-0290,IRAS 22543-4339,MCG -07-47-007,PGC 070094;;; -IC5268;Other;22:56:12.97;+36:35:50.1;Lac;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5269;G;22:57:43.66;-36:01:34.4;PsA;1.84;0.75;51;13.48;;10.31;9.68;9.44;23.23;S0;;;;;;;;2MASX J22574365-3601344,ESO 406-032,ESO-LV 406-0320,MCG -06-50-017,PGC 070110;;MCG identification as IC 5270 in error.; -IC5270;G;22:57:54.94;-35:51:29.0;PsA;3.29;1.81;105;13.00;;10.50;9.84;9.61;23.73;SBc;;;;;;;;2MASX J22575493-3551289,ESO 406-033,ESO-LV 406-0330,IRAS 22551-3607,MCG -06-50-018,PGC 070117;;Position in 1997AJ....113.1548C is incorrect.; -IC5271;G;22:58:01.82;-33:44:32.0;PsA;3.00;1.16;140;12.47;;9.35;8.65;8.38;22.79;Sb;;;;;;;;2MASX J22580180-3344319,ESO 406-034,ESO-LV 406-0340,IRAS 22552-3400,MCG -06-50-019,PGC 070128;;; -IC5272;G;22:59:31.10;-65:11:36.7;Tuc;1.07;0.82;33;14.84;;;;;23.42;Sm;;;;;;;;ESO 109-030,ESO-LV 109-0300,PGC 070188,TYC 9131-1355-1;;+1m 30s, -1d 10m error in A-M position.; -IC5273;G;22:59:26.70;-37:42:10.4;Gru;3.07;1.98;46;11.90;11.45;9.82;8.96;8.75;23.36;SBc;;;;;;;;2MASX J22592671-3742103,ESO 346-022,ESO-LV 346-0220,IRAS 22566-3758,MCG -06-50-020,PGC 070184;;; -IC5274;G;22:58:27.65;+18:55:07.5;Peg;0.90;0.77;109;15.30;;11.50;10.74;10.52;23.71;S0;;;;;;;;2MASX J22582767+1855075,PGC 070149,UGC 12275;;; -IC5275;Other;22:58:39.46;+18:51:45.1;Peg;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -IC5276;G;22:58:39.75;+18:49:11.7;Peg;0.83;0.35;45;15.20;;11.76;11.04;10.68;23.52;S0-a;;;;;;;;2MASX J22583973+1849115,PGC 070157;;; -IC5277;G;23:01:59.25;-65:11:52.4;Tuc;0.59;0.54;41;15.30;;13.14;12.34;12.10;22.82;Sc;;;;;;;;2MASX J23015922-6511523,ESO 109-031,ESO-LV 109-0310,PGC 070294;;; -IC5278;G;23:00:15.84;-08:10:43.6;Aqr;1.17;0.40;88;15.50;;13.22;12.32;12.25;23.55;Sd;;;;;;;;2MASX J23001579-0810433,MCG -01-58-014,PGC 070232,SDSS J230015.84-081043.6;;MCG lists the identification with IC 5278 as doubtful.; -IC5279;G;23:03:02.62;-69:12:35.0;Ind;0.77;0.67;32;14.31;;11.66;10.98;10.76;22.53;Sa;;;;;;;;2MASX J23030257-6912348,ESO 077-001,ESO-LV 77-0010,IRAS 22597-6928,PGC 070335;;; -IC5280;G;23:03:50.15;-65:12:28.3;Tuc;1.32;0.50;4;15.06;;12.05;11.23;11.54;23.82;Sab;;;;;;;;2MASX J23035011-6512283,ESO 109-033,ESO-LV 109-0330,PGC 070372;;; -IC5281;*;23:02:23.49;+27:00:23.0;Peg;;;;;;;;;;;;;;;;;;;;; -IC5282;G;23:02:48.19;+21:52:27.7;Peg;1.07;0.51;174;15.20;;12.18;11.49;11.10;23.72;Sc;;;;;;;;2MASX J23024818+2152274,MCG +04-54-019,PGC 070323,UGC 12325;;; -IC5283;G;23:03:18.00;+08:53:37.0;Peg;1.15;0.60;105;15.20;;11.57;10.77;10.47;23.24;Sc;;;;;;;;2MASX J23031799+0853371,MCG +01-58-026,PGC 070350,UGC 12332 NOTES01;;; -IC5284;G;23:06:46.27;+19:07:19.5;Peg;1.07;0.38;140;14.90;;12.39;11.73;11.49;23.42;Sa;;;;;;;;2MASX J23064626+1907195,MCG +03-58-034,PGC 070492,UGC 12364;;; -IC5285;G;23:06:58.94;+22:56:11.3;Peg;1.32;0.74;88;14.40;;10.86;10.22;9.82;23.23;S0-a;;;;;;;;2MASX J23065893+2256113,MCG +04-54-026,PGC 070497,SDSS J230658.93+225611.3,UGC 12365;;; -IC5286;G;23:09:55.51;-68:15:11.2;Ind;0.97;0.21;114;16.19;;13.84;13.30;13.07;23.59;Sc;;;;;;;;2MASX J23095548-6815113,ESO 077-005,ESO-LV 77-0050,PGC 070595;;; -IC5287;G;23:09:20.27;+00:45:23.4;Psc;0.91;0.40;40;14.74;17.08;11.86;11.37;10.84;23.18;SBb;;;;;;;;2MASX J23092028+0045230,MCG +00-59-003,PGC 070575,SDSS J230920.26+004523.3,SDSS J230920.26+004523.4,SDSS J230920.27+004523.4,UGC 12393;;; -IC5288;G;23:11:44.22;-68:05:38.6;Ind;0.92;0.79;84;14.79;;11.63;10.92;10.47;23.31;S0;;;;;;;;2MASX J23114422-6805386,ESO 077-006,ESO-LV 77-0060,IRAS 23085-6821,PGC 070662;;; -IC5289;GPair;23:11:16.96;-32:27:15.4;Scl;0.70;;;;;;;;;;;;;;;;;;;Position is for the center of the loop.;Diameter of the group inferred by the author. -IC5289 NED01;G;23:11:17.20;-32:27:21.5;Scl;0.44;0.17;0;;;;;;;Sb;;;;;;;;MCG -05-54-021,PGC 070644;;; -IC5289 NED02;G;23:11:17.30;-32:27:06.7;Scl;1.15;0.74;36;14.32;15.40;11.67;10.93;10.57;23.43;S0;;;;;;;;2MASX J23111727-3227067,ESO 407-008,ESO-LV 407-0080,IRAS 23085-3243,MCG -05-54-020,PGC 070645;;; -IC5290;G;23:12:53.26;-23:28:09.1;Aqr;1.15;0.72;67;14.50;;11.01;10.33;10.06;22.42;Sa;;;;;;;;2MASX J23125326-2328089,ESO 535-008,MCG -04-54-014,PGC 070705;;This may also be NGC 7520.; -IC5291;G;23:13:39.58;+09:14:29.5;Peg;0.34;0.34;165;15.60;;13.27;12.45;11.99;22.05;;;;;;;;;2MASX J23133957+0914297,PGC 070729;;; -IC5292;G;23:13:47.07;+13:41:15.4;Peg;0.68;0.64;90;15.50;;12.73;12.09;11.97;23.05;Sc;;;;;;;;2MASX J23134710+1341151,PGC 070740,SDSS J231347.06+134115.4,SDSS J231347.31+134112.2,SDSS J231347.32+134112.1;;; -IC5293;G;23:14:44.64;+25:08:26.2;Peg;0.71;0.49;167;15.60;;12.03;11.39;11.26;23.73;;;;;;;;;2MASX J23144460+2508262,PGC 070792;;; -IC5294;Dup;23:16:10.76;-42:35:05.1;Gru;;;;;;;;;;;;;;;7552;;;;;; -IC5295;G;23:15:29.14;+25:07:13.7;Peg;0.64;0.55;46;15.70;;12.43;11.71;11.45;23.61;Sc;;;;;;;;2MASX J23152913+2507132,PGC 070839;;; -IC5296;G;23:15:43.78;+25:05:40.3;Peg;0.79;0.49;37;15.50;;12.51;11.91;11.39;23.45;Sb;;;;;;;;2MASX J23154379+2505403,MCG +04-54-037,PGC 070847,UGC 12460;;; -IC5297;G;23:15:58.44;+25:01:30.7;Peg;0.58;0.55;151;15.70;;;;;23.36;;;;;;;;;PGC 070875;;; -IC5298;G;23:16:00.70;+25:33:24.1;Peg;0.79;0.70;161;15.00;;11.70;10.89;10.39;23.22;SBc;;;;;;;;2MASX J23160070+2533242,IRAS 23135+2516,MCG +04-54-038,PGC 070877;;; -IC5299;G;23:16:19.15;+20:51:21.0;Peg;0.43;0.25;20;;;12.38;11.77;11.26;;;;;;;;;;2MASX J23161913+2051209;;; -IC5300;G;23:16:34.09;+20:49:42.4;Peg;0.81;0.50;130;15.70;;11.80;11.15;10.87;23.92;S0;;;;;;;;2MASX J23163408+2049424,PGC 070898;;; -IC5301;G;23:18:59.43;-69:33:43.6;Ind;1.10;0.58;87;15.36;;;;;23.73;Sc;;;;;;;;ESO 077-012,ESO-LV 77-0120,PGC 071040;;; -IC5302;G;23:19:36.69;-64:34:05.8;Tuc;1.19;0.42;24;15.01;;11.83;11.12;10.85;24.08;S0;;;;;;;;2MASX J23193673-6434057,ESO 110-009,ESO-LV 110-0090,PGC 071082;;; -IC5303;**;23:17:54.74;+00:15:52.3;Psc;;;;;;;;;;;;;;;;;;;;; -IC5304;G;23:18:52.55;-10:15:33.5;Aqr;1.52;0.94;18;13.47;;11.04;10.34;10.07;23.98;E-S0;;;;;;;;2MASX J23185254-1015335,MCG -02-59-011,PGC 071028,SDSS J231852.55-101533.5;;; -IC5305;G;23:18:06.22;+10:17:59.5;Peg;0.40;0.25;120;15.40;;12.03;11.32;10.98;;Sa;;;;;;;;2MASX J23180621+1017598,MCG +02-59-021,PGC 070987;;; -IC5306;G;23:18:11.33;+10:14:45.8;Peg;0.66;0.29;83;15.60;;12.44;11.77;11.61;21.41;Sab;;;;;;;;2MASX J23181133+1014457,MCG +02-59-022,PGC 070992,UGC 12485 NOTES02 NED02;;; -IC5307;G;23:18:22.03;+10:14:08.7;Peg;0.30;0.26;40;17.12;;12.45;11.67;11.36;23.24;;;;;;;;;2MASX J23182204+1014088,LEDA 214932;;;B-Mag taken from LEDA. -IC5308;Dup;23:19:21.14;-42:15:24.6;Gru;;;;;;;;;;;;;;;7599;;;;;; -IC5309;G;23:19:11.65;+08:06:33.5;Peg;1.29;0.61;25;15.00;;11.47;10.95;10.68;23.13;Sb;;;;;;;;2MASX J23191163+0806335,IRAS 23166+0750,MCG +01-59-042,PGC 071051,UGC 12498;;; -IC5310;G;23:20:47.64;-22:08:57.7;Aqr;0.50;0.41;7;15.28;;12.30;11.72;11.38;22.63;S0;;;;;;;;2MASX J23204765-2208579,ESO 605-001,ESO-LV 605-0010,PGC 071146;;; -IC5311;**;23:20:37.75;+17:16:26.9;Peg;;;;;;;;;;;;;;;;;;;;The IC identification is uncertain.; -IC5312;G;23:20:58.32;+19:19:04.9;Peg;0.35;0.35;105;15.00;;12.41;11.78;11.36;21.39;Sb;;;;;;;;2MASX J23205832+1919049,MCG +03-59-041,MCG +03-59-041 NED01,PGC 071152;;; -IC5313;Dup;23:22:00.90;-42:28:49.8;Gru;;;;;;;;;;;;;;;7632;;;;;; -IC5314;G;23:21:08.54;+19:18:40.4;Peg;0.68;0.68;5;15.60;;11.97;11.12;10.80;23.59;E;;;;;;;;2MASX J23210856+1918400,MCG +03-59-042,PGC 071160;;; -IC5315;G;23:21:18.25;+25:23:06.7;Peg;0.92;0.77;136;14.60;;11.56;10.87;10.54;23.37;E;;;;;;;;2MASX J23211822+2523075,MCG +04-55-006,PGC 071174,UGC 12541;;; -IC5316;G;23:21:54.11;+21:12:09.2;Peg;0.58;0.44;118;16.25;;12.84;12.14;11.67;23.81;;;;;;;;;2MASX J23215416+2112091,LEDA 1645026;;;B-Mag taken from LEDA. -IC5317;G;23:23:28.68;+21:09:48.7;Peg;0.81;0.62;5;15.10;;11.42;10.66;10.27;23.33;S0;;;;;;;;2MASX J23232868+2109487,PGC 071296;;; -IC5318;Dup;23:24:06.96;-11:51:38.5;Aqr;;;;;;;;;;;;;;;7646;;;;;; -IC5319;G;23:24:48.96;+13:59:47.5;Peg;0.73;0.64;1;15.77;;12.52;11.83;11.62;23.84;E-S0;;;;;;;;2MASX J23244893+1359471,LEDA 1446384,SDSS J232448.95+135947.5,SDSS J232448.96+135947.5;;;B-Mag taken from LEDA. -IC5320;G;23:28:21.97;-67:45:37.0;Tuc;0.60;0.55;113;15.17;;12.14;11.51;11.18;22.85;S0;;;;;;;;2MASX J23282200-6745369,ESO 077-021,ESO-LV 77-0210,PGC 071530;;; -IC5321;G;23:26:20.23;-17:57:23.0;Aqr;1.31;0.75;46;13.96;;12.49;12.03;11.69;23.00;SBab;;;;;;;;ESO 605-007,ESO-LV 605-0070,IRAS 23237-1813,MCG -03-59-009,PGC 071430;;; -IC5322;G;23:28:30.81;-67:45:40.8;Tuc;0.77;0.48;77;15.09;;12.35;11.75;11.39;23.24;S0;;;;;;;;2MASX J23283081-6745409,ESO 077-022,ESO-LV 77-0220,PGC 071536;;; -IC5323;G;23:27:36.97;-67:48:55.7;Tuc;1.64;1.04;32;14.04;;11.05;10.55;10.16;23.72;S0-a;;;;;;;;2MASX J23273700-6748557,ESO 077-019,ESO-LV 77-0190,PGC 071489;;; -IC5324;G;23:28:17.75;-67:49:16.9;Tuc;1.26;1.12;34;14.09;;10.72;9.95;9.71;23.22;E;;;;;;;;ESO 077-020,ESO-LV 77-0200,PGC 071526;;; -IC5325;G;23:28:43.43;-41:20:00.5;Phe;2.88;2.62;8;11.89;11.27;9.22;8.60;8.36;22.83;Sbc;;;;;;;;2MASX J23284342-4120005,ESO 347-018,ESO-LV 347-0180,IRAS 23260-4136,MCG -07-48-004,PGC 071548;;; -IC5326;G;23:29:35.16;-28:49:52.2;Scl;1.02;0.49;116;14.91;;12.13;11.40;11.07;23.24;Sb;;;;;;;;2MASX J23293518-2849523,ESO 470-011,ESO-LV 470-0110,MCG -05-55-015,PGC 071581;;; -IC5327;Dup;23:30:47.74;-13:29:07.6;Aqr;;;;;;;;;;;;;;;1495;;;;;; -IC5328;G;23:33:16.46;-45:00:57.5;Phe;2.99;1.75;41;12.21;11.03;9.14;8.55;8.28;23.48;E;;;;;;;;2MASX J23331645-4500574,ESO 291-029,ESO-LV 291-0290,PGC 071730;;; -IC5329;G;23:33:09.59;+21:14:14.3;Peg;1.37;0.34;109;15.70;;12.67;11.79;11.41;23.79;Sc;;;;;;;;2MASX J23330960+2114141,MCG +03-60-002,PGC 071731,UGC 12660;;Position given in 1993AN....314...97K is incorrect.; -IC5330;*;23:33:26.33;-02:52:59.3;Psc;;;;;;;;;;;;;;;;;;;;; -IC5331;G;23:33:24.82;+21:07:48.2;Peg;1.24;0.43;17;15.10;;11.84;11.11;10.74;23.55;Sab;;;;;;;;2MASX J23332482+2107481,MCG +03-60-003,PGC 071740,UGC 12662;;; -IC5332;G;23:34:27.49;-36:06:03.9;Scl;6.07;5.77;0;11.27;10.72;9.60;8.77;8.70;23.92;SABc;;;;;;;;2MASX J23342748-3606038,ESO 408-009,ESO-LV 408-0090,MCG -06-51-012,PGC 071775;;Extended HIPASS source; -IC5333;Dup;23:34:52.98;-65:23:45.7;Tuc;;;;;;;;;;;;;;;7697;;;;;; -IC5334;G;23:34:36.42;-04:32:03.3;Aqr;1.91;0.57;125;14.10;;10.91;10.20;9.99;23.40;Sbc;;;;;;;;2MASX J23343641-0432032,MCG -01-60-008,PGC 071784;;; -IC5335;G;23:35:47.37;-67:23:49.1;Tuc;1.11;0.48;137;15.11;;12.54;11.73;11.48;24.00;S0;;;;;;;;2MASX J23354732-6723492,ESO 077-025,ESO-LV 77-0250,IRAS 23329-6740,PGC 071846;;; -IC5336;GPair;23:36:19.69;+21:05:53.2;Peg;0.90;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC5336 NED01;G;23:36:18.72;+21:05:58.1;Peg;0.49;0.29;38;17.10;;13.43;12.73;12.49;24.27;;;;;;;;;2MASX J23361870+2105578,PGC 1642748;;;B-Mag taken from LEDA. -IC5336 NED02;G;23:36:20.44;+21:05:48.2;Peg;0.59;0.44;112;16.74;;13.06;12.17;12.15;24.32;;;;;;;;;2MASX J23362041+2105478,PGC 1642687;;;B-Mag taken from LEDA. -IC5337;G;23:36:25.03;+21:09:02.0;Peg;0.96;0.31;2;15.40;;12.49;11.82;11.41;23.27;Sbc;;;;;;;;2MASX J23362506+2109028,MCG +03-60-012,PGC 071875;;; -IC5338;G;23:36:30.43;+21:08:45.6;Peg;1.26;0.91;26;15.50;;11.56;10.77;10.45;24.35;E;;;;;;;;2MASX J23363057+2108498,MCG +03-60-013,PGC 071884,UGC 12703;;; -IC5339;G;23:38:05.27;-68:26:31.4;Tuc;1.07;0.95;106;14.64;;11.35;10.54;10.29;23.52;E-S0;;;;;;;;2MASX J23380525-6826316,ESO 077-026,ESO-LV 77-0260,PGC 069388,PGC 071965;;; -IC5340;Other;23:38:32.35;-04:51:16.6;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5341;G;23:38:26.82;+26:59:06.4;Peg;0.24;0.24;25;15.50;;12.09;11.37;11.23;21.52;E;;;;;;;;2MASX J23382684+2659066,MCG +04-55-035,PGC 071981;;; -IC5342;G;23:38:38.80;+27:00:40.9;Peg;0.79;0.63;26;15.40;;12.10;11.46;11.15;23.77;E;;;;;;;;2MASX J23383881+2700407,MCG +04-55-039,PGC 071984,SDSS J233838.79+270040.9;;; -IC5343;G;23:39:22.37;-22:29:49.8;Aqr;0.86;0.68;15;14.47;;12.51;11.84;11.72;22.40;Sm;;;;;;;;ESO 536-015,MCG -04-55-019,PGC 072032;;; -IC5344;Other;23:39:15.84;-04:58:00.3;Aqr;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5345;G;23:39:32.23;-22:24:48.0;Aqr;0.74;0.51;155;14.99;14.19;12.38;11.68;11.48;22.74;Sa;;;;;;;;2MASX J23393222-2224479,ESO 536-016,MCG -04-55-020,PGC 072040;;; -IC5346;G;23:41:06.33;+24:56:59.3;Peg;0.60;0.34;98;15.70;;12.71;12.02;11.66;23.76;;;;;;;;;2MASX J23410632+2456594,PGC 072105;;; -IC5347;G;23:41:36.71;+24:53:08.8;Peg;0.72;0.56;112;15.70;;12.41;11.75;11.56;23.89;;;;;;;;;2MASX J23413667+2453091,PGC 072130;;; -IC5348;Dup;23:44:59.24;-42:54:39.3;Phe;;;;;;;;;;;;;;;7744;;;;;; -IC5349;GPair;23:46:22.83;-28:00:18.4;Scl;1.10;;;;;;;;;;;;;;;;;MCG -05-56-005;;;Diameter of the group inferred by the author. -IC5349 NED01;G;23:46:22.70;-28:00:21.7;Scl;1.00;0.30;21;15.24;;11.75;11.09;10.56;23.96;S0;;;;;;;;2MASX J23462269-2800215,ESO 471-011,ESO-LV 471-0110,MCG -05-56-005 NED01,PGC 072358;;; -IC5349 NED02;G;23:46:23.09;-28:00:11.7;Scl;1.03;1.03;0;14.77;;;;;;E;;;;;;;;ESO-LV 471-0111,MCG -05-56-005 NED02,PGC 072359;;;Diameters taken from SIMBAD. -IC5350;G;23:47:14.63;-27:57:27.8;Scl;1.03;0.84;55;14.69;;11.62;10.94;10.69;23.44;E-S0;;;;;;;;2MASX J23471464-2757283,ESO 471-014,ESO-LV 471-0140,MCG -05-56-009,PGC 072396;;; -IC5351;G;23:47:18.93;-02:18:48.6;Psc;1.70;0.81;40;14.95;;11.39;10.68;10.42;24.61;E;;;;;;;;2MASX J23471891-0218485,MCG -01-60-032,PGC 072404;;Superposed star to the south.; -IC5352;G;23:47:19.90;-02:16:50.4;Psc;0.45;0.31;66;16.75;;13.25;12.45;12.64;23.64;S0;;;;;;;;2MASX J23471984-0216505,PGC 072405;;; -IC5353;G;23:47:28.59;-28:06:34.1;Scl;1.79;1.00;128;14.03;13.15;10.95;10.20;9.93;23.95;E-S0;;;;;;;;2MASX J23472856-2806335,ESO 471-017,ESO-LV 471-0170,MCG -05-56-010,PGC 072421;;; -IC5354;G;23:47:28.34;-28:08:09.6;Scl;0.92;0.58;65;14.94;;11.33;10.61;10.37;23.64;E;;;;;;;;2MASX J23472833-2808095,ESO 471-016,ESO-LV 471-0160,MCG -05-56-011,PGC 072416;;Southwestern, brighter of two.; -IC5355;G;23:47:15.29;+32:46:57.9;And;1.01;0.76;11;14.40;;11.86;11.30;11.22;23.00;SBc;;;;;;;;2MASX J23471530+3246579,IRAS 23447+3230,MCG +05-56-006,PGC 072397,UGC 12781;;; -IC5356;G;23:47:23.79;-02:21:04.5;Psc;0.97;0.52;42;15.11;;11.88;11.17;10.87;23.42;Sa;;;;;;;;2MASX J23472378-0221045,MCG -01-60-034,PGC 072409;;; -IC5357;G;23:47:22.99;-02:18:02.4;Psc;1.58;0.86;154;14.27;;10.80;10.07;9.85;23.74;E-S0;;;;;;;;2MASX J23472298-0218025,MCG -01-60-033,PGC 072408;;; -IC5358;G;23:47:45.04;-28:08:26.7;Scl;1.48;1.03;114;13.42;14.72;10.57;9.81;9.58;23.36;E;;;;;;;;2MASX J23474504-2808265,ESO 471-019,ESO-LV 471-0190,MCG -05-56-013,PGC 072441;;; -IC5359;G;23:47:37.86;-02:19:00.0;Psc;1.23;0.27;139;15.86;;12.39;11.65;11.41;23.69;Sc;;;;;;;;2MASX J23473787-0218598,MCG -01-60-036,PGC 072430;;; -IC5360;Other;23:47:53.73;-37:03:31.2;Scl;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5361;Dup;23:51:28.89;-13:22:53.7;Aqr;;;;;;;;;;;;;;;7761;;;;;; -IC5362;G;23:51:36.73;-28:21:54.2;Scl;1.56;1.43;40;13.81;;10.70;9.95;9.71;23.54;S0;;;;;;5363;;2MASX J23513672-2821542,ESO 471-026,ESO-LV 471-0260,MCG -05-56-023,PGC 072648;;The IC 5363 identification is uncertain.; -IC5363;Dup;23:51:36.73;-28:21:54.2;Scl;;;;;;;;;;;;;;;;5362;;;;; -IC5364;GPair;23:56:25.00;-29:01:24.0;Scl;1.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -IC5364 NED01;G;23:56:23.91;-29:01:25.3;Scl;1.07;1.07;95;14.28;;;;;23.16;S0-a;;;;;;;;MCG -05-01-007,PGC 072955;;;B-Mag taken from LEDA. -IC5364 NED02;G;23:56:25.24;-29:01:24.2;Scl;1.00;0.92;90;15.16;;11.12;10.39;9.60;23.27;E;;;;;;;;2MASX J23562523-2901242,ESO 471-047,ESO-LV 471-0470,MCG -05-01-008,PGC 072950;;; -IC5365;Other;23:57:34.59;-37:01:29.6;Scl;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5366;Other;23:57:40.39;+52:47:29.9;Cas;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal pos. Maybe the faint neby at ~ 2355.2+5031 (1950)?"; -IC5367;G;23:58:38.91;+22:26:56.7;Peg;0.56;0.42;52;16.80;;12.57;11.78;11.50;23.63;Sab;;;;;;;;2MASX J23583893+2226562,LEDA 1670097;;;B-Mag taken from LEDA. -IC5368;Dup;23:59:06.60;+06:52:23.0;Psc;;;;;;;;;;;;;;;;1523;;;;; -IC5369;G;23:59:50.54;+32:42:08.5;And;0.91;0.45;86;15.30;;12.10;11.32;11.00;23.64;S0-a;;;;;;;;2MASX J23595052+3242086,PGC 073190;;; -IC5370;G;00:00:09.18;+32:44:18.2;And;0.78;0.71;115;14.90;;11.55;10.84;10.51;23.09;S0-a;;;;;;;;2MASX J00000914+3244182,MCG +05-01-018,PGC 000005;;; -IC5371;G;00:00:14.78;+32:49:55.2;And;0.52;0.45;147;15.10;;13.11;12.51;12.04;23.20;;;;;;;;;2MASX J00001476+3249552,PGC 000024;;; -IC5372;G;00:00:16.26;+32:47:33.4;And;0.40;0.35;10;15.10;;12.08;11.48;11.25;;;;;;;;;;2MASX J00001627+3247332,PGC 2801010;;; -IC5373;G;00:00:28.81;+32:46:56.5;And;0.67;0.51;154;15.30;;11.95;11.11;10.94;22.91;Sb;;;;;;;;2MASX J00002880+3246563,MCG +05-01-019,PGC 000036;;; -IC5374;G;00:01:04.52;+04:30:00.7;Psc;0.67;0.57;16;14.50;;12.77;12.13;11.82;23.28;Sc;;;;;;;;2MASX J00010444+0430001,MCG +01-01-010,PGC 000079;;; -IC5375;G;00:01:04.77;+04:32:26.2;Psc;0.90;0.51;1;14.50;;11.95;11.29;11.04;23.46;Sab;;;;;;;;2MASX J00010478+0432261,MCG +01-01-009,PGC 000080;;; -IC5376;G;00:01:19.77;+34:31:32.6;And;1.64;0.44;4;15.00;;11.45;10.75;10.43;23.82;Sab;;;;;;;;2MASX J00011976+3431326,MCG +06-01-007,PGC 000102,UGC 12909;;; -IC5377;G;00:02:05.40;+16:35:25.0;Peg;0.91;0.54;0;15.60;;;;;23.62;IAB;;;;;;;;MCG +03-01-013,PGC 000156,UGC 12918;;; -IC5378;GPair;00:02:37.80;+16:38:53.0;Peg;1.50;;;;;;;;;;;;;;;;;UGC 00001;;;Diameter of the group inferred by the author. -IC5378 NED01;G;00:02:37.90;+16:38:37.6;Peg;0.55;0.55;50;14.90;;11.61;10.95;10.69;22.53;Sbc;;;;;;;;2MASX J00023794+1638377,MCG +03-01-015,PGC 000177,UGC 00001 NED01;;; -IC5378 NED02;G;00:02:37.70;+16:39:08.0;Peg;0.60;0.53;5;14.90;;;;;24.36;Sc;;;;;;;;MCG +03-01-016,PGC 000178,UGC 00001 NED02;;; -IC5379;G;00:02:40.70;+16:36:01.0;Peg;0.55;0.26;65;15.70;;;;;23.00;Sc;;;;;;;;MCG +03-01-017,PGC 000185;;; -IC5380;G;00:02:49.56;-66:11:11.5;Tuc;0.84;0.37;132;15.46;;12.48;11.94;11.93;23.33;Sab;;;;;;;;ESO 078-011,ESO-LV 78-0110,PGC 000188;;; -IC5381;G;00:03:11.27;+15:57:56.6;Peg;1.23;0.37;52;14.90;;11.68;10.88;10.59;23.42;SABa;;;;;;;;2MASX J00031127+1557563,MCG +03-01-019,PGC 000212,SDSS J000311.26+155756.6,SDSS J000311.27+155756.5,SDSS J000311.27+155756.6,UGC 00007;;; -IC5382;G;00:03:26.20;-65:11:48.0;Tuc;0.85;0.79;29;15.31;;12.87;12.19;12.07;23.56;Sbc;;;;;;;;2MASX J00032618-6511477,ESO 078-013,ESO-LV 78-0130,PGC 000236;;; -IC5383;Other;00:03:48.80;+16:00:51.0;Peg;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5384;Dup;00:04:09.12;-11:59:02.0;Cet;;;;;;;;;;;;;;;7813;;;;;; -IC5385;Other;00:06:23.70;-00:04:36.0;Psc;;;;;;;;;;;;;;;;;;;;"Nothing here; nominal position."; -IC5386;Dup;00:06:28.46;-03:42:58.1;Psc;;;;;;;;;;;;;;;7832;;;;;; -NGC0001;G;00:07:15.84;+27:42:29.1;Peg;1.57;1.07;112;13.40;;10.78;10.02;9.76;23.13;Sb;;;;;;;;2MASX J00071582+2742291,IRAS 00047+2725,MCG +04-01-025,PGC 000564,UGC 00057;;; -NGC0002;G;00:07:17.11;+27:40:42.1;Peg;0.95;0.47;110;14.80;;11.85;11.15;10.94;23.15;Sab;;;;;;;;2MASX J00071710+2740421,MCG +04-01-026,PGC 000567,UGC 00059;;; -NGC0003;G;00:07:16.80;+08:18:05.9;Psc;1.02;0.59;112;14.60;;11.01;10.36;9.98;23.01;S0;;;;;;;;2MASX J00071680+0818058,IRAS 00047+0801,MCG +01-01-037,PGC 000565,UGC 00058;;; -NGC0004;G;00:07:24.41;+08:22:25.6;Psc;0.53;0.24;32;;;;;;23.59;S?;;;;;;;;2MASX J00072439+0822253,PGC 212468;;; -NGC0005;G;00:07:48.87;+35:21:44.3;And;0.98;0.59;111;14.60;;11.52;10.86;10.63;23.51;E;;;;;;;;2MASX J00074889+3521444,MCG +06-01-013,PGC 000595,UGC 00062;;; -NGC0006;G;00:09:32.70;+33:18:31.2;And;1.73;1.34;141;14.50;;10.35;9.60;9.42;24.14;E-S0;;;;;0020;;;2MASX J00093270+3318310,MCG +05-01-036,PGC 000679,UGC 00084;;; -NGC0007;G;00:08:20.96;-29:54:54.0;Scl;2.47;0.53;23;13.88;;;;;23.83;Sc;;;;;;;;ESO 409-022,ESO-LV 409-0220,MCG -05-01-037,PGC 000627;;; -NGC0008;**;00:08:45.30;+23:50:20.0;Peg;;;;16.65;15.32;12.61;11.74;11.63;;;;;;;;;;;;NGC 0008 is a double star (1976RC2...C...0000d).;Main component is UCAC4 570-000332. -NGC0009;G;00:08:54.70;+23:49:01.1;Peg;0.70;0.31;149;14.50;;12.69;11.95;11.78;22.64;Sb;;;;;;;;2MASX J00085471+2349009,IRAS 00063+2332,MCG +04-01-030,PGC 000652,UGC 00078;;; -NGC0010;G;00:08:34.54;-33:51:30.0;Scl;2.35;1.27;30;13.13;;10.21;9.50;9.21;23.38;Sbc;;;;;;;;2MASX J00083453-3351299,ESO 349-032,ESO-LV 349-0320,IRAS 00060-3408,MCG -06-01-024,PGC 000634;;; -NGC0011;G;00:08:42.50;+37:26:52.5;And;1.44;0.22;111;14.50;;11.11;10.33;9.93;23.27;Sa;;;;;;;;2MASX J00084249+3726523,IRAS 00061+3710,MCG +06-01-015,PGC 000642,UGC 00073;;; -NGC0012;G;00:08:44.75;+04:36:45.1;Psc;1.52;1.21;127;14.50;;11.13;10.38;10.28;23.30;Sc;;;;;;;;2MASX J00084475+0436451,MCG +01-01-040,PGC 000645,UGC 00074;;; -NGC0013;G;00:08:47.72;+33:26:00.0;And;2.28;0.60;54;14.20;;10.68;10.00;9.75;23.79;Sb;;;;;;;;2MASX J00084772+3326000,MCG +05-01-034,PGC 000650,UGC 00077;;; -NGC0014;G;00:08:46.40;+15:48:56.0;Peg;1.53;1.01;23;13.30;;11.25;10.74;10.42;22.31;IB;;;;;;;;2MASX J00084642+1548559,MCG +02-01-021,MCG +03-01-026,PGC 000647,SDSS J000846.41+154856.5,UGC 00075;;Two MCG entries for one object, via MCG notes.; -NGC0015;G;00:09:02.47;+21:37:28.3;Peg;1.07;0.56;30;14.90;;11.36;10.60;10.30;23.60;Sa;;;;;;;;2MASX J00090246+2137279,MCG +03-01-027,PGC 000661,UGC 00082;;; -NGC0016;G;00:09:04.29;+27:43:45.9;Peg;1.74;0.85;17;13.01;12.06;9.75;9.06;8.78;22.91;E-S0;;;;;;;;2MASX J00090429+2743460,MCG +04-01-032,PGC 000660,UGC 00080;;; -NGC0017;G;00:11:06.55;-12:06:26.3;Cet;1.15;0.39;32;14.14;13.52;11.24;10.46;10.07;23.28;S0-a;;;;;0034;;;2MASX J00110661-1206283,IRAS 00085-1223,MCG -02-01-032,PGC 000781;;Mulchaey, et al (1996, ApJS, 102, 309) say this is not a Seyfert.; -NGC0018;**;00:09:23.10;+27:43:55.5;Peg;;;;14.00;;;;;;;;;;;;;;;;; -NGC0019;G;00:10:40.87;+32:58:59.1;And;1.21;0.60;41;13.90;;11.47;10.79;10.53;22.61;SBbc;;;;;;;;2MASX J00104087+3258592,IRAS 00080+3242,MCG +05-01-046,PGC 000759,UGC 00098;;; -NGC0020;Dup;00:09:32.70;+33:18:31.2;And;;;;;;;;;;;;;;;0006;;;;;; -NGC0021;G;00:10:46.90;+33:21:10.2;And;1.38;0.63;150;13.50;;11.25;10.61;10.33;22.25;Sbc;;;;;0029;;;2MASX J00104688+3321102,IRAS 00082+3304,MCG +05-01-048,PGC 000767,UGC 00100;;; -NGC0022;G;00:09:48.19;+27:49:56.3;And;1.21;0.74;155;14.90;;11.61;11.00;10.65;23.55;Sb;;;;;;;;2MASX J00094817+2749564,MCG +05-01-039,PGC 000690,UGC 00086;;; -NGC0023;G;00:09:53.41;+25:55:25.6;And;1.55;1.22;175;12.50;;9.91;9.21;8.88;22.41;Sa;;;;;;;;2MASX J00095341+2555254,IRAS 00073+2538,MCG +04-01-033,PGC 000698,SDSS J000953.42+255525.6,UGC 00089;;; -NGC0024;G;00:09:56.54;-24:57:47.3;Scl;6.18;2.40;44;12.20;11.58;9.71;9.11;8.96;24.01;Sc;;;;;;;;2MASX J00095654-2457472,ESO 472-016,ESO-LV 472-0160,IRAS 00073-2514,MCG -04-01-018,PGC 000701,UGCA 002;;; -NGC0025;G;00:09:59.28;-57:01:15.0;Phe;1.43;1.10;84;13.99;15.50;10.80;10.03;9.79;23.49;E-S0;;;;;;;;2MASX J00095929-5701148,ESO 149-019,ESO-LV 149-0190,PGC 000706;;; -NGC0026;G;00:10:25.87;+25:49:54.6;And;1.12;0.76;102;13.90;;11.42;10.69;10.42;22.80;Sab;;;;;;;;2MASX J00102587+2549544,IRAS 00078+2533,MCG +04-01-034,PGC 000732,UGC 00094;;; -NGC0027;G;00:10:32.77;+28:59:46.5;And;1.22;0.46;118;14.50;;11.47;10.67;10.43;22.98;Sbc;;;;;;;;2MASX J00103277+2859464,IRAS 00079+2843,MCG +05-01-044,PGC 000742,UGC 00096;;; -NGC0028;G;00:10:25.24;-56:59:20.9;Phe;0.92;0.81;45;15.37;;11.64;10.93;10.76;23.92;E;;;;;;;;2MASX J00102524-5659209,PGC 000730;;; -NGC0029;Dup;00:10:46.90;+33:21:10.2;And;;;;;;;;;;;;;;;0021;;;;;; -NGC0030;**;00:10:50.79;+21:58:37.1;Peg;;;;;;;;;;;;;;;;;;;;; -NGC0031;G;00:10:38.39;-56:59:11.4;Phe;1.17;0.53;2;14.63;;12.08;11.50;11.13;22.97;Sc;;;;;;;;2MASX J00103838-5659114,ESO 149-020,ESO-LV 149-0200,PGC 000751;;; -NGC0032;*;00:10:53.59;+18:47:45.6;Peg;;;;;;;;;;;;;;;;;;;;; -NGC0033;**;00:10:56.64;+03:40:33.3;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0034;Dup;00:11:06.55;-12:06:26.3;Cet;;;;;;;;;;;;;;;0017;;;;;; -NGC0035;G;00:11:10.48;-12:01:15.3;Cet;0.76;0.62;138;14.00;;12.57;11.91;11.68;22.87;Sb;;;;;;;;2MASX J00111050-1201146,IRAS 00086-1217,MCG -02-01-033,PGC 000784;;; -NGC0036;G;00:11:22.30;+06:23:21.7;Psc;2.14;1.32;15;14.50;;10.71;9.96;9.60;24.43;SABb;;;;;;;;2MASX J00112231+0623212,IRAS 00088+0606,MCG +01-01-043,PGC 000798,SDSS J001122.29+062321.6,UGC 00106;;; -NGC0037;G;00:11:22.93;-56:57:26.4;Phe;1.11;0.68;30;14.70;;11.41;10.67;10.43;23.86;S0;;;;;;;;2MASX J00112290-5657264,ESO 149-022,ESO-LV 149-0220,PGC 000801;;; -NGC0038;G;00:11:46.99;-05:35:10.6;Psc;1.14;1.05;170;13.50;;10.75;10.08;9.80;23.18;Sa;;;;;;;;2MASX J00114698-0535103,MCG -01-01-047,PGC 000818;;; -NGC0039;G;00:12:18.86;+31:03:39.9;And;1.10;0.99;87;14.40;;11.59;11.06;10.59;23.20;Sc;;;;;;;;2MASX J00121885+3103399,MCG +05-01-052,PGC 000852,UGC 00114;;; -NGC0040;PN;00:13:01.03;+72:31:19.0;Cep;0.80;;;11.27;11.89;10.89;10.80;10.38;;;11.14;11.82;11.58;;;;HD 000826,HIP 001041,TYC 4302-01297-1;C 002,IRAS 00102+7214,PN G120.0+09.8;Bow-Tie nebula;; -NGC0041;G;00:12:47.97;+22:01:24.2;Peg;0.94;0.53;125;14.60;;11.68;11.06;10.61;22.67;Sc;;;;;;;;2MASX J00124795+2201239,IRAS 00101+2144,MCG +04-01-039,PGC 000865;;; -NGC0042;G;00:12:56.35;+22:06:01.1;Peg;0.86;0.50;114;15.00;;11.11;10.41;10.11;23.40;E-S0;;;;;;;;2MASX J00125636+2206009,MCG +04-01-041,PGC 000867,UGC 00118;;; -NGC0043;G;00:13:00.75;+30:54:55.0;And;1.39;1.21;100;13.90;;10.43;9.74;9.45;23.33;S0;;;;;;;;2MASX J00130073+3054551,MCG +05-01-054,PGC 000875,UGC 00120;;; -NGC0044;**;00:13:13.40;+31:17:10.5;And;;;;;;;;;;;;;;;;;;;;; -NGC0045;G;00:14:03.99;-23:10:55.5;Cet;6.18;4.44;159;11.21;10.73;9.83;9.20;9.09;23.80;SABd;;;;;;;;2MASX J00140398-2310555,ESO 473-001,ESO-LV 473-0010,IRAS 00115-2327,MCG -04-01-021,PGC 000930,UGCA 004;;Extended HIPASS source; -NGC0046;*;00:14:09.86;+05:59:15.7;Psc;;;;12.95;11.68;10.98;10.68;10.61;;;;;;;;;;TYC 8-572-1,UCAC2 33683502,UCAC3 192-840;;; -NGC0047;G;00:14:30.64;-07:10:02.8;Cet;1.35;1.09;85;13.40;;10.96;10.25;9.96;23.20;SBbc;;;;;0058;;;2MASX J00143065-0710028,IRAS 00119-0726,MCG -01-01-055,PGC 000967;;; -NGC0048;G;00:14:02.19;+48:14:05.5;And;1.34;0.61;15;15.00;;11.39;10.75;10.40;23.59;SABb;;;;;;;;2MASX J00140221+4814055,IRAS 00113+4757,MCG +08-01-031,PGC 000929,UGC 00133;;; -NGC0049;G;00:14:22.43;+48:14:47.8;And;0.93;0.59;161;15.30;;11.42;10.74;10.52;23.72;S0;;;;;;;;2MASX J00142243+4814475,MCG +08-01-033,PGC 000952,UGC 00136;;; -NGC0050;G;00:14:44.57;-07:20:42.3;Cet;2.04;1.17;154;12.00;;9.65;8.97;8.67;23.16;E-S0;;;;;;;;2MASX J00144455-0720423,MCG -01-01-058,PGC 000983,SDSS J001444.57-072042.4;;; -NGC0051;G;00:14:34.92;+48:15:20.5;And;1.40;0.80;32;14.60;;10.49;9.76;9.48;23.86;S0;;;;;;;;2MASX J00143489+4815198,MCG +08-01-035,PGC 000974,UGC 00138;;; -NGC0052;G;00:14:40.11;+18:34:55.3;Psc;2.26;0.61;126;14.60;;10.69;9.87;9.50;23.83;Sbc;;;;;;;;2MASX J00144010+1834551,IRAS 00120+1818,MCG +03-01-030,PGC 000978,UGC 00140;;; -NGC0053;G;00:14:42.85;-60:19:43.5;Tuc;1.54;0.95;178;13.70;;10.79;10.02;10.02;22.69;SBb;;;;;;;;2MASX J00144279-6019425,ESO 111-020,ESO-LV 111-0200,PGC 000982;;; -NGC0054;G;00:15:07.67;-07:06:24.2;Cet;1.35;0.49;93;14.00;;11.15;10.46;10.08;23.21;SBa;;;;;;;;2MASX J00150767-0706243,MCG -01-01-060,PGC 001011;;; -NGC0055;G;00:14:53.60;-39:11:47.9;Scl;29.85;3.05;101;8.58;7.87;6.98;6.55;6.25;22.52;SBm;;;;;;;;2MASX J00145360-3911478,C 072,ESO 293-050,ESO-LV 293-0500,IRAS 00125-3928,MCG -07-01-013,PGC 001014;;; -NGC0056;Other;00:15:20.66;+12:26:40.3;Psc;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC0057;G;00:15:30.87;+17:19:42.7;Psc;2.11;1.60;47;13.70;;9.71;8.98;8.68;23.19;E;;;;;;;;2MASX J00153087+1719422,MCG +03-01-031,PGC 001037,SDSS J001530.91+171942.3,UGC 00145;;; -NGC0058;Dup;00:14:30.64;-07:10:02.8;Cet;;;;;;;;;;;;;;;0047;;;;;; -NGC0059;G;00:15:25.13;-21:26:39.8;Cet;2.38;1.24;121;13.21;12.59;10.89;10.26;10.10;23.72;E-S0;;;;;;;;2MASX J00152512-2126396,ESO 539-004,ESO-LV 539-0040,MCG -04-01-026,PGC 001034;;APMBGC position is 10 arcsec northwest of the nucleus.; -NGC0060;G;00:15:58.24;-00:18:12.7;Psc;1.03;0.66;29;15.54;14.86;12.11;11.31;11.24;23.66;Sc;;;;;;;;2MASX J00155824-0018130,MCG +00-01-048,PGC 001058,SDSS J001558.24-001812.6,SDSS J001558.24-001812.7,SDSS J001558.25-001812.6,UGC 00150;;; -NGC0061;GPair;00:16:24.20;-06:19:10.0;Psc;1.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC0061A;G;00:16:24.34;-06:19:18.9;Psc;1.48;1.14;179;15.00;;10.59;9.86;9.52;23.57;S0;;;;;;;;2MASX J00162433-0619186,MCG -01-01-062,PGC 001083;;MCG Dec +5 arcmin in error. The 2MASS source includes part of NGC 0061B.; -NGC0061B;G;00:16:24.07;-06:19:07.9;Psc;1.34;1.04;;15.50;;;;;23.41;S0;;;;;;;;MCG -01-01-063,PGC 001085;;MCG declination +5 arcmin in error.; -NGC0062;G;00:17:05.42;-13:29:13.6;Cet;0.99;0.73;125;14.00;;11.43;10.77;10.56;22.87;SBa;;;;;;;;2MASX J00170541-1329138,IRAS 00145-1345,MCG -02-01-043,PGC 001125;;HOLM 005B is a star.; -NGC0063;G;00:17:45.52;+11:27:01.2;Psc;1.72;1.04;108;12.60;;10.16;9.49;9.26;22.59;E-S0;;;;;;;;2MASX J00174552+1127012,IRAS 00151+1110,MCG +02-01-030,PGC 001160,UGC 00167;;; -NGC0064;G;00:17:30.37;-06:49:28.6;Cet;1.38;0.90;35;13.56;;11.30;10.60;10.29;23.10;SBbc;;;;;;;;2MASX J00173036-0649286,IRAS 00149-0706,MCG -01-01-068,PGC 001149;;; -NGC0065;G;00:18:58.71;-22:52:49.3;Cet;1.02;0.83;168;14.65;;11.73;11.08;10.76;23.46;E-S0;;;;;;;;2MASX J00185872-2252491,ESO 473-010A,ESO-LV 473-2100,MCG -04-02-001,PGC 001229;;; -NGC0066;G;00:19:04.94;-22:56:11.0;Cet;1.24;0.50;35;14.21;;11.36;10.65;10.39;22.68;SBb;;;;;;;;2MASX J00190494-2256111,ESO 473-010,ESO-LV 473-0100,IRAS 00165-2312,MCG -04-02-002,PGC 001236;;; -NGC0067;G;00:18:12.19;+30:03:19.9;And;0.49;0.33;111;;;13.24;12.49;12.24;23.66;;;;;;0067A;;;2MASX J00181219+3003195,PGC 138159;;; -NGC0068;G;00:18:18.49;+30:04:18.3;And;1.29;1.20;45;14.50;;10.69;9.86;9.60;23.72;E-S0;;;;;;;;2MASX J00181851+3004185,MCG +05-01-065,PGC 001187,UGC 00170;;; -NGC0069;G;00:18:20.51;+30:02:23.9;And;0.60;0.43;5;15.70;;12.56;11.97;11.65;23.39;E-S0;;;;;;;;2MASX J00182051+3002235,MCG +05-01-066,PGC 001191;;; -NGC0070;G;00:18:22.54;+30:04:46.5;And;1.69;1.39;3;14.50;;10.47;9.90;9.67;24.07;Sbc;;;;;;1539;;2MASX J00182252+3004465,MCG +05-01-067,PGC 001194,UGC 00174;;; -NGC0071;G;00:18:23.58;+30:03:47.7;And;1.95;1.46;109;14.80;;10.38;9.71;9.54;24.40;E-S0;;;;;;;;2MASX J00182359+3003475,MCG +05-01-068,PGC 001197,UGC 00173;;; -NGC0072;G;00:18:28.37;+30:02:26.5;And;1.16;1.06;85;15.00;;11.40;10.70;10.35;23.61;Sab;;;;;;;;2MASX J00182837+3002265,MCG +05-01-069,PGC 001204,UGC 00176;;; -NGC0072A;G;00:18:34.3;+30:02:11;And;0.38;0.29;155;15.10;;12.44;11.64;11.30;22.43;E;;;;;;;;2MASX J00183435+3002106,MCG +05-01-070,PGC 001208,UGC 00170 NOTES01;;; -NGC0073;G;00:18:39.01;-15:19:20.1;Cet;1.68;1.01;145;13.00;;10.96;10.24;9.90;23.83;SABb;;;;;;;;2MASX J00183897-1519200,MCG -03-01-026,PGC 001211;;; -NGC0074;G;00:18:49.34;+30:03:43.1;And;0.83;0.35;131;16.00;;12.59;11.84;11.69;23.32;Sbc;;;;;;;;2MASX J00184929+3003436,MCG +05-01-071,PGC 001219;;; -NGC0075;G;00:19:26.33;+06:26:57.7;Psc;1.82;1.82;70;14.80;;11.07;10.41;10.11;24.69;S0;;;;;;;;2MASX J00192635+0626573,MCG +01-01-051,PGC 001255,UGC 00182;;; -NGC0076;G;00:19:37.79;+29:56:01.9;And;1.28;1.00;78;14.00;;11.07;10.36;10.06;23.54;E;;;;;;;;2MASX J00193779+2956017,MCG +05-01-072,PGC 001267,UGC 00185;;; -NGC0077;G;00:20:01.65;-22:31:55.6;Cet;0.48;0.44;150;15.67;;12.63;12.21;11.53;23.07;E-S0;;;;;;;;2MASX J00200168-2231553,ESO 473-015,ESO-LV 473-0150,PGC 001290;;; -NGC0078;GPair;00:20:26.60;+00:49:47.0;Psc;1.90;;;;;;;;;;;;;;;;;IRAS 00178+0032;;;Diameter of the group inferred by the author. -NGC0078A;G;00:20:25.79;+00:49:34.8;Psc;1.17;0.65;75;14.50;;11.57;10.93;10.71;23.54;S0-a;;;;;;;;2MASX J00202580+0049350,MCG +00-02-004,PGC 001306,SDSS J002025.78+004934.8,SDSS J002025.78+004934.9,SDSS J002025.79+004934.8,UGC 00193;;; -NGC0078B;G;00:20:27.51;+00:50:00.8;Psc;1.00;0.82;137;14.50;;11.28;10.59;10.25;23.14;S0-a;;;;;;;;2MASX J00202748+0050009,MCG +00-02-005,PGC 001309,SDSS J002027.51+005000.7,SDSS J002027.51+005000.8,UGC 00194;;; -NGC0079;G;00:21:02.85;+22:33:59.7;And;0.79;0.72;140;14.90;;11.29;10.55;10.26;23.50;E;;;;;;;;2MASX J00210283+2233590,MCG +04-02-003,PGC 001340;;; -NGC0080;G;00:21:10.85;+22:21:25.9;And;1.82;1.61;5;13.70;;9.92;9.26;8.92;23.38;E-S0;;;;;;;;2MASX J00211086+2221261,MCG +04-02-004,PGC 001351,UGC 00203;;; -NGC0081;G;00:21:13.27;+22:22:58.4;And;0.41;0.30;88;17.74;;12.87;12.17;11.93;23.25;;;;;;;;;2MASX J00211331+2222581,PGC 001352;;; -NGC0082;*;00:21:17.55;+22:27:37.3;And;;;;;;;;;;;;;;;;;;;;; -NGC0083;G;00:21:22.40;+22:26:01.0;And;1.25;1.10;112;14.30;;10.28;9.57;9.30;23.00;E;;;;;;;;2MASX J00212239+2226011,MCG +04-02-005,PGC 001371,UGC 00206;;; -NGC0084;*;00:21:21.25;+22:37:10.9;And;;;;;;;;;;;;;;;;;;;;; -NGC0085;G;00:21:25.53;+22:30:42.4;And;0.69;0.62;156;14.90;;11.91;11.12;10.94;23.60;S0;;;;;0085A;;;2MASX J00212557+2230421,MCG +04-02-007,PGC 001375;;; -NGC0085B;G;00:21:29.0;+22:30:21;And;1.06;0.34;122;14.90;;12.08;11.35;11.03;23.50;Sbc;;;;;;1546;;2MASX J00212903+2230209,MCG +04-02-008,PGC 001382;;Called 'NGC 0085B' in MCG.; -NGC0086;G;00:21:28.57;+22:33:23.1;And;0.75;0.28;8;14.90;;11.92;11.25;11.00;22.99;S0-a;;;;;;;;2MASX J00212858+2233229,MCG +04-02-009,PGC 001383;;; -NGC0087;G;00:21:14.27;-48:37:41.6;Phe;0.86;0.71;6;14.70;;14.60;13.86;13.53;22.85;IB;;;;;;;;2MASX J00211406-4837482,ESO 194-008,ESO-LV 194-0080,PGC 001357;;; -NGC0088;G;00:21:22.12;-48:38:24.6;Phe;0.85;0.49;146;15.11;;13.25;12.69;12.61;23.22;S0-a;;;;;;;;2MASX J00212213-4838242,ESO 194-010,ESO-LV 194-0100,PGC 001370;;; -NGC0089;G;00:21:24.36;-48:39:55.1;Phe;1.24;0.56;140;14.28;;11.53;10.80;10.54;23.18;S0-a;;;;;;;;2MASX J00212435-4839552,ESO 194-011,ESO-LV 194-0110,PGC 001374;;; -NGC0090;G;00:21:51.40;+22:24:00.0;And;0.98;0.81;120;14.50;;11.75;11.20;10.96;23.14;SABc;;;;;;;;2MASX J00215140+2224001,MCG +04-02-011,PGC 001405,UGC 00208;;NGC 0091 is a star 2 arcmin south of NGC 0090.; -NGC0091;*;00:21:51.72;+22:22:06.1;And;;;;15.20;;13.48;13.12;13.05;;;;;;;;;;UCAC2 39602310,UCAC3 225-1775;;; -NGC0092;G;00:21:31.70;-48:37:29.1;Phe;1.65;0.76;150;13.71;;10.56;9.79;9.38;23.41;Sa;;;;;;;;2MASX J00213171-4837292,ESO 194-012,ESO-LV 194-0120,PGC 001388;;May be related to HIPASS J0021-48.; -NGC0093;G;00:22:03.23;+22:24:29.1;And;1.30;0.73;50;14.70;;10.68;9.93;9.63;23.26;Sab;;;;;;;;2MASX J00220321+2224291,MCG +04-02-012,PGC 001412,UGC 00209;;; -NGC0094;G;00:22:13.53;+22:28:59.0;And;0.51;0.31;20;15.60;;12.26;11.69;11.38;;;;;;;;;;2MASX J00221351+2228592,PGC 001423;;;Diameters and position angle taken from Simbad. -NGC0095;G;00:22:13.54;+10:29:29.7;Psc;1.46;1.08;85;13.40;;10.35;9.71;9.45;22.59;SABc;;;;;;;;2MASX J00221352+1029297,IRAS 00196+1012,MCG +02-02-003,PGC 001426,UGC 00214;;; -NGC0096;G;00:22:17.71;+22:32:46.5;And;0.68;0.64;130;17.00;;11.94;11.30;10.99;23.41;E-S0;;;;;;;;2MASX J00221769+2232462,MCG +04-02-014,PGC 001429;;; -NGC0097;G;00:22:30.00;+29:44:43.3;And;1.32;1.16;25;13.50;;10.46;9.76;9.53;23.02;E;;;;;;;;2MASX J00222998+2944433,MCG +05-02-007,PGC 001442,UGC 00216;;; -NGC0098;G;00:22:49.54;-45:16:08.4;Phe;1.62;1.37;65;13.59;;10.70;10.05;9.76;23.08;SBbc;;;;;;;;2MASX J00224951-4516084,ESO 242-005,ESO-LV 242-0050,PGC 001463;;; -NGC0099;G;00:23:59.39;+15:46:13.5;Psc;1.05;0.88;46;13.99;13.65;12.26;11.66;11.76;22.81;Sc;;;;;;;;2MASX J00235942+1546130,IRAS 00214+1529,MCG +02-02-006,PGC 001523,SDSS J002359.39+154613.5,UGC 00230;;; -NGC0100;G;00:24:02.84;+16:29:11.0;Psc;3.55;0.49;56;14.60;;11.28;10.64;10.56;23.74;Sc;;;;;;;;2MASX J00240283+1629110,MCG +03-02-009,PGC 001525,UGC 00231;;HOLM 009B is a star.; -NGC0101;G;00:23:54.61;-32:32:10.2;Scl;1.93;1.82;80;13.36;;11.33;10.74;10.20;23.48;SABc;;;;;;;;2MASX J00235461-3232103,ESO 350-014,ESO-LV 350-0140,IRAS 00214-3248,MCG -05-02-003,PGC 001518;;; -NGC0102;G;00:24:36.53;-13:57:22.9;Cet;0.94;0.57;126;14.00;;11.62;10.99;10.59;22.93;S0-a;;;;;;;;2MASX J00243651-1357229,MCG -02-02-011,PGC 001542;;; -NGC0103;OCl;00:25:16.40;+61:19:24.5;Cas;2.70;;;10.28;9.80;;;;;;;;;;;;;MWSC 0040;;; -NGC0104;GCl;00:24:05.36;-72:04:53.2;Tuc;31.80;;;5.78;4.09;2.29;1.76;1.54;;;;;;;;;;2MASX J00240535-7204531,C 106,MWSC 0038;47 Tuc Cluster;; -NGC0105;G;00:25:16.78;+12:53:01.9;Psc;0.81;0.65;170;14.10;;11.34;10.64;10.36;22.07;Sab;;;;;;;;IRAS 00226+1236,MCG +02-02-008,PGC 001583;;; -NGC0106;G;00:24:43.75;-05:08:55.5;Psc;0.93;0.71;84;14.46;;11.30;10.61;10.29;22.82;Sc;;;;;;;;2MASX J00244375-0508557,PGC 001551;;; -NGC0107;G;00:25:42.20;-08:16:58.1;Cet;0.78;0.49;179;15.67;;13.09;12.44;12.28;22.88;Sbc;;;;;;;;2MASX J00254218-0816580,MCG -02-02-014,PGC 001606;;; -NGC0108;G;00:25:59.73;+29:12:43.4;And;1.69;1.14;63;13.30;;10.29;9.56;9.28;23.18;S0-a;;;;;;;;2MASX J00255971+2912434,MCG +05-02-012,PGC 001619,UGC 00246;;; -NGC0109;G;00:26:14.64;+21:48:26.3;And;1.05;0.82;83;15.00;;11.32;10.80;10.35;23.45;Sa;;;;;;;;2MASX J00261463+2148266,MCG +04-02-020,PGC 001633,UGC 00251;;; -NGC0110;OCl;00:27:25.01;+71:23:29.5;Cas;3.90;;;;;;;;;;;;;;;;;MWSC 0045;;; -NGC0111;Other;00:26:38.41;-02:37:29.9;Cet;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC0112;G;00:26:48.73;+31:42:11.9;And;1.02;0.49;107;14.50;;11.82;11.14;10.80;22.88;Sb;;;;;;;;2MASX J00264871+3142119,IRAS 00241+3125,MCG +05-02-013,PGC 001654,UGC 00255;;; -NGC0113;G;00:26:54.64;-02:30:03.2;Cet;1.23;1.00;172;13.50;;10.81;10.12;9.86;23.21;E-S0;;;;;;;;2MASX J00265462-0230030,MCG -01-02-016,PGC 001656;;; -NGC0114;G;00:26:58.23;-01:47:10.5;Cet;0.98;0.75;171;15.00;;11.29;10.60;10.32;23.37;S0;;;;;;;;2MASX J00265821-0147100,MCG +00-02-027,PGC 001660,UGC 00259;;; -NGC0115;G;00:26:46.28;-33:40:37.5;Scl;2.09;0.73;122;13.73;;11.83;11.19;11.21;23.22;SBbc;;;;;;;;2MASX J00264627-3340375,ESO 350-017,ESO-LV 350-0170,MCG -06-02-006,PGC 001651;;; -NGC0116;G;00:27:05.23;-07:40:05.7;Cet;1.08;0.53;98;14.54;;11.34;10.64;10.38;23.51;S0-a;;;;;;;;2MASX J00270522-0740059,MCG -01-02-017,PGC 001671;;NGC identification is very uncertain.; -NGC0117;G;00:27:11.07;+01:20:01.4;Cet;1.00;0.46;101;15.50;;11.82;11.11;10.87;24.03;S0-a;;;;;;;;2MASX J00271106+0120014,MCG +00-02-029,PGC 001674;;; -NGC0118;G;00:27:16.22;-01:46:48.5;Cet;0.80;0.58;58;14.90;;11.46;10.76;10.35;23.00;E;;;;;;;;2MASX J00271620-0146487,IRAS 00247-0203,MCG +00-02-032,PGC 001678,UGC 00264;;; -NGC0119;G;00:26:57.61;-56:58:41.0;Phe;1.20;1.12;30;14.14;;10.91;10.19;9.88;23.27;E-S0;;;;;;;;2MASX J00265761-5658408,ESO 150-008,ESO-LV 150-0080,PGC 001659;;; -NGC0120;G;00:27:30.08;-01:30:48.5;Cet;1.51;0.50;73;14.80;;10.81;10.12;9.95;24.09;S0;;;;;;;;2MASX J00273007-0130487,MCG +00-02-033,PGC 001693,UGC 00267;;; -NGC0121;GCl;00:26:48.25;-71:32:08.4;Tuc;3.80;3.10;80;11.20;11.24;;;;;;;;;;;;;2MASX J00264970-7132077,ESO 050-012;;The 2MASS position is 7 arcsec east of the optical core.; -NGC0122;*;00:27:38.33;-01:38:25.7;Cet;;;;;;;;;;;;;;;;;;;;NGC identification is very uncertain.; -NGC0123;*;00:27:39.99;-01:37:39.5;Cet;;;;;;;;;;;;;;;;;;;;NGC identification is very uncertain.; -NGC0124;G;00:27:52.36;-01:48:36.7;Cet;1.26;0.72;168;13.90;;11.55;11.07;10.76;22.59;Sc;;;;;;;;2MASX J00275236-0148364,IRAS 00253-0205,MCG +00-02-038,PGC 001715,SDSS J002752.36-014837.0,UGC 00271;;; -NGC0125;G;00:28:50.19;+02:50:19.9;Psc;1.40;1.22;60;14.20;;10.71;10.01;9.76;22.77;S0-a;;;;;;;;2MASX J00285020+0250200,MCG +00-02-048,PGC 001772,UGC 00286;;; -NGC0126;G;00:29:08.10;+02:48:40.0;Psc;0.71;0.58;111;15.50;;12.16;11.54;11.25;23.45;S0;;;;;;;;2MASX J00290809+0248400,MCG +00-02-049,PGC 001784;;; -NGC0127;G;00:29:12.37;+02:52:21.7;Psc;0.93;0.42;75;13.20;;11.92;11.48;11.14;23.86;S0;;;;;;;;2MASX J00291239+0252215,IRAS 00266+0235,MCG +00-02-050,PGC 001787,UGC 00292 NOTES01;;; -NGC0128;G;00:29:15.06;+02:51:50.6;Psc;3.16;0.87;1;13.20;;9.47;8.83;8.52;23.79;S0;;;;;;;;2MASX J00291506+0251505,MCG +00-02-051,PGC 001791,UGC 00292;;; -NGC0129;OCl;00:29:58.19;+60:12:40.2;Cas;5.40;;;7.33;6.50;;;;;;;;;;;;;MWSC 0053;;; -NGC0130;G;00:29:18.55;+02:52:13.6;Psc;0.72;0.42;44;15.00;;12.22;11.61;11.39;22.81;E-S0;;;;;;;;2MASX J00291854+0252135,MCG +00-02-052,PGC 001794,UGC 00292 NOTES02;;; -NGC0131;G;00:29:38.52;-33:15:35.1;Scl;1.81;0.67;62;13.69;13.22;11.29;10.68;10.49;23.12;SBb;;;;;;;;2MASX J00293851-3315349,ESO 350-021,ESO-LV 350-0210,IRAS 00271-3332,MCG -06-02-010,PGC 001813;;; -NGC0132;G;00:30:10.71;+02:05:36.4;Cet;1.60;1.09;38;13.80;;10.63;10.04;9.64;23.21;SABb;;;;;;;;2MASX J00301071+0205365,IRAS 00276+0149,MCG +00-02-063,PGC 001844,SDSS J003010.67+020536.0,UGC 00301;;; -NGC0133;OCl;00:31:16.96;+63:21:09.4;Cas;2.10;;;;9.40;;;;;;;;;;;;;MWSC 0055;;; -NGC0134;G;00:30:21.97;-33:14:38.5;Scl;8.38;1.79;50;11.14;10.12;7.89;7.14;6.84;23.40;SABb;;;;;;;;2MASX J00302189-3314432,ESO 350-023,ESO-LV 350-0230,IRAS 00278-3331,MCG -06-02-012,PGC 001851;;Extended HIPASS source; -NGC0135;G;00:31:45.94;-13:20:14.9;Cet;0.66;0.35;14;15.01;;11.86;11.15;10.93;23.16;E-S0;;;;;;0026;;2MASX J00314593-1320152,IRAS 00292-1336,PGC 002010;;; -NGC0136;OCl;00:31:30.79;+61:30:33.3;Cas;3.30;;;;;;;;;;;;;;;;;MWSC 0056;;; -NGC0137;G;00:30:58.10;+10:12:30.3;Psc;1.38;1.38;30;14.20;;10.62;9.88;9.64;23.22;S0;;;;;;;;2MASX J00305810+1012304,MCG +02-02-017,PGC 001888,UGC 00309;;; -NGC0138;G;00:30:59.24;+05:09:35.1;Psc;1.25;0.64;175;14.80;;11.09;10.40;10.09;23.64;Sa;;;;;;;;2MASX J00305921+0509350,MCG +01-02-016,PGC 001889,UGC 00308;;; -NGC0139;G;00:31:06.40;+05:04:43.5;Psc;0.77;0.44;0;15.50;;12.30;11.50;11.27;23.27;SBab;;;;;;;;2MASX J00310641+0504434,IRAS 00285+0448,PGC 001900;;; -NGC0140;G;00:31:20.47;+30:47:33.0;And;0.87;0.75;43;14.20;;11.79;11.24;11.05;22.69;SBc;;;;;;;;2MASX J00312048+3047329,IRAS 00287+3031,MCG +05-02-021,PGC 001916,UGC 00311;;; -NGC0141;G;00:31:17.44;+05:10:47.1;Psc;0.86;0.55;165;15.40;;11.61;10.93;10.46;23.64;S0-a;;;;;;;;2MASX J00311739+0510474,IRAS 00287+0454,PGC 001918;;; -NGC0142;G;00:31:08.08;-22:37:07.2;Cet;0.97;0.39;104;14.59;;11.63;10.84;10.55;22.72;SBb;;;;;;;;2MASX J00310808-2237072,ESO 473-021,ESO-LV 473-0210,IRAS 00286-2253,MCG -04-02-014,PGC 001901;;; -NGC0143;G;00:31:15.62;-22:33:35.8;Cet;1.06;0.32;21;15.26;;12.07;11.26;10.97;23.36;SBb;;;;;;;;2MASX J00311562-2233357,ESO 473-022,ESO-LV 473-0220,MCG -04-02-015,PGC 001911;;; -NGC0144;G;00:31:20.67;-22:38:44.6;Cet;0.82;0.78;10;14.42;;11.86;11.15;10.90;22.62;Sc;;;;;;;;2MASX J00312067-2238447,ESO 473-023,ESO-LV 473-0230,MCG -04-02-016,PGC 001917;;; -NGC0145;G;00:31:45.74;-05:09:09.5;Cet;1.76;1.43;116;13.30;;11.20;10.57;10.32;22.97;Sd;;;;;;;;2MASX J00314572-0509095,IRAS 00292-0525,MCG -01-02-027,PGC 001941;;; -NGC0146;OCl;00:33:03.94;+63:18:32.4;Cas;3.60;;;9.59;9.10;;;;;;;;;;;;;MWSC 0059;;; -NGC0147;G;00:33:12.12;+48:30:31.5;Cas;9.40;5.41;26;12.00;9.50;7.90;7.34;7.20;24.29;E;;;;;;;;2MASX J00331212+4830314,C 017,MCG +08-02-005,PGC 002004,UGC 00326;;; -NGC0148;G;00:34:15.50;-31:47:09.6;Scl;1.98;0.71;90;13.11;12.12;9.99;9.30;9.06;23.27;S0;;;;;;;;2MASX J00341549-3147095,ESO 410-020,ESO-LV 410-0200,MCG -05-02-017,PGC 002053;;; -NGC0149;G;00:33:50.26;+30:43:24.3;And;0.91;0.49;153;15.00;;11.60;10.89;10.79;23.55;S0;;;;;;;;2MASX J00335024+3043245,MCG +05-02-024,PGC 002028,UGC 00332;;; -NGC0150;G;00:34:15.48;-27:48:12.9;Scl;3.54;1.60;117;12.04;11.13;9.44;8.75;8.51;22.87;SBb;;;;;;;;2MASX J00341548-2748131,ESO 410-019,ESO-LV 410-0190,IRAS 00317-2804,MCG -05-02-018,PGC 002052,UGCA 007;;; -NGC0151;G;00:34:02.79;-09:42:19.2;Cet;3.74;2.31;76;12.31;11.59;9.55;8.95;8.75;23.51;Sbc;;;;;0153;;;2MASX J00340275-0942194,IRAS 00315-0958,MCG -02-02-054,PGC 002035,SDSS J003402.78-094219.1,SDSS J003402.78-094219.2,SDSS J003402.79-094219.0,SDSS J003402.79-094219.2;;; -NGC0152;OCl;00:32:52.46;-73:07:13.4;Tuc;3.00;3.00;;13.05;12.26;;;;;;;;;;;;;2MASX J00325251-7307135,ESO 028-024;;; -NGC0153;Dup;00:34:02.79;-09:42:19.2;Cet;;;;;;;;;;;;;;;0151;;;;;; -NGC0154;G;00:34:19.47;-12:39:22.7;Cet;1.01;0.90;79;14.00;;11.16;10.50;10.18;23.92;E;;;;;;;;2MASX J00341946-1239224,MCG -02-02-053,PGC 002058;;; -NGC0155;G;00:34:40.08;-10:45:59.4;Cet;1.49;1.29;170;13.00;;10.70;10.01;9.77;23.67;S0;;;;;;;;2MASX J00344011-1045593,MCG -02-02-055,PGC 002076,SDSS J003440.07-104559.4,SDSS J003440.08-104559.4,SDSS J003440.08-104559.5;;; -NGC0156;**;00:34:35.82;-08:20:24.2;Cet;;;;;;;;;;;;;;;;;;;;; -NGC0157;G;00:34:46.76;-08:23:47.2;Cet;3.70;1.90;28;11.00;19.00;8.60;7.92;7.68;22.13;SABb;;;;;;;;2MASX J00344675-0823473,IRAS 00322-0840,MCG -02-02-056,PGC 002081;;Extended HIPASS source; -NGC0158;**;00:35:05.60;-08:20:44.6;Cet;;;;;;;;;;;;;;;;;;;;; -NGC0159;G;00:34:35.53;-55:47:23.9;Phe;1.40;0.57;96;14.86;;11.62;10.87;10.64;24.10;S0-a;;;;;;;;2MASX J00343551-5547236,ESO 150-011,ESO-LV 150-0110,PGC 002073;;; -NGC0160;G;00:36:04.06;+23:57:28.4;And;1.98;0.89;46;13.70;;10.39;9.74;9.35;23.72;S0-a;;;;;;;;2MASX J00360404+2357283,MCG +04-02-033,PGC 002154,UGC 00356;;; -NGC0161;G;00:35:33.94;-02:50:55.3;Cet;1.36;0.72;22;15.00;;10.93;10.24;9.95;23.75;S0;;;;;;;;2MASX J00353394-0250555,MCG -01-02-036,PGC 002131;;; -NGC0162;*;00:36:09.26;+23:57:44.7;And;;;;;;;;;;;;;;;;;;;;; -NGC0163;G;00:35:59.83;-10:07:18.1;Cet;1.43;1.32;75;13.64;12.70;10.70;10.00;9.80;23.33;E;;;;;;;;2MASX J00355984-1007183,MCG -02-02-066,PGC 002149,SDSS J003559.82-100718.1,SDSS J003559.83-100718.1;;; -NGC0164;G;00:36:32.91;+02:44:59.2;Psc;0.53;0.49;70;16.00;;13.16;12.42;12.24;23.32;;;;;;;;;2MASX J00363291+0244591,MCG +00-02-089,PGC 002181;;; -NGC0165;G;00:36:28.92;-10:06:22.2;Cet;1.63;1.06;72;13.88;13.08;11.29;10.35;10.37;23.45;Sbc;;;;;;;;2MASX J00362890-1006223,IRAS 00339-1022,MCG -02-02-069,PGC 002182,SDSS J003628.92-100622.1,SDSS J003628.92-100622.2;;; -NGC0166;G;00:35:48.78;-13:36:38.3;Cet;0.89;0.33;149;15.00;;12.12;11.38;11.17;23.16;Sa;;;;;;;;2MASX J00354879-1336383,MCG -02-02-063,PGC 002143;;; -NGC0167;G;00:35:23.09;-23:22:30.0;Cet;0.97;0.54;171;14.37;;11.83;11.25;11.04;22.57;SBc;;;;;;;;2MASX J00352309-2322300,ESO 473-029,ESO-LV 473-0290,IRAS 00328-2339,MCG -04-02-022,PGC 002122;;; -NGC0168;G;00:36:38.66;-22:35:36.6;Cet;1.31;0.29;27;14.87;;11.68;10.85;10.60;24.08;S0-a;;;;;;;;2MASX J00363863-2235367,ESO 474-004,ESO-LV 474-0040,IRAS 00341-2251,MCG -04-02-026,PGC 002192;;; -NGC0169;G;00:36:51.60;+23:59:27.3;And;1.53;0.66;93;13.70;13.10;10.38;9.61;9.24;22.74;Sab;;;;;;;;2MASX J00365161+2359273,MCG +04-02-035,PGC 002202,UGC 00365;;; -NGC0169A;G;00:36:52.33;+23:59:05.9;And;0.83;0.44;159;14.00;;;;;22.98;S0-a;;;;;;1559;;MCG +04-02-034,PGC 002201;;; -NGC0170;G;00:36:45.82;+01:53:11.3;Cet;0.70;0.51;82;15.40;;12.01;11.31;11.07;23.39;E-S0;;;;;;;;2MASX J00364581+0153111,MCG +00-02-091,PGC 002195;;; -NGC0171;G;00:37:21.53;-19:56:03.3;Cet;2.06;1.29;102;12.95;;10.38;9.57;9.21;22.98;Sab;;;;;0175;;;2MASX J00372152-1956032,ESO 540-006,ESO-LV 540-0060,IRAS 00348-2012,MCG -03-02-024,PGC 002232,SDSS J003721.55-195603.2;;; -NGC0172;G;00:37:13.61;-22:35:13.3;Cet;2.04;0.40;14;14.66;;12.10;11.41;11.15;23.16;SBbc;;;;;;;;2MASX J00371359-2235132,ESO 474-005,ESO-LV 474-0050,IRAS 00348-2251,MCG -04-02-027,PGC 002228;;; -NGC0173;G;00:37:12.47;+01:56:32.1;Cet;2.09;1.54;94;13.30;;10.69;10.26;10.01;23.54;Sc;;;;;;;;2MASX J00371247+0156321,MCG +00-02-092,PGC 002223,UGC 00369;;; -NGC0174;G;00:36:58.94;-29:28:40.2;Scl;1.57;0.69;150;13.82;;10.67;9.97;9.66;23.22;S0-a;;;;;;;;2MASX J00365892-2928403,ESO 411-001,ESO-LV 411-0010,IRAS 00345-2945,MCG -05-02-028,PGC 002206;;; -NGC0175;Dup;00:37:21.53;-19:56:03.3;Cet;;;;;;;;;;;;;;;0171;;;;;; -NGC0176;OCl;00:35:57.87;-73:09:59.0;Tuc;1.20;1.20;;13.06;13.01;;;;;;;;;;;;;ESO 029-002;;In the Small Magellanic Cloud.; -NGC0177;G;00:37:34.34;-22:32:57.3;Cet;2.11;0.50;10;14.14;;11.07;10.32;10.20;23.74;Sab;;;;;;;;2MASX J00373433-2232573,ESO 474-006,ESO-LV 474-0060,MCG -04-02-028,PGC 002241;;; -NGC0178;G;00:39:08.40;-14:10:22.2;Cet;2.11;0.58;4;13.60;;11.69;11.10;10.80;22.28;SBm;;;;;;0039;;2MASX J00390839-1410222,IRAS 00366-1426,MCG -02-02-078,PGC 002349;;; -NGC0179;G;00:37:46.28;-17:50:58.1;Cet;1.12;0.96;111;14.01;;11.15;10.39;10.17;23.26;E;;;;;;;;2MASX J00374629-1750578,ESO 540-007,ESO-LV 540-0070,MCG -03-02-026,PGC 002253;;; -NGC0180;G;00:37:57.70;+08:38:06.7;Psc;2.20;1.48;163;14.30;;10.59;9.84;9.49;24.11;Sc;;;;;;;;2MASX J00375769+0838068,IRAS 00353+0821,MCG +01-02-039,PGC 002268,SDSS J003757.70+083806.5,UGC 00380;;; -NGC0181;G;00:38:23.21;+29:28:21.3;And;0.86;0.25;152;15.40;;12.12;11.37;11.01;23.80;S0-a;;;;;;;;2MASX J00382319+2928214,MCG +05-02-032,PGC 002287;;; -NGC0182;G;00:38:12.38;+02:43:42.8;Psc;1.86;1.30;78;13.80;;10.48;9.77;9.56;23.33;SABa;;;;;;;;2MASX J00381239+0243428,MCG +00-02-095,PGC 002279,SDSS J003812.38+024342.5,UGC 00382;;; -NGC0183;G;00:38:29.39;+29:30:40.4;And;1.02;0.75;129;13.80;;10.62;9.94;9.73;22.66;E;;;;;;;;2MASX J00382939+2930404,MCG +05-02-035,PGC 002298,UGC 00387;;; -NGC0184;G;00:38:35.78;+29:26:51.4;And;0.73;0.27;8;15.50;;12.09;11.41;11.12;23.11;Sab;;;;;;;;2MASX J00383575+2926514,PGC 002309;;; -NGC0185;G;00:38:57.97;+48:20:14.6;Cas;12.94;10.76;38;15.71;9.20;7.32;6.70;6.56;24.58;E;;;;;;;;2MASX J00385796+4820145,C 018,IRAS 00362+4803,MCG +08-02-010,PGC 002329,UGC 00396;;; -NGC0186;G;00:38:25.30;+03:09:59.2;Psc;1.39;0.83;25;14.80;;10.79;10.02;9.76;24.03;S0-a;;;;;;;;2MASX J00382530+0309592,MCG +00-02-098,PGC 002291,UGC 00390;;; -NGC0187;G;00:39:30.41;-14:39:22.7;Cet;1.53;0.49;149;13.00;;11.30;10.69;10.38;22.82;SBc;;;;;;;;2MASX J00393041-1439225,IRAS 00369-1455,MCG -03-02-034,PGC 002380;;; -NGC0188;OCl;00:47:27.53;+85:16:10.7;Cep;17.70;;;8.91;8.10;;;;;;;;;;;;;C 001,MWSC 0074;;; -NGC0189;OCl;00:39:35.70;+61:05:40.1;Cas;2.70;;;9.07;8.80;;;;;;;;;;;;;MWSC 0062;;; -NGC0190;GPair;00:38:54.70;+07:03:35.0;Psc;1.10;;;;;;;;;;;;;;;;;UGC 00397;;;Diameter of the group inferred by the author. -NGC0190 NED01;G;00:38:54.68;+07:03:45.7;Psc;0.93;0.76;175;15.08;;10.97;10.23;9.24;23.39;Sab;;;;;0190N;;;2MASX J00385467+0703458,MCG +01-02-041,PGC 002324,UGC 00397 NOTES01;;; -NGC0190 NED02;G;00:38:54.73;+07:03:24.2;Psc;0.72;0.71;;15.99;;;;;23.87;E;;;;;0190S;;;MCG +01-02-042,PGC 002325,UGC 00397 NOTES02;;; -NGC0191;G;00:38:59.44;-09:00:09.4;Cet;1.00;0.71;100;12.00;;10.54;9.77;9.57;22.64;Sc;;;;;;;;2MASX J00385944-0900099,MCG -02-02-077,PGC 002331,SDSS J003859.43-090009.3;;; -NGC0191A;G;00:39:00.24;-09:00:52.5;Cet;0.87;0.30;147;15.00;;;;;23.10;S0;;;;;;1563;;MCG -02-02-076,PGC 002332,SDSS J003900.23-090052.4,SDSS J003900.24-090052.4,SDSS J003900.24-090052.5;;; -NGC0192;G;00:39:13.43;+00:51:51.6;Cet;2.06;0.82;165;13.90;;10.28;9.53;9.25;23.33;Sa;;;;;;;;2MASX J00391339+0051508,IRAS 00366+0035,MCG +00-02-104,PGC 002352,SDSS J003913.40+005150.7,SDSS J003913.41+005150.9,SDSS J003913.75+005142.5,UGC 00401;;; -NGC0193;G;00:39:18.59;+03:19:52.0;Psc;2.07;1.45;55;14.30;;10.06;9.38;9.21;23.66;E-S0;;;;;;;;2MASX J00391857+0319528,MCG +00-02-103,PGC 002359,UGC 00408;;; -NGC0194;G;00:39:18.42;+03:02:14.8;Psc;1.73;1.50;42;13.90;;10.18;9.45;9.21;23.18;E;;;;;;;;2MASX J00391842+0302148,MCG +00-02-105,PGC 002362,UGC 00407;;; -NGC0195;G;00:39:35.79;-09:11:40.3;Cet;1.22;0.74;68;14.00;13.45;11.41;10.70;10.36;23.16;Sa;;;;;;;;2MASX J00393578-0911400,IRAS 00370-0928,MCG -02-02-079,PGC 002391,SDSS J003935.78-091140.2,SDSS J003935.79-091140.3;;; -NGC0196;G;00:39:17.84;+00:54:45.9;Cet;1.27;0.92;10;14.20;;10.91;10.25;10.03;23.68;S0;;;;;;;;2MASX J00391786+0054458,MCG +00-02-107,PGC 002357,SDSS J003917.83+005445.9,UGC 00405;;; -NGC0197;G;00:39:18.79;+00:53:30.9;Cet;0.94;0.72;35;14.85;;12.76;12.28;11.71;22.77;S0-a;;;;;;;;2MASX J00391879+0053308,MCG +00-02-110,PGC 002365,SDSS J003918.79+005330.9,SDSS J003918.79+005331.0,SDSS J003918.79+005331.1,UGC 00406;;; -NGC0198;G;00:39:22.98;+02:47:52.5;Psc;1.28;1.17;35;14.10;;10.69;10.05;9.72;22.31;Sc;;;;;;;;2MASX J00392298+0247525,IRAS 00367+0231,MCG +00-02-109,PGC 002371,UGC 00414;;; -NGC0199;G;00:39:33.17;+03:08:18.7;Psc;1.14;0.69;160;15.00;;11.36;10.73;10.44;23.64;S0;;;;;;;;2MASX J00393318+0308185,MCG +00-02-111,PGC 002382,UGC 00415;;; -NGC0200;G;00:39:34.88;+02:53:14.8;Psc;1.80;1.02;163;14.00;;10.73;9.97;9.72;23.07;Sbc;;;;;;;;2MASX J00393486+0253145,IRAS 00370+0236,MCG +00-02-112,PGC 002387,UGC 00420;;; -NGC0201;G;00:39:34.82;+00:51:35.6;Cet;1.71;1.32;146;14.70;;11.42;10.16;9.98;23.34;Sc;;;;;;;;2MASX J00393485+0051355,IRAS 00370+0035,MCG +00-02-115,PGC 002388,SDSS J003934.82+005135.6,SDSS J003934.82+005135.8,SDSS J003934.83+005135.8,SDSS J003934.83+005135.9,UGC 00419;;; -NGC0202;G;00:39:39.85;+03:32:10.6;Psc;0.96;0.33;153;15.50;;11.94;11.18;11.01;23.99;S0-a;;;;;;;;2MASX J00393985+0332105,MCG +00-02-113,PGC 002394,UGC 00421;;; -NGC0203;G;00:39:39.53;+03:26:34.4;Psc;0.98;0.27;85;15.00;;11.72;11.08;10.82;23.52;S0;;;;;0211;;;2MASX J00393952+0326345,MCG +00-02-114,PGC 002393;;; -NGC0204;G;00:39:44.27;+03:17:58.5;Psc;1.40;1.09;22;14.60;;10.67;10.00;9.73;23.34;S0;;;;;;;;2MASX J00394426+0317585,MCG +00-02-116,PGC 002397,UGC 00423;;; -NGC0205;G;00:40:22.08;+41:41:07.1;And;16.22;9.59;170;8.92;8.07;6.45;5.87;5.59;23.78;E;;;;110;;;;2MASX J00402207+4141070,IRAS 00376+4124,MCG +07-02-014,PGC 002429,UGC 00426;;; -NGC0206;*Ass;00:40:31.30;+40:44:21.4;And;;;;;;;;;;;;;;;;;;;;; -NGC0207;G;00:39:40.71;-14:14:13.5;Cet;0.91;0.49;84;15.10;;12.19;11.56;11.27;22.97;Sa;;;;;;;;2MASX J00394071-1414134,IRAS 00371-1430,MCG -03-02-035,PGC 002395;;; -NGC0208;G;00:40:17.58;+02:45:23.4;Psc;0.77;0.65;137;15.50;;12.36;11.68;11.55;23.46;Sa;;;;;;;;2MASX J00401757+0245235,MCG +00-02-118,PGC 002420;;; -NGC0209;G;00:39:03.60;-18:36:29.8;Cet;1.14;0.99;6;13.91;;11.19;10.51;10.27;23.20;E-S0;;;;;;;;2MASX J00390357-1836299,ESO 540-008,ESO-LV 540-0080,MCG -03-02-031,PGC 002338;;; -NGC0210;G;00:40:35.02;-13:52:22.1;Cet;4.98;3.02;163;11.80;;9.14;8.56;8.39;23.58;SABb;;;;;;;;2MASX J00403502-1352220,IRAS 00380-1408,MCG -02-02-081,PGC 002437;;; -NGC0211;Dup;00:39:39.53;+03:26:34.4;Psc;;;;;;;;;;;;;;;0203;;;;;; -NGC0212;G;00:40:13.33;-56:09:10.9;Phe;1.91;1.42;122;14.43;;11.10;10.29;10.09;24.47;E-S0;;;;;;;;2MASX J00401332-5609108,ESO 150-018,ESO-LV 150-0180,PGC 002417;;; -NGC0213;G;00:41:10.00;+16:28:09.8;Psc;1.44;1.11;100;14.23;;10.85;10.17;9.91;23.99;Sa;;;;;;;;2MASX J00411000+1628101,MCG +03-02-023,PGC 002469,UGC 00436;;; -NGC0214;G;00:41:28.03;+25:29:58.0;And;1.87;1.30;42;13.00;;10.16;9.58;9.21;22.74;SABc;;;;;;;;2MASX J00412801+2529576,IRAS 00387+2513,MCG +04-02-044,PGC 002479,SDSS J004128.03+252957.7,UGC 00438;;; -NGC0215;G;00:40:48.87;-56:12:50.6;Phe;1.15;0.92;118;14.08;;10.84;10.17;9.84;23.11;E-S0;;;;;;;;2MASX J00404885-5612504,ESO 150-019,ESO-LV 150-0190,PGC 002451;;; -NGC0216;G;00:41:27.15;-21:02:43.6;Cet;1.35;0.63;27;13.52;13.12;11.41;10.83;10.56;23.05;S0;;;;;;;;2MASX J00412688-2102529,ESO 540-015,ESO-LV 540-0150,MCG -04-02-035,PGC 002478;;; -NGC0217;G;00:41:33.89;-10:01:17.1;Cet;3.20;0.69;113;13.00;12.10;9.85;8.74;8.70;24.04;SBa;;;;;;;;2MASX J00413390-1001169,MCG -02-02-085,PGC 002482,SDSS J004133.89-100117.1;;; -NGC0218;G;00:46:31.99;+36:19:32.2;And;1.32;0.71;46;13.60;;11.19;10.47;10.15;22.62;Sc;;;;;;;;2MASX J00463200+3619318,IRAS 00438+3603,MCG +06-02-016,PGC 002720,UGC 00480;;; -NGC0219;G;00:42:11.31;+00:54:16.4;Cet;0.59;0.46;177;15.60;;12.09;11.39;11.17;23.11;E;;;;;;;;2MASX J00421129+0054161,MCG +00-02-128,PGC 002522,SDSS J004211.31+005416.3,SDSS J004211.31+005416.4;;; -NGC0220;OCl;00:40:29.89;-73:24:14.3;Tuc;1.20;1.20;;14.61;14.39;;;;;;;;;;;;;ESO 029-003;;In the Small Magellanic Cloud.; -NGC0221;G;00:42:41.83;+40:51:55.0;And;7.74;4.86;170;9.03;8.08;6.28;5.37;5.10;22.17;E;;;;032;;;;2MASX J00424182+4051546,IRAS 00399+4035,MCG +07-02-015,PGC 002555,UGC 00452;;; -NGC0222;OCl;00:40:43.71;-73:23:08.5;Tuc;1.20;1.20;;12.84;12.64;;;;;;;;;;;;;ESO 029-004;;In the Small Magellanic Cloud.; -NGC0223;G;00:42:15.88;+00:50:43.8;Cet;1.18;0.78;63;14.22;;11.29;10.68;10.36;23.45;S0-a;;;;;;0044;;2MASX J00421585+0050432,MCG +00-02-129,PGC 002527,SDSS J004215.86+005043.6,SDSS J004215.87+005043.7,UGC 00450;;; -NGC0224;G;00:42:44.35;+41:16:08.6;And;177.83;69.66;35;4.36;3.44;2.09;1.28;0.98;23.63;Sb;;;;031;;;;2MASX J00424433+4116074,IRAS 00400+4059,MCG +07-02-016,PGC 002557,UGC 00454;Andromeda Galaxy;; -NGC0225;OCl;00:43:36.38;+61:46:01.0;Cas;4.20;;;7.43;7.00;;;;;;;;;;;;;MWSC 0068;;; -NGC0226;G;00:42:54.04;+32:34:51.5;And;0.79;0.78;130;14.40;;12.03;11.37;11.11;22.73;E-S0;;;;;;;;2MASX J00425403+3234516,IRAS 00402+3218,PGC 002572,UGC 00459;;; -NGC0227;G;00:42:36.83;-01:31:43.6;Cet;1.91;1.44;156;13.70;;10.07;9.38;9.09;23.38;E;;;;;;;;2MASX J00423684-0131436,MCG +00-02-135,PGC 002547,UGC 00456;;; -NGC0228;G;00:42:54.51;+23:30:11.0;And;0.89;0.81;145;14.90;;11.55;10.90;10.61;23.28;Sab;;;;;;;;2MASX J00425452+2330108,MCG +04-02-048,PGC 002563,UGC 00458;;; -NGC0229;G;00:43:04.64;+23:30:32.8;And;1.08;0.48;98;14.70;;11.59;10.93;10.73;23.67;S0;;;;;;;;2MASX J00430463+2330328,MCG +04-02-049,PGC 002577;;; -NGC0230;G;00:42:27.17;-23:37:43.7;Cet;1.30;0.28;44;15.62;;12.42;11.69;11.26;24.15;Sa;;;;;;;;2MASX J00422719-2337436,ESO 474-014,ESO-LV 474-0140,IRAS 00399-2354,MCG -04-02-037,PGC 002539;;; -NGC0231;OCl;00:41:06.43;-73:21:08.7;Tuc;1.80;1.80;;13.14;12.87;;;;;;;;;;;;;ESO 029-005;;In the Small Magellanic Cloud.; -NGC0232;G;00:42:45.82;-23:33:40.9;Cet;0.98;0.70;17;14.43;;11.04;10.26;9.87;22.96;SBa;;;;;0232W;;;2MASX J00424581-2333406,ESO 474-015,ESO-LV 474-0150,IRAS 00402-2350,MCG -04-02-040,PGC 002559;;; -NGC0233;G;00:43:36.56;+30:35:13.2;And;1.25;1.11;120;13.80;;10.57;9.82;9.62;23.25;E;;;;;;;;2MASX J00433654+3035132,MCG +05-02-041,PGC 002604,UGC 00464;;; -NGC0234;G;00:43:32.39;+14:20:33.2;Psc;1.57;1.22;75;13.50;;10.42;9.65;9.41;23.04;SABc;;;;;;;;2MASX J00433238+1420334,HD ,IRAS 00409+1404,MCG +02-02-028,PGC 002600,SDSS J004332.39+142033.2,SDSS J004332.39+142033.3,UGC 00463;;; -NGC0235;GPair;00:42:53.20;-23:32:36.0;Cet;2.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC0235A;G;00:42:52.81;-23:32:27.7;Cet;1.38;0.62;120;14.24;;10.58;9.98;10.09;23.48;S0;;;;;0232E;;;2MASX J00425279-2332276,ESO 474-016,ESO-LV 474-0160,MCG -04-02-041,PGC 002569;;; -NGC0235B;G;00:42:53.60;-23:32:44.0;Cet;1.29;1.29;;13.97;;;;;23.30;E;;;;;;;;ESO 474-017,ESO-LV 474-0170,MCG -04-02-042,PGC 002568,PGC 002570;;; -NGC0236;G;00:43:27.54;+02:57:29.5;Psc;1.15;1.03;55;14.50;;11.77;11.25;10.77;23.35;SABc;;;;;;;;2MASX J00432754+0257295,IRAS 00409+0241,MCG +00-03-001,PGC 002596,UGC 00462;;; -NGC0237;G;00:43:27.84;-00:07:29.7;Cet;1.30;0.80;174;13.65;13.06;11.19;10.57;10.26;22.66;SABc;;;;;;;;2MASX J00432788-0007295,IRAS 00408-0023,MCG +00-02-136,PGC 002597,SDSS J004327.77-000730.4,SDSS J004327.80-000741.1,SDSS J004327.84-000729.7,UGC 00461;;; -NGC0238;G;00:43:25.75;-50:10:58.2;Phe;2.02;1.60;100;13.28;;10.80;10.10;9.81;23.24;SBb;;;;;;;;2MASX J00432575-5010580,ESO 194-031,ESO-LV 194-0310,PGC 002595;;; -NGC0239;G;00:44:37.51;-03:45:33.3;Cet;0.94;0.37;10;14.00;;11.54;10.90;10.53;22.31;Sab;;;;;;;;2MASX J00443751-0345332,IRAS 00420-0401,MCG -01-03-007,PGC 002642;;; -NGC0240;G;00:45:01.93;+06:06:48.1;Psc;1.35;1.28;105;14.80;;10.94;10.21;9.99;24.10;S0-a;;;;;;;;2MASX J00450192+0606482,MCG +01-03-001,PGC 002653,UGC 00473;;; -NGC0241;OCl;00:43:31.53;-73:26:25.7;Tuc;0.95;0.95;;;;;;;;;;;;;;;;;;In the Small Magellanic Cloud.; -NGC0242;OCl;00:43:33.78;-73:26:46.7;Tuc;0.75;0.75;;12.10;;;;;;;;;;;;;;;;In the Small Magellanic Cloud.; -NGC0243;G;00:46:00.87;+29:57:34.2;And;0.92;0.51;151;14.60;;11.38;10.65;10.41;23.26;S0;;;;;;;;2MASX J00460086+2957340,MCG +05-02-043,PGC 002687;;; -NGC0244;G;00:45:46.43;-15:35:48.8;Cet;1.04;1.04;25;14.10;;11.79;11.25;11.04;22.63;S0;;;;;;;;2MASX J00454643-1535487,MCG -03-03-003,PGC 002675,UGCA 010;;MCG notes this galaxy as possibly interacting.; -NGC0245;G;00:46:05.39;-01:43:24.2;Cet;1.20;1.12;135;13.70;;10.70;9.98;9.66;22.00;Sb;;;;;;;;2MASX J00460539-0143242,IRAS 00435-0159,MCG +00-03-005,PGC 002691,UGC 00476;;; -NGC0246;PN;00:47:03.36;-11:52:19.0;Cet;4.08;;;8.00;10.90;;;;;;10.41;11.60;11.96;;;;BD -12 0134,HIP 003678,UCAC2 27592055;C 056,PN G118.8-74.7;;; -NGC0247;G;00:47:08.55;-20:45:37.4;Cet;19.68;5.55;167;9.61;9.10;8.08;7.67;7.43;23.79;SABc;;;;;;;;2MASX J00470855-2045374,C 062,ESO 540-022,ESO-LV 540-0220,MCG -04-03-005,PGC 002758,UGCA 011;;; -NGC0247A;G;00:47:28.14;-20:23:51.5;Cet;0.52;0.25;75;17.22;;;;;24.56;;;;;;;;;PGC 842319;;Position in 1989H&RHI.C...0000H and in 1975A&A....43..297B is incorrect.; -NGC0247B;G;00:47:35.15;-20:25:43.3;Cet;1.05;0.42;24;14.46;;11.93;11.43;11.21;22.61;SBb;;;;;;;;2MASX J00473516-2025432,ESO 540-023,ESO-LV 540-0230,IRAS 00451-2041,MCG -04-03-010,PGC 002791;;Position in 1989H&RHI.C...0000H and in 1975A&A....43..297B is incorrect.; -NGC0247C;GPair;00:47:37.71;-20:27:10.1;Cet;0.55;0.20;39;16.39;;;;;24.25;Sb;;;;;;;;MCG -04-03-012,PGC002798 ;;Position in 1989H&RHI.C...0000H and in 1975A&A....43..297B is incorrect.; -NGC0247D;G;00:47:36.99;-20:29:09.6;Cet;0.61;0.25;64;15.70;;;;;22.85;SBbc;;;;;;;;ESO 540-024,ESO-LV 540-0240,MCG -04-03-011,PGC 002794;;Position in 1989H&RHI.C...0000H and in 1975A&A....43..297B is incorrect.; -NGC0248;Cl+N;00:45:24.04;-73:22:47.3;Tuc;1.40;1.10;110;;;;;;;;;;;;;;;;;In the Small Magellanic Cloud.; -NGC0249;HII;00:45:32.86;-73:04:48.3;Tuc;1.10;0.70;0;13.80;;;;;;;;;;;;;;ESO 029-009;;Within boundaries of SMC.;B-Mag taken from LEDA -NGC0250;G;00:47:16.01;+07:54:36.1;Psc;1.28;0.68;156;14.90;;11.73;10.88;10.76;24.01;S0-a;;;;;;;;2MASX J00471599+0754357,IRAS 00446+0738,MCG +01-03-002,PGC 002765,UGC 00487;;; -NGC0251;G;00:47:54.03;+19:35:48.6;Psc;1.73;1.02;99;14.60;;10.70;10.05;9.82;23.88;Sc;;;;;;;;2MASX J00475403+1935485,IRAS 00452+1919,MCG +03-03-003,PGC 002806,UGC 00490;;; -NGC0252;G;00:48:01.50;+27:37:25.1;And;1.62;1.16;82;13.40;12.49;10.00;9.28;9.04;23.11;S0-a;;;;;;;;2MASX J00480148+2737257,MCG +04-03-004,PGC 002819,SDSS J004801.50+273726.2,UGC 00491;;HOLM 023A,E are stars.; -NGC0253;G;00:47:33.12;-25:17:17.6;Scl;26.79;4.58;53;8.03;13.97;4.81;4.09;3.77;22.42;SABc;;;;;;;;2MASX J00473313-2517196,C 065,ESO 474-029,ESO-LV 474-0290,IRAS 00450-2533,MCG -04-03-009,PGC 002789,UGCA 013;Sculptor Filament,Silver Coin;Extended HIPASS source; -NGC0254;G;00:47:27.61;-31:25:18.3;Scl;2.77;1.80;133;12.62;11.82;9.61;8.98;8.73;23.50;S0-a;;;;;;;;2MASX J00472759-3125181,ESO 411-015,ESO-LV 411-0150,MCG -05-03-005,PGC 002778;;The APMBGC position is 17 arcsec east-southeast of the nucleus.; -NGC0255;G;00:47:47.31;-11:28:07.3;Cet;2.04;1.85;7;12.50;;10.65;9.94;9.67;22.61;Sbc;;;;;;;;2MASX J00474730-1128073,IRAS 00452-1144,MCG -02-03-017,PGC 002802;;Confused HIPASS source; -NGC0256;OCl;00:45:53.33;-73:30:24.6;Tuc;0.90;0.90;;12.75;12.50;;;;;;;;;;;;;ESO 029-011;;In the Small Magellanic Cloud.; -NGC0257;G;00:48:01.51;+08:17:49.5;Psc;1.83;1.32;99;13.70;;10.51;9.80;9.51;23.08;Sc;;;;;;;;2MASX J00480150+0817494,IRAS 00454+0801,MCG +01-03-003,PGC 002818,UGC 00493;;; -NGC0258;G;00:48:12.79;+27:39:25.9;And;0.51;0.42;115;15.00;;12.74;12.12;11.93;22.36;Sbc;;;;;;;;2MASX J00481277+2739257,MCG +04-03-005,PGC 002829;;; -NGC0259;G;00:48:03.29;-02:46:31.2;Cet;2.86;1.09;140;13.40;;10.24;9.49;9.20;23.98;Sbc;;;;;;;;2MASX J00480328-0246310,IRAS 00455-0302,MCG -01-03-015,PGC 002820;;HOLM 022B is a star.; -NGC0260;G;00:48:34.65;+27:41:32.8;And;0.76;0.68;34;14.30;;12.51;12.13;11.47;22.58;Sc;;;;;;;;2MASX J00483464+2741329,IRAS 00458+2725,MCG +04-03-006,PGC 002844,UGC 00497;;; -NGC0261;Neb;00:46:27.91;-73:06:13.1;Tuc;1.30;1.10;110;13.00;;;;;;;;;;;;;;ESO 029-012,IRAS 00447-7322;;In the Small Magellanic Cloud.;B-Mag taken from LEDA -NGC0262;G;00:48:47.14;+31:57:25.1;And;1.17;0.62;40;13.90;13.06;11.24;10.55;10.10;23.26;S0-a;;;;;;;;2MASX J00484711+3157249,IRAS 00461+3141,MCG +05-03-008,PGC 002855,UGC 00499;;; -NGC0263;G;00:48:48.47;-13:06:26.6;Cet;0.80;0.40;48;14.00;;12.31;11.69;11.60;22.82;Sbc;;;;;;;;2MASX J00484847-1306266,MCG -02-03-021,PGC 002856;;; -NGC0264;G;00:48:20.94;-38:14:03.7;Scl;1.26;0.47;111;14.42;;11.29;10.63;10.44;23.68;S0;;;;;;;;2MASX J00482094-3814038,ESO 295-006,ESO-LV 295-0060,MCG -07-02-016,PGC 002831;;; -NGC0265;OCl;00:47:10.16;-73:28:37.8;Tuc;1.20;1.20;;12.52;12.17;;;;;;;;;;;;;ESO 029-014;;In the Small Magellanic Cloud.; -NGC0266;G;00:49:47.80;+32:16:39.8;Psc;2.92;2.83;95;12.54;11.63;9.64;8.96;8.67;23.68;Sab;;;;;;;;2MASX J00494779+3216398,IRAS 00471+3200,MCG +05-03-009,PGC 002901,SDSS J004947.80+321639.8,UGC 00508;;; -NGC0267;OCl;00:48:02.90;-73:16:26.5;Tuc;2.00;1.70;170;;;;;;;;;;;;;;;ESO 029-015;;; -NGC0268;G;00:50:09.56;-05:11:37.4;Cet;1.42;0.93;93;13.60;;11.38;10.80;10.37;22.70;Sbc;;;;;;;;2MASX J00500956-0511376,IRAS 00476-0527,MCG -01-03-017,PGC 002927;;; -NGC0269;OCl;00:48:22.03;-73:31:53.5;Tuc;1.20;1.20;;12.98;12.59;;;;;;;;;;;;;ESO 029-016;;; -NGC0270;G;00:50:32.52;-08:39:05.9;Cet;1.77;1.24;29;13.00;;10.56;9.88;9.59;23.75;S0-a;;;;;;;;2MASX J00503252-0839057,MCG -02-03-027,PGC 002938;;; -NGC0271;G;00:50:41.86;-01:54:36.9;Cet;2.38;1.28;131;13.20;;9.74;9.07;8.76;23.40;Sab;;;;;;;;2MASX J00504184-0154367,MCG +00-03-012,PGC 002949,UGC 00519;;; -NGC0272;OCl;00:51:25.16;+35:49:18.3;And;;;;;;;;;;;;;;;;;;;;; -NGC0273;G;00:50:48.45;-06:53:08.5;Cet;1.96;0.54;105;13.00;;10.68;9.97;9.73;23.98;S0;;;;;;;;2MASX J00504843-0653087,MCG -01-03-019,PGC 002959;;; -NGC0274;G;00:51:01.86;-07:03:25.0;Cet;1.27;1.08;158;13.00;;10.18;9.05;9.19;22.67;E-S0;;;;;;;;2MASX J00510187-0703247,MCG -01-03-021,PGC 002980;;; -NGC0275;G;00:51:04.20;-07:04:00.0;Cet;1.75;1.39;79;12.51;;;;;22.57;SBc;;;;;;;;MCG -01-03-022,PGC 002984;;; -NGC0276;G;00:52:06.57;-22:40:48.5;Cet;1.10;0.36;88;15.75;;12.41;11.59;11.21;23.94;SABb;;;;;;1591;;2MASX J00520656-2240486,ESO 474-034,ESO-LV 474-0340,IRAS 00496-2257,MCG -04-03-021,PGC 003054;;; -NGC0277;G;00:51:17.23;-08:35:48.6;Cet;1.34;1.11;91;13.00;;11.10;10.44;10.26;23.75;E-S0;;;;;;;;2MASX J00511725-0835485,MCG -02-03-028,PGC 002995;;; -NGC0278;G;00:52:04.31;+47:33:01.8;Cas;2.36;2.30;30;10.50;;8.74;8.10;7.82;22.08;SABb;;;;;;;;2MASX J00520430+4733019,IRAS 00492+4716,MCG +08-02-016,PGC 003051,UGC 00528;;; -NGC0279;G;00:52:08.95;-02:13:06.4;Cet;1.41;1.06;167;14.00;;10.53;9.82;9.58;23.43;S0-a;;;;;;;;2MASX J00520893-0213064,IRAS 00495-0229,MCG +00-03-019a,PGC 003055,UGC 00532;;; -NGC0280;G;00:52:30.26;+24:21:02.1;Psc;1.00;0.66;89;14.60;;11.26;10.58;10.41;23.05;SABb;;;;;;;;2MASX J00523026+2421022,IRAS 00498+2404,MCG +04-03-013,PGC 003076,UGC 00534;;The UZC position includes the superposed companion UGC 00534 NOTES01.; -NGC0281;HII;00:52:59.35;+56:37:18.8;Cas;35.00;30.00;;;;;;;;;;;;;;0011;;LBN 616;;; -NGC0282;G;00:52:42.15;+30:38:20.6;Psc;1.25;0.97;50;14.70;;11.11;10.47;10.18;23.86;E;;;;;;;;2MASX J00524213+3038208,MCG +05-03-015,PGC 003090;;; -NGC0283;G;00:53:13.21;-13:09:50.0;Cet;1.14;0.62;0;14.00;;11.94;11.14;11.00;23.69;Sc;;;;;;;;2MASX J00531321-1309502,IRAS 00507-1326,MCG -02-03-031,PGC 003124;;; -NGC0284;G;00:53:24.27;-13:09:31.9;Cet;0.62;0.55;142;15.52;;12.25;11.57;11.17;23.60;E;;;;;;;;2MASX J00532423-1309321,MCG -02-03-032,PGC 003131;;; -NGC0285;G;00:53:29.89;-13:09:38.6;Cet;0.76;0.65;36;14.90;;11.77;11.07;10.73;23.85;E-S0;;;;;;;;2MASX J00532985-1309381,MCG -02-03-033,PGC 003141;;; -NGC0286;G;00:53:30.38;-13:06:46.0;Cet;0.88;0.42;179;14.00;;11.96;11.32;11.02;23.73;S0;;;;;;;;2MASX J00533032-1306461,MCG -02-03-034,PGC 003142;;; -NGC0287;G;00:53:28.29;+32:28:56.3;Psc;0.83;0.64;16;14.80;;11.48;10.83;10.48;23.13;S0-a;;;;;;;;2MASX J00532830+3228561,PGC 003145;;; -NGC0288;GCl;00:52:47.45;-26:35:23.6;Scl;9.60;;;10.00;8.13;;;;;;;;;;;;;MWSC 0084;;; -NGC0289;G;00:52:42.36;-31:12:21.0;Scl;3.36;2.51;129;11.36;13.44;8.86;8.30;8.00;22.84;SBbc;;;;;;;;2MASX J00524236-3112209,ESO 411-025,ESO-LV 411-0250,IRAS 00502-3128,MCG -05-03-010,PGC 003089;;Extended HIPASS source; -NGC0290;OCl;00:51:14.18;-73:09:41.5;Tuc;1.10;1.10;;12.10;11.71;;;;;;;;;;;;;ESO 029-019;;; -NGC0291;G;00:53:29.92;-08:46:04.1;Cet;0.98;0.53;55;14.00;;11.86;11.06;10.59;23.20;SBa;;;;;;;;2MASX J00532993-0846034,IRAS 00510-0901,MCG -02-03-035,PGC 003140,SDSS J005329.91-084604.0,SDSS J005329.92-084604.0,SDSS J005329.92-084604.1;;; -NGC0292;G;00:52:44.78;-72:49:43.0;Tuc;299.92;179.89;45;2.79;2.20;;;;23.42;SBm;;;;;;;;ESO 029-021,PGC 003085;Small Magellanic Cloud;; -NGC0293;G;00:54:15.96;-07:14:07.7;Cet;1.12;0.63;15;14.00;;12.17;11.50;11.21;23.57;Sb;;;;;;;;2MASX J00541594-0714079,IRAS 00517-0730,MCG -01-03-030,PGC 003195;;; -NGC0294;OCl;00:53:04.71;-73:22:49.3;Tuc;1.70;1.70;;12.67;12.24;;;;;;;;;;;;;ESO 029-022;;In the Small Magellanic Cloud.; -NGC0296;G;00:55:07.51;+31:32:32.2;Psc;2.23;0.88;164;13.50;;10.23;9.52;9.14;22.92;Sb;;;;;;;;2MASX J00550752+3132322,IRAS 00523+3116,MCG +05-03-024,PGC 003260,UGC 00562;;Misidentified as NGC 0295 in MCG, CGCG, and UGC.; -NGC0297;G;00:54:58.94;-07:20:58.8;Cet;0.35;0.29;101;16.88;;13.23;12.50;12.09;23.50;E;;;;;;;;2MASX J00545892-0720591,PGC 1020464;;; -NGC0298;G;00:55:02.35;-07:19:59.1;Cet;1.47;0.49;92;14.70;;11.97;11.56;11.31;24.46;Sc;;;;;;;;2MASX J00550234-0719591,MCG -01-03-033,PGC 003250,SDSS J005502.34-071958.7;;; -NGC0299;OCl;00:53:24.07;-72:11:49.6;Tuc;0.90;0.90;;12.05;11.73;;;;;;;;;;;;;ESO 051-005;;; -NGC0300;G;00:54:53.48;-37:41:03.8;Scl;19.41;13.06;114;8.69;8.13;7.04;6.57;6.38;23.59;Scd;;;;;;;;2MASX J00545347-3741037,C 070,ESO 295-020,ESO-LV 295-0200,IRAS 00525-3757,MCG -06-03-005,PGC 003238;;; -NGC0301;G;00:56:18.35;-10:40:26.0;Cet;0.64;0.59;80;15.47;;12.55;11.88;11.63;23.33;Sa;;;;;;;;2MASX J00561836-1040258,PGC 003345,SDSS J005618.34-104025.9,SDSS J005618.35-104025.9,SDSS J005618.35-104026.0;;; -NGC0302;*;00:56:25.31;-10:39:47.6;Cet;;;;;;;;;;;;;;;;;;SDSS J005625.30-103947.6;;NGC identification is uncertain.; -NGC0303;G;00:54:54.71;-16:39:16.6;Cet;0.73;0.26;160;15.47;;12.84;12.09;11.74;23.32;S0-a;;;;;;;;2MASX J00545443-1639126,2MASX J00545471-1639166,PGC 003240;;; -NGC0304;G;00:56:06.02;+24:07:36.8;And;1.17;0.76;175;13.69;12.67;10.70;10.00;9.72;23.12;S0;;;;;;;;2MASX J00560603+2407367,MCG +04-03-018,PGC 003326,UGC 00573;;; -NGC0305;Other;00:56:20.92;+12:03:54.4;Psc;;;;;;;;;;;;;;;;;;;;Six Galactic stars.; -NGC0306;OCl;00:54:14.18;-72:14:32.4;Tuc;1.10;1.10;;12.23;12.07;;;;;;;;;;;;;ESO 029-023;;In the Small Magellanic Cloud.; -NGC0307;G;00:56:32.58;-01:46:19.0;Cet;1.61;0.67;79;14.10;;10.61;9.88;9.66;23.49;S0;;;;;;;;2MASX J00563259-0146189,MCG +00-03-035,PGC 003367,SDSS J005632.56-014619.0,UGC 00584;;; -NGC0308;*;00:56:34.22;-01:47:02.1;Cet;;;;;;;;;;;;;;;;;;;;; -NGC0309;G;00:56:42.66;-09:54:49.9;Cet;2.23;1.95;100;12.70;;10.16;9.61;9.22;23.09;SABc;;;;;;;;2MASX J00564266-0954500,IRAS 00542-1010,MCG -02-03-050,PGC 003377,SDSS J005642.65-095449.7,SDSS J005642.66-095449.9;;HOLM 027B is a star.; -NGC0310;*;00:56:47.98;-01:45:56.8;Cet;;;;;;;;;;;;;;;;;;;;; -NGC0311;G;00:57:32.73;+30:16:50.7;Psc;1.36;0.69;118;14.00;13.00;10.71;10.02;9.74;23.38;S0;;;;;;;;2MASX J00573274+3016508,MCG +05-03-028,PGC 003434,UGC 00592;;; -NGC0312;G;00:56:15.93;-52:46:57.7;Phe;1.84;1.38;65;13.40;;10.41;9.75;9.49;23.59;E;;;;;;;;2MASX J00561593-5246576,ESO 151-006,ESO-LV 151-0060,PGC 003343;;; -NGC0313;Other;00:57:45.64;+30:21:57.9;Psc;;;;;;;;;;;;;;;;;;;;Galactic triple star; -NGC0314;G;00:56:52.41;-31:57:46.7;Scl;1.00;0.77;170;14.23;;11.60;10.99;10.70;23.12;S0-a;;;;;;;;2MASX J00565241-3157466,ESO 411-032,ESO-LV 411-0320,IRAS 00544-3214,MCG -05-03-015,PGC 003395;;; -NGC0315;G;00:57:48.88;+30:21:08.8;Psc;2.86;2.14;45;12.20;11.16;8.95;8.21;7.96;23.35;E;;;;;;;;2MASX J00574891+3021083,MCG +05-03-031,PGC 003455,UGC 00597;;; -NGC0316;*;00:57:52.45;+30:21:15.5;Psc;;;;16.80;;13.33;12.88;12.78;;;;;;;;;;2MASS J00575244+3021150;;; -NGC0317A;G;00:57:39.05;+43:48:02.8;And;1.21;0.96;7;14.22;13.56;11.31;9.99;9.96;23.98;Sa;;;;;;;;2MASX J00573909+4348024,MCG +07-03-009,PGC 003442,UGC 00593;;87GB source with large sky, narrow minor axis, or very bad confusion.; -NGC0317B;G;00:57:40.45;+43:47:32.1;And;0.97;0.45;94;14.16;13.94;11.93;11.32;10.89;21.83;SBbc;;;;;;;;2MASX J00574168+4347334,IRAS 00548+4331,MCG +07-03-010,PGC 003445,SDSS J005740.42+434732.0,UGC 00594;;; -NGC0318;G;00:58:05.23;+30:25:31.9;Psc;0.60;0.29;5;15.20;;11.87;11.14;10.90;22.84;S0;;;;;;;;2MASX J00580522+3025323,PGC 003465;;; -NGC0319;G;00:56:57.60;-43:50:19.6;Phe;1.00;0.74;33;14.25;;11.85;11.14;11.09;22.96;Sa;;;;;;;;2MASX J00565761-4350196,ESO 243-013,ESO-LV 243-0130,MCG -07-03-001,PGC 003398;;; -NGC0320;G;00:58:46.53;-20:50:24.3;Cet;0.89;0.49;156;14.55;;11.85;11.15;10.92;22.95;S0-a;;;;;;;;2MASX J00584655-2050245,ESO 541-003,ESO-LV 541-0030,IRAS 00563-2106,MCG -04-03-037,PGC 003510;;; -NGC0321;G;00:57:39.23;-05:05:10.3;Cet;0.45;0.35;103;16.00;;12.55;11.77;11.52;22.98;E;;;;;;;;2MASX J00573925-0505098,MCG -01-03-043,PGC 003443;;; -NGC0322;G;00:57:10.01;-43:43:37.5;Phe;1.15;0.57;154;14.29;;11.31;10.64;10.36;23.33;S0;;;;;;;;2MASX J00570999-4343376,ESO 243-015,ESO-LV 243-0150,MCG -07-03-003,PGC 003412;;; -NGC0323;G;00:56:41.65;-52:58:33.3;Phe;1.82;1.52;166;13.55;;10.47;9.77;9.45;23.73;E;;;;;;;;2MASX J00564165-5258332,ESO 151-009,ESO-LV 151-0090,PGC 003374;;; -NGC0324;G;00:57:14.78;-40:57:32.8;Phe;1.48;0.62;95;14.06;;10.85;10.19;9.89;23.48;S0;;;;;;;;2MASX J00571478-4057329,ESO 295-025,ESO-LV 295-0250,MCG -07-03-002,PGC 003416;;; -NGC0325;G;00:57:47.87;-05:06:43.5;Cet;1.19;0.23;90;15.00;;12.02;11.28;11.09;23.05;Sc;;;;;;;;2MASX J00574786-0506435,MCG -01-03-045,PGC 003454;;; -NGC0326;GPair;00:58:22.70;+26:51:55.0;Psc;1.00;;;;;;;;;;;;;;;;;MCG +04-03-025,UGC 00601;;;Diameter of the group inferred by the author. -NGC0326 NED01;G;00:58:22.64;+26:51:58.5;Psc;1.00;0.89;17;14.90;13.00;11.29;10.48;10.10;23.22;E;;;;;;;;2MASX J00582263+2651586,MCG +04-03-025 NED01,PGC 003482,UGC 00601 NOTES01;;; -NGC0326 NED02;G;00:58:22.85;+26:51:52.4;Psc;;;;;;;;;;;;;;;;;;MCG +04-03-025 NED02,UGC 00601 NOTES02;;; -NGC0327;G;00:57:55.36;-05:07:49.5;Cet;1.39;0.63;2;13.00;;11.19;10.53;10.24;23.14;SBbc;;;;;;;;2MASX J00575536-0507495,MCG -01-03-047,PGC 003462;;; -NGC0328;G;00:56:57.57;-52:55:26.1;Phe;2.46;0.71;103;14.28;;10.99;10.30;9.97;24.19;SBa;;;;;;;;2MASX J00565758-5255262,ESO 151-013,ESO-LV 151-0130,PGC 003399;;; -NGC0329;G;00:58:01.60;-05:04:16.4;Cet;1.59;0.64;10;13.00;;11.14;10.37;10.08;23.41;Sb;;;;;;;;2MASX J00580158-0504165,MCG -01-03-048,PGC 003467;;; -NGC0330;OCl;00:56:17.65;-72:27:46.6;Tuc;2.80;2.50;120;9.76;9.55;;;;;;;;;;;;;ESO 029-024;;In the Small Magellanic Cloud.; -NGC0331;G;00:47:06.86;-02:43:52.1;Cet;0.96;0.60;127;14.90;;12.29;11.65;11.09;23.66;Sbc;;;;;;;;2MASX J00470684-0243526,MCG -01-03-012,PGC 002759;;NGC identification is very uncertain.; -NGC0332;G;00:58:49.13;+07:06:40.7;Psc;1.37;1.31;155;14.90;;11.32;10.56;10.32;24.26;E-S0;;;;;;;;2MASX J00584912+0706406,PGC 003511,UGC 00609;;; -NGC0333A;G;00:58:51.31;-16:28:09.1;Cet;0.41;0.34;131;16.00;;;;;;E-S0;;;;;;;;MCG -03-03-012;;; -NGC0333B;G;00:58:51.09;-16:28:17.2;Cet;1.50;0.80;116;13.92;;11.35;10.70;10.28;24.40;S0;;;;;;;;2MASX J00585131-1628092,MCG -03-03-013,PGC 003519;;; -NGC0334;G;00:58:49.81;-35:06:57.7;Scl;1.08;0.65;178;14.64;;11.91;11.22;10.88;23.12;SBb;;;;;;;;2MASX J00584979-3506577,ESO 351-026,ESO-LV 351-0260,IRAS 00564-3523,MCG -06-03-012,PGC 003514;;; -NGC0335;G;00:59:19.78;-18:14:04.8;Cet;1.28;0.41;135;15.12;;12.02;11.10;10.76;23.59;Sbc;;;;;;;;2MASX J00591978-1814045,ESO 541-006,ESO-LV 541-0060,IRAS 00568-1830,MCG -03-03-015,PGC 003544;;; -NGC0336;G;00:58:02.83;-18:23:03.6;Cet;0.75;0.30;38;15.44;;13.55;13.13;12.43;23.50;S0-a;;;;;;;;2MASX J00580282-1823032,ESO 541-002,ESO-LV 541-0020,IRAS 00555-1839,PGC 003470;;; -NGC0337;G;00:59:50.09;-07:34:40.7;Cet;2.92;1.89;158;12.06;11.61;9.98;9.39;9.10;22.70;SBcd;;;;;;;;2MASX J00595009-0734406,IRAS 00573-0750,MCG -01-03-053,PGC 003572;;; -NGC0337A;G;01:01:33.90;-07:35:17.7;Cet;2.63;1.73;8;12.70;12.17;;;;23.37;SABd;;;;;;;;MCG -01-03-065,PGC 003671,SDSS J010133.98-073518.7;;; -NGC0338;G;01:00:36.41;+30:40:08.3;Psc;1.75;0.66;107;14.00;;10.33;9.56;9.26;22.95;Sab;;;;;;;;2MASX J01003640+3040081,IRAS 00578+3024,MCG +05-03-034,PGC 003611,UGC 00624;;; -NGC0339;GCl;00:57:42.06;-74:28:24.2;Tuc;2.90;2.90;;12.94;12.21;;;;;;;;;;;;;ESO 029-025;;; -NGC0340;G;01:00:34.88;-06:51:59.7;Cet;0.94;0.39;78;14.80;;11.86;11.15;10.89;22.51;Sb;;;;;;;;2MASX J01003488-0651597,IRAS 00580-0708,MCG -01-03-055,PGC 003610;;; -NGC0341;G;01:00:45.83;-09:11:08.5;Cet;1.25;1.14;145;14.10;;11.20;10.50;10.17;23.14;Sbc;;;;;;;;2MASX J01004581-0911087,MCG -02-03-063,PGC 003620,SDSS J010045.82-091108.5,SDSS J010045.82-091108.6,SDSS J010045.83-091108.5;;MRK says 'Data refer to nucleus'.; -NGC0342;G;01:00:49.86;-06:46:21.2;Cet;0.91;0.43;100;14.50;;11.50;10.77;10.51;23.99;E;;;;;;;;2MASX J01004985-0646207,MCG -01-03-058,PGC 003631;;; -NGC0343;Dup;00:58:23.93;-23:13:30.8;Cet;;;;;;;;;;;;;;;0344;;;;;; -NGC0344;G;00:58:23.93;-23:13:30.8;Cet;0.46;0.28;10;16.29;;12.69;11.89;11.92;23.48;Sc;;;;;0343;;;2MASX J00582406-2313296;;NGC identification is not certain.; -NGC0345;G;01:01:22.10;-06:53:03.4;Cet;0.98;0.58;100;13.50;;11.00;10.29;10.01;23.23;Sa;;;;;;;;2MASX J01012211-0653034,MCG -01-03-064,PGC 003665;;; -NGC0346;OCl;00:59:05.04;-72:10:37.6;Tuc;8.50;8.50;;;;;;;;;;;;;;;;ESO 051-010;;; -NGC0347;G;01:01:35.16;-06:44:01.2;Cet;0.60;0.46;105;15.54;;12.76;12.14;11.71;23.35;;;;;;;;;2MASX J01013515-0644012,MCG -01-03-063,PGC 003673;;IC 0071 is a star.; -NGC0348;G;01:00:52.01;-53:14:40.2;Phe;0.84;0.72;93;14.58;;12.02;11.29;11.23;22.84;Sb;;;;;;;;2MASX J01005202-5314402,ESO 151-017,ESO-LV 151-0170,PGC 003632;;; -NGC0349;G;01:01:50.75;-06:47:59.3;Cet;1.34;1.16;60;13.50;;10.29;9.58;9.29;23.43;E-S0;;;;;;;;2MASX J01015074-0647594,MCG -01-03-068,PGC 003687;;; -NGC0350;G;01:01:56.71;-06:47:44.6;Cet;0.79;0.52;85;15.00;;11.52;10.83;10.58;23.63;E-S0;;;;;;;;2MASX J01015671-0647444,MCG -01-03-069,PGC 003690;;; -NGC0351;G;01:01:57.84;-01:56:12.3;Cet;1.53;0.75;140;14.30;;10.86;10.17;9.93;23.62;S0-a;;;;;;;;2MASX J01015784-0156124,MCG +00-03-057,PGC 003693,UGC 00639;;; -NGC0352;G;01:02:09.21;-04:14:43.7;Cet;2.29;0.78;170;12.50;;10.23;9.53;9.25;23.30;SBb;;;;;;;;2MASX J01020920-0414436,IRAS 00596-0430,MCG -01-03-071,PGC 003701;;; -NGC0353;G;01:02:24.53;-01:57:31.9;Cet;1.26;0.46;23;14.70;;11.62;10.86;10.61;23.31;SBab;;;;;;;;2MASX J01022454-0157326,IRAS 00598-0213,MCG +00-03-058,PGC 003714,UGC 00641;;; -NGC0354;G;01:03:16.39;+22:20:33.6;Psc;0.90;0.40;33;14.20;;11.38;10.66;10.31;22.32;SBb;;;;;;;;2MASX J01031641+2220338,IRAS 01005+2204,MCG +04-03-037,PGC 003763,UGC 00645;;; -NGC0355;G;01:03:06.98;-06:19:26.4;Cet;0.73;0.33;76;15.00;;12.68;11.90;11.78;24.34;S0;;;;;;;;2MASX J01030695-0619252,MCG -01-03-077,PGC 003753;;; -NGC0356;G;01:03:07.10;-06:59:18.1;Cet;1.75;0.94;65;13.50;;10.73;9.96;9.66;23.42;SABb;;;;;;;;2MASX J01030710-0659182,IRAS 01005-0715,MCG -01-03-078,PGC 003754;;; -NGC0357;G;01:03:21.88;-06:20:21.2;Cet;2.11;1.69;4;12.00;;9.51;8.82;8.48;23.47;S0-a;;;;;;;;2MASX J01032187-0620213,MCG -01-03-081,PGC 003768;;; -NGC0358;Other;01:05:10.93;+62:01:13.6;Cas;;;;;;;;;;;;;;;;;;;;Four Galactic stars; -NGC0359;G;01:04:16.96;-00:45:53.7;Cet;1.28;0.85;136;14.80;;11.29;10.57;10.31;23.85;E-S0;;;;;;;;2MASX J01041697-0045532,MCG +00-03-066,PGC 003817,SDSS J010416.96-004553.6,SDSS J010416.96-004553.7,SDSS J010416.97-004553.8,UGC 00662;;; -NGC0360;G;01:02:51.45;-65:36:35.9;Tuc;3.99;0.57;146;13.42;;10.19;9.41;9.11;23.75;Sbc;;;;;;;;2MASX J01025144-6536359,ESO 079-014,ESO-LV 79-0140,IRAS 01009-6552,PGC 003743;;; -NGC0361;OCl;01:02:10.16;-71:36:17.1;Tuc;2.60;2.60;;12.43;11.77;;;;;;;;;;;;;ESO 051-012;;In the Small Magellanic Cloud.; -NGC0362;GCl;01:03:14.23;-70:50:53.6;Tuc;8.70;;;7.97;6.58;;;;;;;;;;;;;C 104,MWSC 0099;;; -NGC0363;G;01:06:15.79;-16:32:33.9;Cet;0.82;0.60;43;15.00;;11.86;11.13;10.93;23.89;S0;;;;;;;;2MASX J01061580-1632343,MCG -03-03-023,PGC 003911;;; -NGC0364;G;01:04:40.83;-00:48:09.9;Cet;1.40;0.57;33;14.60;;10.83;10.16;9.84;23.79;S0;;;;;;;;2MASX J01044087-0048095,MCG +00-03-069,PGC 003833,SDSS J010440.82-004809.9,SDSS J010440.83-004809.8,SDSS J010440.83-004809.9,SDSS J010440.83-004810.0,UGC 00666;;UGC misprints dec as -01d30'. UGC galactic coordinates are correct.; -NGC0365;G;01:04:18.72;-35:07:17.1;Scl;1.01;0.60;5;14.25;;12.08;11.48;11.05;22.60;SBbc;;;;;;;;2MASX J01041872-3507171,ESO 352-001,ESO-LV 352-0010,IRAS 01019-3523,MCG -06-03-017,PGC 003822,TYC 7001-1619-1;;; -NGC0366;OCl;01:06:25.99;+62:13:44.1;Cas;5.10;;;;;;;;;;;;;;;;;MWSC 0102;;; -NGC0367;G;01:05:48.89;-12:07:42.5;Cet;0.96;0.35;17;15.32;;12.71;12.12;11.82;23.25;Sc;;;;;;;;2MASX J01054888-1207423,PGC 003894;;; -NGC0368;G;01:04:22.04;-43:16:36.3;Phe;0.72;0.62;160;14.66;;12.01;11.32;11.09;22.73;S0-a;;;;;;;;2MASX J01042204-4316363,ESO 243-023,ESO-LV 243-0230,PGC 003826;;; -NGC0369;G;01:05:08.91;-17:45:33.1;Cet;0.95;0.77;48;14.61;;11.90;11.26;11.06;23.05;Sb;;;;;;;;2MASX J01050889-1745331,ESO 541-017,ESO-LV 541-0170,MCG -03-03-022,PGC 003856;;; -NGC0370;Other;01:06:44.59;+32:25:43.3;Psc;;;;;;;;;;;;;;;0372;;;;;Galactic triple star; -NGC0371;OCl;01:03:29.53;-72:03:24.6;Tuc;4.20;3.80;60;;;;;;;;;;;;;;;ESO 051-014;;; -NGC0372;Dup;01:06:44.59;+32:25:43.3;Psc;;;;;;;;;;;;;;;0370;;;;;; -NGC0373;G;01:06:58.21;+32:18:30.5;Psc;0.52;0.45;146;;;12.50;11.81;11.58;23.41;E;;;;;;;;2MASX J01065819+3218304,PGC 003946;;; -NGC0374;G;01:07:05.78;+32:47:42.4;Psc;1.30;0.58;177;14.30;;10.84;10.17;9.98;23.37;S0-a;;;;;;;;2MASX J01070577+3247425,MCG +05-03-048,PGC 003952,UGC 00680;;; -NGC0375;G;01:07:05.92;+32:20:53.4;Psc;0.48;0.38;100;16.50;;12.49;11.74;11.47;22.57;E;;;;;;;;2MASX J01070592+3220534,PGC 003953;;MCG incorrectly identifies NGC 0375 with MCG +05-03-049.; -NGC0376;OCl;01:03:53.45;-72:49:25.2;Tuc;1.80;1.80;;11.16;10.90;;;;;;;;;;;;;ESO 029-029;;In the Small Magellanic Cloud.; -NGC0377;G;01:06:34.82;-20:19:57.2;Cet;0.98;0.27;24;16.30;;12.71;11.92;11.47;24.09;Sb;;;;;;;;ESO 541-019,ESO-LV 541-0190,MCG -04-03-053,PGC 003931;;; -NGC0378;G;01:06:12.21;-30:10:41.3;Scl;1.52;1.11;75;13.83;;11.41;10.73;10.38;23.17;Sc;;;;;;;;2MASX J01061222-3010411,ESO 412-005,ESO-LV 412-0050,IRAS 01038-3026,MCG -05-03-024,PGC 003907;;; -NGC0379;G;01:07:15.69;+32:31:13.3;Psc;1.41;0.68;2;14.00;;10.46;9.72;9.40;23.25;S0;;;;;;;;2MASX J01071567+3231131,MCG +05-03-050,PGC 003966,UGC 00683;;; -NGC0380;G;01:07:17.59;+32:28:58.5;Psc;1.45;1.35;80;13.90;;10.27;9.52;9.26;23.22;E;;;;;;;;2MASX J01071757+3228581,MCG +05-03-051,PGC 003969,UGC 00682;;; -NGC0381;OCl;01:08:18.01;+61:34:59.8;Cas;6.00;;;;9.30;;;;;;;;;;;;;MWSC 0105;;; -NGC0382;G;01:07:23.87;+32:24:13.9;Psc;0.24;0.23;90;14.20;;;;;20.27;E;;;;;;;;MCG +05-03-052,PGC 003981,UGC 00688;;; -NGC0383;G;01:07:24.96;+32:24:45.2;Psc;2.39;2.00;8;13.60;12.14;9.49;8.76;8.48;23.69;E-S0;;;;;;;;2MASX J01072493+3224452,MCG +05-03-053,PGC 003982,UGC 00689;;; -NGC0384;G;01:07:25.10;+32:17:32.8;Psc;1.10;0.78;135;14.30;;11.06;10.33;10.03;23.05;E;;;;;;;;2MASX J01072503+3217341,MCG +05-03-055,PGC 003983,UGC 00686;;; -NGC0385;G;01:07:27.25;+32:19:10.3;Psc;1.21;0.91;160;14.30;;10.92;10.22;9.92;23.17;E;;;;;;;;2MASX J01072723+3219112,MCG +05-03-056,PGC 003984,UGC 00687;;; -NGC0386;G;01:07:31.29;+32:21:43.2;Psc;0.46;0.37;0;15.40;;12.17;11.56;11.24;22.46;E;;;;;;;;2MASX J01073133+3221432,MCG +05-03-057,PGC 003989,UGC 00689 NOTES01;;; -NGC0387;G;01:07:33.06;+32:23:28.0;Psc;0.42;0.36;69;;;13.17;12.48;12.25;23.46;E;;;;;;;;2MASX J01073307+3223282,PGC 003987;;; -NGC0388;G;01:07:47.15;+32:18:35.9;Psc;0.58;0.38;168;15.50;;12.33;11.63;11.35;23.11;E;;;;;;;;2MASX J01074719+3218352,MCG +05-03-059,PGC 004005;;; -NGC0389;G;01:08:29.93;+39:41:43.6;And;1.26;0.46;54;15.00;;11.72;11.00;10.68;24.08;S0-a;;;;;;;;2MASX J01082993+3941436,MCG +06-03-014,PGC 004054,UGC 00703;;; -NGC0390;*;01:07:53.75;+32:25:59.2;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0391;G;01:07:22.58;+00:55:33.4;Cet;0.98;0.74;38;14.60;;11.28;10.58;10.30;23.32;E;;;;;;;;2MASX J01072255+0055331,MCG +00-03-075,PGC 003976,SDSS J010722.57+005533.3,SDSS J010722.57+005533.4,SDSS J010722.58+005533.4,SDSS J010722.58+005533.5,UGC 00693;;; -NGC0392;G;01:08:23.46;+33:08:01.0;Psc;1.36;0.93;52;13.68;12.71;10.48;9.80;9.56;23.08;E-S0;;;;;;;;2MASX J01082344+3308008,MCG +05-03-062,PGC 004042,UGC 00700;;; -NGC0393;G;01:08:36.95;+39:38:39.5;And;1.64;1.34;22;13.30;;10.24;9.51;9.23;23.55;E;;;;;;;;2MASX J01083695+3938396,MCG +06-03-015,PGC 004061,UGC 00707;;; -NGC0394;G;01:08:26.05;+33:08:52.7;Psc;0.64;0.34;130;14.80;13.83;11.55;10.87;10.57;22.50;S0;;;;;;;;2MASX J01082606+3308529,MCG +05-03-063,PGC 004049;;; -NGC0395;OCl;01:05:08.32;-71:59:26.6;Tuc;1.50;1.10;;;;;;;;;;;;;;;;ESO 051-016;;; -NGC0396;G;01:08:08.40;+04:31:51.1;Psc;0.62;0.30;70;;;12.98;12.60;12.10;;;;;;;;;;2MASX J01080838+0431509,PGC 099944;;;Diameters and position angle taken from Simbad. -NGC0397;G;01:08:31.10;+33:06:33.1;Psc;0.65;0.50;71;15.49;14.58;12.60;11.75;11.60;23.55;S0;;;;;;;;2MASX J01083108+3306329,MCG +05-03-064,PGC 004051;;; -NGC0398;G;01:08:53.67;+32:30:52.3;Psc;0.83;0.49;136;15.40;;12.12;11.43;11.28;23.72;S0;;;;;;;;2MASX J01085369+3230516,MCG +05-03-065,PGC 004090;;; -NGC0399;G;01:08:59.20;+32:38:03.5;Psc;1.12;0.76;41;14.50;;11.09;10.41;10.22;23.32;Sa;;;;;;;;2MASX J01085920+3238037,MCG +05-03-067,PGC 004096,UGC 00712;;; -NGC0400;*;01:09:02.49;+32:43:56.7;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0401;*;01:09:07.72;+32:45:33.6;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0402;*;01:09:13.36;+32:48:22.5;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0403;G;01:09:14.16;+32:45:07.7;Psc;2.40;0.79;86;13.38;;10.23;9.55;9.30;23.68;S0-a;;;;;;;;2MASX J01091415+3245078,MCG +05-03-068,PGC 004111,UGC 00715;;; -NGC0404;G;01:09:27.02;+35:43:05.3;And;3.40;3.37;90;12.56;11.73;;;;22.61;E-S0;;;;;;;;IRAS 01066+3527,MCG +06-03-018,PGC 004126,UGC 00718;;; -NGC0405;Other;01:08:34.11;-46:40:06.6;Phe;;;;7.17;6.89;6.34;6.25;6.18;;;;;;;;;;HD 006869;;Two Galactic stars.; -NGC0406;G;01:07:25.05;-69:52:45.0;Tuc;2.44;1.10;162;13.02;;11.06;10.50;10.18;23.09;SBc;;;;;;;;2MASX J01072505-6952452,ESO 051-018,ESO-LV 51-0180,IRAS 01057-7008,PGC 003980;;; -NGC0407;G;01:10:36.56;+33:07:35.4;Psc;2.00;0.29;0;14.28;;10.74;10.02;9.80;24.24;S0-a;;;;;;;;2MASX J01103658+3307351,MCG +05-03-077,PGC 004190,UGC 00730;;; -NGC0408;*;01:10:51.09;+33:09:04.6;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0409;G;01:09:33.22;-35:48:20.2;Scl;1.36;1.15;164;14.03;;10.93;10.23;10.00;23.60;E;;;;;;;;2MASX J01093323-3548203,ESO 352-012,ESO-LV 352-0120,MCG -06-03-023,PGC 004132;;; -NGC0410;G;01:10:58.90;+33:09:06.8;Psc;2.37;1.60;34;12.52;11.48;9.38;8.66;8.38;23.24;E;;;;;;;;2MASX J01105887+3309072,MCG +05-03-080,PGC 004224,SDSS J011058.91+330907.1,UGC 00735;;; -NGC0411;OCl;01:07:55.67;-71:46:06.1;Tuc;2.10;1.90;;12.63;12.10;;;;;;;;;;;;;ESO 051-019;;In the Small Magellanic Cloud.; -NGC0413;G;01:12:31.40;-02:47:36.3;Cet;1.05;0.67;148;14.00;;12.42;11.94;11.74;23.27;SBc;;;;;;;;2MASX J01123140-0247361,MCG -01-04-013,PGC 004347;;; -NGC0414;GPair;01:11:17.80;+33:06:46.0;Psc;0.75;;;;;;;;;;;;;;;;;UGC 00744;;;Diameter of the group inferred by the author. -NGC0414 NED01;G;01:11:17.48;+33:06:50.0;Psc;0.74;0.34;23;14.13;;11.35;10.58;10.37;22.48;S0;;;;;;;;2MASX J01111746+3306502,PGC 004254,UGC 00744 NED01;;;B-Mag taken from LEDA -NGC0414 NED02;G;01:11:17.95;+33:06:44.1;Psc;0.45;0.38;90;;;;;;;E-S0;;;;;;;;PGC 093079,UGC 00744 NED02;;; -NGC0415;G;01:10:05.69;-35:29:26.8;Scl;1.57;0.74;49;14.32;;11.71;10.95;10.84;23.45;SBb;;;;;;;;2MASX J01100570-3529265,ESO 352-014,ESO-LV 352-0140,MCG -06-03-024,PGC 004161;;; -NGC0416;GCl;01:07:58.50;-72:21:18.2;Tuc;1.70;1.70;;12.55;11.76;;;;;;;;;;;;;ESO 029-032;;In the Small Magellanic Cloud.; -NGC0417;G;01:11:05.56;-18:08:54.0;Cet;1.08;0.81;24;15.18;;11.90;11.08;10.92;24.15;E-S0;;;;;;;;2MASX J01110557-1808534,ESO 541-024,ESO-LV 541-0240,MCG -03-04-019,PGC 004237;;; -NGC0418;G;01:10:35.62;-30:13:16.6;Scl;1.98;1.30;23;13.19;;10.89;10.14;9.89;23.02;Sc;;;;;;;;2MASX J01103561-3013165,ESO 412-009,ESO-LV 412-0090,IRAS 01082-3029,MCG -05-04-002,PGC 004189;;; -NGC0419;GCl;01:08:17.17;-72:53:00.6;Tuc;2.80;2.80;;11.16;10.50;;;;;;;;;;;;;ESO 029-033;;In the Small Magellanic Cloud.; -NGC0420;G;01:12:09.65;+32:07:23.4;Psc;1.38;1.05;173;13.40;;10.47;9.75;9.54;22.91;S0;;;;;;;;2MASX J01120966+3207233,MCG +05-03-083,PGC 004320,UGC 00752;;; -NGC0421;Other;01:12:14.46;+32:07:24.6;Psc;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC0422;OCl;01:09:25.39;-71:46:02.0;Tuc;1.00;1.00;;13.45;13.26;;;;;;;;;;;;;ESO 051-022;;In the Small Magellanic Cloud.; -NGC0423;G;01:11:22.21;-29:14:04.3;Scl;0.90;0.60;114;14.58;;11.60;10.86;10.50;22.82;S0-a;;;;;;;;2MASX J01112221-2914042,ESO 412-011,ESO-LV 412-0110,IRAS 01090-2929,MCG -05-04-004,PGC 004266;;; -NGC0424;G;01:11:27.63;-38:05:00.5;Scl;1.66;0.68;61;13.76;14.12;10.50;9.74;9.13;23.37;S0-a;;;;;;;;2MASX J01112766-3805006,ESO 296-004,ESO-LV 296-0040,IRAS 01091-3820,MCG -06-03-026,PGC 004274;;; -NGC0425;G;01:13:02.56;+38:46:06.1;And;0.89;0.84;65;13.50;;11.25;10.54;10.27;21.89;Sc;;;;;;;;2MASX J01130255+3846060,IRAS 01102+3830,MCG +06-03-023,PGC 004379,UGC 00758;;; -NGC0426;G;01:12:48.61;-00:17:24.7;Cet;1.20;0.89;146;16.33;15.58;10.88;10.16;9.88;23.10;E;;;;;;;;2MASX J01124858-0017246,MCG +00-04-035,PGC 004363,SDSS J011248.60-001724.6,SDSS J011248.61-001724.7,UGC 00760;;; -NGC0427;G;01:12:19.24;-32:03:40.2;Scl;1.10;0.66;16;15.06;;12.14;11.43;11.20;23.75;SBa;;;;;;;;2MASX J01121922-3203399,ESO 412-014,ESO-LV 412-0140,MCG -05-04-007,PGC 004333;;; -NGC0428;G;01:12:55.71;+00:58:53.6;Cet;2.82;2.08;114;12.10;;10.67;9.65;9.39;22.67;SABm;;;;;;;;2MASX J01125570+0058536,IRAS 01103+0043,MCG +00-04-036,PGC 004367,UGC 00763;;UM 309 is a set of four HII regions within NGC 0428.; -NGC0429;G;01:12:57.42;-00:20:42.0;Cet;1.51;0.31;19;14.40;;11.37;10.67;10.49;24.04;S0;;;;;;;;2MASX J01125745-0020416,MCG +00-04-037,PGC 004368,SDSS J011257.42-002041.9,SDSS J011257.42-002042.0,UGC 00762;;; -NGC0430;G;01:12:59.93;-00:15:09.0;Cet;1.18;0.81;163;13.60;;10.59;9.87;9.61;22.73;E;;;;;;;;2MASX J01125992-0015087,MCG +00-04-039,PGC 004376,SDSS J011259.92-001508.9,UGC 00765;;; -NGC0431;G;01:14:04.54;+33:42:15.1;And;1.16;0.67;28;14.00;;10.87;10.17;9.91;23.10;S0;;;;;;;;2MASX J01140455+3342149,MCG +05-04-002,PGC 004437,UGC 00776;;; -NGC0432;G;01:11:46.26;-61:31:39.5;Tuc;1.32;1.07;126;13.96;;10.84;10.18;9.93;23.47;E-S0;;;;;;;;2MASX J01114624-6131394,ESO 113-022,ESO-LV 113-0220,PGC 004290;;One APM image refers to the southeastern part of the galaxy.; -NGC0433;OCl;01:15:09.26;+60:07:32.8;Cas;3.60;;;;;;;;;;;;;;;;;MWSC 0110;;; -NGC0434;G;01:12:14.13;-58:14:52.7;Tuc;2.24;1.24;9;12.93;;9.81;9.05;8.74;22.91;Sab;;;;;;;;2MASX J01121411-5814525,ESO 113-023,ESO-LV 113-0230,PGC 004325;;; -NGC0434A;G;01:12:29.62;-58:12:34.2;Tuc;1.19;0.24;57;15.79;;;;;24.34;S0-a;;;;;;;;ESO 113-024,ESO-LV 113-0240,PGC 004344;;; -NGC0435;G;01:13:59.85;+02:04:17.2;Cet;1.10;0.43;17;15.00;;12.14;11.36;11.07;23.04;SABc;;;;;;;;2MASX J01135985+0204171,MCG +00-04-046,PGC 004434,UGC 00779;;; -NGC0436;OCl;01:15:57.78;+58:49:01.6;Cas;5.70;;;8.01;8.80;;;;;;;;;;;;;MWSC 0111;;; -NGC0437;G;01:14:22.29;+05:55:36.8;Psc;1.73;1.37;138;14.00;;10.96;10.28;10.01;23.77;S0-a;;;;;;;;2MASX J01142229+0555366,MCG +01-04-005,PGC 004464,UGC 00788;;; -NGC0438;G;01:13:34.16;-37:54:05.9;Scl;1.35;0.77;140;13.63;;10.91;10.20;10.00;22.61;Sb;;;;;;;;2MASX J01133415-3754057,ESO 296-007,ESO-LV 296-0070,IRAS 01112-3810,MCG -06-03-029,PGC 004406;;; -NGC0439;G;01:13:47.26;-31:44:49.7;Scl;3.38;2.14;156;12.38;;9.62;9.00;8.70;24.24;E-S0;;;;;;;;2MASX J01134725-3144500,ESO 412-018,ESO-LV 412-0180,MCG -05-04-015,PGC 004423;;; -NGC0440;G;01:12:48.50;-58:16:56.2;Tuc;1.06;0.64;37;13.75;;11.18;10.47;10.13;22.20;Sbc;;;;;;;;2MASX J01124849-5816560,ESO 113-025,ESO-LV 113-0250,PGC 004361;;; -NGC0441;G;01:13:51.26;-31:47:18.0;Scl;1.51;1.36;100;13.76;;10.52;9.81;9.49;23.33;S0-a;;;;;;;;2MASX J01135125-3147180,ESO 412-019,ESO-LV 412-0190,MCG -05-04-016,PGC 004429;;; -NGC0442;G;01:14:38.65;-01:01:14.3;Cet;1.16;0.69;158;14.50;;10.77;9.98;9.76;23.43;S0-a;;;;;;;;2MASX J01143863-0101139,MCG +00-04-054,PGC 004484,SDSS J011438.64-010114.3,UGC 00789;;; -NGC0443;G;01:15:07.59;+33:22:38.4;Psc;0.82;0.72;17;13.90;;11.44;10.69;10.38;22.53;S0-a;;;;;;1653;;2MASX J01150761+3322385,MCG +05-04-005,PGC 004512,UGC 00796;;; -NGC0444;G;01:15:49.60;+31:04:48.9;Psc;1.57;0.34;160;14.70;;12.37;11.60;11.30;23.44;Sc;;;;;;1658;;2MASX J01154958+3104488,MCG +05-04-007,PGC 004561,UGC 00810;;; -NGC0445;G;01:14:52.48;+01:55:02.8;Cet;0.79;0.53;140;15.50;;11.54;10.90;10.53;23.58;S0;;;;;;;;2MASX J01145247+0155030,PGC 004493;;; -NGC0446;G;01:16:03.61;+04:17:38.8;Psc;2.06;1.60;110;13.80;;10.78;10.13;9.75;24.00;S0;;;;;;0089;;2MASX J01160360+0417385,IRAS 01134+0401,MCG +01-04-012,PGC 004578,UGC 00818;;Mulchaey, et al (1996, ApJS, 102, 309) say this is not a Seyfert.; -NGC0447;G;01:15:37.63;+33:04:03.8;Psc;2.21;2.15;15;14.00;;10.52;9.79;9.48;25.53;S0-a;;;;;;1656;;2MASX J01153760+3304035,MCG +05-04-006,PGC 004550,UGC 00804;;Misidentified in CGCG, RNGC & UGC as NGC 0449. NED follows RC2.; -NGC0448;G;01:15:16.52;-01:37:34.3;Cet;1.60;0.76;115;13.20;;10.27;9.58;9.35;23.04;S0;;;;;;;;2MASX J01151653-0137339,MCG +00-04-060,PGC 004524,UGC 00801;;; -NGC0449;G;01:16:07.25;+33:05:22.4;Psc;0.68;0.39;78;15.90;14.96;12.27;11.61;11.17;22.70;SBa;;;;;;;;2MASX J01160722+3305218,IRAS 01133+3249,MCG +05-04-009,PGC 004587,UGC 00804 NOTES01;;UGC notes misprints the identification as CGCG 0113.4+3250.; -NGC0450;G;01:15:30.44;-00:51:39.5;Cet;2.94;1.95;72;13.40;;11.40;10.91;10.58;23.52;SABc;;;;;;;;2MASX J01153046-0051389,MCG +00-04-062,PGC 004540,SDSS J011530.44-005139.3,SDSS J011530.44-005139.4,SDSS J011530.44-005139.5,UGC 00806;;Possible host galaxy of UM 311.; -NGC0451;G;01:16:12.40;+33:03:50.8;Psc;0.69;0.53;19;14.80;;12.30;11.70;11.39;22.61;Sc;;;;;;1661;;2MASX J01161239+3303507,MCG +05-04-011,PGC 004594;;; -NGC0452;G;01:16:14.83;+31:02:01.8;Psc;1.99;0.50;39;14.00;;10.62;9.86;9.58;23.14;SBab;;;;;;;;2MASS J01161480+3102017,2MASX J01161484+3102019,IRAS 01134+3046,MCG +05-04-010,PGC 004596,UGC 00820;;; -NGC0453;Other;01:16:17.42;+33:00:51.0;Psc;;;;;;;;;;;;;;;;;;;;Galactic triple star; -NGC0454;GPair;01:14:22.53;-55:23:55.3;Phe;2.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC0454 NED01;G;01:14:21.81;-55:24:05.1;Phe;1.64;1.64;0;13.11;;;;;22.94;E?;;;;;0454W;;;ESO-LV 151-0361,PGC 004461;;; -NGC0454 NED02;G;01:14:24.93;-55:23:49.5;Phe;1.93;0.81;81;13.13;13.58;10.79;10.09;9.75;23.25;S0;;;;;0454E;;;2MASX J01142491-5523497,ESO-LV 151-0360,PGC 004468;;; -NGC0455;G;01:15:57.64;+05:10:43.3;Psc;2.58;1.49;158;13.90;;10.56;9.86;9.60;24.62;S0;;;;;;;;2MASX J01155764+0510435,MCG +01-04-011,PGC 004572,UGC 00815;;; -NGC0456;OCl;01:13:44.38;-73:17:25.9;Tuc;3.80;2.90;110;;;;;;;;;;;;;;;ESO 029-038;;; -NGC0457;OCl;01:19:32.65;+58:17:26.5;Cas;7.80;;;6.97;6.40;;;;;;;;;;;;;C 013,MWSC 0114;Owl Cluster;; -NGC0458;OCl;01:14:53.47;-71:33:09.7;Tuc;2.60;2.30;140;11.85;11.66;;;;;;;;;;;;;2MASX J01145353-7133103,ESO 051-026;;In the Small Magellanic Cloud.; -NGC0459;G;01:18:08.19;+17:33:44.6;Psc;0.58;0.55;20;15.70;;13.11;12.35;12.21;23.31;Sbc;;;;;;;;2MASX J01180818+1733448,MCG +03-04-017,PGC 004665,UGC 00832;;; -NGC0460;Cl+N;01:14:38.60;-73:16:27.1;Tuc;2.60;1.50;20;;;;;;;;;;;;;;;;;; -NGC0461;G;01:17:20.64;-33:50:27.2;Scl;1.21;1.01;38;14.11;;;;;23.06;Sc;;;;;;;;ESO 352-033,ESO-LV 352-0330,IRAS 01150-3406,MCG -06-04-002,PGC 004636;;; -NGC0462;G;01:18:10.99;+04:13:33.6;Psc;0.48;0.45;115;;;12.37;11.82;11.45;;;;;;;;;;2MASX J01181097+0413344,PGC 004667;;;Diameters and position angle taken from Simbad. -NGC0463;G;01:18:58.25;+16:19:32.7;Psc;1.04;0.39;5;15.20;;11.76;11.07;10.69;23.81;S0-a;;;;;;;;2MASX J01185818+1619319,MCG +03-04-019,PGC 004719,UGC 00840;;; -NGC0464;**;01:19:26.68;+34:57:19.5;And;;;;;;;;;;;;;;;;;;;;; -NGC0465;OCl;01:15:41.35;-73:20:04.6;Tuc;5.00;4.00;;;;;;;;;;;;;;;;ESO 029-040;;In the Small Magellanic Cloud.; -NGC0466;G;01:17:13.26;-58:54:35.8;Tuc;1.61;1.34;108;13.58;;10.85;10.13;9.93;23.36;S0-a;;;;;;;;2MASX J01171327-5854359,ESO 113-034,ESO-LV 113-0340,PGC 004632;;; -NGC0467;G;01:19:10.13;+03:18:03.0;Psc;1.66;1.49;125;12.90;11.85;9.97;9.24;9.01;23.00;S0;;;;;;;;2MASX J01191011+0318032,MCG +00-04-079,PGC 004736,UGC 00848;;; -NGC0468;G;01:19:48.50;+32:46:04.0;Psc;0.85;0.48;175;15.10;;12.17;11.59;11.35;23.54;S0-a;;;;;;0092;;2MASX J01194842+3246046,MCG +05-04-020,PGC 004780,SDSS J011948.39+324604.4;;; -NGC0469;G;01:19:32.95;+14:52:19.0;Psc;0.81;0.60;173;15.00;;13.31;12.48;12.06;23.29;S?;;;;;;;;2MASX J01193304+1452147,MCG +02-04-023,PGC 004753,SDSS J011932.93+145218.8,SDSS J011932.94+145219.0,SDSS J011932.95+145219.0;;HOLM 039B is a star.; -NGC0470;G;01:19:44.85;+03:24:35.8;Psc;2.86;1.62;156;12.53;11.78;9.76;9.10;8.84;23.16;Sb;;;;;;;;2MASX J01194484+0324358,IRAS 01171+0308,MCG +00-04-084,PGC 004777,UGC 00858;;; -NGC0471;G;01:19:59.59;+14:47:10.4;Psc;1.06;0.79;79;14.00;;11.13;10.44;10.29;23.05;S0;;;;;;;;2MASX J01195962+1447107,MCG +02-04-024 NED01,PGC 004793,SDSS J011959.59+144710.3,UGC 00861;;; -NGC0472;G;01:20:28.69;+32:42:32.5;Psc;0.90;0.68;125;14.20;;11.22;10.49;10.19;22.69;Sb;;;;;;;;2MASX J01202867+3242322,MCG +05-04-022,PGC 004833,UGC 00870;;; -NGC0473;G;01:19:55.07;+16:32:40.9;Psc;1.77;1.02;153;13.41;12.63;10.45;9.77;9.56;23.19;S0-a;;;;;;;;2MASX J01195507+1632407,MCG +03-04-022,PGC 004785,UGC 00859;;; -NGC0474;G;01:20:06.69;+03:24:55.4;Psc;2.65;2.44;45;12.37;11.51;9.49;8.80;8.56;23.26;S0;;;;;;;;2MASX J01200669+0324549,MCG +00-04-085,PGC 004801,UGC 00864;;; -NGC0475;G;01:20:02.00;+14:51:39.8;Psc;0.81;0.55;121;17.35;;12.57;11.93;11.63;24.21;E-S0;;;;;;0097;;2MASX J01200203+1451397,PGC 004796,SDSS J012001.99+145139.7,SDSS J012002.00+145139.7,SDSS J012002.00+145139.8,SDSS J012002.01+145139.7;;; -NGC0476;G;01:20:19.90;+16:01:12.5;Psc;0.84;0.55;95;15.20;;11.94;11.26;11.00;23.58;S0;;;;;;;;2MASX J01201992+1601126,MCG +03-04-023,PGC 004814;;HOLM 040B is a star.; -NGC0477;G;01:21:20.37;+40:29:17.5;And;1.55;0.55;135;14.00;;11.25;10.80;10.22;23.04;Sc;;;;;;;;2MASX J01212039+4029176,MCG +07-03-032,PGC 004915,SDSS J012120.34+402917.3,UGC 00886;;; -NGC0478;G;01:20:09.29;-22:22:38.6;Cet;0.84;0.69;118;14.61;;12.89;12.47;12.34;22.84;Sb;;;;;;;;ESO 476-003,ESO-LV 476-0030,IRAS 01177-2238,MCG -04-04-005,PGC 004803;;; -NGC0479;G;01:21:15.73;+03:51:44.2;Psc;0.91;0.73;128;14.71;;12.84;11.87;11.83;23.52;SBbc;;;;;;;;2MASX J01211572+0351440,MCG +01-04-031,PGC 004905,UGC 00893;;; -NGC0480;G;01:20:34.39;-09:52:48.8;Cet;0.58;0.29;65;16.28;;13.09;12.26;12.10;23.30;Sa;;;;;;;;2MASX J01203441-0952487,PGC 004845,SDSS J012034.38-095248.8,SDSS J012034.39-095248.8;;; -NGC0481;G;01:21:12.51;-09:12:40.4;Cet;1.46;1.08;72;14.19;;10.69;10.09;9.78;24.11;E-S0;;;;;;;;2MASX J01211246-0912404,MCG -02-04-030,PGC 004899,SDSS J012112.51-091240.4;;Identification as NGC 0481 is not certain.; -NGC0482;G;01:20:20.42;-40:57:58.0;Phe;2.06;0.53;84;14.50;;10.88;10.06;9.78;23.98;Sab;;;;;;;;2MASX J01202040-4057579,ESO 296-013,ESO-LV 296-0130,MCG -07-03-017,PGC 004823;;; -NGC0483;G;01:21:56.30;+33:31:15.5;Psc;0.87;0.79;115;14.00;;10.98;10.26;9.95;22.48;Sb;;;;;;;;2MASX J01215628+3331153,MCG +05-04-029,PGC 004961,UGC 00906;;; -NGC0484;G;01:19:34.73;-58:31:27.5;Tuc;1.80;1.26;90;13.07;;10.04;9.36;9.10;23.26;E-S0;;;;;;;;2MASX J01193469-5831272,ESO 113-036,ESO-LV 113-0360,PGC 004764;;; -NGC0485;G;01:21:27.60;+07:01:05.1;Psc;1.64;0.61;2;14.20;;11.70;11.01;10.82;23.38;Sbc;;;;;;;;2MASX J01212759+0701050,IRAS 01188+0645,MCG +01-04-032,PGC 004921,UGC 00895;;; -NGC0486;G;01:21:43.04;+05:20:46.7;Psc;0.36;0.28;70;;;;;;24.02;;;;;;;;;PGC 1281966;;Galactic star superposed.; -NGC0487;G;01:21:55.09;-16:22:13.3;Cet;1.09;0.70;113;13.99;;11.79;11.17;10.90;23.05;SBa;;;;;;;;2MASX J01215507-1622134,MCG -03-04-056,PGC 004958;;; -NGC0488;G;01:21:46.85;+05:15:24.2;Psc;5.05;3.66;13;15.00;;7.91;7.03;6.96;23.15;Sb;;;;;;;;2MASX J01214684+0515241,IRAS 01191+0459,MCG +01-04-033,PGC 004946,SDSS J012146.79+051524.7,UGC 00907;;; -NGC0489;G;01:21:53.90;+09:12:23.6;Psc;1.55;0.35;120;13.40;;10.52;9.83;9.56;21.93;Sc;;;;;;;;2MASX J01215390+0912233,MCG +01-04-034,PGC 004957,UGC 00908;;; -NGC0490;G;01:22:02.87;+05:22:01.9;Psc;0.66;0.55;1;15.39;14.48;12.53;11.99;11.75;23.09;Sb;;;;;;;;2MASX J01220285+0522021,MCG +01-04-035,PGC 004973;;; -NGC0491;G;01:21:20.43;-34:03:47.8;Scl;1.35;0.99;95;13.28;12.54;10.35;9.70;9.39;22.38;SBb;;;;;;;;2MASX J01212042-3403477,ESO 352-053,ESO-LV 352-0530,IRAS 01190-3419,MCG -06-04-011,PGC 004914;;; -NGC0491A;G;01:20:04.67;-33:53:58.2;Scl;1.88;0.85;97;14.32;;13.05;12.92;12.28;23.72;Scd;;;;;;;;ESO 352-046,ESO-LV 352-0460,MCG -06-04-008,PGC 004799;;; -NGC0492;G;01:22:13.56;+05:25:01.4;Psc;0.67;0.56;97;15.50;;12.69;12.18;11.71;23.70;SABb;;;;;;;;2MASX J01221356+0525012,MCG +01-04-038,PGC 004976;;; -NGC0493;G;01:22:08.99;+00:56:43.3;Cet;3.01;0.95;60;13.00;;11.18;10.35;10.27;23.13;Sc;;;;;;;;2MASX J01220898+0056432,IRAS 01195+0041,MCG +00-04-099,PGC 004979,SDSS J012208.98+005643.6,SDSS J012209.10+005644.9,SDSS J012210.24+005658.1,UGC 00914;;Contains the possible HII region UM 318.; -NGC0494;G;01:22:55.40;+33:10:26.0;Psc;1.86;0.59;100;13.80;;10.42;9.65;9.39;23.22;Sab;;;;;;;;2MASX J01225533+3310261,IRAS 01201+3254,MCG +05-04-034,PGC 005035,UGC 00919;;; -NGC0495;G;01:22:56.00;+33:28:18.0;Psc;1.09;0.77;169;14.00;;10.91;10.26;9.97;22.52;S0-a;;;;;;;;2MASX J01225595+3328171,MCG +05-04-035,PGC 005037,SDSS J012255.95+332817.0,UGC 00920;;; -NGC0496;G;01:23:11.60;+33:31:45.0;Psc;0.89;0.33;36;14.30;;11.63;10.97;10.73;22.04;Sbc;;;;;;;;2MASX J01231161+3331452,IRAS 01203+3316,MCG +05-04-036,PGC 005061,UGC 00927;;; -NGC0497;G;01:22:23.78;-00:52:30.7;Cet;2.06;0.86;134;14.10;;10.56;9.94;9.68;23.49;SBbc;;;;;;;;2MASX J01222375-0052308,MCG +00-04-100,PGC 004992,SDSS J012223.77-005230.7,SDSS J012223.78-005230.7,UGC 00915;;; -NGC0498;G;01:23:11.28;+33:29:21.7;Psc;0.51;0.41;125;16.00;;12.84;12.38;11.93;;;;;;;;;;2MASX J01231129+3329212,MCG +05-04-037,PGC 005059;;;Diameters and position angle taken from Simbad. -NGC0499;G;01:23:11.50;+33:27:38.0;Psc;1.68;1.05;77;13.00;12.30;9.71;9.02;8.74;23.16;E-S0;;;;;;1686;;2MASX J01231145+3327362,MCG +05-04-038,PGC 005060,UGC 00926;;; -NGC0500;G;01:22:39.37;+05:23:14.2;Psc;0.91;0.65;95;15.20;;11.81;11.14;10.87;23.70;E;;;;;;;;2MASX J01223937+0523142,MCG +01-04-040,PGC 005013,SDSS J012239.36+052314.1;;; -NGC0501;G;01:23:22.41;+33:25:58.7;Psc;0.52;0.49;80;15.20;;12.11;11.44;11.11;22.97;E;;;;;;;;2MASX J01232240+3325582,PGC 005082;;; -NGC0502;G;01:22:55.54;+09:02:57.1;Psc;1.64;1.52;55;13.80;;10.72;10.01;9.74;23.57;S0;;;;;;;;2MASX J01225553+0902570,MCG +01-04-043,PGC 005034,UGC 00922;;; -NGC0503;G;01:23:28.43;+33:19:54.2;Psc;0.63;0.49;39;15.10;;11.97;11.28;11.07;22.95;S0;;;;;;;;2MASX J01232845+3319542,MCG +05-04-040,PGC 005086;;; -NGC0504;G;01:23:27.90;+33:12:16.0;Psc;1.55;0.39;45;14.00;;11.06;10.25;10.07;23.69;S0;;;;;;;;2MASX J01232787+3312152,MCG +05-04-041,PGC 005084,UGC 00935;;; -NGC0505;G;01:22:57.10;+09:28:08.0;Psc;1.07;0.68;55;15.10;;11.92;11.30;10.90;23.91;S0;;;;;;;;2MASX J01225708+0928080,MCG +01-04-041,PGC 005036,UGC 00924;;; -NGC0506;*;01:23:35.35;+33:14:40.8;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0507;G;01:23:39.91;+33:15:21.8;Psc;2.45;1.66;71;13.00;;9.22;8.69;8.30;23.25;E-S0;;;;;;;;2MASX J01233995+3315222,MCG +05-04-044,PGC 005098,SDSS J012339.90+331519.2,UGC 00938;;; -NGC0508;G;01:23:40.60;+33:16:49.0;Psc;1.08;0.96;25;14.50;;10.66;9.99;9.73;23.23;E;;;;;;;;2MASX J01234058+3316502,MCG +05-04-045,PGC 005099,UGC 00939;;; -NGC0509;G;01:23:24.09;+09:26:00.8;Psc;1.59;0.68;81;14.70;;11.34;10.80;10.68;24.29;S0-a;;;;;;;;2MASX J01232407+0926004,MCG +01-04-045,PGC 005080,UGC 00932;;; -NGC0510;**;01:23:55.56;+33:29:48.8;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0511;G;01:23:30.73;+11:17:27.6;Psc;1.18;0.98;70;15.40;;11.55;10.84;10.52;24.38;E;;;;;;;;2MASX J01233074+1117274,MCG +02-04-033,PGC 005103,UGC 00936;;; -NGC0512;G;01:23:59.80;+33:54:28.0;And;1.46;0.34;115;14.00;;10.82;10.08;9.77;22.62;Sab;;;;;;;;2MASX J01235976+3354281,MCG +06-04-013,PGC 005132,UGC 00944;;; -NGC0513;G;01:24:26.85;+33:47:58.0;And;0.62;0.31;81;13.40;13.40;10.96;10.23;9.91;20.51;Sc;;;;;;;;2MASX J01242680+3347585,IRAS 01216+3332,MCG +06-04-016,PGC 005174,UGC 00953;;; -NGC0514;G;01:24:03.90;+12:55:02.6;Psc;3.50;2.50;106;12.24;11.65;10.55;9.91;9.14;23.48;SABc;;;;;;;;2MASX J01240390+1255024,IRAS 01214+1239,MCG +02-04-035,PGC 005139,UGC 00947;;; -NGC0515;G;01:24:38.60;+33:28:22.0;Psc;0.92;0.64;89;14.30;;10.84;10.12;9.87;22.97;S0;;;;;;;;2MASX J01243853+3328214,MCG +05-04-052,PGC 005201,UGC 00956;;; -NGC0516;G;01:24:08.07;+09:33:06.1;Psc;1.62;0.46;45;14.30;;11.37;10.75;10.52;23.95;S0;;;;;;;;2MASX J01240806+0933060,MCG +01-04-048,PGC 005148,UGC 00946;;; -NGC0517;G;01:24:43.80;+33:25:46.0;Psc;1.46;0.60;20;13.60;;10.81;10.10;9.79;23.20;S0;;;;;;;;2MASX J01244381+3325465,MCG +05-04-054,PGC 005214,UGC 00960;;; -NGC0518;G;01:24:17.64;+09:19:51.4;Psc;1.56;0.55;97;14.40;;10.75;10.05;9.79;23.56;Sa;;;;;;;;2MASX J01241762+0919514,MCG +01-04-049,PGC 005161,UGC 00952;;; -NGC0519;G;01:24:28.64;-01:38:28.5;Cet;0.53;0.29;135;15.30;;12.25;11.50;11.39;22.76;E;;;;;;;;2MASX J01242863-0138284,PGC 005182;;; -NGC0520;GPair;01:24:35.07;+03:47:32.7;Psc;4.20;;;;;;;;;;;;;;;;;MCG +01-04-052,UGC 00966;;;Diameter of the group inferred by the author. -NGC0520 NED01;G;01:24:34.48;+03:47:41.8;Psc;4.09;1.61;130;12.24;11.42;9.43;8.69;8.37;23.54;Sa;;;;;;;;2MASX J01243507+0347326,IRAS 01219+0331,MCG +01-04-052 NED01,PGC 005193,UGC 00966 NED01;;Northern optical center of NGC 0520.; -NGC0520 NED02;G;01:24:34.79;+03:47:23.2;Psc;1.56;0.59;120;12.40;;;;;;Sc;;;;;;;;MCG +01-04-052 NED02,PGC 093080,UGC 00966 NED02;;Southern optical center of NGC 0520.; -NGC0521;G;01:24:33.78;+01:43:53.0;Cet;2.77;2.59;145;12.50;;9.62;8.95;8.58;23.52;Sbc;;;;;;;;2MASX J01243377+0143532,IRAS 01219+0128,MCG +00-04-118,PGC 005190,SDSS J012433.77+014352.8,UGC 00962;;; -NGC0522;G;01:24:45.85;+09:59:40.7;Psc;2.38;0.31;33;14.20;;10.52;9.73;9.44;23.12;Sbc;;;;;;;;2MASX J01244585+0959406,IRAS 01221+0944,MCG +02-04-038,PGC 005218,UGC 00970;;; -NGC0523;G;01:25:20.73;+34:01:29.8;And;2.52;0.71;104;13.50;;10.76;10.05;9.71;23.27;Sbc;;;;;0537;;;2MASX J01252074+3401305,IRAS 01225+3345,MCG +06-04-018,PGC 005268,SDSS J012520.75+340129.8,UGC 00979;;; -NGC0524;G;01:24:47.72;+09:32:19.8;Psc;3.37;3.35;55;11.50;;8.13;7.43;7.16;22.78;S0-a;;;;;;;;2MASX J01244770+0932196,IRAS 01221+0916,MCG +01-04-053,PGC 005222,SDSS J012447.74+093220.0,UGC 00968;;; -NGC0525;G;01:24:52.91;+09:42:12.0;Psc;1.50;0.63;7;14.50;;11.44;10.71;10.61;24.10;S0;;;;;;;;2MASX J01245290+0942116,MCG +01-04-054,PGC 005232,UGC 00972;;; -NGC0526;GPair;01:23:58.50;-35:07:21.0;Scl;2.00;;;;;;;;;;;;;;;;;IRAS 01216-3519;;;Diameter of the group inferred by the author. -NGC0526A;G;01:23:54.39;-35:03:55.9;Scl;1.70;0.79;110;14.76;14.60;11.60;10.66;10.44;24.53;S0;;;;;;;;2MASX J01235436-3503555,ESO 352-066,ESO-LV 352-0660,MCG -06-04-019,PGC 005131;;; -NGC0526B;G;01:23:57.08;-35:04:09.4;Scl;0.79;0.45;158;15.14;14.50;12.12;11.34;11.20;;S0;;;;;;;;2MASX J01235705-3504095,ESO-LV 352-0661,MCG -06-04-020,PGC 005135;;; -NGC0527;G;01:23:58.12;-35:06:54.2;Scl;1.79;0.43;15;14.07;;10.76;10.04;9.79;23.75;S0-a;;;;;0527A;;;2MASX J01235812-3506545,ESO 352-068,ESO-LV 352-0680,MCG -06-04-021,PGC 005128;;; -NGC0527B;G;01:23:59.34;-35:07:38.5;Scl;0.87;0.27;29;16.26;;13.36;12.60;12.71;23.10;Sbc;;;;;;;;2MASX J01235934-3507385,MCG -06-04-022,PGC 005142;;; -NGC0528;G;01:25:33.60;+33:40:18.0;And;1.77;1.04;57;13.70;;10.60;9.91;9.58;23.60;S0;;;;;;;;2MASX J01253359+3340165,IRAS 01226+3324,MCG +05-04-057,PGC 005290,UGC 00988;;; -NGC0529;G;01:25:40.40;+34:42:48.0;And;2.22;1.96;162;13.10;;10.05;9.30;9.11;23.61;E-S0;;;;;;;;2MASX J01254030+3442465,MCG +06-04-019,PGC 005299,UGC 00995;;; -NGC0530;G;01:24:41.65;-01:35:13.5;Cet;1.78;0.36;133;13.96;;10.68;9.98;9.72;23.73;S0-a;;;;;;0106;;2MASX J01244163-0135134,MCG +00-04-119,PGC 005210,UGC 00965;;; -NGC0531;G;01:26:18.90;+34:45:14.0;And;1.77;0.47;33;14.90;;11.49;10.70;10.51;24.53;S0-a;;;;;;;;2MASX J01261884+3445147,MCG +06-04-020,PGC 005340,UGC 01012;;; -NGC0532;G;01:25:17.34;+09:15:50.8;Psc;2.18;0.94;30;13.50;;9.87;9.12;8.83;23.88;Sab;;;;;;;;2MASX J01251734+0915507,IRAS 01226+0900,MCG +01-04-056,PGC 005264,UGC 00982;;; -NGC0533;G;01:25:31.36;+01:45:32.8;Cet;3.44;2.41;50;13.10;14.11;9.43;8.71;8.44;24.03;E;;;;;;;;2MASX J01253143+0145335,MCG +00-04-131,PGC 005283,UGC 00992;;; -NGC0534;G;01:24:44.63;-38:07:44.7;Scl;1.19;1.07;110;14.42;;11.08;10.42;10.16;23.48;S0;;;;;;;;2MASX J01244464-3807448,ESO 296-021,ESO-LV 296-0210,MCG -06-04-026,PGC 005215;;; -NGC0535;G;01:25:31.15;-01:24:29.3;Cet;0.97;0.34;57;14.83;;11.56;10.80;10.48;23.48;S0-a;;;;;;;;2MASX J01253116-0124291,MCG +00-04-133,PGC 005282,UGC 00997;;; -NGC0536;G;01:26:21.78;+34:42:10.9;And;2.92;1.49;67;13.20;;10.18;9.56;9.24;23.80;Sb;;;;;;;;2MASX J01262177+3442107,MCG +06-04-021,PGC 005344,SDSS J012621.77+344211.2,UGC 01013;;; -NGC0537;Dup;01:25:20.73;+34:01:29.8;And;;;;;;;;;;;;;;;0523;;;;;; -NGC0538;G;01:25:26.05;-01:33:02.3;Cet;1.38;0.54;36;14.58;;11.13;10.46;10.16;23.55;SBab;;;;;;;;2MASX J01252603-0133021,MCG +00-04-130,PGC 005275,UGC 00991;;; -NGC0539;G;01:25:21.73;-18:09:49.9;Cet;1.32;1.10;175;14.32;;12.25;11.52;11.27;23.49;Sc;;;;;0563;;;2MASX J01252171-1809499,ESO 542-010,ESO-LV 542-0100,IRAS 01229-1825,MCG -03-04-063,PGC 005269;;; -NGC0540;G;01:27:08.90;-20:02:11.9;Cet;0.82;0.39;5;15.71;;12.57;11.89;11.46;23.98;S0;;;;;;;;2MASX J01270888-2002119,ESO 542-012,ESO-LV 542-0120,PGC 005410;;; -NGC0541;G;01:25:44.31;-01:22:46.5;Cet;2.16;1.50;69;13.03;12.08;10.28;9.57;9.30;23.66;E;;;;;;;;2MASX J01254430-0122461,MCG +00-04-137,PGC 005305,UGC 01004;;NVSS position is about 12 arcsec northwest of the nucleus.; -NGC0542;G;01:26:30.90;+34:40:31.0;And;1.02;0.23;143;15.40;;12.54;11.83;11.53;23.40;Sbc;;;;;;;;2MASX J01263085+3440318,MCG +06-04-022,PGC 005360;;; -NGC0543;G;01:25:49.99;-01:17:34.1;Cet;0.81;0.37;90;15.00;;11.71;11.01;10.77;22.46;E-S0;;;;;;;;2MASX J01254997-0117341,MCG +00-04-138,PGC 005311;;; -NGC0544;G;01:25:12.03;-38:05:40.3;Scl;1.47;1.03;173;14.41;;11.04;10.35;10.12;23.98;E-S0;;;;;;;;2MASX J01251204-3805404,ESO 296-024,ESO-LV 296-0240,MCG -06-04-028,PGC 005253;;; -NGC0545;G;01:25:59.12;-01:20:24.8;Cet;3.01;1.95;55;13.21;13.34;;;;24.49;E-S0;;;;;;;;MCG +00-04-142,PGC 005323,UGC 01007;;MCG incorrectly identifies this galaxy as 'N0547a'.; -NGC0546;G;01:25:12.81;-38:04:08.7;Scl;1.35;0.60;38;14.48;;11.66;10.97;10.68;23.20;SBb;;;;;;;;2MASX J01251280-3804084,ESO 296-025,ESO-LV 296-0250,IRAS 01229-3819,MCG -06-04-029,PGC 005255;;; -NGC0547;G;01:26:00.63;-01:20:42.6;Cet;3.07;1.93;103;13.16;13.34;9.47;8.76;8.49;24.43;E;;;;;;;;2MASX J01260057-0120424,MCG +00-04-143,PGC 005324,UGC 01009;;MCG incorrectly identifies this galaxy as 'N0547b'.; -NGC0548;G;01:26:02.51;-01:13:32.2;Cet;0.90;0.74;153;15.10;;11.83;11.13;10.98;23.31;E;;;;;;;;2MASX J01260251-0113324,MCG +00-04-141,PGC 005326,SDSS J012602.50-011332.1,SDSS J012602.50-011332.2,SDSS J012602.51-011332.1,SDSS J012602.51-011332.2,UGC 01010;;; -NGC0549;G;01:25:07.08;-38:00:27.9;Scl;0.59;0.55;100;15.49;;12.55;11.81;11.58;23.00;SBa;;;;;;;;2MASX J01250707-3800277,ESO 296-022,ESO-LV 296-0220,PGC 005243;;; -NGC0550;G;01:26:42.55;+02:01:20.5;Cet;1.82;0.69;120;13.60;;10.25;9.49;9.20;23.20;SBa;;;;;;;;2MASX J01264255+0201205,MCG +00-04-146,PGC 005374,SDSS J012642.55+020120.2,UGC 01021;;; -NGC0551;G;01:27:40.66;+37:10:58.5;And;1.49;0.59;137;13.50;;11.17;10.53;10.20;22.57;SBbc;;;;;;;;2MASX J01274066+3710584,IRAS 01247+3655,MCG +06-04-027,PGC 005450,UGC 01034;;; -NGC0552;*;01:26:10.15;+33:24:21.1;Psc;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC0553;G;01:26:12.60;+33:24:18.0;Psc;0.91;0.30;13;15.00;;12.12;11.58;11.33;23.66;S0;;;;;;;;2MASX J01261252+3324183,PGC 005333;;NGC identification is not certain.; -NGC0554A;G;01:27:09.70;-22:43:28.8;Cet;1.42;1.04;170;15.00;;11.72;11.03;10.78;24.49;S0;;;;;0554;;;2MASX J01270968-2243289,PGC 005413;;; -NGC0554B;G;01:27:09.56;-22:43:32.6;Cet;;;;14.76;;;;;24.49;S0;;;;;;;;;;; -NGC0555;G;01:27:11.81;-22:45:43.8;Cet;0.74;0.69;15;15.19;;12.31;11.53;11.37;23.37;S0-a;;;;;;;;2MASX J01271185-2245439,ESO 476-012,ESO-LV 476-0120,MCG -04-04-014,PGC 005419;;; -NGC0556;G;01:27:12.61;-22:41:51.9;Cet;0.45;0.40;144;15.41;;12.95;12.26;11.93;22.59;E-S0;;;;;;;;2MASX J01271264-2241519,ESO 476-013,ESO-LV 476-0130,PGC 005420;;; -NGC0557;G;01:26:25.15;-01:38:19.4;Cet;1.45;0.47;136;14.48;;11.12;10.37;10.34;24.60;S0-a;;;;;;1703;;2MASX J01262516-0138195,MCG +00-04-144,PGC 005351,SDSS J012625.12-013819.2,UGC 01016;;; -NGC0558;G;01:27:16.17;-01:58:15.2;Cet;0.62;0.26;112;15.00;;12.03;11.37;11.17;23.00;E;;;;;;;;2MASX J01271617-0158150,PGC 005425;;; -NGC0559;OCl;01:29:33.17;+63:18:05.2;Cas;9.00;;;9.85;9.50;;;;;;;;;;;;;C 008,MWSC 0122;;; -NGC0560;G;01:27:25.42;-01:54:46.7;Cet;2.09;0.44;178;14.00;;10.76;10.03;9.74;24.11;S0;;;;;;;;2MASX J01272543-0154465,MCG +00-04-151,PGC 005430,UGC 01036;;; -NGC0561;G;01:28:18.76;+34:18:31.1;And;1.40;1.28;145;14.10;;11.18;10.40;10.08;23.44;Sa;;;;;;;;2MASX J01281877+3418313,IRAS 01254+3403,MCG +06-04-029,PGC 005489,UGC 01048;;; -NGC0562;G;01:28:29.26;+48:23:13.5;And;0.91;0.86;40;14.50;;11.47;10.82;10.51;22.99;Sc;;;;;;;;2MASX J01282924+4823133,IRAS 01254+4807,MCG +08-03-025,PGC 005502,UGC 01049;;; -NGC0563;Dup;01:25:21.73;-18:09:49.9;Cet;;;;;;;;;;;;;;;0539;;;;;; -NGC0564;G;01:27:48.21;-01:52:46.3;Cet;1.72;1.20;141;13.80;;10.54;9.89;9.60;23.55;E;;;;;;;;2MASX J01274822-0152465,MCG +00-04-154,PGC 005455,UGC 01044;;HOLM 044B is a star.; -NGC0565;G;01:28:10.18;-01:18:21.7;Cet;1.46;0.41;35;14.50;;11.17;10.45;10.16;23.50;Sa;;;;;;;;2MASX J01281017-0118215,MCG +00-04-158,PGC 005481,UGC 01052;;; -NGC0566;G;01:29:02.96;+32:19:56.1;Psc;1.21;0.32;179;14.60;;11.55;10.79;10.63;23.74;S0;;;;;;;;2MASX J01290294+3219559,MCG +05-04-062,PGC 005545,UGC 01058;;; -NGC0567;G;01:27:02.40;-10:15:54.9;Cet;1.21;0.45;127;14.00;;11.49;10.83;10.57;24.03;S0;;;;;;;;2MASX J01270240-1015550,MCG -02-04-053,PGC 005402,SDSS J012702.40-101554.8,SDSS J012702.40-101554.9;;; -NGC0568;G;01:27:57.01;-35:43:03.7;Scl;2.04;1.24;137;13.43;12.59;10.48;9.81;9.58;23.88;E-S0;;;;;;1709;;2MASX J01275699-3543039,ESO 353-003,ESO-LV 353-0030,MCG -06-04-037,PGC 005468;;; -NGC0569;G;01:29:07.16;+11:07:53.3;Psc;0.99;0.48;163;14.70;;12.06;11.46;11.22;22.92;Sbc;;;;;;;;2MASX J01290717+1107533,IRAS 01264+1052,MCG +02-04-053,PGC 005548,UGC 01063;;; -NGC0570;G;01:28:58.64;-00:56:56.4;Cet;1.62;1.09;166;14.20;;10.87;10.17;9.89;23.32;Sa;;;;;;;;2MASX J01285861-0056560,MCG +00-04-162,PGC 005539,SDSS J012858.63-005656.3,SDSS J012858.63-005656.4,SDSS J012858.64-005656.3,SDSS J012858.64-005656.4,UGC 01061;;; -NGC0571;G;01:29:55.98;+32:30:04.8;Psc;0.71;0.66;150;15.00;;12.84;12.31;11.84;23.09;Sbc;;;;;;;;2MASX J01295595+3230050,MCG +05-04-063,PGC 005587,UGC 01069;;; -NGC0572;G;01:28:36.42;-39:18:26.3;Scl;0.89;0.84;170;15.18;;11.77;10.97;10.74;23.51;S0-a;;;;;;;;2MASX J01283643-3918261,ESO 296-031,ESO-LV 296-0310,MCG -07-04-009,PGC 005508;;The APMUKS image includes two superposed stars.; -NGC0573;G;01:30:49.35;+41:15:26.3;And;0.39;0.33;120;13.50;;12.01;11.38;11.09;20.11;Sab;;;;;;;;2MASX J01304935+4115263,IRAS 01278+4100,PGC 005638,UGC 01078;;; -NGC0574;G;01:29:03.08;-35:35:56.1;Scl;1.15;0.83;24;14.17;;11.60;10.91;10.57;23.11;SBb;;;;;;;;2MASX J01290311-3535561,ESO 353-006,ESO-LV 353-0060,IRAS 01268-3551,MCG -06-04-039,PGC 005544;;; -NGC0575;G;01:30:46.64;+21:26:25.5;Psc;1.45;1.35;5;13.65;13.02;11.39;11.20;10.39;23.33;Sc;;;;;;1710;;2MASX J01304664+2126255,MCG +03-04-051,PGC 005634,UGC 01081;;; -NGC0576;G;01:28:57.67;-51:35:55.2;Phe;0.99;0.81;110;14.41;;11.75;11.05;10.71;23.08;S0-a;;;;;;;;2MASX J01285769-5135553,ESO 196-007,ESO-LV 196-0070,IRAS 01269-5151,PGC 005535;;; -NGC0577;G;01:30:40.71;-01:59:39.7;Cet;1.45;1.28;130;14.30;;10.86;10.16;9.88;23.54;Sa;;;;;0580;;;2MASX J01304069-0159396,MCG +00-04-165,PGC 005628,UGC 01080;;; -NGC0578;G;01:30:29.09;-22:40:02.5;Cet;4.82;2.92;114;11.72;10.93;9.46;8.94;8.59;23.28;Sc;;;;;;;;ESO 476-015,ESO-LV 476-0150,IRAS 01280-2255,MCG -04-04-020,PGC 005619,UGCA 018;;; -NGC0579;G;01:31:46.49;+33:36:56.0;Tri;1.08;0.85;160;13.60;;11.29;10.67;10.35;22.62;Sc;;;;;;;;2MASX J01314651+3336560,IRAS 01289+3321,MCG +05-04-064,PGC 005691,SDSS J013146.50+333655.9,UGC 01089;;; -NGC0580;Dup;01:30:40.71;-01:59:39.7;Cet;;;;;;;;;;;;;;;0577;;;;;; -NGC0581;OCl;01:33:21.81;+60:39:28.8;Cas;4.50;;;7.72;7.40;;;;;;;;;103;;;;MWSC 0124;;; -NGC0582;G;01:31:58.05;+33:28:35.5;Tri;2.07;0.49;58;13.70;;10.83;10.08;9.79;23.43;SBb;;;;;;;;2MASX J01315804+3328354,IRAS 01291+3313,MCG +05-04-065,PGC 005702,UGC 01094;;; -NGC0583;G;01:29:44.15;-18:20:21.9;Cet;0.72;0.66;30;15.15;;11.84;11.00;10.87;23.31;S0;;;;;;;;2MASX J01294418-1820218,ESO 542-020,ESO-LV 542-0200,MCG -03-04-077,PGC 005576;;; -NGC0584;G;01:31:20.75;-06:52:05.0;Cet;3.78;2.51;104;11.44;10.48;8.24;7.48;7.30;23.06;E;;;;;;1712;;2MASX J01312075-0652050,MCG -01-04-060,PGC 005663;;Position in 1996ApJS..106....1W is 12 arcsec south of the nucleus.; -NGC0585;G;01:31:42.14;-00:55:59.9;Cet;2.40;0.48;86;14.40;;10.48;9.68;9.37;24.10;SBa;;;;;;;;2MASX J01314210-0055584,IRAS 01291-0111,MCG +00-05-001,PGC 005688,SDSS J013142.11-005559.0,SDSS J013142.11-005559.1,SDSS J013142.13-005559.9,SDSS J013142.14-005559.9,UGC 01092;;; -NGC0586;G;01:31:36.85;-06:53:37.5;Cet;1.61;0.78;179;14.10;13.16;11.00;10.31;10.08;23.57;Sa;;;;;;;;2MASX J01313683-0653374,MCG -01-05-001,PGC 005679;;HOLM 045C is a star.; -NGC0587;G;01:32:33.33;+35:21:30.9;Tri;2.23;0.66;68;13.70;;10.78;10.12;9.82;23.42;SABb;;;;;;;;2MASX J01323331+3521307,MCG +06-04-037,PGC 005746,UGC 01100;;Sometimes identified as IC 1713, but that is a star.; -NGC0588;HII;01:32:45.94;+30:38:51.1;Tri;0.60;0.43;;14.40;14.44;;;;;;;;;;;;;IRAS 01299+3023;;H II region within boundaries of Messier 033.; -NGC0589;G;01:32:39.94;-12:02:33.7;Cet;0.76;0.65;87;15.00;;11.46;10.86;10.61;23.09;S0-a;;;;;;;;2MASX J01323992-1202340,MCG -02-05-004,PGC 005758;;; -NGC0590;G;01:33:40.92;+44:55:43.3;And;2.13;0.77;147;14.20;;10.26;9.54;9.24;24.00;SBa;;;;;;;;2MASX J01334092+4455432,MCG +07-04-003,PGC 005808,UGC 01109;;; -NGC0591;G;01:33:31.27;+35:40:05.7;And;1.43;1.14;0;14.71;13.90;11.02;10.34;10.06;23.58;S0-a;;;;;;;;2MASX J01333122+3540055,IRAS 01306+3524,MCG +06-04-038,PGC 005800,TYC 2305-1090-1,UGC 01111;;; -NGC0592;*Ass;01:33:11.69;+30:38:41.8;Tri;;;;;;;;;;;;;;;;;;;;Within boundaries of Messier 033; -NGC0593;G;01:32:20.76;-12:21:16.0;Cet;0.88;0.27;12;14.00;;12.14;11.50;11.23;23.98;S0-a;;;;;;;;2MASX J01322075-1221159,MCG -02-05-003,PGC 005733;;; -NGC0594;G;01:32:56.91;-16:32:09.6;Cet;1.24;0.65;28;14.20;;11.67;11.01;10.66;24.06;Sbc;;;;;;;;2MASX J01325691-1632097,IRAS 01305-1647,MCG -03-05-005,PGC 005769;;; -NGC0595;HII;01:33:33.83;+30:41:29.6;Tri;1.73;0.90;;;;;;;;;;;;;;;;;;; -NGC0596;G;01:32:52.08;-07:01:54.6;Cet;2.14;1.58;36;11.50;;8.87;8.19;7.98;22.36;E;;;;;;;;2MASX J01325190-0701535,MCG -01-05-005,PGC 005766;;; -NGC0597;G;01:32:14.85;-33:29:49.5;Scl;1.31;1.21;45;13.98;;11.98;11.33;10.94;23.19;SBbc;;;;;;;;2MASX J01321484-3329493,ESO 353-011,ESO-LV 353-0110,IRAS 01299-3345,MCG -06-04-044,PGC 005721;;Confused HIPASS source; -NGC0598;G;01:33:50.89;+30:39:36.8;Tri;62.09;36.73;23;6.27;5.72;5.04;4.35;4.10;23.61;Sc;;;;033;;;;2MASX J01335090+3039357,IRAS 01310+3024,MCG +05-04-069,PGC 005818,UGC 01117;Triangulum Galaxy,Triangulum Pinwheel;; -NGC0599;G;01:32:53.78;-12:11:28.5;Cet;1.53;1.16;128;13.00;;10.67;9.95;9.71;23.81;E-S0;;;;;;;;2MASX J01325375-1211287,MCG -02-05-005,PGC 005778,TYC 5279-454-1;;; -NGC0600;G;01:33:05.30;-07:18:41.1;Cet;2.63;2.56;25;13.10;;11.48;10.92;10.71;23.83;Scd;;;;;;;;2MASX J01330529-0718410,MCG -01-05-007,PGC 005777;;; -NGC0601;G;01:33:06.58;-12:12:31.5;Cet;0.40;0.38;25;16.00;;13.01;12.30;12.03;23.12;;;;;;;;;2MASX J01330657-1212317,PGC 073980;;; -NGC0602;OCl;01:29:26.36;-73:33:37.8;Hyi;3.20;2.90;90;;13.02;;;;;;;;;;;;;ESO 029-043;;; -NGC0603;Other;01:34:43.90;+30:13:55.1;Tri;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC0604;HII;01:34:33.19;+30:47:05.6;Tri;1.93;1.20;;;;;;;;;;;;;;;;IRAS 01317+3031;;SNR involved. See 1987A&A...174...28C.; -NGC0605;G;01:35:02.35;+41:14:53.3;And;1.32;0.56;148;14.30;;10.98;10.24;10.02;23.67;S0;;;;;;;;2MASX J01350235+4114533,MCG +07-04-004,PGC 005891,UGC 01128;;; -NGC0606;G;01:34:50.16;+21:25:06.4;Psc;1.01;0.77;137;14.50;;11.66;10.95;10.61;23.14;Sc;;;;;;;;2MASX J01345018+2125063,IRAS 01321+2109,MCG +03-05-010,PGC 005874,UGC 01126;;; -NGC0607;Other;01:34:16.37;-07:24:46.1;Cet;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC0608;G;01:35:28.24;+33:39:24.2;Tri;0.83;0.55;33;14.00;;10.88;10.20;9.94;22.42;S0-a;;;;;;;;2MASX J01352825+3339242,MCG +05-04-073,PGC 005913,UGC 01135;;; -NGC0609;OCl;01:36:23.74;+64:32:11.7;Cas;4.80;;;12.31;11.00;;;;;;;;;;;;;2MASX J01362623+6432172,MWSC 0128;;; -NGC0610;Other;01:34:18.00;-20:08:39.2;Cet;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC0611;Other;01:34:18.01;-20:07:39.2;Cet;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC0612;G;01:33:57.74;-36:29:35.7;Scl;1.49;1.34;160;13.90;13.15;10.69;9.91;9.58;23.63;S0-a;;;;;;;;2MASX J01335775-3629358,ESO 353-015,ESO-LV 353-0150,IRAS 01317-3644,MCG -06-04-046,PGC 005827;;; -NGC0613;G;01:34:18.17;-29:25:06.1;Scl;5.48;4.51;125;10.77;12.71;7.92;7.38;7.03;23.02;Sbc;;;;;;;;2MASX J01341823-2925065,ESO 413-011,ESO-LV 413-0110,IRAS 01319-2940,MCG -05-04-044,PGC 005849;;; -NGC0614;G;01:35:52.26;+33:40:54.8;Tri;1.52;1.44;120;13.90;;10.72;10.08;9.78;23.50;S0;;;;;0618,0627;;;2MASX J01355227+3340545,MCG +05-04-075,PGC 005933,UGC 01140;;"Identification as NGC 0618 is uncertain; NGC 0618 could be NGC 0608."; -NGC0615;G;01:35:05.68;-07:20:25.1;Cet;3.18;1.16;164;12.80;;9.51;8.86;8.56;22.98;Sb;;;;;;;;2MASX J01350567-0720250,IRAS 01325-0735,MCG -01-05-008,PGC 005897;;; -NGC0616;**;01:36:04.20;+33:46:12.8;Tri;;;;;;;;;;;;;;;;;;;;; -NGC0617;G;01:34:02.54;-09:46:26.9;Cet;0.59;0.52;4;15.16;14.70;12.80;12.16;11.94;22.94;Sab;;;;;;;;2MASX J01340253-0946274,MCG -02-05-007,PGC 005831,SDSS J013402.53-094626.9,SDSS J013402.54-094626.9;;; -NGC0618;Dup;01:35:52.26;+33:40:54.8;Tri;;;;;;;;;;;;;;;0614;;;;;; -NGC0619;G;01:34:51.79;-36:29:21.8;Scl;1.66;1.03;107;14.34;;11.25;10.68;10.31;23.65;SBb;;;;;;;;2MASX J01345179-3629217,ESO 353-021,ESO-LV 353-0210,MCG -06-04-051,PGC 005878;;; -NGC0620;G;01:36:59.68;+42:19:24.0;And;0.82;0.77;30;13.90;;11.90;11.33;11.02;22.36;Scd;;;;;;;;2MASX J01365967+4219240,IRAS 01340+4204,MCG +07-04-006,PGC 005990,UGC 01150;;; -NGC0621;G;01:36:49.06;+35:30:43.9;Tri;1.12;1.06;105;14.20;;10.69;9.95;9.71;23.23;S0;;;;;;;;2MASX J01364904+3530440,MCG +06-04-045,PGC 005984,UGC 01147;;; -NGC0622;G;01:36:00.16;+00:39:48.7;Cet;1.30;0.83;55;13.96;13.30;11.41;10.76;10.41;23.17;Sb;;;;;;;;2MASX J01360013+0039481,IRAS 01334+0024,MCG +00-05-014,PGC 005939,SDSS J013600.15+003948.6,SDSS J013600.15+003948.7,SDSS J013600.16+003948.7,UGC 01143;;; -NGC0623;G;01:35:06.39;-36:29:24.8;Scl;1.94;1.46;87;13.60;;10.56;9.83;9.59;23.84;E;;;;;;;;2MASX J01350638-3629248,ESO 353-023,ESO-LV 353-0230,MCG -06-04-052,PGC 005898;;; -NGC0624;G;01:35:51.09;-10:00:10.7;Cet;1.30;0.67;91;14.20;;11.45;10.74;10.47;23.05;SBb;;;;;;;;2MASX J01355106-1000105,MCG -02-05-010,PGC 005932,SDSS J013551.08-100010.6,SDSS J013551.09-100010.7;;; -NGC0625;G;01:35:04.63;-41:26:10.3;Phe;6.55;2.05;92;11.78;11.25;9.66;9.09;8.90;23.43;SBm;;;;;;;;2MASX J01350463-4126103,ESO 297-005,ESO-LV 297-0050,IRAS 01329-4141,MCG -07-04-017,PGC 005896;;; -NGC0626;G;01:35:12.08;-39:08:45.8;Scl;1.44;1.30;30;13.41;;11.02;10.28;10.07;22.90;Sc;;;;;;;;2MASX J01351206-3908457,ESO 297-006,ESO-LV 297-0060,MCG -07-04-018,PGC 005901;;; -NGC0627;Dup;01:35:52.26;+33:40:54.8;Tri;;;;;;;;;;;;;;;0614;;;;;; -NGC0628;G;01:36:41.75;+15:47:01.2;Psc;9.89;9.33;87;10.00;9.46;7.63;7.04;6.85;23.37;Sc;;;;074;;;;2MASX J01364177+1547004,IRAS 01340+1532,MCG +03-05-011,PGC 005974,UGC 01149;;; -NGC0629;Other;01:38:58.54;+72:52:01.5;Cas;;;;;;;;;;;;;;;;;;;;Five Galactic stars.; -NGC0630;G;01:35:36.48;-39:21:28.2;Scl;1.90;1.40;54;13.57;;10.41;9.70;9.49;23.74;E-S0;;;;;;;;2MASX J01353647-3921283,ESO 297-009,ESO-LV 297-0090,MCG -07-04-020,PGC 005924;;; -NGC0631;G;01:36:47.06;+05:50:07.3;Psc;0.93;0.83;135;15.00;;11.50;10.91;10.51;23.63;E;;;;;;;;2MASX J01364707+0550074,MCG +01-05-007,PGC 005983,UGC 01153;;; -NGC0632;G;01:37:17.53;+05:52:39.5;Psc;0.99;0.86;168;13.50;;11.11;10.39;10.10;22.27;S0-a;;;;;;;;2MASX J01371753+0552389,IRAS 01346+0537,MCG +01-05-010,PGC 006007,SDSS J013717.56+055238.4,UGC 01157;;; -NGC0633;G;01:36:23.40;-37:19:17.6;Scl;1.10;0.95;178;13.50;;11.15;10.36;10.04;22.37;SBb;;;;;;;;2MASX J01362341-3719176,ESO 297-011,ESO-LV 297-0110,MCG -06-04-056,PGC 005960;;; -NGC0634;G;01:38:18.66;+35:21:53.4;Tri;1.77;0.61;167;14.00;;10.76;10.03;9.73;23.35;Sa;;;;;;;;2MASX J01381867+3521534,MCG +06-04-048,PGC 006059,UGC 01164;;; -NGC0635;G;01:38:17.86;-22:55:44.1;Cet;0.60;0.53;129;15.55;;12.60;11.93;11.54;22.76;Sbc;;;;;;;;2MASX J01381784-2255440,IRAS 01359-2310,MCG -04-05-002,PGC 006062;;; -NGC0636;G;01:39:06.53;-07:30:45.4;Cet;2.70;2.30;6;12.50;;9.32;8.67;8.44;23.38;E;;;;;;;;2MASX J01390652-0730453,MCG -01-05-013,PGC 006110;;; -NGC0637;OCl;01:43:03.11;+64:02:11.6;Cas;4.50;;;8.56;8.20;;;;;;;;;;;;;MWSC 0133;;; -NGC0638;G;01:39:37.85;+07:14:14.4;Psc;0.94;0.62;18;14.40;;11.92;11.36;10.90;23.06;E?;;;;;;;;2MASX J01393785+0714144,IRAS 01370+0659,MCG +01-05-014,PGC 006145,UGC 01170;;; -NGC0639;G;01:38:59.05;-29:55:31.2;Scl;1.04;0.30;32;14.67;;12.32;11.61;11.32;22.94;Sa;;;;;;;;ESO 413-013,ESO-LV 413-0130,MCG -05-05-002,PGC 006105;;; -NGC0640;G;01:39:24.88;-09:24:04.2;Cet;0.76;0.43;147;15.00;;12.88;12.28;11.86;23.25;SBa;;;;;;;;2MASX J01392485-0924042,MCG -02-05-031,PGC 006130,SDSS J013924.88-092404.2;;; -NGC0641;G;01:38:39.23;-42:31:39.1;Phe;1.82;1.68;80;13.34;;10.18;9.53;9.26;23.28;E;;;;;;;;2MASX J01383922-4231391,ESO 244-042,ESO-LV 244-0420,MCG -07-04-026,PGC 006081;;; -NGC0642;G;01:39:06.33;-29:54:53.6;Scl;1.80;1.09;18;13.58;;11.20;10.76;10.29;23.06;SBc;;;;;;;;2MASX J01390634-2954534,ESO 413-014,ESO-LV 413-0140,IRAS 01367-3010,MCG -05-05-003,PGC 006112;;The APM position is 8 arcsec north of nucleus.; -NGC0643;OCl;01:35:01.43;-75:33:24.7;Hyi;2.20;2.20;;;;12.97;12.29;11.99;;;;;;;;;;2MASX J01350142-7533250,ESO 029-050;;In the Small Magellanic Cloud.; -NGC0643A;OCl;01:30:38.49;-76:03:16.2;Hyi;;;;;;;;;;;;;;;;;;;;In the Small Magellanic Cloud.; -NGC0643B;G;01:39:12.73;-75:00:40.0;Hyi;1.75;0.47;116;14.61;;11.30;10.49;10.10;24.39;S0-a;;;;;;;;2MASX J01391285-7500392,ESO 029-053,ESO-LV 29-0530,IRAS 01384-7515,PGC 006117,TYC 9348-1106-1;;; -NGC0643C;G;01:41:49.13;-75:16:05.2;Hyi;1.40;0.23;153;15.70;;12.60;11.82;11.55;23.64;Sc;;;;;;;;2MASX J01414909-7516052,ESO 030-001,ESO-LV 30-0010,PGC 006256;;; -NGC0644;G;01:38:52.96;-42:35:07.0;Phe;1.30;0.68;154;14.79;;12.00;11.36;10.97;23.45;SBc;;;;;;;;2MASX J01385297-4235071,ESO 244-043,ESO-LV 244-0430,IRAS 01367-4250,MCG -07-04-027,PGC 006097;;; -NGC0645;G;01:40:08.70;+05:43:36.1;Psc;2.29;0.68;120;13.80;;11.02;10.52;10.17;23.42;Sb;;;;;;;;2MASX J01400869+0543361,IRAS 01375+0528,MCG +01-05-016,PGC 006172,UGC 01177;;; -NGC0646;GPair;01:37:25.50;-64:53:47.0;Hyi;1.51;1.02;121;14.37;;;;;;;;;;;;;;ESO 080-002,IRAS 01357-6508,PGC 006010;;; -NGC0646 NED01;G;01:37:21.12;-64:53:41.5;Hyi;1.23;0.97;127;14.24;;12.20;11.42;11.09;23.15;SBc;;;;;;;;2MASX J01372109-6453416,ESO-LV 80-0020,PGC 3442014;;; -NGC0646 NED02;G;01:37:29.89;-64:53:46.6;Hyi;0.60;0.45;64;15.65;;12.97;12.27;11.71;22.53;E-S0;;;;;;;;2MASX J01372989-6453466,ESO-LV 80-0021,PGC 006014;;; -NGC0647;G;01:39:56.19;-09:14:32.6;Cet;1.27;0.98;19;15.00;;;;;23.57;S0;;;;;;;;MCG -02-05-033,PGC 006155,SDSS J013956.19-091432.6;;; -NGC0648;G;01:38:39.79;-17:49:52.3;Cet;1.09;0.63;118;16.33;;11.41;10.64;10.32;23.59;E-S0;;;;;;0146;;2MASX J01383980-1749525,ESO 543-006,MCG -03-05-011,PGC 006083;;; -NGC0649;G;01:40:07.45;-09:16:19.6;Cet;1.07;0.39;22;14.69;;12.44;11.92;11.65;23.71;Sa;;;;;;;;2MASX J01400745-0916196,MCG -02-05-034,PGC 006169,SDSS J014007.45-091619.5,SDSS J014007.45-091619.6;;; -NGC0650;PN;01:42:19.69;+51:34:31.7;Per;1.12;;;12.20;10.10;;;;;;;;17.48;076;0651;;;2MASX J01421808+5134243,IRAS 01391+5119,PN G130.9-10.5;Barbell Nebula,Cork Nebula,Little Dumbbell Nebula;The 2MASX position is centered on a superposed star.; -NGC0651;Dup;01:42:19.69;+51:34:31.7;Per;;;;;;;;;;;;;;;0650;;;;;; -NGC0652;G;01:40:43.28;+07:58:58.5;Psc;0.94;0.51;52;14.70;;11.99;11.31;11.07;23.14;Sab;;;;;;;;2MASX J01404337+0758589,IRAS 01380+0743,MCG +01-05-017,PGC 006208,UGC 01184;;; -NGC0653;G;01:42:25.74;+35:38:18.0;And;1.49;0.23;40;14.10;;11.06;10.33;10.00;22.69;Sab;;;;;;;;2MASX J01422571+3538180,MCG +06-04-058,PGC 006290,UGC 01193;;; -NGC0654;OCl;01:43:59.43;+61:52:57.8;Cas;6.30;;;7.34;6.50;;;;;;;;;;;;;MWSC 0137;;; -NGC0655;G;01:41:55.13;-13:04:54.3;Cet;1.12;0.65;88;14.00;;11.77;11.04;10.79;23.83;S0;;;;;;;;2MASX J01415514-1304541,MCG -02-05-037,PGC 006262;;; -NGC0656;G;01:42:27.24;+26:08:35.0;Psc;1.27;1.08;32;13.50;;10.75;10.05;9.73;22.88;S0;;;;;;;;2MASX J01422722+2608350,MCG +04-05-002,PGC 006293,UGC 01194;;; -NGC0657;OCl;01:43:20.80;+55:50:11.0;Cas;3.00;;;;;;;;;;;;;;;;;MWSC 0135;;; -NGC0658;G;01:42:09.66;+12:36:06.8;Psc;1.48;0.89;21;13.60;;10.79;10.10;9.75;22.55;Sb;;;;;;;;2MASX J01420965+1236069,IRAS 01394+1220,MCG +02-05-009,PGC 006275,UGC 01192;;; -NGC0659;OCl;01:44:22.99;+60:40:09.0;Cas;4.20;;;8.40;7.90;;;;;;;;;;;;;MWSC 0138;;; -NGC0660;G;01:43:02.40;+13:38:42.2;Psc;4.57;1.69;13;12.02;11.16;8.53;7.72;7.34;23.50;Sa;;;;;;;;2MASX J01430234+1338444,IRAS 01403+1323,MCG +02-05-013,PGC 006318,SDSS J014302.39+133842.2,SDSS J014302.40+133842.2,SDSS J014302.41+133842.1,UGC 01201;;; -NGC0661;G;01:44:14.62;+28:42:21.3;Tri;1.91;1.40;56;13.00;;10.22;9.53;9.26;23.43;E;;;;;;;;2MASX J01441463+2842215,MCG +05-05-005,PGC 006376,UGC 01215;;; -NGC0662;G;01:44:35.45;+37:41:44.8;And;0.81;0.55;13;14.45;13.84;11.85;11.17;10.80;22.62;Sb;;;;;;;;2MASX J01443544+3741447,IRAS 01416+3726,MCG +06-04-060,PGC 006393,UGC 01220;;; -NGC0663;OCl;01:46:16.05;+61:13:05.5;Cas;6.00;;;7.78;7.10;;;;;;;;;;;;;C 010,MWSC 0139;;; -NGC0664;G;01:43:45.81;+04:13:22.4;Psc;1.19;0.93;70;13.90;;11.29;10.59;10.30;22.82;Sb;;;;;;;;2MASX J01434582+0413222,IRAS 01411+0358,MCG +01-05-029,PGC 006359,SDSS J014345.79+041322.7,UGC 01210;;; -NGC0665;G;01:44:56.10;+10:25:22.9;Psc;1.62;0.95;119;13.50;;9.85;9.05;8.88;22.95;S0;;;;;;;;2MASX J01445609+1025230,MCG +02-05-019,PGC 006415,UGC 01223;;87GB source with large sky, narrow minor axis, or very bad confusion.; -NGC0666;G;01:46:06.20;+34:22:28.3;Tri;0.77;0.52;81;13.60;;11.26;10.62;10.37;22.55;E;;;;;;;;2MASX J01460620+3422283,MCG +06-05-002,PGC 006483,UGC 01236;;; -NGC0667;G;01:44:56.68;-22:55:08.2;Cet;0.71;0.57;83;15.23;;12.43;11.58;11.22;23.40;S0;;;;;;;;2MASX J01445670-2255082,ESO 477-002,ESO-LV 477-0020,PGC 006418;;; -NGC0668;G;01:46:22.67;+36:27:37.1;And;1.20;0.82;32;13.50;;11.05;10.39;10.10;22.60;Sb;;;;;;;;2MASX J01462268+3627369,IRAS 01434+3612,MCG +06-05-003,PGC 006502,UGC 01238;;; -NGC0669;G;01:47:16.15;+35:33:47.9;And;2.34;0.57;36;12.90;;9.89;9.13;8.83;23.14;Sab;;;;;;;;2MASX J01471616+3533478,IRAS 01443+3519,MCG +06-05-004,PGC 006560,UGC 01248;;; -NGC0670;G;01:47:24.85;+27:53:08.7;Tri;2.18;0.74;171;13.53;12.72;10.44;9.68;9.45;23.85;S0;;;;;;;;2MASX J01472484+2753085,IRAS 01446+2738,MCG +05-05-012,PGC 006570,UGC 01250;;; -NGC0671;G;01:46:59.17;+13:07:30.4;Ari;1.08;0.43;56;14.17;16.71;11.45;10.77;10.43;22.89;Sa;;;;;;;;2MASX J01465914+1307303,IRAS 01443+1252,MCG +02-05-029,PGC 006546,SDSS J014659.12+130730.5,SDSS J014659.14+130730.4,SDSS J014659.17+130730.4,SDSS J014659.18+130730.4,UGC 01247;;; -NGC0672;G;01:47:54.52;+27:25:58.0;Tri;7.01;2.71;69;11.60;11.09;9.37;8.76;8.51;23.58;SBc;;;;;;;;2MASX J01475452+2725580,IRAS 01450+2710,MCG +04-05-011,PGC 006595,UGC 01256;;; -NGC0673;G;01:48:22.44;+11:31:16.7;Ari;1.77;1.30;1;13.30;;10.54;9.82;9.58;22.94;SABc;;;;;;;;2MASX J01482246+1131176,IRAS 01457+1116,MCG +02-05-033,PGC 006624,SDSS J014822.45+113117.5,UGC 01259;;; -NGC0674;G;01:51:17.57;+22:21:28.7;Ari;3.81;1.26;105;12.70;;9.52;8.81;8.49;23.54;SABc;;;;;0697;;;2MASX J01511756+2221286,IRAS 01485+2206,MCG +04-05-022,PGC 006848,UGC 01317;;; -NGC0675;G;01:49:08.61;+13:03:35.6;Ari;1.04;0.44;101;15.50;;11.99;11.20;10.91;23.88;Sa;;;;;;;;2MASX J01490857+1303354,IRAS 01464+1249,MCG +02-05-041,PGC 006665,SDSS J014908.60+130335.6,UGC 01273;;Multiple SDSS entries describe this object.; -NGC0676;G;01:48:57.31;+05:54:27.1;Psc;2.75;0.69;173;;12.00;;;;21.29;S0-a;;;;;;;;MCG +01-05-034,PGC 006656,UGC 01270;;; -NGC0677;G;01:49:14.06;+13:03:19.3;Ari;1.81;1.81;35;14.30;;10.32;9.62;9.29;23.42;E;;;;;;;;2MASX J01491406+1303188,MCG +02-05-042,PGC 006673,SDSS J014914.03+130319.2,SDSS J014914.04+130319.2,SDSS J014914.05+130319.2,SDSS J014914.06+130319.2,SDSS J014914.06+130319.3,UGC 01275;;; -NGC0678;G;01:49:24.86;+21:59:50.3;Ari;3.08;0.77;78;13.30;;9.63;8.93;8.70;23.61;SBb;;;;;;;;2MASX J01492485+2159502,MCG +04-05-014,PGC 006690,UGC 01280;;; -NGC0679;G;01:49:43.78;+35:47:08.3;And;1.32;1.00;85;13.10;;10.11;9.37;9.14;22.88;E-S0;;;;;;;;2MASX J01494379+3547083,MCG +06-05-012,PGC 006711,UGC 01283;;; -NGC0680;G;01:49:47.29;+21:58:15.1;Ari;1.69;1.56;160;13.00;;9.71;9.00;8.73;22.92;E;;;;;;;;2MASX J01494728+2158149,MCG +04-05-015,PGC 006719,UGC 01286;;; -NGC0681;G;01:49:10.83;-10:25:35.1;Cet;2.47;1.77;66;12.50;;9.63;8.98;8.65;23.27;SABa;;;;;;;;2MASX J01491084-1025355,IRAS 01467-1040,MCG -02-05-052,PGC 006671,SDSS J014910.82-102535.1,SDSS J014910.83-102535.3,SDSS J014910.84-102535.3;;Confused HIPASS source; -NGC0682;G;01:49:04.60;-14:58:29.4;Cet;0.74;0.25;115;13.00;;10.47;9.84;9.44;22.16;E-S0;;;;;;;;2MASX J01490460-1458295,MCG -03-05-022,PGC 006663;;; -NGC0683;G;01:49:46.69;+11:42:04.7;Ari;0.66;0.60;50;14.80;;12.34;11.76;11.38;22.75;Sb;;;;;;;;2MASX J01494670+1142048,IRAS 01471+1127,MCG +02-05-047,PGC 006718,UGC 01288;;; -NGC0684;G;01:50:14.02;+27:38:44.4;Tri;2.95;0.82;90;13.20;;9.88;9.09;8.79;23.55;Sb;;;;;;0165;;2MASX J01501400+2738444,IRAS 01474+2724,MCG +04-05-017,PGC 006759,UGC 01292;;The UZC position is 14 arcsec off the nucleus.; -NGC0685;G;01:47:42.81;-52:45:42.5;Eri;3.01;2.30;62;12.02;;10.14;9.55;9.19;22.80;Sc;;;;;;;;2MASX J01474280-5245423,ESO 152-024,ESO-LV 152-0240,IRAS 01458-5300,PGC 006581;;; -NGC0686;G;01:48:56.14;-23:47:53.3;Cet;1.34;1.06;5;13.37;;10.17;9.50;9.24;22.77;E-S0;;;;;;;;2MASX J01485612-2347535,ESO 477-006,ESO-LV 477-0060,MCG -04-05-008,PGC 006655;;; -NGC0687;G;01:50:33.24;+36:22:14.9;And;1.27;1.16;90;13.30;13.33;10.21;9.48;9.24;22.85;S0;;;;;;;;2MASX J01503324+3622147,MCG +06-05-014,PGC 006782,UGC 01298;;; -NGC0688;G;01:50:44.18;+35:17:04.3;Tri;0.89;0.38;153;13.30;;11.15;10.49;10.25;21.25;Sb;;;;;;;;2MASX J01504419+3517041,IRAS 01478+3502,MCG +06-05-015,PGC 006799,UGC 01302;;; -NGC0689;G;01:49:51.77;-27:27:59.8;For;1.07;0.66;70;14.56;;11.35;10.59;10.27;23.08;SABa;;;;;;;;2MASX J01495176-2728000,ESO 414-005,ESO-LV 414-0050,IRAS 01475-2742,MCG -05-05-019,PGC 006724;;; -NGC0690;G;01:47:48.08;-16:43:19.2;Cet;1.10;0.70;158;14.41;;13.59;13.78;13.29;23.41;SABc;;;;;;;;2MASX J01474807-1643198,MCG -03-05-021,PGC 006587;;; -NGC0691;G;01:50:41.72;+21:45:35.7;Ari;2.68;1.85;92;13.50;;9.68;8.99;8.82;22.88;Sbc;;;;;;;;2MASX J01504172+2145356,IRAS 01479+2130,MCG +04-05-019,PGC 006793,SDSS J015041.70+214535.9,UGC 01305;;; -NGC0692;G;01:48:41.99;-48:38:54.6;Phe;1.95;1.41;84;13.06;;10.33;9.68;9.35;23.04;Sbc;;;;;;;;2MASX J01484201-4838542,ESO 197-003,ESO-LV 197-0030,IRAS 01467-4853,PGC 006642;;; -NGC0693;G;01:50:30.85;+06:08:42.8;Psc;2.11;1.09;106;13.24;12.44;10.23;9.70;9.23;23.41;S0-a;;;;;;;;2MASX J01503084+0608427,IRAS 01479+0553,MCG +01-05-035,PGC 006778,UGC 01304;;; -NGC0694;G;01:50:58.49;+21:59:51.0;Ari;0.57;0.34;163;13.90;;11.87;11.21;10.93;21.83;S0;;;;;;;;2MASX J01505849+2159511,IRAS 01481+2144,MCG +04-05-020,PGC 006816,UGC 01310;;; -NGC0695;G;01:51:14.24;+22:34:56.5;Ari;0.48;0.42;51;13.70;;11.41;10.64;10.26;20.92;S0;;;;;;;;2MASX J01511437+2234561,IRAS 01484+2220,PGC 006844,UGC 01315;;; -NGC0696;G;01:49:31.26;-34:54:18.6;For;1.80;0.72;25;14.37;;11.06;10.33;10.07;24.34;S0-a;;;;;;;;2MASX J01493128-3454187,ESO 353-050,ESO-LV 353-0500,MCG -06-05-004,PGC 006695;;; -NGC0697;Dup;01:51:17.57;+22:21:28.7;Ari;;;;;;;;;;;;;;;0674;;;;;; -NGC0698;G;01:49:43.70;-34:49:51.9;For;0.93;0.79;170;14.78;;12.32;11.77;11.37;23.25;Sab;;;;;;;;2MASX J01494371-3449517,ESO 353-051,ESO-LV 353-0510,MCG -06-05-005,PGC 006710;;; -NGC0699;G;01:50:43.68;-12:02:08.4;Cet;1.40;0.37;132;14.00;;12.07;11.32;10.97;23.38;SBbc;;;;;;;;2MASX J01504368-1202082,IRAS 01482-1217,MCG -02-05-059,PGC 006798;;; -NGC0700;G;01:52:16.84;+36:02:12.2;And;0.48;0.40;41;15.50;;12.25;11.43;11.21;22.84;S0;;;;;;;;2MASX J01521683+3602122,PGC 006928;;; -NGC0701;G;01:51:03.84;-09:42:09.4;Cet;2.24;1.11;49;12.80;;10.08;9.46;9.17;22.73;SBc;;;;;;;;2MASX J01510384-0942093,IRAS 01485-0957,MCG -02-05-060,PGC 006826;;HOLM 047B is a star.; -NGC0702;GPair;01:51:18.80;-04:03:07.0;Cet;1.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC0702 NED01;G;01:51:18.39;-04:02:57.0;Cet;0.38;0.17;95;;;15.15;14.46;14.44;;;;;;;;;;2MASX J01511833-0402567;;; -NGC0702 NED02;G;01:51:19.19;-04:03:21.4;Cet;1.03;0.72;136;17.63;;11.15;10.46;10.24;22.48;SBbc;;;;;;;;IRAS 01487-0418,MCG -01-05-043,PGC 006852;;; -NGC0703;G;01:52:39.60;+36:10:17.1;And;0.99;0.69;48;14.50;;10.95;10.13;9.88;23.05;E-S0;;;;;;;;2MASX J01523960+3610172,MCG +06-05-029,PGC 006957,UGC 01346;;; -NGC0704A;G;01:52:39.98;+36:07:15.4;And;0.55;0.39;105;;;15.04;15.00;13.88;;;;;;;;;;2MASX J01524001+3607152,MCG +06-05-028 NED01,UGC 01343 NED01;;; -NGC0704B;G;01:52:37.70;+36:07:36.5;And;1.10;0.69;139;14.10;;11.31;10.70;10.38;23.26;E-S0;;;;;0704;;;2MASX J01523770+3607362,MCG +06-05-028 NED02,PGC 006953,UGC 01343 NED02;;; -NGC0705;G;01:52:41.52;+36:08:38.4;And;1.44;0.69;112;14.50;;;;;23.89;S0-a;;;;;;;;MCG +06-05-030,PGC 006958,UGC 01345;;; -NGC0706;G;01:51:50.53;+06:17:48.8;Psc;1.29;1.06;153;13.20;12.50;10.50;9.82;9.52;22.35;Sc;;;;;;;;2MASX J01515052+0617487,IRAS 01492+0602,MCG +01-05-040,PGC 006897,SDSS J015150.51+061748.7,UGC 01334;;; -NGC0707;G;01:51:27.10;-08:30:19.3;Cet;1.31;0.73;82;14.00;;11.29;10.59;10.40;23.89;E-S0;;;;;;;;2MASX J01512708-0830193,MCG -02-05-063,PGC 006861,SDSS J015127.09-083019.2,SDSS J015127.09-083019.3,SDSS J015127.10-083019.3;;; -NGC0708;G;01:52:46.48;+36:09:06.6;And;2.56;1.23;38;14.27;13.29;9.60;8.69;8.57;24.62;E;;;;;;;;2MASX J01524648+3609065,MCG +06-05-031,PGC 006962,UGC 01348;;; -NGC0709;G;01:52:50.62;+36:13:24.4;And;0.72;0.36;128;15.20;;12.08;11.34;11.07;23.24;E-S0;;;;;;;;2MASX J01525060+3613245,PGC 006969;;; -NGC0710;G;01:52:53.94;+36:03:10.4;And;1.04;0.67;29;14.30;;11.70;11.13;10.86;22.73;Sc;;;;;;;;2MASX J01525392+3603095,IRAS 01499+3548,MCG +06-05-033,PGC 006972,UGC 01349;;; -NGC0711;G;01:52:27.76;+17:30:45.6;Ari;1.10;0.48;17;14.50;;11.18;10.53;10.23;23.55;S0;;;;;;;;2MASX J01522780+1730450,MCG +03-05-024,PGC 006940,UGC 01342;;; -NGC0712;G;01:53:08.44;+36:49:11.5;And;1.08;0.71;83;13.90;;10.42;9.74;9.43;22.98;S0;;;;;;;;2MASX J01530843+3649115,MCG +06-05-035,PGC 006988,UGC 01352;;; -NGC0713;G;01:55:21.53;-09:05:01.5;Cet;1.15;0.28;95;15.00;;12.24;11.55;11.26;23.29;Sb;;;;;;;;2MASX J01552155-0905012,MCG -02-05-075,PGC 007161,SDSS J015521.53-090501.5;;; -NGC0714;G;01:53:29.65;+36:13:16.7;And;1.46;0.35;111;13.90;;10.57;9.86;9.61;23.38;S0-a;;;;;;;;2MASX J01532965+3613167,MCG +06-05-037,PGC 007009,UGC 01358;;; -NGC0715;G;01:53:12.52;-12:52:22.2;Cet;0.88;0.36;177;15.00;;12.17;11.56;11.21;22.81;Sb;;;;;;;;2MASX J01531252-1252221,MCG -02-05-069,PGC 006991;;; -NGC0716;G;01:52:59.68;+12:42:30.5;Ari;1.31;0.52;59;14.00;;10.71;9.95;9.68;22.94;Sa;;;;;;1743;;2MASX J01525968+1242305,IRAS 01503+1227,MCG +02-05-054,PGC 006982,SDSS J015259.68+124230.4,UGC 01351;;; -NGC0717;G;01:53:55.11;+36:13:45.9;And;1.31;0.23;115;14.70;;11.44;10.62;10.43;23.82;S0-a;;;;;;;;2MASX J01535510+3613460,MCG +06-05-041,PGC 007033,UGC 01363;;; -NGC0718;G;01:53:13.30;+04:11:45.0;Psc;2.75;2.46;36;12.52;11.67;9.64;8.99;8.74;23.43;Sa;;;;;;;;2MASX J01531331+0411453,IRAS 01506+0357,MCG +01-05-041,PGC 006993,UGC 01356;;; -NGC0719;G;01:53:38.84;+19:50:25.5;Ari;1.01;0.71;157;14.70;;11.08;10.37;10.04;23.61;S0;;;;;;1744;;2MASX J01533886+1950258,MCG +03-05-026,PGC 007019,UGC 01360;;; -NGC0720;G;01:53:00.50;-13:44:19.2;Cet;4.49;2.37;142;12.40;;8.18;7.51;7.27;23.23;E;;;;;;;;2MASX J01530052-1344192,MCG -02-05-068,PGC 006983;;; -NGC0721;G;01:54:45.46;+39:23:00.7;And;1.40;0.83;124;13.80;;11.48;10.75;10.44;23.22;Sbc;;;;;;;;2MASX J01544546+3923006,MCG +06-05-043,PGC 007097,UGC 01376;;; -NGC0722;G;01:54:46.95;+20:41:53.6;Ari;1.13;0.47;137;14.60;;11.26;10.55;10.33;23.08;Sb;;;;;;;;2MASX J01544693+2041537,MCG +03-05-032,PGC 007098,UGC 01379;;; -NGC0723;G;01:53:45.68;-23:45:27.9;Cet;1.34;1.04;135;13.25;;11.11;10.54;10.30;22.65;Sbc;;;;;0724;;;2MASX J01534567-2345279,ESO 477-013,ESO-LV 477-0130,IRAS 01514-2400,MCG -04-05-016,PGC 007024;;; -NGC0724;Dup;01:53:45.68;-23:45:27.9;Cet;;;;;;;;;;;;;;;0723;;;;;; -NGC0725;G;01:52:35.49;-16:31:04.1;Cet;0.89;0.55;77;14.00;;12.35;11.70;11.26;23.07;Sc;;;;;;;;2MASX J01523548-1631041,IRAS 01500-1647,MCG -03-05-025,PGC 006950;;; -NGC0726;G;01:55:31.87;-10:47:59.3;Cet;1.08;0.44;104;14.27;;13.47;12.74;12.11;23.06;SBd;;;;;;;;2MASX J01553187-1047591,MCG -02-06-003,PGC 007182;;; -NGC0727;G;01:53:49.38;-35:51:22.2;For;1.18;0.62;74;14.95;;11.85;11.07;10.93;23.56;Sab;;;;;0729;;;2MASX J01534938-3551222,ESO 354-010,ESO-LV 354-0100,MCG -06-05-012,PGC 007027;;; -NGC0728;Other;01:55:01.44;+04:13:21.3;Psc;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC0729;Dup;01:53:49.38;-35:51:22.2;For;;;;;;;;;;;;;;;0727;;;;;; -NGC0730;*;01:55:18.00;+05:38:11.0;Psc;;;;;;;;;;;;;;;;;;;;; -NGC0731;G;01:54:56.21;-09:00:38.9;Cet;1.70;1.50;156;13.46;;10.07;9.42;9.19;23.09;E;;;;;0757;;;2MASX J01545624-0900391,MCG -02-05-073,PGC 007118,SDSS J015456.20-090038.8;;; -NGC0732;G;01:56:27.71;+36:48:08.0;And;0.98;0.57;12;14.90;;;;;23.65;S0;;;;;;;;IRAS 01535+3633,MCG +06-05-057,PGC 007270,UGC 01406;;; -NGC0733;*;01:56:33.89;+33:03:19.1;Tri;;;;15.80;;14.42;14.02;13.96;;;;;;;;;;2MASS J01563394+3303181;;; -NGC0734;G;01:53:28.74;-16:59:44.5;Cet;0.75;0.40;60;15.36;;12.69;12.12;11.62;23.07;SBab;;;;;;;;2MASX J01532872-1659442,PGC170023;;; -NGC0735;G;01:56:37.98;+34:10:36.4;Tri;1.60;0.41;136;13.90;;11.11;10.49;10.23;22.91;Sb;;;;;;;;2MASX J01563802+3410366,MCG +06-05-058,PGC 007275,PGC 007282,UGC 01411;;GSC 2315-0156 (V=14.1) superposed 20 arcsec northwest of nucleus.; -NGC0736;G;01:56:40.87;+33:02:36.6;Tri;1.83;1.64;130;13.60;;10.06;9.36;9.07;23.34;E;;;;;;;;2MASX J01564087+3302366,MCG +05-05-028,PGC 007289,UGC 01414;;; -NGC0737;Other;01:56:40.80;+33:02:56.1;Tri;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC0738;G;01:56:45.69;+33:03:30.0;Tri;0.35;0.31;;15.50;;;;;22.41;S0;;;;;;;;PGC 007303;;; -NGC0739;G;01:56:54.69;+33:16:00.1;Tri;0.81;0.52;133;14.80;;12.03;11.38;11.00;23.31;S0-a;;;;;;;;2MASX J01565464+3315596,MCG +05-05-030,PGC 007312;;The identification as NGC 739 is certain.; -NGC0740;G;01:56:54.87;+33:00:54.6;Tri;1.57;0.34;138;14.90;;11.88;11.06;10.88;23.55;SBb;;;;;;;;2MASX J01565486+3300546,MCG +05-05-031,PGC 007316,UGC 01421;;; -NGC0741;G;01:56:21.03;+05:37:44.2;Psc;2.83;2.33;93;13.20;;9.20;8.54;8.30;23.43;E;;;;;;1751;;2MASX J01562095+0537437,MCG +01-06-003,PGC 007252,UGC 01413;;; -NGC0742;G;01:56:24.17;+05:37:36.1;Psc;0.19;0.19;;14.80;;;;;20.20;E-S0;;;;;;;;MCG +01-06-004,PGC 007264,UGC 01413 NOTES03;;UGC says 'superimposed on preceding part of UGC 01413'.; -NGC0743;OCl;01:58:31.29;+60:09:58.7;Cas;5.40;;;;;;;;;;;;;;;;;MWSC 0154;;; -NGC0744;OCl;01:58:29.92;+55:28:28.6;Per;11.70;;;8.38;7.90;;;;;;;;;;;;;MWSC 0153;;; -NGC0745;GGroup;01:54:08.66;-56:41:26.7;Eri;1.80;;;;;;;;;;;;;;;;;ESO 152-032;;;Diameter of the group inferred by the author. -NGC0745 NED01;G;01:54:07.72;-56:41:37.2;Eri;1.75;1.11;36;14.06;;10.63;9.96;9.63;23.87;S0-a;;;;;0745S;;;ESO-LV 152-0320,PGC 007054;;; -NGC0745 NED02;G;01:54:07.61;-56:41:14.5;Eri;0.11;0.11;0;15.21;;;;;;;;;;;;;;ESO-LV 152-0321;;; -NGC0745 NED03;G;01:54:11.33;-56:41:07.7;Eri;1.13;0.41;104;15.51;;12.65;12.05;11.88;24.05;E-S0;;;;;;;;2MASX J01541134-5641079,PGC 095386;;; -NGC0746;G;01:57:51.01;+44:55:06.9;And;1.82;1.29;86;13.80;;11.49;10.94;10.75;23.43;I;;;;;;;;2MASX J01575100+4455069,IRAS 01548+4441,MCG +07-05-003,PGC 007399,UGC 01438;;; -NGC0747;G;01:57:30.45;-09:27:44.5;Cet;1.15;0.59;177;14.00;;11.53;10.83;10.53;23.05;Sb;;;;;;;;2MASX J01573044-0927444,MCG -02-06-007,PGC 007366,SDSS J015730.44-092744.5,SDSS J015730.45-092744.5;;; -NGC0748;G;01:56:21.80;-04:28:03.5;Cet;2.56;1.02;146;12.00;;10.59;9.88;9.66;23.54;Sb;;;;;;;;2MASX J01562179-0428034,MCG -01-06-004,PGC 007259;;; -NGC0749;G;01:55:41.12;-29:55:20.4;For;2.07;1.27;109;13.43;;10.25;9.55;9.26;23.65;S0-a;;;;;;;;2MASX J01554111-2955205,ESO 414-011,ESO-LV 414-0110,IRAS 01534-3009,MCG -05-05-023,PGC 007191;;IC 1740 is more likely to be a double star than this galaxy.; -NGC0750;G;01:57:32.73;+33:12:33.4;Tri;1.48;1.41;170;12.90;;9.57;8.83;8.56;22.83;E;;;;;;;;2MASX J01573274+3312332,MCG +05-05-034,PGC 007369,UGC 01430;;; -NGC0751;G;01:57:32.99;+33:12:11.1;Tri;1.64;1.30;139;12.90;;;;;23.39;E;;;;;;;;MCG +05-05-035,PGC 007370,UGC 01431;;; -NGC0752;OCl;01:57:34.82;+37:50:00.2;And;39.00;;;6.47;5.70;;;;;;;;;;;;;C 028,MWSC 0151;;; -NGC0753;G;01:57:42.20;+35:54:58.0;And;1.38;0.87;131;12.60;;10.37;9.66;9.37;22.13;SABc;;;;;;;;2MASX J01574218+3554581,IRAS 01547+3540,MCG +06-05-066,PGC 007387,UGC 01437;;; -NGC0754;G;01:54:20.84;-56:45:39.8;Eri;0.61;0.57;80;15.24;;12.15;11.52;11.34;23.04;E;;;;;;;;2MASX J01542082-5645399,ESO 152-033,ESO-LV 152-0330,PGC 007068;;; -NGC0755;G;01:56:22.68;-09:03:41.1;Cet;2.87;0.90;53;13.20;;11.00;10.49;10.18;23.28;SBbc;;;;;0764;;;2MASX J01562268-0903411,IRAS 01538-0918,MCG -02-06-005,PGC 007262;;; -NGC0756;GPair;01:54:29.05;-16:42:25.8;Cet;0.67;0.48;25;15.00;;12.20;11.62;11.13;22.93;S0;;;;;;;;2MASX J01542903-1642257,MCG -03-05-029,PGC 007078,SDSS J015429.04-164225.8;;Star superposed.; -NGC0757;Dup;01:54:56.21;-09:00:38.9;Cet;;;;;;;;;;;;;;;0731;;;;;; -NGC0758;G;01:55:42.14;-03:03:59.3;Cet;0.77;0.61;95;15.13;;11.77;11.09;10.72;23.52;S0;;;;;;;;2MASX J01554215-0303589,PGC 007198;;; -NGC0759;G;01:57:50.33;+36:20:35.2;And;1.12;1.06;10;13.70;;10.17;9.43;9.14;22.96;E;;;;;;;;2MASX J01575032+3620351,IRAS 01548+3605,MCG +06-05-067,PGC 007397,UGC 01440;;; -NGC0760;**;01:57:47.40;+33:21:19.4;Tri;;;;14.50;;;;;;;;;;;;;;;;;Components are 2MASS J01574760+3321195 and UCAC4 617-005450. -NGC0761;G;01:57:49.59;+33:22:37.7;Tri;1.48;0.51;145;14.50;;11.25;10.62;10.26;23.61;SBa;;;;;;;;2MASX J01574957+3322377,MCG +05-05-036,PGC 007395,UGC 01439;;; -NGC0762;G;01:56:57.79;-05:24:10.3;Cet;1.24;1.09;35;13.50;;10.87;10.22;9.96;23.06;Sa;;;;;;;;2MASX J01565777-0524103,IRAS 01544-0538,MCG -01-06-006,PGC 007322;;; -NGC0763;Dup;01:56:22.68;-09:03:41.1;Cet;;;;;;;;;;;;;;;0755;;;;;; -NGC0764;**;01:57:03.27;-16:03:45.0;Cet;;;;;;;;;;;;;;;;;;;;Identification as NGC 0764 is uncertain.; -NGC0765;G;01:58:48.00;+24:53:32.9;Ari;2.62;2.62;25;14.20;;10.52;9.90;9.50;24.91;SABb;;;;;;;;2MASX J01584798+2453331,MCG +04-05-025,PGC 007475,UGC 01455;;; -NGC0766;G;01:58:41.95;+08:20:47.9;Psc;1.81;1.11;27;14.40;;10.70;9.95;9.76;24.41;E;;;;;;;;2MASX J01584199+0820482,MCG +01-06-019,PGC 007468,UGC 01458;;; -NGC0767;G;01:58:50.80;-09:35:13.7;Cet;1.27;0.35;164;14.00;;12.66;11.92;11.64;23.70;SBb;;;;;;;;2MASX J01585068-0935084,2MASX J01585082-0935136,MCG -02-06-010,PGC 007483,SDSS J015850.79-093513.6,SDSS J015850.79-093513.7,SDSS J015850.80-093513.7;;; -NGC0768;G;01:58:40.93;+00:31:45.2;Cet;1.56;0.59;29;14.30;;11.71;11.07;10.61;23.29;SBbc;;;;;;;;2MASX J01584095+0031451,IRAS 01561+0017,MCG +00-06-016,PGC 007465,SDSS J015840.93+003145.1,SDSS J015840.93+003145.2,UGC 01457;;CGCG misprints name as 'NGC 7628'.; -NGC0769;G;01:59:35.90;+30:54:35.7;Tri;0.85;0.49;70;13.40;;11.34;10.66;10.40;21.28;Sc;;;;;;;;2MASX J01593591+3054356,IRAS 01567+3040,MCG +05-05-037,PGC 007537,UGC 01467;;; -NGC0770;G;01:59:13.64;+18:57:16.8;Ari;0.91;0.62;15;13.91;13.49;11.23;10.48;10.28;22.89;E;;;;;;;;2MASX J01591364+1857169,MCG +03-06-010,PGC 007517,UGC 01463;;; -NGC0771;*;02:03:26.59;+72:25:15.2;Cas;;;;3.97;3.95;3.89;3.90;3.92;;;;;;;;;;BD +71 0117,HD 012216,HIP 009598,TYC 4319-1847-1,50 Cas;;; -NGC0772;G;01:59:19.58;+19:00:27.1;Ari;4.57;2.52;131;11.09;10.31;8.17;7.44;7.20;22.32;Sb;;;;;;;;2MASX J01591958+1900271,IRAS 01565+1845,MCG +03-06-011,PGC 007525,SDSS J015919.55+190027.5,UGC 01466;;; -NGC0773;G;01:58:52.00;-11:30:52.7;Cet;1.38;0.72;178;14.00;;10.90;10.27;9.95;23.03;SABa;;;;;;;;2MASX J01585201-1130526,MCG -02-06-011,PGC 007486;;; -NGC0774;G;01:59:34.73;+14:00:29.5;Ari;1.28;1.06;164;13.97;;10.74;10.08;9.80;23.47;S0;;;;;;;;2MASX J01593471+1400299,MCG +02-06-008,PGC 007536,SDSS J015934.72+140029.4,SDSS J015934.72+140029.5,SDSS J015934.73+140029.5,UGC 01469;;; -NGC0775;G;01:58:32.67;-26:17:37.4;For;1.69;1.28;162;13.40;;11.03;10.41;10.08;23.03;SABc;;;;;;;;2MASX J01583266-2617373,ESO 477-018,ESO-LV 477-0180,IRAS 01562-2632,MCG -05-05-024,PGC 007451;;; -NGC0776;G;01:59:54.49;+23:38:39.8;Ari;1.35;1.29;135;13.40;;10.70;10.02;9.74;22.89;SABa;;;;;;;;2MASX J01595447+2338400,IRAS 01570+2323,MCG +04-05-028,PGC 007560,SDSS J015954.52+233839.3,UGC 01471;;; -NGC0777;G;02:00:14.90;+31:25:46.5;Tri;2.75;2.06;148;12.49;11.45;9.39;8.67;8.37;23.56;E;;;;;;;;2MASX J02001493+3125457,MCG +05-05-038,PGC 007584,UGC 01476;;; -NGC0778;G;02:00:19.44;+31:18:46.9;Tri;1.05;0.46;150;14.22;;11.25;10.56;10.20;22.95;S0;;;;;;;;2MASX J02001945+3118467,MCG +05-05-039,PGC 007597,UGC 01480;;; -NGC0779;G;01:59:42.28;-05:57:47.5;Cet;1.35;0.58;160;12.10;;8.95;8.27;8.07;20.75;SABb;;;;;;;;IRAS 01571-0612,MCG -01-06-016,PGC 007544;;; -NGC0780;G;02:00:35.18;+28:13:30.5;Tri;1.65;0.81;171;14.60;;11.13;10.37;10.16;23.86;Sb;;;;;;;;2MASX J02003521+2813310,MCG +05-05-041,PGC 007616,UGC 01488;;; -NGC0781;G;02:00:08.96;+12:39:22.0;Ari;1.47;0.41;12;14.00;;10.98;10.25;10.03;22.92;Sa;;;;;;;;2MASX J02000899+1239217,MCG +02-06-010,PGC 007577,SDSS J020008.94+123922.0,SDSS J020008.95+123921.9,UGC 01482;;; -NGC0782;G;01:57:40.38;-57:47:24.6;Eri;2.45;2.03;41;12.63;;10.11;9.44;9.15;23.16;SBb;;;;;;;;2MASX J01574037-5747246,ESO 114-015,ESO-LV 114-0150,IRAS 01559-5801,PGC 007379;;; -NGC0783;G;02:01:06.61;+31:52:56.9;Tri;1.38;0.75;63;12.84;;10.59;9.83;9.68;22.00;Sc;;;;;;1765;;2MASX J02010661+3152569,IRAS 01582+3138,MCG +05-05-042,PGC 007657,SDSS J020106.61+315256.7,UGC 01497;;; -NGC0784;G;02:01:16.93;+28:50:14.1;Tri;4.17;1.07;1;12.50;12.07;10.93;10.40;10.29;22.87;SBd;;;;;;;;2MASX J02011693+2850141,IRAS 01584+2836,MCG +05-05-045,PGC 007671,UGC 01501;;; -NGC0785;G;02:01:40.00;+31:49:35.4;Tri;1.60;0.90;77;13.90;;10.73;10.01;9.81;23.71;E;;;;;;1766;;2MASX J02013997+3149354,MCG +05-05-046,PGC 007694,UGC 01509;;; -NGC0786;G;02:01:24.72;+15:38:47.5;Ari;0.79;0.64;150;14.30;;11.86;11.17;10.83;22.51;Sc;;;;;;;;2MASX J02012472+1538475,IRAS 01587+1524,MCG +02-06-012,PGC 007680,UGC 01506;;; -NGC0787;G;02:00:48.62;-09:00:09.3;Cet;1.87;1.30;91;13.00;;10.38;9.72;9.47;23.38;Sb;;;;;;;;2MASX J02004858-0900090,MCG -02-06-015,PGC 007632,SDSS J020048.37-090012.8,SDSS J020048.38-090012.9,SDSS J020048.61-090009.2,SDSS J020048.61-090009.3,SDSS J020048.62-090009.3;;"One set of SDSS entries is centered 5"" SW of the nucleus."; -NGC0788;G;02:01:06.45;-06:48:55.9;Cet;1.74;1.42;108;13.71;12.76;10.02;9.38;9.07;22.94;S0-a;;;;;;;;2MASX J02010644-0648569,MCG -01-06-025,PGC 007656,SDSS J020106.46-064857.0;;; -NGC0789;G;02:02:26.01;+32:04:20.1;Tri;0.69;0.48;4;14.00;;11.54;10.88;10.56;21.65;Sb;;;;;;;;2MASX J02022599+3204199,IRAS 01595+3149,MCG +05-05-047,PGC 007760,SDSS J020226.04+320420.3,UGC 01520;;; -NGC0790;G;02:01:21.60;-05:22:15.5;Cet;1.38;1.21;142;13.50;;10.70;10.01;9.76;23.43;S0;;;;;;;;2MASX J02012157-0522157,MCG -01-06-026,PGC 007677;;; -NGC0791;G;02:01:44.22;+08:29:59.8;Psc;1.49;1.49;5;14.80;;10.89;10.12;9.92;24.46;E;;;;;;;;2MASX J02014419+0829597,MCG +01-06-031,PGC 007702,UGC 01511;;; -NGC0792;G;02:02:15.33;+15:42:43.9;Ari;1.27;0.67;130;14.60;;11.29;10.57;10.32;23.84;S0;;;;;;;;2MASX J02021532+1542439,IRAS 01595+1528,MCG +02-06-015,PGC 007744,UGC 01517;;The 2MASS position is 17.5 arcsec northwest of the optical nucleus.; -NGC0793;**;02:02:54.54;+31:58:50.6;Tri;;;;;;;;;;;;;;;;;;;;; -NGC0794;G;02:02:29.33;+18:22:22.8;Ari;1.22;0.96;53;14.00;;10.56;9.84;9.52;23.00;E-S0;;;;;;0191;;2MASX J02022931+1822226,MCG +03-06-024,PGC 007763,UGC 01528;;; -NGC0795;G;01:59:49.36;-55:49:27.0;Eri;1.28;0.77;138;14.22;;10.97;10.21;10.01;23.61;E;;;;;;;;2MASX J01594938-5549269,ESO 153-008,ESO-LV 153-0080,PGC 007552;;; -NGC0796;OCl;01:56:43.75;-74:13:12.0;Hyi;1.20;1.10;110;;;;;;;;;;;;;;;ESO 030-006;;In the Small Magellanic Cloud.; -NGC0797;GPair;02:03:26.30;+38:06:52.0;And;1.80;;;;;;;;;;;;;;;;;MCG +06-05-078;;;Diameter of the group inferred by the author. -NGC0797 NED01;G;02:03:24.55;+38:06:44.0;And;0.48;0.33;135;16.26;;12.73;12.18;12.07;23.64;;;;;;;;;2MASX J02032452+3806442,MCG +06-05-078 NED01,PGC 212899,UGC 01541 NOTES01;;;B-Mag taken from LEDA -NGC0797 NED02;G;02:03:27.94;+38:07:01.0;And;1.21;1.06;75;13.22;;10.61;9.86;9.61;22.67;SABa;;;;;;;;2MASX J02032791+3807012,MCG +06-05-078 NED02,PGC 007832,UGC 01541;;;B-Mag taken from LEDA -NGC0798;G;02:03:19.60;+32:04:39.1;Tri;1.19;0.44;136;14.70;;11.34;10.61;10.40;23.81;E;;;;;;;;2MASX J02031958+3204391,MCG +05-05-048,PGC 007823,UGC 01539;;; -NGC0799;G;02:02:12.34;-00:06:02.3;Cet;1.71;1.44;35;14.20;;11.08;10.43;10.15;24.01;SBa;;;;;;;;2MASX J02021229-0006025,MCG +00-06-023,PGC 007741,SDSS J020212.33-000602.2,SDSS J020212.34-000602.3,UGC 01527;;HOLM 054C is a star.; -NGC0800;G;02:02:11.85;-00:07:49.6;Cet;1.08;0.79;11;14.70;;12.07;11.42;11.04;23.14;Sc;;;;;;;;2MASX J02021183-0007495,MCG +00-06-024,PGC 007740,SDSS J020211.84-000749.5,SDSS J020211.85-000749.5,SDSS J020211.85-000749.6,UGC 01526;;; -NGC0801;G;02:03:44.83;+38:15:31.4;And;2.76;0.59;151;14.23;13.47;10.59;9.87;9.51;23.65;Sc;;;;;;;;2MASX J02034484+3815312,IRAS 02007+3801,MCG +06-05-079,PGC 007847,UGC 01550;;; -NGC0802;G;01:59:06.00;-67:52:12.5;Hyi;0.90;0.59;153;14.17;;12.04;11.46;11.35;22.62;S0-a;;;;;;;;2MASX J01590600-6752123,ESO 052-013,ESO-LV 52-0130,PGC 007505;;; -NGC0803;G;02:03:44.70;+16:01:51.5;Ari;2.67;0.92;10;13.50;;10.71;10.01;9.83;23.04;Sc;;;;;;;;2MASX J02034470+1601514,IRAS 02010+1547,MCG +03-06-028,PGC 007849,UGC 01554;;; -NGC0804;G;02:04:02.11;+30:49:58.3;Tri;1.27;0.33;8;14.70;;11.35;10.68;10.41;23.79;S0;;;;;;1773;;2MASX J02040210+3049581,MCG +05-05-049,PGC 007873,UGC 01557;;; -NGC0805;G;02:04:29.57;+28:48:44.4;Tri;1.05;0.68;110;14.70;;11.39;10.68;10.45;23.68;S0;;;;;;;;2MASX J02042958+2848444,MCG +05-05-050,PGC 007899,UGC 01566;;; -NGC0806;G;02:03:31.15;-09:56:00.1;Cet;1.35;0.38;59;14.00;;12.05;11.43;11.39;23.09;SBc;;;;;;;;2MASX J02033115-0956000,IRAS 02010-1010,MCG -02-06-021,PGC 007835,SDSS J020331.15-095600.1;;; -NGC0807;G;02:04:55.66;+28:59:14.8;Tri;1.71;1.08;142;13.80;;10.36;9.65;9.36;23.78;E;;;;;;;;2MASX J02045567+2859144,IRAS 02020+2844,MCG +05-06-001,PGC 007934,UGC 01571;;; -NGC0808;G;02:03:56.60;-23:18:41.8;Cet;1.31;0.62;12;14.12;;11.18;10.46;10.13;22.91;Sbc;;;;;;;;2MASX J02035658-2318416,ESO 478-001,ESO-LV 478-0010,IRAS 02015-2333,MCG -04-06-003,PGC 007865;;; -NGC0809;G;02:04:18.97;-08:44:07.1;Cet;1.11;0.86;173;14.00;;11.41;10.72;10.60;23.52;S0;;;;;;;;2MASX J02041900-0844072,MCG -02-06-023,PGC 007889,SDSS J020418.96-084407.0,SDSS J020418.97-084407.0,SDSS J020418.97-084407.1;;; -NGC0810;GPair;02:05:28.90;+13:15:05.0;Ari;1.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC0810 NED01;G;02:05:28.51;+13:15:04.4;Ari;1.40;0.88;31;15.40;;10.64;9.87;9.57;24.42;E;;;;;;;;2MASX J02052852+1315054,MCG +02-06-026,PGC 007965,SDSS J020528.48+131503.8,UGC 01583;;; -NGC0810 NED02;G;02:05:29.29;+13:15:03.5;Ari;;;;;;;;;;;;;;;;;;MCG +02-06-026 NOTES01,SDSS J020529.28+131503.5,UGC 01583 NOTES01;;; -NGC0811;G;02:04:34.84;-10:06:30.5;Cet;0.99;0.46;48;15.30;;13.80;13.45;13.20;23.58;Scd;;;;;;;;2MASX J02043483-1006302,MCG -02-06-024,PGC 007905,SDSS J020434.82-100630.6,SDSS J020434.84-100630.5;;Identification as NGC 0811 is uncertain.; -NGC0812;G;02:06:51.50;+44:34:22.5;And;2.74;0.97;161;12.80;;10.67;9.98;9.67;22.73;Sc;;;;;;;;2MASX J02065149+4434224,IRAS 02037+4419,MCG +07-05-014,PGC 008066,UGC 01598;;; -NGC0813;G;02:01:36.07;-68:26:21.1;Hyi;1.42;0.95;98;13.84;;10.81;10.20;9.95;23.26;S0-a;;;;;;;;2MASX J02013611-6826209,ESO 052-016,ESO-LV 52-0160,PGC 007692;;; -NGC0814;G;02:10:37.63;-15:46:24.9;Cet;1.32;0.59;7;14.00;;12.07;11.35;11.18;24.01;S0;;;;;;;;2MASX J02103760-1546250,IRAS 02082-1600,MCG -03-06-010,PGC 008319;;; -NGC0815;GPair;02:10:39.40;-15:48:46.0;Cet;0.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC0815 NED01;G;02:10:39.20;-15:48:44.7;Cet;;;;;;;;;;;;;;;;;;;;Diameter includes companions or long extensions.; -NGC0815 NED02;G;02:10:39.51;-15:48:48.2;Cet;0.45;0.35;70;16.23;;13.32;12.86;12.59;23.23;;;;;;;;;2MASX J02103954-1548480,PGC 906183;;Diameter includes companions or long extensions.; -NGC0816;G;02:08:08.85;+29:15:21.0;Tri;0.66;0.52;85;15.30;;12.76;12.10;11.75;23.09;;;;;;;;;2MASX J02080890+2915217,IRAS 02052+2901,PGC 008152;;; -NGC0817;G;02:07:33.71;+17:12:09.5;Ari;0.89;0.40;29;13.90;;12.08;11.42;11.19;22.63;S0-a;;;;;;;;2MASX J02073371+1712093,IRAS 02048+1657,MCG +03-06-033,PGC 008109,UGC 01611;;; -NGC0818;G;02:08:44.52;+38:46:37.9;And;2.20;0.76;112;12.70;;10.37;9.83;9.42;22.80;Sbc;;;;;;;;2MASX J02084451+3846381,IRAS 02057+3832,MCG +06-05-086,PGC 008185,UGC 01633;;; -NGC0819;G;02:08:34.37;+29:14:02.5;Tri;0.60;0.45;5;14.10;;11.69;11.04;10.71;21.49;Sbc;;;;;;;;2MASX J02083436+2914025,IRAS 02056+2859,PGC 008174,SDSS J020834.37+291402.3,UGC 01632;;; -NGC0820;G;02:08:24.98;+14:20:58.4;Ari;1.34;0.79;67;13.70;;10.78;10.07;9.75;22.78;Sb;;;;;;;;2MASX J02082498+1420589,IRAS 02057+1406,MCG +02-06-036,PGC 008165,SDSS J020824.97+142058.4,SDSS J020824.98+142058.4,UGC 01629;;; -NGC0821;G;02:08:21.14;+10:59:41.7;Ari;2.45;2.10;26;12.21;11.31;8.80;8.14;7.90;22.58;E;;;;;;;;2MASX J02082114+1059415,MCG +02-06-034,PGC 008160,UGC 01631;;; -NGC0822;G;02:06:39.14;-41:09:24.3;Phe;1.40;0.87;77;14.25;;11.13;10.46;10.22;23.70;E;;;;;;;;2MASX J02063913-4109243,ESO 298-009,ESO-LV 298-0090,MCG -07-05-008,PGC 008055;;; -NGC0823;G;02:07:20.05;-25:26:30.8;For;1.54;1.10;107;13.61;;10.80;10.09;9.94;23.38;E-S0;;;;;;1782;;2MASX J02072004-2526305,ESO 478-002,ESO-LV 478-0020,IRAS 02050-2540,MCG -04-06-005,PGC 008093;;There is a star superposed just east of the nucleus.; -NGC0824;G;02:06:53.26;-36:27:11.4;For;1.49;0.38;28;14.14;;11.49;10.76;10.40;22.71;Sbc;;;;;;;;2MASX J02065327-3627113,ESO 354-037,ESO-LV 354-0370,MCG -06-05-028,PGC 008068;;; -NGC0825;G;02:08:32.36;+06:19:25.4;Cet;2.06;0.66;52;14.50;;10.82;10.07;9.82;24.20;Sa;;;;;;;;2MASX J02083236+0619255,MCG +01-06-045,PGC 008173,UGC 01636;;; -NGC0826;G;02:09:25.05;+30:44:22.9;Tri;1.00;0.78;16;15.40;;11.48;10.86;10.50;23.95;E;;;;;;;;2MASX J02092504+3044229,PGC 008230;;; -NGC0827;G;02:08:56.26;+07:58:17.3;Cet;2.20;1.14;84;14.00;;10.83;10.03;9.73;23.89;Sb;;;;;;;;2MASX J02085625+0758169,IRAS 02062+0744,MCG +01-06-046,PGC 008196,UGC 01640;;; -NGC0828;G;02:10:09.57;+39:11:25.3;And;2.85;2.13;115;13.00;;10.09;9.34;8.98;24.01;Sa;;;;;;;;2MASX J02100957+3911253,IRAS 02071+3857,MCG +06-05-092,PGC 008283,UGC 01655;;; -NGC0829;G;02:08:42.38;-07:47:25.9;Cet;1.18;0.77;104;14.20;;11.66;11.29;10.96;22.96;SBc;;;;;;;;2MASX J02084219-0747271,IRAS 02062-0801,MCG -01-06-049,PGC 008182,SDSS J020842.37-074725.9,SDSS J020842.37-074726.3,SDSS J020842.37-074726.4;;Multiple SDSS entries describe this object.; -NGC0830;G;02:08:58.68;-07:46:00.5;Cet;1.40;0.82;76;15.00;;10.76;10.11;9.87;23.61;E-S0;;;;;;;;2MASX J02085867-0746010,MCG -01-06-050,PGC 008201,SDSS J020858.68-074600.5;;; -NGC0831;G;02:09:34.60;+06:05:46.8;Cet;0.44;0.34;110;15.20;;12.54;11.81;11.55;21.96;Sc;;;;;;;;2MASX J02093460+0605467,PGC 008241;;; -NGC0832;**;02:11:00.83;+35:32:28.5;Tri;;;;;;;;;;;;;;;;;;;;;Components are UCAC4 628-006926 and UCAC4 628-006927. -NGC0833;G;02:09:20.84;-10:07:59.1;Cet;1.63;0.67;85;14.02;13.00;10.43;9.77;9.47;23.14;SABa;;;;;;;;2MASX J02092086-1007591,MCG -02-06-030,PGC 008225,SDSS J020920.84-100759.1,TYC 5281-1672-1;;; -NGC0834;G;02:11:01.29;+37:39:58.6;And;1.05;0.50;22;13.20;;10.89;10.12;9.75;22.17;Sb;;;;;;;;2MASX J02110127+3739590,IRAS 02080+3725,MCG +06-05-099,PGC 008352,UGC 01672;;; -NGC0835;G;02:09:24.60;-10:08:09.3;Cet;0.87;0.73;5;13.29;12.45;9.95;9.28;8.95;21.50;Sab;;;;;0838W;;;2MASX J02092458-1008091,IRAS 02069-1022,MCG -02-06-031,PGC 008228,SDSS J020924.60-100809.3;;; -NGC0836;G;02:10:24.88;-22:03:17.5;Cet;1.11;0.84;106;14.34;;11.46;10.89;10.59;23.40;S0-a;;;;;;;;2MASX J02102490-2203175,ESO 544-017,ESO-LV 544-0170,MCG -04-06-012,PGC 008304;;; -NGC0837;G;02:10:16.25;-22:25:53.4;Cet;0.99;0.39;13;14.84;;12.07;11.35;11.16;22.94;Sb;;;;;;;;2MASX J02101624-2225535,ESO 478-010,ESO-LV 478-0100,MCG -04-06-011,PGC 008297;;; -NGC0838;G;02:09:38.53;-10:08:48.1;Cet;1.34;0.97;77;13.72;;10.82;10.11;9.74;22.88;S0-a;;;;;0838E;;;2MASX J02093853-1008466,MCG -02-06-033,PGC 008250,SDSS J020938.55-100847.5,SDSS J020938.57-100846.3,SDSS J020938.58-100846.2,SDSS J020938.59-100846.1;;; -NGC0839;G;02:09:42.93;-10:11:02.7;Cet;1.49;0.64;86;13.98;11.42;10.96;10.23;9.83;23.51;S0-a;;;;;0838S;;;2MASX J02094273-1011016,IRAS 02072-1025,MCG -02-06-034,PGC 008254,TYC 5281-1260-1;;; -NGC0840;G;02:10:16.21;+07:50:43.1;Cet;1.74;0.78;77;14.70;;11.35;10.52;10.32;23.68;Sb;;;;;;;;2MASX J02101623+0750432,MCG +01-06-049,PGC 008293,UGC 01664;;; -NGC0841;G;02:11:17.36;+37:29:49.8;And;1.74;0.87;134;12.80;;10.30;9.59;9.38;22.93;Sab;;;;;;;;2MASX J02111733+3729499,IRAS 02082+3715,MCG +06-05-101,PGC 008372,UGC 01676;;; -NGC0842;G;02:09:50.79;-07:45:44.9;Cet;1.74;0.85;157;13.61;12.66;10.47;9.80;9.54;23.54;S0;;;;;;;;2MASX J02095079-0745446,MCG -01-06-055,PGC 008258,SDSS J020950.78-074544.9;;; -NGC0843;Other;02:11:08.11;+32:05:50.7;Tri;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC0844;G;02:10:14.25;+06:02:59.3;Cet;0.49;0.38;45;15.00;;12.90;12.19;11.90;;;;;;;;;;2MASX J02101423+0602592,PGC 008291;;;Diameters and position angle taken from Simbad. -NGC0845;G;02:12:19.79;+37:28:38.4;And;1.63;0.33;148;14.50;;11.03;10.24;9.82;23.10;Sb;;;;;;;;2MASX J02121981+3728384,IRAS 02093+3714,MCG +06-05-104,PGC 008438,UGC 01695;;; -NGC0846;G;02:12:12.32;+44:34:06.2;And;1.92;1.68;129;13.20;;10.08;9.41;9.09;23.16;SBab;;;;;0847;;;2MASX J02121230+4434060,IRAS 02090+4420,MCG +07-05-024,PGC 008430,UGC 01688;;; -NGC0847;Dup;02:12:12.32;+44:34:06.2;And;;;;;;;;;;;;;;;0846;;;;;; -NGC0848;G;02:10:17.64;-10:19:17.2;Cet;1.36;1.05;147;13.35;;11.39;10.77;10.46;22.90;SBab;;;;;;;;2MASX J02101756-1019157,IRAS 02078-1033,MCG -02-06-036,PGC 008299;;; -NGC0849;G;02:10:11.19;-22:19:22.8;Cet;0.59;0.44;104;15.32;;12.20;11.54;11.35;23.03;S0;;;;;;;;2MASX J02101121-2219224,ESO 478-009,ESO-LV 478-0090,PGC 008286;;; -NGC0850;G;02:11:13.61;-01:29:08.1;Cet;1.22;1.00;92;14.10;;10.79;10.19;9.82;23.23;S0-a;;;;;;;;2MASX J02111366-0129080,MCG +00-06-049,PGC 008369,TYC 4690-268-1,UGC 01679;;; -NGC0851;G;02:11:12.09;+03:46:46.9;Cet;1.14;0.66;135;14.70;;11.87;11.21;11.04;23.62;S0-a;;;;;;;;2MASX J02111207+0346469,IRAS 02086+0332,MCG +01-06-054,PGC 008368,UGC 01680;;; -NGC0852;G;02:08:55.46;-56:44:13.4;Eri;1.36;1.00;90;14.18;;11.74;11.03;10.88;23.28;SBbc;;;;;;;;2MASX J02085544-5644132,ESO 153-026,ESO-LV 153-0260,PGC 008195;;; -NGC0853;G;02:11:41.19;-09:18:21.6;Cet;1.80;1.17;50;13.50;;11.29;10.64;10.45;25.50;Sm;;;;;;;;2MASX J02114148-0918163,IRAS 02092-0932,MCG -02-06-038,PGC 008397,SDSS J021141.18-091821.4,SDSS J021141.18-091821.5;;Multiple SDSS entries describe this object.; -NGC0854;G;02:11:30.75;-35:50:06.4;For;2.00;0.72;2;13.85;;11.09;10.39;10.19;23.18;SBc;;;;;;;;2MASX J02113075-3550064,ESO 354-047,ESO-LV 354-0470,IRAS 02093-3604,MCG -06-05-038,PGC 008388;;; -NGC0855;G;02:14:03.49;+27:52:38.4;Tri;2.94;1.08;67;13.56;12.75;10.72;10.07;9.83;24.41;E;;;;;;;;2MASX J02140361+2752378,IRAS 02111+2738,MCG +05-06-016,PGC 008557,UGC 01718;;; -NGC0856;G;02:13:38.36;-00:43:02.2;Cet;1.19;0.94;17;17.25;16.54;11.27;10.65;10.33;23.21;Sa;;;;;0859;;;2MASX J02133833-0043022,MCG +00-06-054,PGC 008526,SDSS J021338.35-004302.2,SDSS J021338.36-004302.2,SDSS J021338.36-004302.3,UGC 01713;;; -NGC0857;G;02:12:36.97;-31:56:40.6;For;1.58;1.34;89;13.45;;10.39;9.78;9.51;23.23;S0;;;;;;;;2MASX J02123698-3156404,ESO 415-006,ESO-LV 415-0060,MCG -05-06-008,PGC 008455;;; -NGC0858;G;02:12:30.17;-22:28:17.5;Cet;1.26;1.01;140;14.19;;11.92;11.13;10.88;23.36;Sc;;;;;;;;2MASX J02123015-2228172,ESO 478-013,ESO-LV 478-0130,IRAS 02102-2242,MCG -04-06-016,PGC 008451;;; -NGC0859;Dup;02:13:38.36;-00:43:02.2;Cet;;;;;;;;;;;;;;;0856;;;;;; -NGC0860;G;02:15:00.15;+30:46:43.7;Tri;0.63;0.52;109;15.10;;11.77;11.12;10.70;23.04;E;;;;;;;;2MASX J02150016+3046434,PGC 008606;;; -NGC0861;G;02:15:51.14;+35:54:48.9;Tri;1.48;0.42;36;14.80;;11.50;10.71;10.47;23.48;Sb;;;;;;;;2MASX J02155114+3554488,IRAS 02128+3540,MCG +06-06-003,PGC 008652,UGC 01737;;; -NGC0862;G;02:13:03.00;-42:02:00.7;Phe;1.04;0.97;70;13.86;;10.77;10.12;9.80;22.80;E;;;;;;;;2MASX J02130301-4202009,ESO 298-020,ESO-LV 298-0200,MCG -07-05-012,PGC 008487;;; -NGC0863;G;02:14:33.56;-00:46:00.1;Cet;1.27;1.15;35;14.48;13.81;10.76;10.04;9.54;23.14;Sa;;;;;0866,0885;;;2MASX J02143357-0046002,IRAS 02120-0059,MCG +00-06-056,PGC 008586,SDSS J021433.55-004600.2,SDSS J021433.56-004600.2,UGC 01727;;; -NGC0864;G;02:15:27.64;+06:00:09.4;Cet;3.72;2.57;21;12.00;;9.35;8.68;8.53;22.91;SABc;;;;;;;;2MASX J02152764+0600094,IRAS 02128+0546,MCG +01-06-061,PGC 008631,UGC 01736;;; -NGC0865;G;02:16:15.11;+28:35:59.0;Tri;1.62;0.27;159;14.00;;11.23;10.58;10.25;22.41;Sbc;;;;;;;;2MASX J02161510+2835590,IRAS 02133+2822,MCG +05-06-020,PGC 008678,UGC 01747;;; -NGC0866;Dup;02:14:33.56;-00:46:00.1;Cet;;;;;;;;;;;;;;;0863;;;;;; -NGC0867;G;02:17:04.78;+01:14:39.1;Cet;1.24;1.11;85;14.20;;10.80;10.08;9.79;23.30;S0-a;;;;;0875;;;2MASX J02170480+0114390,MCG +00-06-060,PGC 008718,SDSS J021704.77+011439.1,SDSS J021704.78+011439.1,UGC 01760;;; -NGC0868;G;02:15:58.48;-00:42:49.1;Cet;0.79;0.54;111;15.60;;12.08;11.41;11.11;23.69;E-S0;;;;;;;;2MASX J02155850-0042486,PGC 008659,SDSS J021558.47-004249.0,SDSS J021558.48-004248.9,SDSS J021558.48-004249.0,SDSS J021558.48-004249.1,UGC 01748;;; -NGC0869;OCl;02:18:58.56;+57:07:02.1;Per;14.40;;;4.30;3.70;;;;;;;;;;;;;MWSC 0175;h Persei Cluster;;Caldwell 14 refers to both NGC869 and NGC884 -NGC0870;G;02:17:09.22;+14:31:23.2;Ari;0.37;0.34;105;16.00;;13.12;12.48;11.94;22.98;;;;;;;;;2MASX J02170921+1431231,MCG +02-06-052,PGC 008721;;; -NGC0871;G;02:17:10.73;+14:32:52.2;Ari;1.01;0.33;4;14.20;13.61;11.23;10.63;10.27;22.02;SBc;;;;;;;;2MASX J02171073+1432521,IRAS 02144+1419,MCG +02-06-053,PGC 008722,UGC 01759;;; -NGC0872;G;02:15:25.23;-17:46:51.8;Cet;1.77;0.55;175;14.55;;11.69;10.88;10.79;23.51;SBc;;;;;;;;2MASX J02152523-1746517,ESO 544-032,ESO-LV 544-0320,MCG -03-06-019,PGC 008629;;; -NGC0873;G;02:16:32.36;-11:20:54.8;Cet;1.48;1.07;146;13.10;12.71;10.53;9.89;9.61;22.49;Sc;;;;;;;;2MASX J02163235-1120549,IRAS 02140-1134,MCG -02-06-048,PGC 008692;;; -NGC0874;G;02:16:01.15;-23:18:06.2;Cet;1.01;0.48;175;15.12;;12.68;11.91;11.61;23.42;Sab;;;;;;;;2MASX J02160113-2318061,ESO 478-018,ESO-LV 478-0180,MCG -04-06-019,PGC 008663;;; -NGC0875;Dup;02:17:04.78;+01:14:39.1;Cet;;;;;;;;;;;;;;;0867;;;;;; -NGC0876;G;02:17:53.31;+14:31:16.6;Ari;1.32;0.38;26;16.50;;11.90;11.01;10.54;24.32;Sc;;;;;0877S;;;2MASX J02175332+1431179,MCG +02-06-057,PGC 008770,UGC 01766;;; -NGC0877;G;02:17:59.64;+14:32:38.6;Ari;1.92;1.47;138;12.50;;9.66;8.90;8.66;22.47;SABc;;;;;0877N;;;2MASX J02175963+1432387,IRAS 02152+1418,MCG +02-06-058,PGC 008775,UGC 01768;;; -NGC0878;G;02:17:54.26;-23:23:02.6;Cet;0.87;0.53;110;14.65;;12.06;11.41;11.05;22.94;Sa;;;;;;;;2MASX J02175426-2323025,ESO 478-022,ESO-LV 478-0220,IRAS 02156-2336,MCG -04-06-021,PGC 008771;;; -NGC0879;G;02:16:51.20;-08:57:50.5;Cet;0.77;0.64;16;15.29;15.50;13.19;12.47;12.61;23.38;I;;;;;;;;2MASX J02165120-0857504,PGC 008705,SDSS J021651.20-085750.4,SDSS J021651.20-085750.5;;; -NGC0880;G;02:18:27.18;-04:12:20.7;Cet;0.58;0.38;26;15.61;15.11;13.03;12.28;12.22;22.92;S?;;;;;;;;2MASX J02182722-0412192,PGC 008805;;; -NGC0881;G;02:18:45.27;-06:38:20.7;Cet;2.28;1.26;133;13.23;12.44;10.30;9.66;9.37;23.27;SABc;;;;;;;;2MASX J02184528-0638208,MCG -01-06-089,PGC 008822;;; -NGC0882;G;02:19:39.91;+15:48:51.3;Ari;1.13;0.48;83;14.90;;11.48;10.69;10.48;23.92;S0;;;;;;;;2MASX J02193990+1548514,MCG +03-06-052,PGC 008874,UGC 01789;;; -NGC0883;G;02:19:05.18;-06:47:27.3;Cet;1.57;1.40;77;13.00;;9.85;9.16;8.90;23.33;E-S0;;;;;;;;2MASX J02190516-0647271,MCG -01-06-090,PGC 008841;;; -NGC0884;OCl;02:22:32.10;+57:08:38.8;Per;10.50;;;4.40;3.80;;;;;;;;;;;;;MWSC 0184;chi Persei Cluster;;Caldwell 14 refers to both NGC869 and NGC884 -NGC0885;Dup;02:14:33.56;-00:46:00.1;Cet;;;;;;;;;;;;;;;0863;;;;;; -NGC0886;OCl;02:23:11.77;+63:46:43.5;Cas;4.80;;;;;;;;;;;;;;;;;MWSC 0186;;; -NGC0887;G;02:19:32.61;-16:04:11.0;Cet;1.66;1.34;21;13.10;;11.28;10.59;10.34;23.04;SABc;;;;;;;;2MASX J02193261-1604110,IRAS 02171-1617,MCG -03-07-001,PGC 008868;;; -NGC0888;G;02:17:27.10;-59:51:39.8;Hor;1.16;0.90;85;14.47;;11.03;10.27;9.98;23.67;E;;;;;;;;2MASX J02172714-5951397,ESO 115-002,ESO-LV 115-0020,PGC 008743;;; -NGC0889;G;02:19:06.93;-41:44:57.6;Phe;1.24;0.89;98;14.36;;11.15;10.44;10.26;23.89;E;;;;;;;;2MASX J02190690-4144574,ESO 298-027,ESO-LV 298-0270,MCG -07-05-016,PGC 008843;;; -NGC0890;G;02:22:01.01;+33:15:57.8;Tri;1.10;0.67;45;12.50;11.62;9.20;8.48;8.25;21.77;E-S0;;;;;;;;2MASX J02220100+3315579,MCG +05-06-030,PGC 008997,UGC 01823;;; -NGC0891;G;02:22:33.41;+42:20:56.9;And;13.03;3.03;22;10.81;9.93;7.26;6.36;5.94;24.17;Sb;;;;;;;;2MASX J02223290+4220539,C 023,IRAS 02193+4207,MCG +07-05-046,PGC 009031,UGC 01831;;; -NGC0892;G;02:20:52.02;-23:06:49.1;Cet;0.72;0.40;5;15.71;;12.92;12.16;11.86;23.30;Sab;;;;;;;;2MASX J02205203-2306490,ESO 478-026,ESO-LV 478-0260,PGC 008926;;; -NGC0893;G;02:19:58.58;-41:24:11.3;Phe;1.34;0.83;123;13.57;;10.83;10.27;9.94;22.54;Sc;;;;;;;;2MASX J02195858-4124112,ESO 298-029,ESO-LV 298-0290,IRAS 02179-4137,MCG -07-05-017,PGC 008888;;; -NGC0894;Other;02:21:34.57;-05:30:36.8;Cet;;;;;;;;;;;;;;;;;;;;Part of galaxy NGC0895; -NGC0895;G;02:21:36.47;-05:31:17.0;Cet;3.32;2.22;109;12.26;11.73;10.15;9.74;9.41;23.30;Sc;;;;;;;;2MASX J02213646-0531170,IRAS 02191-0544,MCG -01-07-002,PGC 008974,SDSS J022136.47-053116.4;;NGC 0894 is the northwestern arm of NGC 0895.; -NGC0896;Neb;02:25:27.82;+62:01:09.7;Cas;10.00;10.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC0897;G;02:21:06.37;-33:43:14.4;For;2.01;1.43;25;13.07;;9.71;9.05;8.82;22.90;Sa;;;;;;;;2MASX J02210637-3343144,ESO 355-007,ESO-LV 355-0070,MCG -06-06-003,PGC 008944;;The APMUKS image includes a superposed star.; -NGC0898;G;02:23:20.37;+41:57:05.1;And;1.75;0.47;170;13.84;;10.36;9.57;9.29;22.99;Sab;;;;;;;;2MASX J02232039+4157052,MCG +07-06-004,PGC 009073,UGC 01842;;; -NGC0899;G;02:21:53.14;-20:49:23.7;Cet;1.63;1.21;121;13.08;;11.18;10.55;10.46;22.63;IB;;;;;;;;2MASX J02215313-2049236,ESO 545-007,ESO-LV 545-0070,IRAS 02195-2103,MCG -04-06-030,PGC 008990,UGCA 026;;; -NGC0900;G;02:23:32.18;+26:30:41.5;Ari;0.92;0.62;36;15.00;;11.62;10.92;10.62;23.56;S0;;;;;;;;2MASX J02233215+2630412,MCG +04-06-020,PGC 009079,UGC 01843;;; -NGC0901;G;02:23:34.09;+26:33:25.4;Ari;0.78;0.55;36;;;11.94;11.27;10.91;23.97;E;;;;;;;;2MASX J02233408+2633252,PGC 212967;;; -NGC0902;G;02:22:21.76;-16:40:44.6;Cet;0.74;0.55;26;14.00;;13.09;12.28;11.66;22.66;SBbc;;;;;;;;2MASX J02222174-1640447,MCG -03-07-005,PGC 009021;;; -NGC0903;G;02:24:00.88;+27:21:22.6;Ari;0.74;0.40;168;;;12.70;12.28;11.88;24.50;;;;;;;;;2MASX J02240089+2721229,PGC 009097,UGC 01852 NOTES01;;; -NGC0904;G;02:24:05.57;+27:20:32.6;Ari;1.45;0.85;129;15.00;;11.10;10.36;10.18;24.54;E;;;;;;;;2MASX J02240554+2720329,MCG +04-06-024,PGC 009112,UGC 01852;;; -NGC0905;G;02:22:43.57;-08:43:08.5;Cet;0.61;0.30;114;15.92;;12.60;12.04;11.54;23.36;S0-a;;;;;;;;2MASX J02224355-0843080,PGC 009038,SDSS J022243.57-084308.4,SDSS J022243.58-084308.3,SDSS J022243.58-084308.5;;; -NGC0906;G;02:25:16.26;+42:05:23.6;And;1.46;1.01;16;13.76;12.88;10.91;10.21;9.92;23.12;Sab;;;;;;;;2MASX J02251625+4205234,MCG +07-06-012,PGC 009188,UGC 01868;;; -NGC0907;G;02:23:01.91;-20:42:43.4;Cet;2.21;0.75;87;13.30;;10.84;10.35;9.97;22.69;SBd;;;;;;;;ESO 545-010,ESO-LV 545-0100,IRAS 02207-2056,MCG -04-06-034,PGC 009054,UGCA 028;;Confused HIPASS source; -NGC0908;G;02:23:04.57;-21:14:01.9;Cet;6.14;2.82;77;11.03;10.18;8.16;7.49;7.23;22.86;SABc;;;;;;;;2MASX J02230456-2114018,ESO 545-011,ESO-LV 545-0110,IRAS 02207-2127,MCG -04-06-035,PGC 009057,UGCA 029;;; -NGC0909;G;02:25:22.79;+42:02:08.4;And;1.02;1.02;40;14.50;;11.12;10.44;10.20;23.42;E;;;;;;;;2MASX J02252279+4202074,MCG +07-06-013,PGC 009197,UGC 01872;;; -NGC0910;G;02:25:26.78;+41:49:27.4;And;1.79;1.51;17;14.50;;10.17;9.44;9.20;23.40;E;;;;;;;;2MASX J02252677+4149275,MCG +07-06-014,PGC 009201,UGC 01875;;; -NGC0911;G;02:25:42.40;+41:57:22.6;And;1.69;0.84;115;14.00;;10.84;10.10;9.84;23.91;E;;;;;;;;2MASX J02254239+4157225,MCG +07-06-016,PGC 009221,UGC 01878;;; -NGC0912;G;02:25:42.73;+41:46:38.8;And;0.79;0.60;147;15.00;;11.66;10.94;10.74;23.20;S0-a;;;;;;;;2MASX J02254278+4146385,MCG +07-06-015,PGC 009222;;; -NGC0913;G;02:25:44.64;+41:47:57.9;And;0.61;0.33;20;15.00;;12.37;11.61;11.51;;;;;;;;;;2MASX J02254463+4147580,PGC 009230;;;Diameters and position angle taken from Simbad. -NGC0914;G;02:26:05.18;+42:08:38.7;And;1.56;1.04;116;13.90;;11.23;10.43;10.20;23.18;Sc;;;;;;;;2MASX J02260519+4208386,IRAS 02229+4155,MCG +07-06-017,PGC 009253,UGC 01887;;; -NGC0915;G;02:25:45.58;+27:13:15.6;Ari;0.76;0.76;160;15.00;;11.33;10.61;10.26;23.48;E;;;;;;;;2MASX J02254561+2713160,MCG +04-06-033,PGC 009232;;; -NGC0916;G;02:25:47.64;+27:14:33.1;Ari;1.18;0.53;9;14.90;;11.43;10.73;10.45;24.16;S0-a;;;;;;;;2MASX J02254763+2714330,MCG +04-06-034,PGC 009245;;; -NGC0917;G;02:26:07.69;+31:54:44.4;Tri;1.77;0.99;57;14.50;;10.56;9.92;9.57;23.86;Sab;;;;;;;;2MASX J02260770+3154444,MCG +05-06-039,PGC 009258,SDSS J022607.67+315444.2,UGC 01890;;; -NGC0918;G;02:25:50.84;+18:29:46.5;Ari;3.09;1.73;157;16.00;15.01;10.05;9.32;9.06;23.80;Sc;;;;;;;;2MASX J02255022+1829561,IRAS 02230+1816,MCG +03-07-011,PGC 009236,UGC 01888;;The 2MASS position refers to superposed star.; -NGC0919;G;02:26:16.67;+27:12:43.6;Ari;1.31;0.32;138;15.50;;11.56;10.85;10.50;23.89;Sab;;;;;;;;2MASX J02261667+2712433,MCG +04-06-039,PGC 009267,UGC 01894;;; -NGC0920;G;02:27:51.78;+45:56:49.4;And;1.17;0.85;3;15.60;;12.27;11.22;11.08;24.25;SBb;;;;;;;;2MASX J02275179+4556495,MCG +08-05-011,PGC 009377,UGC 01920;;; -NGC0921;G;02:26:33.42;-15:50:51.1;Cet;1.25;0.53;82;14.00;;12.27;11.80;11.25;23.53;SBc;;;;;;;;2MASX J02263343-1550511,MCG -03-07-015,PGC 009287;;; -NGC0922;G;02:25:04.42;-24:47:17.4;For;2.10;1.77;14;12.54;12.21;10.82;10.22;10.02;22.60;SBc;;;;;;;;2MASX J02250439-2447174,ESO 478-028,ESO-LV 478-0280,IRAS 02228-2500,MCG -04-06-037,PGC 009172,UGCA 030;;; -NGC0923;G;02:27:34.64;+41:58:39.4;And;0.78;0.55;120;14.40;;11.52;10.85;10.47;22.32;SABb;;;;;;;;2MASX J02273463+4158392,IRAS 02244+4145,MCG +07-06-022,PGC 009355,UGC 01915;;; -NGC0924;G;02:26:46.83;+20:29:51.0;Ari;2.03;1.18;52;13.80;;10.51;9.78;9.50;23.99;S0;;;;;;;;2MASX J02264683+2029507,MCG +03-07-012,PGC 009302,UGC 01912;;; -NGC0925;G;02:27:16.88;+33:34:45.0;Tri;10.72;5.75;107;10.69;10.12;8.74;8.07;7.87;23.94;Scd;;;;;;;;2MASX J02271691+3334439,IRAS 02243+3321,MCG +05-06-045,PGC 009332,UGC 01913;;; -NGC0926;G;02:26:06.71;-00:19:55.0;Cet;1.75;0.78;39;14.05;13.44;11.06;10.41;10.12;23.36;Sbc;;;;;;;;2MASX J02260670-0019552,MCG +00-07-011,PGC 009256,SDSS J022606.70-001954.9,SDSS J022606.71-001954.9,SDSS J022606.71-001955.0,UGC 01901;;; -NGC0927;G;02:26:37.31;+12:09:19.2;Ari;1.18;1.02;0;14.50;;11.22;10.53;10.15;23.38;SBc;;;;;;;;2MASX J02263732+1209193,IRAS 02239+1155,MCG +02-07-009,PGC 009292,UGC 01908;;; -NGC0928;G;02:27:41.02;+27:13:16.3;Ari;0.90;0.54;45;14.70;;11.78;11.14;10.80;23.11;Sa;;;;;;;;2MASX J02274101+2713162,MCG +04-06-050,PGC 009368;;; -NGC0929;G;02:27:18.22;-12:05:12.9;Cet;0.88;0.40;171;15.00;;12.98;12.42;12.30;23.13;Sa;;;;;;;;2MASX J02271820-1205129,MCG -02-07-009,PGC 009334;;; -NGC0930;Other;02:27:51.44;+20:20:30.4;Ari;;;;;;;;;;;;;;;;;;;;Nonexistent object. Sometimes incorrectly equated with NGC 0932.; -NGC0931;G;02:28:14.48;+31:18:42.0;Tri;2.45;0.69;75;15.71;14.74;10.40;9.67;9.27;24.17;Sbc;;;;;;;;2MASX J02281446+3118414,IRAS 02252+3105,MCG +05-06-049,PGC 009399,SDSS J022814.46+311841.5,UGC 01935;;; -NGC0932;G;02:27:54.69;+20:19:56.9;Ari;2.00;1.85;145;13.70;;10.01;9.26;9.02;23.96;Sa;;;;;;;;2MASX J02275468+2019575,MCG +03-07-014,PGC 009379,SDSS J022754.69+201956.9,UGC 01931;;Often misidentified as NGC 0930 (which does not exist).; -NGC0933;G;02:29:17.49;+45:54:40.7;And;1.84;0.96;37;15.50;;11.06;10.37;10.12;24.86;Sbc;;;;;;;;2MASX J02291746+4554409,MCG +08-05-013,PGC 009465,UGC 01956;;; -NGC0934;G;02:27:32.93;-00:14:40.4;Cet;1.14;0.80;127;14.00;13.14;11.37;10.63;10.45;23.30;E-S0;;;;;;;;2MASX J02273292-0014404,MCG +00-07-016,PGC 009352,SDSS J022732.92-001440.3,SDSS J022732.93-001440.3,SDSS J022732.93-001440.4,UGC 01926;;; -NGC0935;G;02:28:11.15;+19:35:56.8;Ari;1.58;0.98;155;13.56;12.82;10.29;9.59;9.32;23.14;Sc;;;;;;;;2MASX J02281114+1935568,IRAS 02253+1922,MCG +03-07-015,PGC 009388,UGC 01937;;; -NGC0936;G;02:27:37.46;-01:09:22.6;Cet;4.44;3.18;133;11.10;;7.84;7.14;6.91;23.14;S0-a;;;;;;;;2MASX J02273746-0109226,MCG +00-07-017,PGC 009359,SDSS J022737.44-010921.5,SDSS J022737.44-010921.6,UGC 01929;;; -NGC0937;G;02:29:28.08;+42:14:59.9;And;0.89;0.35;115;15.00;;;;;22.82;Sc;;;;;;;;MCG +07-06-024,PGC 009480,UGC 01961;;"Star (or eB knot?) superposed; position is for center of galaxy image."; -NGC0938;G;02:28:33.51;+20:17:01.3;Ari;1.55;1.14;97;13.80;;10.47;9.81;9.53;23.56;E;;;;;;;;2MASX J02283350+2017011,MCG +03-07-017,PGC 009423,UGC 01947;;; -NGC0939;G;02:26:21.32;-44:26:46.2;Eri;1.66;1.16;100;14.06;;10.97;10.30;10.09;23.97;E;;;;;;;;2MASX J02262131-4426460,ESO 246-011,ESO-LV 246-0110,MCG -07-06-004,PGC 009271;;; -NGC0940;G;02:29:27.50;+31:38:27.3;Tri;1.64;1.15;20;13.40;;10.40;9.71;9.36;23.15;S0;;;;;;;;2MASX J02292749+3138271,IRAS 02264+3125,MCG +05-06-050,PGC 009478,UGC 01964;;; -NGC0941;G;02:28:27.85;-01:09:05.5;Cet;1.87;1.33;171;12.80;;11.40;10.95;10.69;22.85;SABc;;;;;;;;2MASX J02282784-0109056,IRAS 02259-0122,MCG +00-07-022,PGC 009414,SDSS J022827.74-010908.6,SDSS J022827.88-010905.2,UGC 01954;;Confused HIPASS source; -NGC0942;G;02:29:10.25;-10:50:10.1;Cet;1.78;0.87;2;11.00;;10.37;9.65;9.68;24.37;S0;;;;;;;;MCG -02-07-019,PGC 009457;;MCG, VV, and RC2 switch NGC 0942 and NGC 0943. NGC 0942 is southern of two.; -NGC0943;G;02:29:09.68;-10:49:41.0;Cet;1.55;0.95;26;11.00;;12.77;12.08;11.83;24.03;S0-a;;;;;;;;2MASX J02290967-1049407,MCG -02-07-018,PGC 009458;;MCG, VV, and RC2 switch NGC 0942 and NGC 0943. NGC 0943 is northern of two.; -NGC0944;G;02:26:41.53;-14:30:56.3;Cet;1.01;0.37;18;14.00;;12.03;11.23;10.99;23.67;S0-a;;;;;;0228;;2MASX J02264151-1430561,IRAS 02242-1444,MCG -03-07-016,PGC 009300;;; -NGC0945;G;02:28:37.28;-10:32:20.3;Cet;2.06;1.82;170;12.00;;10.31;9.67;9.36;23.01;SBc;;;;;;;;2MASX J02283732-1032211,IRAS 02261-1045,MCG -02-07-013,PGC 009426;;; -NGC0946;G;02:30:38.43;+42:13:57.4;And;1.42;0.84;66;14.50;;10.70;9.98;9.71;23.97;S0;;;;;;;;2MASX J02303850+4213556,MCG +07-06-026,PGC 009556,UGC 01979;;; -NGC0947;G;02:28:33.12;-19:02:31.6;Cet;2.14;1.15;59;13.43;;11.04;10.35;10.08;23.08;SABc;;;;;;;;2MASX J02283311-1902318,ESO 545-021,ESO-LV 545-0210,IRAS 02262-1915,MCG -03-07-022,PGC 009420;;The APMBGC position is 11 arcsec northwest of the nucleus.; -NGC0948;G;02:28:45.47;-10:30:50.0;Cet;1.17;0.96;30;14.00;;12.54;11.95;11.65;23.07;Sc;;;;;;;;2MASX J02284546-1030501,MCG -02-07-015,PGC 009431;;; -NGC0949;G;02:30:48.65;+37:08:12.4;Tri;3.10;1.35;144;12.67;11.98;10.06;9.41;9.16;23.07;Sb;;;;;;;;2MASX J02304865+3708124,IRAS 02277+3654,MCG +06-06-048,PGC 009566,UGC 01983;;; -NGC0950;G;02:29:11.77;-11:01:28.9;Cet;1.18;0.63;47;14.48;;11.74;11.10;10.78;23.23;SBb;;;;;;;;2MASX J02291177-1101287,MCG -02-07-021,PGC 009461;;; -NGC0951;G;02:28:56.88;-22:20:58.0;Cet;1.08;0.54;22;15.54;;13.24;12.44;12.35;23.90;SBab;;;;;;;;2MASX J02285688-2220579,ESO 479-008,ESO-LV 479-0080,MCG -04-07-001,PGC 009442;;; -NGC0952;Other;02:31:18.82;+34:44:51.5;Tri;;;;;;;;;;;;;;;;;;;;Nothing bright enough at this position.; -NGC0953;G;02:31:09.78;+29:35:19.5;Tri;1.47;1.19;14;14.50;;10.36;9.73;9.42;24.09;E;;;;;;;;2MASX J02310976+2935193,MCG +05-07-001,PGC 009586,UGC 01991;;; -NGC0954;G;02:28:51.63;-41:24:09.6;Eri;1.79;0.94;16;13.85;;11.15;10.55;10.08;23.05;SBc;;;;;;;;2MASX J02285162-4124095,ESO 299-004,ESO-LV 299-0040,IRAS 02268-4137,MCG -07-06-006,PGC 009438;;; -NGC0955;G;02:30:33.15;-01:06:30.3;Cet;2.72;0.88;20;12.93;11.97;9.74;9.04;8.75;23.18;Sab;;;;;;;;2MASX J02303311-0106305,MCG +00-07-027a,PGC 009549,SDSS J023033.04-010640.2,SDSS J023033.05-010640.3,SDSS J023033.12-010632.4,SDSS J023033.14-010630.2,UGC 01986;;; -NGC0956;OCl;02:32:30.90;+44:35:36.5;And;4.50;;;;8.90;;;;;;;;;;;;;MWSC 0208;;; -NGC0957;OCl;02:33:19.03;+57:34:10.9;Per;10.20;;;8.34;7.60;;;;;;;;;;;;;MWSC 0211;;; -NGC0958;G;02:30:42.83;-02:56:20.4;Cet;2.51;0.72;2;13.00;;9.87;9.11;8.80;22.65;SBc;;;;;;;;2MASX J02304283-0256204,IRAS 02281-0309,MCG -01-07-019,PGC 009560,SDSS J023042.81-025620.4;;; -NGC0959;G;02:32:23.94;+35:29:40.7;Tri;1.87;1.11;67;12.95;12.38;10.95;10.24;9.61;22.61;Sd;;;;;;;;2MASX J02322394+3529408,IRAS 02293+3516,MCG +06-06-051,PGC 009665,UGC 02002;;; -NGC0960;G;02:31:41.36;-09:18:01.6;Cet;1.23;0.32;125;14.00;;11.39;10.59;10.29;23.15;SABb;;;;;;;;2MASX J02314130-0918010,MCG -02-07-028,PGC 009621,SDSS J023141.34-091801.6,SDSS J023141.35-091801.5,SDSS J023141.35-091801.6;;; -NGC0961;G;02:41:02.49;-06:56:09.3;Cet;1.81;1.04;96;13.00;;;;13.50;22.97;Sm;;;;;1051;0249;;MCG -01-07-033,PGC 010172,SDSS J024102.48-065609.3,UGCA 040;;The APM image includes a superposed star.; -NGC0962;G;02:32:39.83;+28:04:11.8;Ari;1.46;1.03;178;14.20;;10.30;9.63;9.31;23.71;E-S0;;;;;;;;2MASX J02323984+2804116,MCG +05-07-004,PGC 009682,UGC 02013;;; -NGC0963;G;02:30:31.28;-04:12:55.5;Cet;0.80;0.79;110;14.50;;12.14;11.45;11.31;22.54;I;;;;;;1808;;2MASX J02303129-0412555,MCG -01-07-017,PGC 009545;;; -NGC0964;G;02:31:05.79;-36:02:04.8;For;2.18;0.50;33;13.48;;10.10;9.36;9.09;23.14;Sab;;;;;;1814;;2MASX J02310577-3602046,ESO 355-024,ESO-LV 355-0240,IRAS 02290-3615,MCG -06-06-010,PGC 009582;;SGC claims = IC 1814.; -NGC0965;G;02:32:25.10;-18:38:23.0;Cet;0.94;0.77;173;14.92;;12.82;12.58;12.11;23.25;SBc;;;;;;;;ESO 545-032,ESO-LV 545-0320,MCG -03-07-031,PGC 009666;;; -NGC0966;G;02:31:47.16;-19:52:54.1;Cet;1.13;0.95;107;14.37;;11.21;10.55;10.32;22.89;E-S0;;;;;;;;2MASX J02314714-1952541,ESO 545-030,ESO-LV 545-0300,MCG -03-07-029,PGC 009626;;Position in 1998AJ....116....1D includes a bright superposed star.; -NGC0967;G;02:32:12.71;-17:13:00.7;Cet;1.48;1.06;41;13.46;;10.76;10.00;9.76;23.41;E-S0;;;;;;;;2MASX J02321271-1713005,ESO 545-031,ESO-LV 545-0310,MCG -03-07-030,PGC 009654;;; -NGC0968;G;02:34:06.21;+34:28:47.6;Tri;1.20;0.45;49;13.80;;10.37;9.61;9.44;23.07;E;;;;;;;;2MASX J02340623+3428480,MCG +06-06-056,PGC 009779,UGC 02040;;; -NGC0969;G;02:34:08.20;+32:56:49.0;Tri;1.69;1.16;8;13.50;12.41;10.19;9.52;9.19;23.43;S0;;;;;;;;2MASX J02340789+3256500,MCG +05-07-008,PGC 009781,UGC 02039;;; -NGC0970;GPair;02:34:11.30;+32:58:34.0;Tri;1.00;;;;;;;;;;;;;;;;;MCG +05-07-009;;;Diameter of the group inferred by the author. -NGC0970 NED01;G;02:34:10.74;+32:58:29.5;Tri;;;;;;;;;;;;;;;;;;MCG +05-07-009 NED01;;; -NGC0970 NED02;G;02:34:11.70;+32:58:38.2;Tri;0.72;0.26;53;15.70;;12.45;11.72;11.33;23.88;;;;;;;;;2MASX J02341170+3258380,MCG +05-07-009 NED02,PGC 009786;;; -NGC0971;*;02:34:16.05;+32:59:13.6;Tri;;;;;;;;;;;;;;;;;;;;; -NGC0972;G;02:34:13.38;+29:18:40.6;Ari;3.31;1.61;151;12.10;;8.94;8.21;7.86;23.06;Sab;;;;;;;;2MASX J02341338+2918404,IRAS 02312+2905,MCG +05-07-010,PGC 009788,UGC 02045;;The 2MASS Extended Source position is 11 arcsec northwest of the nucleus.; -NGC0973;G;02:34:20.11;+32:30:20.2;Tri;3.28;0.43;49;13.70;;10.02;9.18;8.77;23.81;Sb;;;;;;;;2MASX J02342010+3230200,IRAS 02313+3217,MCG +05-07-013,PGC 009795,UGC 02048;;Right Ascension in 1993AN....314...97K is incorrect.; -NGC0974;G;02:34:25.80;+32:57:16.2;Tri;3.20;2.60;15;13.90;;10.40;9.66;9.45;25.16;SABb;;;;;;;;2MASX J02342577+3257160,IRAS 02314+3243,MCG +05-07-012,PGC 009802,UGC 02049;;; -NGC0975;G;02:33:22.75;+09:36:06.1;Cet;0.84;0.63;1;14.20;;10.98;10.24;9.95;22.62;S0-a;;;;;;;;2MASX J02332274+0936063,MCG +01-07-009,PGC 009735,UGC 02030;;; -NGC0976;G;02:34:00.02;+20:58:36.4;Ari;1.54;1.44;160;12.90;;10.14;9.47;9.11;22.86;Sbc;;;;;;;;2MASX J02340001+2058364,IRAS 02311+2045,MCG +03-07-027,PGC 009776,SDSS J023400.02+205836.2,UGC 02042;;; -NGC0977;G;02:33:03.43;-10:45:35.9;Cet;1.82;1.17;38;13.00;;11.27;10.58;10.40;24.02;Sa;;;;;;;;2MASX J02330342-1045361,MCG -02-07-031,PGC 009713;;; -NGC0978A;G;02:34:46.97;+32:50:46.3;Tri;1.83;1.53;85;13.30;;10.09;9.42;9.11;23.32;E-S0;;;;;;;;2MASX J02344697+3250462,MCG +05-07-016,PGC 009821,UGC 02057;;Called 'NGC 0978a' in MCG, and 'NGC 0978' in UGC.; -NGC0978B;G;02:34:48.10;+32:50:29.0;Tri;0.64;0.28;7;15.00;;;;;;S0;;;;;;;;MCG +05-07-017,PGC 009823,UGC 02057 NOTES01;;Called 'NGC 0978b' in MCG.; -NGC0979;G;02:31:38.79;-44:31:27.5;Eri;1.38;1.12;108;13.81;;10.60;9.95;9.63;23.27;S0;;;;;;;;2MASX J02313876-4431273,ESO 246-023,ESO-LV 246-0230,MCG -07-06-014,PGC 009614;;; -NGC0980;G;02:35:18.56;+40:55:35.4;And;1.64;0.81;110;14.30;;11.07;10.38;10.11;23.99;S0;;;;;;;;2MASX J02351856+4055356,MCG +07-06-038,PGC 009831,UGC 02063;;Often incorrectly called NGC 0982.; -NGC0981;G;02:32:59.89;-10:58:26.2;Cet;1.08;0.51;6;14.00;;12.08;11.32;11.10;22.90;Sc;;;;;;;;2MASX J02325989-1058261,MCG -02-07-030,PGC 009710;;; -NGC0982;G;02:35:24.87;+40:52:11.0;And;1.60;0.63;132;13.20;;10.06;9.31;8.96;22.45;Sa;;;;;;;;2MASX J02352485+4052109,IRAS 02322+4039,MCG +07-06-039,PGC 009838,UGC 02066;;Often incorrectly called NGC 0980.; -NGC0983;G;02:38:55.64;+34:37:20.2;Tri;1.16;0.69;136;14.00;;11.00;10.33;10.01;22.80;SBb;;;;;1002;;;2MASX J02385564+3437201,IRAS 02358+3424,MCG +06-06-070,PGC 010034,UGC 02133;;; -NGC0984;G;02:34:43.10;+23:24:46.8;Ari;1.66;1.10;114;14.50;;10.29;9.53;9.29;24.52;S0-a;;;;;;;;2MASX J02344313+2324472,MCG +04-07-012,PGC 009819,UGC 02059;;; -NGC0985;G;02:34:37.77;-08:47:15.4;Cet;0.86;0.66;80;14.64;14.28;11.63;11.10;10.54;22.24;I;;;;;;;;2MASX J02343788-0847170,IRAS 02321-0900,MCG -02-07-035,PGC 009817;;; -NGC0986;G;02:33:34.35;-39:02:42.2;For;3.77;3.03;52;11.74;10.91;8.75;8.02;7.78;23.15;Sab;;;;;;;;2MASX J02333434-3902422,ESO 299-007,ESO-LV 299-0070,IRAS 02315-3915,MCG -07-06-015,PGC 009747;;; -NGC0986A;G;02:32:41.45;-39:17:46.4;For;1.85;0.29;78;14.86;13.97;;;;24.68;;;;;;;;;ESO 299-006,ESO-LV 299-0060,MCG -07-06-014A,PGC 009685;;; -NGC0987;G;02:36:49.61;+33:19:38.1;Tri;1.52;1.07;36;13.40;;10.01;9.28;8.98;23.03;S0-a;;;;;;;;2MASX J02364960+3319381,IRAS 02338+3306,MCG +05-07-021,PGC 009911,UGC 02093;;; -NGC0988;G;02:35:27.75;-09:21:22.3;Cet;4.33;1.73;119;11.73;;7.34;7.35;7.00;22.09;Sc;;;;;;;;2MASX J02352772-0921216,IRAS 02330-0934,MCG -02-07-037,PGC 009843,UGCA 035;;"HD 1615 (V=7.1) superposed 52"" northwest of center."; -NGC0989;G;02:33:46.05;-16:30:40.2;Cet;0.92;0.84;85;15.00;;11.69;11.03;10.90;23.51;S0;;;;;;;;2MASX J02334606-1630398,MCG -03-07-034,PGC 009762;;; -NGC0990;G;02:36:18.21;+11:38:31.5;Ari;1.48;1.12;41;13.90;;10.31;9.65;9.32;23.21;E;;;;;;;;2MASX J02361820+1138315,MCG +02-07-018,PGC 009890,UGC 02089;;; -NGC0991;G;02:35:32.68;-07:09:16.0;Cet;1.48;1.31;75;12.36;;11.98;11.45;11.18;22.55;SABc;;;;;;;;2MASX J02353199-0709366,IRAS 02330-0722,MCG -01-07-023,PGC 009846,SDSS J023532.68-070915.9,SDSS J023532.68-070916.0;;; -NGC0992;G;02:37:25.49;+21:06:03.0;Ari;0.79;0.59;8;13.50;;10.90;10.15;9.80;23.51;SBc;;;;;;;;2MASX J02372549+2106030,IRAS 02345+2053,MCG +03-07-035,PGC 009938,UGC 02103;;; -NGC0993;G;02:36:46.06;+02:03:01.5;Cet;0.86;0.68;105;14.90;;11.20;10.54;10.14;23.34;E-S0;;;;;0994;;;2MASX J02364604+0203015,MCG +00-07-052,PGC 009910,UGC 02095;;; -NGC0994;Dup;02:36:46.06;+02:03:01.5;Cet;;;;;;;;;;;;;;;0993;;;;;; -NGC0995;G;02:38:32.04;+41:31:45.3;Per;1.30;0.76;36;14.90;;10.93;10.23;9.93;24.06;S0;;;;;;;;2MASX J02383202+4131452,MCG +07-06-044,PGC 010008,UGC 02118;;; -NGC0996;G;02:38:39.87;+41:38:51.1;Per;1.30;1.12;75;14.50;;10.53;9.81;9.56;23.87;E;;;;;;;;2MASX J02383986+4138512,MCG +07-06-045,PGC 010015,UGC 02123;;; -NGC0997;GPair;02:37:14.50;+07:18:28.0;Cet;1.00;;;;;;;;;;;;;;;;;MCG +01-07-016,UGC 02102;;;Diameter of the group inferred by the author. -NGC0997 NED01;G;02:37:14.42;+07:18:35.2;Cet;;;;;;;;;;;;;;;;;;MCG +01-07-016 NED01,PGC 200205,UGC 02102 NED01;;;Diameters and position angle taken from Simbad. -NGC0997 NED02;G;02:37:14.50;+07:18:20.3;Cet;1.12;1.02;5;14.60;;10.48;9.65;9.42;23.82;E;;;;;;;;2MASX J02371447+0718201,MCG +01-07-016 NED02,PGC 009932,UGC 02102 NED02;;; -NGC0998;G;02:37:16.50;+07:20:08.9;Cet;0.63;0.52;175;14.60;;12.15;11.42;11.07;;;;;;;;;;2MASX J02371649+0720091,PGC 009934;;; -NGC0999;G;02:38:47.46;+41:40:13.8;Per;0.78;0.69;61;14.50;;11.32;10.71;10.37;22.90;SABa;;;;;;;;2MASX J02384745+4140132,MCG +07-06-047,PGC 010026,UGC 02127;;IC 0240 is an asterism of 3-4 Galactic stars.; -NGC1000;G;02:38:49.74;+41:27:34.9;Per;0.64;0.39;90;15.60;;11.88;11.19;10.93;23.39;E;;;;;;;;2MASX J02384973+4127352,MCG +07-06-048,PGC 010028;;; -NGC1001;G;02:39:12.65;+41:40:18.2;Per;0.72;0.27;114;14.70;;11.27;10.61;10.34;22.42;Sab;;;;;;;;2MASX J02391263+4140182,MCG +07-06-050,PGC 010050;;; -NGC1002;Dup;02:38:55.64;+34:37:20.2;Tri;;;;;;;;;;;;;;;0983;;;;;; -NGC1003;G;02:39:16.89;+40:52:20.3;Per;3.47;0.83;96;12.10;;10.12;9.52;9.35;22.34;Sc;;;;;;;;2MASX J02391689+4052202,IRAS 02360+4039,MCG +07-06-051,PGC 010052,UGC 02137;;; -NGC1004;G;02:37:41.78;+01:58:31.1;Cet;1.17;1.05;96;14.30;;10.73;10.02;9.78;22.95;E;;;;;;;;2MASX J02374181+0158309,MCG +00-07-057,PGC 009961,UGC 02112;;; -NGC1005;G;02:39:29.20;+41:29:20.3;Per;0.66;0.65;45;14.70;;11.21;10.70;10.33;;E;;;;;;;;2MASX J02392768+4129362,2MASX J02392918+4129203,MCG +07-06-052,PGC 010062;;;Diameters and position angle taken from Simbad. -NGC1006;G;02:37:34.86;-11:01:30.0;Cet;0.86;0.24;1;14.00;;;;;21.85;Sc;;;;;1010;;;2MASX J02373487-1101300,MCG -02-07-044,PGC 009949;;; -NGC1007;G;02:37:52.26;+02:09:21.7;Cet;0.61;0.21;50;15.00;;12.71;11.85;11.76;24.10;;;;;;;;;2MASX J02375226+0209220,MCG +00-07-059,PGC 009967;;; -NGC1008;G;02:37:55.29;+02:04:46.7;Cet;0.86;0.54;83;14.90;;11.64;11.01;10.75;23.47;E;;;;;;;;2MASX J02375526+0204470,MCG +00-07-060,PGC 009970,UGC 02114;;; -NGC1009;G;02:38:19.07;+02:18:36.1;Cet;1.39;0.23;124;15.40;;12.16;11.43;11.17;23.68;Sb;;;;;;;;2MASX J02381907+0218361,MCG +00-07-065,PGC 009995,UGC 02129;;; -NGC1010;Dup;02:37:34.86;-11:01:30.0;Cet;;;;;;;;;;;;;;;1006;;;;;; -NGC1011;G;02:37:38.89;-11:00:20.0;Cet;0.68;0.62;160;15.00;;11.95;11.24;11.16;22.79;Sa;;;;;;;;2MASX J02373887-1100200,MCG -02-07-045,PGC 009955;;; -NGC1012;G;02:39:14.91;+30:09:05.0;Ari;2.10;1.05;24;13.10;;10.31;9.51;9.34;23.34;S0-a;;;;;;;;2MASX J02391496+3009060,IRAS 02362+2956,MCG +05-07-027,PGC 010051,UGC 02141;;; -NGC1013;G;02:37:50.47;-11:30:26.1;Cet;1.08;0.68;66;14.00;;11.58;10.94;10.65;23.81;S0-a;;;;;;;;2MASX J02375042-1130261,MCG -02-07-046,PGC 009966;;; -NGC1014;**;02:38:00.85;-09:34:24.2;Cet;;;;;;;;;;;;;;;;;;;;; -NGC1015;G;02:38:11.56;-01:19:07.3;Cet;1.98;1.68;100;12.80;;10.35;9.67;9.35;23.55;Sa;;;;;;;;2MASX J02381156-0119070,MCG +00-07-066,PGC 009988,SDSS J023811.55-011907.5,UGC 02124;;; -NGC1016;G;02:38:19.56;+02:07:09.3;Cet;2.26;1.36;42;13.30;;9.54;8.85;8.58;23.26;E;;;;;;;;2MASX J02381955+0207091,MCG +00-07-067,PGC 009997,UGC 02128;;; -NGC1017;G;02:37:49.84;-11:00:37.0;Cet;0.68;0.55;64;14.50;;13.05;12.44;12.02;22.59;I;;;;;;;;2MASX J02374984-1100371,MCG -02-07-047,PGC 009964;;; -NGC1018;G;02:38:10.36;-09:32:38.1;Cet;1.07;0.59;178;15.00;;12.35;11.67;11.26;23.88;S0-a;;;;;;;;2MASX J02381034-0932381,MCG -02-07-048,PGC 009986;;; -NGC1019;G;02:38:27.41;+01:54:27.8;Cet;1.08;0.75;35;15.71;14.95;11.80;11.06;10.82;23.22;Sbc;;;;;;;;2MASX J02382742+0154276,MCG +00-07-068,PGC 010006,UGC 02132;;; -NGC1020;G;02:38:44.34;+02:13:52.6;Cet;0.92;0.28;20;15.00;;11.94;11.21;10.99;23.67;S0;;;;;;;;2MASX J02384435+0213526,PGC 010018;;; -NGC1021;G;02:38:48.02;+02:13:02.7;Cet;0.79;0.55;161;15.10;;12.17;11.56;11.19;23.05;SABb;;;;;;;;2MASX J02384802+0213026,PGC 010027;;; -NGC1022;G;02:38:32.71;-06:40:38.7;Cet;2.60;1.50;74;12.09;11.34;9.45;8.79;8.50;22.66;SBa;;;;;;;;2MASX J02383270-0640386,IRAS 02360-0653,MCG -01-07-025,PGC 010010;;; -NGC1023;G;02:40:24.01;+39:03:47.8;Per;7.40;3.06;87;10.35;9.35;7.16;6.49;6.24;22.59;E-S0;;;;;;;;2MASX J02402401+3903477,MCG +06-06-073,PGC 010123,UGC 02154;;; -NGC1023A;G;02:40:37.7;+39:03:27;Per;1.30;0.65;50;;;;;;23.17;IB;;;;;;;;PGC 010139;;; -NGC1024;G;02:39:11.96;+10:50:48.6;Ari;2.86;1.06;151;13.80;;9.75;9.01;8.74;23.61;Sab;;;;;;;;2MASX J02391196+1050485,IRAS 02365+1037,MCG +02-07-020,PGC 010048,UGC 02142;;; -NGC1025;G;02:36:19.93;-54:51:51.0;Hor;0.94;0.55;15;14.62;;11.77;10.96;10.67;22.29;Sb;;;;;;;;2MASX J02361991-5451510,ESO 154-004,ESO-LV 154-0040,IRAS 02347-5504,PGC 009891;;; -NGC1026;G;02:39:19.22;+06:32:38.4;Cet;1.84;1.68;85;14.10;;10.60;9.93;9.69;24.13;S0;;;;;;;;2MASX J02391920+0632381,2MASX J02391987+0632151,MCG +01-07-018,PGC 010055,UGC 02145;;; -NGC1027;OCl;02:42:35.06;+61:35:39.7;Cas;7.80;;;7.28;6.70;;;;;;;;;;;1824;;MWSC 0225;;The IC identification is not certain.; -NGC1028;G;02:39:37.15;+10:50:37.2;Ari;0.87;0.46;15;15.61;14.79;12.37;11.65;11.45;23.30;SABb;;;;;;;;2MASX J02393715+1050371,MCG +02-07-023,PGC 010068;;; -NGC1029;G;02:39:36.54;+10:47:36.0;Ari;1.56;0.46;70;14.20;13.11;10.62;9.93;9.63;23.82;S0-a;;;;;;;;2MASX J02393654+1047361,MCG +02-07-024,PGC 010078,UGC 02149;;; -NGC1030;G;02:39:50.60;+18:01:27.4;Ari;1.50;0.64;8;14.50;;10.81;10.05;9.61;23.34;Sc;;;;;;;;2MASX J02395060+1801274,IRAS 02370+1748,MCG +03-07-039,PGC 010088,UGC 02153;;; -NGC1031;G;02:36:38.76;-54:51:35.2;Hor;2.27;1.08;24;13.64;;10.37;9.66;9.41;23.57;SBa;;;;;;;;2MASX J02363879-5451350,ESO 154-005,ESO-LV 154-0050,PGC 009907;;; -NGC1032;G;02:39:23.64;+01:05:37.6;Cet;3.58;0.86;67;13.20;;9.33;8.61;8.38;23.75;S0-a;;;;;;;;2MASX J02392368+0105376,MCG +00-07-073,PGC 010060,SDSS J023923.65+010536.9,UGC 02147;;87GB source with large sky, narrow minor axis, or very bad confusion.; -NGC1033;G;02:40:16.12;-08:46:37.0;Cet;1.14;0.91;178;14.00;;11.65;11.00;10.76;23.41;Sc;;;;;;;;2MASX J02401607-0846371,MCG -02-07-053,PGC 010108,SDSS J024016.11-084637.0,SDSS J024016.12-084637.0,SDSS J024016.12-084637.1;;; -NGC1034;G;02:38:14.02;-15:48:32.7;Cet;0.80;0.73;140;14.55;;12.25;11.65;11.62;22.74;I;;;;;;;;2MASX J02381401-1548325,IRAS 02358-1601,MCG -03-07-043,PGC 009991;;; -NGC1035;G;02:39:29.09;-08:07:58.6;Cet;2.08;0.68;153;12.89;;10.12;9.42;9.13;22.36;Sc;;;;;;;;2MASX J02392990-0808212,IRAS 02370-0820,MCG -01-07-027,PGC 010065,SDSS J023929.13-080801.1,SDSS J023929.25-080804.1,SDSS J023929.26-080804.2;;The 2MASX and SDSS positions are southeast of the J-band nucleus.; -NGC1036;G;02:40:28.99;+19:17:49.6;Ari;1.40;1.03;3;13.50;;11.48;10.88;10.66;23.07;Sab;;;;;;1828;;2MASX J02402898+1917494,IRAS 02376+1904,MCG +03-07-041,PGC 010127,UGC 02160;;; -NGC1037;Other;02:39:58.38;-01:44:02.6;Cet;;;;;;;;;;;;;;;;;;;;Nonexistent object. Sometimes incorrectly equated with UGC 02119.; -NGC1038;G;02:40:06.32;+01:30:31.6;Cet;1.39;0.50;61;14.40;;10.86;10.13;9.86;23.55;S0-a;;;;;;;;2MASX J02400633+0130314,MCG +00-07-076,PGC 010096,TYC 47-1231-1,UGC 02158;;; -NGC1039;OCl;02:42:07.40;+42:44:46.1;Per;22.50;;;5.37;5.20;;;;;;;;;034;;;;MWSC 0223;;; -NGC1040;G;02:43:12.44;+41:30:02.2;Per;1.67;0.72;40;14.00;;10.70;9.93;9.62;23.75;S0;;;;;1053;;;2MASX J02431242+4130022,MCG +07-06-060,PGC 010298,UGC 02187;;; -NGC1041;G;02:40:25.22;-05:26:25.6;Cet;1.36;1.08;47;14.00;;10.88;10.18;9.89;23.59;E-S0;;;;;;;;2MASX J02402521-0526252,MCG -01-07-030,PGC 010125;;; -NGC1042;G;02:40:23.97;-08:26:00.8;Cet;3.87;2.13;1;11.56;11.02;10.29;9.73;8.85;22.81;SABc;;;;;;;;2MASX J02402397-0826011,IRAS 02379-0838,MCG -02-07-054,PGC 010122,SDSS J024023.96-082600.7,SDSS J024023.97-082600.7,SDSS J024023.97-082600.8;;Confused HIPASS source; -NGC1043;G;02:40:46.57;+01:20:35.3;Cet;0.85;0.18;111;15.70;;12.46;11.78;11.48;23.29;Sb;;;;;;;;2MASX J02404654+0120352,PGC 010155;;; -NGC1044;GPair;02:41:06.60;+08:44:14.0;Cet;1.20;;;;;;;;;;;;;;;;;MCG +01-07-023;;;Diameter of the group inferred by the author. -NGC1044 NED01;G;02:41:06.16;+08:44:16.9;Cet;0.76;0.76;110;14.80;;10.64;9.98;9.71;22.58;E-S0;;;;;;;;2MASX J02410618+0844167,MCG +01-07-023 NED01,PGC 010174;;; -NGC1044 NED02;G;02:41:07.25;+08:44:10.2;Cet;0.58;0.51;;15.16;;;;;;;;;;;;;;MCG +01-07-023 NED02,PGC 3080165;;;B-Mag taken from LEDA -NGC1045;G;02:40:29.12;-11:16:39.2;Cet;1.69;1.27;59;13.00;;9.82;9.15;8.87;23.29;E-S0;;;;;;;;2MASX J02402912-1116391,MCG -02-07-059,PGC 010129;;; -NGC1046;G;02:41:12.85;+08:43:09.8;Cet;0.75;0.70;130;14.90;;11.05;10.34;10.08;;E-S0;;;;;;;;2MASX J02411285+0843099,MCG +01-07-024,PGC 010185;;;Diameters and position angle taken from Simbad. -NGC1047;G;02:40:32.84;-08:08:51.6;Cet;1.36;0.75;91;14.50;;11.76;11.14;11.00;23.79;S0-a;;;;;;;;2MASX J02403280-0808511,MCG -01-07-032,PGC 010132,SDSS J024032.83-080851.6,SDSS J024032.84-080851.6;;; -NGC1048;G;02:40:37.95;-08:32:00.1;Cet;1.18;0.47;105;14.00;;11.79;11.03;10.76;24.30;S0-a;;;;;1048B;;;2MASX J02403792-0832001,MCG -02-07-062,PGC 010140,SDSS J024037.95-083200.0,SDSS J024037.95-083200.1,SDSS J024037.96-083200.1;;; -NGC1048A;G;02:40:35.7;-08:32:50;Cet;0.81;0.42;178;18.60;17.87;11.98;11.21;10.82;23.26;SBbc;;;;;;;;2MASX J02403563-0832491,MCG -02-07-058,PGC 010137,SDSS J024035.65-083249.6,SDSS J024035.66-083249.4,SDSS J024035.66-083249.5,SDSS J024035.67-083249.5,SDSS J024035.67-083249.7,SDSS J024035.72-083250.6;;Multiple SDSS entries describe this object.; -NGC1049;GCl;02:39:48.14;-34:15:29.7;For;1.12;0.92;25;13.59;;11.39;10.98;10.87;;;;;;;;;;2MASX J02394816-3415285,ESO 356-003,MCG -06-06-017;Fornax Dwarf Cluster 3;Globular cluster associated with Fornax Dwarf Irregular.; -NGC1050;G;02:42:35.59;+34:45:48.6;Per;1.10;0.81;98;13.71;12.81;10.74;10.05;9.69;22.42;SBa;;;;;;;;2MASX J02423557+3445484,IRAS 02395+3433,MCG +06-06-078,PGC 010257,UGC 02178;;; -NGC1051;Dup;02:41:02.49;-06:56:09.3;Cet;;;;;;;;;;;;;;;0961;;;;;; -NGC1052;G;02:41:04.80;-08:15:20.8;Cet;2.94;2.07;109;11.41;10.47;8.37;7.71;7.45;22.65;E;;;;;;;;2MASX J02410480-0815209,IRAS 02386-0828,MCG -01-07-034,PGC 010175;;; -NGC1053;Dup;02:43:12.44;+41:30:02.2;Per;;;;;;;;;;;;;;;1040;;;;;; -NGC1054;G;02:42:15.74;+18:13:01.9;Ari;0.80;0.44;30;14.60;;11.75;11.01;10.74;22.36;Sb;;;;;;;;2MASX J02421572+1813017,IRAS 02394+1800,MCG +03-07-046,PGC 010242;;; -NGC1055;G;02:41:45.23;+00:26:35.4;Cet;6.92;3.53;104;11.40;10.59;8.25;7.49;7.15;23.87;SBb;;;;;;;;2MASX J02414523+0026354,IRAS 02391+0013,MCG +00-07-081,PGC 010208,SDSS J024144.78+002642.4,UGC 02173;;Confused and extended HIPASS source; -NGC1056;G;02:42:48.30;+28:34:27.1;Ari;1.88;1.36;162;13.50;;10.14;9.38;9.12;23.36;Sa;;;;;;;;2MASX J02424828+2834273,IRAS 02398+2821,MCG +05-07-032,PGC 010272,UGC 02183;;; -NGC1057;G;02:43:02.90;+32:29:28.3;Tri;1.16;0.72;118;15.70;;11.40;10.57;10.25;24.62;S0;;;;;;;;2MASX J02430289+3229283,MCG +05-07-033,PGC 010287,UGC 02184;;; -NGC1058;G;02:43:30.00;+37:20:28.8;Per;2.47;1.36;90;12.29;11.75;9.90;9.25;9.03;22.16;Sc;;;;;;;;2MASX J02433005+3720283,IRAS 02403+3707,MCG +06-07-001,PGC 010314,UGC 02193;;; -NGC1059;**;02:42:35.60;+17:59:48.3;Ari;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC1060;G;02:43:15.05;+32:25:29.9;Tri;2.36;1.75;77;13.00;11.81;9.24;8.49;8.20;23.61;E-S0;;;;;;;;2MASX J02431504+3225300,MCG +05-07-035,PGC 010302,SDSS J024315.07+322529.6,UGC 02191;;; -NGC1061;G;02:43:15.76;+32:28:00.2;Tri;0.87;0.59;27;15.20;;11.64;10.87;10.58;23.38;Sb;;;;;;;;2MASX J02431575+3228000,IRAS 02402+3215,MCG +05-07-036,PGC 010303;;; -NGC1062;*;02:43:24.02;+32:27:43.7;Tri;;;;;;;;;;;;;;;;;;;;; -NGC1063;G;02:42:10.06;-05:34:06.8;Cet;1.45;0.51;97;14.00;;11.33;10.63;10.31;23.30;SABb;;;;;;;;2MASX J02421006-0534070,IRAS 02396-0546,MCG -01-07-036,PGC 010232;;; -NGC1064;G;02:42:23.53;-09:21:44.2;Cet;1.01;0.75;37;14.00;;12.35;12.07;11.35;23.52;SBc;;;;;;;;2MASX J02422356-0921440,MCG -02-07-071,PGC 010249,SDSS J024223.53-092144.1;;; -NGC1065;G;02:42:06.27;-15:05:29.6;Cet;0.82;0.75;0;14.00;;11.35;10.68;10.40;23.24;E-S0;;;;;;;;2MASX J02420629-1505289,MCG -03-07-059,PGC 010228;;; -NGC1066;G;02:43:49.94;+32:28:30.0;Tri;1.82;1.28;60;14.25;;9.88;9.13;8.89;24.73;E;;;;;;;;2MASX J02434989+3228295,MCG +05-07-042,PGC 010338,UGC 02203;;; -NGC1067;G;02:43:50.52;+32:30:42.8;Tri;0.97;0.92;145;14.55;13.69;11.88;11.39;11.04;23.18;SABc;;;;;;;;2MASX J02435052+3230425,MCG +05-07-043,PGC 010339,UGC 02204;;; -NGC1068;G;02:42:40.71;-00:00:47.8;Cet;6.11;5.61;12;9.61;8.87;6.97;6.26;5.79;22.35;Sb;;;;077;;;;2MASX J02424077-0000478,IRAS 02401-0013,MCG +00-07-083,PGC 010266,UGC 02188;;; -NGC1069;G;02:42:59.82;-08:17:22.2;Cet;1.35;0.84;146;14.50;;11.45;10.78;10.56;23.26;SABc;;;;;;;;2MASX J02425985-0817223,IRAS 02405-0829,MCG -01-07-038,PGC 010285,SDSS J024259.82-081722.1,SDSS J024259.82-081722.2,SDSS J024259.82-081722.3;;; -NGC1070;G;02:43:22.27;+04:58:06.3;Cet;2.34;2.00;178;13.00;;9.64;8.97;8.74;23.36;Sb;;;;;;;;2MASX J02432226+0458064,IRAS 02407+0445,MCG +01-07-026,PGC 010309,SDSS J024322.26+045806.0,UGC 02200;;; -NGC1071;G;02:43:07.85;-08:46:26.0;Cet;1.22;0.41;172;15.00;;12.34;11.59;11.09;23.94;SBa;;;;;;;;2MASX J02430783-0846261,MCG -02-07-077,PGC 010290;;; -NGC1072;G;02:43:31.31;+00:18:24.5;Cet;1.21;0.49;13;14.16;;11.14;10.39;10.14;22.98;Sab;;;;;;1837;;2MASX J02433129+0018244,IRAS 02409+0005,MCG +00-07-088,PGC 010315,SDSS J024331.30+001824.4,SDSS J024331.30+001824.5,SDSS J024331.31+001824.5,SDSS J024331.31+001824.6,UGC 02208;;; -NGC1073;G;02:43:40.52;+01:22:34.0;Cet;3.54;2.23;32;11.30;;9.79;9.26;8.98;22.78;SBc;;;;;;;;2MASX J02434059+0122331,IRAS 02411+0109,MCG +00-08-001,PGC 010329,UGC 02210;;; -NGC1074;G;02:43:36.12;-16:17:49.5;Cet;0.91;0.50;165;14.90;;12.52;12.12;11.61;23.36;SABa;;;;;;;;2MASX J02433613-1617496,MCG -03-08-001,PGC 010324;;; -NGC1075;G;02:43:33.55;-16:12:04.0;Cet;0.81;0.53;146;15.00;;12.73;11.70;11.52;23.56;S0-a;;;;;;;;2MASX J02433355-1612036,IRAS 02412-1624,MCG -03-08-002,PGC 010320;;; -NGC1076;G;02:43:29.25;-14:45:15.5;Cet;1.81;1.25;99;13.55;;10.84;10.21;9.98;23.47;S0-a;;;;;;;;2MASX J02432925-1445156,IRAS 02411-1457,MCG -03-08-003,PGC 010313;;; -NGC1077A;G;02:46:02.9;+40:05:36;Per;0.53;0.33;27;16.00;;14.40;13.41;13.54;24.09;SBb;;;;;;;;2MASX J02460292+4005358,MCG +07-06-068,PGC 010465;;; -NGC1077B;G;02:46:00.6;+40:05:25;Per;1.06;0.77;165;14.60;;11.40;10.70;10.42;23.17;Sb;;;;;;;;2MASX J02460057+4005248,MCG +07-06-069,PGC 010468,UGC 02230;;; -NGC1078;G;02:44:08.04;-09:27:08.6;Cet;0.85;0.62;45;15.00;;11.65;10.91;10.61;23.60;E-S0;;;;;;;;2MASX J02440800-0927082,MCG -02-08-001,PGC 010362;;; -NGC1079;G;02:43:44.34;-29:00:12.1;For;2.65;1.49;99;12.17;11.37;9.27;8.55;8.34;22.99;SABa;;;;;;;;2MASX J02434435-2900123,ESO 416-013,ESO-LV 416-0130,IRAS 02415-2913,MCG -05-07-017,PGC 010330;;; -NGC1080;G;02:45:09.94;-04:42:38.8;Eri;1.09;0.82;166;14.50;;11.78;11.16;10.85;22.84;SABc;;;;;;;;2MASX J02450993-0442388,IRAS 02426-0455,MCG -01-08-003,PGC 010416,SDSS J024509.95-044238.7;;; -NGC1081;G;02:45:05.52;-15:35:16.1;Eri;1.78;0.59;23;14.40;;11.60;10.93;10.70;23.35;SBb;;;;;;;;2MASX J02450551-1535160,IRAS 02427-1547,MCG -03-08-010,PGC 010411;;; -NGC1082;G;02:45:41.25;-08:10:49.9;Eri;0.96;0.71;102;15.50;;11.31;10.60;10.33;23.31;S0;;;;;;;;2MASX J02454120-0810497,MCG -01-08-004,PGC 010447,SDSS J024541.25-081049.8,SDSS J024541.25-081049.9;;; -NGC1083;G;02:45:40.60;-15:21:28.0;Eri;1.55;0.33;17;14.00;;;;;23.85;Sb;;;;;;;;2MASX J02454032-1521401,IRAS 02433-1534,MCG -03-08-015,PGC 010445;;; -NGC1084;G;02:45:59.91;-07:34:42.5;Eri;3.40;2.25;36;11.59;10.73;8.84;8.21;7.93;22.24;Sc;;;;;;;;2MASX J02455992-0734431,IRAS 02435-0747,MCG -01-08-007,PGC 010464,SDSS J024559.90-073442.4;;Extended HIPASS source; -NGC1085;G;02:46:25.30;+03:36:26.2;Cet;2.04;1.50;13;13.60;;10.79;10.00;9.80;23.82;Sbc;;;;;;;;2MASX J02462530+0336258,IRAS 02438+0323,MCG +00-08-010,PGC 010498,SDSS J024625.30+033626.1,UGC 02241;;; -NGC1086;G;02:47:56.37;+41:14:47.3;Per;1.32;0.79;43;13.60;;11.57;10.91;10.59;22.44;Sc;;;;;;;;2MASX J02475638+4114474,IRAS 02447+4102,MCG +07-06-071,PGC 010587,UGC 02258;;; -NGC1087;G;02:46:25.16;-00:29:55.1;Cet;2.97;1.80;10;11.50;;9.57;9.00;8.69;22.20;Sc;;;;;;;;2MASX J02462517-0029553,IRAS 02438-0042,MCG +00-08-009,PGC 010496,SDSS J024625.15-002955.2,SDSS J024625.16-002955.1,SDSS J024625.17-002955.3,SDSS J024625.32-002956.4,UGC 02245;;; -NGC1088;GPair;02:47:04.40;+16:12:04.0;Ari;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC1088 NED01;G;02:47:04.01;+16:11:59.7;Ari;0.88;0.52;95;14.80;;11.36;10.65;10.33;23.28;S0-a;;;;;;;;2MASX J02470402+1611597,MCG +03-08-009,PGC 010536,UGC 02253;;; -NGC1088 NED02;G;02:47:04.89;+16:12:08.7;Ari;0.48;0.22;116;16.69;;;;;24.31;;;;;;;;;MCG +03-08-009 NOTES01,PGC 1503207,UGC 02253 NOTES01;;;B-Mag taken from LEDA -NGC1089;G;02:46:10.10;-15:04:23.5;Eri;1.38;0.99;16;14.00;;11.01;10.31;10.08;24.07;E;;;;;;;;2MASX J02461014-1504231,MCG -03-08-020,PGC 010481;;; -NGC1090;G;02:46:33.94;-00:14:49.8;Cet;3.31;1.46;101;12.30;;10.08;9.40;9.20;23.32;Sbc;;;;;;;;2MASX J02463391-0014493,IRAS 02440-0027,MCG +00-08-011,PGC 010507,SDSS J024633.55-001450.6,SDSS J024633.93-001449.7,SDSS J024633.93-001449.8,SDSS J024634.90-001500.7,UGC 02247;;; -NGC1091;G;02:45:22.43;-17:31:59.4;Eri;0.81;0.67;86;14.88;;11.74;11.07;10.66;24.26;Sa;;;;;;;;2MASX J02452243-1731591,ESO 546-016,ESO-LV 546-0160,MCG -03-08-013,PGC 010424;;; -NGC1092;G;02:45:29.57;-17:32:32.2;Eri;1.00;0.89;130;14.40;;11.22;10.51;10.23;24.37;E;;;;;;;;2MASX J02452956-1732321,ESO 546-017,ESO-LV 546-0170,MCG -03-08-014,PGC 010432;;; -NGC1093;G;02:48:16.15;+34:25:11.2;Tri;1.16;0.75;99;14.30;;11.37;10.61;10.32;23.13;SABa;;;;;;;;2MASX J02481616+3425111,MCG +06-07-011,PGC 010606,SDSS J024816.13+342511.3,UGC 02274;;; -NGC1094;G;02:47:27.83;-00:17:06.4;Cet;1.32;0.84;89;13.50;;11.09;10.45;10.15;22.84;SABa;;;;;;;;2MASX J02472781-0017063,IRAS 02449-0029,MCG +00-08-015,PGC 010559,SDSS J024727.82-001706.5,SDSS J024727.83-001706.3,SDSS J024727.83-001706.4,UGC 02262;;UGC misprints R.A. as 03h44.9m.; -NGC1095;G;02:47:37.86;+04:38:15.5;Cet;1.26;0.81;46;14.20;;11.57;10.94;10.89;23.00;SBc;;;;;;;;2MASX J02473787+0438154,IRAS 02450+0425,MCG +01-08-001,PGC 010566,UGC 02264;;; -NGC1096;G;02:43:49.29;-59:54:48.3;Hor;1.76;1.61;45;13.75;;11.43;10.66;10.39;23.41;SBbc;;;;;;;;2MASX J02434931-5954484,ESO 115-028,ESO-LV 115-0280,IRAS 02425-6007,PGC 010336;;One APM image refers to the northeast end of the bar.; -NGC1097;G;02:46:19.05;-30:16:29.6;For;10.57;6.44;138;9.97;9.48;7.18;6.51;6.25;23.63;SBb;;;;;;;;2MASX J02461905-3016296,C 067,ESO 416-020,ESO-LV 416-0200,IRAS 02441-3029,MCG -05-07-024,PGC 010488,UGCA 041;;Extended HIPASS source; -NGC1097A;G;02:46:09.9;-30:13:41;For;1.00;0.57;100;14.61;;11.03;10.82;10.51;22.81;E;;;;;;;;2MASX J02460989-3013406,ESO 416-019,ESO-LV 416-0190,MCG -05-07-022,PGC 010479;;; -NGC1098;G;02:44:53.67;-17:39:32.9;Eri;1.58;1.27;103;13.62;;10.61;9.89;9.61;23.43;E-S0;;;;;;;;2MASX J02445363-1739330,ESO 546-014,ESO-LV 546-0140,MCG -03-08-008,PGC 010403;;; -NGC1099;G;02:45:18.02;-17:42:30.1;Eri;2.10;0.63;16;13.98;;10.78;10.05;9.85;23.59;SBb;;;;;;;;2MASX J02451802-1742301,ESO 546-015,ESO-LV 546-0150,IRAS 02429-1754,MCG -03-08-011,PGC 010422;;; -NGC1100;G;02:45:36.07;-17:41:20.2;Eri;1.64;0.76;60;14.03;;10.74;10.04;9.72;23.48;Sa;;;;;;;;2MASX J02453607-1741201,ESO 546-018,ESO-LV 546-0180,MCG -03-08-016,PGC 010438;;; -NGC1101;G;02:48:14.83;+04:34:40.9;Cet;1.33;1.05;100;14.80;;10.76;10.09;9.79;23.36;S0;;;;;;;;2MASX J02481480+0434411,MCG +01-08-003,PGC 010613,UGC 02278;;; -NGC1102;G;02:47:12.90;-22:12:31.8;Eri;0.89;0.58;90;15.30;;12.17;11.34;11.20;23.48;SABa;;;;;;;;2MASX J02471288-2212317,ESO 546-019,ESO-LV 546-0190,MCG -04-07-041,PGC 010545;;SGC claims = NGC 1102.; -NGC1103;G;02:48:06.00;-13:57:33.2;Eri;2.22;0.63;47;13.50;;11.45;10.83;10.51;23.21;SBb;;;;;;;;2MASX J02480598-1357332,IRAS 02457-1410,MCG -02-08-005,PGC 010597;;; -NGC1104;G;02:48:38.69;-00:16:17.5;Cet;1.04;0.62;150;14.80;;11.47;10.76;10.45;23.34;Sa;;;;;;;;2MASX J02483872-0016169,IRAS 02461-0028,MCG +00-08-019,PGC 010634,SDSS J024838.69-001617.4,SDSS J024838.69-001617.5,UGC 02287;;; -NGC1105;G;02:43:41.98;-15:42:20.1;Cet;0.97;0.83;66;15.00;;11.54;10.87;10.50;23.59;Sb;;;;;;1840;;2MASX J02434199-1542196,MCG -03-08-004,PGC 010333;;; -NGC1106;G;02:50:40.51;+41:40:17.4;Per;1.82;1.82;35;13.70;;10.24;9.51;9.21;23.71;S0;;;;;;;;2MASX J02504052+4140171,IRAS 02474+4127,MCG +07-06-076,PGC 010792,UGC 02322;;; -NGC1107;G;02:49:19.61;+08:05:33.5;Cet;1.88;1.56;140;14.10;;9.51;8.72;8.45;23.59;S0;;;;;;;;2MASX J02491961+0805334,MCG +01-08-006,PGC 010683,UGC 02307;;HOLM 063B is a star.; -NGC1108;G;02:48:38.54;-07:57:04.0;Eri;1.04;0.77;85;14.51;;11.38;10.60;10.33;23.52;E-S0;;;;;;;;2MASX J02483851-0757036,PGC 010633,SDSS J024838.52-075704.0,SDSS J024838.53-075703.9,SDSS J024838.53-075704.0,SDSS J024838.54-075704.0;;; -NGC1109;G;02:47:43.58;+13:15:19.2;Ari;0.81;0.67;116;15.40;;11.27;10.58;10.25;23.68;E;;;;;;1846;;2MASX J02474359+1315189,MCG +02-08-006,PGC 010573,UGC 02265;;Identification as NGC 1109 is uncertain.; -NGC1110;G;02:49:09.57;-07:50:15.2;Eri;2.37;0.46;11;16.11;;;;13.50;23.71;SBm;;;;;;;;MCG -01-08-010,PGC 010673,SDSS J024909.55-075015.3,SDSS J024909.57-075015.1,UGCA 043;;Confused HIPASS source; -NGC1111;G;02:48:39.35;+13:15:34.3;Ari;0.66;0.32;10;;;12.57;11.78;11.72;23.70;S0-a;;;;;;1850;;2MASX J02483933+1315339,PGC 1426583;;Identification as NGC 1111 is uncertain.; -NGC1112;G;02:49:00.37;+13:13:25.5;Ari;0.99;0.71;11;14.90;;11.89;11.03;10.67;23.27;Sc;;;;;;1852;;2MASX J02490037+1313257,IRAS 02462+1301,MCG +02-08-011,PGC 010660,UGC 02293;;Identification as NGC 1112 is uncertain.; -NGC1113;*;02:50:05.05;+13:19:38.7;Ari;;;;;;;;;;;;;;;;;;;;Identification as NGC 1113 is uncertain.; -NGC1114;G;02:49:07.20;-16:59:36.1;Eri;2.15;0.81;7;13.30;;10.68;10.12;9.74;22.77;Sc;;;;;;;;2MASX J02490719-1659360,IRAS 02467-1712,MCG -03-08-029,PGC 010669;;; -NGC1115;G;02:50:25.38;+13:15:58.4;Ari;0.91;0.26;7;15.60;;12.14;11.39;11.19;23.98;S0;;;;;;;;2MASX J02502539+1315584,MCG +02-08-016,PGC 010774;;; -NGC1116;G;02:50:35.69;+13:20:06.2;Ari;1.20;0.40;26;15.40;;11.66;10.87;10.54;23.81;Sab;;;;;;;;2MASX J02503567+1320063,MCG +02-08-017,PGC 010781,UGC 02326;;; -NGC1117;G;02:51:13.11;+13:11:07.1;Ari;0.70;0.52;4;14.90;;11.65;10.92;10.62;23.20;E;;;;;;;;2MASX J02511308+1311068,MCG +02-08-019,PGC 010822,UGC 02337 NED01;;NGC identification is not certain.; -NGC1118;G;02:49:58.67;-12:09:49.4;Eri;1.97;0.63;92;14.00;;11.33;10.60;10.41;24.38;S0;;;;;;;;2MASX J02495866-1209496,IRAS 02475-1222,MCG -02-08-011,PGC 010748;;; -NGC1119;G;02:48:17.08;-17:59:15.4;Eri;0.48;0.37;172;14.83;;12.96;12.40;12.24;22.20;S0;;;;;;;;2MASX J02481708-1759154,ESO 546-024,ESO-LV 546-0240,IRAS 02459-1811,PGC 010607;;; -NGC1120;G;02:49:04.09;-14:28:14.5;Eri;1.79;0.97;43;15.00;;14.60;13.75;13.72;24.61;E-S0;;;;;;0261;;2MASX J02490407-1428140,MCG -03-08-028,PGC 010664;;; -NGC1121;G;02:50:39.19;-01:44:02.6;Eri;0.95;0.34;10;13.70;;11.00;10.31;10.06;22.21;S0;;;;;;;;2MASX J02503921-0144025,MCG +00-08-030,PGC 010789,UGC 02332;;; -NGC1122;G;02:52:51.20;+42:12:18.1;Per;1.35;0.64;32;13.00;;10.34;9.60;9.33;22.11;SABb;;;;;1123;;;2MASX J02525105+4212194,IRAS 02496+4200,MCG +07-06-083,PGC 010890,UGC 02353;;; -NGC1123;Dup;02:52:51.20;+42:12:18.1;Per;;;;;;;;;;;;;;;1122;;;;;; -NGC1124;G;02:51:35.92;-25:42:06.6;For;1.10;0.74;2;14.88;;12.16;11.32;11.35;23.74;S0-a;;;;;;;;2MASX J02513592-2542067,ESO 480-007,ESO-LV 480-0070,MCG -04-07-047,PGC 010838;;; -NGC1125;G;02:51:40.27;-16:39:03.7;Eri;1.51;0.66;54;13.98;13.13;;;;22.88;S0-a;;;;;;;;IRAS 02493-1651,MCG -03-08-035,PGC 010851;;; -NGC1126;G;02:52:18.63;-01:17:45.6;Cet;0.95;0.23;139;15.40;;11.77;11.03;10.75;23.16;Sb;;;;;;;;2MASX J02521857-0117462,MCG +00-08-038,PGC 010868;;; -NGC1127;G;02:52:51.84;+13:15:23.1;Ari;0.69;0.49;36;15.70;;12.35;11.66;11.27;23.73;SBab;;;;;;;;2MASX J02525187+1315231,MCG +02-08-024,PGC 010889,UGC 02356;;; -NGC1128;GPair;02:57:41.57;+06:01:28.8;Cet;0.80;;;;;;;;;;;;;;;;;MCG +01-08-027;;;Diameter of the group inferred by the author. -NGC1128 NED01;G;02:57:41.65;+06:01:21.9;Cet;0.55;0.55;;14.70;;;;;;E-S0;;;;;;;;MCG +01-08-027 NED01,PGC 011189;;; -NGC1128 NED02;G;02:57:41.56;+06:01:36.9;Cet;0.76;0.76;;15.50;13.93;;;;22.12;E;;;;;;;;2MASX J02574155+0601371,MCG +01-08-027 NED02,PGC 011188;;; -NGC1129;G;02:54:27.38;+41:34:46.5;Per;2.82;1.07;77;14.60;13.60;9.24;8.56;8.24;24.66;E;;;;;;;;2MASX J02542739+4134467,MCG +07-07-004,PGC 010959,UGC 02373;;Incorrectly called 'NGC 1130' in MCG.; -NGC1130;G;02:54:24.38;+41:36:20.2;Per;0.69;0.41;36;15.60;;11.73;10.99;10.66;23.75;E;;;;;;;;2MASX J02542439+4136200,MCG +07-07-002,PGC 010951,UGC 02373 NOTES01;;NGC identification is not certain.; -NGC1131;G;02:54:33.98;+41:33:32.5;Per;0.54;0.46;105;;;11.56;10.80;10.53;;E;;;;;;;;2MASX J02543399+4133327,MCG +07-07-005,PGC 010964;;;Diameters and position angle taken from Simbad. -NGC1132;G;02:52:51.91;-01:16:28.9;Cet;1.91;0.71;142;13.90;;10.20;9.43;11.80;23.50;E;;;;;;;;2MASX J02525180-0116285,MCG +00-08-040,PGC 010891,UGC 02359;;; -NGC1133;G;02:52:42.19;-08:48:15.8;Eri;0.97;0.71;71;15.00;;11.82;11.10;10.79;23.33;SBa;;;;;;;;2MASX J02524218-0848157,IRAS 02502-0900,MCG -02-08-015,PGC 010885,SDSS J025242.18-084815.7,SDSS J025242.18-084815.8,SDSS J025242.19-084815.8;;; -NGC1134;G;02:53:41.34;+13:00:50.9;Ari;2.21;0.76;147;13.20;;9.91;9.06;8.81;23.01;Sb;;;;;;;;2MASX J02534134+1300508,IRAS 02509+1248,MCG +02-08-027,PGC 010928,UGC 02365;;; -NGC1135;G;02:50:47.22;-54:55:46.5;Hor;0.71;0.42;59;16.16;;13.56;12.99;12.56;23.62;Scd;;;;;;;;2MASX J02504722-5455466,ESO 154-018,ESO-LV 154-0180,PGC 010800;;; -NGC1136;G;02:50:53.70;-54:58:33.3;Hor;1.44;1.19;77;13.80;;10.81;10.11;9.81;23.18;Sa;;;;;;;;2MASX J02505366-5458331,ESO 154-019,ESO-LV 154-0190,PGC 010807;;; -NGC1137;G;02:54:02.73;+02:57:43.5;Cet;1.10;0.61;16;13.50;;10.86;10.15;9.95;22.30;Sb;;;;;;;;2MASX J02540274+0257436,IRAS 02514+0245,MCG +00-08-043,PGC 010942,SDSS J025402.71+025743.4,UGC 02374;;; -NGC1138;G;02:56:36.44;+43:02:50.5;Per;1.73;1.49;95;14.10;;9.97;9.27;9.03;23.95;S0;;;;;;;;2MASX J02563643+4302506,MCG +07-07-012,PGC 011118,UGC 02408;;; -NGC1139;G;02:52:46.81;-14:31:45.6;Eri;1.02;0.35;43;15.00;;12.29;11.61;11.28;24.27;S0-a;;;;;;;;2MASX J02524680-1431455,MCG -03-08-038,PGC 010888;;; -NGC1140;G;02:54:33.58;-10:01:39.9;Eri;2.04;1.00;8;12.84;12.49;11.28;10.63;10.51;22.43;SBm;;;;;;;;2MASX J02543354-1001426,IRAS 02521-1013,MCG -02-08-019,PGC 010966;;; -NGC1141;Dup;02:55:09.71;-00:10:40.3;Cet;;;;;;;;;;;;;;;1143;;;;;; -NGC1142;Dup;02:55:12.20;-00:11:00.8;Cet;;;;;;;;;;;;;;;1144;;;;;; -NGC1143;G;02:55:09.71;-00:10:40.3;Cet;1.22;0.68;111;13.20;;;;;23.56;E;;;;;1141;;;MCG +00-08-047,PGC 011007,SDSS J025509.70-001040.3,UGC 02388;;; -NGC1144;G;02:55:12.20;-00:11:00.8;Cet;1.08;0.74;118;15.42;14.41;10.07;9.27;9.02;22.79;E;;;;;1142;;;2MASX J02551226-0011018,IRAS 02526-0023,MCG +00-08-048,PGC 011012,SDSS J025512.22-001100.8,UGC 02389;;; -NGC1145;G;02:54:33.51;-18:38:06.3;Eri;3.36;0.76;61;13.55;;10.36;9.49;9.28;23.83;Sc;;;;;;;;2MASX J02543351-1838064,ESO 546-029,ESO-LV 546-0290,IRAS 02522-1850,MCG -03-08-042,PGC 010965,UGCA 045;;; -NGC1146;Other;02:57:37.34;+46:25:37.0;Per;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC1147;Other;02:55:09.29;-09:07:10.7;Eri;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1148;G;02:57:04.37;-07:41:08.3;Eri;1.31;0.68;75;15.00;;11.88;11.30;10.85;23.65;SBcd;;;;;;;;2MASX J02570434-0741081,MCG -01-08-018,PGC 011148,SDSS J025704.36-074108.3,SDSS J025704.37-074108.3;;Superposed star.; -NGC1149;G;02:57:23.87;-00:18:33.9;Cet;0.71;0.51;122;15.50;;11.77;11.10;10.83;23.11;E-S0;;;;;;;;2MASX J02572383-0018340,MCG +00-08-058,PGC 011170,SDSS J025723.86-001833.8,SDSS J025723.86-001833.9,SDSS J025723.87-001833.8,SDSS J025723.87-001833.9;;; -NGC1150;G;02:57:01.39;-15:02:54.3;Eri;1.06;0.70;64;15.00;;11.24;10.51;10.22;23.87;S0;;;;;;;;2MASX J02570136-1502536,MCG -03-08-048,PGC 011144;;; -NGC1151;G;02:57:04.63;-15:00:46.9;Eri;0.55;0.45;54;15.94;;12.45;11.65;11.32;23.62;E;;;;;;;;2MASX J02570461-1500466,PGC 011147;;; -NGC1152;G;02:57:33.63;-07:45:31.8;Eri;1.30;0.76;5;15.00;;11.31;10.59;10.34;23.59;S0;;;;;;;;2MASX J02573365-0745313,MCG -01-08-019,PGC 011182,SDSS J025733.62-074531.7,SDSS J025733.62-074531.8,SDSS J025733.63-074531.7,SDSS J025733.63-074531.8;;; -NGC1153;G;02:58:10.28;+03:21:42.9;Cet;1.23;0.85;53;13.50;;10.04;9.34;9.07;22.80;S0-a;;;;;;;;2MASX J02581028+0321429,MCG +00-08-059,PGC 011230,UGC 02439;;; -NGC1154;G;02:58:07.67;-10:21:47.9;Eri;1.02;0.59;90;14.40;;11.95;11.26;11.03;22.25;Sc;;;;;;;;2MASX J02580766-1021479,MCG -02-08-034,PGC 011221;;; -NGC1155;G;02:58:13.09;-10:21:02.1;Eri;1.10;0.87;75;15.00;;11.74;11.14;10.83;23.15;S0;;;;;;;;2MASX J02581308-1021019,IRAS 02557-1033,MCG -02-08-035,PGC 011233;;; -NGC1156;G;02:59:42.30;+25:14:16.2;Ari;2.96;2.34;28;12.32;11.74;10.36;9.73;9.55;22.96;IB;;;;;;;;2MASX J02594283+2514282,IRAS 02567+2502,MCG +04-08-006,PGC 011329,UGC 02455;;; -NGC1157;G;02:58:06.68;-15:07:06.7;Eri;0.72;0.32;171;15.58;;12.41;11.64;11.33;23.09;Sb;;;;;;;;2MASX J02580668-1507066,PGC 011218;;; -NGC1158;G;02:57:11.46;-14:23:43.9;Eri;0.95;0.61;147;15.22;;11.99;11.52;11.04;24.32;S0;;;;;;;;2MASX J02571146-1423439,MCG -03-08-049,PGC 011157;;; -NGC1159;G;03:00:46.52;+43:09:45.2;Per;0.48;0.40;115;14.20;;12.15;11.50;11.26;21.19;Sc;;;;;;;;2MASX J03004652+4309451,IRAS 02575+4257,PGC 011383,UGC 02467;;; -NGC1160;G;03:01:13.25;+44:57:19.5;Per;2.38;1.10;51;13.00;;10.75;10.11;9.88;23.47;SBc;;;;;;;;2MASX J03011325+4457195,IRAS 02579+4445,MCG +07-07-014,PGC 011403,UGC 02475;;; -NGC1161;G;03:01:14.13;+44:53:50.4;Per;2.69;1.84;23;13.20;12.08;;;;23.00;S0;;;;;;;;IRAS 02579+4442,MCG +07-07-015,PGC 011404,TYC 2859-727-1,UGC 02474;;; -NGC1162;G;02:58:56.00;-12:23:54.9;Eri;1.59;1.47;50;13.00;;9.94;9.29;9.01;23.69;E;;;;;;;;2MASX J02585601-1223547,MCG -02-08-036,PGC 011274;;; -NGC1163;G;03:00:22.09;-17:09:09.1;Eri;2.26;0.36;144;14.70;;11.30;10.48;10.25;23.88;SBbc;;;;;;;;2MASX J03002208-1709091,IRAS 02580-1720,MCG -03-08-056,PGC 011359;;; -NGC1164;G;03:01:59.85;+42:35:05.8;Per;1.18;0.93;132;14.40;;11.01;10.28;9.87;23.52;Sab;;;;;;;;2MASX J03015983+4235058,IRAS 02587+4223,MCG +07-07-016,PGC 011441,SDSS J030159.84+423505.7,UGC 02490;;; -NGC1165;G;02:58:47.69;-32:05:57.1;For;2.31;0.50;114;13.66;;10.48;10.04;9.74;23.71;SBa;;;;;;;;2MASX J02584767-3205572,ESO 417-008,ESO-LV 417-0080,IRAS 02567-3217,MCG -05-08-009,PGC 011270;;; -NGC1166;G;03:00:35.00;+11:50:34.0;Ari;0.98;0.80;75;15.40;;11.58;10.83;10.59;23.77;Sab;;;;;;;;2MASX J03003500+1150340,IRAS 02579+1138,MCG +02-08-046,PGC 011372,UGC 02471;;; -NGC1167;G;03:01:42.37;+35:12:20.7;Per;1.82;1.38;70;13.84;12.77;9.57;8.84;8.64;23.50;S0;;;;;;;;2MASX J03014235+3512203,MCG +06-07-033,PGC 011425,UGC 02487;;; -NGC1168;G;03:00:47.02;+11:46:20.3;Ari;0.98;0.38;24;15.40;;12.13;11.44;11.20;23.42;SABb;;;;;;;;2MASX J03004701+1146203,MCG +02-08-047,PGC 011378,UGC 02476;;; -NGC1169;G;03:03:34.75;+46:23:10.9;Per;3.31;1.95;39;13.20;;9.09;8.34;8.06;23.32;Sb;;;;;;;;2MASX J03033475+4623107,MCG +08-06-025,PGC 011521,UGC 02503;;; -NGC1170;Other;03:02:26.89;+27:04:21.6;Ari;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1171;G;03:03:58.99;+43:23:53.9;Per;1.77;0.81;147;13.60;;10.68;10.00;9.68;22.83;Sc;;;;;;;;2MASX J03035900+4323537,IRAS 03006+4312,MCG +07-07-018,PGC 011552,TYC 2859-2259-1,UGC 02510;;; -NGC1172;G;03:01:36.05;-14:50:11.7;Eri;2.28;1.64;30;12.87;;10.08;9.40;9.21;23.40;E;;;;;;;;2MASX J03013603-1450118,MCG -03-08-059,PGC 011420;;; -NGC1173;Other;03:03:57.71;+42:23:01.4;Per;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1174;G;03:05:30.86;+42:50:07.8;Per;3.58;1.43;121;12.50;;9.55;8.79;8.49;23.13;SBc;;;;;1186;;;2MASX J03053084+4250076,IRAS 03022+4238,MCG +07-07-021,PGC 011617,UGC 02521;;; -NGC1175;G;03:04:32.35;+42:20:21.5;Per;1.76;0.55;154;13.80;;10.27;9.56;9.24;23.71;S0-a;;;;;;;;2MASX J03043236+4220213,MCG +07-07-019,PGC 011578,UGC 02515;;; -NGC1176;*;03:04:34.88;+42:23:36.4;Per;;;;14.60;;13.13;12.78;12.73;;;;;;;;;;2MASS J03043490+4223363;;; -NGC1177;G;03:04:37.13;+42:21:46.2;Per;0.60;0.60;105;15.70;;11.74;11.02;10.74;23.46;E;;;;;;0281;;2MASX J03043715+4221463,MCG +07-07-020,PGC 011581,UGC 02515 NOTES01;;; -NGC1178;*;03:04:38.82;+42:18:48.5;Per;;;;15.30;;12.08;11.49;11.37;;;;;;;;;;2MASS J03043879+4218485;;; -NGC1179;G;03:02:38.48;-18:53:52.0;Eri;3.67;2.51;38;12.61;;12.10;12.33;12.40;23.90;Sc;;;;;;;;2MASX J03023847-1853518,ESO 547-001,ESO-LV 547-0010,IRAS 03003-1905,MCG -03-08-060,PGC 011480,UGCA 048;;; -NGC1180;G;03:01:51.04;-15:01:47.4;Eri;0.66;0.40;8;15.48;;12.34;11.58;11.40;23.70;E-S0;;;;;;;;2MASX J03015102-1501475,PGC 011435;;; -NGC1181;G;03:01:42.76;-15:03:08.4;Eri;0.86;0.20;101;16.06;;12.46;11.48;11.53;23.73;Sb;;;;;;;;2MASX J03014274-1503085,PGC 011427;;; -NGC1182;G;03:03:28.44;-09:40:13.2;Eri;0.82;0.39;116;14.96;;12.52;11.76;11.47;22.80;Sa;;;;;1205;;;2MASX J03032887-0940166,PGC 011511;;; -NGC1183;*;03:04:46.16;+42:22:08.2;Per;;;;15.00;;12.72;12.35;12.24;;;;;;;;;;2MASS J03044612+4222083;;; -NGC1184;G;03:16:45.03;+80:47:36.0;Cep;3.54;0.87;169;13.58;12.19;9.15;8.45;8.12;24.25;S0-a;;;;;;;;2MASX J03164489+8047358,MCG +13-03-002,PGC 012174,TYC 4520-773-1,UGC 02583;;; -NGC1185;G;03:02:59.48;-09:07:55.7;Eri;1.36;0.40;30;15.00;;11.51;10.75;10.39;23.09;SBb;;;;;;;;2MASX J03025947-0907555,IRAS 03005-0919,MCG -02-08-041,PGC 011488;;; -NGC1186;Dup;03:05:30.86;+42:50:07.8;Per;;;;;;;;;;;;;;;1174;;;;;; -NGC1187;G;03:02:37.59;-22:52:01.8;Eri;4.14;3.02;129;11.41;;8.99;8.40;8.10;22.93;Sc;;;;;;;;2MASX J03023758-2252017,ESO 480-023,ESO-LV 480-0230,IRAS 03003-2303,MCG -04-08-016,PGC 011479,UGCA 049;;; -NGC1188;G;03:03:43.37;-15:29:04.5;Eri;1.21;0.56;171;14.46;;11.65;11.02;10.76;23.80;S0;;;;;;;;2MASX J03034337-1529046,MCG -03-08-068,PGC 011533;;; -NGC1189;G;03:03:24.47;-15:37:24.5;Eri;1.42;0.47;179;13.80;;;;;22.96;Sd;;;;;;;;MCG -03-08-061,PGC 011503;;; -NGC1190;G;03:03:26.13;-15:39:42.8;Eri;0.76;0.29;98;15.32;;11.86;11.22;11.15;23.24;S0-a;;;;;;;;2MASX J03032612-1539429,MCG -03-08-062,PGC 011508;;Position in 1997ApJS..110....1D is 5 arcsec southeast of the nucleus.; -NGC1191;G;03:03:30.89;-15:41:07.1;Eri;0.76;0.56;61;15.60;;11.94;11.31;10.98;23.42;E-S0;;;;;;;;2MASX J03033083-1541069,MCG -03-08-064,PGC 011514;;; -NGC1192;G;03:03:34.63;-15:40:43.8;Eri;0.80;0.40;105;15.68;;12.07;11.54;11.14;23.71;E;;;;;;;;2MASX J03033464-1540439,MCG -03-08-065,PGC 011519;;; -NGC1193;OCl;03:05:55.67;+44:22:59.2;Per;2.40;;;;12.60;;;;;;;;;;;;;MWSC 0256;;; -NGC1194;G;03:03:49.11;-01:06:13.5;Cet;1.55;0.77;139;15.29;14.18;10.75;10.19;9.76;23.50;S0-a;;;;;;;;2MASX J03034909-0106129,IRAS 03012-0117,MCG +00-08-078,PGC 011537,SDSS J030349.10-010613.4,SDSS J030349.11-010613.4,SDSS J030349.11-010613.5,UGC 02514;;; -NGC1195;G;03:03:32.81;-12:02:23.2;Eri;0.64;0.53;84;14.00;;11.93;11.25;11.05;22.97;E-S0;;;;;;;;2MASX J03033280-1202229,MCG -02-08-042a,PGC 011517;;; -NGC1196;G;03:03:35.20;-12:04:34.7;Eri;1.54;1.41;100;14.00;;10.63;9.95;9.62;23.81;S0;;;;;;;;2MASX J03033518-1204349,MCG -02-08-042b,PGC 011522;;; -NGC1197;Other;03:06:14.21;+44:03:40.3;Per;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1198;G;03:06:13.24;+41:50:56.2;Per;2.05;1.00;117;14.00;;10.60;9.94;9.71;24.37;E;;;;;;0282;;2MASX J03061323+4150563,MCG +07-07-024,PGC 011648,UGC 02533;;; -NGC1199;G;03:03:38.41;-15:36:47.5;Eri;2.83;2.32;48;13.99;12.97;9.59;8.86;8.56;23.51;E;;;;;;;;2MASX J03033838-1536486,MCG -03-08-067,PGC 011527;;; -NGC1200;G;03:03:54.48;-11:59:30.5;Eri;2.91;1.88;84;13.00;;9.57;8.85;8.58;24.65;E-S0;;;;;;;;2MASX J03035448-1159306,MCG -02-08-043,PGC 011545;;; -NGC1201;G;03:04:07.98;-26:04:10.7;For;3.41;1.96;8;11.78;10.64;8.55;7.88;7.68;23.08;E-S0;;;;;;;;2MASX J03040796-2604105,ESO 480-028,ESO-LV 480-0280,MCG -04-08-023,PGC 011559;;; -NGC1202;G;03:05:02.53;-06:29:29.8;Eri;0.65;0.53;113;15.37;;12.53;11.92;11.65;22.87;Sb;;;;;;;;2MASX J03050254-0629298,IRAS 03025-0641,PGC 011593,SDSS J030502.12-062931.7,SDSS J030502.12-062931.8,SDSS J030502.52-062929.8;;The SDSS position used in the spec. cat. is not in the SDSS DR6 phot. cat.; -NGC1203A;G;03:05:14.1;-14:22:52;Eri;0.83;0.42;15;15.00;;11.36;10.42;10.53;23.71;E;;;;;;;;2MASX J03051411-1422515,MCG -03-08-070,PGC3442212 ;;; -NGC1203B;G;03:05:14.3;-14:22:40;Eri;0.58;0.58;6;16.00;;;;;;E;;;;;;;;MCG -03-08-071,PGC 011599;;; -NGC1204;G;03:04:39.92;-12:20:29.0;Eri;1.52;0.54;62;15.00;;10.99;10.24;9.95;23.67;S0-a;;;;;;;;2MASX J03043994-1220287,IRAS 03022-1232,MCG -02-08-045,PGC 011583;;; -NGC1205;Dup;03:03:28.44;-09:40:13.2;Eri;;;;;;;;;;;;;;;1182;;;;;; -NGC1206;G;03:06:09.74;-08:49:59.4;Eri;0.75;0.65;42;15.59;;11.83;11.21;10.84;23.91;E;;;;;;;;2MASX J03060977-0849598,PGC 011644;;; -NGC1207;G;03:08:15.49;+38:22:55.8;Per;1.68;1.18;131;13.70;;10.57;9.80;9.48;23.28;Sb;;;;;;;;2MASX J03081551+3822557,IRAS 03050+3811,MCG +06-07-043,PGC 011737,UGC 02548;;; -NGC1208;G;03:06:11.91;-09:32:29.1;Eri;2.19;1.24;73;14.00;;9.70;8.99;8.70;23.63;S0-a;;;;;;;;2MASX J03061191-0932288,MCG -02-08-047,PGC 011647;;; -NGC1209;G;03:06:03.02;-15:36:40.5;Eri;2.25;0.94;83;12.00;;9.25;8.55;8.32;22.91;E;;;;;;;;2MASX J03060302-1536405,MCG -03-08-073,PGC 011638;;; -NGC1210;G;03:06:45.36;-25:42:59.2;For;1.16;0.68;118;13.70;;11.03;10.33;10.08;22.58;S0;;;;;;;;2MASX J03064535-2542594,ESO 480-031,ESO-LV 480-0310,MCG -04-08-024,PGC 011666;;; -NGC1211;G;03:06:52.42;-00:47:40.1;Cet;1.49;0.95;163;13.30;;10.22;9.57;9.24;22.78;S0-a;;;;;;;;2MASX J03065240-0047399,IRAS 03043-0059,MCG +00-08-093,PGC 011670,SDSS J030652.41-004740.1,SDSS J030652.42-004740.1,SDSS J030652.42-004741.3,UGC 02545;;; -NGC1212;G;03:09:42.23;+40:53:35.1;Per;0.89;0.47;21;16.00;;12.11;11.32;11.23;24.17;S0-a;;;;;;1883;;2MASX J03094220+4053349,PGC 011815,UGC 02560;;; -NGC1213;G;03:09:17.31;+38:38:58.0;Per;0.94;0.76;14;15.70;;12.94;12.26;12.31;24.08;Sd;;;;;;1881;;2MASX J03091730+3838577,MCG +06-07-045,PGC 011789,UGC 02557;;; -NGC1214;G;03:06:56.02;-09:32:39.0;Eri;1.58;0.42;42;15.13;;10.89;10.15;9.82;24.58;S0-a;;;;;;;;2MASX J03065595-0932389,MCG -02-08-051,PGC 011675;;; -NGC1215;G;03:07:09.46;-09:35:33.6;Eri;1.67;1.21;50;14.00;;11.11;10.41;10.02;24.63;Sab;;;;;;;;2MASX J03070944-0935334,IRAS 03047-0946,MCG -02-08-055,PGC 011687;;; -NGC1216;G;03:07:18.54;-09:36:46.1;Eri;0.90;0.22;67;16.00;;11.53;10.80;10.55;24.23;S0-a;;;;;;;;2MASX J03071837-0936454,MCG -02-08-056,PGC 011693;;; -NGC1217;G;03:06:06.02;-39:02:11.0;For;1.88;1.30;32;13.34;;10.08;9.37;9.05;23.36;Sa;;;;;;;;2MASX J03060599-3902111,ESO 300-010,ESO-LV 300-0100,IRAS 03041-3913,MCG -07-07-003,PGC 011641;;; -NGC1218;G;03:08:26.22;+04:06:39.3;Cet;1.35;1.06;155;12.84;;10.15;9.40;9.07;23.29;S0-a;;;;;;;;2MASX J03082624+0406388,MCG +01-09-001,PGC 011749,UGC 02555;;; -NGC1219;G;03:08:27.97;+02:06:30.9;Cet;1.18;1.04;42;13.50;;10.82;10.12;9.85;22.80;Sc;;;;;;;;2MASX J03082795+0206308,IRAS 03058+0154,MCG +00-09-006,PGC 011752,UGC 02556;;; -NGC1220;OCl;03:11:40.67;+53:20:53.4;Per;2.40;;;;11.80;;;;;;;;;;;;;MWSC 0261;;; -NGC1221;G;03:08:15.53;-04:15:34.1;Eri;1.46;0.53;168;15.00;;11.05;10.36;10.13;24.01;S0-a;;;;;;;;2MASX J03081551-0415339,MCG -01-09-002,PGC 011739;;; -NGC1222;G;03:08:56.74;-02:57:18.5;Eri;1.57;0.95;153;13.30;;10.85;10.17;9.92;22.84;E-S0;;;;;;;;2MASX J03085674-0257187,IRAS 03064-0308,MCG -01-09-005,PGC 011774;;; -NGC1223;G;03:08:19.93;-04:08:18.2;Eri;1.34;1.29;175;14.06;;10.69;10.01;9.72;23.44;E;;;;;;;;2MASX J03081993-0408180,MCG -01-09-003,PGC 011742;;; -NGC1224;G;03:11:13.55;+41:21:49.3;Per;1.36;1.03;180;15.50;;10.74;9.98;9.68;24.58;E-S0;;;;;;;;2MASX J03111355+4121494,MCG +07-07-034,PGC 011886,UGC 02578;;; -NGC1225;G;03:08:47.22;-04:06:05.6;Eri;1.24;0.60;153;15.00;;11.38;10.70;10.37;23.44;Sbc;;;;;;;;2MASX J03084723-0406057,MCG -01-09-004,PGC 011766;;; -NGC1226;G;03:11:05.35;+35:23:12.6;Per;1.23;0.94;103;14.50;;10.28;9.47;9.21;23.73;E;;;;;;;;2MASX J03110535+3523125,MCG +06-08-001,PGC 011879,UGC 02575;;; -NGC1227;G;03:11:07.73;+35:19:29.5;Per;0.66;0.44;77;15.70;;12.01;11.14;10.97;23.48;S0-a;;;;;;;;2MASX J03110774+3519296,PGC 011880,UGC 02577;;; -NGC1228;G;03:08:11.74;-22:55:22.3;Eri;1.52;0.71;77;14.21;;11.44;10.84;10.59;23.92;S0;;;;;;;;2MASX J03081175-2255223,ESO 480-032,ESO-LV 480-0320,MCG -04-08-026,PGC 011735,UGCA 054;;; -NGC1229;G;03:08:10.79;-22:57:38.9;Eri;1.02;0.60;75;14.87;14.45;12.49;11.85;11.50;23.26;SBbc;;;;;;;;ESO 480-033,ESO-LV 480-0330,IRAS 03059-2309,MCG -04-08-025,PGC 011734,UGCA 053;;; -NGC1230;G;03:08:16.40;-22:59:02.4;Eri;0.69;0.22;110;15.43;;12.49;11.78;11.36;23.36;S0;;;;;;;;2MASX J03081639-2259023,ESO 480-034,ESO-LV 480-0340,MCG -04-08-027,PGC 011743;;; -NGC1231;G;03:06:29.30;-15:34:08.7;Eri;0.98;0.84;90;14.89;;13.61;13.02;12.64;23.49;Sc;;;;;;;;2MASX J03062929-1534088,MCG -03-08-074,PGC 011658;;; -NGC1232;G;03:09:45.51;-20:34:45.5;Eri;6.79;5.77;101;10.67;9.87;8.18;7.78;7.38;23.33;SABc;;;;;;;;2MASX J03094551-2034454,ESO 547-014,ESO-LV 547-0140,IRAS 03074-2045,PGC 011819;;Extended HIPASS source; -NGC1232A;G;03:10:01.9;-20:36:02;Eri;0.85;0.79;2;15.28;;;;;23.60;SBm;;;;;;;;ESO 547-016,ESO-LV 547-0160,MCG -04-08-032,PGC 011834;;; -NGC1233;G;03:12:33.11;+39:19:08.1;Per;1.51;0.46;29;13.90;;10.82;10.11;9.77;22.84;Sb;;;;;1235;;;2MASX J03123310+3919081,IRAS 03093+3907,MCG +06-08-003,PGC 011955,SDSS J031233.07+391908.1,UGC 02586;;Ident as NGC 1235 is uncertain.; -NGC1234;G;03:09:39.09;-07:50:46.3;Eri;1.58;0.82;119;14.40;;15.40;14.49;15.04;24.27;Sc;;;;;;;;2MASX J03093900-0750433,MCG -01-09-011,PGC 011813,SDSS J030939.07-075046.3,SDSS J030939.07-075046.5,SDSS J030939.08-075046.2,SDSS J030939.08-075046.3,SDSS J030939.09-075046.3;;; -NGC1235;Dup;03:12:33.11;+39:19:08.1;Per;;;;;;;;;;;;;;;1233;;;;;; -NGC1236;G;03:11:27.99;+10:48:29.8;Ari;0.66;0.48;30;15.70;;11.36;10.52;10.22;23.64;E;;;;;;;;2MASX J03112797+1048292,PGC 011898;;; -NGC1237;**;03:10:08.97;-08:41:32.4;Eri;;;;;;;;;;;;;;;;;;;;; -NGC1238;G;03:10:52.71;-10:44:53.0;Eri;1.53;1.20;109;14.00;;10.52;9.79;9.56;24.06;E;;;;;;;;2MASX J03105265-1044526,MCG -02-09-010,PGC 011868;;HOLM 067B is a star.; -NGC1239;G;03:10:53.72;-02:33:11.3;Eri;1.23;0.81;59;15.00;;10.75;10.10;9.76;23.78;S0;;;;;;;;2MASX J03105371-0233116,MCG -01-09-012,PGC 011869;;; -NGC1240;**;03:13:26.68;+30:30:25.8;Ari;;;;;;;;;;;;;;;;;;;;; -NGC1241;G;03:11:14.64;-08:55:19.7;Eri;2.70;1.50;149;12.84;11.99;9.76;8.96;8.65;23.44;SBb;;;;;;;;2MASX J03111463-0855197,MCG -02-09-011,PGC 011887;;; -NGC1242;G;03:11:19.32;-08:54:08.7;Eri;1.06;0.54;134;14.32;13.71;12.08;11.37;11.29;22.63;SBc;;;;;;;;2MASX J03111933-0854086,MCG -02-09-012,PGC 011892;;; -NGC1243;**;03:11:25.46;-08:56:43.0;Eri;;;;;;;;;;;;;;;;;;;;; -NGC1244;G;03:06:31.09;-66:46:32.2;Hor;1.44;0.36;2;13.91;;10.55;9.80;9.50;22.69;Sab;;;;;;;;2MASX J03063104-6646320,ESO 082-008,ESO-LV 82-0080,IRAS 03058-6657,PGC 011659;;; -NGC1245;OCl;03:14:41.46;+47:14:19.3;Per;11.40;;;9.16;8.40;;;;;;;;;;;;;MWSC 0264;;; -NGC1246;G;03:07:02.09;-66:56:19.1;Hor;1.42;0.76;36;13.88;;10.88;10.17;9.90;23.50;E;;;;;;;;2MASX J03070209-6656192,ESO 082-009,ESO-LV 82-0090,PGC 011680;;; -NGC1247;G;03:12:14.32;-10:28:52.0;Eri;3.55;0.52;70;13.00;;9.91;9.13;8.82;23.57;Sbc;;;;;;;;2MASX J03121431-1028520,IRAS 03098-1040,MCG -02-09-014,PGC 011931,UGCA 058;;; -NGC1248;G;03:12:48.56;-05:13:28.9;Eri;1.21;1.06;96;13.50;;10.46;9.78;9.53;22.70;S0;;;;;;;;2MASX J03124855-0513288,MCG -01-09-016,PGC 011970;;; -NGC1249;G;03:10:01.23;-53:20:08.7;Hor;3.64;1.44;83;12.16;;10.20;9.70;9.35;22.94;SBc;;;;;;;;2MASX J03100123-5320086,ESO 155-006,ESO-LV 155-0060,IRAS 03085-5331,PGC 011836;;; -NGC1250;G;03:15:21.10;+41:21:19.5;Per;2.33;0.80;158;14.20;;10.59;9.83;9.62;24.48;S0;;;;;;;;2MASX J03152110+4121195,MCG +07-07-040,PGC 012098,UGC 02613;;; -NGC1251;**;03:14:09.11;+01:27:23.5;Cet;;;;;;;;;;;;;;;;;;;;; -NGC1252;OCl;03:10:44.30;-57:45:31.0;Hor;7.20;;;;;;;;;;;;;;;;;ESO 116-011,MWSC 0260;;"Scattered group of about 20 stars; NGC identification is not certain."; -NGC1253;G;03:14:09.05;-02:49:22.6;Eri;4.57;1.86;85;11.80;;10.04;9.44;9.26;23.53;SABc;;;;;;;;2MASX J03140904-0249226,IRAS 03116-0300,MCG -01-09-018,PGC 012041,UGCA 062;;Extended HIPASS source; -NGC1253A;G;03:14:23.3;-02:48:03;Eri;1.01;0.66;90;13.70;;;;;22.62;SBm;;;;;;;;IRAS 03118-0259,MCG -01-09-019,PGC 012053;;; -NGC1254;G;03:14:24.05;+02:40:38.5;Cet;0.98;0.77;12;15.50;;11.06;10.39;10.10;23.93;E-S0;;;;;;;;2MASX J03142387+0240403,MCG +00-09-033,PGC 012052;;; -NGC1255;G;03:13:32.04;-25:43:30.6;For;4.05;2.24;118;11.80;;9.46;9.22;8.38;22.91;SABb;;;;;;;;2MASX J03133204-2543306,ESO 481-013,ESO-LV 481-0130,IRAS 03113-2554,MCG -04-08-050,PGC 012007,UGCA 060;;; -NGC1256;G;03:13:58.27;-21:59:11.1;Eri;1.13;0.41;107;14.40;;11.18;10.44;10.21;23.44;E-S0;;;;;;;;2MASX J03135827-2159111,ESO 547-023,ESO-LV 547-0230,MCG -04-08-052,PGC 012032;;; -NGC1257;**;03:16:59.55;+41:31:44.6;Per;;;;;;13.76;13.50;13.38;;;;;;;;;;2MASS J03165958+4131454;;PGC and RC3 misidentify this with UGC 02621.; -NGC1258;G;03:14:05.47;-21:46:27.4;Eri;1.41;1.04;20;13.98;;12.15;11.77;11.19;23.11;SABc;;;;;;;;2MASX J03140547-2146271,ESO 547-024,ESO-LV 547-0240,MCG -04-08-053,PGC 012034;;; -NGC1259;G;03:17:17.28;+41:23:07.8;Per;0.95;0.68;81;14.20;;11.63;10.79;10.49;23.84;E-S0;;;;;;;;2MASX J03171730+4123072,MCG +07-07-046,PGC 012208,SDSS J031717.27+412307.5;;; -NGC1260;G;03:17:27.24;+41:24:18.8;Per;1.29;0.50;86;14.20;;10.78;10.05;9.73;23.42;S0-a;;;;;;;;2MASX J03172720+4124184,IRAS 03141+4113,MCG +07-07-047,PGC 012219,SDSS J031727.22+412418.7,UGC 02634;;; -NGC1261;GCl;03:12:15.34;-55:13:00.5;Hor;5.10;;;9.79;8.63;;;;;;;;;;;;;2MASX J03121627-5513070,C 087,MWSC 0263;;The 2MASS position is 10.5 arcsec southeast of the core.; -NGC1262;G;03:15:33.58;-15:52:45.5;Eri;0.95;0.80;153;14.00;;12.29;11.70;11.62;23.47;SABc;;;;;;;;2MASX J03153355-1552455,IRAS 03132-1604,MCG -03-09-014,PGC 012107;;; -NGC1263;G;03:15:39.56;-15:05:53.9;Eri;0.86;0.76;70;15.00;;12.41;11.58;11.28;23.39;S0-a;;;;;;;;2MASX J03153955-1505535,MCG -03-09-015,PGC 012114;;; -NGC1264;G;03:17:59.57;+41:31:13.0;Per;1.00;0.89;59;16.00;;11.49;10.74;10.42;23.76;SBab;;;;;;;;2MASX J03175957+4131127,MCG +07-07-050,PGC 012270,UGC 02643;;; -NGC1265;G;03:18:15.66;+41:51:27.9;Per;1.90;1.63;165;14.70;;;;;23.30;E;;;;;;;;MCG +07-07-052,PGC 012287,SDSS J031815.67+415127.9,UGC 02651;;Star superposed just southeast of the nucleus.; -NGC1266;G;03:16:00.75;-02:25:38.5;Eri;1.48;0.99;103;14.00;;10.47;9.88;9.48;23.90;S0;;;;;;;;2MASX J03160074-0225385,IRAS 03134-0236,MCG -01-09-023,PGC 012131;;; -NGC1267;G;03:18:44.92;+41:28:03.8;Per;1.12;0.86;57;15.40;;10.58;9.83;9.60;23.20;E;;;;;;;;2MASX J03184497+4128041,MCG +07-07-055,PGC 012331,UGC 02657;;; -NGC1268;G;03:18:45.16;+41:29:19.3;Per;0.96;0.49;118;14.50;;11.72;11.06;10.81;23.12;SABb;;;;;;;;2MASX J03184515+4129191,MCG +07-07-056,PGC 012332,SDSS J031845.16+412919.5,UGC 02658;;; -NGC1269;G;03:17:18.59;-41:06:29.0;Eri;11.17;9.93;156;9.83;8.81;6.52;5.97;5.66;23.36;S0-a;;;;;1291;;;2MASX J03171859-4106290,ESO 301-002,ESO-LV 301-0020,IRAS 03154-4117,MCG -07-07-008,PGC 012209;;Extended HIPASS source; -NGC1270;G;03:18:58.15;+41:28:12.0;Per;1.05;0.97;0;14.40;;10.47;9.73;9.44;23.21;E;;;;;;;;2MASX J03185814+4128121,MCG +07-07-057,PGC 012350,UGC 02660;;; -NGC1271;G;03:19:11.28;+41:21:11.7;Per;0.81;0.51;123;15.40;;11.45;10.64;10.34;23.38;S0;;;;;;;;2MASX J03191127+4121120,PGC 012367;;; -NGC1272;G;03:19:21.29;+41:29:26.3;Per;2.55;1.25;76;14.50;13.66;9.67;9.00;8.69;23.81;E;;;;;;;;2MASX J03192129+4129261,MCG +07-07-058,PGC 012384,UGC 02662;;; -NGC1273;G;03:19:26.74;+41:32:25.9;Per;0.89;0.70;135;14.70;14.20;10.84;10.14;9.83;;S0;;;;;;;;2MASX J03192672+4132261,MCG +07-07-059,PGC 012396;;;Diameters and position angle taken from Simbad. -NGC1274;G;03:19:40.55;+41:32:55.1;Per;0.78;0.49;44;15.10;;11.52;10.81;10.50;23.41;E;;;;;;;;2MASX J03194053+4132550,MCG +07-07-062,PGC 012413;;CGCG claims NGC 1274 = IC 1907. See CGCG 0316.3+4124. NED follows MCG.; -NGC1275;G;03:19:48.16;+41:30:42.1;Per;2.16;1.45;110;13.10;12.48;9.15;8.49;8.13;23.00;S0;;;;;;;;2MASX J03194823+4130420,C 024,IRAS 03164+4119,MCG +07-07-063,PGC 012429,SDSS J031948.15+413042.1,UGC 02669;Perseus A;; -NGC1276;**;03:19:51.21;+41:38:31.1;Per;;;;;;;;;;;;;;;;;;;;; -NGC1277;G;03:19:51.49;+41:34:24.7;Per;0.97;0.67;96;14.90;;10.93;10.17;9.81;23.29;S0-a;;;;;;;;2MASX J03195148+4134242,MCG +07-07-064,PGC 012434;;; -NGC1278;G;03:19:54.15;+41:33:48.2;Per;1.43;1.30;90;14.40;14.14;10.19;9.46;9.17;23.25;E;;;;;;1907;;2MASX J03195416+4133482,MCG +07-07-065,PGC 012438,UGC 02670;;; -NGC1279;G;03:19:59.07;+41:28:46.3;Per;0.58;0.39;15;16.00;;11.77;11.05;10.72;24.76;S0;;;;;;;;2MASX J03195907+4128462,PGC 012448;;; -NGC1280;G;03:17:57.07;-00:10:08.7;Cet;0.92;0.69;62;13.90;;11.31;10.65;10.31;22.42;Sc;;;;;;;;2MASX J03175702-0010087,IRAS 03154-0021,MCG +00-09-050,PGC 012262,SDSS J031757.06-001008.6,SDSS J031757.06-001008.7,SDSS J031757.07-001008.6,SDSS J031757.07-001008.7,UGC 02652;;; -NGC1281;G;03:20:06.11;+41:37:48.1;Per;0.78;0.42;68;15.00;;11.12;10.36;10.06;22.81;E;;;;;;;;2MASX J03200610+4137483,MCG +07-07-067,PGC 012458;;; -NGC1282;G;03:20:12.12;+41:22:01.2;Per;1.39;1.07;27;14.30;;10.65;9.90;9.67;23.45;E;;;;;;;;2MASX J03201214+4122012,MCG +07-07-068,PGC 012471,SDSS J032012.10+412201.1,UGC 02675;;; -NGC1283;G;03:20:15.52;+41:23:55.2;Per;0.93;0.79;68;15.60;;11.20;10.42;10.19;23.47;E;;;;;;;;2MASX J03201552+4123552,MCG +07-07-069,PGC 012478,SDSS J032015.52+412355.1,UGC 02676;;; -NGC1284;G;03:17:45.51;-10:17:20.7;Eri;1.87;1.22;15;14.00;;10.82;10.13;9.80;24.43;S0;;;;;;;;2MASX J03174554-1017207,MCG -02-09-022,PGC 012247;;; -NGC1285;G;03:17:53.43;-07:17:52.1;Eri;1.59;0.88;8;13.30;;11.02;10.38;10.15;22.89;Sb;;;;;;;;2MASX J03175341-0717517,IRAS 03154-0728,MCG -01-09-026,PGC 012259,SDSS J031753.42-071752.1,SDSS J031753.43-071752.1;;; -NGC1286;G;03:17:48.53;-07:37:00.7;Eri;0.98;0.79;154;15.00;;11.26;10.51;10.22;23.33;S0;;;;;;;;2MASX J03174849-0737007,MCG -01-09-025,PGC 012250,SDSS J031748.53-073700.6,SDSS J031748.53-073700.7;;; -NGC1287;G;03:18:33.47;-02:43:51.0;Eri;0.76;0.68;40;15.00;;11.74;10.97;10.67;22.89;Sa;;;;;;;;2MASX J03183347-0243510,IRAS 03160-0254,PGC 012310;;; -NGC1288;G;03:17:13.19;-32:34:33.2;For;2.32;1.71;178;12.75;12.11;10.06;9.41;9.24;23.17;SABc;;;;;;;;2MASX J03171317-3234330,ESO 357-013,ESO-LV 357-0130,IRAS 03152-3245,MCG -05-08-025,PGC 012204;;; -NGC1289;G;03:18:49.81;-01:58:24.0;Eri;1.75;1.00;97;13.80;;10.40;9.73;9.50;23.42;S0;;;;;;0314;;2MASX J03184982-0158240,MCG +00-09-054,PGC 012342,UGC 02666;;; -NGC1290;G;03:19:25.17;-13:59:22.6;Eri;0.71;0.52;83;15.81;;12.90;12.29;11.82;23.41;;;;;;;;;2MASX J03192514-1359229,IRAS 03170-1410,PGC 012395;;; -NGC1291;Dup;03:17:18.59;-41:06:29.0;Eri;;;;;;;;;;;;;;;1269;;;;;; -NGC1292;G;03:18:14.89;-27:36:37.2;For;2.93;1.20;9;12.75;;10.13;9.36;9.40;23.17;Sc;;;;;;;;2MASX J03181489-2736371,ESO 418-001,ESO-LV 418-0010,IRAS 03161-2747,MCG -05-08-026,PGC 012285;;; -NGC1293;G;03:21:36.46;+41:23:34.2;Per;0.86;0.86;0;15.00;;10.98;10.23;9.93;23.06;E;;;;;;;;2MASX J03213647+4123340,MCG +07-07-075,PGC 012597;;; -NGC1294;G;03:21:39.96;+41:21:38.0;Per;1.38;1.09;167;15.10;;10.52;9.76;9.49;23.77;E-S0;;;;;;;;2MASX J03213994+4121380,MCG +07-07-076,PGC 012600,UGC 02694;;; -NGC1295;G;03:20:03.30;-13:59:53.7;Eri;0.99;0.53;175;15.00;;11.93;11.24;10.98;23.66;S0-a;;;;;;;;2MASX J03200331-1359537,IRAS 03177-1410,MCG -02-09-030,PGC 012465;;Identification as NGC 1290 in MCG is incorrect.; -NGC1296;G;03:18:49.71;-13:03:44.8;Eri;0.90;0.45;2;14.52;;11.85;11.10;10.69;23.23;SBab;;;;;;;;2MASX J03184969-1303449,IRAS 03164-1314,MCG -02-09-025,PGC 012341;;; -NGC1297;G;03:19:14.22;-19:06:00.0;Eri;2.40;2.01;6;14.97;13.98;9.81;9.18;8.93;23.74;E-S0;;;;;;;;2MASX J03191420-1905597,ESO 547-030,ESO-LV 547-0300,MCG -03-09-017,PGC 012373,TYC 5875-353-1;;; -NGC1298;G;03:20:13.08;-02:06:50.8;Eri;1.04;0.92;68;14.20;;10.84;10.07;9.85;23.84;E;;;;;;;;2MASX J03201308-0206510,MCG +00-09-062,PGC 012473,UGC 02683;;UGC misprints name as 'MCG +00-08-062'.; -NGC1299;G;03:20:09.68;-06:15:43.2;Eri;1.21;0.67;49;13.85;;11.04;10.43;10.11;22.51;SBb;;;;;;;;2MASX J03200968-0615428,IRAS 03176-0626,MCG -01-09-028,PGC 012466,SDSS J032009.53-061542.5,SDSS J032009.68-061543.2;;; -NGC1300;G;03:19:41.08;-19:24:40.9;Eri;5.96;3.06;101;11.16;10.42;8.50;7.77;7.56;23.30;Sbc;;;;;;;;2MASX J03194107-1924408,ESO 547-031,ESO-LV 547-0310,IRAS 03174-1935,MCG -03-09-018,PGC 012412,UGCA 066;;; -NGC1301;G;03:20:35.33;-18:42:55.2;Eri;2.38;0.51;141;14.13;;11.10;10.44;10.11;23.59;SBbc;;;;;;;;2MASX J03203532-1842552,ESO 547-032,ESO-LV 547-0320,IRAS 03183-1853,MCG -03-09-022,PGC 012521;;; -NGC1302;G;03:19:51.18;-26:03:37.6;For;4.27;3.90;170;11.43;;8.72;8.03;7.83;23.46;S0-a;;;;;;;;2MASX J03195121-2603382,ESO 481-020,ESO-LV 481-0200,MCG -04-08-058,PGC 012431;;Confused HIPASS source; -NGC1303;G;03:20:40.79;-07:23:39.9;Eri;1.12;0.80;20;15.00;;11.55;10.76;10.66;23.65;S0;;;;;;;;2MASX J03204079-0723399,MCG -01-09-029,PGC 012527,SDSS J032040.79-072339.9;;; -NGC1304;G;03:21:12.78;-04:35:02.7;Eri;1.33;0.70;59;14.50;;11.16;10.51;10.31;23.87;E-S0;;;;;1307;;;2MASX J03211279-0435023,MCG -01-09-030,PGC 012575;;; -NGC1305;G;03:21:22.97;-02:19:00.6;Eri;1.33;0.94;117;14.80;;10.57;9.91;9.62;22.28;E-S0;;;;;;;;2MASX J03212296-0219007,MCG +00-09-069,PGC 012582,UGC 02697;;; -NGC1306;G;03:21:02.99;-25:30:45.2;For;1.10;0.64;159;13.62;;11.64;11.03;10.69;22.51;Sb;;;;;;;;2MASX J03210298-2530453,ESO 481-023,ESO-LV 481-0230,IRAS 03188-2541,PGC 012559;;; -NGC1307;Dup;03:21:12.78;-04:35:02.7;Eri;;;;;;;;;;;;;;;1304;;;;;; -NGC1308;G;03:22:28.54;-02:45:25.7;Eri;1.15;0.86;88;15.00;;10.97;10.32;9.95;23.70;S0-a;;;;;;;;2MASX J03222854-0245255,MCG -01-09-032,PGC 012643;;; -NGC1309;G;03:22:06.56;-15:24:00.2;Eri;2.39;2.24;175;12.08;;10.06;9.38;9.10;22.54;Sbc;;;;;;;;2MASX J03220655-1524002,IRAS 03197-1534,MCG -03-09-028,PGC 012626,SDSS J032206.55-152359.7;;Confused HIPASS source; -NGC1310;G;03:21:03.43;-37:06:06.1;For;2.11;1.58;98;12.98;12.08;10.77;10.19;9.94;22.69;Sc;;;;;;;;2MASX J03210343-3706060,ESO 357-019,ESO-LV 357-0190,IRAS 03191-3716,MCG -06-08-004,PGC 012569;;FCC position is incorrect.; -NGC1311;G;03:20:06.96;-52:11:07.9;Hor;3.20;0.78;37;13.35;12.93;12.20;11.00;10.92;23.41;SBm;;;;;;;;2MASX J03200694-5211077,ESO 200-007,ESO-LV 200-0070,IRAS 03186-5222,PGC 012460;;; -NGC1312;**;03:23:41.73;+01:11:04.8;Tau;;;;;;;;;;;;;;;;;;;;; -NGC1313;G;03:18:16.05;-66:29:53.7;Ret;11.07;9.14;27;10.06;10.00;8.33;7.71;7.57;23.44;SBcd;;;;;;;;2MASX J03181604-6629537,ESO 082-011,ESO-LV 82-0110,IRAS 03176-6640,PGC 012286;;Extended HIPASS source; -NGC1313A;G;03:20:05.7;-66:42:04;Ret;1.25;0.33;30;14.72;;11.59;10.84;10.62;23.04;SBb;;;;;;;;2MASX J03200570-6642042,ESO 083-001,ESO-LV 83-0010,IRAS 03195-6652,PGC 012457;;; -NGC1314;G;03:22:41.16;-04:11:11.6;Eri;1.47;1.30;51;13.40;;11.94;11.44;10.62;24.26;Scd;;;;;;;;2MASX J03224117-0411115,MCG -01-09-033,PGC 012650;;; -NGC1315;G;03:23:06.59;-21:22:30.6;Eri;1.62;1.35;161;13.46;;10.61;9.85;9.73;23.40;S0-a;;;;;;;;2MASX J03230660-2122307,ESO 548-003,ESO-LV 548-0030,MCG -04-09-002,PGC 012671;;; -NGC1316;G;03:22:41.72;-37:12:29.6;For;13.46;7.71;50;9.15;8.53;6.45;5.87;5.59;23.77;S0;;;;;;;;2MASX J03224178-3712295,ESO 357-022,ESO-LV 357-0220,IRAS 03208-3723,MCG -06-08-005,PGC 012651,Fornax A;Fornax A;; -NGC1316A;G;03:23:37.9;-36:54:14;For;1.04;0.58;63;14.97;;12.04;11.26;10.91;23.07;Sb;;;;;;;;2MASX J03233793-3654143,IRAS 03217-3704,MCG -06-08-008,PGC 012686;;; -NGC1316B;G;03:23:39.6;-36:54:30;For;0.66;0.33;8;15.50;;13.46;12.58;12.42;22.47;Sb;;;;;;;;2MASX J03233959-3654303,MCG -06-08-009,PGC 012687;;; -NGC1316C;G;03:24:58.4;-37:00:34;For;1.47;0.64;84;14.36;;11.84;11.16;10.92;23.79;S0-a;;;;;;;;2MASX J03245846-3700338,ESO 357-027,ESO-LV 357-0270,MCG -06-08-012,PGC 012769;;; -NGC1317;G;03:22:44.29;-37:06:13.3;For;3.10;2.58;69;11.78;11.02;8.65;8.01;7.74;22.96;SABa;;;;;1318;;;2MASX J03224428-3706136,ESO 357-023,ESO-LV 357-0230,IRAS 03208-3716,MCG -06-08-006,PGC 012653;Fornax B;; -NGC1318;Dup;03:22:44.29;-37:06:13.3;For;;;;;;;;;;;;;;;1317;;;;;; -NGC1319;G;03:23:56.46;-21:31:39.8;Eri;1.46;0.71;29;13.88;;11.01;10.33;10.09;23.45;S0;;;;;;;;2MASX J03235645-2131398,ESO 548-006,ESO-LV 548-0060,MCG -04-09-003,PGC 012708;;; -NGC1320;G;03:24:48.70;-03:02:32.2;Eri;1.86;0.68;137;14.00;14.00;10.40;9.72;9.36;23.01;Sa;;;;;;;;2MASX J03244870-0302322,IRAS 03222-0313,MCG -01-09-036,PGC 012756;;; -NGC1321;G;03:24:48.57;-03:00:56.1;Eri;0.97;0.71;88;14.50;;10.85;10.23;10.03;22.73;Sa;;;;;;;;2MASX J03244857-0300562,MCG -01-09-035,PGC 012755;;; -NGC1322;G;03:24:54.71;-02:55:09.2;Eri;1.12;0.80;98;15.00;;10.62;9.97;9.64;23.42;E-S0;;;;;;;;2MASX J03245471-0255092,MCG -01-09-037,PGC 012761;;; -NGC1323;G;03:24:56.08;-02:49:19.5;Eri;0.71;0.29;91;15.48;;12.02;11.33;11.05;23.92;S0;;;;;;;;2MASX J03245604-0249202,PGC 012764;;; -NGC1324;G;03:25:01.68;-05:44:44.9;Eri;2.37;0.69;141;14.00;;10.18;9.47;9.15;23.28;Sb;;;;;;;;2MASX J03250169-0544452,IRAS 03225-0555,MCG -01-09-038,PGC 012772,SDSS J032501.68-054444.8,SDSS J032501.68-054444.9;;; -NGC1325;G;03:24:25.57;-21:32:38.5;Eri;4.32;1.50;53;12.28;11.55;9.49;8.91;8.63;23.36;SBbc;;;;;;;;2MASX J03242556-2132385,ESO 548-007,ESO-LV 548-0070,IRAS 03221-2143,MCG -04-09-004,PGC 012737,UGCA 070;;; -NGC1325A;G;03:24:48.5;-21:20:10;Eri;1.90;1.78;90;13.33;12.83;;;14.03;23.48;Scd;;;;;;;;2MASX J03244827-2120312,ESO 548-010,ESO-LV 548-0100,MCG -04-09-006,PGC 012754;;; -NGC1326;G;03:23:56.40;-36:27:52.8;For;4.28;2.93;67;11.43;10.54;8.36;7.72;7.45;23.26;S0-a;;;;;;;;2MASX J03235639-3627527,ESO 357-026,ESO-LV 357-0260,IRAS 03220-3638,MCG -06-08-011,PGC 012709;;; -NGC1326A;G;03:25:08.5;-36:21:50;For;2.10;1.34;62;13.80;;14.38;13.85;13.56;23.99;Sm;;;;;;;;2MASX J03250876-3621450,ESO 357-028,ESO-LV 357-0280,MCG -06-08-013,PGC 012783;;; -NGC1326B;G;03:25:20.3;-36:23:06;For;3.87;1.88;130;13.08;;;;;24.72;SBm;;;;;;;;ESO 357-029,ESO-LV 357-0290,MCG -06-08-014,PGC 012788;;SGC claims ESO 357-IG 29 (i.e. interacting).; -NGC1327;G;03:25:23.11;-25:40:49.0;For;1.14;0.40;175;15.57;;12.77;12.07;11.65;23.72;SBb;;;;;;;;ESO 481-026,ESO-LV 481-0260,IRAS 03232-2551,MCG -04-09-008,PGC 012795;;"NGC ident is not certain; NGC 1327 may be three Galactic stars."; -NGC1328;G;03:25:39.10;-04:07:29.8;Eri;0.98;0.69;108;14.53;;11.29;10.61;10.33;23.57;S0;;;;;;;;2MASX J03253913-0407297,PGC 012805;;; -NGC1329;G;03:26:02.59;-17:35:29.4;Eri;1.58;1.27;33;13.38;;10.49;9.83;9.58;23.11;Sa;;;;;;;;2MASX J03260258-1735295,ESO 548-015,ESO-LV 548-0150,MCG -03-09-042,PGC 012826;;; -NGC1330;Other;03:29:04.47;+41:40:30.9;Per;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC1331;G;03:26:28.29;-21:21:19.1;Eri;0.92;0.79;11;14.25;;11.54;10.90;10.76;22.97;E;;;;;;0324;;2MASX J03262835-2121203,ESO 548-019,ESO-LV 548-0190,MCG -04-09-012,PGC 012846;;; -NGC1332;G;03:26:17.25;-21:20:06.8;Eri;5.31;3.84;121;11.45;;8.00;7.30;7.05;23.55;E-S0;;;;;;;;2MASX J03261732-2120073,ESO 548-018,ESO-LV 548-0180,IRAS 03240-2130,MCG -04-09-011,PGC 012838,UGCA 072;;; -NGC1333;Cl+N;03:28:55.2;+31:22:12;Per;19.50;;;10.90;;;;;;;;;;;;;;LBN 741,MWSC 0279;;; -NGC1334;G;03:30:01.84;+41:49:55.3;Per;1.24;0.51;118;14.80;;11.06;10.31;9.99;23.48;Sbc;;;;;;;;2MASX J03300186+4149558,IRAS 03266+4139,MCG +07-08-018,PGC 013001,UGC 02759;;; -NGC1335;G;03:30:19.49;+41:34:21.9;Per;0.90;0.50;168;15.70;;10.98;10.22;9.85;23.96;E-S0;;;;;;;;2MASX J03301948+4134218,MCG +07-08-019,PGC 013015,UGC 02762;;; -NGC1336;G;03:26:32.19;-35:42:48.8;For;1.97;1.41;15;13.12;;10.75;10.11;9.81;23.36;E-S0;;;;;;;;2MASX J03263219-3542488,ESO 358-002,ESO-LV 358-0020,MCG -06-08-016,PGC 012848;;; -NGC1337;G;03:28:05.96;-08:23:19.0;Eri;4.94;1.31;153;12.53;;10.12;9.47;9.22;23.54;SBc;;;;;;;;2MASX J03280595-0823190,IRAS 03256-0833,MCG -02-09-042,PGC 012916;;; -NGC1338;G;03:28:54.55;-12:09:12.1;Eri;1.31;1.24;165;13.72;;11.00;10.33;10.01;23.06;SABb;;;;;;;;2MASX J03285455-1209120,IRAS 03265-1219,MCG -02-09-044,PGC 012956;;; -NGC1339;G;03:28:06.58;-32:17:10.0;For;2.01;1.47;172;12.63;;9.59;8.95;8.69;22.89;E;;;;;;;;2MASX J03280658-3217101,ESO 418-004,ESO-LV 418-0040,MCG -05-09-004,PGC 012917;;; -NGC1340;G;03:28:19.67;-31:04:05.4;For;5.12;3.12;167;11.20;10.32;8.24;7.62;7.40;23.60;E;;;;;1344;;;2MASX J03281966-3104054,ESO 418-005,ESO-LV 418-0050,MCG -05-09-005,PGC 012923;;; -NGC1341;G;03:27:58.42;-37:09:00.0;For;1.42;1.07;121;12.86;;10.76;10.09;9.84;22.28;Sa;;;;;;;;2MASX J03275843-3708598,ESO 358-008,ESO-LV 358-0080,IRAS 03260-3719,MCG -06-08-020,PGC 012911;;; -NGC1342;OCl;03:31:40.12;+37:22:45.8;Per;6.30;;;7.35;6.70;;;;;;;;;;;;;MWSC 0283;;; -NGC1343;G;03:37:49.70;+72:34:16.8;Cam;2.38;1.06;79;14.10;;9.77;8.98;8.69;23.71;SABb;;;;;;;;2MASX J03374965+7234168,IRAS 03324+7224,MCG +12-04-001,PGC 013384,UGC 02792;;One of two 6cm sources associated with [WB92] 0331+7221; -NGC1344;Dup;03:28:19.67;-31:04:05.4;For;;;;;;;;;;;;;;;1340;;;;;; -NGC1345;G;03:29:31.69;-17:46:42.2;Eri;1.34;1.10;30;13.67;;11.83;11.18;11.14;23.54;Sc;;;;;;;;2MASX J03293169-1746420,ESO 548-026,ESO-LV 548-0260,IRAS 03272-1756,MCG -03-09-046,PGC 012979,UGCA 074;;; -NGC1346;G;03:30:13.27;-05:32:35.9;Eri;1.44;0.54;84;17.06;16.39;10.81;10.06;9.79;22.75;Sb;;;;;;;;2MASX J03301327-0532363,IRAS 03277-0542,MCG -01-09-042,PGC 013009,SDSS J033013.26-053235.9,SDSS J033013.26-053236.0,SDSS J033013.27-053235.9;;; -NGC1347;GPair;03:29:41.50;-22:17:06.0;Eri;1.80;;;;;;;;;;;;;;;;;MCG -04-09-017;;;Diameter of the group inferred by the author. -NGC1347 NED01;G;03:29:41.80;-22:16:44.9;Eri;0.98;0.93;81;13.74;;;;;23.14;Sc;;;;;;;;ESO 548-027,ESO-LV 548-0270,MCG -04-09-017 NED01,PGC 012989;;; -NGC1347 NED02;G;03:29:41.19;-22:17:27.6;Eri;0.56;0.38;42;16.05;;13.84;13.03;13.07;23.69;;;;;;;;;2MASXJ03294116-2217277,MCG -04-09-017 NED02,PGC 816443;;;B-Mag taken from LEDA -NGC1348;OCl;03:34:08.49;+51:25:13.9;Per;3.60;;;;;;;;;;;;;;;;;MWSC 0289;;; -NGC1349;G;03:31:27.50;+04:22:51.0;Tau;0.91;0.91;40;15.00;;10.76;10.11;9.73;22.77;S0;;;;;;;;2MASX J03312754+0422511,MCG +01-09-006,PGC 013088,UGC 02774;;; -NGC1350;G;03:31:08.12;-33:37:43.1;For;5.18;2.60;11;11.20;10.52;8.27;7.63;7.40;23.06;Sab;;;;;;;;2MASX J03310811-3337431,ESO 358-013,ESO-LV 358-0130,IRAS 03291-3347,MCG -06-08-023,PGC 013059;;; -NGC1351;G;03:30:34.98;-34:51:14.2;For;3.40;2.20;139;12.30;;9.61;8.97;8.79;23.82;E-S0;;;;;;;;2MASX J03303498-3451142,ESO 358-012,ESO-LV 358-0120,MCG -06-08-022,PGC 013028;;; -NGC1351A;G;03:28:48.7;-35:10:41;For;2.49;0.65;129;14.21;;11.66;10.93;10.66;23.50;SBbc;;;;;;;;2MASX J03284871-3510413,ESO 358-009,ESO-LV 358-0090,MCG -06-08-021,PGC 012952;;The APM position is southeast of the center of the galaxy.; -NGC1352;G;03:31:32.98;-19:16:42.4;Eri;1.15;0.75;128;14.16;;11.51;10.90;10.61;23.32;S0;;;;;;;;2MASX J03313296-1916424,ESO 548-030,ESO-LV 548-0300,MCG -03-10-002,PGC 013091;;; -NGC1353;G;03:32:03.02;-20:49:09.0;Eri;3.64;1.47;138;12.19;11.35;9.08;8.37;8.11;23.25;Sb;;;;;;;;2MASX J03320302-2049089,ESO 548-031,ESO-LV 548-0310,IRAS 03298-2059,MCG -04-09-022,PGC 013108,UGCA 076;;; -NGC1354;G;03:32:29.37;-15:13:16.1;Eri;2.62;0.97;148;13.28;;9.85;9.18;8.93;23.88;S0-a;;;;;;;;2MASX J03322936-1513159,MCG -03-10-004,PGC 013130;;; -NGC1355;G;03:33:23.50;-04:59:55.3;Eri;1.73;0.31;77;15.00;;10.95;10.28;10.01;23.95;S0;;;;;;;;2MASX J03332351-0459554,MCG -01-10-002,PGC 013169;;; -NGC1356;G;03:30:40.79;-50:18:34.6;Hor;1.17;1.02;167;14.05;;11.19;10.56;10.19;22.81;Sbc;;;;;;;;2MASX J03304076-5018346,ESO 200-031,ESO-LV 200-0310,IRAS 03291-5028,PGC 013035;;; -NGC1357;G;03:33:17.08;-13:39:50.9;Eri;3.37;2.55;76;12.44;;9.29;8.66;8.42;23.60;Sab;;;;;;;;2MASX J03331709-1339509,IRAS 03309-1349,MCG -02-10-001,PGC 013166;;; -NGC1358;G;03:33:39.67;-05:05:21.8;Eri;2.13;1.17;125;14.10;13.05;9.89;9.23;8.95;23.42;S0-a;;;;;;;;2MASX J03333970-0505224,MCG -01-10-003,PGC 013182;;; -NGC1359;G;03:33:47.71;-19:29:31.4;Eri;1.46;1.21;109;12.61;;11.85;11.24;11.17;22.11;Sm;;;;;;;;2MASX J03334769-1929310,ESO 548-039,ESO-LV 548-0390,IRAS 03315-1939,MCG -03-10-007,PGC 013190;;; -NGC1360;PN;03:33:14.65;-25:52:18.2;For;6.42;;;9.60;9.40;12.08;12.29;12.37;;;9.64;10.96;11.35;;;;HIP 016566,TYC 6450-01071-1;ESO 482-007,IRAS 03311-2601,PN G220.3-53.9;;; -NGC1361;G;03:34:17.74;-06:15:54.0;Eri;1.24;0.84;44;13.78;;11.18;10.44;10.36;23.77;E-S0;;;;;;;;2MASX J03341772-0615541,MCG -01-10-005,PGC 013218,SDSS J033417.74-061553.9,SDSS J033417.74-061554.0;;MCG misidentifies this as NGC 1369.; -NGC1362;G;03:33:53.08;-20:16:57.5;Eri;1.30;1.17;20;13.53;;11.03;10.41;10.22;23.10;S0;;;;;;;;2MASX J03335307-2016567,ESO 548-041,ESO-LV 548-0410,MCG -03-10-008,PGC 013196;;Star (or compact companion?) superposed 10 arcsec south of the nucleus.; -NGC1363;G;03:34:49.57;-09:50:32.9;Eri;0.90;0.76;90;13.96;;11.74;11.09;10.67;;Sbc;;;;;;;;2MASX J03344957-0950332,IRAS 03324-1000,PGC 013245;;; -NGC1364;G;03:34:58.98;-09:50:19.1;Eri;0.57;0.51;127;15.43;;13.24;12.61;12.46;22.78;Scd;;;;;;;;2MASX J03345898-0950192,PGC 013253;;; -NGC1365;G;03:33:36.37;-36:08:25.4;For;12.02;6.14;20;10.08;9.63;7.36;6.74;6.37;24.01;Sb;;;;;;;;2MASX J03333645-3608263,ESO 358-017,ESO-LV 358-0170,IRAS 03317-3618,MCG -06-08-026,PGC 013179;;Extended HIPASS source; -NGC1366;G;03:33:53.68;-31:11:38.8;For;2.05;0.94;4;12.94;;9.91;9.21;9.01;23.04;S0;;;;;;;;2MASX J03335365-3111387,ESO 418-010,ESO-LV 418-0100,MCG -05-09-013,PGC 013197;;; -NGC1367;G;03:35:01.34;-24:55:59.6;For;4.88;3.26;134;11.48;;8.56;7.91;7.63;23.57;Sa;;;;;1371;;;2MASX J03350132-2455598,2MASX J03350135-2455591,ESO 482-010,ESO-LV 482-0100,MCG -04-09-029,PGC 013255,UGCA 079;;; -NGC1368;G;03:34:58.90;-15:39:21.3;Eri;1.15;0.49;119;15.00;;11.69;10.91;10.70;24.11;S0-a;;;;;;;;2MASX J03345890-1539218,MCG -03-10-012,PGC 013247;;; -NGC1369;G;03:36:45.25;-36:15:22.4;Eri;2.22;1.73;9;13.77;;11.26;10.59;10.73;24.02;S0-a;;;;;;;;2MASX J03364524-3615223,ESO 358-034,ESO-LV 358-0340,MCG -06-09-004,PGC 013330;;This is ESO 358- G034 with a 3 minute RA error.; -NGC1370;G;03:35:14.57;-20:22:25.2;Eri;1.49;0.85;50;13.44;;10.72;10.11;9.87;23.24;E;;;;;;;;2MASX J03351457-2022250,ESO 548-048,ESO-LV 548-0480,IRAS 03330-2032,MCG -03-10-013,PGC 013265;;; -NGC1371;Dup;03:35:01.34;-24:55:59.6;For;;;;;;;;;;;;;;;1367;;;;;; -NGC1372;G;03:36:59.74;-15:52:53.3;Eri;0.70;0.65;50;15.14;;11.71;11.00;10.73;23.39;E;;;;;;;;2MASX J03365971-1552530,PGC 013346;;; -NGC1373;G;03:34:59.21;-35:10:16.0;For;1.20;1.14;110;14.03;13.26;11.43;10.77;10.59;23.38;E;;;;;;;;2MASX J03345920-3510162,ESO 358-021,ESO-LV 358-0210,MCG -06-08-028,PGC 013252;;; -NGC1374;G;03:35:16.59;-35:13:34.5;For;2.86;2.65;120;11.97;11.08;9.05;8.36;8.16;23.16;E;;;;;;;;2MASX J03351659-3513345,ESO 358-023,ESO-LV 358-0230,MCG -06-08-029,PGC 013267;;; -NGC1375;G;03:35:16.82;-35:15:56.4;For;2.28;1.00;90;13.02;12.40;10.52;9.89;9.61;23.65;S0;;;;;;;;2MASX J03351683-3515564,ESO 358-024,ESO-LV 358-0240,MCG -06-08-030,PGC 013266;;; -NGC1376;G;03:37:05.92;-05:02:33.9;Eri;1.86;1.79;30;12.90;;10.70;10.12;9.80;22.95;Sc;;;;;;;;2MASX J03370592-0502339,IRAS 03346-0512,MCG -01-10-011,PGC 013352;;; -NGC1377;G;03:36:39.08;-20:54:08.1;Eri;2.07;0.95;92;13.38;;10.62;9.95;9.72;23.77;S0;;;;;;;;2MASX J03363907-2054081,ESO 548-051,ESO-LV 548-0510,IRAS 03344-2103,MCG -04-09-033,PGC 013324;;; -NGC1378;**;03:35:58.20;-35:12:40.2;For;;;;;;;;;;;;;;;;;;;;; -NGC1379;G;03:36:03.95;-35:26:28.3;For;2.66;2.55;65;12.04;10.91;9.08;8.45;8.24;22.84;E;;;;;;;;2MASX J03360393-3526282,ESO 358-027,ESO-LV 358-0270,MCG -06-09-001,PGC 013299;;; -NGC1380;G;03:36:27.59;-34:58:34.4;For;4.58;2.22;6;10.94;9.93;7.77;7.13;6.87;22.90;S0;;;;;;;;2MASX J03362757-3458335,2MASX J03362759-3458346,ESO 358-028,ESO-LV 358-0280,IRAS 03345-3508,MCG -06-09-002,PGC 013318;;; -NGC1380A;G;03:36:47.5;-34:44:23;For;2.76;0.78;176;13.36;12.41;10.52;9.84;9.57;24.15;S0;;;;;;;;2MASX J03364747-3444225,ESO 358-033,ESO-LV 358-0330,MCG -06-09-006,PGC 013335;;; -NGC1380B;Dup;03:37:08.96;-35:11:42.1;For;;;;;;;;;;;;;;;1382;;;;;; -NGC1381;G;03:36:31.68;-35:17:42.7;For;2.54;0.96;139;12.47;11.50;9.33;8.65;8.42;23.12;S0;;;;;;;;2MASX J03363170-3517425,ESO 358-029,ESO-LV 358-0290,MCG -06-09-003,PGC 013321;;; -NGC1382;G;03:37:08.96;-35:11:42.1;For;1.99;1.36;23;13.79;12.92;10.89;10.29;10.04;24.02;E-S0;;;;;1380B;;;2MASX J03370895-3511420,ESO 358-037,ESO-LV 358-0370,MCG -06-09-009,PGC 013354;;; -NGC1383;G;03:37:39.24;-18:20:22.1;Eri;2.00;0.82;85;13.45;12.47;10.33;9.62;9.44;23.67;S0;;;;;;;;2MASX J03373925-1820220,ESO 548-053,ESO-LV 548-0530,MCG -03-10-015,PGC 013377;;; -NGC1384;G;03:39:13.59;+15:49:10.4;Tau;0.76;0.46;151;15.60;;12.21;11.45;11.20;23.40;SBc;;;;;;;;2MASX J03391359+1549107,IRAS 03364+1539,MCG +03-10-003,PGC 013448;;The 2MASS position is 4 arcsec south of the nucleus.; -NGC1385;G;03:37:28.85;-24:30:01.1;For;3.40;2.13;3;11.50;10.94;9.46;8.80;8.57;22.46;Sc;;;;;;;;2MASX J03372832-2430046,ESO 482-016,ESO-LV 482-0160,IRAS 03353-2439,MCG -04-09-036,PGC 013368;;; -NGC1386;G;03:36:46.18;-35:59:57.9;Eri;3.59;1.35;25;12.16;11.23;8.98;8.32;8.07;23.50;S0-a;;;;;;;;2MASX J03364623-3559573,ESO 358-035,ESO-LV 358-0350,IRAS 03348-3609,MCG -06-09-005,PGC 013333;;; -NGC1387;G;03:36:57.06;-35:30:23.9;For;3.01;2.89;110;11.75;10.69;8.44;7.76;7.43;22.92;E-S0;;;;;;;;2MASX J03365707-3530240,ESO 358-036,ESO-LV 358-0360,IRAS 03350-3540,MCG -06-09-007,PGC 013344;;; -NGC1388;G;03:38:12.01;-15:53:57.9;Eri;0.85;0.80;150;14.79;;11.84;11.15;10.84;23.36;E;;;;;;;;2MASX J03381201-1553583,IRAS 03358-1603,PGC 013402;;; -NGC1389;G;03:37:11.78;-35:44:44.1;Eri;2.58;1.43;28;12.39;11.50;9.48;8.86;8.63;23.19;E-S0;;;;;;;;2MASX J03371173-3544461,ESO 358-038,ESO-LV 358-0380,MCG -06-09-010,PGC 013360;;; -NGC1390;G;03:37:52.17;-19:00:30.1;Eri;1.45;0.51;21;14.63;;12.43;11.80;11.54;24.09;S0-a;;;;;;;;2MASX J03375216-1900300,ESO 548-054,ESO-LV 548-0540,MCG -03-10-017,PGC 013386;;; -NGC1391;G;03:38:52.96;-18:21:14.8;Eri;1.21;0.61;65;14.25;13.34;11.16;10.46;10.22;23.49;S0;;;;;;;;2MASX J03385297-1821146,ESO 548-059,ESO-LV 548-0590,MCG -03-10-020,PGC 013436;;; -NGC1392;G;03:37:47.01;-36:08:50.7;Eri;0.30;0.21;35;16.88;;14.78;14.26;13.78;22.78;Sc;;;;;;;;2MASX J03374699-3608507,ESO 358-040,ESO-LV 358-0400,PGC 013383;;Identification as NGC 1392 is very uncertain.; -NGC1393;G;03:38:38.58;-18:25:40.7;Eri;1.88;1.22;161;13.00;12.02;10.08;9.38;9.18;23.11;S0;;;;;;;;2MASX J03383857-1825407,ESO 548-058,ESO-LV 548-0580,MCG -03-10-019,PGC 013425;;; -NGC1394;G;03:39:06.92;-18:17:32.2;Eri;1.51;0.59;5;13.66;12.81;10.64;9.94;9.71;23.40;S0;;;;;;;;2MASX J03390692-1817319,ESO 548-060,ESO-LV 548-0600,MCG -03-10-021,PGC 013444;;; -NGC1395;G;03:38:29.75;-23:01:39.1;Eri;4.71;3.97;105;10.71;;7.83;7.16;6.89;22.83;E;;;;;;;;2MASX J03382978-2301396,ESO 482-019,ESO-LV 482-0190,MCG -04-09-039,PGC 013419;;; -NGC1396;G;03:38:06.54;-35:26:24.4;For;0.92;0.54;90;14.80;;12.74;12.25;11.71;23.34;E-S0;;;;;;;;2MASX J03380658-3526237,PGC 013398;;This is FCC 202 with a 15 arcmin error in Dec.; -NGC1397;G;03:39:47.15;-04:40:12.4;Eri;0.96;0.68;172;14.50;;11.39;10.74;10.39;23.19;S0-a;;;;;;;;2MASX J03394713-0440121,MCG -01-10-017,PGC 013485;;; -NGC1398;G;03:38:52.13;-26:20:16.2;For;6.95;4.91;100;10.37;;7.40;6.78;6.50;23.28;SBab;;;;;;;;2MASX J03385213-2620162,ESO 482-022,ESO-LV 482-0220,IRAS 03367-2629,MCG -04-09-040,PGC 013434;;; -NGC1399;G;03:38:29.03;-35:27:02.4;For;8.51;7.69;150;9.74;9.59;7.21;6.56;6.31;23.95;E;;;;;;;;2MASX J03382908-3527026,ESO 358-045,ESO-LV 358-0450,MCG -06-09-012,PGC 013418;;; -NGC1400;G;03:39:30.84;-18:41:17.1;Eri;2.81;2.52;43;12.01;10.96;8.75;8.04;7.81;23.05;E;;;;;;;;2MASX J03393085-1841172,ESO 548-062,ESO-LV 548-0620,IRAS 03372-1850,MCG -03-10-022,PGC 013470;;; -NGC1401;G;03:39:21.85;-22:43:28.9;Eri;2.45;0.90;132;13.32;;10.26;9.60;9.35;23.72;S0;;;;;;;;2MASX J03392185-2243289,ESO 482-026,ESO-LV 482-0260,MCG -04-09-042,PGC 013457;;; -NGC1402;G;03:39:30.57;-18:31:37.0;Eri;0.87;0.83;90;13.96;;11.36;10.58;10.32;22.77;S0;;;;;;;;2MASX J03393058-1831372,ESO 548-061,ESO-LV 548-0610,IRAS 03372-1841,MCG -03-10-023,PGC 013467;;; -NGC1403;G;03:39:10.84;-22:23:19.5;Eri;1.52;1.34;165;13.86;;10.77;10.10;9.82;23.30;E-S0;;;;;;;;2MASX J03391087-2223189,ESO 482-025,ESO-LV 482-0250,MCG -04-09-041,PGC 013445;;; -NGC1404;G;03:38:51.92;-35:35:39.8;For;5.01;4.38;163;10.69;10.00;7.77;7.09;6.82;23.26;E;;;;;;;;2MASX J03385191-3535398,ESO 358-046,ESO-LV 358-0460,MCG -06-09-013,PGC 013433;;; -NGC1405;G;03:40:18.93;-15:31:48.7;Eri;1.60;0.45;152;16.00;;12.12;11.52;11.22;24.70;S0;;;;;;;;2MASX J03401891-1531487,MCG -03-10-028,PGC 013512;;; -NGC1406;G;03:39:23.30;-31:19:17.1;For;4.50;0.90;17;12.42;;9.66;8.92;8.61;23.20;SBbc;;;;;;;;2MASX J03392331-3119170,ESO 418-015,ESO-LV 418-0150,IRAS 03373-3129,MCG -05-09-020,PGC 013458,UGCA 083;;; -NGC1407;G;03:40:11.86;-18:34:48.4;Eri;5.73;5.27;60;10.64;9.67;7.64;6.99;6.70;23.36;E;;;;;;;;2MASX J03401190-1834493,ESO 548-067,ESO-LV 548-0670,MCG -03-10-030,PGC 013505;;; -NGC1408;**;03:39:17.28;-35:30:03.0;For;;;;;;;;;;;;;;;;;;;;Identification as NGC 1408 is very uncertain.; -NGC1409;G;03:41:10.43;-01:18:09.2;Eri;0.82;0.64;130;14.70;;10.79;9.93;9.64;23.19;S0;;;;;;;;2MASX J03411054-0118101,MCG +00-10-011,PGC 013553,UGC 02821 NED01;;; -NGC1410;G;03:41:10.75;-01:17:55.6;Eri;1.17;0.62;99;16.06;15.22;;;;24.28;E;;;;;;;;MCG +00-10-012,PGC 013556,UGC 02821 NED02;;; -NGC1411;G;03:38:44.87;-44:06:02.2;Hor;2.45;1.76;12;12.06;;9.02;8.35;8.15;22.86;E-S0;;;;;;1943;;2MASX J03384485-4406022,ESO 249-011,ESO-LV 249-0110,MCG -07-08-004,PGC 013429;;This is most likely NGC 1411 with 9 minute RA error in IC position.; -NGC1412;G;03:40:29.37;-26:51:44.1;For;1.06;0.45;133;13.54;13.13;10.50;9.85;9.63;22.57;S0;;;;;;1981;;2MASX J03402936-2651441,ESO 482-029,ESO-LV 482-0290,MCG -05-09-021,PGC 013520,TYC 6450-335-1;;NGC 1412 is IC 1981 with a 40 arcmin error in Dec.; -NGC1413;G;03:40:11.55;-15:36:38.8;Eri;0.90;0.77;52;14.95;;11.62;10.86;10.59;23.89;E;;;;;;;;2MASX J03401157-1536380,PGC 013504;;; -NGC1414;G;03:40:57.04;-21:42:47.3;Eri;1.71;0.36;170;14.65;;12.87;12.38;11.99;23.43;SBbc;;;;;;;;ESO 548-071,ESO-LV 548-0710,MCG -04-09-045,PGC 013543;;; -NGC1415;G;03:40:56.86;-22:33:52.1;Eri;3.74;1.51;141;12.47;;9.29;8.58;8.29;23.94;S0-a;;;;;;1983;;2MASX J03405685-2233520,ESO 482-033,ESO-LV 482-0330,IRAS 03387-2243,MCG -04-09-047,PGC 013544;;; -NGC1416;G;03:41:02.89;-22:43:08.8;Eri;1.50;1.01;172;13.95;;11.45;10.79;10.54;23.89;E;;;;;;;;2MASX J03410288-2243090,ESO 482-034,ESO-LV 482-0340,MCG -04-09-048,PGC 013548;;; -NGC1417;G;03:41:57.42;-04:42:17.5;Eri;2.52;1.35;2;12.90;;10.07;9.36;9.14;23.10;SABb;;;;;;;;2MASX J03415742-0442174,IRAS 03394-0451,MCG -01-10-021,PGC 013584;;; -NGC1418;G;03:42:16.16;-04:43:50.7;Eri;1.14;0.65;7;14.50;;11.60;10.85;10.58;23.05;SBb;;;;;;;;2MASX J03421615-0443505,MCG -01-10-022,PGC 013606;;; -NGC1419;G;03:40:42.11;-37:30:39.0;Eri;1.48;1.32;45;13.56;;10.73;10.08;9.89;23.21;E;;;;;;;;2MASX J03404211-3730390,ESO 301-023,ESO-LV 301-0230,MCG -06-09-017,PGC 013534;;; -NGC1420;Other;03:42:39.84;-05:51:09.2;Eri;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC1421;G;03:42:29.28;-13:29:16.9;Eri;3.55;0.75;180;12.38;;9.37;8.72;8.40;22.32;Sbc;;;;;;;;2MASX J03422928-1329168,IRAS 03401-1338,MCG -02-10-008,PGC 013620;;; -NGC1422;G;03:41:31.07;-21:40:53.5;Eri;2.51;0.61;63;13.99;;11.70;10.99;10.73;23.92;SBab;;;;;;;;2MASX J03413106-2140533,ESO 548-077,ESO-LV 548-0770,IRAS 03393-2150,MCG -04-09-051,PGC 013569;;; -NGC1423;G;03:42:40.10;-06:22:54.6;Eri;1.00;0.66;16;15.00;;11.71;10.96;10.55;23.26;SABa;;;;;;;;2MASX J03424012-0622548,MCG -01-10-025,PGC 013628,SDSS J034240.10-062254.5,SDSS J034240.10-062254.6;;MCG RA is +0.6 minutes in error.; -NGC1424;G;03:43:14.04;-04:43:48.3;Eri;1.39;0.49;7;14.50;;11.91;11.15;10.95;23.04;SABb;;;;;;;;2MASX J03431405-0443481,IRAS 03407-0453,MCG -01-10-026,PGC 013664;;; -NGC1425;G;03:42:11.47;-29:53:36.0;For;4.91;2.15;130;11.61;;9.13;8.55;8.31;22.92;Sb;;;;;;;;2MASX J03421146-2953359,2MASX J03421153-2953366,ESO 419-004,ESO-LV 419-0040,IRAS 03401-3002,MCG -05-09-023,PGC 013602,UGCA 084;;This may also be IC 1988.; -NGC1426;G;03:42:49.11;-22:06:30.1;Eri;2.86;1.92;112;12.21;11.44;9.57;8.90;8.67;23.40;E;;;;;;;;2MASX J03424911-2206301,ESO 549-001,ESO-LV 549-0010,MCG -04-09-054,PGC 013638;;; -NGC1427;G;03:42:19.42;-35:23:33.2;For;4.33;2.87;78;11.89;;9.03;8.32;8.14;23.80;E;;;;;;;;ESO 358-052,ESO-LV 358-0520,MCG -06-09-021,PGC 013609;;; -NGC1427A;G;03:40:09.3;-35:37:28;For;2.26;1.42;84;13.44;;;;;23.50;IB;;;;;;;;ESO 358-049,ESO-LV 358-0490,MCG -06-09-016,PGC 013500;;; -NGC1428;G;03:42:22.73;-35:09:14.4;For;1.48;0.73;123;13.77;;11.00;10.30;10.20;23.39;E-S0;;;;;;;;ESO 358-053,ESO-LV 358-0530,MCG -06-09-022,PGC 013611;;; -NGC1429;Other;03:44:04.12;-04:43:05.2;Eri;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1430;*;03:43:25.22;-18:13:30.3;Eri;;;;;;;;;;;;;;;;;;;;; -NGC1431;G;03:44:40.80;+02:50:05.8;Tau;0.91;0.67;160;15.50;;12.04;11.17;11.01;24.10;S0-a;;;;;;;;2MASX J03444080+0250058,MCG +00-10-017,PGC 013732,UGC 02845;;; -NGC1432;HII;03:45:49.59;+24:22:04.3;Tau;60.00;40.00;;;;;;;;;;;;;;;;BD +23 0516,HD 023408,HIP 017573,LBN 771;Maia Nebula;; -NGC1433;G;03:42:01.55;-47:13:19.5;Hor;6.19;2.96;95;10.84;9.99;7.93;7.28;7.06;23.12;SBa;;;;;;;;2MASX J03420155-4713194,ESO 249-014,ESO-LV 249-0140,IRAS 03404-4722,PGC 013586;;; -NGC1434;G;03:46:12.87;-09:40:57.4;Eri;0.79;0.48;163;15.53;;12.00;11.34;10.93;23.53;S0-a;;;;;;;;2MASX J03461286-0940572,PGC 013804;;Identification as NGC 1434 is very uncertain.; -NGC1435;Neb;03:46:10.09;+23:45:53.9;Tau;30.00;30.00;;;;;;;;;;;;;;;;;Merope Nebula;;Dimensions taken from LEDA -NGC1436;G;03:43:37.08;-35:51:10.9;Eri;2.97;2.08;152;12.49;;9.89;9.22;9.03;23.33;Sab;;;;;1437;;;2MASX J03433708-3551107,ESO 358-058,ESO-LV 358-0580,IRAS 03417-3600,MCG -06-09-025,PGC 013687;;; -NGC1437;Dup;03:43:37.08;-35:51:10.9;Eri;;;;;;;;;;;;;;;1436;;;;;; -NGC1437B;G;03:45:54.8;-36:21:25;Eri;2.87;0.86;2;13.98;;11.55;10.77;10.78;23.80;Sd;;;;;;;;2MASX J03455486-3621249,ESO 358-061,ESO-LV 358-0610,IRAS 03440-3630,MCG -06-09-029,PGC 013794;;Position in 1997AJ....113...22G is incorrect.; -NGC1438;G;03:45:17.23;-23:00:08.9;Eri;2.04;0.93;67;13.28;;10.47;9.82;9.62;23.17;Sa;;;;;;;;2MASX J03451721-2300090,ESO 482-041,ESO-LV 482-0410,MCG -04-09-058,PGC 013760;;; -NGC1439;G;03:44:49.95;-21:55:14.0;Eri;2.96;2.83;10;12.23;;9.44;8.81;8.57;23.52;E;;;;;;;;2MASX J03444995-2155137,ESO 549-009,ESO-LV 549-0090,MCG -04-09-056,PGC 013738;;; -NGC1440;G;03:45:02.91;-18:15:57.7;Eri;2.62;1.99;23;12.48;;9.16;8.47;8.20;23.48;S0;;;;;1442;;;2MASX J03450290-1815577,ESO 549-010,ESO-LV 549-0100,MCG -03-10-043,PGC 013752;;; -NGC1441;G;03:45:43.12;-04:05:29.7;Eri;1.85;0.65;89;14.00;;10.24;9.52;9.21;23.26;SBb;;;;;;;;2MASX J03454312-0405295,MCG -01-10-029,PGC 013782;;; -NGC1442;Dup;03:45:02.91;-18:15:57.7;Eri;;;;;;;;;;;;;;;1440;;;;;; -NGC1443;*;03:45:53.04;-04:03:09.8;Eri;;;;;;;;;;;;;;;;;;;;; -NGC1444;OCl;03:49:28.88;+52:39:19.2;Per;3.60;;;7.04;6.60;;;;;;;;;;;;;MWSC 0308;;; -NGC1445;G;03:44:56.22;-09:51:21.1;Eri;0.77;0.62;106;14.82;;12.23;11.67;11.31;23.19;S0;;;;;;;;2MASX J03445621-0951209,IRAS 03425-1000,PGC 013742;;; -NGC1446;*;03:45:57.46;-04:06:43.8;Eri;;;;13.80;13.50;11.56;11.05;10.93;;;;;;;;;;2MASS J03455749-0406439;;Identification as NGC 1446 is very uncertain.; -NGC1447;G;03:45:47.15;-09:01:07.3;Eri;0.86;0.58;115;15.24;;11.74;11.07;10.68;24.23;S0;;;;;;;;2MASX J03454716-0901076,PGC 013786;;; -NGC1448;G;03:44:31.92;-44:38:41.4;Hor;8.02;1.53;41;11.46;;8.68;7.94;7.66;23.27;Sc;;;;;1457;;;2MASX J03443191-4438413,ESO 249-016,ESO-LV 249-0160,IRAS 03428-4448,MCG -07-08-005,PGC 013727;;; -NGC1449;G;03:46:03.07;-04:08:17.2;Eri;0.90;0.52;5;14.60;;11.05;10.33;10.05;23.00;S0;;;;;;;;2MASX J03460309-0408173,MCG -01-10-032,PGC 013798;;; -NGC1450;G;03:45:36.64;-09:14:05.5;Eri;0.91;0.73;28;14.56;;11.31;10.64;10.30;23.65;E-S0;;;;;;;;2MASX J03453663-0914056,PGC 013775;;; -NGC1451;G;03:46:07.16;-04:04:09.1;Eri;0.81;0.65;45;14.50;;10.94;10.25;9.93;22.66;E-S0;;;;;;;;2MASX J03460717-0404093,MCG -01-10-033,PGC 013801;;; -NGC1452;G;03:45:22.31;-18:38:01.1;Eri;2.39;1.76;30;12.98;;9.66;8.97;8.67;23.35;S0-a;;;;;1455;;;2MASX J03452230-1838010,ESO 549-012,ESO-LV 549-0120,MCG -03-10-044,PGC 013765;;; -NGC1453;G;03:46:27.25;-03:58:07.6;Eri;2.46;1.87;19;13.00;;9.13;8.43;8.12;23.39;E;;;;;;;;2MASX J03462726-0358075,MCG -01-10-034,PGC 013814;;; -NGC1454;*;03:45:59.34;-20:39:08.3;Eri;;;;;;;;;;;;;;;;;;;;; -NGC1455;Dup;03:45:22.31;-18:38:01.1;Eri;;;;;;;;;;;;;;;1452;;;;;; -NGC1456;**;03:48:08.25;+22:33:31.0;Tau;;;;11.72;10.96;9.97;9.71;9.63;;;;;;;;;;;;;Main component is TYC 1800-2103-1. -NGC1457;Dup;03:44:31.92;-44:38:41.4;Hor;;;;;;;;;;;;;;;1448;;;;;; -NGC1458;Other;03:46:58.31;-18:14:28.1;Eri;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1459;G;03:46:57.94;-25:31:18.3;For;1.82;1.19;161;13.62;;11.07;10.49;10.10;23.31;SBbc;;;;;;;;2MASX J03465794-2531182,ESO 482-043,ESO-LV 482-0430,IRAS 03448-2540,MCG -04-10-001,PGC 013832;;; -NGC1460;G;03:46:13.74;-36:41:46.8;Eri;1.92;1.62;85;13.52;;10.77;10.05;9.96;23.64;S0;;;;;;;;2MASX J03461375-3641467,ESO 358-062,ESO-LV 358-0620,MCG -06-09-031,PGC 013805;;; -NGC1461;G;03:48:27.14;-16:23:34.4;Eri;2.90;0.85;157;12.85;;9.30;8.60;8.34;23.80;S0;;;;;;;;2MASX J03482713-1623345,MCG -03-10-047,PGC 013881;;; -NGC1462;G;03:50:23.43;+06:58:23.0;Tau;0.86;0.49;40;15.30;;11.66;10.89;10.63;23.19;Sc;;;;;;;;2MASX J03502341+0658231,IRAS 03477+0649,MCG +01-10-010,PGC 013945;;; -NGC1463;G;03:46:15.42;-59:48:36.5;Ret;1.26;1.09;25;14.15;;11.31;10.56;10.30;23.41;Sa;;;;;;;;2MASX J03461541-5948366,ESO 117-009,ESO-LV 117-0090,IRAS 03453-5957,PGC 013807;;; -NGC1464;G;03:51:24.52;-15:24:08.1;Eri;0.81;0.59;44;14.71;;11.86;11.16;10.80;22.74;Scd;;;;;1471;;;2MASX J03512450-1524081,IRAS 03491-1533,PGC 013976;;; -NGC1465;G;03:53:31.91;+32:29:34.1;Per;2.01;0.44;165;14.90;;10.26;9.50;9.17;24.73;S0-a;;;;;;;;2MASX J03533191+3229343,MCG +05-10-003,PGC 014039,UGC 02891;;; -NGC1466;GCl;03:44:33.35;-71:40:17.7;Hyi;3.50;3.50;;11.60;11.59;;;;;;;;;;;;;2MASX J03443186-7140160,ESO 054-016;;The 2MASS position is 7 arcsec east of the core.; -NGC1467;G;03:51:52.80;-08:50:17.5;Eri;1.23;0.67;63;15.00;;11.54;10.85;10.60;24.23;S0-a;;;;;;;;2MASX J03515275-0850176,MCG -02-10-015,PGC 013991;;; -NGC1468;G;03:52:12.58;-06:20:56.2;Eri;1.22;0.85;140;15.00;;11.08;10.40;10.08;23.99;E-S0;;;;;;;;2MASX J03521258-0620566,MCG -01-10-045,PGC 014004,SDSS J035212.58-062056.2;;; -NGC1469;G;04:00:27.77;+68:34:39.8;Cam;2.17;1.22;150;14.50;;8.89;8.07;7.75;24.72;E-S0;;;;;;;;2MASX J04002774+6834398,MCG +11-05-004,PGC 014261,UGC 02909;;; -NGC1470;G;03:52:09.84;-08:59:57.7;Eri;1.61;0.39;166;15.00;;11.31;10.57;10.22;23.53;Sab;;;;;;;;2MASX J03520982-0859576,IRAS 03497-0908,MCG -02-10-016,PGC 014002;;; -NGC1471;Dup;03:51:24.52;-15:24:08.1;Eri;;;;;;;;;;;;;;;1464;;;;;; -NGC1472;G;03:53:47.35;-08:34:06.5;Eri;0.68;0.62;110;;;11.76;11.14;10.68;23.61;S0;;;;;;;;2MASX J03534734-0834060,PGC 014050;;; -NGC1473;G;03:47:26.30;-68:13:14.1;Hyi;1.53;0.82;45;13.76;;12.01;11.87;11.41;22.54;IB;;;;;;;;2MASX J03472514-6813135,ESO 054-019,ESO-LV 54-0190,IRAS 03472-6822,PGC 013853;;; -NGC1474;G;03:54:30.35;+10:42:25.2;Tau;1.04;0.70;5;14.66;13.76;11.51;10.76;10.50;23.63;Sa;;;;;;2002;;2MASX J03543035+1042255,MCG +02-10-003,PGC 014080,UGC 02898;;; -NGC1475;G;03:53:49.83;-08:08:15.0;Eri;0.65;0.59;105;15.70;;12.20;11.39;11.32;23.83;;;;;;;;;2MASX J03534978-0808151,PGC 1007783;;; -NGC1476;G;03:52:08.79;-44:31:56.9;Hor;1.50;0.54;85;13.98;13.82;12.59;11.97;11.76;23.12;Sa;;;;;;;;2MASX J03520773-4431585,ESO 249-024,ESO-LV 249-0240,IRAS 03504-4440,MCG -07-09-001,PGC 014001;;; -NGC1477;G;03:54:02.88;-08:34:29.9;Eri;0.77;0.68;52;;;11.82;11.02;10.84;24.00;E;;;;;;;;2MASX J03540284-0834301,PGC 014060;;; -NGC1478;G;03:54:07.34;-08:33:19.5;Eri;0.64;0.44;43;15.88;;12.23;11.45;11.23;23.82;S0;;;;;;;;2MASX J03540729-0833191,PGC 014062;;; -NGC1479;Other;03:54:20.44;-10:12:31.0;Eri;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1480;Other;03:54:32.38;-10:15:31.8;Eri;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1481;G;03:54:28.96;-20:25:37.8;Eri;1.04;0.78;132;14.44;;12.17;11.41;11.18;23.37;E-S0;;;;;;;;2MASX J03542901-2025380,ESO 549-032,ESO-LV 549-0320,MCG -03-10-053,PGC 014079;;; -NGC1482;G;03:54:38.96;-20:30:09.6;Eri;2.46;1.43;107;13.14;12.15;9.72;8.91;8.48;23.73;S0-a;;;;;;;;2MASX J03543892-2030088,ESO 549-033,ESO-LV 549-0330,IRAS 03524-2038,MCG -03-10-054,PGC 014084;;; -NGC1483;G;03:52:47.64;-47:28:39.1;Hor;1.87;1.51;153;13.23;;11.26;10.60;10.59;23.12;SBbc;;;;;;;;2MASX J03524760-4728390,ESO 201-007,ESO-LV 201-0070,IRAS 03512-4737,PGC 014022;;; -NGC1484;G;03:54:20.13;-36:58:08.0;Eri;2.73;0.68;79;13.67;;;;;23.66;SBb;;;;;;;;2MASX J03542014-3658077,ESO 359-006,ESO-LV 359-0060,IRAS 03524-3706,MCG -06-09-036,PGC 014071;;; -NGC1485;G;04:05:03.94;+70:59:47.5;Cam;2.23;0.69;21;13.60;;9.67;8.92;8.62;23.11;Sb;;;;;;;;2MASX J04050398+7059476,MCG +12-04-010,PGC 014432,UGC 02933;;; -NGC1486;G;03:56:18.70;-21:49:16.1;Eri;0.91;0.62;6;15.21;;12.70;12.03;11.66;23.34;SABb;;;;;;;;2MASX J03561872-2149158,ESO 549-037,ESO-LV 549-0370,MCG -04-10-008,PGC 014132;;; -NGC1487;GPair;03:55:46.10;-42:22:05.0;Hor;4.40;;;;;;;;;;;;;;;;;ESO 249-031,MCG -07-09-002;;Position in 1997AJ....113.1548C is incorrect.;Diameter of the group inferred by the author. -NGC1487 NED01;G;03:55:45.37;-42:22:03.7;Hor;2.34;2.04;96;11.89;;10.69;10.17;9.91;22.34;I;;;;;1487NW;;;2MASX J03554474-4222024,ESO-LV 249-0310,MCG -07-09-002 NED01,PGC 014117;;; -NGC1487 NED02;G;03:55:47.17;-42:22:06.9;Hor;3.72;1.70;91;12.28;11.68;;9.71;9.56;23.22;S?;;;;;;;;IRAS 03540-4230,MCG -07-09-002 NED02,PGC 014121;;; -NGC1488;**;04:00:04.33;+18:34:02.3;Tau;;;;;;;;;;;;;;;;;;;;; -NGC1489;G;03:57:38.10;-19:12:59.9;Eri;1.69;0.60;19;14.65;;11.69;10.97;10.75;23.75;SBb;;;;;;;;2MASX J03573808-1912597,ESO 549-042,ESO-LV 549-0420,MCG -03-11-003,PGC 014165;;; -NGC1490;G;03:53:34.22;-66:01:05.0;Ret;1.39;1.19;131;13.42;;10.06;9.37;9.09;23.22;E;;;;;;;;2MASX J03533420-6601052,ESO 083-011,ESO-LV 83-0110,PGC 014040;;; -NGC1491;HII;04:03:13.56;+51:18:57.9;Per;9.00;6.00;;;;;;;;;;;;;;;;LBN 704;;Within 10 degrees of the galactic plane.; -NGC1492;G;03:58:13.13;-35:26:46.9;Eri;0.77;0.61;14;14.29;;11.75;11.07;10.75;22.34;Sa;;;;;;;;2MASX J03581314-3526469,ESO 359-012,ESO-LV 359-0120,IRAS 03563-3535,PGC 014186;;; -NGC1493;G;03:57:27.43;-46:12:38.5;Hor;3.44;3.18;80;11.88;;10.36;9.01;8.81;23.19;SBc;;;;;;;;2MASX J03572738-4612386,ESO 249-033,ESO-LV 249-0330,IRAS 03558-4621,PGC 014163;;; -NGC1494;G;03:57:42.90;-48:54:29.1;Hor;3.51;1.86;180;12.34;;;;;23.17;Scd;;;;;;;;2MASX J03574256-4854409,ESO 201-012,ESO-LV 201-0120,IRAS 03562-4902,PGC 014169;;; -NGC1495;G;03:58:21.82;-44:27:58.5;Hor;2.22;0.48;104;13.28;;11.15;10.52;10.09;22.58;Sc;;;;;;;;2MASX J03582180-4427585,2MASX J03582336-4428024,ESO 249-034,ESO-LV 249-0340,IRAS 03567-4436,MCG -07-09-004,PGC 014190;;; -NGC1496;OCl;04:04:31.89;+52:39:41.0;Per;2.10;;;;9.60;;;;;;;;;;;;;MWSC 0333;;; -NGC1497;G;04:02:06.82;+23:07:58.5;Tau;1.23;0.65;63;14.50;;10.47;9.82;9.48;23.69;S0;;;;;;;;2MASX J04020678+2307585,MCG +04-10-008,PGC 014331,UGC 02929;;; -NGC1498;OCl;04:00:19.30;-12:01:11.0;Eri;;;;;;;;;;;;;;;;;;;;; -NGC1499;Neb;04:03:14.42;+36:22:02.9;Per;160.00;40.00;;5.00;;;;;;;;;;;;;;LBN 756;California Nebula;;B-Mag taken from LEDA -NGC1500;G;03:58:13.97;-52:19:41.4;Dor;1.49;1.13;88;14.44;;11.13;10.42;10.07;24.52;E;;;;;;;;2MASX J03581395-5219412,ESO 201-013,ESO-LV 201-0130,PGC 014187;;; -NGC1501;PN;04:06:59.37;+60:55:14.5;Cam;0.87;;;13.30;11.50;13.20;12.92;12.79;;;14.34;15.17;14.39;;;;;IRAS 04026+6047,PN G144.5+06.5;;; -NGC1502;OCl;04:07:49.30;+62:19:53.5;Cam;10.20;;;7.47;6.90;;;;;;;;;;;;;MWSC 0343;;; -NGC1503;G;03:56:33.24;-66:02:26.4;Ret;0.96;0.74;141;14.40;;11.60;10.80;10.52;23.05;S0-a;;;;;;;;2MASX J03563321-6602263,ESO 083-013,ESO-LV 83-0130,IRAS 03561-6611,PGC 014137;;; -NGC1504;G;04:02:29.70;-09:20:07.4;Eri;0.79;0.70;40;15.00;;11.83;11.07;10.86;23.64;E-S0;;;;;;;;2MASX J04022966-0920078,MCG -02-11-008,PGC 014336;;; -NGC1505;G;04:02:36.40;-09:19:20.7;Eri;1.20;0.86;69;15.00;;11.07;10.34;10.00;23.75;S0;;;;;;;;2MASX J04023642-0919208,MCG -02-11-009,PGC 014339;;; -NGC1506;G;04:00:21.57;-52:34:25.4;Dor;1.59;0.98;82;14.55;;11.38;10.70;10.40;23.92;E-S0;;;;;;;;2MASX J04002159-5234254,ESO 156-027,ESO-LV 156-0270,PGC 014256;;; -NGC1507;G;04:04:27.21;-02:11:18.9;Eri;3.78;0.79;12;12.80;;;;;23.08;SBd;;;;;;;;IRAS 04019-0219,MCG +00-11-009,PGC 014409,UGC 02947;;Confused HIPASS source; -NGC1508;G;04:05:47.64;+25:24:30.5;Tau;0.60;0.44;25;15.20;;10.82;10.07;9.80;22.83;E?;;;;;;;;2MASX J04054765+2524302,MCG +04-10-021,PGC 014454;;; -NGC1509;G;04:03:55.20;-11:10:44.5;Eri;0.79;0.63;55;14.50;;11.40;10.62;10.31;22.73;Sa;;;;;;2026;;2MASX J04035523-1110446,IRAS 04015-1118,MCG -02-11-013,PGC 014393;;; -NGC1510;G;04:03:32.64;-43:24:00.4;Hor;1.32;1.13;103;13.63;13.24;11.28;10.17;10.36;22.82;S0;;;;;;;;2MASX J04033264-4324005,ESO 250-003,ESO-LV 250-0030,IRAS 04019-4332,MCG -07-09-006,PGC 014375;;; -NGC1511;G;03:59:36.98;-67:38:03.3;Hyi;3.66;1.47;123;11.97;;9.60;8.94;8.63;22.91;Sab;;;;;;;;2MASX J03593698-6738033,2MASX J03593974-6738201,ESO 055-004,ESO-LV 55-0040,IRAS 03594-6746,PGC 014236;;; -NGC1511A;G;04:00:18.6;-67:48:25;Hyi;1.85;0.41;108;14.27;;11.66;11.05;10.80;23.61;SBab;;;;;;;;2MASX J04001850-6748243,ESO 055-005,ESO-LV 55-0050,IRAS 04001-6756,PGC 014255;;; -NGC1511B;G;04:00:54.7;-67:36:43;Hyi;1.39;0.25;97;15.17;;;;;23.25;SBcd;;;;;;;;ESO 055-006,ESO-LV 55-0060,PGC 014279;;; -NGC1512;G;04:03:54.28;-43:20:55.9;Hor;8.43;4.02;63;11.43;10.54;8.34;7.76;7.49;24.11;Sa;;;;;;;;2MASS J04035419-4320552,2MASX J04035428-4320558,ESO 250-004,ESO-LV 250-0040,IRAS 04022-4329,MCG -07-09-007,PGC 014391;;Extended HIPASS source; -NGC1513;OCl;04:09:54.70;+49:31:02.2;Per;5.10;;;8.71;8.40;;;;;;;;;;;;;MWSC 0346;;; -NGC1514;PN;04:09:16.95;+30:46:33.3;Tau;2.20;;;10.05;10.19;8.19;8.10;8.00;;;9.87;9.93;9.42;;;;BD +30 0623,HIP 019395,SAO 57020,TYC 2358-00056-1;IRAS 04061+3038,PN G165.5-15.2;;; -NGC1515;G;04:04:02.72;-54:06:00.2;Dor;5.50;1.26;20;11.96;11.03;8.75;8.08;7.84;23.25;SABb;;;;;;;;2MASX J04040271-5406002,ESO 156-036,ESO-LV 156-0360,IRAS 04028-5414,PGC 014397;;; -NGC1515A;G;04:03:49.8;-54:06:47;Dor;0.93;0.49;55;15.40;;12.33;11.36;11.33;23.50;SBb;;;;;;;;2MASX J04034980-5406471,ESO 156-034,ESO-LV 156-0340,PGC 014388;;; -NGC1516A;G;04:08:07.4;-08:49:45;Eri;0.90;0.55;130;15.00;;11.60;10.85;10.58;22.47;SABb;;;;;1524;;;2MASX J04080742-0849453,MCG -02-11-017,PGC 014515;;; -NGC1516B;G;04:08:08.31;-08:50:08.6;Eri;1.26;1.26;90;15.00;;;;;;Sc;;;;;1525;;;MCG -02-11-018,PGC 014516;;; -NGC1517;G;04:09:11.93;+08:38:55.7;Tau;0.97;0.81;160;14.30;;11.26;10.51;10.25;22.78;Sc;;;;;;;;2MASX J04091193+0838555,IRAS 04064+0831,PGC 014564,UGC 02970;;; -NGC1518;G;04:06:49.72;-21:10:21.5;Eri;3.47;1.30;30;12.20;11.84;12.06;11.40;11.16;22.80;SBd;;;;;;;;2MASX J04064970-2110214,ESO 550-007,ESO-LV 550-0070,IRAS 04046-2118,MCG -04-10-013,PGC 014475;;; -NGC1519;G;04:08:07.60;-17:11:34.4;Eri;2.47;0.90;107;13.73;;11.18;10.36;10.12;23.60;SBb;;;;;;;;2MASX J04080759-1711344,ESO 550-009,ESO-LV 550-0090,IRAS 04058-1719,MCG -03-11-013,PGC 014514;;; -NGC1520;OCl;03:57:30.97;-76:50:02.2;Men;5.40;;;;;;;;;;;;;;;;;MWSC 0319;;About a dozen stars scattered around HD 25864.; -NGC1521;G;04:08:18.93;-21:03:07.1;Eri;3.25;2.02;9;12.31;;9.64;8.98;8.68;23.82;E;;;;;;;;2MASX J04081893-2103069,ESO 550-011,ESO-LV 550-0110,MCG -04-10-015,PGC 014520,TYC 5889-1109-1;;; -NGC1522;G;04:06:07.92;-52:40:06.3;Dor;1.22;0.87;39;14.16;13.78;12.55;11.60;11.38;23.14;S0;;;;;;;;2MASX J04060790-5240059,ESO 156-038,ESO-LV 156-0380,IRAS 04048-5248,PGC 014462;;; -NGC1523;Other;04:06:11.02;-54:05:17.9;Dor;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC1524;Dup;04:08:07.4;-08:49:45;Eri;;;;;;;;;;;;;;;1516A;;;;;; -NGC1525;Dup;04:08:08.31;-08:50:08.6;Eri;;;;;;;;;;;;;;;1516B;;;;;; -NGC1526;G;04:05:12.30;-65:50:23.3;Ret;0.86;0.56;36;14.59;;11.89;11.17;10.89;22.67;SABb;;;;;;;;2MASX J04051227-6550232,ESO 084-003,ESO-LV 84-0030,IRAS 04048-6558,PGC 014437;;; -NGC1527;G;04:08:24.14;-47:53:49.3;Hor;4.58;1.79;78;11.73;;8.55;7.84;7.63;23.68;E-S0;;;;;;;;2MASX J04082413-4753493,ESO 201-020,ESO-LV 201-0200,PGC 014526;;; -NGC1528;OCl;04:15:18.87;+51:12:41.3;Per;9.60;;;6.83;6.40;;;;;;;;;;;;;MWSC 0353;;; -NGC1529;G;04:07:19.88;-62:53:57.5;Ret;0.71;0.33;164;14.39;;11.14;10.41;10.15;22.51;S0;;;;;;;;2MASX J04071984-6253575,ESO 084-004,ESO-LV 84-0040,PGC 014495;;; -NGC1530;G;04:23:27.10;+75:17:44.1;Cam;1.82;1.04;130;13.40;;9.24;8.55;8.29;22.14;SBb;;;;;;;;2MASX J04232710+7517440,IRAS 04170+7510,MCG +13-04-004,PGC 015018,UGC 03013;;; -NGC1530A;G;04:44:28.50;+75:38:23.1;Cam;1.48;1.35;100;14.50;;10.40;9.68;9.36;22.77;SABb;;;;;;0381;;2MASX J04442845+7538230,IRAS 04378+7532,MCG +13-04-007,PGC 015917,UGC 03130;;; -NGC1531;G;04:11:59.32;-32:51:02.9;Eri;1.50;0.90;123;13.11;;9.92;9.52;8.42;22.46;E-S0;;;;;;;;2MASX J04115932-3251028,ESO 359-026,ESO-LV 359-0260,MCG -05-11-001,PGC 014635;;; -NGC1532;G;04:12:04.33;-32:52:27.2;Eri;11.27;3.09;33;10.65;;7.70;7.01;6.73;23.78;SBb;;;;;;;;2MASX J04120433-3252271,ESO 359-027,ESO-LV 359-0270,MCG -05-11-002,PGC 014638;;Extended HIPASS source; -NGC1533;G;04:09:51.84;-56:07:06.4;Dor;3.27;2.04;149;11.77;10.92;8.55;7.86;7.63;23.08;E-S0;;;;;;;;2MASX J04095185-5607063,ESO 157-003,ESO-LV 157-0030,IRAS 04088-5614,PGC 014582;;Extended HIPASS source; -NGC1534;G;04:08:46.07;-62:47:51.3;Ret;1.66;1.04;76;13.76;;10.39;9.65;9.39;23.42;S0-a;;;;;;;;2MASX J04084606-6247512,ESO 084-006,ESO-LV 84-0060,IRAS 04081-6255,PGC 014547;;; -NGC1535;PN;04:14:15.77;-12:44:21.8;Eri;0.35;;;9.60;9.60;10.90;10.86;10.25;;;;12.19;12.18;;;;BD -13 842,HD 26847;2MASX J04141578-1244216,IRAS 04119-1251,PN G206.4-40.5;;; -NGC1536;G;04:10:59.86;-56:28:49.6;Ret;1.67;1.21;157;13.29;13.15;10.79;10.18;9.86;23.11;SBc;;;;;;;;2MASX J04105983-5628496,ESO 157-005,ESO-LV 157-0050,IRAS 04099-5636,PGC 014620;;The ESO position is southeast of the eccentric nucleus.; -NGC1537;G;04:13:40.71;-31:38:43.5;Eri;4.35;2.76;102;11.54;;8.61;7.95;7.73;23.50;E;;;;;;;;2MASX J04134070-3138434,ESO 420-012,ESO-LV 420-0120,MCG -05-11-005,PGC 014695;;; -NGC1538;G;04:14:56.08;-13:11:30.2;Eri;0.66;0.45;108;16.06;;12.36;11.61;11.45;23.68;S0-a;;;;;;2047;;2MASX J04145606-1311299,PGC 941480;;Identification as NGC 1538 is uncertain.; -NGC1539;G;04:19:01.96;+26:49:39.0;Tau;0.97;0.74;45;15.70;;10.79;9.98;9.62;;E;;;;;;;;2MASX J04190197+2649389,PGC 014852;;Identification as NGC 1539 is uncertain.;Diameters and position angle taken from Simbad. -NGC1540;G;04:15:10.66;-28:29:18.5;Eri;0.77;0.49;150;14.94;;12.46;12.01;12.09;23.79;Sa;;;;;;;;2MASX J04151066-2829187,ESO-LV 420-0142,IRAS 04131-2836,PGC 014733;;; -NGC1540A;G;04:15:10.01;-28:28:55.5;Eri;0.56;0.38;50;14.75;;13.79;13.10;13.07;21.92;Sa;;;;;;;;ESO-LV 420-0141,PGC 014734;;; -NGC1541;G;04:17:00.23;+00:50:06.7;Tau;1.38;0.49;77;14.90;;11.12;10.44;10.23;23.92;S0-a;;;;;;;;2MASX J04170023+0050067,MCG +00-11-040,PGC 014792,UGC 03001;;; -NGC1542;G;04:17:14.18;+04:46:53.9;Tau;1.22;0.40;128;15.02;13.89;11.40;10.54;10.28;23.53;Sab;;;;;;;;2MASX J04171419+0446537,IRAS 04145+0439,MCG +01-11-016,PGC 014800,UGC 03003;;; -NGC1543;G;04:12:43.25;-57:44:16.7;Ret;3.66;0.86;94;10.67;10.60;8.32;7.68;7.45;22.94;S0;;;;;;;;2MASX J04124324-5744166,ESO 118-010,ESO-LV 118-0100,PGC 014659;;; -NGC1544;G;05:02:36.15;+86:13:20.4;Cep;1.13;0.87;121;14.20;;10.70;9.96;9.79;23.04;S0-a;;;;;;;;2MASX J05023656+8613203,MCG +14-03-006,PGC 016608,UGC 03160;;; -NGC1545;OCl;04:20:56.26;+50:15:19.2;Per;4.20;;;7.20;6.20;;;;;;;;;;;;;MWSC 0369;;; -NGC1546;G;04:14:36.54;-56:03:38.9;Dor;3.72;2.50;143;12.31;10.92;9.08;8.33;8.05;23.59;S0-a;;;;;;;;2MASX J04143654-5603389,ESO 157-012,ESO-LV 157-0120,IRAS 04134-5611,PGC 014723;;; -NGC1547;G;04:17:12.41;-17:51:26.9;Eri;1.40;0.58;131;14.41;;11.53;10.78;10.45;23.17;Sbc;;;;;;;;2MASX J04171241-1751267,ESO 550-018,ESO-LV 550-0180,IRAS 04149-1758,MCG -03-11-020,PGC 014794,PGC 014799;;; -NGC1548;OCl;04:21:19.10;+36:54:58.8;Per;3.60;;;;;;;;;;;;;;;;;MWSC 0371;;; -NGC1549;G;04:15:45.13;-55:35:32.1;Dor;5.09;4.35;138;10.48;9.79;7.68;7.07;6.78;23.08;E;;;;;;;;2MASX J04154522-5535324,ESO 157-016,ESO-LV 157-0160,PGC 014757;;; -NGC1550;G;04:19:37.93;+02:24:34.1;Tau;1.73;1.54;28;14.00;;9.78;9.06;8.77;23.23;E;;;;;1551;;;2MASX J04193792+0224355,MCG +00-11-055,PGC 014880,UGC 03012;;; -NGC1551;Dup;04:19:37.93;+02:24:34.1;Tau;;;;;;;;;;;;;;;1550;;;;;; -NGC1552;G;04:20:17.68;-00:41:33.8;Eri;1.79;1.29;104;14.40;;10.29;9.61;9.32;24.25;S0-a;;;;;;;;2MASX J04201768-0041336,MCG +00-12-007,PGC 014907,UGC 03015;;; -NGC1553;G;04:16:10.47;-55:46:48.5;Dor;6.25;4.29;150;10.10;9.40;7.18;6.50;6.28;22.99;S0;;;;;;;;2MASX J04161046-5546485,ESO 157-017,ESO-LV 157-0170,IRAS 04150-5554,PGC 014765;;; -NGC1554;*;04:21:43.55;+19:31:14.1;Tau;;;;;;10.51;9.58;9.27;;;;;;;;;;2MASS J04214353+1931144;;; -NGC1555;RfN;04:21:59.43;+19:32:06.6;Tau;1.82;1.35;74;9.98;;;;;;;;;;;;;;BD +19 0706,HIP 020390,IRAS 04190+1924,IRAS 04190+1924;Hind's Nebula,Hind's Variable Nebula;Identified as a star by Strauss, et al (1992, ApJS, 83, 29).;Dimensions taken from LEDA -NGC1556;G;04:17:44.83;-50:09:52.0;Dor;1.53;0.58;167;13.53;;11.52;10.95;10.77;22.50;Sb;;;;;;;;2MASX J04174483-5009520,ESO 202-004,ESO-LV 202-0040,IRAS 04163-5017,PGC 014818;;; -NGC1557;OCl;04:13:11.17;-70:25:29.8;Hyi;7.20;;;;;;;;;;;;;;;;;ESO 055-015,MWSC 0351;;"Ten or fifteen stars, 15 arcmin by 10 arcmin; cluster?"; -NGC1558;G;04:20:16.18;-45:01:53.3;Cae;3.05;0.95;72;13.28;;10.40;9.70;9.45;23.50;Sbc;;;;;;;;2MASX J04201617-4501533,ESO 250-017,ESO-LV 250-0170,IRAS 04187-4508,PGC 014906;;; -NGC1559;G;04:17:35.77;-62:47:01.2;Ret;4.19;2.18;63;11.19;10.45;8.91;8.28;8.02;22.32;SBc;;;;;;;;2MASX J04173578-6247012,ESO 084-010,ESO-LV 84-0100,IRAS 04170-6253,PGC 014814;;; -NGC1560;G;04:32:49.09;+71:52:59.2;Cam;8.30;1.68;21;12.10;;9.71;8.93;8.89;24.08;Scd;;;;;;;;2MASX J04324908+7152591,IRAS 04271+7146,MCG +12-05-005,PGC 015488,UGC 03060;;RC2 is incorrect in equating IC 2062 (a Galactic star) with NGC 1560.; -NGC1561;G;04:23:01.08;-15:50:44.4;Eri;1.37;0.78;167;15.00;;11.41;10.72;10.46;24.15;E-S0;;;;;;;;2MASX J04230107-1550445,MCG -03-12-006,PGC 015005;;HOLM 075B does not exist (it is probably a plate defect).; -NGC1562;G;04:21:47.62;-15:45:19.6;Eri;0.92;0.69;80;15.26;;11.94;11.21;10.89;23.73;S0;;;;;;;;2MASX J04214762-1545198,PGC 014956;;; -NGC1563;G;04:22:53.95;-15:43:57.5;Eri;0.49;0.44;74;15.00;;12.76;12.07;11.88;23.00;;;;;;;;;2MASX J04225393-1543574,PGC 015000;;; -NGC1564;G;04:23:00.95;-15:44:19.9;Eri;0.73;0.56;33;15.50;;12.27;11.48;11.26;23.64;S0;;;;;;;;2MASX J04230094-1544195,PGC 015004;;; -NGC1565;G;04:23:23.45;-15:44:39.6;Eri;1.02;0.89;86;15.00;;12.27;11.63;11.14;23.36;Sc;;;;;;;;2MASX J04232345-1544396,MCG -03-12-007,PGC 015015;;; -NGC1566;G;04:20:00.42;-54:56:16.1;Dor;7.23;5.00;45;10.19;9.73;7.76;7.21;6.89;23.03;SABb;;;;;;;;2MASX J04200041-5456161,ESO 157-020,ESO-LV 157-0200,IRAS 04189-5503,PGC 014897;;Extended HIPASS source; -NGC1567;G;04:21:08.75;-48:15:17.2;Cae;1.53;1.31;159;13.36;;10.33;9.69;9.44;23.24;E;;;;;;;;2MASX J04210873-4815174,ESO 202-010,ESO-LV 202-0100,PGC 014934;;; -NGC1568;G;04:24:25.34;-00:44:46.4;Eri;1.46;0.99;139;14.90;;10.64;9.92;9.64;24.28;S0-a;;;;;;;;2MASX J04242535-0044465,MCG +00-12-027,PGC 015042,UGC 03032;;Sometimes called 'NGC 1568B'.; -NGC1569;G;04:30:49.06;+64:50:52.6;Cam;3.91;2.16;119;11.86;11.03;8.82;8.18;7.86;22.96;IB;;;;;;;;2MASX J04304918+6450525,IRAS 04260+6444,MCG +11-06-001,PGC 015345,TYC 4073-90-1,UGC 03056;;; -NGC1570;G;04:22:08.94;-43:37:46.4;Cae;2.15;1.36;180;13.22;;10.10;9.39;9.19;23.68;E;;;;;1571;;;2MASX J04220894-4337463,ESO 250-019,ESO-LV 250-0190,MCG -07-10-001,PGC 014971;;; -NGC1571;Dup;04:22:08.94;-43:37:46.4;Cae;;;;;;;;;;;;;;;1570;;;;;; -NGC1572;G;04:22:42.81;-40:36:03.3;Cae;1.37;0.93;160;13.63;;10.39;9.67;9.30;22.53;SBa;;;;;;;;2MASX J04224281-4036034,ESO 303-014,ESO-LV 303-0140,IRAS 04210-4042,MCG -07-10-003,PGC 014993;;; -NGC1573;G;04:35:03.99;+73:15:44.7;Cam;1.95;1.32;35;13.30;;9.57;8.86;8.56;23.17;E;;;;;;;;2MASX J04350397+7315446,MCG +12-05-008,PGC 015570,UGC 03077;;The 2MASS position is 6 arcsec west of the nucleus.; -NGC1574;G;04:21:58.82;-56:58:29.1;Ret;4.13;2.32;2;11.17;10.48;7.98;7.39;7.11;23.10;E-S0;;;;;;;;2MASX J04215882-5658291,ESO 157-022,ESO-LV 157-0220,PGC 014965;;; -NGC1575;G;04:26:20.55;-10:05:54.4;Eri;1.52;1.16;115;13.00;;;;;22.86;SABb;;;;;1577;;;2MASX J04262054-1005543,IRAS 04239-1012,MCG -02-12-014,PGC 015090;;; -NGC1576;G;04:26:18.82;-03:37:15.9;Eri;1.49;0.88;102;15.00;;10.73;10.07;9.72;23.93;E-S0;;;;;;;;2MASX J04261882-0337158,MCG -01-12-007,PGC 015089;;; -NGC1577;Dup;04:26:20.55;-10:05:54.4;Eri;;;;;;;;;;;;;;;1575;;;;;; -NGC1578;G;04:23:46.65;-51:35:58.0;Dor;1.21;0.89;165;13.83;;10.84;10.17;9.86;22.89;Sa;;;;;;;;2MASX J04234665-5135579,ESO 202-014,ESO-LV 202-0140,IRAS 04224-5142,PGC 015025,TYC 8075-1340-1;;; -NGC1579;Cl+N;04:30:13.80;+35:16:10.0;Per;10.20;;;;;;;;;;;;;;;;;IRAS 04269+3510,LBN 767,MWSC 0385;;Identified as IR cirrus by Strauss, et al (1992, ApJS, 83, 29).; -NGC1580;G;04:28:18.48;-05:10:43.6;Eri;1.03;0.66;121;14.50;;11.30;10.61;10.38;22.80;Sbc;;;;;;;;2MASX J04281848-0510436,MCG -01-12-011,PGC 015189;;; -NGC1581;G;04:24:44.96;-54:56:31.2;Dor;2.08;0.81;82;13.36;;10.72;10.02;9.85;23.84;E-S0;;;;;;;;2MASX J04244496-5456312,ESO 157-026,ESO-LV 157-0260,IRAS 04236-5503,PGC 015055;;; -NGC1582;OCl;04:31:46.79;+43:47:05.4;Per;7.80;;;;7.00;;;;;;;;;;;;;MWSC 0388;;; -NGC1583;G;04:28:20.73;-17:35:43.6;Eri;1.04;0.90;95;14.61;;11.40;10.67;10.39;23.63;E;;;;;;;;2MASX J04282071-1735434,ESO 551-008,ESO-LV 551-0080,MCG -03-12-010,PGC 015191,PGC 015193;;; -NGC1584;G;04:28:10.26;-17:31:24.1;Eri;0.95;0.76;122;14.88;;11.87;11.14;10.88;23.62;E-S0;;;;;;;;2MASX J04281029-1731244,ESO 551-006,ESO-LV 551-0060,PGC 015180;;; -NGC1585;G;04:27:33.01;-42:09:54.8;Cae;0.85;0.63;168;14.23;;12.04;11.44;11.29;22.51;Sc;;;;;;;;2MASX J04273300-4209549,ESO 303-018,ESO-LV 303-0180,IRAS 04259-4216,MCG -07-10-006,PGC 015150;;The APMUKS data include two superposed stars.; -NGC1586;G;04:30:38.23;-00:18:15.0;Eri;1.68;0.85;154;13.50;;11.14;10.54;10.21;23.44;SBbc;;;;;;;;2MASX J04303822-0018149,IRAS 04280-0024,MCG +00-12-036,PGC 015331,UGC 03062;;; -NGC1587;G;04:30:39.94;+00:39:41.7;Tau;2.08;1.48;73;13.30;;9.45;8.81;8.51;23.17;E;;;;;;;;2MASX J04303992+0039421,MCG +00-12-035,PGC 015332,UGC 03063;;; -NGC1588;G;04:30:43.77;+00:39:53.0;Tau;1.26;0.70;167;14.10;;;;;23.22;E;;;;;;;;MCG +00-12-037,PGC 015340,UGC 03064;;; -NGC1589;G;04:30:45.44;+00:51:49.2;Tau;3.06;0.98;160;13.80;;9.27;8.52;8.24;23.28;Sab;;;;;;;;2MASX J04304545+0051491,MCG +00-12-038,PGC 015342,SDSS J043045.45+005149.2,UGC 03065;;; -NGC1590;G;04:31:10.22;+07:37:51.2;Tau;0.90;0.80;110;14.60;;11.29;10.59;10.25;22.89;Sc;;;;;;;;2MASX J04311020+0737513,IRAS 04284+0731,MCG +01-12-008,PGC 015368,SDSS J043110.24+073751.1,UGC 03071;;; -NGC1591;G;04:29:30.55;-26:42:47.2;Eri;1.39;0.83;29;13.77;;11.16;10.53;10.21;22.82;SBab;;;;;;;;2MASX J04293054-2642472,ESO 484-025,ESO-LV 484-0250,IRAS 04274-2649,MCG -04-11-015,PGC 015276;;; -NGC1592;G;04:29:40.13;-27:24:30.7;Eri;1.02;0.61;97;13.94;14.09;13.23;13.01;12.66;22.75;I;;;;;;;;ESO 421-002,ESO-LV 421-0020,MCG -05-11-011,PGC 015292;;VV notes this as a '3+2?' interacting system.; -NGC1593;G;04:32:06.12;+00:34:02.5;Tau;1.36;0.57;129;14.80;;11.15;10.51;10.41;24.11;S0;;;;;1608;2077;;2MASX J04320614+0034028,MCG +00-12-044,PGC 015447,UGC 03082;;; -NGC1594;G;04:30:51.59;-05:47:53.8;Eri;1.67;1.18;89;13.30;;11.04;10.33;9.90;23.31;Sbc;;;;;;2075;;2MASX J04305162-0547539,IRAS 04284-0554,MCG -01-12-014,PGC 015348;;; -NGC1595;G;04:28:21.76;-47:48:57.2;Cae;1.50;1.09;12;13.75;;10.70;10.03;9.75;23.40;E;;;;;;;;2MASX J04282173-4748573,ESO 202-025,ESO-LV 202-0250,PGC 015195;;; -NGC1596;G;04:27:38.11;-55:01:40.1;Dor;3.87;1.02;19;12.01;10.97;8.94;8.27;8.05;23.59;S0;;;;;;;;2MASX J04273810-5501401,ESO 157-031,ESO-LV 157-0310,PGC 015153;;; -NGC1597;G;04:31:13.46;-11:17:25.5;Eri;1.02;0.79;93;15.00;;11.36;10.62;10.33;23.70;E-S0;;;;;;;;2MASX J04311349-1117247,MCG -02-12-032,PGC 015374;;; -NGC1598;G;04:28:33.67;-47:46:57.2;Cae;1.40;0.73;133;13.91;;11.47;10.81;10.42;22.75;SBc;;;;;;;;2MASX J04283365-4746574,ESO 202-026,ESO-LV 202-0260,IRAS 04271-4753,PGC 015204;;; -NGC1599;G;04:31:38.74;-04:35:18.0;Eri;0.82;0.77;40;14.20;;12.69;12.16;12.18;22.35;SBc;;;;;;;;2MASX J04313873-0435179,IRAS 04292-0441,MCG -01-12-016,PGC 015403;;This may also be NGC 1610.; -NGC1600;G;04:31:39.94;-05:05:10.5;Eri;3.33;2.02;5;8.90;;9.02;8.34;8.04;23.39;E;;;;;;;;2MASX J04313985-0505099,MCG -01-12-017,PGC 015406;;; -NGC1601;G;04:31:41.73;-05:03:37.3;Eri;0.94;0.73;89;16.00;;11.78;11.13;10.87;23.43;S0;;;;;;;;2MASX J04314173-0503369,MCG -01-12-018,PGC 015413;;; -NGC1602;G;04:27:54.97;-55:03:27.8;Dor;1.87;0.99;88;13.79;13.33;12.87;12.14;12.02;22.94;SBm;;;;;;;;2MASX J04275497-5503282,ESO 157-032,ESO-LV 157-0320,IRAS 04267-5510,PGC 015168;;; -NGC1603;G;04:31:49.95;-05:05:39.9;Eri;0.88;0.57;57;15.50;;11.63;11.06;10.71;23.17;S0;;;;;;;;2MASX J04314996-0505399,MCG -01-12-019,PGC 015424;;; -NGC1604;G;04:31:58.57;-05:22:11.8;Eri;1.35;0.78;69;14.50;;10.84;10.11;9.90;24.01;S0;;;;;;;;2MASX J04315859-0522107,MCG -01-12-020,PGC 015433;;; -NGC1605;OCl;04:34:52.28;+45:16:17.0;Per;3.30;;;11.63;10.70;;;;;;;;;;;;;MWSC 0394;;; -NGC1606;G;04:32:03.34;-05:01:56.8;Eri;0.57;0.49;94;17.00;;12.85;12.17;11.85;23.73;S0-a;;;;;;;;2MASX J04320334-0501567,MCG -01-12-022,PGC 015443;;; -NGC1607;G;04:32:03.09;-04:27:35.8;Eri;1.33;0.51;66;15.00;;11.62;10.87;10.71;;S0-a;;;;;;;;2MASX J04320309-0427357,IRAS 04295-0433,MCG -01-12-023,PGC 015442;;; -NGC1608;Dup;04:32:06.12;+00:34:02.5;Tau;;;;;;;;;;;;;;;1593;;;;;; -NGC1609;G;04:32:45.08;-04:22:20.7;Eri;1.24;0.78;103;15.00;;10.63;9.92;9.64;23.73;S0-a;;;;;;;;2MASX J04324510-0422207,MCG -01-12-025,PGC 015480;;; -NGC1610;G;04:34:13.87;-04:41:59.1;Eri;1.10;0.70;156;15.01;;12.94;12.11;11.98;24.37;Sab;;;;;1619;;;2MASX J04341387-0441590,PGC 015543;;Identifications as NGC 1610 and NGC 1619 are very uncertain.; -NGC1611;G;04:33:05.96;-04:17:50.8;Eri;1.80;0.48;99;15.00;;10.47;9.68;9.41;24.29;S0-a;;;;;;;;2MASX J04330596-0417508,IRAS 04306-0424,MCG -01-12-029,PGC 015501;;; -NGC1612;G;04:33:13.13;-04:10:20.7;Eri;1.36;0.94;138;15.00;;11.03;10.34;10.12;24.12;S0-a;;;;;;;;2MASX J04331312-0410208,IRAS 04307-0416,MCG -01-12-030,PGC 015507;;; -NGC1613;G;04:33:25.33;-04:15:55.5;Eri;1.14;0.69;28;15.00;;11.51;10.83;10.54;23.66;S0-a;;;;;;;;2MASX J04332534-0415556,MCG -01-12-031,PGC 015518;;; -NGC1614;G;04:33:59.85;-08:34:44.0;Eri;1.26;0.95;20;14.66;13.99;10.63;9.89;9.47;22.62;SBc;;;;;;;;2MASX J04340002-0834445,IRAS 04315-0840,MCG -01-12-032,PGC 015538,SDSS J043400.04-083445.0;;Diameter includes companions or long extensions.; -NGC1615;G;04:36:01.04;+19:57:01.2;Tau;1.36;0.71;107;15.00;;10.35;9.62;9.29;21.37;E-S0;;;;;;;;2MASX J04360101+1957008,MCG +03-12-005,PGC 015608,UGC 03096;;; -NGC1616;G;04:32:41.73;-43:42:57.2;Cae;1.91;1.03;33;13.65;;10.71;10.02;9.68;22.99;SABb;;;;;;;;2MASX J04324173-4342572,ESO 251-010,ESO-LV 251-0100,IRAS 04311-4349,MCG -07-10-013,PGC 015479;;; -NGC1617;G;04:31:39.53;-54:36:08.2;Dor;5.24;2.50;112;11.35;10.26;7.99;7.33;7.08;23.17;SBa;;;;;;;;2MASX J04313953-5436081,ESO 157-041,ESO-LV 157-0410,IRAS 04305-5442,PGC 015405;;; -NGC1618;G;04:36:06.60;-03:08:55.5;Eri;2.14;0.71;22;13.50;;10.60;9.89;9.63;23.13;Sb;;;;;;;;2MASX J04360657-0308553,IRAS 04336-0314,MCG -01-12-034,PGC 015611;;; -NGC1619;Dup;04:34:13.87;-04:41:59.1;Eri;;;;;;;;;;;;;;;1610;;;;;; -NGC1620;G;04:36:37.35;-00:08:37.0;Eri;3.48;0.91;23;12.50;;9.88;9.21;8.92;23.27;SABc;;;;;;;;2MASX J04363734-0008370,IRAS 04340-0014,MCG +00-12-052,PGC 015638,SDSS J043637.34-000836.7,UGC 03103;;; -NGC1621;G;04:36:25.06;-04:59:14.3;Eri;1.34;0.91;98;14.50;;10.97;10.31;10.13;24.13;E;;;;;1626;;;2MASX J04362507-0459139,MCG -01-12-035,PGC 015626;;; -NGC1622;G;04:36:36.64;-03:11:19.8;Eri;2.86;0.52;29;13.00;;10.12;9.46;9.18;23.52;SABa;;;;;;;;2MASX J04363665-0311200,MCG -01-12-036,PGC 015635;;HOLM 077B is a star.; -NGC1623;G;04:35:32.41;-13:33:23.2;Eri;0.78;0.42;16;16.02;;12.42;11.69;11.46;24.70;S0-a;;;;;;;;2MASX J04353239-1333234,PGC 015591;;; -NGC1624;Cl+N;04:40:36.50;+50:27:42.0;Per;3.00;;;;11.80;;;;;;;;;;;;;2MASX J04403475+5027419,LBN 722,MWSC 0408;;; -NGC1625;G;04:37:06.26;-03:18:12.6;Eri;2.56;0.57;130;13.00;;;;;22.86;SBb;;;;;;;;IRAS 04346-0324,MCG -01-12-038,PGC 015654;;; -NGC1626;Dup;04:36:25.06;-04:59:14.3;Eri;;;;;;;;;;;;;;;1621;;;;;; -NGC1627;G;04:37:38.00;-04:53:14.9;Eri;1.65;1.37;150;13.40;;11.44;10.80;10.55;23.20;Sc;;;;;;;;2MASX J04373798-0453148,IRAS 04351-0459,MCG -01-12-040,PGC 015675;;; -NGC1628;G;04:37:36.26;-04:42:53.4;Eri;1.91;0.43;6;14.00;;10.73;9.99;9.69;23.39;Sb;;;;;;;;2MASX J04373626-0442534,IRAS 04351-0448,MCG -01-12-039,PGC 015674;;; -NGC1629;GCl;04:29:36.91;-71:50:17.8;Hyi;1.70;1.70;;13.31;12.68;;;;;;;;;;;;;ESO 055-024;;In the Large Magellanic Cloud.; -NGC1630;G;04:37:15.48;-18:54:05.5;Eri;0.78;0.59;138;15.14;;11.91;11.34;11.03;23.36;S0-a;;;;;;;;2MASX J04371551-1854050,ESO 551-019,ESO-LV 551-0190,PGC 015659;;; -NGC1631;G;04:38:24.17;-20:38:59.5;Eri;1.33;0.89;54;14.30;;11.23;10.51;10.19;23.49;S0-a;;;;;;;;2MASX J04382417-2038594,ESO 551-021,ESO-LV 551-0210,IRAS 04362-2045,MCG -03-12-017,PGC 015705;;; -NGC1632;G;04:39:58.58;-09:27:22.4;Eri;0.73;0.36;43;15.51;;11.77;11.14;10.81;23.38;S0-a;;;;;;0386;;2MASX J04395855-0927223,PGC 015769;;; -NGC1633;G;04:40:09.11;+07:20:58.0;Tau;1.09;0.90;5;14.60;;11.28;10.58;10.33;23.34;SABa;;;;;;;;2MASX J04400910+0720577,IRAS 04374+0715,MCG +01-12-014,PGC 015774,UGC 03125;;; -NGC1634;G;04:40:09.78;+07:20:19.6;Tau;0.67;0.46;167;15.00;;11.41;10.67;10.47;22.95;E;;;;;;;;2MASX J04400977+0720197,MCG +01-12-015,PGC 015775;;; -NGC1635;G;04:40:07.88;-00:32:51.1;Eri;1.53;1.37;175;13.50;;10.31;9.58;9.35;23.04;S0-a;;;;;;;;2MASX J04400788-0032512,IRAS 04375-0038,MCG +00-12-063,PGC 015773,UGC 03126;;; -NGC1636;G;04:40:40.20;-08:36:27.9;Eri;1.24;0.97;175;13.84;;10.86;10.14;9.84;22.98;Sab;;;;;;;;2MASX J04404018-0836281,IRAS 04382-0842,MCG -01-12-042,PGC 015800;;; -NGC1637;G;04:41:28.18;-02:51:28.7;Eri;3.18;2.74;16;11.40;;8.85;8.22;7.97;22.68;Sc;;;;;;;;2MASX J04412822-0251289,IRAS 04389-0257,MCG +00-12-068,PGC 015821,UGCA 093;;Extended HIPASS source; -NGC1638;G;04:41:36.51;-01:48:32.5;Eri;2.08;1.26;67;12.60;;10.07;9.42;9.21;23.43;S0;;;;;;;;2MASX J04413651-0148324,MCG +00-12-069,PGC 015824,UGC 03133;;Confused HIPASS source; -NGC1639;Other;04:40:52.21;-16:59:27.1;Eri;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC1640;G;04:42:14.52;-20:26:05.2;Eri;2.72;2.60;50;12.51;11.72;9.81;9.14;8.90;23.30;Sb;;;;;;;;2MASX J04421453-2026052,ESO 551-027,ESO-LV 551-0270,IRAS 04400-2031,MCG -03-12-018,PGC 015850;;; -NGC1641;OCl;04:35:34.92;-65:45:46.4;Dor;9.60;;;;;;;;;;;;;;;;;ESO 084-024,MWSC 0396;;; -NGC1642;G;04:42:54.91;+00:37:06.9;Ori;1.66;1.43;151;12.90;;10.56;9.89;9.57;23.04;Sc;;;;;;;;2MASX J04425489+0037070,IRAS 04403+0031,MCG +00-12-072,PGC 015867,UGC 03140;;; -NGC1643;G;04:43:43.95;-05:19:10.0;Eri;1.24;0.81;7;14.17;;11.41;10.71;10.47;22.94;SBbc;;;;;;;;2MASX J04434396-0519100,IRAS 04412-0524,MCG -01-13-001,PGC 015891,SDSS J044343.95-051909.9;;; -NGC1644;GCl;04:37:40.09;-66:11:56.7;Dor;1.80;1.50;150;13.52;12.89;;;;;;;;;;;;;2MASX J04373897-6611589,2MASX J04373897-6611589 ID,2MASX J04374008-6611564,ESO 084-030;;One 2MASS source is centered 7 arcsec southwest of the cluster core.; -NGC1645;G;04:44:06.38;-05:27:56.2;Eri;2.18;0.83;89;14.00;;10.60;9.88;9.70;24.41;S0-a;;;;;;;;2MASX J04440640-0527567,MCG -01-13-002,PGC 015903;;; -NGC1646;G;04:44:23.60;-08:31:58.0;Eri;1.49;0.81;155;14.00;;10.30;9.73;9.44;24.21;E-S0;;;;;;;;2MASX J04442354-0831521,PGC 015914;;; -NGC1647;OCl;04:45:55.57;+19:05:42.4;Tau;27.00;;;6.82;6.40;;;;;;;;;;;;;MWSC 0416;;; -NGC1648;G;04:44:34.80;-08:28:43.9;Eri;0.84;0.53;179;16.00;;11.90;11.19;11.02;23.83;S0;;;;;;;;2MASX J04443480-0828432,MCG -01-13-004,PGC 015886,PGC 015920;;CGPG RA (04 41.2) is 1 minute in error.; -NGC1649;GCl;04:38:22.85;-68:40:22.5;Dor;1.50;1.50;0;13.95;13.13;;;;;;;;;;1652;;;ESO 055-032;;In the Large Magellanic Cloud.;Diameters and magnitudes are from SIMBAD’s NGC1652. -NGC1650;G;04:45:11.51;-15:52:12.1;Eri;2.40;1.13;168;14.00;;10.39;9.63;9.38;23.93;E;;;;;;;;2MASX J04451155-1552121,MCG -03-13-001,PGC 015931;;; -NGC1651;GCl;04:37:32.27;-70:35:09.1;Men;2.70;2.70;;12.99;12.28;;;;;;;;;;;;;2MASX J04373231-7035019,ESO 055-030;;The 2MASS position is centered on a superposed field star.; -NGC1652;Dup;04:38:22.85;-68:40:22.5;Dor;;;;;;;;;;;;;;;1649;;;;;; -NGC1653;G;04:45:47.35;-02:23:34.2;Ori;1.79;1.68;175;12.90;;9.92;9.22;8.98;23.06;E;;;;;;;;2MASX J04454736-0223340,MCG +00-13-003,PGC 015942,UGC 03153;;; -NGC1654;G;04:45:48.45;-02:05:02.0;Ori;0.85;0.79;5;14.20;;11.61;10.93;10.73;22.80;SBa;;;;;;;;2MASX J04454844-0205020,IRAS 04433-0210,PGC 015943,UGC 03154;;; -NGC1655;Other;04:47:11.90;+20:55:25.2;Tau;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1656;G;04:45:53.39;-05:08:12.2;Eri;1.74;0.96;109;14.00;;10.63;9.95;9.73;24.23;S0-a;;;;;;;;2MASX J04455340-0508121,MCG -01-13-005,PGC 015949;;; -NGC1657;G;04:46:07.26;-02:04:38.2;Ori;1.15;0.85;154;14.30;;12.59;11.99;11.59;23.70;SABb;;;;;;;;2MASX J04460725-0204381,MCG +00-13-004,PGC 015958,UGC 03156;;; -NGC1658;G;04:44:01.36;-41:27:48.3;Cae;1.02;0.60;125;14.38;;11.31;10.62;10.29;22.69;Sbc;;;;;;;;2MASX J04440136-4127483,ESO 304-016,ESO-LV 304-0160,MCG -07-10-020,PGC 015899;;; -NGC1659;G;04:46:29.95;-04:47:19.6;Eri;1.50;0.94;51;13.00;;10.82;10.14;9.81;22.46;Sbc;;;;;;;;2MASX J04462995-0447193,IRAS 04440-0452,MCG -01-13-006,PGC 015977;;; -NGC1660;G;04:44:11.41;-41:29:51.3;Cae;1.14;0.62;31;14.86;;11.99;11.27;11.02;23.53;Sa;;;;;;;;2MASX J04441142-4129513,ESO 304-018,ESO-LV 304-0180,MCG -07-10-021,PGC 015908;;; -NGC1661;G;04:47:07.64;-02:03:16.5;Ori;1.15;0.82;36;14.30;;11.45;10.89;10.56;23.13;Sbc;;;;;;;;2MASX J04470763-0203166,MCG +00-13-008,PGC 016000,UGC 03166;;; -NGC1662;OCl;04:48:28.95;+10:55:49.4;Ori;13.80;;;7.00;6.40;;;;;;;;;;;;;MWSC 0425;;; -NGC1663;OCl;04:49:23.54;+13:09:03.8;Ori;7.20;;;15.78;14.54;;;;;;;;;;;;;MWSC 0426;;; -NGC1664;OCl;04:51:05.43;+43:40:34.2;Aur;11.40;;;8.02;7.60;;;;;;;;;;;;;MWSC 0430;;; -NGC1665;G;04:48:17.07;-05:25:39.4;Eri;1.79;1.07;56;14.00;;10.24;9.55;9.26;23.85;S0;;;;;;;;2MASX J04481706-0525395,MCG -01-13-009,PGC 016044;;; -NGC1666;G;04:48:32.84;-06:34:11.9;Eri;1.35;1.26;160;13.50;;10.36;9.69;9.44;23.05;S0-a;;;;;;;;2MASX J04483284-0634124,MCG -01-13-010,PGC 016057;;; -NGC1667;G;04:48:37.14;-06:19:11.9;Eri;1.89;1.47;3;13.66;12.86;9.92;9.18;8.90;22.68;SABc;;;;;1689;;;2MASX J04483720-0619114,IRAS 04461-0624,MCG -01-13-013,PGC 016062,SDSS J044837.18-061911.9;;; -NGC1668;G;04:46:05.93;-44:44:00.1;Cae;1.58;1.04;97;13.76;;10.92;10.27;9.97;23.52;E-S0;;;;;;;;2MASX J04460591-4444001,ESO 251-030,ESO-LV 251-0300,MCG -07-10-023,PGC 015957;;; -NGC1669;G;04:42:59.90;-65:48:51.6;Dor;0.73;0.40;101;14.88;;11.70;10.93;10.68;22.74;Sa;;;;;;;;2MASX J04425988-6548517,ESO 084-038,ESO-LV 84-0380,PGC 015871;;; -NGC1670;G;04:49:42.62;-02:45:37.8;Ori;1.61;0.78;68;14.10;;10.97;10.34;10.08;23.85;S0;;;;;;;;2MASX J04494261-0245375,MCG +00-13-016,PGC 016107;;HOLM 081B is a star.; -NGC1671;G;04:49:34.03;+00:15:10.3;Ori;1.34;0.98;127;13.90;;10.47;9.73;9.47;23.27;S0;;;;;;0395;;2MASX J04493401+0015103,MCG +00-13-015,PGC 016095,UGC 03178;;HOLM 080B is a star.; -NGC1672;G;04:45:42.50;-59:14:49.9;Dor;6.14;5.46;95;10.53;9.68;7.90;7.34;7.02;22.93;Sb;;;;;;;;2MASX J04454255-5914506,ESO 118-043,ESO-LV 118-0430,IRAS 04449-5920,PGC 015941;;Incorrectly identified as NGC 1622 in PKSCAT90 (version 1.01).; -NGC1673;OCl;04:42:39.64;-69:49:16.5;Men;1.00;0.95;40;14.52;14.07;;;;;;;;;;;;;ESO 055-034;;In the Large Magellanic Cloud.; -NGC1674;Other;04:52:24.97;+23:54:27.6;Tau;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1675;Other;04:52:24.97;+23:54:27.6;Tau;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1676;OCl;04:43:54.17;-68:49:39.3;Dor;1.10;1.00;40;;;;;;;;;;;;;;;ESO 055-036;;In the Large Magellanic Cloud.; -NGC1677;G;04:50:52.07;-04:53:33.8;Eri;1.21;0.37;140;15.00;;12.24;11.71;11.38;24.06;S0;;;;;;2099;;2MASX J04505207-0453337,IRAS 04484-0458,MCG -01-13-019,PGC 016146;;; -NGC1678;G;04:51:35.44;-02:37:23.3;Ori;1.28;0.78;76;13.50;;10.53;9.82;9.61;23.52;S0;;;;;;;;2MASX J04513544-0237235,MCG +00-13-019,PGC 016179;;; -NGC1679;G;04:49:54.64;-31:57:52.8;Cae;3.07;2.23;151;12.00;;10.66;10.11;9.88;23.54;SBm;;;;;;;;2MASX J04495558-3157558,ESO 422-001,ESO-LV 422-0010,IRAS 04480-3203,MCG -05-12-004,PGC 016120,UGCA 096;;Position is for center of eccentric bar.; -NGC1680;G;04:48:34.01;-47:48:59.2;Pic;1.33;0.54;102;14.45;;11.90;11.27;10.93;23.10;SBbc;;;;;;;;2MASX J04483401-4748592,ESO 203-004,ESO-LV 203-0040,IRAS 04471-4754,PGC 016058;;; -NGC1681;G;04:51:50.06;-05:48:11.6;Eri;1.19;0.95;80;13.50;13.40;11.17;10.51;10.40;22.65;Sb;;;;;;;;2MASX J04515005-0548115,IRAS 04493-0553,MCG -01-13-026,PGC 016195;;; -NGC1682;G;04:52:19.79;-03:06:21.1;Ori;0.98;0.80;120;14.00;;10.89;10.16;9.90;23.23;E-S0;;;;;;;;2MASX J04521977-0306209,MCG -01-13-028,PGC 016211;;; -NGC1683;G;04:52:17.60;-03:01:28.7;Ori;0.86;0.34;163;15.58;;11.86;11.08;10.83;23.78;Sa;;;;;;;;2MASX J04521763-0301279,PGC 016209;;; -NGC1684;G;04:52:31.15;-03:06:21.8;Ori;2.55;1.66;95;13.00;;9.60;8.93;8.69;23.88;E;;;;;;;;2MASX J04523116-0306220,IRAS 04500-0311,MCG -01-13-031,PGC 016219;;; -NGC1685;G;04:52:34.23;-02:56:57.6;Ori;1.23;0.63;131;16.21;15.18;11.08;10.84;10.33;24.07;S0-a;;;;;;;;2MASX J04523430-0256570,IRAS 04500-0301,MCG -01-13-032,PGC 016222;;; -NGC1686;G;04:52:54.66;-15:20:47.3;Eri;1.85;0.35;27;14.00;;11.31;10.58;10.20;23.34;Sbc;;;;;;;;2MASX J04525466-1520472,MCG -03-13-019,PGC 016239;;; -NGC1687;G;04:51:21.37;-33:56:20.5;Cae;1.35;0.53;43;14.73;;12.61;11.93;11.35;23.55;Sab;;;;;;;;2MASX J04512135-3356204,ESO 361-013,ESO-LV 361-0130,MCG -06-11-005,PGC 016166;;; -NGC1688;G;04:48:23.79;-59:48:01.2;Dor;2.47;1.67;166;12.57;;10.56;10.00;9.68;22.47;SBc;;;;;;;;2MASX J04482378-5948011,ESO 119-006,ESO-LV 119-0060,IRAS 04476-5953,PGC 016050;;; -NGC1689;Dup;04:48:37.14;-06:19:11.9;Eri;;;;;;;;;;;;;;;1667;;;;;; -NGC1690;G;04:54:19.26;+01:38:25.3;Ori;1.07;0.90;85;15.00;;11.00;10.39;10.03;23.84;E;;;;;;;;2MASX J04541926+0138253,MCG +00-13-027,PGC 016290,UGC 03198;;; -NGC1691;G;04:54:38.34;+03:16:04.7;Ori;1.54;1.47;30;13.20;;10.26;9.54;9.20;22.78;S0-a;;;;;;;;2MASX J04543832+0316045,IRAS 04520+0311,MCG +01-13-009,PGC 016300,UGC 03201;;; -NGC1692;G;04:55:23.73;-20:34:16.2;Lep;1.38;1.21;173;14.21;14.00;11.00;10.28;9.99;23.48;S0;;;;;;;;2MASX J04552373-2034159,ESO 552-021,ESO-LV 552-0210,MCG -03-13-029,PGC 016336;;; -NGC1693;GCl;04:47:38.77;-69:20:37.1;Dor;1.10;1.00;10;13.15;12.89;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1694;G;04:55:16.82;-04:39:09.6;Eri;1.18;0.73;31;15.00;;11.93;11.27;11.03;23.75;S0-a;;;;;;;;2MASX J04551680-0439098,MCG -01-13-035a,PGC 016335;;MCG RA is +0.5 minutes off.; -NGC1695;GCl;04:47:44.48;-69:22:25.5;Dor;1.40;1.30;100;12.50;12.16;;;;;;;;;;;;;ESO 056-003;;In the Large Magellanic Cloud.; -NGC1696;OCl;04:48:29.97;-68:14:34.3;Dor;1.10;1.10;;14.44;13.95;;;;;;;;;;;;;ESO 056-004;;In the Large Magellanic Cloud.; -NGC1697;GCl;04:48:35.81;-68:33:30.4;Dor;2.30;2.30;;13.15;12.62;;;;;;;;;;;;;2MASX J04483574-6833304,ESO 056-005;;In the Large Magellanic Cloud.; -NGC1698;GCl;04:49:05.05;-69:06:54.3;Dor;1.50;1.40;70;12.24;12.07;;;;;;;;;;;;;2MASX J04490504-6906546,ESO 056-006;;In the Large Magellanic Cloud.; -NGC1699;G;04:56:59.63;-04:45:24.7;Eri;1.03;0.74;166;15.00;;11.49;10.95;10.63;;Sb;;;;;;;;2MASX J04565963-0445246,MCG -01-13-039,PGC 016390,SDSS J045659.63-044524.7;;; -NGC1700;G;04:56:56.31;-04:51:56.8;Eri;3.11;1.98;87;12.00;;9.02;8.33;8.09;23.34;E;;;;;;;;2MASX J04565634-0451566,MCG -01-13-038,PGC 016386;;; -NGC1701;G;04:55:51.13;-29:53:00.4;Cae;1.24;0.94;136;13.63;;10.83;10.14;9.89;22.65;Sb;;;;;;;;2MASX J04555112-2953002,ESO 422-011,ESO-LV 422-0110,IRAS 04539-2957,MCG -05-12-010,PGC 016352;;; -NGC1702;OCl;04:49:27.68;-69:51:02.8;Men;1.20;1.20;;12.68;12.50;;;;;;;;;;;;;ESO 056-008;;In the Large Magellanic Cloud.; -NGC1703;G;04:52:52.15;-59:44:32.1;Dor;2.68;2.51;25;12.31;;9.72;9.14;8.83;22.85;SBb;;;;;;;;2MASX J04525214-5944319,ESO 119-019,ESO-LV 119-0190,IRAS 04521-5949,PGC 016234;;; -NGC1704;OCl;04:49:55.46;-69:45:22.7;Dor;1.70;1.60;70;11.78;11.50;;;;;;;;;;;;;ESO 056-009;;In the Large Magellanic Cloud.; -NGC1705;G;04:54:13.50;-53:21:39.8;Pic;1.87;1.44;53;12.96;12.56;11.21;10.76;10.53;22.89;E-S0;;;;;;;;2MASX J04541350-5321398,ESO 158-013,ESO-LV 158-0130,IRAS 04531-5326,PGC 016282;;; -NGC1706;G;04:52:31.02;-62:59:08.8;Dor;1.43;0.97;129;13.97;;10.90;10.29;10.03;22.84;Sab;;;;;;;;2MASX J04523101-6259089,ESO 085-007,ESO-LV 85-0070,PGC 016220;;; -NGC1707;Other;04:58:20.61;+08:14:18.1;Ori;;;;;;;;;;;;;;;;2107;;;;Four Galactic stars.; -NGC1708;OCl;05:03:21.88;+52:49:55.5;Cam;6.00;;;;;;;;;;;;;;;;;MWSC 0458;;; -NGC1709;G;04:58:44.03;-00:28:41.7;Ori;0.93;0.69;46;15.60;;11.39;10.63;10.38;23.59;S0;;;;;;;;2MASX J04584400-0028418,MCG +00-13-054,PGC 016462;;; -NGC1710;G;04:57:17.07;-15:17:20.4;Lep;1.61;1.26;19;14.00;;10.25;9.54;9.21;24.00;E-S0;;;;;;2108;;2MASX J04571707-1517204,MCG -03-13-037,PGC 016396;;; -NGC1711;GCl;04:50:36.13;-69:59:07.6;Men;3.50;3.30;40;11.22;11.10;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1712;*Ass;04:50:58.43;-69:24:27.0;Dor;4.00;3.00;20;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1713;G;04:58:54.61;-00:29:20.1;Ori;1.33;1.10;40;13.88;;10.11;9.41;9.13;23.36;E;;;;;;;;2MASX J04585460-0029199,MCG +00-13-056,PGC 016471,UGC 03222;;; -NGC1714;Cl+N;04:52:08.85;-66:55:24.2;Dor;1.10;1.10;;11.51;11.61;;;;;;;;;;;;;2MASX J04520886-6655238,ESO 085-008,IRAS 04520-6700;;Open cluster involved. In LMC.; -NGC1715;EmN;04:52:10.48;-66:54:31.3;Dor;1.10;1.00;130;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1716;G;04:58:13.32;-20:21:48.9;Lep;1.32;1.12;20;13.93;;11.18;10.54;10.12;23.15;Sbc;;;;;;;;2MASX J04581333-2021487,ESO 552-034,ESO-LV 552-0340,IRAS 04560-2026,MCG -03-13-038,PGC 016434;;; -NGC1717;*;04:59:19.35;-00:13:43.5;Ori;;;;;;;;;;;;;;;;;;;;Identification as NGC 1717 is very uncertain.;In SIMBAD NGC 1717 is UCAC2 31626222. -NGC1718;OCl;04:52:25.39;-67:03:02.4;Dor;1.80;1.80;;13.01;12.25;;;;;;;;;;;;;ESO 085-010;;In the Large Magellanic Cloud.; -NGC1719;G;04:59:34.63;-00:15:37.5;Ori;1.09;0.38;101;14.50;;10.64;9.96;9.72;22.91;Sa;;;;;;;;2MASX J04593465-0015374,MCG +00-13-060,PGC 016501,UGC 03226;;HOLM 083B is a star.; -NGC1720;G;04:59:20.63;-07:51:32.3;Eri;1.96;1.22;85;13.00;;10.20;9.49;9.09;;SBab;;;;;;;;2MASX J04592064-0751321,IRAS 04569-0756,MCG -01-13-041,PGC 016485;;; -NGC1721;G;04:59:17.40;-11:07:07.4;Eri;1.58;0.83;130;13.00;;10.21;9.54;9.29;23.52;S0;;;;;;;;2MASX J04591738-1107071,IRAS 04569-1111,MCG -02-13-027,PGC 016484;;; -NGC1722;Cl+N;04:52:00.60;-69:22:30.0;Dor;2.50;2.10;170;;;;;;;;;;;;;;;;;Within boundaries of LMC; -NGC1723;G;04:59:25.89;-10:58:50.5;Eri;3.03;1.88;68;12.50;;9.98;9.24;8.97;;Sa;;;;;;;;2MASX J04592589-1058504,IRAS 04571-1103,MCG -02-13-029,PGC 016493,TYC 5326-1591-1;;; -NGC1724;OCl;05:03:32.32;+49:29:30.4;Aur;3.00;;;;;;;;;;;;;;;;;MWSC 0459;;; -NGC1725;G;04:59:22.89;-11:07:56.3;Eri;1.39;1.30;15;13.00;;10.35;9.66;9.39;23.29;E-S0;;;;;;;;2MASX J04592288-1107561,MCG -02-13-028,PGC 016488;;; -NGC1726;G;04:59:41.90;-07:45:18.9;Eri;2.90;1.82;1;13.00;;9.52;8.85;8.61;23.71;S0;;;;;;;;2MASX J04594189-0745185,MCG -01-13-042,PGC 016508;;; -NGC1727;Cl+N;04:52:12.77;-69:20:20.1;Dor;2.80;2.00;90;;;;;;;;;;;;;;;;;Nebulosity involved.; -NGC1728;G;04:59:27.73;-11:07:22.6;Eri;1.24;0.80;179;13.00;;10.23;9.52;9.21;;Sa;;;;;;;;2MASX J04592771-1107224,MCG -02-13-030,PGC 016495;;; -NGC1729;G;05:00:15.69;-03:21:09.0;Ori;1.81;1.46;9;13.20;;11.05;10.45;10.02;;Sc;;;;;;;;2MASX J05001569-0321088,IRAS 04577-0325,MCG -01-13-043,PGC 016529;;; -NGC1730;G;04:59:31.83;-15:49:25.1;Lep;2.28;0.96;100;13.00;;9.86;9.21;9.01;23.34;Sa;;;;;;2113;;2MASX J04593187-1549252,MCG -03-13-043,PGC 016499;;; -NGC1731;*Ass;04:53:32.09;-66:55:31.0;Dor;4.80;4.50;90;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1732;OCl;04:53:10.59;-68:39:00.0;Dor;1.10;1.00;50;12.44;12.30;;;;;;;;;;;;;ESO 056-017;;In the Large Magellanic Cloud.; -NGC1733;OCl;04:54:04.75;-66:40:57.3;Dor;1.50;1.40;20;13.66;13.31;;;;;;;;;;;;;ESO 085-013;;In the Large Magellanic Cloud.; -NGC1734;OCl;04:53:33.49;-68:46:07.6;Dor;1.20;1.10;50;13.32;13.10;;;;;;;;;;;;;ESO 056-018;;In the Large Magellanic Cloud.; -NGC1735;OCl;04:54:19.66;-67:05:58.4;Dor;1.80;1.50;140;10.88;10.76;;;;;;;;;;;;;ESO 085-015;;In the Large Magellanic Cloud.; -NGC1736;EmN;04:53:01.55;-68:03:11.2;Dor;1.90;1.40;170;15.50;;13.01;13.11;12.24;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1737;HII;04:53:59.71;-69:10:28.4;Dor;1.10;0.95;110;;;;;;;;;;;;;;;2MASX J04535969-6910281,ESO 056-020;;In large complex in the Large Magellanic Cloud.; -NGC1738;G;05:01:46.70;-18:09:25.4;Lep;1.35;0.81;36;13.70;;11.39;10.81;10.48;22.70;SBbc;;;;;;;;2MASX J05014670-1809252,ESO 552-049,ESO-LV 552-0490,IRAS 04595-1813,MCG -03-13-054,PGC 016585;;; -NGC1739;G;05:01:47.34;-18:10:00.5;Lep;1.50;0.72;104;14.24;;12.73;12.18;11.84;23.23;SBbc;;;;;;;;2MASX J05014733-1810002,ESO 552-050,ESO-LV 552-0500,MCG -03-13-055,PGC 016586;;; -NGC1740;G;05:01:54.80;-03:17:46.8;Ori;1.79;1.10;68;15.00;;10.58;9.90;9.68;23.87;E-S0;;;;;;;;2MASX J05015482-0317464,MCG -01-13-046,PGC 016589;;; -NGC1741;G;05:01:38.30;-04:15:25.2;Eri;1.21;0.62;65;13.70;;;;;24.08;Sm;;;;;;;;IRAS 04591-0419,MCG -01-13-045,PGC 016574;;Hickson (1982:Ap.J. 255,382) lists declination as -01d19m42s.; -NGC1741B;G;05:01:36.2;-04:15:43;Eri;0.93;0.46;42;15.35;;13.91;13.57;13.46;23.19;Scd;;;;;;;;2MASX J05013555-0415474,MCG -01-13-045 NED01,PGC 016570;;; -NGC1742;*;05:01:59.33;-03:17:41.9;Ori;;;;;;;;;;;;;;;;;;;;; -NGC1743;Neb;04:54:02.67;-69:11:55.0;Dor;0.95;0.85;130;;11.26;;;;;;;;;;;;;ESO 056-021;;In the Large Magellanic Cloud.; -NGC1744;G;04:59:57.80;-26:01:20.0;Lep;5.28;1.99;169;11.90;11.41;10.52;9.98;9.78;23.23;SBcd;;;;;;;;2MASX J04595780-2601199,ESO 486-005,ESO-LV 486-0050,IRAS 04579-2605,MCG -04-12-029,PGC 016517;;Extended HIPASS source; -NGC1745;Neb;04:54:20.62;-69:09:32.0;Dor;1.20;1.10;90;;13.40;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1746;OCl;05:03:50.19;+23:46:03.5;Tau;18.00;;;;6.10;;;;;;;;;;;;;;;; -NGC1747;OCl;04:55:10.98;-67:10:08.0;Dor;4.40;4.40;;9.41;9.37;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1748;Neb;04:54:25.97;-69:11:02.8;Dor;0.90;0.80;100;12.75;12.30;;;;;;;;;;;2114;;ESO 056-024,IRAS 04546-6915;;In large complex in the Large Magellanic Cloud.; -NGC1749;OCl;04:54:56.06;-68:11:19.2;Dor;1.50;1.30;50;13.59;13.56;;;;;;;;;;;;;ESO 056-026;;In the Large Magellanic Cloud.; -NGC1750;OCl;05:04:00.03;+23:38:44.8;Tau;;;;;;;;;;;;;;;;;;;;; -NGC1751;GCl;04:54:12.58;-69:48:21.0;Dor;1.60;1.50;60;15.06;11.73;;;;;;;;;;;;;2MASX J04541252-6948211,ESO 056-023;;In the Large Magellanic Cloud.; -NGC1752;G;05:02:09.49;-08:14:27.1;Eri;2.95;0.83;79;13.00;;10.02;9.29;9.00;23.36;Sc;;;;;;;;2MASX J05020948-0814261,IRAS 04597-0818,MCG -01-13-047,PGC 016600;;; -NGC1753;G;05:02:32.34;-03:20:39.6;Ori;1.32;0.42;180;15.50;;11.87;11.15;10.96;23.57;SBa;;;;;;;;2MASX J05023235-0320394,MCG -01-13-048,PGC 016610;;; -NGC1754;GCl;04:54:18.95;-70:26:32.9;Men;1.60;1.60;;12.32;11.57;;;;;;;;;;;;;2MASX J04541898-7026330,ESO 056-025;;The 2MASS data include a nearby field star.; -NGC1755;GCl;04:55:14.87;-68:12:14.6;Dor;2.20;1.90;130;10.00;9.85;;;;;;;;;;;;;ESO 056-028;;In the Large Magellanic Cloud.; -NGC1756;GCl;04:54:49.83;-69:14:15.5;Dor;1.40;1.30;130;12.64;12.24;;;;;;;;;;;;;ESO 056-027;;In the Large Magellanic Cloud.; -NGC1757;Other;05:02:39.36;-04:43:22.6;Eri;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1758;OCl;05:04:42.24;+23:46:53.9;Tau;;;;;;;;;;;;;;;;;;;;; -NGC1759;G;05:00:49.04;-38:40:26.0;Cae;1.95;1.48;148;14.11;;11.37;10.60;10.50;24.38;E;;;;;;;;2MASX J05004903-3840259,ESO 305-001,ESO-LV 305-0010,MCG -06-12-001,PGC 016545;;; -NGC1760;HII;04:56:44.37;-66:31:38.4;Dor;5.10;2.10;80;;;;;;;;;;;;;;;ESO 085-019;;In the Large Magellanic Cloud.; -NGC1761;*Ass;04:56:37.73;-66:28:43.9;Dor;4.20;3.00;110;;9.94;;;;;;;;;;;;;ESO 085-018;;In the Large Magellanic Cloud.; -NGC1762;G;05:03:37.03;+01:34:24.0;Ori;1.75;1.12;177;13.50;;10.49;9.80;9.52;22.93;Sc;;;;;;;;2MASX J05033701+0134239,IRAS 05010+0130,MCG +00-13-067,PGC 016654,UGC 03238;;; -NGC1763;Cl+N;04:56:49.19;-66:24:32.7;Dor;5.20;3.60;70;;9.40;;;;;;;;;;;;;;;"Stars involved; in the Large Magellanic Cloud."; -NGC1764;OCl;04:56:27.72;-67:41:37.5;Dor;1.10;1.10;;12.92;12.58;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1765;G;04:58:24.16;-62:01:42.2;Dor;1.18;0.96;129;13.94;;10.53;9.84;9.55;23.18;E;;;;;;;;2MASX J04582416-6201423,ESO 119-024,ESO-LV 119-0240,PGC 016444;;; -NGC1766;OCl;04:55:57.60;-70:13:30.2;Men;1.00;0.90;30;12.33;12.22;;;;;;;;;;;;;ESO 056-029;;In the Large Magellanic Cloud.; -NGC1767;OCl;04:56:27.30;-69:24:02.0;Dor;1.30;1.20;30;10.85;10.61;;;;;;;;;;;;;;;Nebulosity involved.; -NGC1768;OCl;04:57:00.16;-68:14:58.0;Dor;0.65;0.55;50;13.51;12.79;;;;;;;;;;;;;ESO 056-032;;In the Large Magellanic Cloud.; -NGC1769;EmN;04:57:47.37;-66:28:08.7;Dor;4.10;2.60;60;;;;;;;;;;;;;;;ESO 085-023;;In the Large Magellanic Cloud.; -NGC1770;Cl+N;04:57:15.71;-68:25:05.1;Dor;4.10;4.10;;;;;;;;;;;;;;;;;;Nebulosity involved.; -NGC1771;G;04:58:55.72;-63:17:53.6;Dor;1.95;0.59;134;14.32;;11.52;10.77;10.57;23.40;SABc;;;;;;;;2MASX J04585573-6317537,ESO 085-027,ESO-LV 85-0270,IRAS 04585-6322,PGC 016472;;; -NGC1772;OCl;04:56:52.79;-69:33:21.8;Dor;1.50;1.40;30;11.22;10.97;;;;;;;;;;;;;ESO 056-033;;In the Large Magellanic Cloud.; -NGC1773;Neb;04:58:12.03;-66:21:36.4;Dor;2.70;2.10;30;;;;;;;;;;;;;;;2MASX J04581196-6622139,IRAS 04580-6626;;The 2MASS position refers to a knot southwest of the center.; -NGC1774;OCl;04:58:06.88;-67:14:32.4;Dor;1.70;1.50;60;10.96;10.76;;;;;;;;;;;;;ESO 085-026;;In the Large Magellanic Cloud.; -NGC1775;OCl;04:56:54.78;-70:25:55.2;Men;1.00;0.90;80;12.90;12.55;;;;;;;;;;;;;2MASX J04565472-7025551,2MASX J04565472-7025551 ID,ESO 056-034;;In the Large Magellanic Cloud.; -NGC1776;OCl;04:58:39.72;-66:25:46.5;Dor;1.30;1.20;40;13.28;13.01;;;;;;;;;;;;;ESO 085-028;;In the Large Magellanic Cloud.; -NGC1777;GCl;04:55:47.66;-74:17:07.3;Men;2.40;2.40;;13.40;12.80;;;;;;;;;;;;;ESO 033-001;;In the Large Magellanic Cloud.; -NGC1778;OCl;05:08:05.70;+37:01:22.2;Aur;4.50;;;8.20;7.70;;;;;;;;;;;;;MWSC 0472;;; -NGC1779;G;05:05:18.07;-09:08:49.7;Eri;2.67;1.19;112;13.18;;9.75;9.05;8.77;23.75;S0-a;;;;;;;;2MASX J05051802-0908500,IRAS 05029-0912,MCG -02-13-041,PGC 016713;;; -NGC1780;G;05:06:20.71;-19:28:00.0;Lep;0.92;0.53;86;14.73;;11.65;10.98;10.69;23.28;S0;;;;;;;;2MASX J05062069-1928001,ESO 552-071,ESO 553-001,ESO-LV 553-0010,MCG -03-13-070,PGC 016743;;Missing ESO entry '552- G 71' would have pointed to this galaxy.; -NGC1781;G;05:07:55.03;-18:11:23.7;Lep;1.27;1.10;76;13.71;;10.53;9.81;9.49;23.01;S0;;;;;1794;;;2MASX J05075502-1811237,ESO 553-007,ESO-LV 553-0070,IRAS 05057-1815,MCG -03-14-002,PGC 016788;;; -NGC1782;OCl;04:57:51.09;-69:23:31.9;Dor;1.20;1.10;110;10.75;10.50;;;;;;;;;;;;;ESO 056-036;;In the Large Magellanic Cloud.; -NGC1783;GCl;04:59:08.81;-65:59:14.2;Dor;5.30;4.70;60;10.90;10.93;;;;;;;;;;;;;2MASX J04590938-6559168,ESO 085-029;;In the Large Magellanic Cloud.; -NGC1784;G;05:05:27.10;-11:52:17.5;Lep;4.00;1.79;96;11.40;;9.51;8.85;8.52;23.54;Sc;;;;;;;;2MASX J05052711-1152171,IRAS 05030-1156,MCG -02-13-042,PGC 016716;;; -NGC1785;*Ass;04:58:44.96;-68:49:29.5;Dor;2.00;1.20;130;;;;;;;;;;;;;;;;;Chain of 5 to 10 stars superposed on the Large Magellanic Cloud.; -NGC1786;GCl;04:59:07.82;-67:44:42.8;Dor;2.00;2.00;;10.10;;;;;;;;;;;;;;ESO 056-039;;In the Large Magellanic Cloud.; -NGC1787;OCl;05:01:44.41;-65:49:23.9;Dor;24.00;14.00;140;11.09;10.92;;;;;;;;;;;;;2MASX J05014436-6549242,2MASX J05014436-6549242 ID,ESO 085-031;;In the Large Magellanic Cloud.; -NGC1788;RfN;05:06:53.22;-03:20:27.5;Ori;2.00;2.00;;5.80;;;;;;;;;;;;;;IRAS 05044-0325,LBN 916;;Identified as IR cirrus by Strauss, et al (1992, ApJS, 83, 29).; -NGC1789;GCl;04:57:51.68;-71:54:07.1;Men;1.80;1.80;;13.56;13.06;;;;;;;;;;;;;2MASX J04575165-7154070,ESO 056-037;;In the Large Magellanic Cloud.; -NGC1790;OCl;05:10:56.22;+52:03:35.3;Aur;;;;;;;;;;;;;;;;;;;;; -NGC1791;OCl;04:59:06.48;-70:10:07.5;Men;1.20;1.00;30;13.45;13.12;;;;;;;;;;;;;ESO 056-041;;In the Large Magellanic Cloud.; -NGC1792;G;05:05:14.45;-37:58:50.7;Col;5.52;2.76;136;10.68;10.18;7.93;7.28;7.01;22.68;Sbc;;;;;;;;2MASX J05051445-3758507,ESO 305-000,ESO 305-006,ESO-LV 305-0060,IRAS 05035-3802,PGC 016709;;; -NGC1793;OCl;04:59:38.21;-69:33:27.5;Dor;1.30;1.10;130;12.69;12.41;;;;;;;;;;;;;ESO 056-043;;In the Large Magellanic Cloud.; -NGC1794;Dup;05:07:55.03;-18:11:23.7;Lep;;;;;;;;;;;;;;;1781;;;;;; -NGC1795;OCl;04:59:46.90;-69:48:04.2;Dor;1.40;1.30;170;13.15;12.42;;;;;;;;;;;;;ESO 056-044;;In the Large Magellanic Cloud.; -NGC1796;G;05:02:42.55;-61:08:24.2;Dor;1.93;0.96;101;13.01;12.48;10.60;9.98;9.70;22.44;SBc;;;;;;;;2MASX J05024255-6108242,ESO 119-030,ESO-LV 119-0300,IRAS 05021-6112,PGC 016617;;; -NGC1796A;G;05:05:03.0;-61:29:04;Dor;1.28;0.50;151;14.87;;11.82;11.18;10.85;23.61;Sab;;;;;;;;2MASX J05050301-6129039,ESO 119-035,ESO-LV 119-0350,PGC 016698;;Declinations for NGC 1796A and NGC 1796B interchanged in RC1 and RC2.; -NGC1796B;G;05:07:54.9;-61:11:28;Dor;1.12;0.25;25;15.76;;11.96;11.20;10.93;23.65;Sbc;;;;;;;;ESO 119-037,ESO-LV 119-0370,IRAS 05073-6115,PGC 016787;;Declinations for NGC 1796A and NGC 1796B interchanged in RC1 and RC2.; -NGC1797;G;05:07:44.88;-08:01:08.7;Eri;1.19;0.77;60;15.50;;;;;23.32;SBa;;;;;;;;2MASX J05074488-0801085,IRAS 05053-0805,MCG -01-14-002,PGC 016781;;; -NGC1798;OCl;05:11:39.32;+47:41:43.8;Aur;5.40;;;;;;;;;;;;;;;;;MWSC 0483;;; -NGC1799;G;05:07:44.62;-07:58:09.4;Eri;1.25;0.57;105;15.00;;11.47;10.81;10.51;;S0;;;;;;;;2MASX J05074461-0758095,MCG -01-14-001,PGC 016783;;; -NGC1800;G;05:06:25.72;-31:57:15.2;Col;1.55;1.16;112;13.19;12.70;11.13;10.53;10.21;22.55;S?;;;;;;;;2MASX J05062573-3157152,ESO 422-030,ESO-LV 422-0300,IRAS 05045-3201,MCG -05-13-005,PGC 016745;;; -NGC1801;GCl;05:00:34.51;-69:36:49.5;Dor;2.20;1.90;160;12.43;12.16;;;;;;;;;;;;;ESO 056-045;;In the Large Magellanic Cloud.; -NGC1802;OCl;05:10:12.87;+24:07:30.5;Tau;4.80;;;;;;;;;;;;;;;;;MWSC 0478;;; -NGC1803;G;05:05:26.58;-49:34:04.6;Pic;0.93;0.58;61;13.51;;;;;21.62;SBbc;;;;;;;;ESO 203-018,ESO-LV 203-0180,IRAS 05041-4938,PGC 016715;;; -NGC1804;OCl;05:01:03.26;-69:04:57.3;Dor;0.95;0.85;170;12.02;11.87;;;;;;;;;;;;;ESO 056-046;;In the Large Magellanic Cloud.; -NGC1805;GCl;05:02:21.32;-66:06:44.1;Dor;1.80;1.60;80;;;;;;;;;;;;;;;ESO 085-032;;In the Large Magellanic Cloud.; -NGC1806;GCl;05:02:12.37;-67:59:08.7;Dor;2.50;2.50;;11.10;;;;;;;;;;;;;;2MASX J05021187-6759090,ESO 056-047;;In the Large Magellanic Cloud.; -NGC1807;OCl;05:10:45.03;+16:30:45.9;Tau;5.40;;;7.86;7.00;;;;;;;;;;;;;MWSC 0479;;; -NGC1808;G;05:07:42.34;-37:30:47.0;Col;5.42;1.83;135;10.80;9.94;7.64;6.98;6.66;22.74;Sa;;;;;;;;2MASX J05074234-3730469,ESO 305-008,ESO-LV 305-0080,IRAS 05059-3734,MCG -06-12-005,PGC 016779;;Extended HIPASS source; -NGC1809;G;05:02:05.01;-69:34:05.8;Dor;3.74;1.44;143;12.10;;10.28;9.63;9.35;24.02;Sc;;;;;;;;2MASX J05020500-6934058,ESO 056-048,ESO-LV 56-0480,PGC 016599;;; -NGC1810;OCl;05:03:23.27;-66:22:54.5;Dor;1.20;1.10;30;12.12;11.90;;;;;;;;;;;;;ESO 085-035;;In the Large Magellanic Cloud.; -NGC1811;G;05:08:42.74;-29:16:33.5;Col;1.73;0.42;60;14.46;;11.19;10.48;10.17;23.75;Sa;;;;;;;;2MASX J05084275-2916336,ESO 422-037,ESO-LV 422-0370,MCG -05-13-008,PGC 016811;;; -NGC1812;G;05:08:52.91;-29:15:04.5;Col;1.27;0.86;7;13.64;;10.68;10.06;9.74;22.77;Sa;;;;;;;;2MASX J05085291-2915046,ESO 422-039,ESO-LV 422-0390,IRAS 05068-2918,MCG -05-13-009,PGC 016819;;; -NGC1813;OCl;05:02:40.28;-70:19:04.6;Men;0.95;0.90;140;13.14;12.76;;;;;;;;;;;;;ESO 056-050;;In the Large Magellanic Cloud.; -NGC1814;Cl+N;05:03:46.46;-67:18:02.4;Dor;1.20;1.10;10;;12.76;;;;;;;;;;;;;ESO 085-036;;Nebulostiy involved.; -NGC1815;OCl;05:02:27.25;-70:37:15.8;Men;1.20;1.00;60;12.43;12.41;;;;;;;;;;;;;ESO 056-049;;In the Large Magellanic Cloud.; -NGC1816;OCl;05:03:50.75;-67:15:38.7;Dor;0.90;0.75;0;;13.02;;;;;;;;;;;;;ESO 085-037;;In the Large Magellanic Cloud.; -NGC1817;OCl;05:12:26.27;+16:41:02.7;Tau;9.30;;;8.44;7.70;;;;;;;;;;;;;MWSC 0484;;; -NGC1818;GCl;05:04:14.76;-66:26:04.2;Dor;3.10;2.70;130;9.70;;;;;;;;;;;;;;ESO 085-040;;In the Large Magellanic Cloud.; -NGC1819;G;05:11:46.14;+05:12:02.2;Ori;1.53;1.05;117;13.70;;10.31;9.54;9.23;23.34;S0;;;;;;;;2MASX J05114614+0512022,IRAS 05091+0508,MCG +01-14-002,PGC 016899,UGC 03265;;; -NGC1820;OCl;05:04:01.68;-67:15:57.4;Dor;7.00;5.40;20;;11.50;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1821;G;05:11:46.10;-15:08:04.7;Lep;1.26;0.86;95;13.90;;11.63;11.03;10.76;22.82;I;;;;;;;;2MASX J05114610-1508049,IRAS 05095-1511,MCG -03-14-007,PGC 016898;;; -NGC1822;OCl;05:05:09.20;-66:12:38.0;Dor;1.20;1.00;100;13.24;13.15;;;;;;;;;;;;;ESO 085-042;;In the Large Magellanic Cloud.; -NGC1823;OCl;05:03:24.96;-70:20:07.8;Men;1.00;0.90;10;;12.09;;;;;;;;;;;;;ESO 056-051;;In the Large Magellanic Cloud.; -NGC1824;G;05:06:56.20;-59:43:26.3;Dor;2.14;0.83;164;13.17;;;;;22.57;SBm;;;;;;;;2MASX J05065689-5943368,ESO 119-036,ESO-LV 119-0360,IRAS 05061-5947,PGC 016761;;; -NGC1825;OCl;05:04:19.04;-68:55:35.1;Dor;1.00;0.90;40;12.45;12.04;;;;;;;;;;;;;ESO 056-053;;In the Large Magellanic Cloud.; -NGC1826;OCl;05:05:33.29;-66:13:47.1;Dor;1.20;1.10;60;13.78;13.25;;;;;;;;;;;;;2MASX J05053390-6613428,ESO 085-043;;In the Large Magellanic Cloud.; -NGC1827;G;05:10:04.60;-36:57:36.9;Col;3.24;0.65;120;13.26;;11.13;10.51;10.34;23.21;Sc;;;;;;;;2MASX J05100458-3657368,ESO 362-006,ESO-LV 362-0060,IRAS 05083-3701,MCG -06-12-008,PGC 016849;;; -NGC1828;OCl;05:04:20.88;-69:23:17.4;Dor;1.20;1.10;170;12.65;12.52;;;;;;;;;;;;;ESO 056-054;;In the Large Magellanic Cloud.; -NGC1829;Cl+N;05:05:00.00;-68:03:33.3;Dor;1.80;1.60;20;;;;;;;;;;;;;;;;;Nebulosity involved.; -NGC1830;OCl;05:04:38.27;-69:20:24.6;Dor;1.30;1.20;60;12.75;12.56;;;;;;;;;;;;;ESO 056-056;;In the Large Magellanic Cloud.; -NGC1831;GCl;05:06:16.72;-64:55:03.0;Dor;3.80;3.20;170;11.52;11.18;;;;;;;;;;;;;2MASX J05061671-6455031,ESO 085-044;;In the Large Magellanic Cloud.; -NGC1832;G;05:12:03.33;-15:41:16.1;Lep;2.46;0.94;13;12.20;;9.29;8.63;8.39;21.60;Sbc;;;;;;;;2MASX J05120333-1541160,IRAS 05098-1544,MCG -03-14-010,PGC 016906;;Confused HIPASS source; -NGC1833;Cl+N;05:04:24.51;-70:43:41.0;Men;1.60;1.10;60;;;;;;;;;;;;;;;2MASX J05042444-7043409,2MASX J05042444-7043409 ID,ESO 056-055,IRAS 05049-7047;;Nebulosity involved.; -NGC1834;OCl;05:05:11.38;-69:12:26.9;Dor;0.95;0.85;100;11.82;;;;;;;;;;;;;;ESO 056-060;;In the Large Magellanic Cloud.; -NGC1835;GCl;05:05:06.58;-69:24:13.9;Dor;2.30;2.00;80;11.31;10.60;;;;;;;;;;;;;ESO 056-058;;In the Large Magellanic Cloud.; -NGC1836;OCl;05:05:34.42;-68:37:40.4;Dor;1.50;1.40;50;12.50;12.22;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1837;OCl;05:04:55.80;-70:42:50.4;Men;1.90;1.50;10;12.27;12.27;12.26;12.30;12.29;;;;;;;;;;TYC 9165-548-1,UCAC2 1446411;;In the Large Magellanic Cloud.; -NGC1838;OCl;05:06:07.88;-68:26:42.7;Dor;1.30;1.20;20;13.20;12.93;;;;;;;;;;;;;ESO 056-064;;In the Large Magellanic Cloud.; -NGC1839;OCl;05:06:02.35;-68:37:36.4;Dor;1.60;1.60;;11.90;11.80;;;;;;;;;;;;;ESO 056-063,IRAS 05061-6841;;In the Large Magellanic Cloud.; -NGC1840;OCl;05:05:19.16;-71:45:46.4;Men;0.80;0.70;80;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1841;GCl;04:45:23.35;-83:59:56.6;Men;4.00;4.00;;12.23;11.43;;;;;;;;;;;;;2MASX J04452654-8359569,ESO 004-015;;The 2MASS position is for a star 10 arcsec east of the core.; -NGC1842;OCl;05:07:18.10;-67:16:23.4;Dor;1.50;1.50;;14.33;14.02;;;;;;;;;;;;;ESO 085-046;;In the Large Magellanic Cloud.; -NGC1843;G;05:14:06.02;-10:37:37.3;Ori;1.80;1.42;123;12.80;;10.57;10.00;9.71;23.09;SABc;;;;;;;;2MASX J05140614-1037366,IRAS 05117-1041,MCG -02-14-008,PGC 016949,UGCA 107;;; -NGC1844;OCl;05:07:30.68;-67:19:24.3;Dor;1.60;1.60;;12.29;12.08;;;;;;;;;;;;;ESO 085-048;;In the Large Magellanic Cloud.; -NGC1845;*Ass;05:05:45.01;-70:34:53.8;Men;8.90;5.60;30;10.31;10.20;;;;;;;;;;;;;;;Superposed on the LMC.; -NGC1846;GCl;05:07:33.94;-67:27:41.3;Dor;3.80;3.80;;12.08;11.31;;;;;;;;;;;;;2MASX J05073439-6727069,ESO 056-067;;In the Large Magellanic Cloud.; -NGC1847;OCl;05:07:08.16;-68:58:17.2;Dor;1.80;1.60;0;12.51;12.47;;;;;;;;;;;;;ESO 056-066;;In the Large Magellanic Cloud.; -NGC1848;OCl;05:07:27.16;-71:11:43.3;Men;2.20;2.00;140;9.78;9.73;;;;;;;;;;;;;ESO 056-068;;In the Large Magellanic Cloud.; -NGC1849;OCl;05:09:34.81;-66:18:56.9;Dor;1.50;1.50;;13.08;12.77;;;;;;;;;;;;;ESO 085-049;;In the Large Magellanic Cloud.; -NGC1850;GCl;05:08:44.73;-68:45:42.0;Dor;3.00;3.00;;8.84;8.96;;;;;;;;;;;;;ESO 056-070;;Globular cluster in the Large Magellanic Cloud.; -NGC1851;GCl;05:14:06.73;-40:02:47.8;Col;9.00;;;8.80;7.23;;;;;;;;;;;;;C 073,MWSC 0489;;; -NGC1852;GCl;05:09:23.79;-67:46:34.5;Dor;1.90;1.90;;12.74;12.01;;;;;;;;;;;;;2MASX J05092377-6746342,ESO 056-071;;In the Large Magellanic Cloud.; -NGC1853;G;05:12:16.52;-57:23:56.5;Dor;1.53;0.52;39;13.58;;11.18;10.82;10.39;22.47;SBcd;;;;;;;;2MASX J05121653-5723565,ESO 158-022,ESO-LV 158-0220,IRAS 05114-5727,PGC 016911;;; -NGC1854;GCl;05:09:19.89;-68:50:50.5;Dor;2.30;2.30;;10.18;10.39;;;;;;;;;;;;;ESO 056-072;;In the Large Magellanic Cloud.; -NGC1855;*Ass;05:09:16.91;-68:50:44.3;Dor;;;;;;;;;;;;;;;;;;;;Stellar association in the LMC surrounds the star cluster NGC 1854.; -NGC1856;GCl;05:09:29.37;-69:07:39.3;Dor;2.70;2.40;90;10.40;10.06;;;;;;;;;;;;;ESO 056-073;;In the Large Magellanic Cloud.; -NGC1857;OCl;05:20:05.56;+39:20:37.0;Aur;4.50;;;8.08;7.00;;;;;;;;;;;;;MWSC 0505;;; -NGC1858;Cl+N;05:09:51.94;-68:53:28.5;Dor;4.40;2.60;170;9.76;9.88;;;;;;;;;;;;;IRAS 05101-6855;;Open cluster involved. In the Large Magellanic Cloud.; -NGC1859;OCl;05:11:31.79;-65:14:59.0;Dor;1.50;1.50;;12.70;12.26;;;;;;;;;;;;;ESO 085-050;;In the Large Magellanic Cloud.; -NGC1860;OCl;05:10:39.51;-68:45:08.1;Dor;1.10;1.10;;11.18;11.04;;;;;;;;;;;;;ESO 056-075;;In the Large Magellanic Cloud.; -NGC1861;OCl;05:10:22.14;-70:46:37.6;Men;1.50;1.50;;13.63;13.16;;;;;;;;;;;;;ESO 056-076;;In the Large Magellanic Cloud.; -NGC1862;OCl;05:12:34.54;-66:09:15.7;Dor;0.90;0.75;10;13.51;13.33;;;;;;;;;;;;;ESO 085-051;;In the Large Magellanic Cloud.; -NGC1863;OCl;05:11:39.58;-68:43:36.4;Dor;1.40;1.20;50;;;;;;;;;;;;;;;ESO 056-077;;; -NGC1864;OCl;05:12:40.60;-67:37:16.5;Dor;1.10;0.95;110;13.05;12.86;;;;;;;;;;;;;ESO 056-079;;In the Large Magellanic Cloud.; -NGC1865;OCl;05:12:25.08;-68:46:15.7;Dor;1.40;1.40;;13.60;12.91;;;;;;;;;;;;;ESO 056-078;;; -NGC1866;GCl;05:13:39.10;-65:27:56.1;Dor;5.50;5.50;;9.98;9.73;;;;;;;;;;;;;ESO 085-052;;In the Large Magellanic Cloud.; -NGC1867;OCl;05:13:42.26;-66:17:31.0;Dor;1.50;1.40;120;13.80;13.35;;;;;;;;;;;;;2MASX J05134227-6617307,ESO 085-053;;In the Large Magellanic Cloud.; -NGC1868;GCl;05:14:36.30;-63:57:16.2;Dor;2.70;2.70;90;12.02;11.57;;;;;;;;;;;;;2MASX J05143630-6357162,ESO 085-056;;In the Large Magellanic Cloud.; -NGC1869;Cl+N;05:13:56.32;-67:22:45.8;Dor;2.00;1.40;100;;;;;;;;;;;;;;;IRAS 05140-6726;;Nebulosity involved.; -NGC1870;GCl;05:13:09.90;-69:07:01.0;Dor;1.10;1.00;10;11.45;11.26;;;;;;;;;;;;;ESO 056-081;;In the Large Magellanic Cloud.; -NGC1871;Cl+N;05:13:51.76;-67:27:09.5;Dor;2.30;1.60;60;10.21;10.09;;;;;;;;;;;;;IRAS 05139-6730;;Nebulosity involved.; -NGC1872;GCl;05:13:10.77;-69:18:41.7;Dor;1.70;1.70;;11.39;11.04;;;;;;;;;;;;;ESO 056-083;;In the Large Magellanic Cloud.; -NGC1873;Cl+N;05:13:55.67;-67:20:03.7;Dor;2.80;2.20;120;;10.44;;;;;;;;;;;;;;;HII region involved.; -NGC1874;Cl+N;05:13:11.66;-69:22:34.4;Dor;1.40;1.10;100;12.47;12.81;;;;;;;;;;;;;ESO 056-082;;In the Large Magellanic Cloud.; -NGC1875;G;05:21:45.76;+06:41:19.9;Ori;0.79;0.69;47;14.89;;10.98;10.19;9.88;23.00;E;;;;;;;;2MASX J05214573+0641202,MCG +01-14-032,PGC 017171;;; -NGC1876;Cl+N;05:13:18.63;-69:21:43.7;Dor;1.50;1.50;;11.54;11.71;;;;;;;;;;;;;ESO 056-084;;"Star cluster involved; in the Large Magellanic Cloud."; -NGC1877;Neb;05:13:38.84;-69:23:01.6;Dor;1.10;0.60;130;12.00;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.;B-Mag taken from LEDA -NGC1878;OCl;05:12:50.91;-70:28:18.1;Men;1.10;1.00;50;13.23;12.94;;;;;;;;;;;;;ESO 056-080;;In the Large Magellanic Cloud.; -NGC1879;G;05:19:48.23;-32:08:33.9;Col;2.42;1.67;60;13.14;;;;;23.51;SBm;;;;;;;;ESO 423-006,ESO-LV 423-0060,IRAS 05178-3211,MCG -05-13-016,PGC 017113,UGCA 110;;; -NGC1880;HII;05:13:25.18;-69:22:46.0;Dor;1.20;1.00;140;12.47;12.81;;;;;;;;;;;;;IRAS 05136-6925;;In the Large Magellanic Cloud.; -NGC1881;OCl;05:13:37.17;-69:17:57.0;Dor;1.20;0.85;160;;;;;;;;;;;;;;;ESO 056-086;;In the Large Magellanic Cloud.; -NGC1882;OCl;05:15:33.33;-66:07:46.4;Dor;1.60;1.40;20;12.43;12.33;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1883;OCl;05:25:54.20;+46:29:24.5;Aur;5.70;;;;12.00;;;;;;;;;;;;;MWSC 0539;;; -NGC1884;Other;05:15:58.04;-66:09:48.2;Dor;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1885;OCl;05:15:05.86;-68:58:39.2;Dor;1.40;1.20;130;12.35;11.97;;;;;;;;;;;;;ESO 056-088;;In the Large Magellanic Cloud.; -NGC1886;G;05:21:48.15;-23:48:36.5;Lep;3.22;0.35;61;13.62;;10.40;9.50;9.23;23.52;Sbc;;;;;;;;2MASX J05214814-2348367,ESO 487-002,ESO-LV 487-0020,IRAS 05197-2351,MCG -04-13-013,PGC 017174;;; -NGC1887;OCl;05:16:05.93;-66:19:06.8;Dor;1.50;1.50;;12.91;12.72;;;;;;;;;;;;;ESO 085-059;;In the Large Magellanic Cloud.; -NGC1888;G;05:22:34.45;-11:29:58.3;Lep;3.32;1.31;148;13.00;;9.38;8.64;8.31;23.36;SBc;;;;;;;;2MASX J05223444-1129583,MCG -02-14-013,PGC 017195;;; -NGC1889;G;05:22:35.30;-11:29:49.0;Lep;0.63;0.37;165;12.60;;;;;21.90;E;;;;;;;;MCG -02-14-014,PGC 017196;;; -NGC1890;OCl;05:13:45.83;-72:04:40.7;Men;1.10;1.00;70;13.08;12.81;;;;;;;;;;;;;ESO 056-087;;In the Large Magellanic Cloud.; -NGC1891;OCl;05:21:44.22;-35:47:21.5;Col;;;;;;;;;;;;;;;;;;ESO 362-020;;"Twenty stars, 19 arcmin by 14 arcmin; cluster?"; -NGC1892;G;05:17:09.05;-64:57:35.1;Dor;3.37;1.02;75;12.72;;10.27;9.74;9.65;23.21;Sc;;;;;;;;2MASX J05170905-6457354,ESO 085-061,ESO-LV 85-0610,IRAS 05169-6500,PGC 017042;;Extended HIPASS source; -NGC1893;OCl;05:22:44.14;+33:24:43.3;Aur;6.00;;;7.90;7.50;;;;;;;;;;;0410;;MWSC 0516;;; -NGC1894;OCl;05:15:51.27;-69:28:06.7;Dor;1.40;1.20;60;12.40;12.16;;;;;;;;;;;;;ESO 056-089;;In the Large Magellanic Cloud.; -NGC1895;Neb;05:16:51.59;-67:19:46.5;Dor;1.40;1.30;40;;12.93;;;;;;;;;;;;;IRAS 05169-6722;;In the Large Magellanic Cloud.; -NGC1896;OCl;05:25:34.68;+29:15:36.8;Aur;3.90;;;;;;;;;;;;;;;;;MWSC 0537;;; -NGC1897;OCl;05:17:31.28;-67:27:03.6;Dor;1.10;1.00;170;13.85;13.49;;;;;;;;;;;;;2MASX J05173130-6727041,2MASX J05173130-6727041 ID,ESO 056-092;;In the Large Magellanic Cloud.; -NGC1898;OCl;05:16:42.38;-69:39:22.4;Dor;1.60;1.60;;12.62;11.86;;;;;;;;;;;;;ESO 056-090;;In the Large Magellanic Cloud.; -NGC1899;HII;05:17:48.67;-67:54:02.6;Dor;1.10;1.00;20;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1900;OCl;05:19:09.38;-63:01:25.3;Dor;1.80;1.60;100;13.95;13.59;;;;;;;;;;;;;ESO 085-068;;In the Large Magellanic Cloud.; -NGC1901;OCl;05:18:15.16;-68:26:10.7;Dor;11.10;;;;;;;;;;;;;;;;;MWSC 0500;;Superposed on the Large Magellanic Cloud.; -NGC1902;OCl;05:18:19.14;-66:37:38.7;Dor;1.70;1.70;;12.04;11.77;;;;;;;;;;;;;ESO 085-066;;In the Large Magellanic Cloud.; -NGC1903;GCl;05:17:22.30;-69:20:07.1;Dor;1.90;1.90;;12.00;11.86;;;;;;;;;;;;;ESO 056-093;;In the Large Magellanic Cloud.; -NGC1904;GCl;05:24:10.59;-24:31:27.2;Lep;7.20;;;9.21;8.16;;;;;;;;;079;;;;MWSC 0528;;; -NGC1905;OCl;05:18:23.71;-67:16:41.4;Dor;0.95;0.95;;13.46;13.21;;;;;;;;;;;;;2MASX J05182377-6716409,ESO 085-067;;In the Large Magellanic Cloud.; -NGC1906;G;05:24:47.10;-15:56:35.9;Lep;1.03;0.74;154;14.11;;11.70;11.07;10.77;;Sc;;;;;;;;2MASX J05244709-1556358,MCG -03-14-015,PGC 017243;;; -NGC1907;OCl;05:28:04.55;+35:19:32.4;Aur;5.40;;;8.87;8.20;;;;;;;;;;;;;MWSC 0552;;; -NGC1908;Other;05:25:53.80;-02:31:44.0;Ori;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC1909;RfN;05:04:55.44;-07:15:56.3;Eri;180.00;60.00;;;;;;;;;;;;;;2118;;LBN 959;the Witch Head Nebula;Identification as NGC 1909 is uncertain.; -NGC1910;HII;05:18:43.07;-69:13:54.9;Dor;3.60;2.80;120;;9.65;;;;;;;;;;;;;ESO 056-099;;In the Large Magellanic Cloud.; -NGC1911;OCl;05:19:26.88;-66:41:03.3;Dor;0.60;0.60;;;;;;;;;;;;;;;;ESO 085-070;;; -NGC1912;OCl;05:28:42.49;+35:51:17.7;Aur;9.60;;;6.69;6.40;;;;;;;;;038;;;;MWSC 0557;;; -NGC1913;OCl;05:18:19.29;-69:32:11.3;Dor;1.30;1.10;150;11.37;11.14;;;;;;;;;;;;;ESO 056-097;;In the Large Magellanic Cloud.; -NGC1914;Cl+N;05:17:39.76;-71:15:21.1;Men;1.50;1.20;150;;12.01;;;;;;;;;;;;;2MASX J05173461-7114571,IRAS 05182-7117;;Nebulosity involved. In the Large Magellanic Cloud.; -NGC1915;*Ass;05:19:42.24;-66:49:17.5;Dor;0.60;0.55;140;;;;;;;;;;;;;;;ESO 085-071;;"Identification as NGC 1915 is uncertain; NGC 1915 may be NGC 1919."; -NGC1916;GCl;05:18:36.47;-69:24:24.5;Dor;2.10;2.10;;11.16;10.38;;;;;;;;;;;;;ESO 056-098;;In the Large Magellanic Cloud.; -NGC1917;GCl;05:19:01.97;-68:59:56.3;Dor;1.70;1.70;;12.90;12.33;;;;;;;;;;;;;2MASX J05190201-6859562,ESO 056-100;;In the Large Magellanic Cloud.; -NGC1918;SNR;05:19:06.99;-69:39:44.8;Dor;3.90;1.70;120;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1919;Neb;05:20:19.05;-66:53:28.1;Dor;1.40;1.20;50;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud. This may also be NGC 1915.; -NGC1920;HII;05:20:33.50;-66:46:43.4;Dor;1.20;1.10;100;;12.54;;;;;;;;;;;;;2MASX J05203358-6646437,IRAS 05205-6649;;In the Large Magellanic Cloud. This may also be NGC 1911.; -NGC1921;OCl;05:19:22.75;-69:47:15.9;Dor;1.00;0.90;20;13.14;12.95;;;;;;;;;;;;;;;; -NGC1922;OCl;05:19:48.92;-69:26:53.7;Dor;1.00;0.90;30;11.67;11.51;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1923;Cl+N;05:21:34.06;-65:29:12.2;Dor;0.95;0.85;80;11.49;11.24;;;;;;;;;;;;;ESO 085-075,IRAS 05214-6532;;HII region involved.; -NGC1924;G;05:28:01.93;-05:18:38.7;Ori;1.60;1.15;133;13.00;;10.28;9.58;9.34;22.76;SBbc;;;;;;;;2MASX J05280197-0518383,IRAS 05255-0521,MCG -01-14-011,PGC 017319;;; -NGC1925;*Ass;05:21:43.96;-65:47:37.0;Dor;6.00;6.00;;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1926;GCl;05:20:35.43;-69:31:31.0;Dor;1.40;1.20;120;12.05;11.79;11.05;10.88;10.62;;;;;;;;;;2MASX J05203539-6931308,ESO 056-105;;In the Large Magellanic Cloud.; -NGC1927;Other;05:28:42.98;-08:22:38.4;Ori;;;;;;;;;;;;;;;;;;;;No optical candidate at this position.; -NGC1928;OCl;05:20:56.50;-69:28:40.6;Dor;1.30;1.30;;13.34;12.47;;;;;;;;;;;;;ESO 056-106;;In the Large Magellanic Cloud.; -NGC1929;OCl;05:21:36.03;-67:54:43.4;Dor;1.20;1.10;90;14.00;;;;;;;;;;;;;;2MASX J05213602-6754432,2MASX J05213602-6754432 ID,ESO 056-107;;In large complex in the Large Magellanic Cloud.; -NGC1930;G;05:25:56.80;-46:43:42.5;Pic;1.97;1.18;36;13.39;;10.22;9.55;9.30;23.56;E-S0;;;;;;;;2MASX J05255681-4643423,ESO 253-004,ESO-LV 253-0040,PGC 017276;;; -NGC1931;Cl+N;05:31:25.35;+34:14:47.6;Aur;4.80;;;;10.10;;;;;;;;;;;;;2MASX J05312534+3414475,LBN 810,MWSC 0564;;; -NGC1932;*;05:22:17.24;-66:09:15.6;Dor;;;;;13.80;14.48;14.51;14.60;;;;;;;;;;2MASS J05221715-6609150,UCAC2 2672844;;Superposed on the Large Magellanic Cloud.; -NGC1933;OCl;05:22:27.32;-66:09:07.8;Dor;1.30;1.30;;8.10;13.80;14.48;14.51;14.60;;;;;;;;;;UCAC2 2672844;;In the Large Magellanic Cloud.; -NGC1934;Cl+N;05:21:47.89;-67:56:13.8;Dor;1.90;1.30;150;;10.50;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1935;HII;05:21:58.71;-67:57:26.6;Dor;1.20;1.20;;;;;;;;;;;;;;2126;;;;Part of a large star-formation complex in the LMC.; -NGC1936;EmN;05:22:13.96;-67:58:41.9;Dor;1.00;1.00;;;11.60;16.03;14.51;12.87;;;;;;;;2127;;IRAS 05223-6801;;Part of a large star-formation complex in the LMC.; -NGC1937;*Ass;05:22:29.16;-67:53:40.8;Dor;3.20;2.00;70;;;;;;;;;;;;;;;;;In large complex in the Large Magellanic Cloud.; -NGC1938;GCl;05:21:24.71;-69:56:21.8;Men;0.90;0.80;90;13.54;13.09;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1939;GCl;05:21:26.61;-69:56:59.1;Men;1.40;1.30;80;12.52;11.83;;;;;;;;;;;;;ESO 056-108E;;In the Large Magellanic Cloud.; -NGC1940;GCl;05:22:43.74;-67:11:11.6;Dor;1.20;1.20;;12.21;11.91;;;;;;;;;;;;;ESO 085-078;;In the Large Magellanic Cloud.; -NGC1941;Cl+N;05:23:07.70;-66:22:43.1;Dor;0.90;0.80;100;12.07;12.00;;;;;;;;;;;;;IRAS 05232-6626;;Stars involved. In the Large Magellanic Cloud.; -NGC1942;OCl;05:24:44.54;-63:56:31.6;Dor;1.90;1.90;;14.24;13.46;;;;;;;;;;;;;ESO 085-081;;In the Large Magellanic Cloud.; -NGC1943;GCl;05:22:28.74;-70:09:17.5;Men;1.10;1.00;140;12.15;11.88;;;;;;;;;;;;;ESO 056-114;;In the Large Magellanic Cloud.; -NGC1944;GCl;05:21:57.43;-72:29:38.7;Men;2.70;2.70;;12.11;11.84;11.16;10.95;10.71;;;;;;;;;;2MASX J05215746-7229386,ESO 033-017;;In the Large Magellanic Cloud.; -NGC1945;EmN;05:24:54.96;-66:27:26.9;Dor;10.00;6.00;60;;;;;;;;;;;;;;;ESO 085-083;;In the Large Magellanic Cloud.; -NGC1946;OCl;05:25:16.38;-66:23:40.4;Dor;1.00;0.90;130;12.66;12.62;;;;;;;;;;;;;ESO 085-084;;In the Large Magellanic Cloud.; -NGC1947;G;05:26:47.61;-63:45:36.1;Dor;3.48;3.18;89;11.76;10.80;8.43;7.75;7.50;23.11;E-S0;;;;;;;;2MASX J05264761-6345360,ESO 085-087,ESO-LV 85-0870,IRAS 05264-6347,PGC 017296;;; -NGC1948;Cl+N;05:25:46.24;-66:16:00.5;Dor;7.00;5.70;30;10.81;10.61;;;;;;;;;;;;;;;Emission nebula involved.; -NGC1949;Neb;05:25:04.83;-68:28:21.1;Dor;0.95;0.90;100;;12.39;;;;;;;;;;;;;ESO 056-117,IRAS 05253-6830;;Within boundaries of LMC; -NGC1950;OCl;05:24:32.99;-69:54:08.3;Men;1.70;1.70;;13.71;13.17;;;;;;;;;;;;;ESO 056-116;;In the Large Magellanic Cloud.; -NGC1951;OCl;05:26:06.82;-66:35:50.1;Dor;1.70;1.50;20;10.67;10.58;;;;;;;;;;;;;ESO 085-086;;In the Large Magellanic Cloud.; -NGC1952;SNR;05:34:31.97;+22:00:52.1;Tau;8.00;4.00;;;8.40;;;;;;;;;001;;;;IRAS 05315+2158,LBN 833;;Position is for the Crab pulsar.;V-mag taken from LEDA -NGC1953;GCl;05:25:27.81;-68:50:17.9;Dor;1.20;1.20;;11.97;11.74;;;;;;;;;;;;;ESO 056-118;;In the Large Magellanic Cloud.; -NGC1954;G;05:32:48.33;-14:03:46.0;Lep;3.62;1.86;149;12.50;;10.01;9.31;9.10;23.56;Sbc;;;;;;;;2MASX J05324835-1403460,IRAS 05305-1405,MCG -02-15-003,PGC 017422;;; -NGC1955;HII;05:26:09.96;-67:29:50.6;Dor;4.00;3.60;20;8.95;8.87;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1956;G;05:19:35.32;-77:43:43.2;Men;1.75;0.95;64;14.05;;9.77;8.98;8.70;23.68;Sa;;;;;;;;2MASX J05193528-7743434,ESO 016-002,ESO-LV 16-0020,PGC 017102;;; -NGC1957;G;05:32:55.20;-14:07:59.3;Lep;0.87;0.82;65;;;11.24;10.54;10.26;23.28;E-S0;;;;;;;;2MASX J05325523-1407587,PGC 017427;;; -NGC1958;GCl;05:25:30.52;-69:50:12.4;Dor;1.50;1.50;;13.53;12.99;;14.00;13.73;;;;;;;;;;ESO 056-119;;In the Large Magellanic Cloud.; -NGC1959;OCl;05:25:36.63;-69:55:36.9;Men;1.60;1.60;;12.55;12.17;;;;;;;;;;;;;ESO 056-120;;In the Large Magellanic Cloud.; -NGC1960;OCl;05:36:17.74;+34:08:26.7;Aur;7.20;;;6.09;6.00;;;;;;;;;036;;;;MWSC 0594;;; -NGC1961;G;05:42:04.65;+69:22:42.4;Cam;4.42;3.10;85;11.73;10.99;8.79;8.01;7.73;23.47;SABb;;;;;;2133;;2MASX J05420477+6922421,IRAS 05365+6921,MCG +12-06-007,PGC 017625,UGC 03334;;; -NGC1962;OCl;05:26:17.73;-68:50:15.5;Dor;1.40;1.40;;;11.47;;;;;;;;;;;;;ESO 056-122,IRAS 05265-6852;;Within boundaries of LMC; -NGC1963;OCl;05:32:16.83;-36:23:55.1;Col;6.30;;;;;;;;;;;;;;;;;ESO 363-005,MWSC 0569;;This NGC number is sometimes incorrectly equated with the Galaxy IC 2135.; -NGC1964;G;05:33:21.76;-21:56:44.8;Lep;5.16;2.33;31;11.45;10.81;8.65;7.93;7.68;23.25;SABb;;;;;;;;2MASX J05332175-2156447,ESO 554-010,ESO-LV 554-0100,IRAS 05312-2158,MCG -04-14-003,PGC 017436;;; -NGC1965;OCl;05:26:31.26;-68:48:19.7;Dor;1.20;1.10;;;11.70;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1966;OCl;05:26:45.84;-68:49:11.5;Dor;1.10;1.00;30;;11.83;;;;;;;;;;;;;ESO 056-125,IRAS 05270-6851;;In the Large Magellanic Cloud.; -NGC1967;OCl;05:26:43.31;-69:06:05.5;Dor;0.95;0.90;100;10.80;10.81;;;;;;;;;;;;;ESO 056-126;;In the Large Magellanic Cloud.; -NGC1968;*Ass;05:27:22.11;-67:27:49.8;Dor;5.00;2.70;70;8.29;8.22;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1969;OCl;05:26:32.36;-69:50:28.9;Dor;1.20;1.20;;12.66;12.46;;;;;;;;;;;;;ESO 056-124;;In the Large Magellanic Cloud.; -NGC1970;OCl;05:26:52.67;-68:50:12.0;Dor;1.50;1.50;;10.45;10.28;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC1971;OCl;05:26:45.24;-69:51:05.8;Dor;1.10;0.95;0;12.01;11.90;;;;;;;;;;;;;ESO 056-128;;In the Large Magellanic Cloud.; -NGC1972;OCl;05:26:47.36;-69:50:18.0;Dor;0.90;0.80;100;12.95;12.62;;;;;;;;;;;;;ESO 056-129;;In the Large Magellanic Cloud.; -NGC1973;Neb;05:35:04.78;-04:43:54.4;Ori;5.00;5.00;;7.00;;;;;;;;;;;;;;;;;Dimensions and B-Mag taken from LEDA -NGC1974;OCl;05:27:59.02;-67:25:26.9;Dor;1.60;1.60;;;10.30;13.74;13.86;13.88;;;;;;;1991;;;2MASX J05275898-6725271,IRAS 05280-6727;;Within boundaries of LMC; -NGC1975;Neb;05:35:17.88;-04:41:06.8;Ori;10.00;5.00;;7.00;;;;;;;;;;;;;;;;;Dimensions and B-Mag taken from LEDA -NGC1976;Cl+N;05:35:16.48;-05:23:22.8;Ori;90.00;60.00;;4.00;4.00;;;;;;;;;042;;;;LBN 974,MWSC 0582;Great Orion Nebula,Orion Nebula;;B-Mag taken from LEDA, V-mag taken from HEASARC's messier table -NGC1977;Cl+N;05:35:15.80;-04:50:39.6;Ori;10.20;;;;;;;;;;;;;;;;;MWSC 0587;the Running Man Nebula;; -NGC1978;GCl;05:28:45.13;-66:14:09.3;Dor;4.00;2.70;160;10.70;10.70;;;;;;;;;;;;;ESO 085-090,IRAS 05287-6616;;Within boundaries of LMC; -NGC1979;G;05:34:01.11;-23:18:36.3;Lep;1.88;1.81;145;12.85;;9.86;9.22;9.01;23.04;E-S0;;;;;;;;2MASX J05340112-2318361,ESO 487-024,ESO-LV 487-0240,MCG -04-14-004,PGC 017452;;; -NGC1980;Cl+N;05:35:25.99;-05:54:35.6;Ori;9.30;;;;2.50;;;;;;;;;;;;;LBN 977,MWSC 0586;Lower Sword;; -NGC1981;Cl+N;05:35:09.59;-04:25:30.2;Ori;9.00;;;;4.20;;;;;;;;;;;;;MWSC 0579;Upper Sword;; -NGC1982;HII;05:35:31.38;-05:16:02.9;Ori;20.00;15.00;;9.00;9.00;;;;;;;;;043;;;;2MASS J05353135-0516026;Mairan's Nebula;;B-Mag taken from LEDA, V-mag taken from HEASARC's messier table -NGC1983;OCl;05:27:44.25;-68:59:09.8;Dor;4.00;3.00;150;;;;;;;;;;;;;;;ESO 056-133;;In the Large Magellanic Cloud.; -NGC1984;OCl;05:27:40.91;-69:08:03.6;Dor;1.50;1.20;60;10.00;9.99;;;;;;;;;;;;;ESO 056-132,IRAS 05280-6910;;Within boundaries of LMC; -NGC1985;RfN;05:37:47.81;+31:59:19.8;Aur;0.68;0.68;;12.70;;;;;;;;;;;;;;;;;Dimensions and B-Mag taken from LEDA -NGC1986;GCl;05:27:38.08;-69:58:25.1;Men;2.80;2.40;140;11.31;11.07;;;;;;;;;;;;;ESO 056-134;;In the Large Magellanic Cloud.; -NGC1987;GCl;05:27:17.15;-70:44:14.5;Men;1.70;1.70;90;12.10;;;;;;;;;;;;;;ESO 056-131;;In the Large Magellanic Cloud.; -NGC1988;*;05:37:26.49;+21:13:05.7;Tau;;;;;;;;;;;;;;;;;;;;; -NGC1989;G;05:34:23.42;-30:48:03.8;Col;1.72;1.18;93;14.13;;10.94;10.18;9.93;24.00;E-S0;;;;;;;;2MASX J05342343-3048035,ESO 423-021,ESO-LV 423-0210,MCG -05-14-004,PGC 017464;;; -NGC1990;*;05:36:12.82;-01:12:06.9;Ori;;;;1.51;1.69;2.07;2.07;2.16;;;;;;;;;;BD -01 0969,HD 037128,HIP 026311,IDS 05311-0116 A,TYC 4766-2450-1,WDS J05362-0112A,Eps Ori,46 Ori;Alnilam;; -NGC1991;Dup;05:27:59.02;-67:25:26.9;Dor;;;;;;;;;;;;;;;1974;;;;;; -NGC1992;G;05:34:31.77;-30:53:49.2;Col;1.22;0.69;51;14.69;;11.49;10.75;10.60;23.65;S0-a;;;;;;;;2MASX J05343177-3053492,ESO 423-023,ESO-LV 423-0230,MCG -05-14-007,PGC 017466;;; -NGC1993;G;05:35:25.57;-17:48:55.1;Lep;1.58;0.87;77;13.41;;10.25;9.59;9.32;23.33;E-S0;;;;;;;;2MASX J05352557-1748548,ESO 554-014,ESO-LV 554-0140,MCG -03-15-003,PGC 017487;;; -NGC1994;OCl;05:28:21.77;-69:08:30.6;Dor;1.60;1.50;170;;;;;;;;;;;;;;;ESO 056-136,IRAS 05287-6910;;Within boundaries of LMC; -NGC1995;**;05:33:03.34;-48:40:30.5;Pic;;;;;;;;;;;;;;;;;;;;; -NGC1996;OCl;05:38:18.88;+25:49:23.4;Tau;6.00;;;;;;;;;;;;;;;;;MWSC 0608;;; -NGC1997;OCl;05:30:34.70;-63:11:58.3;Dor;1.80;1.80;;14.27;13.43;;;;;;;;;;;;;2MASX J05303476-6311581,2MASX J05303476-6311581 ID,ESO 086-001;;In the Large Magellanic Cloud.; -NGC1998;G;05:33:15.76;-48:41:44.2;Pic;0.95;0.47;16;15.18;;11.91;11.24;11.00;23.75;S0-a;;;;;;;;2MASX J05331577-4841442,ESO 204-015,ESO-LV 204-0150,PGC 017434;;This is not NGC 1995 (which is a double star).; -NGC1999;RfN;05:36:25.35;-06:42:57.1;Ori;2.00;2.00;;9.50;;;;;;;;;;;;;;LBN 979;;; -NGC2000;OCl;05:27:29.24;-71:52:45.8;Men;1.60;1.50;150;12.32;12.14;;;;;;;;;;;;;ESO 056-135;;In the Large Magellanic Cloud.; -NGC2001;*Ass;05:29:02.06;-68:46:09.4;Dor;7.30;3.60;40;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2002;GCl;05:30:20.70;-66:53:06.0;Dor;1.90;1.70;20;11.28;10.84;;;;;;;;;;;;;2MASX J05301728-6653083,IRAS 05303-6655;;This is a globular cluster in the Large Magellanic Cloud.; -NGC2003;GCl;05:30:55.20;-66:27:59.6;Dor;1.70;1.40;70;11.35;11.30;;;;;;;;;;;;;2MASX J05305522-6627595,ESO 086-006;;In the Large Magellanic Cloud.; -NGC2004;GCl;05:30:42.75;-67:17:11.2;Dor;3.00;2.80;90;9.60;;;;;;;;;;;;;;2MASX J05304266-6717108,2MASX J05304266-6717108 ID,ESO 086-004;;In the Large Magellanic Cloud.; -NGC2005;GCl;05:30:10.85;-69:45:08.7;Dor;1.60;1.60;;12.30;11.57;;;;;;;;;;;;;ESO 056-138;;In the Large Magellanic Cloud.; -NGC2006;*Ass;05:31:21.00;-66:57:55.0;Dor;1.60;1.40;140;11.00;10.88;;;;;;;;;;;;;ESO 086-008;;This is a stellar association in the LMC.; -NGC2007;G;05:34:59.17;-50:55:18.1;Pic;1.53;0.51;81;14.84;;12.21;11.71;11.52;23.63;SBc;;;;;;;;2MASX J05345917-5055181,ESO 204-019,ESO-LV 204-0190,PGC 017478;;; -NGC2008;G;05:35:03.81;-50:58:00.4;Pic;1.23;0.62;95;14.64;;11.88;11.17;10.86;23.27;Sc;;;;;;;;2MASX J05350381-5058002,ESO 204-020,ESO-LV 204-0200,IRAS 05338-5059,PGC 017480;;; -NGC2009;OCl;05:30:59.16;-69:10:54.0;Dor;1.40;1.20;10;11.29;11.02;;;;;;;;;;;;;ESO 056-140,IRAS 05313-6913;;Within boundaries of LMC; -NGC2010;OCl;05:30:34.93;-70:49:10.8;Men;1.90;1.70;170;11.96;11.72;;;;;;;;;;;;;ESO 056-139;;In the Large Magellanic Cloud.; -NGC2011;OCl;05:32:20.21;-67:31:23.3;Dor;1.00;1.00;;10.62;10.58;;;;;;;;;;;;;ESO 056-144;;In the Large Magellanic Cloud.; -NGC2012;G;05:22:35.35;-79:51:06.5;Men;1.29;0.76;113;14.49;;10.65;9.95;9.63;23.29;E-S0;;;;;;;;2MASX J05223529-7951063,ESO 016-005,ESO-LV 16-0050,PGC 017194;;; -NGC2013;OCl;05:44:01.67;+55:47:36.9;Aur;;;;;;;;;;;;;;;;;;;;; -NGC2014;Neb;05:32:19.87;-67:41:23.4;Dor;5.10;3.50;60;9.17;8.97;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2015;*Ass;05:32:06.49;-69:14:34.9;Dor;4.70;4.00;110;10.56;10.43;;;;;;;;;;;;;ESO 056-147;;In the Large Magellanic Cloud.; -NGC2016;OCl;05:31:38.82;-69:56:45.1;Men;1.80;1.80;;;;;;;;;;;;;;;;ESO 056-142;;In the Large Magellanic Cloud.; -NGC2017;OCl;05:39:16.31;-17:50:54.6;Lep;5.00;;;;;;;;;;;;;;;;;ESO 554-022;;Group of Galactic stars.; -NGC2018;HII;05:31:24.89;-71:04:08.6;Men;2.80;1.70;170;10.91;10.89;;;;;;;;;;;;;ESO 056-141,IRAS 05320-7106;;In the Large Magellanic Cloud. ESO identification of NGC 2018 is wrong.; -NGC2019;GCl;05:31:56.66;-70:09:34.5;Men;1.50;1.50;;10.90;10.86;;;;;;;;;;;;;ESO 056-145;;In the Large Magellanic Cloud.; -NGC2020;EmN;05:33:12.59;-67:42:57.2;Dor;3.20;3.90;50;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2021;OCl;05:33:30.67;-67:27:10.4;Dor;0.90;0.90;;;12.06;;;;;;;;;;;;;ESO 056-150;;In the Large Magellanic Cloud.; -NGC2022;PN;05:42:06.21;+09:05:11.5;Ori;0.32;;;12.40;11.60;15.42;11.79;11.03;;;;15.89;;;;;HD 37882;IRAS 05393+0903,PN G196.6-10.9;;; -NGC2023;RfN;05:41:38.39;-02:15:32.5;Ori;10.00;8.00;;;;;;;;;;;;;;;;BD -02 1345,HD 037903,HIP 026816,LBN 954;;; -NGC2024;Neb;05:41:42.57;-01:51:22.6;Ori;30.00;30.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC2025;OCl;05:32:33.64;-71:42:55.8;Men;1.90;1.90;;11.18;10.94;;;;;;;;;;;;;ESO 056-149;;In the Large Magellanic Cloud.; -NGC2026;OCl;05:43:10.15;+20:08:20.0;Tau;4.20;;;;;;;;;;;;;;;;;MWSC 0655;;; -NGC2027;OCl;05:34:59.71;-66:54:58.7;Dor;4.60;2.80;100;10.97;10.97;;;;;;;;;;;;;ESO 086-013;;In the Large Magellanic Cloud.; -NGC2028;OCl;05:33:48.57;-69:57:06.5;Men;1.10;1.00;60;13.16;12.88;;;;;;;;;;;;;ESO 056-152;;In the Large Magellanic Cloud.; -NGC2029;OCl;05:35:40.66;-66:02:06.0;Dor;1.10;0.85;60;;12.29;;;;;;;;;;;;;2MASX J05354060-6602059,ESO 056-156;;; -NGC2030;HII;05:34:59.74;-67:33:22.9;Dor;1.70;1.70;;;12.29;;;;;;;;;;;;;;;In the Large Magellanic Cloud. NGC coordinates switched with NGC 2029.; -NGC2031;GCl;05:33:41.82;-70:59:12.4;Men;3.30;2.80;150;11.09;10.83;;;;;;;;;;;;;ESO 056-153;;In the Large Magellanic Cloud.; -NGC2032;HII;05:35:20.62;-67:34:06.4;Dor;2.80;1.40;30;;;;;;;;;;;;;;;ESO 056-160;;In the Large Magellanic Cloud.; -NGC2033;*Ass;05:34:30.70;-69:46:48.5;Dor;5.90;4.60;10;11.53;11.63;;;;;;;;;;;;;;;In the Large Magellanic Cloud. ESO identification of NGC 2033 is wrong.; -NGC2034;*Ass;05:35:32.77;-66:54:13.1;Dor;4.50;3.20;;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2035;Neb;05:35:31.20;-67:35:03.0;Dor;1.80;1.30;20;;10.99;;;;;;;;;;;;;2MASX J05353417-6735319;;The 2MASS position refers to a knot about 30 arcsec southeast of the center.; -NGC2036;OCl;05:34:31.39;-70:03:51.7;Men;1.60;1.60;;12.96;12.77;;;;;;;;;;;;;ESO 056-155;;In the Large Magellanic Cloud.; -NGC2037;OCl;05:35:00.63;-69:43:53.7;Dor;2.90;1.30;170;10.21;10.31;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2038;OCl;05:34:42.27;-70:33:46.6;Men;1.60;1.50;120;12.10;11.92;;;;;;;;;;;;;ESO 056-158;;In the Large Magellanic Cloud.; -NGC2039;Other;05:44:00.91;+08:41:27.8;Ori;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC2040;Neb;05:36:05.93;-67:34:06.8;Dor;2.10;1.70;160;;11.47;;;;;;;;;;;;;ESO 056-164,IRAS 05362-6735;;In the Large Magellanic Cloud.; -NGC2041;GCl;05:36:28.05;-66:59:23.2;Dor;2.60;2.60;;10.58;10.36;;;;;;;;;;;;;ESO 086-015;;In the Large Magellanic Cloud.; -NGC2042;OCl;05:36:09.58;-68:55:24.4;Dor;4.50;4.50;;9.82;9.58;;;;;;;;;;;;;ESO 056-163;;ESO-B RA is -18 seconds in error. In the Large Magellanic Cloud.; -NGC2043;OCl;05:35:57.18;-70:04:27.9;Men;0.65;0.55;120;;;;;;;;;;;;;;;ESO 056-168;;In the Large Magellanic Cloud.; -NGC2044;*Ass;05:36:06.18;-69:11:55.2;Dor;5.50;4.50;100;10.69;10.59;;;;;;;;;;;;;ESO 056-165;;In the Large Magellanic Cloud.; -NGC2045;*;05:45:01.30;+12:53:18.1;Tau;;;;6.68;6.46;6.01;5.98;;;;;;;;;;;BD +12 0884,HD 038263,HIP 027116,TYC 723-519-1;;; -NGC2046;OCl;05:35:37.53;-70:14:26.5;Men;1.10;1.00;110;12.95;12.64;;;;;;;;;;;;;ESO 056-162;;In the Large Magellanic Cloud.; -NGC2047;OCl;05:35:52.99;-70:11:33.6;Men;0.95;0.90;90;13.38;13.15;;;;;;;;;;;;;ESO 056-167;;In the Large Magellanic Cloud.; -NGC2048;EmN;05:35:55.59;-69:38:54.7;Dor;1.40;1.00;100;12.05;12.17;;;;;;;;;;;;;2MASX J05355497-6938529,IRAS 05363-6940;;Within boundaries of LMC; -NGC2049;G;05:43:15.31;-30:04:42.2;Col;2.14;0.97;167;13.67;;10.61;9.92;9.65;23.70;Sa;;;;;;;;2MASX J05431530-3004420,ESO 424-011,ESO-LV 424-0110,MCG -05-14-011,PGC 017657;;; -NGC2050;*Ass;05:36:38.82;-69:23:00.7;Dor;3.00;2.40;70;9.47;9.25;;;;;;;;;;;;;ESO 056-170;;In the Large Magellanic Cloud.; -NGC2051;OCl;05:36:07.34;-71:00:41.0;Men;1.50;1.50;;12.03;11.69;;;;;;;;;;;;;ESO 056-169;;In the Large Magellanic Cloud.; -NGC2052;Neb;05:37:11.05;-69:46:27.1;Dor;18.00;12.00;;;;;;;;;;;;;;;;ESO 056-176;;In the Large Magellanic Cloud.;Dimensions taken from LEDA -NGC2053;OCl;05:37:39.70;-67:24:46.5;Dor;1.50;1.30;10;12.38;12.18;;;;;;;;;;;;;ESO 086-017;;In the Large Magellanic Cloud.; -NGC2054;Other;05:45:15.38;-10:04:59.3;Ori;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC2055;*Ass;05:36:44.73;-69:29:55.1;Dor;1.90;1.30;120;8.51;8.39;;;;;;;;;;;;;IRAS 05371-6931;;Within boundaries of LMC; -NGC2056;OCl;05:36:33.97;-70:40:18.8;Men;1.50;1.50;;11.80;11.77;;;;;;;;;;;;;ESO 056-172;;In the Large Magellanic Cloud.; -NGC2057;OCl;05:36:55.14;-70:16:08.2;Men;1.30;1.20;20;12.39;12.17;;;;;;;;;;;;;ESO 056-174;;In the Large Magellanic Cloud.; -NGC2058;OCl;05:36:54.22;-70:09:44.1;Men;2.10;2.10;;12.09;11.85;;;;;;;;;;;;;ESO 056-173;;In the Large Magellanic Cloud.; -NGC2059;OCl;05:37:00.55;-70:07:44.5;Men;1.10;1.00;170;13.16;12.85;;;;;;;;;;;;;ESO 056-175;;In the Large Magellanic Cloud.; -NGC2060;SNR;05:37:46.90;-69:10:18.0;Dor;2.20;2.00;160;9.69;9.59;15.54;14.94;14.78;;;;;;;;;;;;"Open cluster involved; in the Large Magellanic Cloud."; -NGC2061;OCl;05:42:41.77;-34:00:34.3;Col;;;;;;;;;;;;;;;;;;ESO 363-016;;Group of stars.; -NGC2062;OCl;05:40:02.70;-66:52:32.7;Dor;1.20;1.10;20;12.97;12.67;;;;;;;;;;;;;ESO 086-020;;In the Large Magellanic Cloud.; -NGC2063;Other;05:46:43.03;+08:46:52.0;Ori;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC2064;RfN;05:46:18.39;+00:00:21.4;Ori;10.00;10.00;;;;;;;;;;;;;;;;2MASX J05461915+0000202,LBN 939;;The 2MASS XSC position is 12 arcsec northeast of the optical center.; -NGC2065;OCl;05:37:38.42;-70:14:11.3;Men;2.30;2.30;;11.50;11.24;;;;;;;;;;;;;ESO 057-002;;In the Large Magellanic Cloud.; -NGC2066;OCl;05:37:43.12;-70:09:59.6;Men;1.00;0.90;140;13.45;13.10;;;;;;;;;;;;;ESO 057-003;;In the Large Magellanic Cloud.; -NGC2067;RfN;05:46:31.88;+00:07:52.5;Ori;8.00;3.00;;;;;;;;;;;;;;;;;;The NGC identification is not certain.;Dimensions taken from LEDA -NGC2068;RfN;05:46:45.82;+00:04:45.5;Ori;4.50;;;8.00;8.00;;;;;;;;;078;;;;MWSC 0664;;;V-mag taken from HEASARC's messier table -NGC2069;Neb;05:38:46.44;-68:58:27.8;Dor;5.00;2.20;30;;10.10;;;;;;;;;;;;;ESO 057-007;;Part of the 30 Doradus complex in the Large Magellanic Cloud.; -NGC2070;HII;05:38:42.36;-69:06:03.2;Dor;16.00;16.00;;5.00;7.25;;;;;;;;;;;;;C 103;30 Dor Cluster,Tarantula Nebula;In the Large Magellanic Cloud.;B-Mag taken from LEDA -NGC2071;Cl+N;05:47:07.26;+00:17:39.3;Ori;7.00;5.00;;8.00;;;;;;;;;;;;;;LBN 938,MWSC 0665;;;B-Mag taken from LEDA -NGC2072;OCl;05:38:24.39;-70:14:02.6;Men;1.00;0.90;110;13.73;13.21;;;;;;;;;;;;;ESO 057-004;;In the Large Magellanic Cloud.; -NGC2073;G;05:45:53.91;-21:59:56.9;Lep;1.44;1.38;110;13.44;;10.30;9.66;9.43;23.00;E-S0;;;;;;;;2MASX J05455392-2159568,ESO 554-031,ESO-LV 554-0310,MCG -04-14-024,PGC 017772;;; -NGC2074;Cl+N;05:39:03.58;-69:29:53.2;Dor;4.00;3.40;50;8.50;;;;;;;;;;;;;;;;"Open cluster involved; in the Large Magellanic Cloud.";B-Mag taken from LEDA -NGC2075;Cl+N;05:38:21.35;-70:41:06.1;Men;2.20;1.80;30;11.48;11.47;;;;;;;;;;;;;2MASX J05382065-7040585;;"Open cluster involved; in the Large Magellanic Cloud."; -NGC2076;G;05:46:47.46;-16:46:57.4;Lep;2.52;1.50;44;12.70;;9.76;8.90;8.50;24.63;S0-a;;;;;;;;2MASX J05464670-1647083,2MASX J05464746-1646574,IRAS 05445-1648,MCG -03-15-012,PGC 017804;;Extended HIPASS source; -NGC2077;Neb;05:39:36.02;-69:39:25.6;Dor;1.30;1.30;;11.71;11.71;;;;;;;;;;;;;ESO 057-009;;In the Large Magellanic Cloud.; -NGC2078;EmN;05:39:39.45;-69:44:35.4;Dor;1.20;1.10;0;11.01;10.89;;;;;;;;;;;;;ESO 057-010;;Part of the NGC 2079 complex in the Large Magellanic Cloud.; -NGC2079;HII;05:39:37.60;-69:45:25.9;Dor;1.10;0.95;160;11.69;11.81;;;;;;;;;;;;;ESO 057-011;;Brightest in complex of seven nebulae in the Large Magellanic Cloud.; -NGC2080;HII;05:39:45.82;-69:38:38.8;Dor;1.70;1.50;130;;10.42;;;;;;;;;;;;;ESO 057-012;;In LMC. Identified as an HII region in PKSCAT90 (version 1.01).; -NGC2081;Cl+N;05:39:59.39;-69:24:21.2;Dor;8.50;6.00;70;;;;;;;;;;;;;;;;;Emission nebula involved.; -NGC2082;G;05:41:51.12;-64:18:04.1;Dor;2.06;1.86;50;12.79;;10.21;9.54;9.36;22.97;SBb;;;;;;;;2MASX J05415112-6418039,ESO 086-021,ESO-LV 86-0210,IRAS 05415-6419,PGC 017609;;; -NGC2083;Neb;05:39:59.22;-69:44:15.3;Dor;2.00;1.80;70;;10.83;;;;;;;;;;;;;;;Part of the NGC 2079 complex in the Large Magellanic Cloud.; -NGC2084;Neb;05:40:07.00;-69:45:33.9;Dor;1.70;1.20;40;;;;;;;;;;;;;;;;;Part of the NGC 2079 complex in the Large Magellanic Cloud.; -NGC2085;Neb;05:40:09.83;-69:40:22.1;Dor;0.95;0.95;;;12.06;;;;;;;;;;;;;ESO 057-016;;In the Large Magellanic Cloud.; -NGC2086;Neb;05:40:12.88;-69:40:04.3;Dor;0.85;0.80;70;;12.00;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2087;G;05:44:16.03;-55:31:56.8;Pic;0.81;0.59;133;14.69;;11.91;11.28;10.90;22.81;SBa;;;;;;;;2MASX J05441600-5531565,ESO 159-026,ESO-LV 159-0260,IRAS 05433-5533,PGC 017684,TYC 8523-83-1;;; -NGC2088;OCl;05:40:59.81;-68:27:55.3;Dor;1.50;1.40;10;12.76;12.47;;;;;;;;;;;;;ESO 057-020;;In the Large Magellanic Cloud.; -NGC2089;G;05:47:51.43;-17:36:08.6;Lep;2.20;1.08;42;12.93;;9.65;9.00;8.81;23.45;E-S0;;;;;;;;2MASX J05475142-1736084,ESO 554-036,ESO-LV 554-0360,MCG -03-15-016,PGC 017860;;; -NGC2090;G;05:47:01.89;-34:15:02.2;Col;4.47;1.67;17;11.70;11.20;8.92;8.30;8.05;22.69;Sc;;;;;;;;2MASX J05470188-3415021,ESO 363-023,ESO-LV 363-0230,IRAS 05452-3416,MCG -06-13-009,PGC 017819;;Extended HIPASS source; -NGC2091;OCl;05:40:58.04;-69:26:13.5;Dor;1.30;1.20;80;12.39;12.07;;;;;;;;;;;;;ESO 057-021;;In the Large Magellanic Cloud.; -NGC2092;OCl;05:41:22.00;-69:13:27.2;Dor;1.00;0.90;90;;;;;;;;;;;;;;;ESO 057-022;;In the Large Magellanic Cloud.; -NGC2093;*Ass;05:41:49.74;-68:55:17.1;Dor;1.50;1.30;170;11.89;11.57;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2094;OCl;05:42:12.75;-68:55:06.8;Dor;0.90;0.55;100;;;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2095;OCl;05:42:36.16;-67:19:08.0;Dor;1.50;1.40;140;13.14;13.09;;;;;;;;;;;;;ESO 086-024;;In the Large Magellanic Cloud.; -NGC2096;OCl;05:42:17.80;-68:27:31.0;Dor;1.10;0.90;160;11.82;11.31;;;;;;;;;;;;;ESO 057-027;;In the Large Magellanic Cloud.; -NGC2097;GCl;05:44:16.02;-62:47:08.2;Dor;1.90;1.90;;14.05;13.67;;;;;;;;;;;;;ESO 086-028;;In the Large Magellanic Cloud.; -NGC2098;OCl;05:42:31.03;-68:16:23.4;Dor;2.20;2.00;140;10.89;10.73;;;;;;;;;;;;;2MASX J05423105-6816237,2MASX J05423105-6816237 ID,ESO 057-028;;In the Large Magellanic Cloud.; -NGC2099;OCl;05:52:18.35;+32:33:10.8;Aur;11.40;;;6.19;5.60;;;;;;;;;037;;;;MWSC 0689;;; -NGC2100;GCl;05:42:09.07;-69:12:42.6;Dor;2.50;2.50;;9.60;;;;;;;;;;;;;;ESO 057-025;;In the Large Magellanic Cloud.; -NGC2101;G;05:46:24.17;-52:05:18.7;Pic;1.24;0.65;94;13.68;;;;;22.48;IB;;;;;;;;2MASX J05462417-5205188,ESO 205-001,ESO-LV 205-0010,IRAS 05451-5206,PGC 017793;;; -NGC2102;OCl;05:42:20.49;-69:29:13.5;Dor;0.85;0.85;;;11.44;;;;;;;;;;;;;ESO 057-029;;In the Large Magellanic Cloud.; -NGC2103;HII;05:41:40.35;-71:19:59.3;Men;4.00;3.50;40;;10.82;;;;;;;;;;;;;IRAS 05423-7120;;In the Large Magellanic Cloud.; -NGC2104;G;05:47:04.73;-51:33:10.5;Pic;2.12;0.91;162;13.52;;11.42;10.75;10.58;22.83;SBm;;;;;;;;2MASX J05470477-5133106,ESO 205-002,ESO-LV 205-0020,IRAS 05459-5133,PGC 017822;;; -NGC2105;GCl;05:44:19.18;-66:55:03.4;Dor;1.70;1.50;160;12.31;12.19;;;;;;;;;;;;;ESO 086-029;;In the Large Magellanic Cloud.; -NGC2106;G;05:50:46.63;-21:34:02.1;Lep;2.43;1.22;106;13.12;;10.05;9.39;9.12;23.77;S0;;;;;;;;2MASX J05504661-2134023,ESO 555-003,ESO-LV 555-0030,MCG -04-14-040,PGC 017975;;; -NGC2107;OCl;05:43:12.88;-70:38:23.8;Men;1.70;1.70;;11.89;11.51;;;;;;;;;;;;;ESO 057-032;;In the Large Magellanic Cloud.; -NGC2108;GCl;05:43:56.87;-69:10:55.6;Dor;1.80;1.80;;12.90;12.32;;;;;;;;;;;;;2MASX J05435685-6910558,ESO 057-033;;In the Large Magellanic Cloud.; -NGC2109;OCl;05:44:22.92;-68:32:52.1;Dor;1.60;1.60;;12.55;12.21;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2110;G;05:52:11.38;-07:27:22.4;Ori;1.83;1.45;175;14.77;13.51;9.26;8.47;8.14;23.56;E-S0;;;;;;;;2MASX J05521140-0727222,IRAS 05497-0728,MCG -01-15-004,PGC 018030;;; -NGC2111;OCl;05:44:32.99;-70:59:35.7;Men;1.50;1.40;60;12.75;12.45;;;;;;;;;;;;;ESO 057-035;;In the Large Magellanic Cloud.; -NGC2112;OCl;05:53:45.21;+00:24:38.9;Ori;21.00;;;;9.10;;;;;;;;;;;;;MWSC 0692;;; -NGC2113;Cl+N;05:45:24.57;-69:46:27.0;Dor;1.10;1.10;;;;;;;;;;;;;;;;IRAS 05458-6947;;"Open cluster involved; in the Large Magellanic Cloud."; -NGC2114;OCl;05:46:12.11;-68:02:53.9;Dor;1.40;1.20;30;12.56;12.48;;;;;;;;;;;;;ESO 057-037;;In the Large Magellanic Cloud.; -NGC2115A;G;05:51:19.82;-50:34:58.3;Pic;1.21;1.06;59;14.15;;11.59;10.93;10.63;23.45;E;;;;;;;;2MASX J05511983-5034582,ESO 205-006,ESO-LV 205-0060,PGC 018001;;; -NGC2115B;G;05:51:21.21;-50:35:33.0;Pic;0.57;0.47;43;16.05;;12.93;12.36;12.12;23.56;S0-a;;;;;;;;2MASX J05512119-5035332,ESO-LV 205-0061,PGC 018002;;; -NGC2116;OCl;05:47:15.16;-68:30:28.6;Dor;1.20;1.10;160;13.16;12.92;;;;;;;;;;;;;ESO 057-038;;In the Large Magellanic Cloud.; -NGC2117;OCl;05:47:45.92;-67:27:00.6;Dor;2.00;1.80;90;12.01;11.65;;;;;;;;;;;;;ESO 086-033;;In the Large Magellanic Cloud.; -NGC2118;OCl;05:47:39.57;-69:07:54.6;Dor;1.60;1.60;;13.45;13.38;;;;;;;;;;;;;ESO 057-039;;In the Large Magellanic Cloud.; -NGC2119;G;05:57:26.95;+11:56:57.1;Ori;1.26;0.99;145;15.00;;10.01;9.25;8.94;24.36;E;;;;;;;;2MASX J05572695+1156572,PGC 018136,UGC 03380;;; -NGC2120;GCl;05:50:34.61;-63:40:39.4;Dor;2.20;2.20;;13.31;12.67;;;;;;;;;;;;;2MASX J05503456-6340396,2MASX J05503456-6340396 ID,ESO 086-034;;In the Large Magellanic Cloud.; -NGC2121;GCl;05:48:12.84;-71:28:47.2;Men;2.70;2.20;30;13.21;12.37;;;;;;;;;;;;;ESO 057-040;;In the Large Magellanic Cloud.; -NGC2122;Cl+N;05:48:52.51;-70:04:12.3;Men;6.00;5.00;50;;10.43;;;;;;;;;;;;;;;"Open cluster involved; in the Large Magellanic Cloud."; -NGC2123;GCl;05:51:43.32;-65:19:17.3;Dor;1.50;1.50;;12.78;12.56;;;;;;;;;;;;;ESO 086-036;;In the Large Magellanic Cloud.; -NGC2124;G;05:57:52.23;-20:05:04.7;Lep;2.84;0.81;4;13.44;;10.23;9.63;9.34;23.58;Sb;;;;;;;;2MASX J05575221-2005047,ESO 555-016,ESO-LV 555-0160,IRAS 05557-2005,MCG -03-16-003,PGC 018147;;; -NGC2125;OCl;05:50:54.23;-69:28:44.9;Dor;1.10;1.10;;;;;;;;;;;;;;;;ESO 057-044;;In the Large Magellanic Cloud.; -NGC2126;OCl;06:02:32.98;+49:51:57.3;Aur;5.40;;;;;;;;;;;;;;;;;MWSC 0708;;; -NGC2127;OCl;05:51:21.28;-69:21:32.6;Dor;1.50;1.50;;11.97;11.64;;;;;;;;;;;;;2MASX J05512118-6921328,2MASX J05512118-6921328 ID,ESO 057-045;;In the Large Magellanic Cloud.; -NGC2128;G;06:04:34.23;+57:37:39.9;Cam;1.44;1.01;63;13.70;;9.91;9.15;8.83;23.17;E-S0;;;;;;;;2MASX J06043422+5737401,IRAS 06002+5737,MCG +10-09-010,PGC 018374,UGC 03392;;; -NGC2129;OCl;06:01:06.54;+23:19:19.8;Gem;3.90;;;7.31;6.70;;;;;;;;;;;;;MWSC 0704;;; -NGC2130;GCl;05:52:23.72;-67:20:02.8;Dor;1.40;1.30;160;12.42;12.10;;;;;;;;;;;;;ESO 086-037;;In the Large Magellanic Cloud.; -NGC2131;G;05:58:47.52;-26:39:10.8;Lep;1.16;0.49;119;14.59;;12.59;11.93;11.83;22.89;IB;;;;;;;;2MASX J05584752-2639110,ESO 488-050,ESO-LV 488-0500,PGC 018172;;; -NGC2132;OCl;05:55:44.32;-59:55:39.8;Pic;7.80;;;;;;;;;;;;;;;;;MWSC 0694;;"20-30 stars, 17 arcmin by 11 arcmin; open cluster?"; -NGC2133;OCl;05:51:28.72;-71:10:30.1;Men;1.60;1.60;;12.04;;;;;;;;;;;;;;ESO 057-046;;In the Large Magellanic Cloud.; -NGC2134;GCl;05:51:57.70;-71:05:51.3;Men;2.80;2.80;;11.05;;;;;;;;;;;;;;2MASX J05515774-7105514,ESO 057-047;;In the Large Magellanic Cloud.; -NGC2135;GCl;05:53:35.43;-67:25:46.3;Dor;1.50;1.50;;12.22;12.05;;;;;;;;;;;;;2MASX J05533545-6725464,2MASX J05533545-6725464 ID,ESO 086-039;;In the Large Magellanic Cloud.; -NGC2136;GCl;05:52:57.75;-69:29:33.9;Dor;2.80;2.50;140;10.99;10.70;;;;;;;;;;;;;2MASX J05525769-6929342,ESO 057-048;;In the Large Magellanic Cloud.; -NGC2137;OCl;05:53:13.15;-69:28:55.1;Dor;1.10;1.00;30;12.88;12.66;;;;;;;;;;;;;ESO 057-049;;In the Large Magellanic Cloud.; -NGC2138;GCl;05:54:50.18;-65:50:13.6;Dor;1.20;1.20;;14.04;13.76;;;;;;;;;;;;;2MASX J05545015-6550139,2MASX J05545015-6550139 ID,ESO 086-040;;In the Large Magellanic Cloud.; -NGC2139;G;06:01:07.81;-23:40:21.5;Lep;2.94;2.16;124;12.10;11.71;10.23;9.66;9.34;22.80;Sc;;;;;;2154;;2MASX J06010796-2340203,ESO 488-054,ESO-LV 488-0540,IRAS 05590-2340,MCG -04-15-005,PGC 018258;;; -NGC2140;OCl;05:54:16.18;-68:35:59.4;Dor;1.50;1.50;;12.65;12.44;;;;;;;;;;;;;ESO 057-051;;In the Large Magellanic Cloud.; -NGC2141;OCl;06:02:55.06;+10:26:47.3;Ori;5.40;;;10.43;9.40;;;;;;;;;;;;;MWSC 0710;;; -NGC2142;*;06:01:50.43;-10:35:52.6;Mon;;;;4.82;4.94;5.15;5.20;5.17;;;;;;;;;;BD -10 1349,HD 040967,HIP 028574,IDS 05571-1036 AB,WDS J06018-1036AB,3 Mon;;; -NGC2143;OCl;06:03:01.56;+05:49:52.6;Ori;6.90;;;;;;;;;;;;;;;;;MWSC 0711;;; -NGC2144;G;05:40:57.19;-82:07:09.8;Men;1.46;1.15;86;13.93;;10.23;9.45;9.13;23.32;Sa;;;;;;;;2MASX J05405723-8207096,ESO 016-010,ESO-LV 16-0100,IRAS 05464-8208,PGC 017592;;; -NGC2145;OCl;05:54:23.06;-70:54:03.7;Men;1.50;1.50;;12.44;12.07;;;;;;;;;;;;;2MASX J05542432-7054133,ESO 057-052;;In the Large Magellanic Cloud.; -NGC2146;G;06:18:37.71;+78:21:25.3;Cam;5.31;4.32;123;11.38;10.59;8.23;7.42;7.06;22.76;SBab;;;;;;;;2MASX J06183771+7821252,IRAS 06106+7822,MCG +13-05-022,PGC 018797,UGC 03429;;; -NGC2146A;G;06:23:55.20;+78:31:48.4;Cam;2.72;1.10;32;13.50;12.87;11.20;10.49;10.43;23.68;SABc;;;;;;;;2MASX J06235518+7831484,IRAS 06155+7833,MCG +13-05-025,PGC 018960,UGC 03439;;; -NGC2147;OCl;05:55:45.60;-68:12:05.7;Dor;0.95;0.95;;13.20;12.94;;;;;;;;;;;;;ESO 057-054;;In the Large Magellanic Cloud.; -NGC2148;G;05:58:45.85;-59:07:33.4;Pic;1.17;0.82;157;14.59;;11.11;10.36;10.12;23.35;Sb;;;;;;;;2MASX J05584584-5907337,ESO 120-024,ESO-LV 120-0240,IRAS 05581-5907,PGC 018171;;; -NGC2149;RfN;06:03:30.79;-09:43:50.1;Mon;3.00;2.00;;;;;;;;;;;;;;;;IRAS 06010-0943,IRAS 06010-0943;;Identified as a star by Strauss, et al (1992, ApJS, 83, 29).;Dimensions taken from LEDA -NGC2150;G;05:55:46.34;-69:33:38.9;Dor;1.15;0.61;130;14.01;14.32;10.75;10.05;9.74;22.30;Sab;;;;;;;;2MASX J05554635-6933392,ESO 057-055,ESO-LV 57-0550,IRAS 05562-6933,PGC 018097;;; -NGC2151;OCl;05:56:20.44;-69:01:02.5;Dor;1.30;1.30;;;;;;;;;;;;;;;;ESO 057-057;;In the Large Magellanic Cloud.; -NGC2152;G;06:00:55.29;-50:44:27.3;Pic;1.12;0.77;71;14.75;;11.89;11.17;10.84;23.48;SBa;;;;;;;;2MASX J06005531-5044271,ESO 205-015,ESO-LV 205-0150,PGC 018249;;; -NGC2153;GCl;05:57:51.72;-66:24:02.4;Dor;1.50;1.50;;13.74;13.05;;;;;;;;;;;;;ESO 086-043;;In the Large Magellanic Cloud.; -NGC2154;GCl;05:57:37.49;-67:15:49.6;Dor;2.40;2.40;;12.47;11.79;;;;;;;;;;;;;2MASX J05573751-6715496,2MASX J05573751-6715496 ID,ESO 086-042;;In the Large Magellanic Cloud.; -NGC2155;GCl;05:58:33.21;-65:28:35.3;Dor;2.40;2.40;;13.41;12.60;;;;;;;;;;;;;ESO 086-045;;In the Large Magellanic Cloud.; -NGC2156;GCl;05:57:49.68;-68:27:38.9;Dor;2.10;2.10;;11.50;11.38;;;;;;;;;;;;;2MASX J05574962-6827388,ESO 057-059;;In the Large Magellanic Cloud.; -NGC2157;GCl;05:57:34.78;-69:11:50.0;Dor;2.80;2.80;;10.35;10.16;;;;;;;;;;;;;ESO 057-058;;In the Large Magellanic Cloud.; -NGC2158;OCl;06:07:25.61;+24:05:46.2;Gem;8.40;;;9.49;8.60;;;;;;;;;;;;;MWSC 0733;;; -NGC2159;GCl;05:58:03.88;-68:37:22.5;Dor;1.90;1.90;;11.66;11.38;;;;;;;;;;;;;2MASX J05580385-6837229,2MASX J05580385-6837229 ID,ESO 057-060;;In the Large Magellanic Cloud.; -NGC2160;OCl;05:58:12.84;-68:17:22.5;Dor;1.40;1.40;;12.36;12.16;;;;;;;;;;;;;ESO 057-061;;In the Large Magellanic Cloud.; -NGC2161;GCl;05:55:43.06;-74:21:14.2;Men;2.30;2.30;;13.75;12.95;;;;;;;;;;;;;ESO 033-031;;In the Large Magellanic Cloud.; -NGC2162;GCl;06:00:30.17;-63:43:17.2;Dor;3.00;3.00;;13.38;12.70;;;;;;;;;;;;;2MASX J06003017-6343172,ESO 086-047;;In the Large Magellanic Cloud.; -NGC2163;RfN;06:07:49.54;+18:39:26.8;Ori;3.00;2.00;;;;;;;;;;;;;;;;IRAS 06048+1839,LBN 855;;; -NGC2164;GCl;05:58:56.26;-68:30:57.2;Dor;2.80;2.80;;10.44;10.34;;;;;;;;;;;;;2MASX J05585634-6830572,ESO 057-062;;In the Large Magellanic Cloud.; -NGC2165;OCl;06:11:04.21;+51:40:38.3;Aur;;;;;;;;;;;;;;;;;;;;; -NGC2166;OCl;05:59:34.14;-67:56:32.4;Dor;1.40;1.40;;13.12;12.86;;;;;;;;;;;;;2MASX J05593416-6756324,ESO 057-064;;In the Large Magellanic Cloud.; -NGC2167;*;06:06:58.56;-06:12:09.5;Mon;;;;6.78;6.58;6.21;6.19;6.13;;;;;;;;;;BD -06 1412,HD 041794,HIP 028985,TYC 4794-1529-1;;; -NGC2168;OCl;06:09:05.06;+24:20:19.1;Gem;24.00;;;5.31;5.10;;;;;;;;;035;;;;MWSC 0754;;; -NGC2169;OCl;06:08:24.35;+13:57:53.5;Ori;7.20;;;5.99;5.90;;;;;;;;;;;;;MWSC 0740;;; -NGC2170;RfN;06:07:31.82;-06:23:57.5;Mon;2.00;2.00;;;;;;;;;;;;;;;;LBN 994;;; -NGC2171;Other;05:58:59.64;-70:43:08.8;Men;;;;;;;;;;;;;;;;;;;;Nonexistent object. Perhaps an LMC star cloud with RA error?; -NGC2172;OCl;06:00:05.84;-68:38:12.9;Dor;1.70;1.70;;11.93;11.75;;;;;;;;;;;;;ESO 057-065;;In the Large Magellanic Cloud.; -NGC2173;GCl;05:57:58.88;-72:58:28.3;Men;2.60;2.60;;12.74;11.88;;;;;;;;;;;;;2MASX J05575887-7258282,ESO 033-034;;In the Large Magellanic Cloud.; -NGC2174;Neb;06:09:23.62;+20:39:34.5;Ori;40.00;30.00;;;;;;;;;;;;;;;;;Monkey Head Nebula;;Dimensions taken from LEDA -NGC2175;Cl+N;06:09:39.55;+20:29:15.3;Ori;5.40;;;7.00;6.80;;;;;;;;;;;;;LBN 854,MWSC 0764;;Position is for SAO 078049.; -NGC2176;OCl;06:01:19.38;-66:51:11.7;Dor;1.10;1.00;20;;;;;;;;;;;;;;;ESO 086-050;;In the Large Magellanic Cloud.; -NGC2177;OCl;06:01:16.49;-67:43:59.7;Dor;1.50;1.40;160;12.97;12.83;;;;;;;;;;;;;ESO 057-066;;In the Large Magellanic Cloud.; -NGC2178;G;06:02:47.58;-63:45:49.3;Pic;1.27;1.00;73;13.64;;10.93;10.23;9.95;23.07;E;;;;;;;;2MASX J06024755-6345490,ESO 086-053,ESO-LV 86-0530,PGC 018322;;; -NGC2179;G;06:08:02.22;-21:44:48.1;Lep;1.99;1.44;165;13.33;12.45;10.16;9.48;9.22;23.39;S0-a;;;;;;;;2MASX J06080220-2144480,ESO 555-038,ESO-LV 555-0380,MCG -04-15-011,PGC 018453;;; -NGC2180;OCl;06:09:36.25;+04:42:41.8;Ori;4.20;;;9.00;;;;;;;;;;;;;;MWSC 0765;;; -NGC2181;GCl;06:02:43.66;-65:15:53.5;Dor;1.50;1.50;;13.93;13.64;;;;;;;;;;;;;ESO 086-054;;In the Large Magellanic Cloud.; -NGC2182;RfN;06:09:30.95;-06:19:35.2;Mon;3.00;2.00;;9.00;;;;;;;;;;;;;;IRAS 06070-0619,LBN 998;;; -NGC2183;HII;06:10:46.93;-06:12:42.6;Mon;12.00;;;15.15;;;;;;;;;;;;;;LBN 996,MWSC 0779;;;B-Mag taken from LEDA -NGC2184;OCl;06:10:59.67;-03:29:42.6;Ori;6.60;;;;;;;;;;;;;;;;;MWSC 0784;;; -NGC2185;Neb;06:11:00.47;-06:13:36.7;Mon;2.00;2.00;;12.90;;;;;;;;;;;;;;LBN 997;;; -NGC2186;OCl;06:12:07.13;+05:27:30.9;Ori;4.20;;;9.20;8.70;;;;;;;;;;;;;MWSC 0787;;; -NGC2187A;G;06:03:44.25;-69:35:17.9;Dor;3.52;1.66;75;13.06;;10.90;10.15;9.96;24.34;S0-a;;;;;;;;2MASX J06034421-6935176,ESO-LV 57-0681,PGC 018355;;; -NGC2187B;G;06:03:52.42;-69:34:38.8;Dor;2.67;2.18;87;13.16;;9.99;9.20;9.01;24.28;E;;;;;;;;2MASX J06035244-6934387,PGC 018354;;; -NGC2188;G;06:10:09.53;-34:06:22.3;Col;5.42;1.33;177;12.10;11.82;12.43;11.84;11.61;23.26;SBm;;;;;;;;2MASX J06100970-3406499,ESO 364-037,ESO-LV 364-0370,IRAS 06083-3406,MCG -06-14-008,PGC 018536;;The 2MASX source may be a superposed star in southern part of NGC 2188.; -NGC2189;Other;06:12:09.99;+01:03:57.5;Ori;;;;;;;;;;;;;;;;;;;;Two groups of Galactic stars, not clusters. ID as NGC 2189 is uncertain.; -NGC2190;GCl;06:01:01.79;-74:43:31.5;Men;2.20;2.20;;13.57;12.94;;;;;;;;;;;;;2MASX J06005985-7443372,ESO 033-036;;In the Large Magellanic Cloud.; -NGC2191;G;06:08:23.87;-52:30:44.3;Pic;1.77;0.86;122;13.26;;9.94;9.28;9.06;23.16;S0;;;;;;;;2MASX J06082387-5230441,ESO 160-014,ESO-LV 160-0140,PGC 018464;;; -NGC2192;OCl;06:15:17.43;+39:51:18.8;Aur;5.40;;;;10.90;;;;;;;;;;;;;MWSC 0820;;; -NGC2193;GCl;06:06:17.52;-65:05:55.6;Dor;1.70;1.70;;14.13;13.42;;;;;;;;;;;;;2MASX J06061755-6505555,ESO 086-057;;In the Large Magellanic Cloud.; -NGC2194;OCl;06:13:45.91;+12:48:24.0;Ori;8.70;;;9.03;8.50;;;;;;;;;;;;;MWSC 0803;;; -NGC2195;**;06:14:33.81;+17:38:21.8;Ori;;;;;;;;;;;;;;;;;;;;; -NGC2196;G;06:12:09.65;-21:48:21.4;CMa;2.77;2.16;45;11.98;;9.07;8.40;8.13;22.78;Sa;;;;;;;;2MASX J06120963-2148212,ESO 556-004,ESO-LV 556-0040,IRAS 06100-2147,MCG -04-15-014,PGC 018602,UGCA 121;;; -NGC2197;GCl;06:06:07.31;-67:05:50.0;Dor;1.80;1.60;80;13.82;13.45;;;;;;;;;;;;;2MASX J06060728-6705499,2MASX J06060728-6705499 ID,ESO 086-058;;In the Large Magellanic Cloud.; -NGC2198;Other;06:13:54.91;+00:59:40.8;Ori;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC2199;G;06:04:44.95;-73:23:59.4;Men;2.21;0.88;38;13.76;;10.41;9.67;9.43;23.77;Sa;;;;;;;;2MASX J06044492-7323594,ESO 034-003,ESO-LV 34-0030,PGC 018379;;; -NGC2200;G;06:13:17.58;-43:39:47.4;Pup;1.21;0.94;168;14.89;;12.59;11.92;11.89;23.74;SBc;;;;;;;;2MASX J06131758-4339475,ESO 254-039,ESO-LV 254-0390,MCG -07-13-006,PGC 018652;;; -NGC2201;G;06:13:31.61;-43:42:17.0;Pup;1.03;0.72;111;14.25;;11.47;10.75;10.50;22.86;SABb;;;;;;;;2MASX J06133161-4342170,ESO 254-040,ESO-LV 254-0400,MCG -07-13-007,PGC 018658;;; -NGC2202;OCl;06:16:50.75;+05:59:46.2;Ori;4.80;;;;;;;;;;;;;;;;;MWSC 0828;;; -NGC2203;GCl;06:04:42.55;-75:26:18.3;Men;3.20;3.20;;12.80;11.29;;;;;;;;;;;;;ESO 034-004;;In the Large Magellanic Cloud.; -NGC2204;OCl;06:15:32.22;-18:39:57.1;CMa;6.30;;;9.35;8.60;;;;;;;;;;;;;MWSC 0822;;; -NGC2205;G;06:10:32.73;-62:32:18.3;Pic;1.30;0.99;77;13.71;;10.67;10.01;9.65;23.05;E-S0;;;;;;;;2MASX J06103272-6232184,ESO 086-063,ESO-LV 86-0630,PGC 018551;;; -NGC2206;G;06:15:59.84;-26:45:55.7;CMa;2.45;1.07;136;12.91;;10.24;9.57;9.30;22.96;Sbc;;;;;;;;2MASX J06155983-2645555,ESO 489-026,ESO-LV 489-0260,IRAS 06140-2644,MCG -04-15-019,PGC 018736,UGCA 123;;; -NGC2207;G;06:16:22.03;-21:22:21.6;CMa;4.86;2.71;116;11.48;10.65;9.11;8.49;8.19;23.84;SABc;;;;;;;;2MASX J06162209-2122217,ESO 556-008,ESO-LV 556-0080,IRAS 06142-2121,MCG -04-15-020,PGC 018749,UGCA 124;;HOLM 085B is part of the inner ring of NGC 2207.; -NGC2208;G;06:22:34.68;+51:54:34.1;Aur;1.73;1.00;107;13.70;12.61;10.08;9.35;9.04;23.91;S0;;;;;;;;2MASX J06223463+5154345,MCG +09-11-010,PGC 018911,UGC 03452;;; -NGC2209;GCl;06:08:35.91;-73:50:18.3;Men;2.90;2.90;;13.58;13.15;;;;;;;;;;;;;2MASX J06083595-7350181,2MASX J06083595-7350181 ID,ESO 034-006;;In the Large Magellanic Cloud.; -NGC2210;GCl;06:11:31.36;-69:07:17.0;Dor;3.30;3.30;;10.90;10.94;9.48;8.91;8.88;;;;;;;;;;2MASX J06113129-6907170,ESO 057-071;;In the Large Magellanic Cloud.; -NGC2211;G;06:18:30.36;-18:32:14.2;CMa;1.39;0.73;24;13.70;;10.37;9.65;9.40;23.12;S0;;;;;;;;2MASX J06183035-1832139,ESO 556-013,ESO-LV 556-0130,MCG -03-16-021,PGC 018794;;; -NGC2212;G;06:18:35.76;-18:31:10.1;CMa;1.28;0.69;147;14.49;;12.58;11.95;12.11;23.80;S0-a;;;;;;;;2MASX J06183576-1831099,ESO 556-014,ESO-LV 556-0140,MCG -03-16-022,PGC 018796;;; -NGC2213;OCl;06:10:41.94;-71:31:42.4;Men;2.10;2.10;;13.09;12.38;;;;;;;;;;;;;2MASX J06104194-7131423,ESO 057-070;;In the Large Magellanic Cloud.; -NGC2214;OCl;06:12:56.93;-68:15:38.6;Dor;3.10;3.10;;11.04;10.93;;;;;;;;;;;;;;;In the Large Magellanic Cloud.; -NGC2215;OCl;06:20:49.25;-07:17:01.6;Mon;8.40;;;8.85;8.45;;;;;;;;;;;;;MWSC 0843;;; -NGC2216;G;06:21:30.74;-22:05:14.8;CMa;1.43;1.11;20;13.70;;10.78;10.05;9.74;23.00;SABa;;;;;;;;2MASX J06213076-2205146,ESO 556-017,ESO-LV 556-0170,IRAS 06194-2203,MCG -04-15-027,PGC 018877;;; -NGC2217;G;06:21:39.78;-27:14:01.5;CMa;4.63;4.12;113;11.04;11.93;8.00;7.30;7.09;23.69;S0-a;;;;;;;;2MASX J06213977-2714014,ESO 489-042,ESO-LV 489-0420,IRAS 06196-2712,MCG -05-15-010,PGC 018883;;Confused HIPASS source; -NGC2218;Other;06:24:41.49;+19:20:28.7;Gem;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC2219;OCl;06:23:44.32;-04:40:38.2;Mon;4.20;;;;;;;;;;;;;;;;;MWSC 0855;;; -NGC2220;Other;06:21:10.76;-44:45:35.2;Pup;4.20;;;;;;;;;;;;;;;;;;;Aggregate of 9-10 bright stars involving SAO 217873.; -NGC2221;G;06:20:15.72;-57:34:42.3;Pic;2.41;0.51;179;13.86;;11.19;10.43;10.08;23.83;Sa;;;;;;;;2MASX J06201571-5734423,ESO 121-024,ESO-LV 121-0240,IRAS 06194-5733,PGC 018833;;; -NGC2222;G;06:20:17.06;-57:32:04.1;Pic;1.35;0.38;148;14.21;;;;;23.07;SBa;;;;;;;;2MASX J06201707-5732043,ESO 121-025,ESO-LV 121-0250,PGC 018835;;; -NGC2223;G;06:24:35.91;-22:50:17.7;CMa;2.82;2.25;9;12.46;;9.81;9.14;8.85;23.36;Sbc;;;;;;;;2MASX J06243588-2250176,ESO 489-049,ESO-LV 489-0490,IRAS 06224-2248,MCG -04-16-002,PGC 018978,UGCA 129;;; -NGC2224;Other;06:27:28.59;+12:35:36.2;Gem;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC2225;OCl;06:26:34.49;-09:37:50.7;Mon;3.60;;;;;;;;;;;;;;;;;MWSC 0868;;; -NGC2226;OCl;06:26:37.58;-09:38:34.0;Mon;;;;;;;;;;;;;;;;;;;;; -NGC2227;G;06:25:57.98;-22:00:17.4;CMa;2.27;1.21;21;13.40;;10.59;10.26;9.68;22.86;Sc;;;;;;;;2MASX J06255797-2200174,ESO 556-023,ESO-LV 556-0230,IRAS 06238-2158,MCG -04-16-004,PGC 019030;;; -NGC2228;G;06:21:15.54;-64:27:31.8;Dor;0.99;0.84;42;14.60;;10.81;10.13;9.79;23.32;S0;;;;;;;;2MASX J06211557-6427319,ESO 087-007,ESO-LV 87-0070,PGC 018862;;; -NGC2229;G;06:21:23.68;-64:57:24.0;Dor;1.24;0.52;132;14.40;;11.00;10.25;9.99;23.59;S0-a;;;;;;;;2MASX J06212367-6457240,ESO 087-008,ESO-LV 87-0080,PGC 018867;;; -NGC2230;G;06:21:27.56;-64:59:34.0;Dor;1.32;0.65;93;14.08;;10.62;9.89;9.66;23.53;E;;;;;;;;2MASX J06212758-6459340,ESO 087-009,ESO-LV 87-0090,PGC 018873;;; -NGC2231;GCl;06:20:42.97;-67:31:06.6;Dor;2.10;2.10;;13.87;13.20;12.00;11.60;11.27;;;;;;;;;;ESO 087-006;;In the Large Magellanic Cloud.; -NGC2232;OCl;06:28:01.13;-04:50:50.8;Mon;9.90;;;;3.90;;;;;;;;;;;;;MWSC 0861;;; -NGC2233;G;06:21:40.06;-65:02:00.1;Dor;0.98;0.37;43;14.86;;11.47;10.82;10.47;23.68;E;;;;;;;;2MASX J06214003-6502001,ESO 087-011,ESO-LV 87-0110,PGC 018882;;; -NGC2234;OCl;06:29:21.68;+16:43:22.3;Gem;4.20;;;;;;;;;;;;;;;;;MWSC 0878;;; -NGC2235;G;06:22:21.91;-64:56:03.9;Dor;1.41;1.15;57;14.00;;10.42;9.76;9.35;23.61;E;;;;;;;;2MASX J06222206-6456025,ESO 087-013,ESO-LV 87-0130,PGC 018906;;; -NGC2236;OCl;06:29:39.70;+06:49:50.5;Mon;5.40;;;9.08;8.50;;;;;;;;;;;;;MWSC 0881;;; -NGC2237;Neb;06:30:54.61;+05:02:57.0;Mon;80.00;50.00;;;;;;;;;;;;;;;;;Rosette A;;Dimensions taken from LEDA -NGC2238;HII;06:30:40.37;+05:00:47.0;Mon;80.00;60.00;;6.00;;;;;;;;;;;;;;C 049,LBN 948;Rosette Nebula;;B-Mag taken from LEDA -NGC2239;Cl+N;06:31:55.56;+04:56:34.6;Mon;9.30;;;5.26;4.80;;;;;;;;;;2244;;;C 050,MWSC 0896;;; -NGC2240;OCl;06:33:10.55;+35:15:00.7;Aur;3.60;;;;;;;;;;;;;;;;;MWSC 0900;;; -NGC2241;OCl;06:22:51.36;-68:55:31.4;Dor;1.60;1.60;;14.02;13.25;;;;;;;;;;;;;2MASX J06225134-6855313,2MASX J06225134-6855313 ID,ESO 057-079;;In the Large Magellanic Cloud.; -NGC2242;PN;06:34:07.24;+44:46:37.3;Aur;0.37;;;15.10;15.00;;;;;;;17.40;17.60;;;;;IRAS 06304+4448,PN G170.3+15.8;;This is a Galactic planetary nebula (1988PASP..100.1423M).; -NGC2243;OCl;06:29:34.48;-31:16:52.8;CMa;5.10;;;10.12;9.40;;;;;;;;;;;;;MWSC 0880;;; -NGC2244;Dup;06:31:55.56;+04:56:34.6;Mon;;;;;;;;;;;;;;;2239;;;;;; -NGC2245;RfN;06:32:41.25;+10:09:23.9;Mon;2.00;2.00;;11.00;;;;;;;;;;;;;;2MASX J06323890+1009067,LBN 904;;; -NGC2246;Neb;06:32:33.80;+05:07:41.8;Mon;10.00;10.00;90;;;;;;;;;;;;;;;;Rosette B;; -NGC2247;RfN;06:33:05.20;+10:19:20.1;Mon;2.00;2.00;;8.50;;;;;;;;;;;;;;BD +10 1172,HIP 031235,LBN 901;;; -NGC2248;Other;06:34:35.75;+26:18:16.0;Gem;;;;;;;;;;;;;;;;;;;;Nine Galactic stars.; -NGC2249;GCl;06:25:49.57;-68:55:11.2;Dor;2.30;2.30;;12.66;12.23;;;;;;;;;;;;;ESO 057-082;;In the Large Magellanic Cloud.; -NGC2250;OCl;06:33:49.88;-05:05:04.0;Mon;5.10;;;;8.90;;;;;;;;;;;;;MWSC 0905;;; -NGC2251;OCl;06:34:38.48;+08:21:59.0;Mon;5.70;;;7.69;7.30;;;;;;;;;;;;;MWSC 0916;;; -NGC2252;OCl;06:34:42.97;+05:21:58.5;Mon;6.60;;;;7.70;;;;;;;;;;;;;MWSC 0911;;; -NGC2253;G;06:43:41.84;+65:12:22.6;Cam;1.43;1.05;130;13.00;;10.45;9.83;9.49;22.38;Sc;;;;;;;;2MASX J06434181+6512225,IRAS 06387+6515,MCG +11-09-008,PGC 019501,UGC 03511;;Identification as NGC 2253 is very uncertain.; -NGC2254;OCl;06:35:49.66;+07:40:23.8;Mon;4.20;;;9.75;9.10;;;;;;;;;;;;;MWSC 0924;;; -NGC2255;G;06:33:58.63;-34:48:45.3;Col;1.47;0.78;159;14.16;;11.72;11.15;10.76;23.20;Sc;;;;;;;;2MASX J06335861-3448454,ESO 365-031,ESO-LV 365-0310,IRAS 06321-3446,MCG -06-15-010,PGC 019260;;; -NGC2256;G;06:47:13.97;+74:14:11.5;Cam;2.17;1.97;65;14.00;;9.67;8.90;8.67;24.38;E-S0;;;;;;;;2MASX J06471396+7414114,MCG +12-07-015,PGC 019602,TYC 4370-55-1,UGC 03519;;; -NGC2257;GCl;06:30:13.86;-64:19:32.2;Dor;4.00;4.00;;13.24;12.62;;;;;;;;;;;;;2MASX J06301388-6419324,2MASX J06301388-6419324 ID,ESO 087-024;;In the Large Magellanic Cloud.; -NGC2258;G;06:47:45.80;+74:28:54.0;Cam;3.02;1.91;150;13.20;;9.22;8.21;8.23;24.13;S0;;;;;;;;2MASX J06474618+7428546,MCG +12-07-016,PGC 019622,UGC 03523;;; -NGC2259;OCl;06:38:21.44;+10:53:01.0;Mon;6.00;;;;10.80;;;;;;;;;;;;;MWSC 0940;;; -NGC2260;OCl;06:38:03.07;-01:28:22.2;Mon;;;;;;;;;;;;;;;;;;;;; -NGC2261;RfN;06:39:09.51;+08:44:39.6;Mon;2.00;1.00;;12.46;11.85;9.69;8.03;6.38;;;;;;;;;;C 046,LBN 920;Hubble's Nebula;; -NGC2262;OCl;06:39:38.08;+01:08:37.1;Mon;3.90;;;11.30;;;;;;;;;;;;;;MWSC 0946;;; -NGC2263;G;06:38:28.84;-24:50:55.3;CMa;2.86;1.77;144;12.86;;10.18;9.41;9.14;23.58;SBab;;;;;;;;2MASX J06382884-2450551,ESO 490-019,ESO-LV 490-0190,IRAS 06364-2448,MCG -04-16-014,PGC 019355;;; -NGC2264;Cl+N;06:40:58.25;+09:53:43.7;Mon;11.40;;;;3.90;;;;;;;;;;;;;LBN 911,MWSC 0954;Christmas Tree Cluster;; -NGC2265;OCl;06:41:41.64;+11:54:16.7;Gem;4.50;;;;;;;;;;;;;;;;;MWSC 0959;;Group of Galactic stars.; -NGC2266;OCl;06:43:19.21;+26:58:10.4;Gem;4.20;;;;9.50;;;;;;;;;;;;;MWSC 0967;;; -NGC2267;G;06:40:51.70;-32:28:56.2;CMa;1.71;1.44;110;13.24;;9.97;9.24;9.04;23.16;S0;;;;;;;;2MASX J06405169-3228561,ESO 426-029,ESO-LV 426-0290,MCG -05-16-015,PGC 019417;;; -NGC2268;G;07:14:17.44;+84:22:56.2;Cam;2.14;0.93;73;12.10;;9.56;8.87;8.59;22.02;Sbc;;;;;;;;2MASX J07141744+8422561,IRAS 07006+8427,MCG +14-04-022,PGC 020458,SDSS J071417.40+842256.2,UGC 03653;;; -NGC2269;OCl;06:43:17.08;+04:37:27.5;Mon;4.80;;;10.42;10.00;;;;;;;;;;;;;MWSC 0966;;; -NGC2270;OCl;06:43:57.76;+03:28:42.6;Mon;5.40;;;;;;;;;;;;;;;;;MWSC 0971;;; -NGC2271;G;06:42:52.99;-23:28:33.6;CMa;1.77;1.29;78;13.17;;9.69;8.95;8.68;23.18;E-S0;;;;;;;;2MASX J06425299-2328333,ESO 490-034,ESO-LV 490-0340,MCG -04-16-017,PGC 019476;;; -NGC2272;G;06:42:41.30;-27:27:34.2;CMa;2.19;1.54;118;12.74;11.88;9.63;8.92;8.72;23.31;E-S0;;;;;;;;2MASX J06424130-2727341,ESO 490-033,ESO-LV 490-0330,MCG -05-16-017,PGC 019466;;; -NGC2273;G;06:50:08.66;+60:50:44.9;Lyn;2.29;1.39;63;14.50;13.54;9.45;8.77;8.48;22.93;Sa;;;;;;;;2MASX J06500866+6050445,IRAS 06456+6054,MCG +10-10-015,PGC 019688,UGC 03546;;; -NGC2273A;G;06:40:07.09;+60:04:50.4;Lyn;2.00;1.19;119;13.30;;11.69;10.36;10.40;23.25;SABc;;;;;;;;2MASX J06400704+6004503,IRAS 06356+6007,MCG +10-10-009,PGC 019397,UGC 03504;;; -NGC2273B;G;06:46:31.58;+60:20:25.4;Lyn;1.48;0.61;47;14.10;;12.36;12.11;11.78;22.24;Sc;;;;;;;;2MASX J06463158+6020252,IRAS 06421+6023,MCG +10-10-013,PGC 019579,UGC 03530;;; -NGC2274;G;06:47:17.37;+33:34:01.9;Gem;1.78;1.77;170;13.60;;9.66;8.94;8.68;23.65;E;;;;;;;;2MASX J06471737+3334021,MCG +06-15-008,PGC 019603,UGC 03541;;; -NGC2275;G;06:47:17.93;+33:35:57.2;Gem;2.51;0.78;3;14.50;;10.64;9.97;9.75;24.07;Sa;;;;;;;;2MASX J06471794+3335571,MCG +06-15-007,PGC 019605,UGC 03542;;; -NGC2276;G;07:27:14.36;+85:45:16.4;Cep;2.23;1.73;19;12.30;;10.08;9.46;9.08;22.26;SABc;;;;;;;;2MASX J07271181+8544540,2MASX J07271448+8545162,IRAS 07101+8550,MCG +14-04-028,PGC 021039,UGC 03740;;; -NGC2277;Other;06:47:47.03;+33:27:04.6;Gem;;;;;;;;;;;;;;;;;;;;Five Galactic stars.; -NGC2278;**;06:48:16.42;+33:23:39.5;Gem;;;;;;;;;;;;;;;;;;;;; -NGC2279;Other;06:48:24.85;+33:24:54.9;Gem;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC2280;G;06:44:49.11;-27:38:19.0;CMa;6.53;2.84;164;11.13;;9.15;8.50;8.26;23.17;Sc;;;;;;;;2MASX J06444911-2738189,ESO 427-002,ESO-LV 427-0020,IRAS 06428-2735,MCG -05-16-020,PGC 019531,UGCA 131;;Extended HIPASS source; -NGC2281;OCl;06:48:17.84;+41:04:43.9;Aur;10.80;;;6.05;5.40;;;;;;;;;;;;;MWSC 0989;;; -NGC2282;HII;06:46:51.57;+01:18:57.6;Mon;3.00;3.00;;10.00;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC2283;G;06:45:52.69;-18:12:37.2;CMa;2.76;2.01;178;12.94;;;;;23.62;Sc;;;;;;;;ESO 557-013,ESO-LV 557-0130,IRAS 06436-1809,MCG -03-18-002,PGC 019562;;The identification as IC 2171 is questionable.; -NGC2284;Other;06:49:09.56;+33:11:37.7;Gem;;;;;;;;;;;;;;;;;;;;Four Galactic stars. NGC identification is not certain.; -NGC2285;**;06:49:36.02;+33:21:52.8;Gem;;;;;;;;;;;;;;;;;;;;; -NGC2286;OCl;06:47:40.17;-03:08:51.6;Mon;5.40;;;8.16;7.50;;;;;;;;;;;;;MWSC 0987;;; -NGC2287;OCl;06:45:59.94;-20:45:15.2;CMa;12.00;;;4.89;4.50;;;;;;;;;041;;;;MWSC 0978;;; -NGC2288;G;06:50:51.96;+33:27:44.8;Gem;0.17;0.17;105;14.60;;12.61;12.00;11.65;20.22;;;;;;;;;2MASX J06505195+3327444,MCG +06-15-011,PGC 019714;;; -NGC2289;G;06:50:53.61;+33:28:43.2;Gem;1.21;0.81;110;14.60;;10.93;10.23;9.98;23.39;S0;;;;;;;;2MASX J06505355+3328434,MCG +06-15-010,PGC 019716,UGC 03560;;; -NGC2290;G;06:50:56.92;+33:26:15.3;Gem;0.81;0.52;57;14.60;;10.97;10.19;10.01;22.07;Sa;;;;;;;;2MASX J06505690+3326154,MCG +06-15-012,PGC 019718,UGC 03562;;; -NGC2291;G;06:50:58.64;+33:31:30.3;Gem;0.93;0.89;165;15.30;;11.31;10.63;10.22;22.84;S0;;;;;;;;2MASX J06505858+3331305,MCG +06-15-013,PGC 019719;;; -NGC2292;G;06:47:39.65;-26:44:46.5;CMa;4.34;3.78;154;11.82;;;;;23.76;S0;;;;;;;;ESO 490-048,ESO-LV 490-0480,MCG -04-16-022,PGC 019617;;; -NGC2293;G;06:47:42.91;-26:45:15.7;CMa;4.41;3.44;130;11.70;;8.50;7.83;7.51;24.17;S0-a;;;;;;;;2MASX J06474291-2645156,ESO 490-049,ESO-LV 490-0490,MCG -04-16-023,PGC 019619;;; -NGC2294;G;06:51:11.30;+33:31:37.6;Gem;0.91;0.33;5;15.00;;11.38;10.56;10.27;23.49;E;;;;;;;;2MASX J06511130+3331374,IRAS 06478+3335,MCG +06-15-014,PGC 019729;;; -NGC2295;G;06:47:23.42;-26:44:10.5;CMa;2.31;0.64;49;13.58;;9.74;8.99;8.67;23.44;Sab;;;;;;;;2MASX J06472341-2644103,ESO 490-047,ESO-LV 490-0470,MCG -04-16-021,PGC 019607;;; -NGC2296;G;06:48:39.11;-16:54:05.8;CMa;1.20;0.96;20;13.60;;;;;22.77;E;;;;;;0452;;IRAS 06464-1650,IRAS 06464-1650,MCG -03-18-003,PGC 019643;;Claimed to be a galactic object by Takata et al. (1994, A&AS, 104, 529).; -NGC2297;G;06:44:24.59;-63:43:02.4;Pic;1.48;0.90;4;13.75;;11.00;10.32;9.97;22.62;Sbc;;;;;;;;2MASX J06442460-6343021,ESO 087-040,ESO-LV 87-0400,IRAS 06440-6339,PGC 019524;;; -NGC2298;GCl;06:48:59.20;-36:00:19.1;Pup;4.80;;;10.77;8.89;;;;;;;;;;;;;ESO 366-022,MWSC 0992;;; -NGC2299;OCl;06:51:53.68;-07:04:57.8;Mon;4.80;;;9.06;8.90;;;;;;;;;;2302;;;MWSC 1001;;; -NGC2300;G;07:32:19.97;+85:42:34.2;Cep;3.05;2.34;74;12.20;;8.60;7.92;7.63;23.33;E-S0;;;;;;;;2MASX J07322048+8542319,MCG +14-04-031,PGC 021231,UGC 03798;;; -NGC2301;OCl;06:51:45.30;+00:27:33.1;Mon;10.80;;;6.30;6.00;;;;;;;;;;;;;MWSC 1000;Great Bird Cluster;; -NGC2302;Dup;06:51:53.68;-07:04:57.8;Mon;;;;;;;;;;;;;;;2299;;;;;; -NGC2303;G;06:56:17.50;+45:29:33.9;Lyn;1.53;1.36;71;13.90;;10.54;9.81;9.53;23.73;E;;;;;;;;2MASX J06561754+4529342,MCG +08-13-031,PGC 019891,UGC 03603;;; -NGC2304;OCl;06:55:11.61;+17:59:34.0;Gem;4.80;;;;10.00;;;;;;;;;;;;;MWSC 1019;;; -NGC2305;G;06:48:37.37;-64:16:23.5;Vol;1.94;1.04;137;12.82;;9.35;8.67;8.45;23.02;E;;;;;;;;2MASX J06483729-6416240,ESO 087-044,ESO-LV 87-0440,ESO-LV 870-0440,PGC 019641;;; -NGC2306;OCl;06:54:29.56;-07:12:14.9;Mon;6.60;;;;;;;;;;;;;;;;;MWSC 1014;;; -NGC2307;G;06:48:50.79;-64:20:07.9;Vol;1.85;1.72;145;13.38;;10.22;9.54;9.24;22.98;SBb;;;;;;;;2MASX J06485080-6420080,ESO 087-045,ESO-LV 87-0450,ESO-LV 870-0450,PGC 019648;;; -NGC2308;G;06:58:37.59;+45:12:38.0;Lyn;1.47;0.98;171;14.40;;10.70;9.97;9.66;23.68;Sab;;;;;;;;2MASX J06583763+4512381,MCG +08-13-037,PGC 019949,UGC 03618;;; -NGC2309;OCl;06:56:03.61;-07:10:27.5;Mon;5.40;;;;10.50;;;;;;;;;;;;;MWSC 1026;;; -NGC2310;G;06:53:53.96;-40:51:45.4;Pup;4.52;0.95;46;12.68;11.76;9.39;8.72;8.48;23.85;S0;;;;;;;;2MASX J06535395-4051453,ESO 309-007,ESO-LV 309-0070,MCG -07-15-001,PGC 019811;;; -NGC2311;OCl;06:57:47.55;-04:36:40.8;Mon;6.00;;;;9.60;;;;;;;;;;;;;MWSC 1035;;; -NGC2312;OCl;06:58:46.74;+10:17:40.1;Mon;3.00;;;;;;;;;;;;;;;;;MWSC 1043;;; -NGC2313;*;06:58:02.80;-07:56:42.1;Mon;;;;14.20;;;;;;;;;;;;;;IRAS 06556-0752;;;Variable Star of Orion Type. -NGC2314;G;07:10:32.55;+75:19:36.0;Cam;1.32;1.03;17;13.10;;9.87;9.15;8.88;22.58;E;;;;;;;;2MASX J07103256+7519358,MCG +13-06-003,PGC 020305,UGC 03677;;; -NGC2315;G;07:02:33.06;+50:35:26.1;Lyn;1.57;0.30;116;14.50;;10.77;9.99;9.67;23.78;S0-a;;;;;;;;2MASX J07023303+5035261,MCG +08-13-045,PGC 020045,UGC 03633;;; -NGC2316;Neb;06:59:40.85;-07:46:39.9;Mon;4.00;3.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC2317;Neb;06:59:41.59;-07:46:28.2;Mon;;;;;;;;;;;;;;;;;;2MASX J06594157-0746285;;; -NGC2318;OCl;06:59:27.02;-13:41:54.2;CMa;4.50;;;;;;;;;;;;;;;;;MWSC 1050;;; -NGC2319;OCl;07:00:32.21;+03:02:31.9;Mon;6.00;;;11.76;11.85;11.47;11.47;11.38;;;;;;;;;;MWSC 1064;;; -NGC2320;G;07:05:42.03;+50:34:51.8;Lyn;1.48;0.83;138;13.90;;9.91;9.18;8.85;22.61;E;;;;;;;;2MASX J07054202+5034519,MCG +08-13-051,PGC 020136,UGC 03659;;; -NGC2321;G;07:05:59.00;+50:45:21.7;Lyn;1.28;1.04;128;14.80;;11.26;10.50;10.22;23.99;Sa;;;;;;;;2MASX J07055903+5045210,MCG +08-13-053,PGC 020141,UGC 03663;;; -NGC2322;G;07:06:00.30;+50:30:37.1;Lyn;1.11;0.41;134;14.60;;10.99;10.19;9.93;23.07;SBa;;;;;;;;2MASX J07060028+5030370,MCG +08-13-054,PGC 020142,UGC 03662;;; -NGC2323;OCl;07:02:40.47;-08:21:50.5;Mon;14.10;;;6.27;5.90;;;;;;;;;050;;;;MWSC 1072;;; -NGC2324;OCl;07:04:07.96;+01:02:40.6;Mon;8.70;;;8.83;8.40;;;;;;;;;;;;;MWSC 1084;;; -NGC2325;G;07:02:40.40;-28:41:50.0;CMa;3.97;2.31;4;12.17;;8.79;8.13;7.89;24.13;E;;;;;;;;2MASX J07024038-2841501,ESO 427-028,ESO-LV 427-0280,MCG -05-17-005,PGC 020047;;; -NGC2326;G;07:08:11.02;+50:40:55.0;Lyn;2.05;1.69;105;14.30;;10.37;9.55;9.24;24.08;Sb;;;;;;;;2MASX J07081104+5040550,MCG +08-13-062,PGC 020218,UGC 03681;;; -NGC2326A;G;07:08:34.21;+50:37:53.0;Lyn;0.81;0.64;6;14.63;;13.58;12.97;12.85;23.53;Sm;;;;;;;;2MASX J07083419+5037531,MCG +08-13-067,PGC 020237,UGC 03687;;; -NGC2327;RfN;07:04:07.22;-11:18:50.8;CMa;1.00;1.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC2328;G;07:02:36.20;-42:04:06.8;Pup;1.59;1.44;120;13.04;;10.79;10.15;9.93;22.94;E-S0;;;;;;;;2MASX J07023619-4204068,ESO 309-016,ESO-LV 309-0160,IRAS 07010-4159,MCG -07-15-002,PGC 020046;;; -NGC2329;G;07:09:08.01;+48:36:55.5;Lyn;1.41;1.17;175;13.70;13.99;10.41;9.64;9.40;23.04;E-S0;;;;;;;;2MASX J07090797+4836561,MCG +08-13-073,PGC 020254,UGC 03695;;; -NGC2330;G;07:09:28.40;+50:09:09.1;Lyn;0.65;0.52;55;14.13;13.05;12.43;11.71;11.44;23.67;E;;;;;;0457;;2MASX J07092835+5009089,MCG +08-13-078,PGC 020272,UGC 03699 NOTES01;;"Identification as NGC 2330 is uncertain; N2330 may be a star."; -NGC2331;OCl;07:06:59.83;+27:15:41.7;Gem;4.80;;;;8.50;;;;;;;;;;;;;MWSC 1103;;; -NGC2332;G;07:09:34.16;+50:10:56.2;Lyn;1.72;1.17;65;14.00;;10.38;9.75;9.39;23.80;S0;;;;;;;;2MASX J07093417+5010559,MCG +08-13-079,PGC 020276,UGC 03699;;; -NGC2333;G;07:08:21.34;+35:10:12.1;Gem;1.00;0.70;38;14.10;;10.94;10.23;9.98;22.61;Sa;;;;;;;;2MASX J07082133+3510123,IRAS 07050+3515,MCG +06-16-020,PGC 020223,UGC 03689;;; -NGC2334;G;07:11:33.65;+50:14:53.7;Lyn;1.20;0.87;70;14.60;;11.01;10.21;10.03;23.69;S0;;;;;;0465;;2MASX J07113366+5014543,MCG +08-13-098,PGC 020357;;"Identification as NGC 2334 is uncertain; N2334 may be a star."; -NGC2335;OCl;07:06:49.45;-10:01:43.1;Mon;8.70;;;7.76;7.20;;;;;;;;;;;;;MWSC 1100;;; -NGC2336;G;07:27:04.05;+80:10:41.1;Cam;5.01;2.81;175;13.46;12.51;8.59;7.92;7.70;22.98;Sbc;;;;;;;;2MASX J07270405+8010410,IRAS 07184+8016,MCG +13-06-006,PGC 021033,UGC 03809;;; -NGC2337;G;07:10:13.58;+44:27:26.3;Lyn;2.18;1.61;114;13.10;;11.12;10.46;10.34;23.33;IB;;;;;;;;2MASX J07101357+4427264,IRAS 07066+4432,MCG +07-15-010,PGC 020298,UGC 03711;;; -NGC2338;OCl;07:07:47.37;-05:43:11.0;Mon;3.30;;;;;;;;;;;;;;;;;MWSC 1114;;; -NGC2339;G;07:08:20.54;+18:46:48.9;Gem;2.42;1.53;180;12.30;;9.52;8.80;8.51;22.77;Sbc;;;;;;;;2MASX J07082054+1846490,IRAS 07054+1851,MCG +03-19-002,PGC 020222,UGC 03693;;; -NGC2340;G;07:11:10.83;+50:10:29.1;Lyn;3.16;1.64;71;13.90;;9.95;9.26;8.88;24.06;E;;;;;;;;2MASX J07111080+5010288,MCG +08-13-096,PGC 020338,UGC 03720;;; -NGC2341;G;07:09:12.04;+20:36:10.5;Gem;0.82;0.79;60;13.65;12.88;11.24;10.52;10.17;22.17;Sc;;;;;;;;2MASX J07091189+2036102,IRAS 07062+2041,MCG +03-19-003,PGC 020259,UGC 03708;;; -NGC2342;G;07:09:18.08;+20:38:09.5;Gem;1.17;0.84;66;12.92;12.15;10.62;9.90;9.54;22.16;Sc;;;;;;;;2MASX J07091808+2038092,IRAS 07063+2043,MCG +03-19-004,PGC 020265,UGC 03709;;; -NGC2343;OCl;07:08:06.80;-10:37:00.5;Mon;7.50;;;7.05;6.70;;;;;;;;;;;;;MWSC 1119;;; -NGC2344;G;07:12:28.66;+47:10:00.1;Lyn;2.07;1.87;145;12.99;12.14;10.20;9.51;9.27;23.12;SABb;;;;;;;;2MASX J07122870+4710004,MCG +08-13-103,PGC 020395,UGC 03734;;; -NGC2345;OCl;07:08:18.79;-13:11:37.5;CMa;6.90;;;8.58;7.70;;;;;;;;;;;;;MWSC 1120;;; -NGC2346;PN;07:09:23.01;-00:48:32.9;Mon;0.87;;;11.80;11.60;10.26;9.44;8.41;;;;11.78;11.47;;;;HIP 34541,HD 293373,TYC 4815-03818-1,UCAC2 31477215;2MASX J07092302-0048334,IRAS 07068-0043,PN G215.6+03.6;;; -NGC2347;G;07:16:03.69;+64:42:32.1;Cam;1.64;1.19;5;13.20;;10.44;9.72;9.41;22.90;Sb;;;;;;;;2MASX J07160361+6442315,2MASX J07160408+6442415,IRAS 07112+6447,MCG +11-09-039,PGC 020539,SDSS J071604.08+644240.7,UGC 03759;;; -NGC2348;OCl;07:03:02.52;-67:23:38.2;Vol;5.70;;;;;;;;;;;;;;;;;ESO 088-001,MWSC 1075;;; -NGC2349;OCl;07:10:48.15;-08:35:35.7;Mon;5.10;;;;;;;;;;;;;;;;;MWSC 1138;;; -NGC2350;G;07:13:12.19;+12:15:57.9;CMi;1.38;0.70;110;14.10;;10.33;9.59;9.26;23.29;S0-a;;;;;;;;2MASX J07131218+1215577,IRAS 07104+1221,MCG +02-19-001,PGC 020416,UGC 03747;;; -NGC2351;OCl;07:13:32.03;-10:29:29.1;Mon;3.00;;;;;;;;;;;;;;;;;MWSC 1146;;NGC declination is 1 degree too far south if this is NGC 2351.; -NGC2352;OCl;07:13:05.44;-24:02:45.9;CMa;4.80;;;;;;;;;;;;;;;;;MWSC 1143;;; -NGC2353;OCl;07:14:30.31;-10:15:57.1;Mon;6.60;;;7.30;7.10;;;;;;;;;;;;;MWSC 1152;;; -NGC2354;OCl;07:14:05.27;-25:41:20.1;CMa;4.80;;;7.28;6.50;;;;;;;;;;;;;MWSC 1148;;; -NGC2355;OCl;07:16:59.26;+13:44:59.5;Gem;6.00;;;;9.70;;;;;;;;;;2356;;;MWSC 1160;;; -NGC2356;Dup;07:16:59.26;+13:44:59.5;Gem;;;;;;;;;;;;;;;2355;;;;;; -NGC2357;G;07:17:40.99;+23:21:24.3;Gem;3.22;0.48;120;14.60;;10.76;9.98;9.63;24.15;Sc;;;;;;;;2MASX J07174098+2321242,IRAS 07146+2326,MCG +04-17-014,PGC 020592,UGC 03782;;; -NGC2358;OCl;07:16:56.33;-17:07:01.5;CMa;9.60;;;;;;;;;;;;;;;;;MWSC 1159;;; -NGC2359;HII;07:18:30.98;-13:13:37.9;CMa;10.00;5.00;;;;;;;;;;;;;;;;LBN 1041;;Identified as an HII region in PKSCAT90 (version 1.01).; -NGC2360;OCl;07:17:43.12;-15:38:28.7;CMa;9.00;;;7.62;7.20;;;;;;;;;;;;;C 058,MWSC 1165;Caroline's Cluster;; -NGC2361;Neb;07:18:23.80;-13:12:34.4;CMa;;;;;;;;;;;;;;;;;;;;; -NGC2362;OCl;07:18:41.47;-24:57:15.1;CMa;7.20;;;;4.10;;;;;;;;;;;;;C 064,MWSC 1173,Tau CMa;;; -NGC2363;G;07:28:29.59;+69:11:34.3;Cam;1.13;0.64;17;15.50;;;;;24.18;I;;;;;;;;MCG +12-07-039,PGC 021078,UGC 03847;;This may be a part of NGC 2366.; -NGC2364;OCl;07:20:46.47;-07:32:59.0;Mon;;;;;;;;;;;;;;;;;;;;; -NGC2365;G;07:22:22.55;+22:04:59.8;Gem;2.75;1.47;170;13.80;;9.95;9.26;9.01;24.15;Sa;;;;;;;;2MASX J07222254+2204597,MCG +04-18-008,PGC 020838,UGC 03821;;; -NGC2366;G;07:28:54.66;+69:12:56.8;Cam;4.37;1.44;31;11.86;11.39;11.29;12.15;10.62;22.52;IB;;;;;;;;IRAS 07233+6917,MCG +12-07-040,PGC 021102,UGC 03851;;Contains the HII region MRK 0071. May also contain UGC 03847.; -NGC2367;OCl;07:20:04.54;-21:53:02.7;CMa;5.40;;;7.98;7.90;;;;;;;;;;;;;MWSC 1178;;; -NGC2368;OCl;07:21:06.30;-10:22:18.4;Mon;4.50;;;;11.80;;;;;;;;;;;;;MWSC 1186;;; -NGC2369;G;07:16:37.73;-62:20:37.4;Car;3.03;0.68;175;13.23;;9.64;8.88;8.48;23.68;Sa;;;;;;;;2MASX J07163775-6220375,ESO 122-018,ESO-LV 122-0180,IRAS 07160-6215,PGC 020556;;; -NGC2369A;G;07:18:43.54;-62:56:10.6;Car;2.01;1.21;37;13.68;;10.69;9.98;9.51;23.48;SABb;;;;;;;;2MASX J07184355-6256104,ESO 088-008,ESO-LV 88-0080,IRAS 07182-6250,PGC 020640;;; -NGC2369B;G;07:20:29.63;-62:03:14.3;Car;1.48;1.24;3;14.18;;11.12;10.53;10.22;24.56;SBbc;;;;;;;;2MASX J07202960-6203141,ESO 123-005,ESO-LV 123-0050,IRAS 07199-6157,PGC 020717;;; -NGC2370;G;07:25:01.66;+23:46:59.6;Gem;1.20;0.70;44;14.30;;11.02;10.30;9.95;22.99;SABb;;;;;;;;2MASX J07250166+2346597,IRAS 07220+2352,MCG +04-18-015,PGC 020955,UGC 03835;;; -NGC2371;PN;07:25:34.66;+29:29:26.3;Gem;0.73;;;13.00;11.20;15.21;15.50;15.49;;;13.28;14.48;14.85;;2372;;UCAC2 42051185;IRAS 07224+2935,PN G189.1+19.8;;Identified as a planetary neb. by Strauss, et al (1992, ApJS, 83, 29).; -NGC2372;Dup;07:25:34.66;+29:29:26.3;Gem;;;;;;;;;;;;;;;2371;;;;;; -NGC2373;G;07:26:36.95;+33:49:25.3;Gem;0.59;0.42;176;14.50;;12.33;11.65;11.39;21.89;Sb;;;;;;;;2MASX J07263697+3349257,IRAS 07233+3355,MCG +06-17-004,PGC 021016,UGC 03848;;; -NGC2374;OCl;07:23:56.07;-13:15:48.1;CMa;9.00;;;8.46;8.00;;;;;;;;;;;;;MWSC 1206;;; -NGC2375;G;07:27:09.48;+33:49:54.5;Gem;1.00;0.80;65;14.70;;11.86;11.22;10.81;23.45;Sb;;;;;;;;2MASX J07270951+3349544,IRAS 07238+3356,MCG +06-17-005,PGC 021035,UGC 03854;;; -NGC2376;G;07:26:35.91;+23:04:22.6;Gem;0.65;0.57;31;14.70;;12.41;11.96;11.54;22.54;Scd;;;;;;;;2MASX J07263591+2304225,IRAS 07235+2310,MCG +04-18-017,PGC 021015;;; -NGC2377;G;07:24:56.82;-09:39:33.5;Mon;1.60;1.11;3;15.80;14.77;10.13;9.37;9.01;22.96;Sc;;;;;;;;2MASX J07245681-0939336,IRAS 07225-0933,PGC 020948,UGCA 132;;Not the radio source 3C 178.; -NGC2378;**;07:27:24.20;+33:49:53.7;Gem;;;;;;;;;;;;;;;;;;;;; -NGC2379;G;07:27:26.26;+33:48:40.5;Gem;0.98;0.70;121;14.90;;11.54;10.82;10.59;23.30;S0;;;;;;;;2MASX J07272628+3348405,MCG +06-17-006,PGC 021036,SDSS J072726.25+334840.8,UGC 03857;;Not the same as NGC 2378 which is a double star.; -NGC2380;G;07:23:54.75;-27:31:44.6;CMa;2.52;2.40;150;12.52;;8.47;7.78;7.45;23.06;S0;;;;;2382;;;2MASX J07235474-2731446,ESO 492-012,ESO-LV 492-0120,MCG -05-18-005,PGC 020916;;; -NGC2381;G;07:19:57.31;-63:04:01.3;Car;1.53;1.24;107;13.44;;10.94;10.35;9.74;23.08;SBa;;;;;;;;2MASX J07195733-6303312,2MASX J07195733-6304012,ESO 088-010,ESO-LV 88-0100,PGC 020694;;; -NGC2382;Dup;07:23:54.75;-27:31:44.6;CMa;;;;;;;;;;;;;;;2380;;;;;; -NGC2383;OCl;07:24:39.90;-20:56:51.5;CMa;4.20;;;8.88;8.40;;;;;;;;;;;;;MWSC 1213;;; -NGC2384;OCl;07:25:09.83;-21:01:11.5;CMa;4.80;;;7.47;7.40;;;;;;;;;;;;;MWSC 1216;;; -NGC2385;G;07:28:28.07;+33:50:16.1;Gem;0.94;0.68;53;15.20;;11.54;10.72;10.41;23.41;Sab;;;;;;;;2MASX J07282802+3350159,MCG +06-17-008,PGC 021080;;; -NGC2386;Other;07:28:37.92;+33:46:25.7;Gem;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -NGC2387;G;07:28:57.93;+36:52:47.3;Aur;0.48;0.44;145;15.30;16.50;13.35;12.67;12.40;22.79;Sbc;;;;;;;;PGC 021105;;; -NGC2388;G;07:28:53.44;+33:49:08.7;Gem;0.87;0.56;66;14.70;;10.75;9.96;9.59;22.77;Sb;;;;;2388W;;;2MASX J07285341+3349084,IRAS 07256+3355,MCG +06-17-010,PGC 021099,UGC 03870;;; -NGC2389;G;07:29:04.65;+33:51:39.5;Gem;1.56;0.89;79;13.50;;11.11;10.35;10.35;22.63;SABc;;;;;2388E;;;2MASX J07290464+3351395,MCG +06-17-011,PGC 021109,UGC 03872;;; -NGC2390;*;07:29:04.27;+33:50:12.5;Gem;;;;;;;;;;;;;;;;;;;;; -NGC2391;*;07:29:07.49;+33:49:33.4;Gem;;;;;;;;;;;;;;;;;;;;; -NGC2392;PN;07:29:10.76;+20:54:42.6;Gem;0.33;;;10.12;9.61;10.87;10.92;10.94;;;9.30;10.38;10.53;;;;BD +21 1609,HD 59088,HIP 36369,TYC 1372-01287-1;C 039,IRAS 07262+2100,PN G197.8+17.3;Eskimo Nebula;; -NGC2393;G;07:30:04.63;+34:01:40.0;Gem;1.07;0.67;103;14.90;;11.94;11.32;10.97;23.30;Sc;;;;;;;;2MASX J07300461+3401399,IRAS 07267+3407,MCG +06-17-014,PGC 021154,UGC 03884;;; -NGC2394;OCl;07:28:36.51;+07:05:11.6;CMi;;;;;;;;;;;;;;;;;;;;; -NGC2395;OCl;07:27:12.85;+13:36:29.5;Gem;4.62;;;8.81;8.00;;;;;;;;;;;;;MWSC 1228;;; -NGC2396;OCl;07:28:02.92;-11:43:10.8;Pup;6.60;;;;7.40;;;;;;;;;;;;;MWSC 1232;;; -NGC2397;G;07:21:19.98;-69:00:05.3;Vol;2.51;0.76;116;12.85;;9.42;8.79;8.43;22.62;SBb;;;;;;;;2MASX J07211999-6900054,ESO 058-030,ESO-LV 58-0300,IRAS 07214-6854,PGC 020766;;; -NGC2397A;G;07:21:07.91;-69:06:55.2;Vol;1.10;0.84;169;14.84;;12.66;11.87;11.25;23.51;SBc;;;;;;;;2MASX J07210790-6906553,ESO 058-029,ESO-LV 58-0290,IRAS 07212-6901,PGC 020754;;; -NGC2397B;G;07:21:55.57;-68:50:44.9;Vol;1.20;0.57;99;14.98;;;;;23.45;IB;;;;;;;;ESO 058-031,ESO-LV 58-0310,PGC 020813;;; -NGC2398;G;07:30:16.16;+24:29:16.4;Gem;1.20;0.74;126;15.30;;11.00;10.36;10.06;24.21;E;;;;;;;;2MASX J07301614+2429160,PGC 021165;;; -NGC2399;Other;07:29:50.17;-00:12:51.7;CMi;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC2400;Other;07:29:54.86;-00:12:53.0;CMi;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC2401;OCl;07:29:24.40;-13:57:58.4;Pup;2.70;;;;12.60;;;;;;;;;;;;;MWSC 1241;;; -NGC2402;GPair;07:30:47.20;+09:39:02.0;CMi;1.50;;;;;;;;;;;;;;;;;MCG +02-19-004,UGC 03891;;;Diameter of the group inferred by the author. -NGC2402 NED01;G;07:30:46.58;+09:38:48.8;CMi;1.23;0.72;55;15.40;;10.88;10.21;10.03;24.09;Sa;;;;;;;;2MASX J07304659+0938489,MCG +02-19-004 NED01,PGC 021176,UGC 03891 NED01;;; -NGC2402 NED02;G;07:30:47.80;+09:39:13.0;CMi;0.91;0.68;16;15.11;;;;;23.94;;;;;;2402NE;;;MCG +02-19-004 NED02,PGC 200236,UGC 03891 NED02;;;B-Mag taken from LEDA -NGC2403;G;07:36:51.40;+65:36:09.2;Cam;19.95;10.07;126;8.84;8.38;6.98;6.42;6.19;23.48;SABc;;;;;;;;2MASX J07365139+6536091,C 007,IRAS 07321+6543,MCG +11-10-007,PGC 021396,UGC 03918;;; -NGC2404;HII;07:37:06.73;+65:36:38.9;Cam;;;;;;;;;;;;;;;;;;;;HII region in NGC 2403. Associated with the RadioS NGC 2403:[TH94] 07?; -NGC2405;G;07:32:13.98;+25:54:23.0;Gem;0.94;0.55;100;14.70;;12.23;11.47;11.37;23.46;;;;;;;;;MCG +04-18-026,PGC 021224;;; -NGC2406;G;07:31:47.74;+18:17:16.5;Gem;0.69;0.61;53;15.00;;11.50;10.85;10.50;23.39;E;;;;;;;;2MASX J07314774+1817161,MCG +03-19-021,PGC 021218;;; -NGC2407;G;07:31:56.67;+18:19:59.1;Gem;1.37;0.95;66;14.90;;11.10;10.38;10.13;24.38;E-S0;;;;;;;;2MASX J07315666+1819591,MCG +03-20-001,PGC 021220,UGC 03896;;; -NGC2408;OCl;07:40:31.92;+71:40:05.5;Cam;;;;;;;;;;;;;;;;;;;;; -NGC2409;OCl;07:31:36.72;-17:11:25.5;Pup;0.11;;;7.48;7.30;;;;;;;;;;;;;MWSC 1254;;; -NGC2410;G;07:35:02.26;+32:49:19.6;Gem;2.17;0.65;33;17.01;16.26;10.65;9.97;9.61;23.37;Sb;;;;;;;;2MASX J07350225+3249197,IRAS 07318+3255,MCG +05-18-023,PGC 021336,SDSS J073502.26+324919.5,SDSS J073502.26+324919.6,SDSS J073502.27+324919.6,UGC 03917;;; -NGC2411;G;07:34:36.33;+18:16:53.6;Gem;1.00;0.65;48;14.60;;10.80;10.06;9.79;23.20;S0-a;;;;;;;;2MASX J07343635+1816534,MCG +03-20-005,PGC 021315,SDSS J073436.32+181653.5,UGC 03914;;; -NGC2412;*;07:34:21.48;+08:32:52.0;CMi;;;;;;;;;;;;;;;;;;;;; -NGC2413;OCl;07:33:16.50;-13:05:44.0;Pup;4.80;;;;;;;;;;;;;;;;;MWSC 1262;;; -NGC2414;OCl;07:33:12.80;-15:27:13.9;Pup;5.40;;;8.33;7.90;;;;;;;;;;;;;MWSC 1263;;; -NGC2415;G;07:36:56.69;+35:14:31.1;Gem;0.83;0.83;5;12.50;;10.70;10.08;9.78;20.89;Sm;;;;;;;;2MASX J07365672+3514310,IRAS 07336+3521,MCG +06-17-021,PGC 021399,SDSS J073656.63+351431.9,UGC 03930;;; -NGC2416;G;07:35:41.52;+11:36:43.3;CMi;0.87;0.18;95;14.30;;12.12;11.51;11.23;21.93;Sc;;;;;;;;2MASX J07354152+1136433,IRAS 07329+1143,MCG +02-20-002,PGC 021358,UGC 03925;;; -NGC2417;G;07:30:12.09;-62:15:09.5;Car;2.48;1.78;83;13.09;;9.93;9.37;8.97;23.47;SBbc;;;;;;;;2MASX J07301209-6215095,ESO 123-015,ESO-LV 123-0150,IRAS 07295-6208,PGC 021155;;; -NGC2418;G;07:36:37.51;+17:53:02.1;Gem;1.59;1.53;65;13.70;;9.90;9.19;8.95;23.54;E;;;;;;;;2MASX J07363752+1753023,MCG +03-20-008,PGC 021382,UGC 03931;;; -NGC2419;GCl;07:38:07.95;+38:52:47.9;Lyn;4.50;;;;10.05;;;;;;;;;;;;;2MASX J07380795+3852479,C 025,MWSC 1290;;; -NGC2420;OCl;07:38:23.90;+21:34:26.7;Gem;7.50;;;9.00;8.30;;;;;;;;;;;;;MWSC 1292;;; -NGC2421;OCl;07:36:11.81;-20:36:44.1;Pup;5.10;;;8.69;8.30;;;;;;;;;;;;;MWSC 1277;;; -NGC2422;OCl;07:36:35.02;-14:28:57.4;Pup;19.80;;;4.42;4.40;;;;;;;;;047;2478;;;MWSC 1278;;; -NGC2423;OCl;07:37:06.73;-13:52:17.4;Pup;11.70;;;7.15;6.70;;;;;;;;;;;;;MWSC 1283;;; -NGC2424;G;07:40:39.29;+39:13:59.9;Lyn;3.37;0.52;82;13.90;;10.38;9.62;9.32;23.77;Sb;;;;;;;;2MASX J07403931+3914003,IRAS 07372+3920,MCG +07-16-009,PGC 021558,SDSS J074039.28+391359.8,SDSS J074039.28+391359.9,SDSS J074039.29+391359.9,UGC 03959;;; -NGC2425;OCl;07:38:17.63;-14:52:40.2;Pup;5.40;;;;;;;;;;;;;;;;;MWSC 1291;;; -NGC2426;G;07:43:18.46;+52:19:06.6;Lyn;1.10;1.10;30;14.40;;10.53;9.86;9.56;23.46;E;;;;;;;;2MASX J07431844+5219064,MCG +09-13-038,PGC 021648,UGC 03977;;; -NGC2427;G;07:36:28.18;-47:38:08.0;Pup;5.74;2.46;122;11.99;11.58;9.21;8.57;8.29;24.09;SABd;;;;;;;;2MASX J07362817-4738079,ESO 208-027,ESO-LV 208-0270,IRAS 07350-4731,PGC 021375;;; -NGC2428;OCl;07:39:21.77;-16:31:44.5;Pup;4.50;;;;;;;;;;;;;;;;;MWSC 1297;;; -NGC2429A;G;07:43:47.58;+52:21:26.7;Lyn;1.68;0.31;147;14.70;;11.20;10.46;10.21;24.23;S0-a;;;;;;;;2MASX J07434757+5221265,MCG +09-13-039,PGC 021664,UGC 03983;;; -NGC2429B;G;07:43:51.83;+52:20:54.5;Lyn;0.41;0.22;55;15.00;;13.19;12.83;12.40;;Sbc;;;;;;;;2MASX J07435182+5220545,MCG +09-13-040,PGC 021663,UGC 03983 NOTES01;;; -NGC2430;OCl;07:39:41.05;-16:17:45.8;Pup;4.20;;;;;;;;;;;;;;;;;MWSC 1298;;NGC identification is not certain.; -NGC2431;G;07:45:13.39;+53:04:30.4;Lyn;0.86;0.78;115;14.30;;11.24;10.56;10.24;22.86;SBa;;;;;2436;;;2MASX J07451348+5304310,MCG +09-13-042,PGC 021711,UGC 03999;;; -NGC2432;OCl;07:40:53.87;-19:04:08.7;Pup;5.40;;;;10.20;;;;;;;;;;;;;MWSC 1310;;; -NGC2433;Other;07:42:43.63;+09:15:33.3;CMi;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC2434;G;07:34:51.16;-69:17:02.9;Vol;2.69;2.20;140;12.50;11.26;8.87;8.14;7.89;23.35;E;;;;;;;;2MASX J07345116-6917029,ESO 059-005,ESO-LV 59-0050,PGC 021325;;; -NGC2435;G;07:44:13.58;+31:39:04.0;Gem;2.17;0.42;36;13.50;;10.20;9.52;9.26;23.39;SABa;;;;;;;;2MASX J07441362+3139045,MCG +05-19-002,PGC 021676,SDSS J074413.58+313904.0,UGC 03996;;; -NGC2436;Dup;07:45:13.39;+53:04:30.4;Lyn;;;;;;;;;;;;;;;2431;;;;;; -NGC2437;OCl;07:41:46.82;-14:48:36.0;Pup;21.00;;;6.33;6.10;;;;;;;;;046;;;;MWSC 1313;;; -NGC2438;PN;07:41:50.39;-14:44:08.8;Pup;1.07;;;10.10;10.80;17.02;;;;;;17.70;;;;;HD 62099,BD -14 2129;IRAS 07395-1437,PN G231.8+04.1;;; -NGC2439;OCl;07:40:45.41;-31:41:32.7;Pup;8.70;;;7.31;6.90;;;;;;;;;;;;;MWSC 1306;;; -NGC2440;PN;07:41:55.36;-18:12:30.5;Pup;0.27;;;10.80;9.40;;;;;;;;17.65;;;;BD -17 2105,HD 62166;ESO 560-009,IRAS 07396-1805,PN G234.8+02.4;;; -NGC2441;G;07:51:54.74;+73:00:56.5;Cam;1.98;1.81;155;12.70;;10.86;10.20;9.95;23.16;SABb;;;;;;;;2MASX J07515477+7300564,IRAS 07460+7308,MCG +12-08-015,PGC 022031,UGC 04036;;; -NGC2442;G;07:36:23.84;-69:31:51.0;Vol;4.68;3.09;23;11.15;10.42;7.88;7.21;6.87;23.21;Sbc;;;;;2443;;;2MASX J07362384-6931509,ESO 059-008,ESO-LV 59-0080,IRAS 07365-6924,PGC 021373;;Confused HIPASS source; -NGC2443;Dup;07:36:23.84;-69:31:51.0;Vol;;;;;;;;;;;;;;;2442;;;;;; -NGC2444;G;07:46:53.04;+39:01:54.7;Lyn;1.07;0.66;35;13.10;;11.07;10.39;10.14;23.09;S0;;;;;;;;2MASX J07465304+3901549,MCG +07-16-016,PGC 021774,UGC 04016;;; -NGC2445;G;07:46:55.10;+39:00:54.6;Lyn;1.86;1.12;167;13.10;;11.20;10.44;10.26;23.49;Sm;;;;;;;;2MASX J07465510+3900549,IRAS 07435+3908,MCG +07-16-017,PGC 021776,UGC 04017;;; -NGC2446;G;07:48:39.24;+54:36:42.9;Lyn;1.75;0.91;128;13.90;;10.64;9.95;9.60;23.29;Sb;;;;;;;;2MASX J07483926+5436430,IRAS 07446+5444,MCG +09-13-058,PGC 021860,UGC 04027;;; -NGC2447;OCl;07:44:29.23;-23:51:11.1;Pup;15.00;;;6.57;6.20;;;;;;;;;093;;;;MWSC 1324;;; -NGC2448;OCl;07:44:33.19;-24:40:23.4;Pup;6.00;;;;;;;;;;;;;;;;;MWSC 1323;;; -NGC2449;G;07:47:20.28;+26:55:48.6;Gem;1.44;0.57;135;14.30;;10.70;10.04;9.78;23.05;SBab;;;;;;;;2MASX J07472032+2655487,MCG +05-19-007,PGC 021802,SDSS J074720.28+265548.6,SDSS J074720.29+265548.7,UGC 04026;;; -NGC2450;G;07:47:32.28;+27:01:08.9;Gem;0.97;0.30;156;15.30;;11.84;11.05;10.72;23.07;Sb;;;;;;;;2MASX J07473227+2701085,MCG +05-19-008,PGC 021807,SDSS J074732.27+270108.7,SDSS J074732.28+270108.8,SDSS J074732.29+270108.8;;; -NGC2451;OCl;07:45:15.01;-37:58:02.8;Pup;37.50;;;10.04;9.50;;;;;;;;;;;;;MWSC 1322;;; -NGC2452;PN;07:47:26.37;-27:20:02.4;Pup;0.32;;;12.60;12.00;15.34;15.00;14.29;;;;17.71;;;;;;2MASX J07472637-2720023,ESO 493-011,IRAS 07453-2712,PN G243.3-01.0;;; -NGC2453;OCl;07:47:34.13;-27:11:41.3;Pup;3.00;;;8.39;8.30;;;;;;;;;;;;;MWSC 1340;;; -NGC2454;G;07:50:35.02;+16:22:06.9;Gem;1.18;0.51;101;14.70;;11.05;10.30;10.03;23.49;S0-a;;;;;;;;2MASX J07503502+1622069,MCG +03-20-015,PGC 021963,SDSS J075035.02+162206.8,SDSS J075035.02+162206.9,UGC 04053;;; -NGC2455;OCl;07:48:58.60;-21:17:52.6;Pup;4.50;;;;10.20;;;;;;;;;;;;;MWSC 1350;;; -NGC2456;G;07:54:10.66;+55:29:43.1;Lyn;1.15;0.79;30;14.30;;10.81;10.08;9.83;23.41;E;;;;;;;;2MASX J07541065+5529431,MCG +09-13-082,PGC 022129,UGC 04073;;; -NGC2457;G;07:54:45.73;+55:32:47.6;Lyn;0.50;0.26;131;16.00;;12.32;11.61;11.13;23.05;;;;;;;;;2MASX J07544572+5532481,MCG +09-13-086,PGC 022161;;; -NGC2458;G;07:55:35.10;+56:44:08.0;Lyn;0.38;0.22;80;;;;;;;;;;;;;;;;;;Diameters and position angle taken from Simbad. -NGC2459;OCl;07:52:01.77;+09:33:26.7;CMi;2.70;;;;;;;;;;;;;;;;;MWSC 1361;;; -NGC2460;G;07:56:52.29;+60:20:57.8;Cam;1.83;1.37;43;12.50;;9.48;8.83;8.54;22.50;Sab;;;;;;;;2MASX J07565226+6020577,IRAS 07525+6028,MCG +10-12-021,PGC 022270,UGC 04097;;; -NGC2461;*;07:56:26.26;+56:40:23.9;Lyn;;;;;;;;;;;;;;;;;;;;; -NGC2462;G;07:56:32.06;+56:41:13.6;Lyn;0.60;0.35;155;15.50;;11.87;11.19;10.90;22.52;S0-a;;;;;;;;2MASX J07563202+5641133,MCG +10-12-024,PGC 022259;;CGCG incorrectly calls this NGC 2461 which is a star 1.2' to the SW.; -NGC2463;G;07:57:12.48;+56:40:35.5;Lyn;0.60;0.60;145;14.80;;11.54;10.77;10.58;22.56;E;;;;;;;;2MASX J07571247+5640352,IRAS 07530+5648,MCG +10-12-031,PGC 022291;;; -NGC2464;Other;07:57:32.69;+56:41:26.0;Lyn;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -NGC2465;*;07:57:26.10;+56:49:20.9;Lyn;;;;;;;;;;;;;;;;;;;;; -NGC2466;G;07:45:16.05;-71:24:37.5;Vol;1.51;1.46;45;13.42;;10.97;10.20;10.10;23.32;Sc;;;;;;;;2MASX J07451596-7124376,ESO 059-018,ESO-LV 59-0180,IRAS 07456-7117,PGC 021714;;; -NGC2467;Cl+N;07:52:23.43;-26:26:36.0;Pup;4.20;;;;;;;;;;;;;;;;;LBN 1065,MWSC 1367;;; -NGC2468;G;07:58:02.46;+56:21:34.5;Lyn;1.51;0.52;50;14.90;;10.94;10.20;9.84;24.33;S0;;;;;;;;2MASX J07580247+5621346,MCG +09-13-095,PGC 022325,UGC 04110 NED02;;; -NGC2469;G;07:58:03.42;+56:40:49.7;Lyn;0.90;0.64;163;13.20;;11.49;10.83;10.57;21.39;Sbc;;;;;;;;2MASX J07580344+5640496,IRAS 07540+5648,MCG +10-12-035,PGC 022327,UGC 04111;;; -NGC2470;G;07:54:20.77;+04:27:34.9;CMi;1.95;0.60;127;14.20;;10.25;9.50;9.25;23.14;Sab;;;;;;;;2MASX J07542077+0427347,IRAS 07517+0435,MCG +01-20-009,PGC 022137,UGC 04091;;; -NGC2471;**;07:58:32.96;+56:46:34.2;Lyn;;;;;;;;;;;;;;;;;;;;; -NGC2472;G;07:58:41.90;+56:42:04.7;Lyn;0.65;0.56;14;15.40;;13.59;13.24;12.90;23.35;Sab;;;;;;;;2MASX J07584193+5642045,MCG +10-12-039,PGC 022364;;; -NGC2473;G;07:55:34.83;+56:44:08.9;Lyn;0.52;0.38;80;;;;;;;;;;;;;;;2MASX J07553481+5644091,PGC 022191;;;Diameters and position angle taken from Simbad. -NGC2474;G;07:57:58.95;+52:51:26.2;Lyn;1.14;1.02;130;13.90;;;;;23.25;E;;;;;;;;MCG +09-13-096,PGC 022321,SDSS J075758.95+525126.1,UGC 04114 NED01;;; -NGC2475;G;07:58:00.44;+52:51:42.1;Lyn;1.07;0.96;68;15.00;;10.41;9.76;9.36;23.08;E;;;;;;;;2MASX J07580041+5251425,MCG +09-13-097,PGC 022322,SDSS J075800.44+525142.1,UGC 04114 NED02;;; -NGC2476;G;07:56:45.18;+39:55:40.4;Lyn;1.26;0.68;143;13.40;;10.47;9.76;9.52;22.89;E;;;;;;;;2MASX J07564517+3955398,MCG +07-17-003,PGC 022260,SDSS J075645.18+395540.4,UGC 04106;;; -NGC2477;OCl;07:52:09.78;-38:31:59.7;Pup;18.60;;;6.64;5.80;;;;;;;;;;;;;C 071,MWSC 1363;;; -NGC2478;Dup;07:36:35.02;-14:28:57.4;Pup;;;;;;;;;;;;;;;2422;;;;;; -NGC2479;OCl;07:55:06.07;-17:42:28.1;Pup;6.30;;;;9.60;;;;;;;;;;;;;MWSC 1380;;; -NGC2480;G;07:57:10.44;+23:46:47.3;Gem;1.32;0.51;163;15.20;;12.54;11.88;11.70;23.47;SBm;;;;;;;;2MASX J07571044+2346466,MCG +04-19-009,PGC 022289,SDSS J075710.44+234647.3,SDSS J075710.45+234647.3,UGC 04116;;; -NGC2481;G;07:57:13.75;+23:46:04.0;Gem;1.40;0.58;19;13.40;;10.14;9.43;9.17;22.89;S0-a;;;;;;;;2MASX J07571372+2346036,MCG +04-19-010,PGC 022292,SDSS J075713.75+234603.9,UGC 04118;;Incorrectly identified as NGC 2482 in PASP100,1423,1988 and AJ91,732,1986.; -NGC2482;OCl;07:55:10.37;-24:15:16.7;Pup;6.60;;;7.71;7.30;;;;;;;;;;;;;MWSC 1382;;; -NGC2483;OCl;07:55:38.79;-27:53:12.6;Pup;3.30;;;7.89;7.60;;;;;;;;;;;;;MWSC 1383;;; -NGC2484;G;07:58:28.11;+37:47:11.8;Lyn;1.69;1.04;141;14.15;14.90;10.89;10.22;9.87;24.05;S0;;;;;;;;2MASX J07582810+3747121,MCG +06-18-004,PGC 022350,SDSS J075828.10+374711.6,SDSS J075828.10+374711.7,SDSS J075828.11+374711.8,SDSS J075828.11+374711.9,UGC 04125;;; -NGC2485;G;07:56:48.66;+07:28:40.6;CMi;1.57;1.46;5;13.30;;10.44;9.82;9.48;22.93;Sa;;;;;;;;2MASX J07564865+0728406,IRAS 07541+0736,MCG +01-21-001,PGC 022266,SDSS J075648.66+072840.6,UGC 04112;;; -NGC2486;G;07:57:56.49;+25:09:39.1;Gem;1.49;0.85;89;14.24;13.26;11.09;10.35;10.19;23.64;SBa;;;;;;;;2MASX J07575646+2509393,MCG +04-19-011,PGC 022317,SDSS J075756.48+250939.0,SDSS J075756.48+250939.1,SDSS J075756.49+250939.1,UGC 04123;;; -NGC2487;G;07:58:20.46;+25:08:57.2;Gem;1.73;1.39;55;13.28;12.23;10.61;9.95;9.70;23.15;Sb;;;;;;;;2MASX J07582044+2508573,IRAS 07553+2517,MCG +04-19-012,PGC 022343,SDSS J075820.46+250857.1,SDSS J075820.46+250857.2,UGC 04126;;; -NGC2488;G;08:01:45.98;+56:33:13.9;Lyn;1.45;0.83;100;14.20;;10.57;9.86;9.56;22.96;E-S0;;;;;;;;2MASX J08014590+5633120,MCG +09-13-109,PGC 022520,UGC 04161;;; -NGC2489;OCl;07:56:14.94;-30:03:39.0;Pup;4.20;;;8.58;7.90;;;;;;;;;;;;;MWSC 1386;;; -NGC2490;G;07:59:17.87;+27:04:40.3;Gem;0.63;0.47;23;15.30;;;;;22.87;E-S0;;;;;;;;MCG +05-19-027,PGC 022382,SDSS J075917.87+270440.3;;; -NGC2491;G;07:58:27.38;+07:59:01.7;CMi;0.69;0.53;78;15.60;;12.86;12.18;12.05;23.79;;;;;;;;;2MASX J07582739+0759018,PGC 022353,SDSS J075827.37+075901.7;;NGC identification is not certain.; -NGC2492;G;07:59:29.71;+27:01:35.2;Gem;1.11;0.88;100;14.40;;10.60;9.90;9.60;22.71;E-S0;;;;;;;;2MASX J07592970+2701349,MCG +05-19-028,PGC 022397,SDSS J075929.71+270135.1,SDSS J075929.71+270135.2,UGC 04138;;; -NGC2493;G;08:00:23.63;+39:49:49.5;Lyn;1.87;1.85;30;13.10;;9.80;9.07;8.83;23.21;S0;;;;;;;;2MASX J08002366+3949494,MCG +07-17-007,PGC 022447,SDSS J080023.62+394949.5,UGC 04150;;; -NGC2494;G;07:59:07.14;-00:38:16.5;Mon;0.97;0.80;89;14.20;;11.28;10.60;10.21;22.94;S0-a;;;;;;0487;;2MASX J07590714-0038164,IRAS 07565-0030,MCG +00-21-001,PGC 022377,UGC 04141;;; -NGC2495;G;08:00:33.15;+39:50:24.1;Lyn;0.55;0.32;23;15.50;;;;;22.68;Sd;;;;;;;;MCG +07-17-008,PGC 022457,SDSS J080033.14+395024.0,SDSS J080033.15+395024.0,SDSS J080033.15+395024.1;;"Position in Kiso list (1984AnTok..192.595T) is for a star 25"" east."; -NGC2496;G;07:58:37.35;+08:01:47.3;CMi;1.86;1.48;173;14.80;;10.53;9.90;9.60;24.54;E;;;;;;;;2MASX J07583734+0801468,MCG +01-21-002,PGC 022359,SDSS J075837.35+080147.2,UGC 04127;;; -NGC2497;G;08:02:11.13;+56:56:32.4;Lyn;1.58;1.36;25;14.50;;10.76;10.05;9.77;24.22;E;;;;;;;;2MASX J08021114+5656325,MCG +10-12-061,PGC 022547,UGC 04168;;; -NGC2498;G;07:59:38.85;+24:58:56.4;Cnc;1.04;0.67;127;14.40;;11.17;10.41;10.05;22.92;Sa;;;;;;;;2MASX J07593884+2458559,IRAS 07566+2507,MCG +04-19-015,PGC 022403,SDSS J075938.85+245856.3,UGC 04142;;; -NGC2499;G;07:58:51.71;+07:29:35.9;CMi;0.86;0.60;175;15.10;;12.60;11.71;11.37;23.03;SABc;;;;;;;;2MASX J07585168+0729358,MCG +01-21-003,PGC 022366,SDSS J075851.70+072935.9;;; -NGC2500;G;08:01:53.21;+50:44:13.6;Lyn;2.47;2.34;15;12.20;11.62;10.79;10.16;9.28;22.88;Scd;;;;;;;;2MASX J08015322+5044135,IRAS 07581+5052,MCG +09-13-110,PGC 022525,UGC 04165;;; -NGC2501;G;07:58:30.04;-14:21:15.4;Pup;1.73;1.16;120;12.90;;10.16;9.41;9.20;24.41;S0;;;;;;;;2MASX J07583004-1421154,IRAS 07561-1413,MCG -02-21-002,PGC 022354;;; -NGC2502;G;07:55:51.52;-52:18:24.4;Car;2.21;1.12;118;13.09;;8.94;8.16;7.87;23.61;S0;;;;;;;;2MASX J07555149-5218242,ESO 209-008,ESO-LV 209-0080,PGC 022210;;; -NGC2503;G;08:00:36.68;+22:24:00.2;Cnc;0.95;0.79;4;15.00;;11.82;11.08;10.68;23.29;Sbc;;;;;;;;2MASX J08003663+2224002,MCG +04-19-019,PGC 022453,SDSS J080036.67+222400.1,SDSS J080036.67+222400.2,SDSS J080036.68+222400.2,UGC 04158;;; -NGC2504;G;07:59:52.30;+05:36:29.2;CMi;0.62;0.37;126;14.10;;12.38;11.71;11.43;21.88;SABc;;;;;;;;2MASX J07595230+0536303,IRAS 07572+0544,MCG +01-21-004,PGC 022414,SDSS J075952.29+053629.1,UGC 04152;;; -NGC2505;G;08:04:06.84;+53:32:57.2;Lyn;1.19;0.57;1;14.00;;10.87;10.10;9.95;23.04;SBa;;;;;;;;2MASX J08040682+5332572,MCG +09-13-115,PGC 022644,SDSS J080406.84+533257.2,UGC 04193;;; -NGC2506;OCl;08:00:01.78;-10:46:10.7;Mon;10.80;;;8.28;7.60;;;;;;;;;;;;;C 054,MWSC 1406;;; -NGC2507;G;08:01:37.21;+15:42:35.1;Cnc;1.52;1.43;60;14.00;;9.86;9.19;8.93;23.54;S0-a;;;;;;;;2MASX J08013724+1542355,MCG +03-21-010,PGC 022510,SDSS J080137.21+154235.0,UGC 04172;;HOLM 092B is a star.; -NGC2508;G;08:01:57.22;+08:33:06.8;Cnc;1.95;1.55;126;14.20;;10.29;9.54;9.34;24.16;E;;;;;;;;2MASX J08015724+0833064,MCG +02-21-004,PGC 022528,SDSS J080157.21+083306.7,UGC 04174;;; -NGC2509;OCl;08:00:47.82;-19:03:01.9;Pup;4.80;;;;9.30;;;;;;;;;;;;;MWSC 1410;;; -NGC2510;G;08:02:10.68;+09:29:09.5;Cnc;0.97;0.67;114;14.70;;11.39;10.81;10.53;23.18;S0;;;;;;;;2MASX J08021066+0929099,MCG +02-21-007,PGC 022541,SDSS J080210.67+092909.5,UGC 04178;;; -NGC2511;G;08:02:15.01;+09:23:39.9;Cnc;1.04;0.57;118;15.00;;11.60;10.97;10.71;23.37;Sab;;;;;;;;2MASX J08021499+0923399,MCG +02-21-008,PGC 022549,SDSS J080215.00+092339.8;;; -NGC2512;G;08:03:07.85;+23:23:30.6;Cnc;1.35;0.78;116;14.20;;10.86;10.12;9.82;22.89;SBb;;;;;;;;2MASX J08030785+2323308,IRAS 08001+2331,MCG +04-19-021,PGC 022596,SDSS J080307.84+232330.5,UGC 04191;;; -NGC2513;G;08:02:24.67;+09:24:48.8;Cnc;1.91;1.43;153;13.70;;9.69;9.02;8.74;22.89;E;;;;;;;;2MASX J08022465+0924489,MCG +02-21-009,PGC 022555,SDSS J080224.67+092448.7,SDSS J080224.67+092448.8,UGC 04184;;; -NGC2514;G;08:02:49.64;+15:48:29.8;Cnc;1.20;1.13;30;14.40;;12.30;11.58;11.55;23.10;Sc;;;;;;;;2MASX J08024965+1548300,IRAS 08000+1556,MCG +03-21-011,PGC 022581,SDSS J080249.63+154829.7,SDSS J080249.63+154829.8,SDSS J080249.64+154829.8,UGC 04189;;; -NGC2515;**;08:03:21.29;+20:11:16.8;Cnc;;;;;;;;;;;;;;;;;;;;; -NGC2516;OCl;07:58:07.06;-60:45:12.5;Car;24.30;;;3.84;3.80;;;;;;;;;;;;;C 096,MWSC 1393;;; -NGC2517;G;08:02:47.07;-12:19:04.2;Pup;1.74;1.49;44;14.00;;9.80;9.14;8.84;22.80;S0;;;;;;;;2MASX J08024707-1219041,MCG -02-21-003,PGC 022578;;; -NGC2518;G;08:07:20.25;+51:07:53.8;Lyn;1.28;1.04;35;14.20;;10.87;10.11;9.89;23.40;E-S0;;;;;;;;2MASX J08072025+5107539,MCG +09-14-006,PGC 022800,SDSS J080720.24+510753.7,SDSS J080720.25+510753.7,SDSS J080720.25+510753.8,SDSS J080720.25+510753.9,UGC 04221;;NGC 2519 is a Galactic star.; -NGC2519;*;08:07:58.83;+51:07:41.6;Lyn;;;;;;;;;;;;;;;;;;SDSS J080758.82+510741.5;;; -NGC2520;OCl;08:04:58.18;-28:08:48.0;Pup;9.30;;;6.81;6.50;;;;;;;;;;2527;;;MWSC 1428;;; -NGC2521;G;08:08:49.37;+57:46:10.6;Lyn;0.96;0.54;35;14.20;;10.73;10.02;9.73;22.68;E-S0;;;;;;;;2MASX J08084939+5746105,PGC 022866,UGC 04235;;; -NGC2522;G;08:06:13.44;+17:42:23.7;Cnc;1.15;0.33;33;14.40;;10.42;9.65;9.36;22.82;S0-a;;;;;;;;2MASX J08061345+1742231,MCG +03-21-014,PGC 022749,SDSS J080613.44+174223.6,SDSS J080613.45+174223.7,UGC 04218;;; -NGC2523;G;08:15:00.09;+73:34:44.3;Cam;2.79;1.78;66;12.40;;10.25;9.59;9.24;23.25;Sbc;;;;;;;;2MASX J08150007+7334442,IRAS 08092+7343,MCG +12-08-031,PGC 023128,UGC 04271;;; -NGC2523A;G;08:04:08.46;+74:02:52.0;Cam;1.11;0.95;80;;;;;;23.35;Sc;;;;;;;;2MASX J08040850+7402519,MCG +12-08-024,PGC 022649,UGC 04166;;; -NGC2523B;G;08:12:57.09;+73:33:47.7;Cam;1.87;0.25;91;14.80;;11.10;10.37;9.60;23.53;Sb;;;;;;;;2MASX J08125712+7333476,IRAS 08072+7342,MCG +12-08-030,PGC 023025,UGC 04259;;; -NGC2523C;G;08:17:44.29;+73:19:03.4;Cam;1.49;0.87;92;13.93;;11.40;10.65;10.53;23.96;E;;;;;;;;2MASX J08174432+7319038,MCG +12-08-032,PGC 023247,UGC 04290;;; -NGC2524;G;08:08:09.59;+39:09:26.8;Lyn;1.47;1.03;124;13.70;;10.58;9.91;9.68;23.17;S0-a;;;;;;;;2MASX J08080956+3909266,MCG +07-17-016,PGC 022838,SDSS J080809.58+390926.7,SDSS J080809.59+390926.7,SDSS J080809.59+390926.8,UGC 04234;;; -NGC2525;G;08:05:38.04;-11:25:37.3;Pup;3.08;2.17;71;11.80;;9.75;9.13;8.83;23.18;Sc;;;;;;;;2MASX J08053803-1125372,IRAS 08032-1117,MCG -02-21-004,PGC 022721,UGCA 135;;; -NGC2526;G;08:06:58.63;+08:00:14.2;Cnc;0.91;0.46;137;14.60;;11.76;11.08;10.80;22.68;Sab;;;;;;;;2MASX J08065862+0800138,IRAS 08042+0808,MCG +01-21-012,PGC 022778,SDSS J080658.62+080014.1,UGC 04231;;; -NGC2527;Dup;08:04:58.18;-28:08:48.0;Pup;;;;;;;;;;;;;;;2520;;;;;; -NGC2528;G;08:07:24.83;+39:11:40.1;Lyn;1.39;1.24;86;13.50;;11.27;10.71;10.30;23.00;SABb;;;;;;;;2MASX J08072487+3911402,IRAS 08040+3920,MCG +07-17-015,PGC 022805,SDSS J080724.82+391140.0,SDSS J080724.82+391140.1,SDSS J080724.83+391140.0,SDSS J080724.83+391140.1,UGC 04227;;; -NGC2529;Other;08:07:49.11;+17:49:15.0;Cnc;;;;;;;;;;;;;;;;;;;;"This number is sometimes incorrectly put on NGC 2530; N2529 is nonexistent."; -NGC2530;G;08:07:55.61;+17:49:06.6;Cnc;1.40;0.95;171;14.70;;12.14;11.51;11.54;23.64;Scd;;;;;;;;2MASX J08075560+1749062,IRAS 08050+1757,MCG +03-21-020,PGC 022827,SDSS J080755.60+174906.5,UGC 04237;;Sometimes incorrectly called NGC 2529 or NGC 2531.; -NGC2531;Other;08:08:01.10;+17:49:14.2;Cnc;;;;;;;;;;;;;;;;;;;;"This number is sometimes incorrectly put on NGC 2530; N2531 is nonexistent."; -NGC2532;G;08:10:15.18;+33:57:23.9;Lyn;1.66;1.36;26;12.90;;10.64;10.00;9.62;22.73;SABc;;;;;;;;2MASX J08101519+3357233,IRAS 08070+3406,MCG +06-18-013,PGC 022922,SDSS J081015.17+335723.8,SDSS J081015.18+335723.8,UGC 04256;;; -NGC2533;OCl;08:07:04.10;-29:53:01.9;Pup;4.98;;;8.19;7.60;;;;;;;;;;;;;MWSC 1432;;; -NGC2534;G;08:12:54.15;+55:40:19.4;Lyn;1.40;1.30;50;15.13;13.59;11.01;10.32;10.13;23.35;E;;;;;;;;2MASX J08125410+5540191,MCG +09-14-014,PGC 023024,SDSS J081254.15+554019.4,SDSS J081254.16+554019.4,UGC 04268;;; -NGC2535;G;08:11:13.49;+25:12:24.5;Cnc;1.93;0.94;62;13.50;12.60;10.99;10.34;10.12;22.88;SBc;;;;;;;;2MASX J08111348+2512249,IRAS 08082+2521,MCG +04-20-004,PGC 022957,SDSS J081113.48+251224.4,SDSS J081113.48+251224.7,SDSS J081113.49+251224.5,UGC 04264;;; -NGC2536;G;08:11:15.92;+25:10:45.7;Cnc;0.73;0.45;53;14.80;13.93;12.45;11.90;11.71;22.40;Sc;;;;;;;;2MASX J08111591+2510459,MCG +04-20-005,PGC 022958,SDSS J081115.91+251045.3,SDSS J081115.92+251045.7,UGC 04264 NOTES01;;; -NGC2537;G;08:13:14.64;+45:59:23.3;Lyn;2.07;1.96;165;12.50;11.69;9.95;9.37;9.13;22.54;SBm;;;;;;;;2MASX J08131464+4559232,IRAS 08096+4608,MCG +08-15-050,PGC 023040,SDSS J081314.72+455921.9,UGC 04274;Bear Claw Nebula,Bear-Paw Galaxy;; -NGC2537A;G;08:13:41.03;+45:59:37.5;Lyn;0.55;0.50;115;16.00;;14.07;13.32;12.78;23.73;Sc;;;;;;;;2MASX J08134102+4559374,MCG +08-15-051,PGC 023057,SDSS J081341.02+455937.4,SDSS J081341.03+455937.4,SDSS J081341.03+455937.5;;RC2 incorrectly associates this with VV 138.; -NGC2538;G;08:11:23.07;+03:37:59.5;Hya;1.58;1.12;30;13.49;;10.61;9.92;9.63;23.26;SBa;;;;;;;;2MASX J08112308+0337587,IRAS 08087+0347,MCG +01-21-019,PGC 022962,SDSS J081123.06+033759.4,UGC 04266;;; -NGC2539;OCl;08:10:36.98;-12:49:14.4;Pup;12.30;;;7.05;6.50;;;;;;;;;;;;;MWSC 1439;;; -NGC2540;G;08:12:46.44;+26:21:42.4;Cnc;1.24;0.65;123;14.50;;11.44;10.74;10.63;23.09;Sc;;;;;;;;2MASX J08124642+2621391,IRAS 08097+2630,MCG +05-20-004,PGC 023017,SDSS J081246.44+262142.3,SDSS J081246.44+262142.4,SDSS J081246.45+262142.4,UGC 04275;;; -NGC2541;G;08:14:40.12;+49:03:42.2;Lyn;3.02;1.60;170;12.26;11.80;10.87;10.20;10.09;22.85;SABc;;;;;;;;2MASX J08144007+4903411,IRAS 08110+4912,MCG +08-15-054,PGC 023110,SDSS J081440.11+490342.1,UGC 04284;;; -NGC2542;**;08:11:16.39;-12:55:37.5;Pup;;;;5.68;4.72;3.12;2.70;2.59;;;;;;;;;;2MASS J08111631-1255371,BD-12 2385,HD 68290,HIP 40084,IDS 08066-1238 AB,SAO 153942,TYC 5434-3731-1,WDS J08113-1256AB,19 Pup;;; -NGC2543;G;08:12:57.92;+36:15:16.7;Lyn;2.43;1.13;52;12.70;;10.53;9.75;9.43;23.20;Sb;;;;;;2232;;2MASX J08125795+3615162,IRAS 08096+3624,MCG +06-18-014,PGC 023028,SDSS J081257.92+361516.6,SDSS J081257.92+361516.7,UGC 04273;;; -NGC2544;G;08:21:40.34;+73:59:18.1;Cam;1.53;1.06;67;13.98;13.09;10.78;10.06;9.78;23.35;Sa;;;;;;;;2MASX J08214030+7359181,IRAS 08159+7409,MCG +12-08-034,PGC 023453,UGC 04327;;; -NGC2545;G;08:14:14.16;+21:21:19.7;Cnc;1.95;1.06;169;13.20;;10.35;9.67;9.39;23.00;Sab;;;;;;;;2MASX J08141413+2121198,IRAS 08113+2130,MCG +04-20-007,PGC 023086,SDSS J081414.15+212119.6,UGC 04287;;; -NGC2546;OCl;08:12:15.63;-37:35:39.5;Pup;16.50;;;6.46;6.30;;;;;;;;;;;;;MWSC 1447;;; -NGC2547;OCl;08:10:09.49;-49:12:20.4;Vel;7.80;;;4.75;4.70;;;;;;;;;;;;;MWSC 1437;;; -NGC2548;OCl;08:13:43.18;-05:45:01.6;Hya;28.20;;;6.11;5.80;;;;;;;;;048;;;;MWSC 1454;;; -NGC2549;G;08:18:58.35;+57:48:11.0;Lyn;3.63;0.92;179;12.10;;8.97;8.29;8.05;23.55;S0;;;;;;;;2MASX J08185834+5748111,MCG +10-12-124,PGC 023313,SDSS J081858.35+574810.9,UGC 04313;;; -NGC2550;G;08:24:33.86;+74:00:44.2;Cam;0.95;0.36;105;13.10;;11.33;10.50;10.40;21.01;Sb;;;;;;;;2MASX J08243364+7400443,IRAS 08188+7410,MCG +12-08-037,PGC 023604,UGC 04359;;; -NGC2550A;G;08:28:39.94;+73:44:52.8;Cam;1.60;1.33;174;13.44;;10.95;10.32;10.05;23.09;Sc;;;;;;;;2MASX J08283996+7344526,IRAS 08230+7354,MCG +12-08-043,PGC 023781,UGC 04397;;; -NGC2551;G;08:24:50.28;+73:24:43.3;Cam;1.57;1.09;53;13.10;12.11;10.27;9.64;9.37;22.69;S0-a;;;;;;;;2MASX J08245029+7324432,MCG +12-08-038,PGC 023608,UGC 04362;;; -NGC2552;G;08:19:20.53;+50:00:34.7;Lyn;2.99;1.61;60;13.00;12.56;14.52;13.86;13.61;23.26;SABm;;;;;;;;2MASX J08192055+5000351,IRAS 08156+5009,MCG +08-15-062,PGC 023340,SDSS J081920.52+500034.5,SDSS J081920.53+500034.6,SDSS J081920.53+500034.7,UGC 04325;;; -NGC2553;G;08:17:35.00;+20:54:11.1;Cnc;1.11;0.67;57;15.00;;11.19;10.50;10.28;23.32;Sa;;;;;;;;2MASX J08173503+2054116,MCG +04-20-014,PGC 023240,SDSS J081734.99+205411.0,SDSS J081735.00+205411.0,SDSS J081735.00+205411.1;;; -NGC2554;G;08:17:53.49;+23:28:19.7;Cnc;2.04;1.31;154;13.50;;9.71;9.00;8.77;23.13;S0-a;;;;;;;;2MASX J08175347+2328195,IRAS 08149+2337,MCG +04-20-015,PGC 023256,UGC 04312;;; -NGC2555;G;08:17:56.41;+00:44:44.5;Hya;1.85;1.39;111;13.50;;10.11;9.40;9.13;23.28;Sab;;;;;;;;2MASX J08175639+0044445,MCG +00-21-012,PGC 023259,UGC 04319;;HOLM 095B,C are stars.; -NGC2556;G;08:19:00.85;+20:56:13.1;Cnc;0.62;0.40;126;15.50;;12.16;11.61;11.21;23.28;E;;;;;;;;2MASX J08190087+2056133,PGC 023325,SDSS J081900.85+205613.0,SDSS J081900.85+205613.1;;; -NGC2557;G;08:19:10.75;+21:26:08.8;Cnc;1.08;0.87;50;14.60;;10.68;9.98;9.70;23.15;S0;;;;;;;;2MASX J08191074+2126085,MCG +04-20-021,PGC 023329,SDSS J081910.74+212608.7,SDSS J081910.74+212608.8,SDSS J081910.75+212608.8,UGC 04330;;The 2MASS position is 5 arcsec east of the nucleus.; -NGC2558;G;08:19:12.76;+20:30:38.7;Cnc;1.43;0.92;159;14.60;;10.84;10.15;9.99;23.12;Sab;;;;;;;;2MASX J08191278+2030385,MCG +04-20-022,PGC 023337,SDSS J081912.76+203038.6,SDSS J081912.76+203038.7,UGC 04331;;; -NGC2559;G;08:17:06.07;-27:27:21.0;Pup;2.81;1.34;7;11.71;;8.38;7.70;7.42;22.25;SBc;;;;;;;;2MASX J08170607-2727209,ESO 494-041,ESO-LV 494-0410,IRAS 08150-2718,MCG -04-20-003,PGC 023222,UGCA 136;;; -NGC2560;G;08:19:51.89;+20:59:05.9;Cnc;1.60;0.38;92;14.90;;10.84;10.06;9.80;23.79;S0-a;;;;;;;;2MASX J08195187+2059061,MCG +04-20-027,PGC 023367,SDSS J081951.89+205905.8,SDSS J081951.89+205905.9,UGC 04337;;; -NGC2561;G;08:19:36.97;+04:39:26.0;Hya;1.06;0.58;142;14.00;;11.11;10.40;10.05;22.34;SBbc;;;;;;;;2MASX J08193698+0439258,IRAS 08169+0448,MCG +01-22-001,PGC 023351,UGC 04336;;; -NGC2562;G;08:20:23.66;+21:07:53.3;Cnc;1.03;0.79;1;14.00;;10.54;9.85;9.54;22.73;S0-a;;;;;;;;2MASX J08202368+2107533,MCG +04-20-031,PGC 023395,SDSS J082023.65+210753.2,SDSS J082023.65+210753.3,SDSS J082023.66+210753.3,UGC 04345;;; -NGC2563;G;08:20:35.69;+21:04:04.1;Cnc;2.02;1.68;79;13.70;12.39;9.97;9.29;9.01;23.61;S0;;;;;;;;2MASX J08203567+2104042,MCG +04-20-033,PGC 023404,SDSS J082035.68+210404.0,SDSS J082035.68+210404.1,UGC 04347;;; -NGC2564;G;08:18:30.01;-21:48:58.0;Pup;1.36;0.86;60;;;10.74;10.00;9.73;24.08;E-S0;;;;;;;;2MASX J08183000-2148580,ESO 562-001,PGC 023290;;; -NGC2565;G;08:19:48.32;+22:01:53.2;Cnc;1.67;0.73;166;13.80;;10.39;9.71;9.39;22.53;Sbc;;;;;;;;2MASX J08194833+2201531,IRAS 08168+2211,MCG +04-20-026,PGC 023362,SDSS J081948.30+220153.2,UGC 04334;;; -NGC2566;G;08:18:45.66;-25:29:58.3;Pup;3.98;2.75;56;11.81;;8.74;8.07;7.77;23.30;Sb;;;;;;;;2MASX J08184560-2529582,ESO 495-003,ESO-LV 495-0030,IRAS 08166-2520,MCG -04-20-008,PGC 023303,UGCA 138;;; -NGC2567;OCl;08:18:35.18;-30:38:08.2;Pup;6.00;;;7.77;7.40;;;;;;;;;;;;;MWSC 1467;;; -NGC2568;OCl;08:18:18.12;-37:06:19.4;Pup;;;;;;;;;;;;;;;;;;;;; -NGC2569;G;08:21:21.14;+20:52:03.0;Cnc;0.72;0.55;118;15.30;;11.69;11.01;10.79;23.30;E;;;;;;;;2MASX J08212116+2052025,MCG +04-20-035,PGC 023442,SDSS J082121.13+205202.9,SDSS J082121.14+205203.0;;; -NGC2570;G;08:21:22.54;+20:54:38.0;Cnc;0.70;0.37;71;15.40;;12.69;12.21;11.76;22.80;Sab;;;;;;;;2MASX J08212252+2054375,MCG +04-20-036,PGC 023443,SDSS J082122.54+205437.9,UGC 04354;;; -NGC2571;OCl;08:18:56.35;-29:44:57.4;Pup;7.20;;;7.16;7.00;;;;;;;;;;;;;MWSC 1469;;; -NGC2572;G;08:21:24.63;+19:08:52.0;Cnc;1.22;0.52;135;14.80;;11.61;10.86;10.57;23.55;SBa;;;;;;;;2MASX J08212460+1908515,MCG +03-22-004,PGC 023441,SDSS J082124.62+190852.0,SDSS J082124.63+190852.0,UGC 04355;;; -NGC2573;G;01:41:37.33;-89:20:04.3;Oct;1.92;0.74;78;14.15;;11.58;10.91;10.85;23.47;Sc;;;;;;;;2MASX J01413509-8920041,ESO 001-001,ESO-LV 1-0010,IRAS 02425-8934,PGC 006249;;; -NGC2573B;G;23:07:32.82;-89:06:59.4;Oct;1.13;0.35;122;15.32;;13.25;12.61;12.12;23.25;IB;;;;;;;;2MASX J23073361-8906590,ESO 001-008,ESO-LV 1-0080,PGC 070533;;ESO incorrectly interchanged the designations for NGC 2573A and NGC 2573B.; -NGC2574;G;08:20:48.16;-08:55:06.5;Hya;2.17;1.08;172;13.20;;10.79;10.15;9.81;23.21;SBab;;;;;;;;2MASX J08204816-0855063,MCG -01-22-003,PGC 023418;;; -NGC2575;G;08:22:44.96;+24:17:48.9;Cnc;1.37;1.08;129;14.30;;11.27;10.49;10.23;23.05;Sc;;;;;;;;2MASX J08224494+2417494,IRAS 08198+2427,MCG +04-20-040,PGC 023501,SDSS J082244.94+241748.9,SDSS J082244.95+241748.9,SDSS J082244.96+241748.9,UGC 04368;;; -NGC2576;G;08:22:57.70;+25:44:19.4;Cnc;1.61;0.30;40;15.40;;12.26;11.44;10.60;23.81;SABb;;;;;;;;2MASX J08225781+2544243,MCG +04-20-041,PGC 023512,SDSS J082257.70+254419.3,SDSS J082257.70+254419.4,UGC 04371;;; -NGC2577;G;08:22:43.45;+22:33:11.1;Cnc;1.55;0.88;105;13.80;;10.01;9.33;9.05;23.10;E-S0;;;;;;;;2MASX J08224347+2233109,MCG +04-20-042,PGC 023498,SDSS J082243.44+223311.0,UGC 04367;;; -NGC2578;G;08:21:24.27;-13:19:04.3;Pup;2.19;1.10;83;14.05;13.04;10.38;9.65;9.35;23.75;S0-a;;;;;;;;2MASX J08212426-1319045,MCG -02-22-002,PGC 023440;;; -NGC2579;Cl+N;08:20:53.06;-36:13:01.7;Pup;3.30;;;;;;;;;;;;;;;;;ESO 370-008,PN G254.6+00.2;;ESO 370-PN?009 is a candidate planetary nebula included in NGC 2579.; -NGC2580;OCl;08:21:27.90;-30:17:36.5;Pup;3.00;;;;9.70;;;;;;;;;;;;;MWSC 1476;;; -NGC2581;G;08:24:30.94;+18:35:49.5;Cnc;0.96;0.70;4;13.96;;;;;22.97;SABb;;;;;;;;2MASX J08243097+1835494,IRAS 08216+1845,MCG +03-22-010,PGC 023599,SDSS J082430.94+183549.5,UGC 04388;;; -NGC2582;G;08:25:12.07;+20:20:05.1;Cnc;1.19;1.13;135;14.30;;11.12;9.93;10.09;23.07;Sb;;;;;;2359;;2MASX J08251207+2020052,MCG +04-20-050,PGC 023630,SDSS J082512.06+202005.0,SDSS J082512.06+202005.1,SDSS J082512.07+202005.1,UGC 04391;;; -NGC2583;G;08:23:07.93;-05:00:08.6;Hya;0.86;0.75;18;14.50;;11.19;10.51;10.22;22.93;E;;;;;;;;2MASX J08230792-0500083,MCG -01-22-008,PGC 023516;;; -NGC2584;G;08:23:15.45;-04:58:13.8;Hya;0.99;0.54;179;14.70;;12.44;11.79;11.88;23.04;SBbc;;;;;;;;2MASX J08231544-0458138,MCG -01-22-009,PGC 023523;;; -NGC2585;G;08:23:26.28;-04:54:54.8;Hya;1.55;0.57;119;14.50;;11.83;11.17;10.90;23.47;Sb;;;;;;;;2MASX J08232629-0454549,IRAS 08209-0445,MCG -01-22-010,PGC 023537;;; -NGC2586;Other;08:23:31.41;-04:57:07.0;Hya;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC2587;OCl;08:23:24.08;-29:30:31.4;Pup;6.00;;;;9.20;;;;;;;;;;;;;ESO 431-007,MWSC 1482;;; -NGC2588;OCl;08:23:09.57;-32:58:30.6;Pup;3.90;;;;11.80;;;;;;;;;;;;;MWSC 1480;;; -NGC2589;Other;08:24:29.47;-08:46:04.5;Hya;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC2590;G;08:25:02.00;-00:35:29.0;Hya;2.08;0.51;77;14.00;;10.47;9.75;9.38;23.23;SABb;;;;;;0507;;2MASX J08250202-0035292,IRAS 08224-0025,MCG +00-22-010,PGC 023616,SDSS J082501.90-003530.1,SDSS J082501.99-003529.0,UGC 04392;;; -NGC2591;G;08:37:25.53;+78:01:35.1;Cam;2.95;0.64;33;12.80;;10.57;9.85;9.54;22.73;Sc;;;;;;;;2MASX J08372552+7801351,IRAS 08307+7811,MCG +13-07-001,PGC 024231,UGC 04472;;; -NGC2592;G;08:27:08.05;+25:58:13.1;Cnc;1.47;1.19;47;13.60;;10.10;9.41;9.13;23.30;E;;;;;;;;2MASX J08270808+2558132,MCG +04-20-055,PGC 023701,SDSS J082708.05+255813.1,UGC 04411;;; -NGC2593;G;08:26:47.83;+17:22:29.7;Cnc;0.97;0.53;171;14.90;;11.71;11.02;10.63;23.37;S0-a;;;;;;;;2MASX J08264782+1722296,MCG +03-22-012,PGC 023692,SDSS J082647.83+172229.6,UGC 04408;;; -NGC2594;G;08:27:17.16;+25:52:43.7;Cnc;0.91;0.56;20;15.00;;11.33;10.59;10.38;23.44;S0;;;;;;;;2MASX J08271718+2552441,MCG +04-20-056,PGC 023704,SDSS J082717.16+255243.7;;; -NGC2595;G;08:27:42.02;+21:28:44.8;Cnc;1.66;1.12;175;13.90;;10.35;9.92;9.66;22.68;Sc;;;;;;;;2MASX J08274198+2128447,IRAS 08247+2138,MCG +04-20-062,PGC 023725,SDSS J082742.02+212844.7,SDSS J082742.03+212844.8,UGC 04422;;; -NGC2596;G;08:27:26.52;+17:17:02.7;Cnc;1.38;0.51;64;14.20;;11.32;10.58;10.25;22.96;Sb;;;;;;;;2MASX J08272651+1717030,IRAS 08245+1726,MCG +03-22-013,PGC 023714,SDSS J082726.51+171702.6,SDSS J082726.52+171702.7,UGC 04419;;; -NGC2597;**;08:29:57.41;+21:30:06.8;Cnc;;;;;;;;;;;;;;;;;;;;; -NGC2598;G;08:30:02.52;+21:29:19.2;Cnc;1.19;0.38;3;15.10;;11.41;10.69;10.43;23.22;SBa;;;;;;;;2MASX J08300254+2129184,MCG +04-20-065,PGC 023855,SDSS J083002.52+212919.1,UGC 04443;;; -NGC2599;G;08:32:11.30;+22:33:38.0;Cnc;1.56;1.32;108;13.40;;10.30;9.53;9.31;22.81;Sa;;;;;;;;2MASX J08321129+2233380,IRAS 08292+2243,MCG +04-20-067,PGC 023941,SDSS J083211.32+223338.0,UGC 04458;;; -NGC2600;G;08:34:45.05;+52:42:56.5;UMa;1.21;0.41;72;15.00;;12.14;11.41;11.03;23.45;Sb;;;;;;;;2MASX J08344506+5242566,MCG +09-14-068,PGC 024082,SDSS J083445.03+524256.6,SDSS J083445.04+524256.4,SDSS J083445.04+524256.5,SDSS J083445.05+524256.4,SDSS J083445.05+524256.5,UGC 04475;;; -NGC2601;G;08:25:30.66;-68:07:03.6;Vol;1.69;1.15;114;13.42;;10.18;9.48;9.17;23.17;S0-a;;;;;;;;2MASX J08253070-6807037,ESO 060-005,ESO-LV 60-0050,IRAS 08251-6757,PGC 023637;;; -NGC2602;G;08:35:04.25;+52:49:53.5;UMa;0.65;0.41;26;15.40;;12.54;11.95;11.63;23.15;S0-a;;;;;;;;2MASX J08350431+5249538,MCG +09-14-069,PGC 024099,SDSS J083504.23+524953.6,SDSS J083504.24+524953.4,SDSS J083504.24+524953.5,SDSS J083504.25+524953.5;;; -NGC2603;G;08:34:31.19;+52:50:24.8;UMa;0.40;0.34;164;16.42;;;;;23.44;Sbc;;;;;;;;2MASX J08343121+5250247,PGC 3133653,SDSS J083431.19+525024.7,SDSS J083431.19+525024.8;;;B-Mag taken from LEDA -NGC2604;G;08:33:23.14;+29:32:19.7;Cnc;1.48;1.37;50;15.38;14.92;12.04;11.42;11.04;23.39;SBc;;;;;2604A;;;2MASX J08332305+2932190,IRAS 08303+2942,MCG +05-20-022,PGC 023998,SDSS J083323.13+293219.7,SDSS J083323.14+293219.7,UGC 04469;;; -NGC2604B;G;08:33:35.66;+29:29:58.9;Cnc;0.56;0.23;58;15.60;;;;;22.81;Sd;;;;;;;;MCG +05-20-023,PGC 024004;;; -NGC2605;G;08:34:53.31;+52:48:15.5;UMa;0.45;0.35;27;16.05;;15.23;14.36;14.11;23.33;SBb;;;;;;;;2MASX J08345328+5248157,PGC 2424112,SDSS J083453.31+524815.4,SDSS J083453.31+524815.5;;;B-Mag taken from LEDA -NGC2606;G;08:35:34.44;+52:47:20.1;UMa;0.87;0.45;56;15.00;;;;;22.86;Sb;;;;;;;;2MASX J08353444+5247196,MCG +09-14-072,PGC 024117,SDSS J083534.42+524720.2,SDSS J083534.43+524720.0,SDSS J083534.44+524720.1;;MCG incorrectly calls this NGC 2603.; -NGC2607;G;08:33:56.66;+26:58:21.6;Cnc;0.84;0.80;160;14.90;;12.73;11.98;12.04;23.34;Sc;;;;;;;;2MASX J08335666+2658219,MCG +05-20-025,PGC 024038,SDSS J083356.65+265821.5,SDSS J083356.65+265821.6,SDSS J083356.66+265821.5,SDSS J083356.66+265821.6,UGC 04473;;; -NGC2608;G;08:35:17.33;+28:28:24.3;Cnc;1.95;0.95;64;13.20;;10.30;9.61;9.33;22.63;Sb;;;;;;;;2MASX J08351736+2828246,IRAS 08322+2838,MCG +05-20-027,PGC 024111,SDSS J083517.33+282824.2,SDSS J083517.33+282824.3,UGC 04484;;; -NGC2609;OCl;08:29:29.65;-61:06:36.8;Car;3.60;;;;;;;;;;;;;;;;;MWSC 1495;;; -NGC2610;PN;08:33:23.40;-16:08:58.0;Hya;0.63;;;13.60;12.70;16.71;16.29;;;;;15.60;15.90;;;;;IRAS 08310-1558,PN G239.6+13.9;;; -NGC2611;G;08:35:29.17;+25:01:39.0;Cnc;0.80;0.26;51;15.30;;12.06;11.31;10.96;23.27;S0-a;;;;;;;;2MASX J08352922+2501386,IRAS 08325+2512,PGC 024121,SDSS J083529.17+250139.0;;; -NGC2612;G;08:33:50.10;-13:10:28.3;Hya;2.60;0.80;117;13.00;;9.70;9.03;8.78;24.21;E-S0;;;;;;;;2MASX J08335002-1310290,MCG -02-22-020,PGC 024028;;; -NGC2613;G;08:33:22.84;-22:58:25.2;Pyx;7.62;1.79;113;11.29;10.42;7.83;7.12;6.83;23.28;Sb;;;;;;;;2MASX J08332284-2258252,ESO 495-018,ESO-LV 495-0180,IRAS 08311-2248,MCG -04-21-003,PGC 023997,UGCA 141;;; -NGC2614;G;08:42:47.95;+72:58:35.3;UMa;2.04;1.67;132;14.00;;11.14;10.45;10.19;23.95;Sc;;;;;;;;2MASX J08424792+7258352,IRAS 08373+7309,MCG +12-09-005,PGC 024473,UGC 04523;;; -NGC2615;G;08:34:33.35;-02:32:48.5;Hya;1.20;0.82;44;13.50;;10.43;9.73;9.44;22.55;Sb;;;;;;;;2MASX J08343335-0232485,IRAS 08320-0222,MCG +00-22-019,PGC 024071,UGC 04481;;; -NGC2616;G;08:35:34.07;-01:51:00.5;Hya;1.43;0.98;147;15.20;;10.68;9.94;9.65;23.06;S0;;;;;;;;2MASX J08353408-0151002,MCG +00-22-021,PGC 024129,UGC 04489;;; -NGC2617;G;08:35:38.79;-04:05:17.6;Hya;1.40;1.10;127;13.60;;11.03;10.32;10.05;23.07;SBc;;;;;;;;2MASX J08353877-0405172,IRAS 08331-0354,MCG -01-22-026,PGC 024141;;This pair is made up of MCG -01-22-026 and MCG -01-22-027.; -NGC2618;G;08:35:53.54;+00:42:25.6;Hya;2.07;0.88;141;13.90;;10.00;9.36;9.08;23.81;Sab;;;;;;;;2MASX J08355356+0042259,MCG +00-22-023,PGC 024156,SDSS J083553.54+004225.6,UGC 04492;;; -NGC2619;G;08:37:32.71;+28:42:18.7;Cnc;1.93;1.17;38;13.27;12.72;10.58;9.99;9.60;23.19;Sbc;;;;;;;;2MASX J08373272+2842187,IRAS 08345+2852,MCG +05-21-002,PGC 024235,SDSS J083732.70+284218.6,SDSS J083732.70+284218.7,SDSS J083732.71+284218.7,UGC 04503;;; -NGC2620;G;08:37:28.24;+24:56:49.0;Cnc;2.00;0.50;93;14.80;;11.03;10.23;10.18;24.07;Sab;;;;;;;;2MASX J08372820+2456477,MCG +04-21-001,PGC 024233,SDSS J083728.21+245648.1,SDSS J083728.22+245648.1,SDSS J083728.22+245648.2,UGC 04501;;; -NGC2621;G;08:37:36.98;+24:59:59.3;Cnc;0.73;0.47;176;15.40;;12.09;11.33;11.18;23.26;Sab;;;;;;;;2MASX J08373695+2459587,MCG +04-21-003,PGC 024241,SDSS J083736.97+245959.2,SDSS J083736.98+245959.1,SDSS J083736.98+245959.3;;; -NGC2622;G;08:38:10.94;+24:53:43.0;Cnc;0.94;0.60;10;15.01;14.12;11.37;10.52;10.29;23.07;SBb;;;;;;;;2MASX J08381094+2453427,MCG +04-21-008,PGC 024269,SDSS J083810.94+245342.9,SDSS J083810.94+245343.0;;; -NGC2623;G;08:38:24.08;+25:45:16.7;Cnc;2.39;0.70;36;13.99;13.36;11.57;10.81;10.43;23.81;Sb;;;;;;;;2MASX J08382409+2545167,IRAS 08354+2555,MCG +04-21-009,PGC 024288,SDSS J083824.00+254516.3,UGC 04509;;Position for J-band nucleus.; -NGC2624;G;08:38:09.63;+19:43:32.4;Cnc;0.77;0.47;35;14.50;;11.97;11.30;11.06;22.96;E;;;;;;;;2MASX J08380962+1943319,MCG +03-22-019,PGC 024264,SDSS J083809.62+194332.3,SDSS J083809.63+194332.4,UGC 04506;;; -NGC2625;G;08:38:23.22;+19:43:00.0;Cnc;0.53;0.44;32;15.10;;13.11;12.44;12.21;22.50;SBcd;;;;;;;;2MASX J08382322+1942589,PGC 024285,SDSS J083823.21+194300.0,SDSS J083823.22+194300.0;;; -NGC2626;RfN;08:35:28.88;-40:40:06.0;Vel;5.00;5.00;;;;;;;;;;;;;;;;2MASX J08352888-4040057;;;Dimensions taken from LEDA -NGC2627;OCl;08:37:14.94;-29:57:01.5;Pyx;5.40;;;;8.40;;;;;;;;;;;;;ESO 431-020,MWSC 1514;;; -NGC2628;G;08:40:22.71;+23:32:22.8;Cnc;1.04;0.93;30;14.10;;11.12;10.51;10.17;22.83;SABc;;;;;;;;2MASX J08402271+2332229,IRAS 08374+2342,MCG +04-21-012,PGC 024381,SDSS J084022.70+233222.8,SDSS J084022.71+233222.8,UGC 04519;;; -NGC2629;G;08:47:15.82;+72:59:08.3;UMa;1.97;1.42;100;12.80;;9.81;9.13;8.85;23.52;E-S0;;;;;;;;2MASX J08471585+7259082,MCG +12-09-010,PGC 024682,UGC 04569;;; -NGC2630;Other;08:47:07.30;+73:00:01.1;UMa;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC2631;Other;08:47:07.30;+73:00:01.1;UMa;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC2632;OCl;08:40:22.20;+19:40:19.4;Cnc;108.60;;;3.46;3.10;;;;;;;;;044;;;;MWSC 1527;Beehive,Praesepe Cluster;; -NGC2633;G;08:48:04.58;+74:05:55.9;Cam;2.31;1.45;175;12.40;;10.03;9.26;8.96;23.08;Sb;;;;;;;;2MASX J08480464+7405556,IRAS 08425+7416,MCG +12-09-013,PGC 024723,UGC 04574;;Described by VV as 'three or more galaxies with one and two bridges'.; -NGC2634;G;08:48:25.39;+73:58:01.8;Cam;1.72;1.66;30;12.60;;10.19;9.48;9.26;22.96;E;;;;;;;;2MASX J08482543+7358016,MCG +12-09-015,PGC 024749,UGC 04581;;; -NGC2634A;G;08:48:38.14;+73:56:21.4;Cam;1.19;0.37;67;14.30;;12.52;11.70;11.52;22.77;SBbc;;;;;;;;2MASX J08483817+7356215,IRAS 08433+7406,MCG +12-09-016,PGC 024760,UGC 04585;;; -NGC2635;OCl;08:38:25.99;-34:46:17.7;Pyx;5.10;;;12.06;11.20;;;;;;;;;;;;;ESO 371-001,MWSC 1519;;; -NGC2636;G;08:48:24.43;+73:40:16.1;Cam;0.34;0.34;30;14.40;;11.70;11.09;10.76;21.18;E;;;;;;;;2MASX J08482440+7340166,PGC 024747,UGC 04583;;; -NGC2637;G;08:41:13.49;+19:41:29.2;Cnc;0.51;0.43;48;15.05;;13.66;13.53;13.16;22.91;SBc;;;;;;;;2MASX J08411343+1941281,PGC 024409,SDSS J084113.48+194129.1,SDSS J084113.49+194129.1,SDSS J084113.49+194129.2;;; -NGC2638;G;08:42:25.77;+37:13:15.7;Lyn;1.66;0.59;70;13.70;;10.77;10.08;9.80;23.40;S0-a;;;;;;;;2MASX J08422575+3713161,MCG +06-19-016,PGC 024453,SDSS J084225.76+371315.6,SDSS J084225.76+371315.7,SDSS J084225.77+371315.7,UGC 04534;;; -NGC2639;G;08:43:38.08;+50:12:20.0;UMa;1.61;1.21;140;12.56;11.65;9.39;8.68;8.40;22.24;Sa;;;;;;;;2MASX J08433809+5012199,IRAS 08400+5023,MCG +08-16-024,PGC 024506,SDSS J084338.06+501219.9,UGC 04544;;; -NGC2640;G;08:37:24.62;-55:07:25.5;Car;4.67;4.00;104;;;7.72;7.01;6.72;24.18;E-S0;;;;;;;;2MASX J08372462-5507254,ESO 165-002,IRAS 08360-5456,PGC 024229;;; -NGC2641;G;08:47:57.49;+72:53:44.8;UMa;1.26;1.04;178;15.00;;10.88;10.20;9.90;24.07;S0;;;;;;;;2MASX J08475760+7253446,MCG +12-09-012,PGC 024722,UGC 04577;;; -NGC2642;G;08:40:44.37;-04:07:18.2;Hya;1.92;1.43;145;12.60;;10.56;9.95;9.53;23.35;Sbc;;;;;;;;2MASX J08404435-0407182,IRAS 08382-0356,MCG -01-22-033,PGC 024395,SDSS J084044.37-040718.0;;; -NGC2643;G;08:41:51.74;+19:42:09.1;Cnc;0.68;0.37;19;15.60;;12.64;12.00;11.81;23.27;S0-a;;;;;;2390;;2MASX J08415170+1942085,PGC 024434,SDSS J084151.73+194209.0,SDSS J084151.74+194209.1;;; -NGC2644;G;08:41:31.86;+04:58:49.2;Hya;1.64;0.65;12;13.40;;11.23;10.65;10.36;22.73;Sc;;;;;;;;2MASX J08413189+0458488,IRAS 08389+0509,MCG +01-22-016,PGC 024425,UGC 04533;;; -NGC2645;OCl;08:39:03.12;-46:13:38.3;Vel;6.60;;;7.51;7.32;;;;;;;;;;;;;ESO 259-014,MWSC 1520;;; -NGC2646;G;08:50:22.05;+73:27:47.1;Cam;1.47;1.05;47;13.00;;10.38;9.67;9.37;22.73;S0;;;;;;;;2MASX J08502210+7327474,MCG +12-09-019,PGC 024838,UGC 04604;;; -NGC2647;G;08:42:43.10;+19:39:02.2;Cnc;0.72;0.57;50;15.20;;11.86;11.24;10.80;23.08;S0-a;;;;;;;;2MASX J08424314+1939023,PGC 024463,SDSS J084243.09+193902.1,SDSS J084243.10+193902.2;;; -NGC2648;G;08:42:39.80;+14:17:08.2;Cnc;3.15;1.08;151;12.80;11.82;9.61;8.94;8.66;23.61;Sa;;;;;;;;2MASX J08423982+1417078,MCG +02-22-005,PGC 024464,SDSS J084239.80+141708.2,UGC 04541;;; -NGC2649;G;08:44:08.27;+34:43:02.1;Lyn;1.47;1.38;60;13.10;;10.93;10.37;10.05;22.93;SABb;;;;;;;;2MASX J08440830+3443017,IRAS 08409+3453,MCG +06-19-018,PGC 024531,SDSS J084408.26+344302.0,SDSS J084408.27+344302.0,SDSS J084408.27+344302.1,UGC 04555;;; -NGC2650;G;08:49:58.35;+70:17:58.0;UMa;1.38;0.99;82;14.30;;10.75;9.96;9.69;23.37;Sb;;;;;;;;2MASX J08495831+7017580,MCG +12-09-020,PGC 024817,UGC 04603;;; -NGC2651;G;08:43:55.15;+11:46:15.6;Cnc;0.53;0.44;124;15.50;;12.90;12.15;11.92;22.95;Sbc;;;;;;;;2MASX J08435516+1146159,PGC 024521,SDSS J084355.15+114615.5,SDSS J084355.15+114615.6;;; -NGC2652;Other;08:43:13.62;-03:36:44.8;Hya;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC2653;**;08:54:55.56;+78:23:36.8;Cam;;;;;;;;;;;;;;;;;;;;; -NGC2654;G;08:49:11.87;+60:13:16.0;UMa;4.45;0.89;64;12.80;;9.50;8.73;8.46;23.79;SBab;;;;;;;;2MASX J08491187+6013160,IRAS 08451+6024,MCG +10-13-017,PGC 024784,SDSS J084911.82+601316.2,UGC 04605;;; -NGC2655;G;08:55:37.73;+78:13:23.1;Cam;3.93;2.06;16;12.03;11.08;7.88;7.18;6.95;22.51;S0-a;;;;;;;;2MASX J08553773+7813230,IRAS 08491+7824,MCG +13-07-010,PGC 025069,UGC 04637;;; -NGC2656;G;08:47:53.07;+53:52:34.2;UMa;1.31;1.18;65;15.00;15.00;11.46;10.67;10.42;24.24;E-S0;;;;;;;;2MASX J08475313+5352344,MCG +09-15-025,PGC 024707,SDSS J084753.07+535234.2;;; -NGC2657;G;08:45:15.81;+09:38:43.8;Cnc;1.28;1.09;116;14.00;;12.32;11.65;11.62;23.18;SBcd;;;;;;;;2MASX J08451582+0938438,MCG +02-23-002,PGC 024595,UGC 04573;;; -NGC2658;OCl;08:43:27.34;-32:39:22.4;Pyx;7.20;;;;9.20;;;;;;;;;;;;;MWSC 1542;;; -NGC2659;OCl;08:42:33.02;-45:00:01.9;Vel;5.10;;;8.75;8.60;;;;;;;;;;;;;MWSC 1538;;; -NGC2660;OCl;08:42:37.99;-47:12:02.4;Vel;3.60;;;9.05;8.80;;;;;;;;;;;;;MWSC 1539;;; -NGC2661;G;08:45:59.54;+12:37:11.7;Cnc;1.48;1.35;5;13.90;;11.81;11.15;10.86;23.36;Sc;;;;;;;;2MASX J08455957+1237118,IRAS 08432+1248,MCG +02-23-004,PGC 024632,SDSS J084559.54+123711.6,SDSS J084559.54+123711.7,UGC 04584;;; -NGC2662;G;08:45:32.03;-15:07:16.5;Hya;1.23;1.15;10;15.00;;10.70;10.03;9.72;23.77;E;;;;;;;;2MASX J08453200-1507161,MCG -02-23-002,PGC 024612;;; -NGC2663;G;08:45:08.25;-33:47:41.1;Pyx;3.90;2.75;111;11.85;12.33;7.86;7.12;6.82;23.70;E;;;;;;;;2MASX J08450824-3347411,ESO 371-014,ESO-LV 371-0140,MCG -06-20-001,PGC 024590;;; -NGC2664;OCl;08:47:07.03;+12:36:20.8;Cnc;6.60;;;;;;;;;;;;;;;;;MWSC 1565;;; -NGC2665;G;08:46:00.99;-19:18:10.4;Hya;2.00;1.72;55;12.90;;10.22;9.55;9.25;22.64;Sa;;;;;;;;2MASX J08460098-1918105,ESO 563-019,IRAS 08437-1907,MCG -03-23-004,PGC 024634,UGCA 144;;; -NGC2666;OCl;08:49:47.02;+44:42:13.2;Lyn;;;;;;;;;;;;;;;;;;;;Identification as NGC 2666 is very uncertain.; -NGC2667;G;08:48:27.25;+19:01:10.2;Cnc;1.03;0.37;78;14.80;;11.91;11.21;11.03;23.13;Sa;;;;;2667A;2410;;2MASX J08482721+1901098,MCG +03-23-007,PGC 024741,SDSS J084827.24+190110.1,SDSS J084827.25+190110.1,SDSS J084827.25+190110.2;;HOLM 098C is a star.; -NGC2667B;G;08:48:30.17;+19:02:38.0;Cnc;0.85;0.28;43;15.40;;12.79;12.05;11.96;23.21;Sbc;;;;;;2411;;2MASX J08483017+1902378,MCG +03-23-009,PGC 024755,SDSS J084830.16+190237.9,SDSS J084830.17+190238.0;;; -NGC2668;G;08:49:22.56;+36:42:37.2;Lyn;1.23;0.66;151;14.90;;11.67;11.06;10.69;23.63;Sab;;;;;;;;2MASX J08492256+3642375,MCG +06-20-007,PGC 024791,SDSS J084922.55+364237.2,SDSS J084922.56+364237.1,SDSS J084922.57+364237.2,UGC 04616;;; -NGC2669;OCl;08:46:22.57;-52:56:51.1;Vel;8.40;;;6.35;6.10;;;;;;;;;;;;;MWSC 1561;;; -NGC2670;OCl;08:45:29.48;-48:47:29.9;Vel;4.20;;;8.31;7.80;;;;;;;;;;;;;MWSC 1554;;; -NGC2671;OCl;08:46:11.89;-41:52:37.8;Vel;5.10;;;;11.60;;;;;;;;;;;;;MWSC 1558;;; -NGC2672;G;08:49:21.89;+19:04:29.9;Cnc;3.20;2.87;100;13.10;;9.30;8.55;8.35;24.04;E;;;;;;;;2MASX J08492189+1904298,MCG +03-23-010,PGC 024790,SDSS J084921.87+190429.9,UGC 04619;;; -NGC2673;G;08:49:24.14;+19:04:27.1;Cnc;1.23;0.81;167;14.40;;;;;23.43;E;;;;;;;;MCG +03-23-011,PGC 024792,SDSS J084924.19+190427.5,UGC 04620;;; -NGC2674;G;08:49:13.21;-14:17:39.2;Hya;1.04;0.49;65;;;12.11;11.39;11.33;24.38;Sa;;;;;;;;2MASX J08491322-1417384,PGC 024785;;; -NGC2675;G;08:52:04.95;+53:37:02.3;UMa;1.51;1.05;83;14.30;13.26;11.07;10.40;10.11;24.05;E;;;;;;;;2MASX J08520492+5337026,MCG +09-15-037,PGC 024909,SDSS J085204.93+533702.6,SDSS J085204.95+533702.3,SDSS J085204.95+533702.4,UGC 04629;;; -NGC2676;G;08:51:35.65;+47:33:27.6;UMa;1.20;1.12;175;14.30;;11.08;10.40;10.16;23.60;S0;;;;;;;;2MASX J08513562+4733279,MCG +08-16-032,PGC 024881,SDSS J085135.64+473327.6,SDSS J085135.65+473327.6,SDSS J085135.65+473327.8,UGC 04627;;; -NGC2677;G;08:50:01.33;+19:00:35.2;Cnc;0.70;0.41;169;15.20;;12.33;11.58;11.40;23.09;E?;;;;;;;;2MASX J08500133+1900354,MCG +03-23-012,PGC 024821,SDSS J085001.32+190035.1,SDSS J085001.33+190035.2;;; -NGC2678;OCl;08:50:02.75;+11:20:17.2;Cnc;10.00;10.00;0;;;;;;;;;;;;;;;;;; -NGC2679;G;08:51:32.94;+30:51:55.3;Cnc;1.85;1.85;165;14.30;;10.62;9.92;9.67;24.10;S0;;;;;;;;2MASX J08513292+3051555,MCG +05-21-014 NED01,PGC 024884,SDSS J085132.94+305155.2,UGC 04632;;; -NGC2680;G;08:51:33.49;+30:51:56.9;Cnc;0.16;0.11;;;;;;;;;;;;;;;;MCG +05-21-014 NED02,UGC 04632 NOTES01;;; -NGC2681;G;08:53:32.74;+51:18:49.2;UMa;3.97;3.97;70;11.09;10.29;8.41;7.71;7.45;22.88;S0-a;;;;;;;;2MASX J08533273+5118493,IRAS 08500+5130,MCG +09-15-041,PGC 024961,UGC 04645;;; -NGC2682;OCl;08:51:20.13;+11:48:43.0;Cnc;33.00;;;7.60;6.90;;;;;;;;;067;;;;MWSC 1585;;; -NGC2683;G;08:52:41.33;+33:25:18.3;Lyn;9.48;2.70;44;10.68;9.79;7.31;6.60;6.33;22.76;Sb;;;;;;;;2MASX J08524134+3325184,IRAS 08495+3336,MCG +06-20-011,PGC 024930,UGC 04641;;; -NGC2684;G;08:54:54.04;+49:09:37.4;UMa;1.10;0.84;49;13.40;;11.22;10.60;10.38;22.43;SABb;;;;;;;;2MASX J08545405+4909375,IRAS 08514+4921,MCG +08-16-035,PGC 025024,SDSS J085454.04+490937.4,SDSS J085454.05+490937.8,SDSS J085454.06+490937.4,UGC 04662;;; -NGC2685;G;08:55:34.71;+58:44:03.8;UMa;4.33;2.31;38;13.68;12.70;9.25;8.58;8.35;24.03;S0-a;;;;;;;;2MASX J08553474+5844038,MCG +10-13-039,PGC 025065,SDSS J085534.71+584403.8,UGC 04666;Helix Galaxy;; -NGC2686A;G;08:54:58.91;+49:08:32.4;UMa;0.88;0.51;71;17.98;17.12;11.95;10.98;11.03;24.20;E;;;;;;;;2MASX J08545893+4908324,MCG +08-16-036,PGC 025026,SDSS J085458.90+490832.3,SDSS J085458.90+490832.4,SDSS J085458.91+490832.4,SDSS J085458.92+490832.3,SDSS J085458.92+490832.7;;; -NGC2686B;G;08:55:00.59;+49:08:32.8;UMa;0.48;0.35;63;16.00;;;;;24.05;E;;;;;;;;MCG +08-16-037,PGC 025025,SDSS J085500.58+490832.8;;; -NGC2687A;G;08:55:05.02;+49:09:23.4;UMa;0.23;0.11;;17.00;;;;;;;;;;;;;;MCG +08-16-038,PGC 025031,SDSS J085505.01+490923.4;;; -NGC2687B;G;08:55:06.04;+49:09:22.0;UMa;0.69;0.39;28;16.00;;12.20;11.40;11.08;23.50;E-S0;;;;;;;;2MASX J08550600+4909217,MCG +08-16-039,PGC 025030,SDSS J085506.03+490922.0,SDSS J085506.04+490922.0,SDSS J085506.05+490922.0,SDSS J085506.05+490922.3;;; -NGC2688;G;08:55:11.59;+49:07:21.4;UMa;0.47;0.36;87;16.00;;13.65;13.03;12.31;23.37;Sb;;;;;;;;2MASX J08551161+4907218,MCG +08-16-040,PGC 025048,SDSS J085511.59+490721.3,SDSS J085511.59+490721.4,SDSS J085511.60+490721.4,SDSS J085511.61+490721.4,SDSS J085511.61+490721.7;;; -NGC2689;G;08:55:25.41;+49:06:55.7;UMa;0.41;0.30;99;17.45;;13.70;13.01;12.59;23.85;E;;;;;;;;2MASX J08552536+4906557,PGC 025042,SDSS J085525.41+490655.6;;; -NGC2690;G;08:52:38.03;-02:36:11.6;Hya;1.70;0.39;20;14.10;;10.56;9.92;9.64;23.02;Sab;;;;;;;;2MASX J08523804-0236117,MCG +00-23-008,PGC 024926,UGC 04647;;; -NGC2691;G;08:54:46.34;+39:32:19.2;Lyn;1.26;0.90;166;14.87;14.10;11.29;10.55;10.27;23.01;Sa;;;;;;;;2MASX J08544631+3932197,IRAS 08515+3943,MCG +07-18-064,PGC 025020,SDSS J085446.30+393219.7,SDSS J085446.30+393219.8,SDSS J085446.31+393219.6,SDSS J085446.31+393219.7,SDSS J085446.31+393219.8,UGC 04664;;; -NGC2692;G;08:56:58.01;+52:03:57.4;UMa;1.25;0.55;163;14.18;;10.77;10.13;9.90;22.71;Sab;;;;;;;;2MASX J08565802+5203575,MCG +09-15-057,PGC 025142,SDSS J085658.00+520357.4,SDSS J085658.00+520357.6,SDSS J085658.01+520357.4,UGC 04675;;; -NGC2693;G;08:56:59.27;+51:20:50.8;UMa;2.00;1.37;158;12.84;11.88;9.59;8.92;8.60;23.17;E;;;;;;;;2MASX J08565924+5120504,MCG +09-15-055,PGC 025144,SDSS J085659.26+512050.7,UGC 04674;;CGCG misprints declination as +51d 03'.; -NGC2694;G;08:56:59.26;+51:19:55.1;UMa;0.81;0.50;177;15.50;;12.08;11.39;11.46;23.56;E;;;;;;;;2MASX J08565924+5119544,MCG +09-15-056,PGC 025143,SDSS J085659.25+511955.0,SDSS J085659.25+511955.3,SDSS J085659.26+511955.0,SDSS J085659.26+511955.1,UGC 04674 NOTES01;;CGCG misprints Dec as +5102.; -NGC2695;G;08:54:27.07;-03:04:01.3;Hya;1.63;1.45;161;13.30;;9.77;9.06;8.86;22.65;S0;;;;;;;;2MASX J08542706-0304015,MCG +00-23-010,PGC 025003;;; -NGC2696;G;08:50:42.05;-05:00:35.2;Hya;1.03;0.95;25;16.00;;11.34;10.62;10.22;24.19;E;;;;;;;;2MASX J08504207-0500343,MCG -01-23-004,PGC 024851;;Identification as NGC 2696 is uncertain.; -NGC2697;G;08:54:59.40;-02:59:15.4;Hya;1.63;0.96;123;13.60;;10.75;10.08;9.89;23.26;S0-a;;;;;;;;2MASX J08545939-0259154,IRAS 08524-0247,MCG +00-23-011,PGC 025029;;; -NGC2698;G;08:55:36.51;-03:11:02.2;Hya;1.47;0.53;96;13.20;;9.82;9.13;8.84;22.75;S0-a;;;;;;;;2MASX J08553653-0311019,MCG +00-23-012,PGC 025067;;; -NGC2699;G;08:55:48.80;-03:07:39.3;Hya;1.41;0.76;40;13.60;;10.28;9.63;9.37;23.25;E;;;;;;;;2MASX J08554881-0307390,MCG +00-23-014,PGC 025075;;; -NGC2700;*;08:55:50.58;-03:06:59.0;Hya;;;;;;;;;;;;;;;;;;;;; -NGC2701;G;08:59:05.74;+53:46:18.0;UMa;1.94;1.30;25;12.30;;10.56;10.10;9.68;22.62;Sc;;;;;;;;2MASX J08590572+5346183,IRAS 08554+5357,MCG +09-15-063,PGC 025237,SDSS J085905.74+534618.0,UGC 04695;;; -NGC2702;*;08:55:54.64;-03:03:55.2;Hya;;;;;;;;;;;;;;;;;;;;; -NGC2703;**;08:55:47.13;-03:18:24.9;Hya;;;;;;;;;;;;;;;;;;;;; -NGC2704;G;08:56:47.69;+39:22:55.9;Lyn;1.04;1.01;120;14.40;;11.72;11.00;10.76;23.15;Sab;;;;;;2424;;2MASX J08564772+3922554,MCG +07-19-005,PGC 025134,SDSS J085647.69+392255.8,SDSS J085647.69+392255.9,UGC 04678;;HOLM 103B is a star.; -NGC2705;*;08:56:00.05;-03:00:53.6;Hya;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC2706;G;08:56:12.31;-02:33:48.4;Hya;1.67;0.57;168;13.80;;10.68;9.86;9.53;22.75;Sbc;;;;;;;;2MASX J08561231-0233483,IRAS 08536-0222,MCG +00-23-017,PGC 025102,UGC 04680;;; -NGC2707;*;08:56:05.68;-03:03:59.1;Hya;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC2708;G;08:56:08.05;-03:21:36.4;Hya;2.93;1.06;18;12.60;;9.81;9.15;8.88;23.18;SABb;;;;;2727;;;2MASX J08560804-0321363,IRAS 08535-0309,MCG +00-23-015,PGC 025097;;; -NGC2709;G;08:56:12.86;-03:14:35.6;Hya;0.79;0.65;95;14.80;;12.15;11.45;11.37;23.21;S0;;;;;;;;2MASX J08561285-0314353,MCG +00-23-016,PGC 025103;;; -NGC2710;G;08:59:48.35;+55:42:23.0;UMa;2.02;0.97;119;13.66;;11.68;11.18;10.45;23.48;SBb;;;;;;;;2MASX J08594833+5542231,IRAS 08560+5554,MCG +09-15-066,PGC 025258,SDSS J085948.41+554222.5,UGC 04705;;; -NGC2711;G;08:57:23.60;+17:17:16.9;Cnc;0.56;0.38;158;14.60;;12.66;11.96;11.81;22.18;SBa;;;;;;;;2MASX J08572362+1717163,IRAS 08545+1728,MCG +03-23-020,PGC 025164,SDSS J085723.59+171716.8,UGC 04688;;; -NGC2712;G;08:59:30.47;+44:54:50.0;Lyn;2.93;1.59;1;12.30;;10.01;9.37;9.10;23.41;SBb;;;;;;;;2MASX J08593045+4454504,IRAS 08561+4506,MCG +08-17-003,PGC 025248,SDSS J085930.47+445450.0,UGC 04708;;The 2MASXi position is 5 arcsec southwest of the nucleus.; -NGC2713;G;08:57:20.51;+02:55:16.7;Hya;3.37;1.15;106;12.90;;9.26;8.56;8.31;23.48;SBb;;;;;;;;2MASX J08572051+0255171,IRAS 08547+0306,MCG +01-23-006,PGC 025161,SDSS J085720.50+025516.7,UGC 04691;;; -NGC2714;G;08:53:29.82;-59:13:01.6;Car;1.37;1.18;50;;;9.87;9.10;8.82;23.50;E;;;;;;;;2MASX J08532984-5913016,ESO 125-007,PGC 024959;;; -NGC2715;G;09:08:06.20;+78:05:06.6;Cam;4.20;1.41;20;11.90;;9.52;8.68;8.60;23.00;SABc;;;;;;;;2MASX J09080619+7805065,IRAS 09018+7817,MCG +13-07-015,PGC 025676,UGC 04759;;; -NGC2716;G;08:57:35.88;+03:05:24.8;Hya;1.63;1.14;45;13.70;;10.15;9.45;9.19;22.84;S0-a;;;;;;;;2MASX J08573586+0305250,MCG +01-23-007,PGC 025172,SDSS J085735.87+030524.8,SDSS J085735.88+030524.8,UGC 04692;;HOLM 104B is a double star.; -NGC2717;G;08:57:01.12;-24:40:25.5;Pyx;2.03;1.69;12;13.21;;9.62;8.84;8.61;23.68;E-S0;;;;;;;;2MASX J08570113-2440255,ESO 496-021,ESO-LV 496-0210,MCG -04-21-015,PGC 025146,TYC 6589-1806-1;;; -NGC2718;G;08:58:50.47;+06:17:34.8;Hya;1.72;1.09;152;14.97;14.24;10.56;9.86;9.51;23.12;Sab;;;;;;;;2MASX J08585046+0617354,IRAS 08561+0629,MCG +01-23-015,PGC 025225,SDSS J085850.46+061734.7,SDSS J085850.47+061734.8,UGC 04707;;; -NGC2719;G;09:00:15.46;+35:43:39.5;Lyn;1.17;0.30;132;13.70;;12.49;12.20;11.83;21.89;IB;;;;;;;;2MASX J09001576+3543387,MCG +06-20-017,PGC 025281,UGC 04718;;; -NGC2719A;G;09:00:15.94;+35:43:12.5;Lyn;0.49;0.40;150;14.00;;13.68;13.31;12.98;21.50;I;;;;;;;;2MASX J09001609+3543077,MCG +06-20-018,PGC 025284,UGC 04718 NOTES01;;; -NGC2720;G;08:59:08.06;+11:08:57.2;Cnc;1.26;1.11;40;14.20;;10.67;9.96;9.68;23.47;E-S0;;;;;;;;2MASX J08590808+1108566,MCG +02-23-016,PGC 025238,SDSS J085908.06+110857.2,UGC 04710;;; -NGC2721;G;08:58:56.52;-04:54:07.0;Hya;1.85;1.33;164;13.10;;10.63;10.00;9.72;22.94;SBbc;;;;;;;;2MASX J08585649-0454072,IRAS 08564-0442,MCG -01-23-015,PGC 025231;;Declination in MCG is +8 arcmin in error.; -NGC2722;G;08:58:46.17;-03:42:36.4;Hya;1.83;0.95;80;13.50;;11.22;10.62;10.41;23.00;Sbc;;;;;2733;;;2MASX J08584617-0342363,IRAS 08562-0330,MCG -01-23-014,PGC 025221;;MCG errata note that its declinations are +8 arcmin in error for this field.; -NGC2723;G;09:00:14.36;+03:10:39.9;Hya;1.14;1.04;65;14.50;;10.75;10.02;9.79;23.30;S0;;;;;;;;2MASX J09001435+0310396,MCG +01-23-017,PGC 025280,SDSS J090014.36+031039.8,UGC 04723;;; -NGC2724;G;09:01:01.82;+35:45:43.4;Lyn;1.20;0.68;175;13.50;;14.03;13.39;12.67;23.63;Sc;;;;;;;;2MASX J09010184+3545431,MCG +06-20-019,PGC 025331,UGC 04726;;; -NGC2725;G;09:01:03.22;+11:05:54.2;Cnc;0.67;0.58;14;14.10;;12.36;11.79;11.42;22.17;SABb;;;;;;;;2MASX J09010322+1105541,MCG +02-23-018,PGC 025332,SDSS J090103.23+110553.9,UGC 04732;;; -NGC2726;G;09:04:56.77;+59:55:58.5;UMa;1.53;0.46;87;13.10;;10.75;10.03;9.79;22.45;Sa;;;;;;;;2MASX J09045569+5955589,2MASX J09045685+5955586,IRAS 09010+6007,MCG +10-13-054,PGC 025498,SDSS J090456.77+595558.5,UGC 04750;;MCG misprints R.A. as 08h01.0m. MRK list I & UGC misidentify this as MRK0018; -NGC2727;Dup;08:56:08.05;-03:21:36.4;Hya;;;;;;;;;;;;;;;2708;;;;;; -NGC2728;G;09:01:40.93;+11:04:58.7;Cnc;0.98;0.63;55;14.90;;12.71;12.07;11.97;23.62;SABb;;;;;;;;2MASX J09014096+1104584,MCG +02-23-020,PGC 025360,SDSS J090140.93+110458.7,UGC 04738;;; -NGC2729;G;09:01:28.62;+03:43:14.2;Hya;1.06;0.64;1;14.00;;11.20;10.49;10.20;23.09;S0;;;;;;;;2MASX J09012864+0343140,MCG +01-23-018,PGC 025352,SDSS J090128.61+034314.0,SDSS J090128.61+034314.1,SDSS J090128.62+034314.2,UGC 04737;;HOLM 106B is a star.; -NGC2730;G;09:02:15.83;+16:50:17.9;Cnc;1.45;0.95;72;13.70;;12.47;11.89;11.82;23.11;Sd;;;;;;;;2MASX J09021583+1650175,IRAS 08594+1702,MCG +03-23-028,PGC 025384,SDSS J090215.82+165017.8,UGC 04743;;; -NGC2731;G;09:02:08.41;+08:18:06.0;Cnc;0.72;0.49;72;14.20;;11.45;10.82;10.49;21.85;SABb;;;;;;;;2MASX J09020839+0818063,IRAS 08594+0829,MCG +02-23-021,PGC 025376,SDSS J090208.41+081805.9,UGC 04741;;; -NGC2732;G;09:13:24.73;+79:11:14.4;Cam;1.81;0.71;66;12.60;;9.87;9.15;8.94;22.82;S0;;;;;;;;2MASX J09132476+7911145,MCG +13-07-016,PGC 025999,UGC 04818;;; -NGC2733;Dup;08:58:46.17;-03:42:36.4;Hya;;;;;;;;;;;;;;;2722;;;;;; -NGC2734;G;09:03:01.61;+16:51:49.0;Cnc;0.92;0.78;88;17.71;;12.36;11.55;11.10;24.30;S0-a;;;;;;;;2MASX J09030161+1651486,PGC 025413,SDSS J090301.60+165148.9,SDSS J090301.61+165148.9;;; -NGC2735;G;09:02:38.64;+25:56:04.3;Cnc;1.42;0.53;96;14.20;;10.88;10.15;9.82;22.95;SABb;;;;;;;;2MASX J09023863+2556045,MCG +04-22-002,PGC 025399,UGC 04744;;; -NGC2735A;G;09:02:41.87;+25:56:18.2;Cnc;0.30;0.27;52;14.20;;13.42;12.55;12.61;21.23;I;;;;;;;;2MASX J09024189+2556185,MCG +04-22-003,PGC 025402,SDSS J090241.86+255618.2,SDSS J090241.87+255618.2,UGC 04744 NOTES01;;; -NGC2736;HII;09:00:16.94;-45:56:53.0;Vel;30.00;7.00;;;;;;;;;;;;;;;;;Pencil Nebula;; -NGC2737;G;09:03:59.72;+21:54:23.6;Cnc;0.95;0.38;61;14.80;;11.32;10.62;10.35;22.55;Sab;;;;;;;;2MASX J09035969+2154237,MCG +04-22-005,PGC 025453,SDSS J090359.71+215423.6,SDSS J090359.72+215423.6,UGC 04751;;; -NGC2738;G;09:04:00.45;+21:58:03.4;Cnc;1.36;0.62;53;13.80;;11.21;10.47;10.34;22.75;Sbc;;;;;;;;2MASX J09040047+2158036,IRAS 09011+2210,MCG +04-22-006,PGC 025454,SDSS J090400.35+215803.1,SDSS J090400.45+215803.3,SDSS J090400.45+215803.4,UGC 04752;;Multiple SDSS entries describe this object.; -NGC2739;G;09:06:02.83;+51:44:40.9;UMa;0.86;0.35;93;15.50;;12.44;11.77;11.62;23.49;Sa;;;;;;;;2MASX J09060283+5144411,MCG +09-15-085,PGC 025530,SDSS J090602.81+514441.0,SDSS J090602.83+514440.9;;; -NGC2740;G;09:06:04.99;+51:44:07.1;UMa;0.73;0.61;52;15.10;;12.70;12.00;11.75;23.12;SBab;;;;;;;;2MASX J09060498+5144071,MCG +09-15-086,PGC 025531,SDSS J090604.97+514407.2,SDSS J090604.98+514407.0,SDSS J090604.98+514407.1,SDSS J090604.99+514407.1;;; -NGC2741;G;09:03:16.50;+18:15:39.9;Cnc;0.67;0.44;77;16.00;;13.12;12.41;12.14;23.14;Sab;;;;;;;;2MASX J09031650+1815401,IRAS 09004+1827,PGC 025425,SDSS J090316.37+181539.9,SDSS J090316.50+181539.8,SDSS J090316.50+181539.9;;Multiple SDSS entries describe this object.; -NGC2742;G;09:07:33.53;+60:28:45.6;UMa;2.86;1.49;87;12.00;;9.71;9.12;8.81;22.56;Sc;;;;;2816;;;2MASX J09073352+6028454,IRAS 09036+6040,MCG +10-13-057,PGC 025640,SDSS J090733.58+602846.0,UGC 04779;;; -NGC2742A;G;09:09:58.07;+62:14:50.5;UMa;1.57;0.67;89;14.00;;10.89;10.13;9.72;23.17;Sb;;;;;;;;2MASX J09095803+6214504,IRAS 09059+6227,MCG +10-13-060,PGC 025836,SDSS J090958.06+621450.4,SDSS J090958.07+621450.4,SDSS J090958.07+621450.5,UGC 04803;;; -NGC2743;G;09:04:54.06;+25:00:14.1;Cnc;1.10;0.75;99;14.30;;11.41;10.88;10.71;22.76;Sd;;;;;;;;2MASX J09045400+2500145,IRAS 09019+2512,MCG +04-22-009,PGC 025496,SDSS J090454.06+250014.1,UGC 04760;;; -NGC2744;GPair;09:04:38.90;+18:27:37.0;Cnc;1.20;;;;;;;;;;;;;;;;;MCG +03-23-031,UGC 04757;;;Diameter of the group inferred by the author. -NGC2744 NED01;G;09:04:38.70;+18:27:22.0;Cnc;;;;;;;;;;S?;;;;;;;;MCG +03-23-031 NED01,PGC 200248,UGC 04757 NED01;;; -NGC2744 NED02;G;09:04:39.00;+18:27:52.0;Cnc;1.66;0.81;114;13.70;;11.72;11.09;10.70;23.12;SBab;;;;;;;;2MASX J09043901+1827521,IRAS 09018+1839,MCG +03-23-031 NED02,PGC 025480,SDSS J090439.00+182751.9,UGC 04757 NED02;;; -NGC2745;G;09:04:39.33;+18:15:26.5;Cnc;0.60;0.50;170;15.50;;12.68;12.04;11.80;23.42;E;;;;;;;;2MASX J09043929+1815261,PGC 025478,SDSS J090439.32+181526.5,SDSS J090439.33+181526.5;;; -NGC2746;G;09:05:59.44;+35:22:38.6;Lyn;1.57;1.31;51;14.40;;10.78;10.08;9.75;23.73;Sa;;;;;;;;2MASX J09055947+3522388,MCG +06-20-023,PGC 025533,SDSS J090559.44+352238.5,SDSS J090559.44+352238.6,UGC 04770;;; -NGC2747;G;09:05:18.34;+18:26:31.9;Cnc;0.56;0.35;172;15.50;;12.91;12.09;11.84;23.12;S0-a;;;;;;;;2MASX J09051836+1826322,PGC 025507,SDSS J090518.33+182631.9,SDSS J090518.34+182631.9;;; -NGC2748;G;09:13:43.02;+76:28:31.2;Cam;2.60;1.11;39;11.70;;9.80;9.11;8.78;22.55;Sbc;;;;;;;;2MASX J09134303+7628312,IRAS 09080+7640,MCG +13-07-019,PGC 026018,UGC 04825;;; -NGC2749;G;09:05:21.32;+18:18:47.2;Cnc;1.92;1.77;65;13.30;;9.91;9.21;8.93;23.07;E;;;;;;;;2MASX J09052131+1818472,MCG +03-23-036,PGC 025508,UGC 04763;;; -NGC2750;G;09:05:47.91;+25:26:14.7;Cnc;2.03;1.46;82;12.70;;10.48;10.05;9.67;22.75;SABc;;;;;;;;2MASX J09054789+2526145,PGC 025525,UGC 04769;;; -NGC2751;G;09:05:32.40;+18:15:44.3;Cnc;0.87;0.48;134;15.10;;12.19;11.39;11.32;22.96;SBb;;;;;;;;2MASX J09053239+1815445,MCG +03-23-037,PGC 025517,SDSS J090532.39+181544.2,SDSS J090532.40+181544.3;;; -NGC2752;G;09:05:43.03;+18:20:23.0;Cnc;1.74;0.33;61;14.80;;11.10;10.29;9.92;23.55;SBb;;;;;;;;2MASX J09054305+1820226,2MASX J09054355+1820276,IRAS 09028+1832,MCG +03-23-038,PGC 025523,SDSS J090543.02+182022.9,SDSS J090543.03+182023.0,UGC 04772;;; -NGC2753;G;09:07:08.26;+25:20:32.9;Cnc;0.55;0.34;17;14.80;;12.16;11.46;11.17;21.89;SBab;;;;;;;;2MASX J09070822+2520324,MCG +04-22-015 NED01,PGC 025603,SDSS J090708.25+252032.8,SDSS J090708.26+252032.9;;; -NGC2754;G;09:05:11.21;-19:05:05.5;Hya;0.78;0.68;140;15.23;;11.79;11.16;10.76;23.50;S0;;;;;;;;2MASX J09051123-1905048,ESO 564-016,ESO-LV 564-0160,PGC 025504;;; -NGC2755;G;09:07:58.31;+41:42:32.2;Lyn;1.15;0.76;127;14.20;;11.80;11.18;10.75;23.06;Sbc;;;;;;;;2MASX J09075831+4142324,IRAS 09047+4154,MCG +07-19-034,PGC 025670,SDSS J090758.30+414232.1,SDSS J090758.31+414232.1,SDSS J090758.31+414232.2,UGC 04789;;; -NGC2756;G;09:09:00.93;+53:50:58.3;UMa;1.50;1.00;0;13.20;;10.45;9.79;9.51;22.45;Sb;;;;;;;;2MASX J09090098+5350581,IRAS 09054+5402,MCG +09-15-098,PGC 025757,SDSS J090900.92+535058.3,UGC 04796;;; -NGC2757;Other;09:05:25.76;-19:02:52.1;Hya;;;;;;;;;;;;;;;;;;;;Galactic triple star. Identification as NGC 2757 is uncertain.; -NGC2758;G;09:05:31.20;-19:02:34.0;Hya;1.87;0.41;18;13.99;;12.50;11.98;11.44;23.03;SBbc;;;;;;;;2MASX J09053119-1902339,ESO 564-020,ESO-LV 564-0200,IRAS 09032-1850,MCG -03-23-019,PGC 025515;;; -NGC2759;G;09:08:37.29;+37:37:17.8;Lyn;1.27;0.90;49;14.20;;10.76;10.03;9.80;23.26;E-S0;;;;;;;;2MASX J09083728+3737174,MCG +06-20-033,PGC 025718,SDSS J090837.28+373717.6,SDSS J090837.28+373717.7,SDSS J090837.29+373717.6,SDSS J090837.29+373717.8,UGC 04795;;; -NGC2760;G;09:24:13.04;+76:31:52.6;Dra;1.21;0.27;100;15.10;;13.71;13.84;13.02;;E-S0;;;;;;;;2MASX J09241520+7631531,MCG +13-07-027,PGC 026654;;Identification as NGC 2760 is very uncertain.;Diameters and position angle taken from Simbad. -NGC2761;G;09:07:30.83;+18:26:05.1;Cnc;0.76;0.43;164;14.80;;11.91;11.18;10.74;22.70;Sm;;;;;;;;2MASX J09073082+1826057,IRAS 09047+1838,MCG +03-23-041,PGC 025638,SDSS J090730.82+182605.1,SDSS J090730.83+182605.1;;; -NGC2762;G;09:09:54.53;+50:25:05.7;UMa;0.51;0.36;180;15.70;;13.06;12.56;12.41;23.17;S0;;;;;;;;2MASX J09095451+5025059,MCG +08-17-045,PGC 025828,SDSS J090954.52+502505.9,SDSS J090954.53+502505.7,SDSS J090954.54+502505.7;;; -NGC2763;G;09:06:49.05;-15:29:59.2;Hya;2.43;1.88;136;12.30;;10.40;9.72;9.56;23.10;SBc;;;;;;;;2MASX J09064903-1529591,IRAS 09044-1517,MCG -02-23-010,PGC 025570;;; -NGC2764;G;09:08:17.47;+21:26:36.0;Cnc;1.15;0.67;18;13.90;;10.89;10.12;9.82;22.67;S0;;;;;;;;2MASX J09081751+2126364,IRAS 09054+2138,MCG +04-22-017,PGC 025690,SDSS J090817.46+212636.0,UGC 04794;;; -NGC2765;G;09:07:36.64;+03:23:34.5;Hya;2.74;0.93;105;13.30;;10.17;9.48;9.22;24.02;S0;;;;;;;;2MASX J09073666+0323347,MCG +01-24-001,PGC 025646,SDSS J090736.64+032334.4,SDSS J090736.64+032334.5,UGC 04791;;; -NGC2766;G;09:08:47.54;+29:51:53.2;Cnc;1.20;0.53;129;14.60;;11.50;10.79;10.45;23.19;SBab;;;;;;;;2MASX J09084752+2951531,MCG +05-22-009,PGC 025735,SDSS J090847.53+295153.1,SDSS J090847.53+295153.2,UGC 04801;;; -NGC2767;G;09:10:11.88;+50:24:04.7;UMa;0.72;0.63;167;14.40;;11.31;10.55;10.32;22.54;E-S0;;;;;;;;2MASX J09101187+5024048,MCG +08-17-048,PGC 025852,SDSS J091011.87+502404.9,SDSS J091011.88+502404.6,SDSS J091011.88+502404.7,SDSS J091011.89+502404.7,UGC 04813;;; -NGC2768;G;09:11:37.50;+60:02:14.0;UMa;5.64;2.24;93;10.84;9.87;7.93;7.23;7.00;23.38;E;;;;;;;;2MASX J09113750+6002139,MCG +10-13-065,PGC 025915,SDSS J091137.39+600214.8,UGC 04821;;; -NGC2769;G;09:10:32.16;+50:25:59.8;UMa;1.61;0.37;145;13.80;;10.50;9.77;9.44;23.05;Sa;;;;;;;;2MASX J09103209+5026000,MCG +08-17-050,PGC 025870,SDSS J091032.15+502559.7,SDSS J091032.15+502600.0,SDSS J091032.16+502559.7,SDSS J091032.16+502559.8,UGC 04816;;; -NGC2770;G;09:09:33.71;+33:07:24.7;Lyn;3.45;0.81;146;12.10;;10.52;9.81;9.57;23.02;Sc;;;;;;;;2MASX J09093362+3307242,IRAS 09065+3319,MCG +06-20-038,PGC 025806,SDSS J090933.70+330724.6,SDSS J090933.70+330724.7,SDSS J090933.71+330724.7,UGC 04806;;HOLM 111B is a star.; -NGC2771;G;09:10:39.66;+50:22:47.5;UMa;1.73;1.49;42;14.00;;10.80;10.12;9.83;23.76;Sab;;;;;;;;2MASX J09103962+5022470,MCG +08-17-051,PGC 025875,SDSS J091039.65+502247.5,SDSS J091039.66+502247.3,SDSS J091039.66+502247.4,SDSS J091039.66+502247.5,UGC 04817;;; -NGC2772;G;09:07:41.87;-23:37:17.1;Pyx;1.71;1.07;170;14.19;;10.59;9.74;9.40;23.77;SBb;;;;;;;;2MASX J09074186-2337172,ESO 497-014,ESO-LV 497-0140,IRAS 09054-2325,MCG -04-22-002,PGC 025654;;; -NGC2773;G;09:09:44.19;+07:10:25.3;Cnc;0.65;0.29;84;14.50;;11.57;10.83;10.50;22.07;Sab;;;;;;;;2MASX J09094416+0710255,IRAS 09070+0722,MCG +01-24-004,PGC 025825,SDSS J090944.16+071025.6,UGC 04815;;; -NGC2774;G;09:10:39.92;+18:41:47.7;Cnc;1.19;1.17;60;14.80;;;;;23.85;E;;;;;;;;2MASX J09103992+1841475,MCG +03-24-004,PGC 025879,SDSS J091039.92+184147.6,SDSS J091039.92+184147.7;;; -NGC2775;G;09:10:20.12;+07:02:16.6;Cnc;4.25;3.36;159;11.42;10.48;7.92;7.41;7.04;22.88;Sab;;;;;;;;2MASX J09102011+0702165,C 048,IRAS 09076+0714,MCG +01-24-005,PGC 025861,SDSS J091020.13+070216.8,UGC 04820;;; -NGC2776;G;09:12:14.51;+44:57:17.4;Lyn;2.14;0.91;111;12.25;11.69;10.05;9.44;9.13;21.89;SABc;;;;;;;;2MASX J09121453+4457176,IRAS 09089+4509,MCG +08-17-056,PGC 025946,SDSS J091214.51+445717.4,SDSS J091214.52+445717.4,UGC 04838;;; -NGC2777;G;09:10:41.83;+07:12:24.1;Cnc;0.76;0.59;169;13.90;;12.50;11.70;11.62;22.22;Sb;;;;;;;;2MASX J09104188+0712241,IRAS 09080+0724,MCG +01-24-006,PGC 025876,SDSS J091041.83+071224.1,UGC 04823;;; -NGC2778;G;09:12:24.37;+35:01:39.1;Lyn;1.30;0.98;46;13.10;;10.40;9.72;9.51;22.77;E;;;;;;;;2MASX J09122439+3501387,MCG +06-20-043,PGC 025955,SDSS J091224.37+350139.1,UGC 04840;;; -NGC2779;G;09:12:28.29;+35:03:13.5;Lyn;0.72;0.61;25;15.50;;12.84;12.58;12.07;23.50;S0-a;;;;;;;;2MASX J09122830+3503136,MCG +06-20-044,PGC 025958,SDSS J091228.29+350313.5;;; -NGC2780;G;09:12:44.37;+34:55:32.1;Lyn;1.06;0.77;147;14.20;;11.86;11.07;10.86;22.96;Sb;;;;;;;;2MASX J09124436+3455318,MCG +06-20-047,PGC 025967,SDSS J091244.37+345532.0,SDSS J091244.37+345532.1,UGC 04843;;; -NGC2781;G;09:11:27.52;-14:49:00.6;Hya;2.52;1.26;78;12.50;;9.44;8.76;8.50;23.20;S0-a;;;;;;;;2MASX J09112750-1448597,IRAS 09091-1436,MCG -02-24-002,PGC 025907;;Confused HIPASS source; -NGC2782;G;09:14:05.11;+40:06:49.3;Lyn;3.25;2.41;20;12.30;11.63;9.79;9.12;8.87;23.47;SABa;;;;;;;;2MASX J09140511+4006496,IRAS 09108+4019,MCG +07-19-036,PGC 026034,SDSS J091405.13+400649.1,UGC 04862;;; -NGC2783;G;09:13:39.46;+29:59:34.7;Cnc;1.98;1.10;165;13.90;;10.25;9.60;9.32;23.86;E;;;;;2783A;;;2MASX J09133949+2959340,MCG +05-22-019,PGC 026013,SDSS J091339.47+295934.6,SDSS J091339.47+295934.7,UGC 04859;;; -NGC2783B;G;09:13:33.15;+30:00:00.5;Cnc;1.45;0.28;76;15.20;;11.60;10.88;10.56;23.56;SBb;;;;;;2449;;2MASX J09133310+3000004,IRAS 09105+3012,MCG +05-22-017,PGC 026012,SDSS J091333.14+300000.5,SDSS J091333.15+300000.5,UGC 04856;;; -NGC2784;G;09:12:19.50;-24:10:21.4;Hya;4.82;1.85;73;10.99;10.16;7.32;6.59;6.32;23.34;S0;;;;;;;;2MASX J09121949-2410213,ESO 497-023,ESO-LV 497-0230,MCG -04-22-005,PGC 025950,UGCA 152;;; -NGC2785;G;09:15:15.39;+40:55:03.1;Lyn;1.44;0.58;120;14.90;;10.60;9.79;9.42;23.35;SBm;;;;;;;;2MASX J09151532+4055035,IRAS 09120+4107,MCG +07-19-042,PGC 026100,UGC 04876;;; -NGC2786;G;09:13:35.59;+12:26:26.9;Cnc;0.83;0.59;77;13.80;;11.21;10.50;10.26;22.09;Sa;;;;;;;;2MASX J09133557+1226271,IRAS 09108+1238,MCG +02-24-002,PGC 026008,SDSS J091335.59+122626.9,UGC 04861;;; -NGC2787;G;09:19:18.60;+69:12:11.7;UMa;3.24;1.81;114;12.92;11.79;8.22;7.52;7.26;22.84;S0-a;;;;;;;;2MASX J09191853+6912122,IRAS 09148+6924,MCG +12-09-039,PGC 026341,UGC 04914;;; -NGC2788;G;09:09:03.04;-67:55:56.9;Car;1.67;0.39;116;13.26;;10.77;10.01;9.68;22.30;Sab;;;;;;;;2MASX J09090297-6755571,ESO 061-002,ESO-LV 61-0020,IRAS 09083-6743,PGC 025761;;; -NGC2788A;G;09:02:39.44;-68:13:36.6;Vol;2.51;0.49;55;13.98;;10.20;9.48;9.13;23.53;Sb;;;;;;;;2MASX J09023940-6813365,ESO 060-024,ESO-LV 60-0240,IRAS 09020-6801,PGC 025400;;; -NGC2788B;G;09:03:35.70;-67:58:11.3;Car;1.55;0.56;164;14.51;;;;;23.47;Sb;;;;;;;;2MASX J09033575-6758112,ESO 060-025,ESO-LV 60-0250,PGC 025443;;; -NGC2789;G;09:14:59.66;+29:43:49.0;Cnc;1.15;0.96;36;13.80;13.06;10.86;10.11;9.85;22.87;S0-a;;;;;;;;2MASX J09145961+2943492,IRAS 09120+2956,MCG +05-22-026,PGC 026089,SDSS J091459.66+294348.8,SDSS J091459.66+294348.9,UGC 04875;;; -NGC2790;G;09:15:02.78;+19:41:49.6;Cnc;0.60;0.55;65;14.70;;12.53;11.82;11.54;22.50;S0-a;;;;;;;;2MASX J09150276+1941491,IRAS 09122+1954,MCG +03-24-016,PGC 026092,SDSS J091502.77+194149.5,SDSS J091502.78+194149.5,SDSS J091502.78+194149.6;;; -NGC2791;G;09:15:01.99;+17:35:32.0;Cnc;0.89;0.32;160;15.60;;12.38;11.72;11.29;24.07;S0-a;;;;;;;;2MASX J09150197+1735322,PGC 026088,SDSS J091502.01+173532.2,SDSS J091502.02+173532.2;;; -NGC2792;PN;09:12:26.57;-42:25:39.0;Vel;0.22;;;13.50;11.60;11.89;11.70;10.94;;;;17.22;;;;;HD 79384;2MASX J09122656-4225389,ESO 314-006,IRAS 09105-4213,PN G265.7+04.1;;; -NGC2793;G;09:16:47.31;+34:25:47.3;Lyn;1.12;0.93;;13.90;;;;;22.21;Sm;;;;;;;;2MASX J09164731+3425471,IRAS 09137+3438,MCG +06-21-002,PGC 026189,UGC 04894;;Noted as possible pair in MCG.; -NGC2794;G;09:16:01.79;+17:35:23.4;Cnc;1.22;0.93;57;14.00;;11.06;10.32;10.09;22.95;SABb;;;;;;;;2MASX J09160178+1735234,MCG +03-24-018,PGC 026140,SDSS J091601.78+173523.3,SDSS J091601.79+173523.3,SDSS J091601.79+173523.4,UGC 04885;;; -NGC2795;G;09:16:03.92;+17:37:42.1;Cnc;1.19;1.02;166;14.10;;10.68;9.92;9.68;23.21;E;;;;;;;;2MASX J09160388+1737424,MCG +03-24-020,PGC 026143,SDSS J091603.91+173742.1,SDSS J091603.92+173742.1,UGC 04887;;; -NGC2796;G;09:16:41.85;+30:54:55.5;Cnc;1.21;0.85;77;14.60;;10.71;10.00;9.70;23.50;Sa;;;;;;;;2MASX J09164185+3054551,MCG +05-22-029,PGC 026178,SDSS J091641.85+305455.4,SDSS J091641.85+305455.5,UGC 04893;;; -NGC2797;G;09:16:21.69;+17:43:38.0;Cnc;0.66;0.58;28;14.30;;12.25;11.50;11.23;22.36;Sab;;;;;;;;2MASX J09162170+1743380,IRAS 09135+1756,MCG +03-24-023,PGC 026160,SDSS J091621.68+174337.9,SDSS J091621.69+174338.0,UGC 04891;;; -NGC2798;G;09:17:22.79;+41:59:59.0;UMa;2.43;0.83;154;13.04;12.32;10.10;9.39;9.03;23.21;Sa;;;;;;;;2MASX J09172295+4159589,IRAS 09141+4212,MCG +07-19-055,PGC 026232,SDSS J091722.80+420000.6,UGC 04905;;; -NGC2799;G;09:17:31.03;+41:59:38.7;UMa;1.76;0.47;122;14.32;13.71;11.92;11.31;11.15;23.58;SBd;;;;;;;;2MASX J09173103+4159388,MCG +07-19-056,PGC 026238,SDSS J091730.99+415938.4,UGC 04909;;; -NGC2800;G;09:18:35.22;+52:30:52.1;UMa;1.42;0.87;17;14.00;;10.72;10.05;9.72;23.52;E;;;;;;;;2MASX J09183516+5230524,MCG +09-15-117,PGC 026302,SDSS J091835.21+523052.0,UGC 04920;;; -NGC2801;G;09:16:44.19;+19:56:08.6;Cnc;0.96;0.78;51;15.40;;12.87;12.26;11.98;23.78;Sc;;;;;;;;2MASX J09164417+1956087,MCG +03-24-025,PGC 026183,SDSS J091644.19+195608.5,SDSS J091644.19+195608.6,UGC 04899;;; -NGC2802;G;09:16:41.43;+18:57:48.5;Cnc;1.10;0.56;132;14.30;;11.74;11.17;10.88;23.86;S0-a;;;;;;;;2MASX J09164141+1857487,MCG +03-24-026,PGC 026177,SDSS J091641.42+185748.4,SDSS J091641.42+185748.5,UGC 04897;;; -NGC2803;G;09:16:43.87;+18:57:16.5;Cnc;0.98;0.72;138;14.30;;11.44;10.73;10.45;23.85;E-S0;;;;;;;;2MASX J09164387+1857167,MCG +03-24-027,PGC 026181,SDSS J091643.86+185716.5,UGC 04898;;; -NGC2804;G;09:16:50.01;+20:11:54.6;Cnc;1.39;1.24;56;14.00;;10.67;9.93;9.68;23.42;S0;;;;;;2455;;2MASX J09165000+2011548,MCG +03-24-028,PGC 026196,SDSS J091650.00+201154.5,SDSS J091650.01+201154.6,UGC 04901;;; -NGC2805;G;09:20:20.41;+64:06:10.0;UMa;3.39;2.76;154;11.90;;10.87;10.37;10.14;23.00;SABc;;;;;;;;2MASX J09202040+6406099,IRAS 09162+6418,MCG +11-12-003,PGC 026410,SDSS J092020.38+640610.7,UGC 04936;;; -NGC2806;*;09:16:56.79;+20:04:14.2;Cnc;;;;;;;;;;;;;;;;;;SDSS J091656.78+200414.2;;; -NGC2807A;G;09:16:57.68;+20:01:44.6;Cnc;0.56;0.36;81;15.10;;12.70;11.93;11.71;22.75;Sbc;;;;;;;;2MASX J09165767+2001448,MCG +03-24-030,PGC 026212,SDSS J091657.68+200144.5,SDSS J091657.68+200144.6;;; -NGC2807B;G;09:17:00.66;+20:02:11.4;Cnc;0.82;0.60;165;15.10;;11.89;11.16;10.84;23.45;S0;;;;;;;;2MASX J09170065+2002108,MCG +03-24-031,PGC 026213,SDSS J091700.66+200211.4;;; -NGC2808;GCl;09:12:02.54;-64:51:46.2;Car;9.00;;;7.77;5.69;;;;;;;;;;;;;MWSC 1636;;; -NGC2809;G;09:17:06.92;+20:04:10.9;Cnc;1.24;1.08;162;13.90;;10.93;10.26;9.93;23.20;S0;;;;;;;;2MASX J09170689+2004108,MCG +03-24-033,PGC 026220,SDSS J091706.91+200410.8,SDSS J091706.92+200410.9,SDSS J091706.93+200410.9,UGC 04910;;Incorrectly called NGC 2806 in 1980ApJ...235...347S.; -NGC2810;G;09:22:04.50;+71:50:38.5;UMa;1.69;1.69;130;13.40;;10.06;9.40;9.12;23.27;E;;;;;2810A;;;2MASX J09220451+7150383,MCG +12-09-042,PGC 026514,UGC 04954;;; -NGC2811;G;09:16:11.11;-16:18:45.8;Hya;3.05;1.03;20;12.66;;8.94;8.23;7.98;22.93;SBa;;;;;;;;2MASX J09161109-1618457,IRAS 09138-1606,MCG -03-24-003,PGC 026151,UGCA 155;;; -NGC2812;G;09:17:40.79;+19:55:08.0;Cnc;0.75;0.23;154;15.40;;12.98;12.21;12.00;23.18;Sbc;;;;;;;;2MASX J09174075+1955081,PGC 026242,SDSS J091740.78+195507.9,SDSS J091740.79+195508.0;;; -NGC2813;G;09:17:45.45;+19:54:23.8;Cnc;1.02;0.82;146;15.40;;11.59;10.84;10.59;23.73;S0;;;;;;;;2MASX J09174543+1954240,MCG +03-24-037,PGC 026252,SDSS J091745.44+195423.7,SDSS J091745.45+195423.8,UGC 04916;;; -NGC2814;G;09:21:11.48;+64:15:11.5;UMa;1.05;0.23;179;14.00;;12.06;11.35;11.08;22.16;SBb;;;;;;;;2MASX J09211152+6415117,IRAS 09170+6428,MCG +11-12-004,PGC 026469,UGC 04952;;; -NGC2815;G;09:16:19.75;-23:37:59.7;Hya;3.51;1.41;13;12.70;11.84;9.20;8.48;8.25;23.60;SBb;;;;;;;;2MASX J09161974-2337596,ESO 497-032,ESO-LV 497-0320,IRAS 09140-2325,MCG -04-22-006,PGC 026157,UGCA 156;;; -NGC2816;Dup;09:07:33.53;+60:28:45.6;UMa;;;;;;;;;;;;;;;2742;;;;;; -NGC2817;G;09:17:10.53;-04:45:07.6;Hya;1.37;1.27;0;13.30;;11.30;10.72;10.39;23.04;Sc;;;;;;;;2MASX J09171052-0445076,IRAS 09146-0432,MCG -01-24-006,PGC 026223;;; -NGC2818;PN;09:16:01.50;-36:37:37.0;Pyx;0.83;;;13.00;11.60;;;;;;;19.45;;;;;;ESO 372-013,IRAS 09140-3625,PN G261.9+08.5;;Open cluster and planetary nebula.; -NGC2818A;Cl+N;09:16:06.13;-36:37:36.9;Pyx;6.90;;;12.50;;;;;;;;;;;;;;MWSC 1644;;; -NGC2819;G;09:18:09.29;+16:11:53.2;Cnc;1.44;1.08;57;14.30;;10.85;10.14;9.88;23.89;E;;;;;;;;2MASX J09180931+1611526,MCG +03-24-040,PGC 026274,SDSS J091809.29+161153.1,UGC 04924;;; -NGC2820;G;09:21:45.58;+64:15:28.6;UMa;3.75;0.35;61;13.10;;11.05;10.26;9.92;23.02;SBc;;;;;;;;2MASX J09214556+6415288,IRAS 09177+6428,MCG +11-12-006,PGC 026498,UGC 04961;;; -NGC2820A;G;09:21:30.07;+64:14:19.4;UMa;0.47;0.16;9;14.90;;14.48;13.77;13.76;22.08;Sa;;;;;;2458;;2MASX J09213008+6414195,MCG +11-12-005,PGC 026485,SDSS J092130.07+641419.3,UGCA 159;;; -NGC2821;G;09:16:47.98;-26:48:58.6;Pyx;2.10;0.44;103;13.87;;10.59;9.83;9.50;23.10;Sbc;;;;;;;;2MASX J09164799-2648584,ESO 497-034,ESO-LV 497-0340,IRAS 09145-2636,MCG -04-22-007,PGC 026192;;; -NGC2822;G;09:13:49.72;-69:38:41.4;Car;3.96;2.72;94;11.64;12.01;;;;23.39;E;;;;;;;;ESO 061-004,ESO-LV 61-0040,IRAS 09132-6926,PGC 026026;;Within halo of bright star beta Car.; -NGC2823;G;09:19:17.46;+34:00:29.4;Lyn;1.03;0.62;32;15.70;;12.13;11.61;11.23;23.93;Sa;;;;;;;;2MASX J09191741+3400290,MCG +06-21-008,PGC 026339,PGC 026340,SDSS J091917.45+340029.4,SDSS J091917.46+340029.4,UGC 04935;;; -NGC2824;G;09:19:02.23;+26:16:11.9;Cnc;0.97;0.57;159;14.30;;11.08;10.40;10.13;22.87;S0;;;;;;;;2MASX J09190222+2616119,IRAS 09160+2628,MCG +04-22-031,PGC 026330,SDSS J091902.22+261611.9,UGC 04933;;; -NGC2825;G;09:19:22.44;+33:44:34.0;Lyn;1.10;0.55;86;15.30;;11.92;11.25;11.05;23.61;Sa;;;;;;;;2MASX J09192241+3344340,MCG +06-21-010,PGC 026345,SDSS J091922.43+334433.9,SDSS J091922.44+334433.9,SDSS J091922.44+334434.0;;; -NGC2826;G;09:19:24.17;+33:37:26.4;Lyn;1.47;0.22;141;14.60;;11.22;10.54;10.29;23.85;S0-a;;;;;;;;2MASX J09192419+3337260,MCG +06-21-011,PGC 026346,SDSS J091924.16+333726.4,SDSS J091924.17+333726.4,UGC 04939;;; -NGC2827;G;09:19:19.01;+33:52:50.9;Lyn;1.02;0.38;5;15.60;;12.40;11.57;11.26;23.70;Sab;;;;;;2460;;2MASX J09191903+3352510,MCG +06-21-009,PGC 026342,SDSS J091919.00+335250.8,SDSS J091919.01+335250.8,SDSS J091919.01+335250.9;;; -NGC2828;G;09:19:34.83;+33:53:17.1;Lyn;0.72;0.44;44;15.70;;12.60;11.96;11.63;23.64;S0;;;;;;;;2MASX J09193485+3353170,PGC 026365,SDSS J091934.83+335317.1;;; -NGC2829;GPair;09:19:30.70;+33:38:54.0;Lyn;0.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC2829 NED01;G;09:19:30.31;+33:38:54.5;Lyn;0.48;0.38;30;17.11;;13.64;13.08;12.74;23.98;E;;;;;;;;2MASX J09193027+3338540,PGC 026356,SDSS J091930.30+333854.4;;NGC identification is not certain.; -NGC2829 NED02;G;09:19:31.14;+33:38:52.0;Lyn;0.40;0.30;176;16.67;;;;;23.72;E;;;;;;;;SDSS J091931.13+333852.0;;NGC identification is not certain.;B-Mag taken from LEDA -NGC2830;G;09:19:41.41;+33:44:17.3;Lyn;1.24;0.24;112;15.40;;11.76;11.04;10.73;24.00;S0-a;;;;;;;;2MASX J09194142+3344170,MCG +06-21-014,PGC 026371,SDSS J091941.40+334417.3,SDSS J091941.41+334417.3,UGC 04941;;; -NGC2831;G;09:19:45.49;+33:44:42.0;Lyn;0.89;0.66;2;14.27;14.70;;;;23.02;E;;;;;;;;MCG +06-21-013,PGC 026376,SDSS J091945.48+334441.9,SDSS J091945.49+334441.9,SDSS J091945.49+334442.0,UGC 04942 NOTES01;;; -NGC2832;G;09:19:46.86;+33:44:59.1;Lyn;3.20;2.07;172;13.30;13.17;9.67;8.99;8.70;24.16;E;;;;;;;;2MASX J09194687+3344594,MCG +06-21-015,PGC 026377,SDSS J091946.86+334459.0,UGC 04942;;; -NGC2833;G;09:19:57.86;+33:55:38.8;Lyn;1.14;0.54;165;15.60;;11.88;11.10;10.77;23.94;Sa;;;;;;;;2MASX J09195785+3355384,PGC 026389,SDSS J091957.85+335538.7,SDSS J091957.86+335538.7;;; -NGC2834;G;09:20:02.52;+33:42:37.7;Lyn;0.83;0.66;57;15.60;;12.28;11.60;11.38;23.82;E;;;;;;;;2MASX J09200250+3342374,MCG +06-21-021,PGC 026400,SDSS J092002.51+334237.7,SDSS J092002.52+334237.7;;; -NGC2835;G;09:17:52.91;-22:21:16.8;Hya;6.43;3.72;179;11.03;;8.81;8.14;7.92;23.39;Sc;;;;;;;;2MASX J09175290-2221168,ESO 564-035,ESO-LV 564-0350,IRAS 09156-2208,MCG -04-22-008,PGC 026259,UGCA 157;;Extended HIPASS source; -NGC2836;G;09:13:44.60;-69:20:05.1;Car;1.66;0.59;111;12.64;;;;;21.91;Sbc;;;;;;;;ESO 061-003,ESO-LV 61-0030,IRAS 09131-6907,PGC 026017;;; -NGC2837;**;09:18:23.37;-16:28:54.2;Hya;;;;;;;;;;;;;;;;;;;;; -NGC2838;G;09:20:43.04;+39:18:56.7;Lyn;1.28;1.08;123;14.70;;11.04;10.30;10.04;23.78;E;;;;;;;;2MASX J09204305+3918568,MCG +07-19-061,PGC 026434,SDSS J092043.02+391856.6,SDSS J092043.03+391856.6,SDSS J092043.03+391856.7,SDSS J092043.04+391856.7;;; -NGC2839;G;09:20:36.33;+33:39:02.4;Lyn;1.23;1.17;165;15.30;;11.40;10.69;10.43;24.06;E;;;;;;;;2MASX J09203631+3339030,MCG +06-21-023,PGC 026425,SDSS J092036.32+333902.4,SDSS J092036.33+333902.4;;; -NGC2840;G;09:20:52.72;+35:22:05.8;Lyn;1.05;0.89;107;14.80;;11.60;10.96;10.84;23.27;Sbc;;;;;;;;2MASX J09205267+3522062,IRAS 09178+3534,MCG +06-21-025,PGC 026445,SDSS J092052.71+352205.8,SDSS J092052.72+352205.8,UGC 04960;;; -NGC2841;G;09:22:02.63;+50:58:35.5;UMa;6.90;3.31;147;10.09;9.22;7.01;6.30;6.06;22.48;SBb;;;;;;;;2MASX J09220265+5058353,IRAS 09185+5111,MCG +09-16-005,PGC 026512,SDSS J092202.66+505835.7,UGC 04966;;; -NGC2842;G;09:15:36.43;-63:04:10.7;Car;2.25;1.63;107;13.28;;9.80;9.02;8.77;23.80;S0-a;;;;;;;;2MASX J09153646-6304106,ESO 091-004,ESO-LV 91-0040,IRAS 09144-6251,PGC 026114;;; -NGC2843;G;09:20:28.78;+18:55:34.4;Cnc;0.47;0.26;65;;;13.11;12.54;12.20;23.56;S0-a;;;;;;;;2MASX J09202879+1855346,PGC 026414,SDSS J092028.77+185534.3,SDSS J092028.77+185534.4,SDSS J092028.78+185534.4;;; -NGC2844;G;09:21:48.01;+40:09:04.5;Lyn;1.77;0.82;11;13.60;;10.81;10.20;9.89;23.36;Sa;;;;;;;;2MASX J09214802+4009043,IRAS 09186+4021,MCG +07-19-064,PGC 026501,SDSS J092147.78+400900.6,SDSS J092147.79+400900.6,SDSS J092148.00+400904.5,UGC 04971;;SDSS position is 4.6 arcsec southwest of the nucleus.; -NGC2845;G;09:18:36.71;-38:00:36.3;Vel;1.87;1.30;69;13.67;;9.31;8.55;8.26;23.21;S0-a;;;;;;;;2MASX J09183669-3800363,ESO 314-010,ESO-LV 314-0100,IRAS 09166-3747,MCG -06-21-002,PGC 026306;;; -NGC2846;**;09:19:40.47;-14:40:34.6;Hya;;;;;;;;;;;;;;;;;;;;; -NGC2847;HII;09:20:08.53;-16:31:05.9;Hya;;;;;;;;;;;;;;;;;;;;; -NGC2848;G;09:20:09.83;-16:31:33.8;Hya;2.69;2.02;29;12.20;;10.20;9.72;9.44;23.10;SABc;;;;;;;;2MASX J09200989-1631334,IRAS 09178-1618,MCG -03-24-007,PGC 026404,UGCA 160;;HOLM 128B is a star.; -NGC2849;OCl;09:19:22.87;-40:31:13.4;Vel;2.40;;;;12.50;;;;;;;;;;;;;ESO 314-013,MWSC 1648;;; -NGC2850;G;09:20:57.01;-04:56:24.3;Hya;0.90;0.64;17;14.75;;11.38;10.63;10.38;23.54;S0;;;;;;;;2MASX J09205699-0456242,PGC 026452;;; -NGC2851;G;09:20:30.23;-16:29:43.0;Hya;1.43;0.53;8;15.00;;10.99;10.30;10.04;23.78;S0;;;;;;;;2MASX J09203020-1629425,MCG -03-24-008,PGC 026422;;; -NGC2852;G;09:23:14.59;+40:09:49.7;Lyn;0.94;0.89;140;14.00;;11.01;10.36;10.10;22.71;SABa;;;;;;;;2MASX J09231456+4009499,MCG +07-19-065,PGC 026571,SDSS J092314.59+400949.7,UGC 04986;;; -NGC2853;G;09:23:17.33;+40:12:00.2;Lyn;1.67;0.96;25;14.60;;12.19;11.59;11.42;24.29;S0-a;;;;;;;;2MASX J09231734+4012009,MCG +07-19-066,PGC 026580,SDSS J092317.33+401200.1,SDSS J092317.34+401200.2,SDSS J092317.34+401200.3,UGC 04987;;; -NGC2854;G;09:24:03.11;+49:12:14.9;UMa;1.28;0.56;52;13.82;;11.05;10.33;10.10;22.58;SBb;;;;;;;;2MASX J09240315+4912156,IRAS 09206+4925,MCG +08-17-092,PGC 026631,SDSS J092402.83+491213.7,SDSS J092403.10+491214.9,UGC 04995;;Called 'Arp 285a' in UGC notes. Multiple SDSS entries describe this object.; -NGC2855;G;09:21:27.49;-11:54:34.2;Hya;3.45;1.85;120;13.24;12.23;8.91;8.21;7.97;23.84;S0-a;;;;;;;;2MASX J09212749-1154341,IRAS 09190-1141,MCG -02-24-015,PGC 026483,UGCA 161;;; -NGC2856;G;09:24:16.01;+49:14:57.1;UMa;1.22;0.58;132;14.10;;10.74;10.01;9.71;22.56;SBbc;;;;;;;;2MASX J09241600+4914567,IRAS 09208+4927,MCG +08-17-093,PGC 026648,SDSS J092416.00+491457.0,UGC 04997;;Called 'Arp 285b' in UGC notes.; -NGC2857;G;09:24:37.72;+49:21:25.4;UMa;1.89;1.51;90;12.90;12.27;11.27;10.57;10.75;22.92;Sc;;;;;;;;2MASX J09243769+4921256,IRAS 09212+4934,MCG +08-17-095,PGC 026666,SDSS J092437.71+492125.7,SDSS J092437.72+492125.4,UGC 05000;;UGC misprints R.A. as 09h21.1m. UGC galactic coordinates are correct.; -NGC2858;G;09:22:55.01;+03:09:25.0;Hya;1.76;0.84;116;13.80;;10.80;10.12;9.82;23.72;S0-a;;;;;;;;2MASX J09225500+0309249,MCG +01-24-017,PGC 026556,SDSS J092255.00+030924.9,SDSS J092255.01+030924.9,SDSS J092255.01+030925.0,UGC 04989;;; -NGC2859;G;09:24:18.53;+34:30:48.6;LMi;3.19;2.78;85;11.80;;8.91;8.23;8.04;23.11;S0-a;;;;;;;;2MASX J09241854+3430481,MCG +06-21-030,PGC 026649,SDSS J092418.53+343048.5,UGC 05001;;; -NGC2860;G;09:24:53.21;+41:03:36.7;Lyn;1.31;0.57;95;14.80;;11.58;10.80;10.44;23.46;SBa;;;;;;;;2MASX J09245319+4103366,IRAS 09216+4116,MCG +07-20-003,PGC 026685,SDSS J092453.21+410336.6,SDSS J092453.21+410336.7,UGC 05007;;; -NGC2861;G;09:23:36.50;+02:08:11.3;Hya;1.28;1.17;50;13.74;13.06;11.09;10.40;10.12;23.11;SBbc;;;;;;;;2MASX J09233646+0208113,IRAS 09210+0220,MCG +00-24-010,PGC 026607,SDSS J092336.49+020811.2,SDSS J092336.50+020811.2,SDSS J092336.50+020811.3,UGC 04999;;; -NGC2862;G;09:24:55.11;+26:46:28.8;Leo;2.64;0.50;115;13.80;;10.27;9.57;9.27;23.32;SBbc;;;;;;;;2MASX J09245507+2646286,MCG +05-22-045,PGC 026690,SDSS J092455.11+264628.8,UGC 05010;;; -NGC2863;G;09:23:36.56;-10:25:59.6;Hya;1.37;1.18;170;13.40;;11.64;10.97;10.80;;Sm;;;;;2869;;;2MASX J09233654-1026014,IRAS 09211-1012,MCG -02-24-018,PGC 026609;;GSC 5463-0962 (mag. 15) near edge 22 arcsec northwest of nucleus.; -NGC2864;G;09:24:15.39;+05:56:28.2;Hya;0.71;0.47;4;14.80;;12.47;11.91;11.40;22.78;SBb;;;;;;;;2MASX J09241541+0556279,MCG +01-24-020 NED01,PGC 026644,SDSS J092415.39+055628.1,SDSS J092415.39+055628.2;;; -NGC2865;G;09:23:30.21;-23:09:41.2;Hya;2.44;2.03;155;12.39;11.43;9.36;8.71;8.46;23.24;E;;;;;;;;2MASX J09233020-2309413,ESO 498-001,ESO-LV 498-0010,MCG -04-22-011,PGC 026601;;; -NGC2866;OCl;09:22:05.04;-51:06:09.4;Vel;2.70;;;;;;;;;;;;;;;;;MWSC 1658;;; -NGC2867;PN;09:21:24.97;-58:18:42.0;Car;0.23;;;9.70;9.70;;;;;;;16.62;;;;;HD 81119;2MASX J09212497-5818422,C 090,ESO 126-008,IRAS 09200-5805,PN G278.1-05.9;;; -NGC2868;G;09:23:27.22;-10:25:46.2;Hya;1.14;0.57;70;15.21;;11.88;11.20;11.01;24.23;E-S0;;;;;;;;2MASX J09232719-1025464,PGC 026598;;; -NGC2869;Dup;09:23:36.56;-10:25:59.6;Hya;;;;;;;;;;;;;;;2863;;;;;; -NGC2870;G;09:27:53.74;+57:22:31.8;UMa;2.44;0.66;121;13.83;;11.29;10.59;10.29;23.64;SBbc;;;;;;;;2MASX J09275371+5722316,IRAS 09241+5735,MCG +10-14-013,PGC 026856,SDSS J092753.72+572232.0,SDSS J092753.72+572234.6,SDSS J092753.74+572231.7,SDSS J092753.74+572231.8,UGC 05034;;; -NGC2871;*;09:25:39.54;+11:26:39.6;Leo;;;;;;;;;;;;;;;;;;SDSS J092539.53+112639.6;;; -NGC2872;G;09:25:42.54;+11:25:55.7;Leo;1.75;1.55;161;13.00;;9.66;9.02;8.73;22.93;E;;;;;;;;2MASX J09254253+1125557,MCG +02-24-008,PGC 026733,SDSS J092542.53+112555.7,UGC 05018;;; -NGC2873;G;09:25:48.50;+11:27:15.2;Leo;0.73;0.41;118;15.30;;13.05;12.29;12.04;23.85;Sab;;;;;;;;2MASX J09254849+1127151,MCG +02-24-009,PGC 026742,SDSS J092548.49+112715.2;;; -NGC2874;G;09:25:47.33;+11:25:28.5;Leo;2.04;0.68;38;13.50;;9.53;9.17;8.84;22.76;Sbc;;;;;;;;2MASX J09254734+1125281,IRAS 09230+1138,MCG +02-24-010,PGC 026740,SDSS J092547.32+112528.4,SDSS J092547.33+112528.4,SDSS J092547.33+112528.5,UGC 05021;;; -NGC2875;Other;09:25:48.81;+11:25:53.9;Leo;;;;;;;;;;;;;;;;;;;;This is the northeastern arm of NGC 2874.; -NGC2876;G;09:25:13.77;-06:42:59.7;Hya;1.73;0.98;91;14.50;;10.87;10.10;10.01;24.04;S0;;;;;;;;2MASX J09251378-0642596,MCG -01-24-016,PGC 026710;;; -NGC2877;G;09:25:46.98;+02:13:44.8;Hya;0.67;0.64;165;14.70;;11.84;11.26;10.96;22.53;S0-a;;;;;;;;2MASX J09254699+0213444,IRAS 09231+0226,MCG +00-24-015,PGC 026738,SDSS J092546.97+021344.8,SDSS J092547.15+021349.2,SDSS J092547.16+021349.4;;Multiple SDSS entries describe this object.; -NGC2878;G;09:25:47.46;+02:05:22.6;Hya;1.04;0.37;173;14.90;;11.52;10.83;10.49;23.31;SABa;;;;;;;;2MASX J09254746+0205224,MCG +00-24-014,PGC 026739,SDSS J092547.46+020522.5,SDSS J092547.46+020522.6,UGC 05022;;; -NGC2879;Other;09:25:22.52;-11:39:05.4;Hya;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC2880;G;09:29:34.56;+62:29:26.0;UMa;2.33;1.40;142;12.60;;9.62;8.98;8.68;23.08;E-S0;;;;;;;;2MASX J09293461+6229262,MCG +10-14-015,PGC 026939,SDSS J092934.55+622925.9,UGC 05051;;; -NGC2881;GPair;09:25:54.20;-11:59:38.0;Hya;1.20;;;;;;;;;;;;;;;;;MCG -02-24-021;;;Diameter of the group inferred by the author. -NGC2881 NED01;G;09:25:53.75;-11:59:31.7;Hya;;;;;;;;;;;;;;;;;;MCG -02-24-021 NED01;;; -NGC2881 NED02;G;09:25:54.69;-11:59:43.9;Hya;1.17;0.63;167;14.00;;11.95;11.48;11.32;24.13;;;;;;;;;2MASX J09255473-1159468,IRAS 09234-1146,MCG -02-24-021 NED02,PGC 026747;;; -NGC2882;G;09:26:36.14;+07:57:16.1;Leo;1.49;0.75;84;13.50;;10.89;10.16;9.89;22.58;SABc;;;;;;;;2MASX J09263612+0757163,IRAS 09239+0810,MCG +01-24-021,PGC 026781,SDSS J092636.14+075716.1,UGC 05030;;Multiple SDSS entries describe this object.; -NGC2883;G;09:25:18.42;-34:06:11.7;Pyx;2.02;0.80;178;13.10;;;;;23.09;IB;;;;;;;;ESO 372-024,IRAS 09232-3353,PGC 026713;;; -NGC2884;G;09:26:24.45;-11:33:20.1;Hya;2.16;0.76;173;13.40;;10.50;9.80;9.49;23.71;S0-a;;;;;;;;2MASX J09262451-1133207,MCG -02-24-022,PGC 026773;;; -NGC2885;G;09:27:18.51;+23:01:12.4;Leo;1.26;0.82;79;16.99;16.25;11.40;10.66;10.39;23.85;S0-a;;;;;;0538;;2MASX J09271849+2301121,MCG +04-22-058,PGC 026811,SDSS J092718.50+230112.3,SDSS J092718.51+230112.4,UGC 05037;;; -NGC2886;Other;09:26:38.70;-21:44:16.1;Hya;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC2887;G;09:23:24.05;-63:48:45.2;Car;2.55;1.63;80;12.51;;9.04;8.32;8.03;23.52;E-S0;;;;;;;;2MASX J09232401-6348453,ESO 091-009,ESO-LV 91-0090,PGC 026592;;; -NGC2888;G;09:26:19.67;-28:02:06.3;Pyx;1.96;1.49;155;13.28;;10.35;9.65;9.43;23.85;E;;;;;;;;2MASX J09261966-2802061,ESO 434-002,ESO-LV 434-0020,MCG -05-23-001,PGC 026768;;; -NGC2889;G;09:27:12.59;-11:38:36.3;Hya;1.95;1.75;26;12.00;;9.65;9.01;8.77;22.60;SABc;;;;;;;;2MASX J09271259-1138363,IRAS 09247-1125,MCG -02-24-026,PGC 026806;;; -NGC2890;G;09:26:29.84;-14:31:43.3;Hya;0.87;0.25;69;15.00;;11.74;11.00;10.85;23.75;E-S0;;;;;;;;2MASX J09262978-1431436,MCG -02-24-024,PGC 026778;;; -NGC2891;G;09:26:56.63;-24:46:58.9;Ant;1.60;1.52;0;13.30;;10.44;9.76;9.55;23.24;E-S0;;;;;;;;2MASX J09265663-2446588,ESO 498-008,ESO-LV 498-0080,MCG -04-23-003,PGC 026794;;; -NGC2892;G;09:32:52.93;+67:37:02.6;UMa;1.40;1.40;0;14.40;;10.40;9.65;9.35;23.96;E;;;;;;;;2MASX J09325289+6737026,MCG +11-12-015,PGC 027111,SDSS J093252.93+673702.7,UGC 05073;;; -NGC2893;G;09:30:16.96;+29:32:23.9;Leo;1.02;0.82;83;13.60;13.11;11.24;10.51;10.31;22.57;S0-a;;;;;;;;2MASX J09301694+2932239,IRAS 09273+2945,MCG +05-23-005,PGC 026979,SDSS J093016.96+293223.8,UGC 05060;;; -NGC2894;G;09:29:30.24;+07:43:07.8;Leo;1.90;0.96;29;13.40;;10.11;9.40;9.11;23.12;Sa;;;;;;;;2MASX J09293024+0743077,MCG +01-24-024,PGC 026932,UGC 05056;;; -NGC2895;G;09:32:25.05;+57:28:58.4;UMa;0.91;0.80;65;14.70;;11.83;11.09;10.84;22.98;Sbc;;;;;;;;2MASX J09322512+5728588,IRAS 09288+5742,MCG +10-14-018,PGC 027092,SDSS J093225.04+572858.4,SDSS J093225.04+572858.7,SDSS J093225.05+572858.4;;; -NGC2896;G;09:30:16.97;+23:39:47.0;Leo;1.20;1.20;90;14.80;;11.60;10.94;10.82;23.89;S0-a;;;;;;;;2MASX J09301691+2339470,MCG +04-23-007,PGC 026985,SDSS J093016.96+233947.0;;; -NGC2897;G;09:29:45.72;+02:12:24.5;Hya;0.84;0.62;177;15.52;;11.78;11.12;10.81;24.33;S0;;;;;;;;2MASX J09294572+0212252,PGC 026949;;; -NGC2898;G;09:29:46.34;+02:03:51.7;Hya;1.04;0.67;124;14.80;;11.08;10.39;10.16;23.55;S0-a;;;;;;;;2MASX J09294632+0203522,MCG +00-24-018,PGC 026950,SDSS J092946.33+020351.6,SDSS J092946.34+020351.6,SDSS J092946.34+020351.7;;; -NGC2899;PN;09:27:02.96;-56:06:21.7;Vel;1.50;;;12.20;11.80;13.94;13.59;13.60;;;;16.40;15.90;;;;;ESO 166-013,PN G277.1-03.8;;; -NGC2900;G;09:30:15.19;+04:08:39.2;Hya;0.99;0.78;86;14.60;;13.04;12.36;12.23;23.22;SBc;;;;;;;;2MASX J09301525+0408402,IRAS 09276+0421,MCG +01-24-026,PGC 026974,SDSS J093015.17+040838.4,SDSS J093015.18+040839.1,SDSS J093015.19+040839.2,UGC 05065;;; -NGC2901;Other;09:32:34.25;+31:06:42.1;Leo;;;;;;;;;;;;;;;;;;;;Nothing at this positionon the POSS.; -NGC2902;G;09:30:52.89;-14:44:08.8;Hya;1.72;1.41;22;13.10;;10.07;9.35;9.11;23.15;S0;;;;;;;;2MASX J09305289-1444089,MCG -02-24-030,PGC 027004;;; -NGC2903;G;09:32:10.11;+21:30:03.0;Leo;11.94;5.28;22;9.75;9.07;6.95;6.33;6.04;23.02;Sbc;;;;;2905;;;2MASX J09321011+2130029,IRAS 09293+2143,MCG +04-23-009,PGC 027077,UGC 05079;;; -NGC2904;G;09:30:17.00;-30:23:06.1;Ant;1.47;1.09;89;13.69;;10.20;9.50;9.21;23.09;E-S0;;;;;;;;2MASX J09301698-3023061,ESO 434-006,ESO-LV 434-0060,MCG -05-23-003,PGC 026981;;; -NGC2905;Dup;09:32:10.11;+21:30:03.0;Leo;;;;;;;;;;;;;;;2903;;;;;; -NGC2906;G;09:32:06.22;+08:26:30.4;Leo;1.36;0.81;71;13.10;;10.10;9.42;9.11;22.13;Sc;;;;;;;;2MASX J09320624+0826308,IRAS 09294+0839,MCG +02-25-001,PGC 027074,SDSS J093206.21+082630.3,SDSS J093206.22+082630.3,UGC 05081;;; -NGC2907;G;09:31:36.72;-16:44:04.8;Hya;2.82;2.06;112;13.15;12.06;9.17;8.49;8.22;23.54;Sa;;;;;;;;2MASX J09313661-1644051,IRAS 09292-1630,MCG -03-25-002,PGC 027048;;; -NGC2908;G;09:43:31.45;+79:42:04.5;Dra;0.74;0.52;145;14.20;;12.37;11.93;11.38;22.20;Sbc;;;;;;;;2MASX J09433142+7942044,IRAS 09375+7955,MCG +13-07-034,PGC 027831,UGC 05152;;; -NGC2909;**;09:36:59.90;+65:56:26.0;UMa;;;;;;;;;;;;;;;;;;;;; -NGC2910;OCl;09:30:29.02;-52:54:50.4;Vel;4.80;;;7.49;7.20;;;;;;;;;;;;;MWSC 1679;;; -NGC2911;G;09:33:46.11;+10:09:08.8;Leo;3.46;2.13;135;14.96;13.83;9.62;8.97;8.71;24.13;S0;;;;;;;;2MASX J09334609+1009093,MCG +02-25-003,PGC 027159,SDSS J093346.08+100908.9,SDSS J093346.08+100909.0,SDSS J093346.09+100909.0,UGC 05092;;; -NGC2912;*;09:33:56.88;+10:11:32.0;Leo;;;;;;;;;;;;;;;;;;SDSS J093356.88+101131.9;;; -NGC2913;G;09:34:02.72;+09:28:45.1;Leo;1.12;0.69;132;14.10;;11.86;11.25;10.92;22.84;Sc;;;;;;;;2MASX J09340270+0928455,MCG +02-25-005,PGC 027184,SDSS J093402.71+092845.1,SDSS J093402.72+092845.1,UGC 05095;;; -NGC2914;G;09:34:02.78;+10:06:30.9;Leo;0.95;0.58;12;13.70;;10.80;10.15;9.93;22.39;SBab;;;;;;;;2MASX J09340276+1006315,MCG +02-25-006,PGC 027185,SDSS J093402.77+100631.3,SDSS J093402.78+100631.2,SDSS J093402.78+100631.4,UGC 05096;;; -NGC2915;G;09:26:11.53;-76:37:34.8;Cha;1.82;0.98;132;12.93;12.68;10.57;9.82;9.83;22.88;SBab;;;;;;;;2MASX J09261153-7637347,ESO 037-003,ESO-LV 37-0030,IRAS 09265-7624,PGC 026761;;Extended HIPASS source; -NGC2916;G;09:34:57.60;+21:42:19.0;Leo;2.40;1.59;16;12.74;12.05;10.11;9.43;9.12;23.09;Sb;;;;;;;;2MASX J09345756+2142189,IRAS 09321+2155,MCG +04-23-011,PGC 027244,SDSS J093457.60+214218.9,SDSS J093457.60+214219.0,UGC 05103;;; -NGC2917;G;09:34:26.90;-02:30:15.0;Hya;1.34;0.37;170;14.50;;11.01;10.28;10.05;23.65;S0-a;;;;;;;;2MASX J09342686-0230149,MCG +00-25-002,PGC 027207,SDSS J093426.90-023015.0,UGC 05098;;; -NGC2918;G;09:35:44.04;+31:42:19.7;Leo;1.56;1.06;66;13.60;;10.56;9.85;9.57;23.42;E;;;;;;;;2MASX J09354403+3142194,MCG +05-23-019,PGC 027282,SDSS J093544.04+314219.6,SDSS J093544.04+314219.7,UGC 05112;;; -NGC2919;G;09:34:47.52;+10:17:01.4;Leo;1.52;0.53;159;13.60;;11.12;10.36;10.05;22.56;SABb;;;;;;;;2MASX J09344754+1017014,IRAS 09321+1030,MCG +02-25-007,PGC 027232,SDSS J093447.51+101701.3,UGC 05102;;; -NGC2920;G;09:34:12.25;-20:51:32.6;Hya;0.86;0.61;121;13.93;;12.09;11.59;11.18;22.20;Sa;;;;;;;;2MASX J09341226-2051323,ESO 565-015,ESO-LV 565-0150,IRAS 09318-2038,PGC 027197;;; -NGC2921;G;09:34:31.60;-20:55:13.3;Hya;2.86;0.92;85;12.95;;10.16;9.54;9.23;23.55;SABa;;;;;;;;2MASX J09343160-2055134,ESO 565-017,ESO-LV 565-0170,IRAS 09321-2041,MCG -03-25-006,PGC 027214;;; -NGC2922;G;09:36:52.47;+37:41:41.6;LMi;1.07;0.45;99;14.60;;11.87;11.17;10.87;22.61;Sm;;;;;;;;2MASX J09365245+3741411,IRAS 09337+3755,MCG +06-21-057,PGC 027361,SDSS J093652.46+374141.6,SDSS J093652.47+374141.6,UGC 05118;;; -NGC2923;G;09:36:03.83;+16:45:37.4;Leo;0.53;0.31;28;15.20;;13.78;13.35;12.98;22.90;Sb;;;;;;;;2MASX J09360382+1645371,PGC 027306,SDSS J093603.82+164537.3,SDSS J093603.83+164537.4;;; -NGC2924;G;09:35:10.81;-16:23:54.2;Hya;2.04;1.62;142;13.00;;10.08;9.42;9.12;23.74;E;;;;;;;;2MASX J09351082-1623539,MCG -03-25-008,PGC 027253;;; -NGC2925;OCl;09:33:10.92;-53:23:45.5;Vel;7.50;;;;8.30;;;;;;;;;;;;;MWSC 1686;;; -NGC2926;G;09:37:31.01;+32:50:29.1;Leo;0.83;0.74;120;14.40;;12.04;11.44;11.05;22.74;SBbc;;;;;;;;2MASX J09373100+3250286,IRAS 09345+3304,MCG +06-21-060,PGC 027400,SDSS J093731.00+325029.0,SDSS J093731.01+325029.1,UGC 05125;;; -NGC2927;G;09:37:15.20;+23:35:26.2;Leo;1.31;0.78;155;14.10;;11.12;10.40;10.27;22.96;Sb;;;;;;;;2MASX J09371521+2335261,MCG +04-23-016,PGC 027385,SDSS J093715.19+233526.1,SDSS J093715.19+233526.2,UGC 05122;;; -NGC2928;G;09:37:10.08;+16:58:37.9;Leo;1.21;0.70;41;15.20;;11.85;11.04;10.83;23.88;SBa;;;;;;;;2MASX J09371010+1658380,IRAS 09343+1712,MCG +03-25-005,PGC 027380,SDSS J093710.07+165837.9,SDSS J093710.08+165837.9;;; -NGC2929;G;09:37:29.81;+23:09:42.0;Leo;1.10;0.38;144;14.40;;11.51;10.75;10.45;22.63;Sbc;;;;;;;;2MASX J09372979+2309421,IRAS 09346+2323,MCG +04-23-017,PGC 027398,SDSS J093729.91+230940.9,UGC 05126;;; -NGC2930;G;09:37:32.60;+23:12:09.0;Leo;0.50;0.22;142;14.70;;;;;21.81;Sbc;;;;;;;;MCG +04-23-018,PGC 027404;;; -NGC2931;G;09:37:37.65;+23:14:26.7;Leo;0.75;0.54;68;14.90;;12.07;11.33;11.06;22.76;Sb;;;;;;;;2MASX J09373771+2314270,MCG +04-23-019,PGC 027415,SDSS J093737.65+231426.6,SDSS J093737.65+231426.7,SDSS J093737.65+231426.8;;; -NGC2932;*Ass;09:35:51.62;-46:55:28.2;Vel;4.80;;;;;;;;;;;;;;;;;MWSC 1694;;Milky Way star cloud.; -NGC2933;G;09:37:55.00;+17:00:53.0;Leo;0.97;0.31;31;14.90;;12.89;12.20;12.09;23.07;Sbc;;;;;;;;MCG +03-25-008,PGC 027436,UGC 05132;;; -NGC2934;G;09:37:55.16;+17:03:16.2;Leo;0.44;0.31;7;;;13.58;12.84;12.54;23.73;SBa;;;;;;;;2MASX J09375514+1703168,PGC 1523531,SDSS J093755.15+170316.1,SDSS J093755.16+170316.2;;; -NGC2935;G;09:36:44.85;-21:07:41.3;Hya;4.21;3.16;164;11.84;10.04;9.30;8.64;8.31;23.90;Sb;;;;;;;;2MASX J09364485-2107411,ESO 565-023,ESO-LV 565-0230,IRAS 09344-2054,MCG -03-25-011,PGC 027351,TYC 6055-116-1,UGCA 169;;; -NGC2936;G;09:37:44.15;+02:45:38.9;Hya;0.94;0.52;78;13.90;13.06;10.87;10.14;9.85;22.64;E;;;;;;;;2MASX J09374413+0245394,MCG +01-25-006,PGC 027422,SDSS J093744.14+024538.9,UGC 05130;;CGCG & UGC call this a multiple system. MCG switches ids for N2936/7.; -NGC2937;G;09:37:45.03;+02:44:50.5;Hya;0.75;0.54;22;14.60;13.66;11.25;10.64;10.21;22.84;E;;;;;;;;2MASX J09374506+0244504,MCG +01-25-005,PGC 027423,SDSS J093745.02+024450.5,SDSS J093745.03+024450.5,UGC 05131;;MCG switches ids for N2936/7.; -NGC2938;G;09:38:23.79;+76:19:10.4;Dra;1.24;0.85;97;14.40;;13.04;12.63;12.02;23.26;Sc;;;;;;;;2MASX J09382377+7619106,MCG +13-07-032,PGC 027473,UGC 05115;;; -NGC2939;G;09:38:08.07;+09:31:17.5;Leo;2.12;0.74;154;13.50;;10.41;9.59;9.58;23.29;Sbc;;;;;;;;2MASX J09380786+0931258,IRAS 09354+0945,MCG +02-25-011,PGC 027451,SDSS J093807.89+093126.0,SDSS J093807.89+093126.1,SDSS J093808.07+093117.5,UGC 05134;;; -NGC2940;G;09:38:05.19;+09:37:00.2;Leo;0.97;0.77;91;14.80;;11.46;10.80;10.53;23.42;E-S0;;;;;;;;2MASX J09380516+0936598,MCG +02-25-012,PGC 027448,SDSS J093805.18+093700.1,SDSS J093805.19+093700.1,SDSS J093805.19+093700.2;;; -NGC2941;G;09:38:24.21;+17:02:40.0;Leo;0.70;0.57;167;15.10;;12.07;11.23;11.17;23.22;S0-a;;;;;;;;2MASX J09382422+1702398,MCG +03-25-009,PGC 027470,SDSS J093824.20+170240.0,SDSS J093824.21+170240.0;;; -NGC2942;G;09:39:07.96;+34:00:22.8;LMi;1.67;1.32;152;14.10;;11.37;10.74;10.89;23.12;Sc;;;;;;;;2MASX J09390795+3400223,IRAS 09361+3413,MCG +06-21-065,PGC 027527,SDSS J093907.95+340022.7,SDSS J093907.96+340022.7,SDSS J093907.96+340022.8,UGC 05140;;; -NGC2943;G;09:38:32.87;+17:01:52.7;Leo;2.16;1.08;128;14.00;;10.34;9.61;9.39;24.20;E;;;;;;;;2MASX J09383289+1701527,MCG +03-25-011,PGC 027482,SDSS J093832.86+170152.6,SDSS J093832.87+170152.6,SDSS J093832.87+170152.7,SDSS J093832.89+170152.6,UGC 05136;;; -NGC2944;GPair;09:39:18.20;+32:18:30.0;Leo;1.00;;;;;;;;;;;;;;;;;MCG +06-21-067,UGC 05144;;;Diameter of the group inferred by the author. -NGC2944 NED01;G;09:39:18.12;+32:18:37.6;Leo;0.91;0.29;100;14.70;;12.78;12.17;11.80;22.71;SBc;;;;;;;;2MASX J09391803+3218392,MCG +06-21-067 NED01,IRAS 09363+3232,PGC 027533,SDSS J093918.11+321837.6,UGC 05144 NED01;;; -NGC2944 NED02;G;09:39:19.61;+32:18:21.6;Leo;0.32;0.19;161;17.44;;;;;23.77;Sc;;;;;;;;MCG +06-21-067 NED02,PGC 1990710,UGC 05144 NED02;;;B-Mag taken from LEDA -NGC2945;G;09:37:41.13;-22:02:06.2;Hya;1.66;1.31;160;13.23;;10.43;9.76;9.49;23.18;E-S0;;;;;;;;2MASX J09374111-2202064,ESO 565-028,ESO-LV 565-0280,MCG -04-23-010,PGC 027418;;; -NGC2946;G;09:39:01.58;+17:01:31.2;Leo;1.10;0.34;15;14.80;;11.97;11.22;10.97;23.14;SBb;;;;;;;;2MASX J09390153+1701305,IRAS 09362+1715,MCG +03-25-013,PGC 027521,SDSS J093901.57+170131.1,UGC 05143;;; -NGC2947;G;09:36:05.79;-12:26:12.2;Hya;1.63;1.20;28;13.40;;10.89;10.19;9.96;;SABb;;;;;;0547,2494;;2MASX J09360583-1226120,IRAS 09336-1212,MCG -02-25-004,PGC 027309;;; -NGC2948;G;09:38:59.19;+06:57:19.6;Leo;1.43;0.78;1;13.80;;10.86;10.27;9.93;22.86;Sbc;;;;;;;;2MASX J09385921+0657199,IRAS 09363+0710,MCG +01-25-007,PGC 027518,SDSS J093859.18+065719.5,SDSS J093859.19+065719.6,UGC 05141;;; -NGC2949;GPair;09:39:56.25;+16:47:14.8;Leo;0.42;0.31;15;15.50;;13.01;12.34;11.96;;;;;;;;;;PGC 027579;;; -NGC2950;G;09:42:35.15;+58:51:04.6;UMa;2.62;1.65;142;11.80;;8.83;8.16;7.89;22.74;S0;;;;;;;;2MASX J09423511+5851043,MCG +10-14-032,PGC 027765,SDSS J094235.14+585104.5,UGC 05176;;; -NGC2951;GPair;09:39:40.40;-00:14:07.0;Hya;1.34;0.51;85;15.10;;11.48;10.89;10.50;23.69;E;;;;;;;;MCG +00-25-006,PGC 027562;;; -NGC2952;G;09:37:36.99;-10:11:00.2;Hya;0.80;0.55;90;15.33;;13.88;13.20;13.32;23.02;Sd;;;;;;;;2MASX J09373694-1011001,PGC 027411;;; -NGC2953;Other;09:40:19.04;+14:49:57.7;Leo;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC2954;G;09:40:24.07;+14:55:21.5;Leo;1.43;0.99;155;13.50;;10.36;9.68;9.43;22.95;E;;;;;;;;2MASX J09402405+1455215,MCG +03-25-019,PGC 027600,SDSS J094024.08+145521.4,UGC 05155;;; -NGC2955;G;09:41:16.62;+35:52:56.2;LMi;1.59;0.87;160;13.90;;10.99;10.30;10.04;22.89;SABb;;;;;;;;2MASX J09411660+3552556,IRAS 09382+3606,MCG +06-21-073,PGC 027666,SDSS J094116.61+355256.1,UGC 05166;;; -NGC2956;G;09:39:17.05;-19:06:03.9;Hya;0.86;0.38;58;15.29;;12.18;11.48;11.10;23.17;SBb;;;;;;;;2MASX J09391706-1906040,ESO 565-034,ESO-LV 565-0340,IRAS 09369-1852,PGC 027531;;; -NGC2957;GPair;09:47:16.90;+72:59:06.0;UMa;1.00;;;;;;;;;;;;;;;;;;;Misidentified as 'NGC2963?' in MCG, and as part of 'NGC2957?' in MCG errata.;Diameter of the group inferred by the author. -NGC2957 NED01;G;09:47:15.77;+72:59:09.8;UMa;0.91;0.33;;16.00;;;;;;E;;;;;;;;MCG +12-10-001,PGC 028113;;; -NGC2957A;G;09:47:18.00;+72:59:02.7;UMa;0.77;0.34;49;15.30;;11.82;11.11;10.85;23.19;Sa;;;;;2957 NED02;;;2MASX J09471828+7259026,MCG +12-10-002,PGC 028119;;; -NGC2958;G;09:40:41.62;+11:53:18.3;Leo;0.98;0.72;10;13.90;;11.17;10.48;10.20;22.48;Sbc;;;;;;;;2MASX J09404160+1153183,IRAS 09379+1206,MCG +02-25-015,PGC 027620,SDSS J094041.64+115318.1,UGC 05160;;; -NGC2959;G;09:45:08.97;+68:35:40.5;UMa;1.38;1.17;113;13.68;12.69;10.24;9.52;9.22;23.00;Sab;;;;;;;;2MASX J09450901+6835400,IRAS 09409+6849,MCG +12-09-062,PGC 027939,SDSS J094508.92+683540.6,SDSS J094508.96+683540.4,UGC 05202;;"MCG implies the R.A. is 08h41.1m; corrected in MCG errata."; -NGC2960;G;09:40:36.38;+03:34:37.2;Hya;1.11;0.86;40;13.60;;10.77;10.12;9.78;22.64;Sa;;;;;;;;2MASX J09403637+0334369,IRAS 09380+0348,MCG +01-25-009,PGC 027619,SDSS J094036.38+033437.2,UGC 05159;;; -NGC2961;G;09:45:22.47;+68:36:29.8;UMa;0.86;0.32;145;15.75;14.70;12.23;11.43;11.19;23.24;SABb;;;;;2959A;;;2MASX J09452254+6836299,MCG +12-09-063,PGC 027958,SDSS J094522.47+683629.7;;"MCG implies the R.A. is 08h41.3m; corrected in MCG errata."; -NGC2962;G;09:40:53.93;+05:09:56.9;Sex;2.31;1.16;2;13.10;;9.68;8.96;8.67;23.41;S0-a;;;;;;;;2MASX J09405390+0509569,MCG +01-25-011,PGC 027635,SDSS J094053.93+050956.8,SDSS J094053.93+050956.9,UGC 05167;;; -NGC2963;G;09:47:50.42;+72:57:51.8;UMa;1.18;0.64;158;14.30;;11.40;10.66;10.39;23.06;SBab;;;;;;;;2MASX J09475038+7257515,IRAS 09431+7311,MCG +12-10-003,PGC 028155,UGC 05222;;; -NGC2964;G;09:42:54.23;+31:50:50.6;Leo;2.92;2.18;97;12.00;;9.29;8.61;8.36;22.88;Sbc;;;;;;;;2MASX J09425425+3150499,IRAS 09399+3204,MCG +05-23-027,PGC 027777,UGC 05183;;One of two 6cm sources associated with [WB92] 0940+3206; -NGC2965;G;09:43:19.15;+36:14:52.1;LMi;1.30;0.92;77;17.17;16.38;11.08;10.37;10.15;23.60;S0;;;;;;;;2MASX J09431915+3614521,MCG +06-22-003,PGC 027813,SDSS J094319.14+361452.1,SDSS J094319.15+361452.1,SDSS J094319.15+361452.2,UGC 05191;;; -NGC2966;G;09:42:11.48;+04:40:23.3;Sex;2.12;0.68;76;14.00;;10.53;9.78;9.68;23.55;Sc;;;;;;;;2MASX J09421148+0440233,IRAS 09395+0454,MCG +01-25-013,PGC 027734,UGC 05181;;; -NGC2967;G;09:42:03.29;+00:20:11.2;Sex;2.14;2.01;135;12.10;;9.77;9.10;8.88;22.62;Sc;;;;;;;;2MASX J09420333+0020113,IRAS 09394+0033,MCG +00-25-007,PGC 027723,SDSS J094202.98+002021.0,SDSS J094203.29+002011.1,SDSS J094203.46+002012.5,UGC 05180;;; -NGC2968;G;09:43:12.01;+31:55:43.3;Leo;2.48;1.63;54;15.72;14.25;9.43;8.67;8.43;23.27;Sa;;;;;;;;2MASX J09431201+3155438,MCG +05-23-029,PGC 027800,SDSS J094312.00+315543.3,SDSS J094312.01+315543.3,UGC 05190;;; -NGC2969;G;09:41:54.50;-08:36:10.8;Sex;1.32;0.60;25;15.50;;11.42;10.80;10.37;22.49;Sc;;;;;;;;2MASX J09415451-0836110,IRAS 09394-0822,MCG -01-25-021,PGC 027714,TYC 5461-930-1;;; -NGC2970;G;09:43:31.07;+31:58:37.1;Leo;0.85;0.75;67;14.70;;11.89;11.22;11.04;22.93;E;;;;;;;;2MASX J09433110+3158364,MCG +05-23-030,PGC 027827,SDSS J094331.06+315837.1,SDSS J094331.07+315837.1;;; -NGC2971;G;09:43:46.12;+36:10:45.7;LMi;1.13;0.78;131;15.00;;12.15;11.54;11.16;23.52;Sb;;;;;;;;2MASX J09434612+3610461,MCG +06-22-005,PGC 027843,SDSS J094346.11+361045.7,SDSS J094346.12+361045.7,UGC 05197;;; -NGC2972;OCl;09:40:11.52;-50:19:15.4;Vel;3.60;;;10.72;9.90;;;;;;;;;;2999;;;MWSC 1699;;; -NGC2973;Other;09:41:34.75;-30:02:54.2;Ant;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC2974;G;09:42:33.28;-03:41:56.9;Sex;3.48;2.13;44;12.19;;7.25;6.86;6.26;23.42;E;;;;;;;;2MASX J09423326-0341568,IRAS 09400-0328,MCG +00-25-008,PGC 027762,UGCA 172;;; -NGC2975;G;09:41:16.07;-16:40:27.8;Hya;0.84;0.63;80;16.12;;12.37;11.65;11.46;24.10;E-S0;;;;;;;;2MASX J09411606-1640274,PGC 027664;;; -NGC2976;G;09:47:15.46;+67:54:59.0;UMa;5.77;3.01;143;11.03;10.16;8.35;7.72;7.52;22.81;Sc;;;;;;;;2MASX J09471545+6754589,IRAS 09431+6809,MCG +11-12-025,PGC 028120,SDSS J094715.31+675500.0,UGC 05221;;; -NGC2977;G;09:43:46.29;+74:51:36.8;Dra;2.08;1.05;145;12.70;;10.71;9.99;9.78;23.12;Sb;;;;;;;;2MASX J09434323+7452011,2MASX J09434671+7451344,IRAS 09388+7505,MCG +13-07-035,PGC 027845,UGC 05175;;; -NGC2978;G;09:43:16.80;-09:44:45.2;Sex;1.07;0.87;112;13.50;;11.41;10.75;10.41;22.69;SABb;;;;;;;;2MASX J09431675-0944443,IRAS 09408-0931,MCG -01-25-029,PGC 027808;;; -NGC2979;G;09:43:08.65;-10:22:59.7;Sex;2.06;1.25;21;14.00;;10.50;9.78;9.52;;SABa;;;;;3050;;;2MASX J09430865-1022596,IRAS 09407-1009,MCG -02-25-012,PGC 027795;;; -NGC2980;G;09:43:11.97;-09:36:44.6;Sex;1.79;0.86;164;13.60;;10.74;9.98;9.67;23.01;Sc;;;;;;;;2MASX J09431196-0936446,IRAS 09407-0923,MCG -01-25-028,PGC 027799;;; -NGC2981;G;09:44:56.57;+31:05:52.2;Leo;1.06;0.70;86;15.00;;11.90;11.27;10.92;23.38;SABb;;;;;;;;2MASX J09445655+3105519,MCG +05-23-032,PGC 027925,SDSS J094456.56+310552.2,SDSS J094456.57+310552.2,UGC 05208;;; -NGC2982;OCl;09:42:00.08;-44:01:37.7;Vel;;;;;;;;;;;;;;;;;;MWSC 1703;;; -NGC2983;G;09:43:41.10;-20:28:37.9;Hya;2.37;1.16;86;12.81;11.68;9.52;8.82;8.55;23.29;S0-a;;;;;;;;2MASX J09434109-2028377,ESO 566-003,ESO-LV 566-0030,MCG -03-25-017,PGC 027840,UGCA 176;;; -NGC2984;G;09:43:40.38;+11:03:39.1;Leo;0.85;0.83;155;14.30;;11.36;10.63;10.36;22.74;E-S0;;;;;;0556;;2MASX J09434038+1103387,MCG +02-25-025,PGC 027838,SDSS J094340.37+110339.0,SDSS J094340.38+110339.1,UGC 05200;;; -NGC2985;G;09:50:22.23;+72:16:43.1;UMa;3.61;2.92;177;11.37;10.61;8.31;7.49;7.36;22.60;Sab;;;;;;;;2MASX J09502223+7216431,IRAS 09459+7230,MCG +12-10-006,PGC 028316,UGC 05253;;; -NGC2986;G;09:44:16.04;-21:16:40.8;Hya;4.81;3.85;42;11.60;10.93;8.54;7.85;7.64;23.96;E;;;;;;;;2MASX J09441604-2116418,ESO 566-005,ESO-LV 566-0050,MCG -03-25-019,PGC 027885,UGCA 178;;; -NGC2987;G;09:45:41.47;+04:56:30.6;Sex;1.31;0.60;163;13.90;;11.17;10.43;10.15;22.92;Sab;;;;;;;;2MASX J09454148+0456309,IRAS 09430+0510,MCG +01-25-017,PGC 027981,SDSS J094541.47+045630.6,UGC 05220;;; -NGC2988;G;09:46:47.97;+22:00:43.7;Leo;0.91;0.33;37;14.30;;;;;23.18;Sbc;;;;;;;;MCG +04-23-032,PGC 028078,SDSS J094647.91+220042.2,SDSS J094647.97+220043.6,SDSS J094647.97+220043.7,UGC 05233 NOTES01;;Multiple SDSS entries describe this object.; -NGC2989;G;09:45:25.22;-18:22:26.1;Hya;1.69;1.16;38;13.51;14.50;11.14;10.50;10.23;23.13;SABb;;;;;;;;2MASX J09452522-1822259,ESO 566-009,ESO-LV 566-0090,IRAS 09430-1808,MCG -03-25-020,PGC 027962;;; -NGC2990;G;09:46:17.16;+05:42:31.7;Sex;0.93;0.44;86;12.50;;11.03;10.33;10.10;21.12;SABc;;;;;;;;2MASX J09461721+0542318,IRAS 09436+0556,MCG +01-25-021,PGC 028026,SDSS J094617.16+054231.6,UGC 05229;;; -NGC2991;G;09:46:50.12;+22:00:50.2;Leo;0.99;0.80;124;14.30;;10.86;10.05;9.74;22.27;S0;;;;;;;;2MASX J09465011+2200504,MCG +04-23-033,PGC 028079,SDSS J094650.11+220050.2,UGC 05233;;; -NGC2992;G;09:45:42.05;-14:19:35.0;Hya;2.92;0.69;17;13.14;12.18;9.67;8.93;8.60;23.55;Sa;;;;;;;;2MASX J09454204-1419348,IRAS 09432-1405,MCG -02-25-014,PGC 027982;;; -NGC2993;G;09:45:48.33;-14:22:05.9;Hya;1.36;1.13;94;13.11;12.64;11.04;10.37;10.13;22.41;Sa;;;;;;;;2MASX J09454832-1422060,IRAS 09434-1408,MCG -02-25-015,PGC 027991;;; -NGC2994;G;09:47:16.11;+22:05:22.2;Leo;0.95;0.52;127;14.40;;10.85;10.16;9.86;22.61;S0;;;;;;;;2MASX J09471608+2205221,IRAS 09444+2219,MCG +04-23-035,PGC 028122,SDSS J094716.11+220522.1,SDSS J094716.11+220522.2,UGC 05239;;; -NGC2995;*Ass;09:43:59.09;-54:35:49.0;Vel;;;;;;;;;;;;;;;;;;;;Probably a random grouping of Milky Way stars.; -NGC2996;G;09:46:30.18;-21:34:17.8;Hya;1.36;1.36;150;13.56;;10.97;10.28;10.02;23.06;S0-a;;;;;;;;2MASX J09463018-2134178,ESO 566-012,ESO-LV 566-0120,MCG -03-25-022,PGC 028049;;; -NGC2997;G;09:45:38.79;-31:11:27.9;Ant;10.26;6.21;97;9.97;9.41;7.33;6.67;6.41;23.42;SABc;;;;;;;;2MASX J09453879-3111279,ESO 434-035,ESO-LV 434-0350,MCG -05-23-012,PGC 027978,UGCA 181;;Extended HIPASS source; -NGC2998;G;09:48:43.63;+44:04:53.2;UMa;2.44;1.23;54;13.30;;10.93;10.20;9.93;23.23;SABc;;;;;;;;2MASX J09484363+4404526,IRAS 09455+4418,MCG +07-20-051,PGC 028196,SDSS J094843.62+440453.1,SDSS J094843.63+440453.1,SDSS J094843.63+440453.2,UGC 05250;;; -NGC2999;Dup;09:40:11.52;-50:19:15.4;Vel;;;;;;;;;;;;;;;2972;;;;;; -NGC3000;**;09:48:51.28;+44:07:49.0;UMa;;;;;;;;;;;;;;;;;;;;; -NGC3001;G;09:46:18.66;-30:26:14.9;Ant;3.02;2.26;5;12.15;11.83;9.28;8.62;8.36;23.50;Sbc;;;;;;;;2MASX J09461866-3026148,ESO 434-038,ESO-LV 434-0380,MCG -05-23-014,PGC 028027,UGCA 183;;; -NGC3002;*;09:48:57.42;+44:03:26.0;UMa;;;;;;;;;;;;;;;;;;SDSS J094857.42+440326.0;;; -NGC3003;G;09:48:36.05;+33:25:17.4;LMi;4.74;1.06;79;12.30;;10.26;9.59;9.48;23.22;Sbc;;;;;;;;2MASX J09483604+3325173,IRAS 09456+3339,MCG +06-22-013,PGC 028186,SDSS J094835.75+332517.5,UGC 05251;;; -NGC3004;*;09:49:02.45;+44:06:39.7;UMa;;;;;;;;;;;;;;;;;;SDSS J094902.44+440639.7;;; -NGC3005;G;09:49:14.87;+44:07:52.7;UMa;1.14;0.30;150;16.00;;12.64;12.00;11.58;23.29;SABc;;;;;;;;2MASX J09491500+4407528,IRAS 09461+4421,MCG +07-20-054,PGC 028232,SDSS J094914.86+440752.7,SDSS J094914.87+440752.7;;; -NGC3006;G;09:49:17.34;+44:01:32.9;UMa;0.82;0.29;83;15.60;;12.68;11.87;11.59;23.18;Sbc;;;;;;;;2MASX J09491734+4401328,MCG +07-20-055,PGC 028235,SDSS J094917.34+440132.8;;; -NGC3007;G;09:47:45.62;-06:26:17.4;Sex;1.61;0.78;81;15.00;;11.31;10.51;10.12;23.98;S0-a;;;;;;;;2MASX J09474561-0626173,IRAS 09452-0612,MCG -01-25-038,PGC 028150;;; -NGC3008;G;09:49:34.26;+44:06:09.7;UMa;0.75;0.47;136;15.40;;12.09;11.47;11.17;23.18;S0-a;;;;;;;;2MASX J09493422+4406098,MCG +07-20-059,PGC 028252,SDSS J094934.26+440609.6,SDSS J094934.26+440609.7;;; -NGC3009;G;09:50:11.13;+44:17:42.2;UMa;0.77;0.74;60;14.50;;12.33;11.80;11.71;22.53;SBbc;;;;;;;;2MASX J09501107+4417419,MCG +07-20-062,PGC 028303,SDSS J095011.12+441742.1,SDSS J095011.12+441742.2,SDSS J095011.13+441742.2,UGC 05264;;; -NGC3010;G;09:50:33.15;+44:18:51.8;UMa;0.39;0.20;67;;;;;;21.51;S0;;;;;;;;2MASX J09503310+4418516,MCG +07-20-065,PGC 028335,SDSS J095033.15+441851.7,SDSS J095033.15+441851.8,UGC 05273 NED01;;Component 'a)' in UGC notes.; -NGC3011;G;09:49:41.20;+32:13:16.0;Leo;0.82;0.69;61;14.20;;11.88;11.34;11.17;22.79;S0;;;;;;;;2MASX J09494124+3213156,MCG +05-23-038,PGC 028259,SDSS J094941.20+321315.9,SDSS J094941.20+321316.0,UGC 05259;;; -NGC3012;G;09:49:52.11;+34:42:50.8;LMi;1.24;1.18;145;14.90;;11.32;10.58;10.30;23.98;E;;;;;;;;2MASX J09495208+3442505,MCG +06-22-017,PGC 028270,SDSS J094952.11+344250.8,UGC 05262;;; -NGC3013;G;09:50:09.36;+33:34:09.6;LMi;0.81;0.56;64;15.60;;12.42;11.70;11.46;23.61;Sab;;;;;;;;2MASX J09500934+3334094,MCG +06-22-018,PGC 028300,SDSS J095009.35+333409.5,SDSS J095009.36+333409.5,SDSS J095009.36+333409.6;;; -NGC3014;G;09:49:07.65;-04:44:34.6;Sex;0.93;0.49;154;14.00;;12.07;11.29;11.24;23.77;Sbc;;;;;;;;2MASX J09490765-0444345,MCG -01-25-043,PGC 028222;;Noted in MCG as a possible GPair.; -NGC3015;G;09:49:22.92;+01:08:43.5;Sex;0.53;0.40;92;14.20;;11.62;10.84;10.57;21.66;S0-a;;;;;;;;2MASX J09492289+0108437,IRAS 09468+0122,MCG +00-25-020,PGC 028240,SDSS J094922.91+010843.3,SDSS J094922.91+010843.5,SDSS J094922.92+010843.4,SDSS J094922.92+010843.5,UGC 05261;;; -NGC3016;G;09:49:50.66;+12:41:42.8;Leo;1.12;0.95;71;13.70;;11.31;10.63;10.28;22.68;Sb;;;;;;;;2MASX J09495067+1241429,IRAS 09471+1255,MCG +02-25-040,PGC 028269,SDSS J094950.65+124142.7,SDSS J094950.66+124142.8,UGC 05266;;; -NGC3017;G;09:49:03.04;-02:49:18.5;Sex;1.02;0.88;87;14.40;;11.05;10.38;10.06;23.32;E;;;;;;;;2MASX J09490301-0249180,MCG +00-25-019,PGC 028220,SDSS J094903.03-024918.5;;; -NGC3018;G;09:49:41.45;+00:37:16.5;Sex;1.17;0.54;28;14.13;;12.08;11.74;11.37;22.40;SBbc;;;;;;;;2MASX J09494143+0037163,MCG +00-25-021,PGC 028258,UGC 05265;;; -NGC3019;G;09:50:07.21;+12:44:46.1;Leo;0.76;0.49;33;15.00;;13.33;12.60;12.58;23.18;Sc;;;;;;;;2MASX J09500721+1244459,MCG +02-25-044,PGC 028295,SDSS J095007.20+124446.0,SDSS J095007.21+124446.1;;; -NGC3020;G;09:50:06.60;+12:48:49.1;Leo;2.34;1.28;100;13.20;;11.48;10.97;10.68;23.54;Sc;;;;;;;;2MASX J09500659+1248489,IRAS 09474+1302,MCG +02-25-045,PGC 028296,SDSS J095006.63+124848.9,SDSS J095006.64+124848.9,UGC 05271;;; -NGC3021;G;09:50:57.15;+33:33:13.1;LMi;1.36;0.81;110;12.60;;10.14;9.46;9.18;21.55;Sbc;;;;;;;;2MASX J09505711+3333124,IRAS 09479+3347,MCG +06-22-019,PGC 028357,SDSS J095057.14+333313.0,UGC 05280;;; -NGC3022;G;09:49:39.25;-05:09:59.7;Sex;1.70;1.56;0;14.00;;10.54;9.73;9.61;24.37;S0;;;;;;;;2MASX J09493926-0509599,MCG -01-25-046,PGC 028257;;; -NGC3023;G;09:49:52.59;+00:37:05.4;Sex;1.82;0.94;80;13.30;12.70;11.45;10.69;10.47;23.00;SABc;;;;;;;;2MASX J09495263+0037043,IRAS 09472+0051,MCG +00-25-022,PGC 028272,SDSS J094952.57+003705.3,SDSS J094952.58+003705.3,SDSS J094952.58+003705.4,UGC 05269;;; -NGC3024;G;09:50:27.39;+12:45:55.8;Leo;1.71;0.50;124;13.70;;12.06;11.27;11.18;22.95;Sc;;;;;;;;2MASX J09502739+1245562,IRAS 09477+1259,MCG +02-25-046,PGC 028324,SDSS J095027.38+124555.7,SDSS J095027.39+124555.7,SDSS J095027.40+124555.8,UGC 05275;;; -NGC3025;G;09:49:29.06;-21:44:32.1;Hya;1.59;1.05;118;13.88;;10.84;10.09;9.86;23.68;S0;;;;;;;;2MASX J09492906-2144321,ESO 566-015,ESO-LV 566-0150,MCG -04-23-018,PGC 028249;;; -NGC3026;G;09:50:55.37;+28:33:04.0;Leo;2.22;0.60;82;13.80;;11.36;11.45;10.71;23.17;SBm;;;;;;;;2MASX J09505530+2833042,IRAS 09480+2847,MCG +05-23-043,PGC 028351,SDSS J095055.37+283303.9,SDSS J095055.37+283304.0,UGC 05279;;; -NGC3027;G;09:55:40.60;+72:12:12.8;UMa;3.35;1.27;128;12.30;;11.52;11.06;10.84;22.73;Sc;;;;;;;;2MASX J09554063+7212128,IRAS 09513+7226,MCG +12-10-009,PGC 028636,UGC 05316;;; -NGC3028;G;09:49:54.24;-19:11:03.0;Hya;1.08;0.84;70;13.55;;11.61;11.12;10.75;22.28;Sb;;;;;;;;2MASX J09495422-1911030,ESO 566-016,ESO-LV 566-0160,IRAS 09475-1856,PGC 028276;;; -NGC3029;G;09:48:54.02;-08:03:03.4;Sex;1.35;0.87;140;13.67;;12.04;11.40;11.17;23.55;SABc;;;;;;;;2MASX J09485401-0803032,MCG -01-25-047,PGC 028206;;MCG RA is +1 minute in error.; -NGC3030;G;09:50:10.52;-12:13:35.1;Hya;1.24;0.92;137;15.00;;11.24;10.56;10.32;23.58;E-S0;;;;;;;;2MASX J09501056-1213348,MCG -02-25-021,PGC 028302;;; -NGC3031;G;09:55:33.17;+69:03:55.1;UMa;21.63;11.25;157;7.89;6.94;4.76;4.09;3.83;22.78;Sab;;;;081;;;;2MASX J09553318+6903549,IRAS 09514+6918,MCG +12-10-010,PGC 028630,SDSS J095533.16+690355.1,UGC 05318;Bode's Galaxy;; -NGC3032;G;09:52:08.15;+29:14:10.4;Leo;1.43;1.31;90;13.87;13.28;10.48;9.85;9.65;22.59;S0;;;;;;;;2MASX J09520818+2914106,IRAS 09492+2928,MCG +05-23-046,PGC 028424,SDSS J095208.15+291410.3,UGC 05292;;; -NGC3033;OCl;09:48:35.04;-56:25:48.2;Vel;4.80;;;9.24;8.80;;;;;;;;;;;;;MWSC 1715;;; -NGC3034;G;09:55:52.73;+69:40:45.8;UMa;10.99;5.11;66;9.30;8.41;5.84;5.07;4.67;22.22;S?;;;;082;;;;2MASX J09555243+6940469,IRAS 09517+6954,MCG +12-10-011,PGC 028655,SDSS J095551.73+694048.6,UGC 05322;Cigar Galaxy;; -NGC3035;G;09:51:55.03;-06:49:22.5;Sex;1.47;1.19;0;13.73;13.50;10.70;10.05;9.75;;Sbc;;;;;;;;2MASX J09515502-0649225,IRAS 09494-0635,MCG -01-25-052,PGC 028415;;; -NGC3036;OCl;09:49:15.89;-62:40:32.1;Car;4.80;;;;;;;;;;;;;;;;;MWSC 1719;;; -NGC3037;G;09:51:24.02;-27:00:40.0;Ant;1.29;1.13;57;13.66;;12.18;11.47;11.12;22.89;Sm;;;;;;;;2MASX J09512400-2700400,ESO 499-010,ESO-LV 499-0100,MCG -04-24-002,PGC 028381;;; -NGC3038;G;09:51:15.45;-32:45:09.2;Ant;2.80;1.69;126;12.50;11.60;9.35;8.65;8.38;23.06;Sb;;;;;;;;2MASX J09511543-3245092,ESO 374-002,ESO-LV 374-0020,MCG -05-24-001,PGC 028376;;Confused HIPASS source; -NGC3039;G;09:52:29.67;+02:09:16.0;Sex;1.32;0.69;16;14.40;;10.99;10.26;10.02;23.24;Sab;;;;;;;;2MASX J09522963+0209159,MCG +00-25-027,PGC 028452,SDSS J095229.67+020916.0,UGC 05297;;; -NGC3040;GPair;09:53:04.30;+19:26:14.0;Leo;1.80;;;;;;;;;;;;;;;;;MCG +03-25-037,UGC 05300;;;Diameter of the group inferred by the author. -NGC3040 NED01;G;09:53:03.46;+19:26:33.3;Leo;0.87;0.39;148;15.30;;12.59;11.85;11.50;23.90;Sab;;;;;;;;2MASX J09530347+1926331,MCG +03-25-037 NED01,PGC 200252,UGC 05300 NED01;;;B-Mag taken from LEDA -NGC3040 NED02;G;09:53:05.10;+19:25:55.8;Leo;1.51;0.91;165;14.20;;11.04;10.35;10.09;23.89;S0-a;;;;;;;;2MASX J09530509+1925561,MCG +03-25-037 NED02,PGC 028479,SDSS J095305.09+192555.8,UGC 05300 NED02;;; -NGC3041;G;09:53:07.14;+16:40:39.6;Leo;3.22;2.07;93;13.10;;9.57;8.86;8.74;23.21;SABc;;;;;;;;2MASX J09530714+1640396,IRAS 09503+1654,MCG +03-25-039,PGC 028485,SDSS J095307.14+164039.6,UGC 05303;;; -NGC3042;G;09:53:20.22;+00:41:51.7;Sex;1.02;0.74;110;13.80;;10.45;9.69;9.40;22.77;S0-a;;;;;;;;2MASX J09532024+0041515,MCG +00-25-030,PGC 028498,SDSS J095320.21+004151.7,SDSS J095320.22+004151.7,SDSS J095320.22+004151.8,UGC 05307;;; -NGC3043;G;09:56:14.85;+59:18:25.6;UMa;1.66;0.61;82;13.30;;11.39;10.78;10.45;22.50;SBb;;;;;;;;2MASX J09561485+5918255,IRAS 09527+5932,MCG +10-14-052,PGC 028672,SDSS J095614.58+591825.1,UGC 05327;;; -NGC3044;G;09:53:40.88;+01:34:46.7;Sex;4.20;0.70;114;12.70;;10.04;9.28;8.98;22.88;SBc;;;;;;;;2MASX J09534088+0134467,IRAS 09511+0148,MCG +00-25-031,PGC 028517,SDSS J095340.73+013447.7,SDSS J095340.78+013443.7,UGC 05311;;; -NGC3045;G;09:53:17.66;-18:38:42.4;Hya;1.43;0.64;20;13.73;;11.35;10.69;10.49;22.74;SBb;;;;;;;;2MASX J09531766-1838423,ESO 566-022,ESO-LV 566-0220,IRAS 09509-1824,MCG -03-25-028,PGC 028492,PGC 028493,TYC 6049-1247-1;;; -NGC3046;Dup;09:53:58.64;-27:17:10.8;Ant;;;;;;;;;;;;;;;3051;;;;;; -NGC3047A;G;09:54:32.06;-01:17:27.3;Sex;0.60;0.60;30;14.20;;11.37;10.72;10.42;22.32;E;;;;;;;;2MASX J09543208-0117269,MCG +00-25-033,PGC 028577,SDSS J095432.05-011727.2,UGC 05323 NED02;;; -NGC3047B;G;09:54:29.49;-01:17:17.0;Sex;0.59;0.45;44;15.50;;12.68;12.10;11.86;22.91;E;;;;;;;;2MASX J09542948-0117169,MCG +00-25-032,PGC 028572,SDSS J095429.48-011716.9,UGC 05323 NED01;;; -NGC3048;GPair;09:54:57.20;+16:27:28.0;Leo;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC3048 NED01;G;09:54:56.45;+16:27:22.6;Leo;0.71;0.40;110;15.20;;13.27;12.55;12.35;23.18;I;;;;;;;;2MASX J09545641+1627226,PGC 028595,SDSS J095456.45+162722.6;;; -NGC3048 NED02;G;09:54:58.04;+16:27:34.5;Leo;0.41;0.28;16;16.38;;14.42;13.91;13.88;23.36;Sb;;;;;;;;2MASX J09545801+1627346,PGC 1509261,SDSS J095458.04+162734.5;;;B-Mag taken from LEDA -NGC3049;G;09:54:49.56;+09:16:15.9;Leo;2.11;1.22;28;13.04;;10.93;10.30;9.96;23.61;SBb;;;;;;;;2MASX J09544965+0916179,IRAS 09521+0930,MCG +02-25-055,PGC 028590,SDSS J095449.55+091615.8,SDSS J095449.56+091615.9,UGC 05325;;; -NGC3050;Dup;09:43:08.65;-10:22:59.7;Sex;;;;;;;;;;;;;;;2979;;;;;; -NGC3051;G;09:53:58.64;-27:17:10.8;Ant;2.20;1.39;169;12.79;15.00;9.96;9.32;9.04;23.35;E-S0;;;;;3046;;;2MASX J09535864-2717104,ESO 499-016,ESO-LV 499-0160,MCG -04-24-004,PGC 028536;;Identification as NGC 3046 is doubtful.; -NGC3052;G;09:54:27.93;-18:38:20.0;Hya;2.15;1.42;109;12.93;;10.40;9.76;9.43;22.86;SABc;;;;;;;;2MASX J09542791-1838202,ESO 566-026,ESO-LV 566-0260,IRAS 09521-1824,MCG -03-25-030,PGC 028570;;; -NGC3053;G;09:55:33.61;+16:25:58.3;Leo;1.59;0.70;139;13.70;;10.68;9.97;9.65;23.21;Sa;;;;;;;;2MASX J09553359+1625580,IRAS 09528+1640,MCG +03-25-040,PGC 028631,SDSS J095533.61+162558.2,SDSS J095533.61+162558.3,UGC 05329;;; -NGC3054;G;09:54:28.60;-25:42:12.4;Hya;3.56;2.18;112;12.27;;9.31;8.76;8.34;23.47;Sb;;;;;;;;2MASX J09542860-2542123,ESO 499-018,ESO-LV 499-0180,MCG -04-24-005,PGC 028571,UGCA 187;;; -NGC3055;G;09:55:18.06;+04:16:12.1;Sex;1.96;1.11;63;12.30;;10.41;9.72;9.49;22.39;Sc;;;;;;;;2MASX J09551804+0416122,IRAS 09526+0430,MCG +01-25-034,PGC 028617,SDSS J095517.76+041613.1,SDSS J095518.06+041612.0,SDSS J095518.06+041612.1,UGC 05328;;; -NGC3056;G;09:54:32.88;-28:17:53.5;Ant;2.26;1.39;20;12.61;;9.48;8.82;8.64;23.05;S0-a;;;;;;;;2MASX J09543290-2817533,ESO 435-007,ESO-LV 435-0070,MCG -05-24-003,PGC 028576;;; -NGC3057;G;10:05:39.36;+80:17:08.5;Dra;1.45;0.92;8;14.20;;12.52;12.15;11.73;22.73;Sd;;;;;;;;2MASX J10053930+8017084,IRAS 09596+8032,MCG +14-05-010,PGC 029296,SDSS J100539.51+801712.0,UGC 05404;;; -NGC3058;GPair;09:53:35.75;-12:28:53.6;Hya;1.40;;;;;;;;;;;;;;;;;MCG -02-25-026;;;Diameter of the group inferred by the author. -NGC3058 NED01;G;09:53:35.15;-12:28:44.7;Hya;0.62;0.35;145;;;;;;;;;;;;;;;MCG -02-25-026 NED01,PGC 3442467;;; -NGC3058 NED02;G;09:53:36.17;-12:28:55.6;Hya;1.26;0.48;55;13.83;;11.31;10.45;10.00;22.94;Sd;;;;;;0573;;2MASX J09533619-1228557,IRAS 09511-1214,PGC 028513;;; -NGC3059;G;09:50:08.16;-73:55:19.9;Car;3.80;3.56;50;11.56;11.24;9.09;8.27;7.96;23.32;SBbc;;;;;;;;2MASX J09500818-7355199,ESO 037-007,ESO-LV 37-0070,IRAS 09496-7341,PGC 028298;;Extended HIPASS source; -NGC3060;G;09:56:19.20;+16:49:52.4;Leo;2.02;0.42;77;13.80;;10.59;9.89;9.61;22.99;Sb;;;;;;;;2MASX J09561920+1649525,IRAS 09535+1704,MCG +03-26-002,PGC 028680,SDSS J095619.16+164952.2,UGC 05338;;; -NGC3061;G;09:56:12.01;+75:51:59.4;Dra;1.58;1.23;140;13.90;;11.68;11.01;10.67;23.01;Sc;;;;;;;;2MASX J09561205+7551595,IRAS 09513+7606,MCG +13-07-040,PGC 028670,UGC 05319;;; -NGC3062;G;09:56:35.79;+01:25:42.8;Sex;0.83;0.40;63;15.10;;12.19;11.45;11.23;23.01;Sb;;;;;;;;2MASX J09563578+0125425,PGC 028699,SDSS J095635.78+012542.7,SDSS J095635.78+012542.8,SDSS J095635.79+012542.7;;; -NGC3063;**;10:01:41.77;+72:07:04.2;UMa;;;;;;;;;;;;;;;;;;;;; -NGC3064;G;09:55:41.45;-06:21:50.1;Sex;1.15;0.33;25;14.50;;12.77;12.12;11.73;23.04;Sbc;;;;;;;;2MASX J09554143-0621499,MCG -01-26-001,PGC 028638;;; -NGC3065;G;10:01:55.22;+72:10:13.2;UMa;1.87;1.78;160;14.17;13.19;9.97;9.22;8.99;21.87;S0;;;;;;;;2MASX J10015530+7210130,MCG +12-10-014,PGC 029046,UGC 05375;;The 2MASS position is 10 arcsec northwest of the nucleus.; -NGC3066;G;10:02:11.07;+72:07:31.4;UMa;1.12;1.06;75;12.80;;10.89;10.22;9.94;22.45;SABb;;;;;;;;2MASX J10021090+7207309,IRAS 09578+7222,MCG +12-10-015,PGC 029059,UGC 05379;;; -NGC3067;G;09:58:21.08;+32:22:11.6;Leo;2.06;0.66;104;12.70;;9.89;9.16;8.90;22.36;SABa;;;;;;;;2MASX J09582105+3222119,IRAS 09554+3236,MCG +06-22-046,PGC 028805,SDSS J095821.07+322211.6,SDSS J095821.08+322211.6,UGC 05351;;; -NGC3068;G;09:58:40.10;+28:52:39.2;Leo;0.87;0.70;92;15.10;14.05;11.53;10.82;10.48;23.55;E-S0;;;;;;;;MCG +05-24-006,PGC 028815;;; -NGC3069;G;09:57:56.70;+10:25:56.8;Leo;0.86;0.37;166;15.00;;12.20;11.60;11.13;23.15;SABa;;;;;;0580;;2MASX J09575667+1025562,MCG +02-26-005,PGC 028788,SDSS J095756.70+102556.7,SDSS J095756.70+102556.8;;; -NGC3070;G;09:58:06.95;+10:21:35.2;Leo;1.55;1.28;51;13.20;;10.22;9.51;9.26;23.07;E;;;;;;;;2MASX J09580691+1021353,MCG +02-26-006,PGC 028796,SDSS J095806.94+102135.2,UGC 05350;;; -NGC3071;G;09:58:52.99;+31:37:13.1;Leo;0.66;0.46;176;15.40;;12.08;11.34;11.06;23.26;S0;;;;;;;;2MASX J09585297+3137131,PGC 028825,SDSS J095852.99+313713.0,SDSS J095852.99+313713.1;;; -NGC3072;G;09:57:23.89;-19:21:17.9;Hya;1.82;0.62;70;13.73;;10.58;9.87;9.63;23.74;S0-a;;;;;;;;2MASX J09572388-1921180,ESO 566-033,ESO-LV 566-0330,MCG -03-26-001,PGC 028749;;; -NGC3073;G;10:00:52.08;+55:37:07.8;UMa;1.20;1.07;130;14.07;13.40;11.80;11.01;10.80;23.25;E-S0;;;;;;;;2MASX J10005204+5537081,MCG +09-17-007,PGC 028974,SDSS J100052.08+553707.7,SDSS J100052.08+553707.8,UGC 05374;;; -NGC3074;G;09:59:41.21;+35:23:34.1;LMi;1.96;1.69;150;14.80;;11.37;10.73;10.44;23.54;SABc;;;;;;;;2MASX J09594125+3523336,IRAS 09567+3537,MCG +06-22-047,PGC 028888,SDSS J095941.21+352334.0,SDSS J095941.21+352334.1,UGC 05366;;; -NGC3075;G;09:58:56.20;+14:25:13.7;Leo;1.50;0.64;132;14.50;;11.67;10.89;10.79;23.34;Sc;;;;;;;;2MASX J09585625+1425081,IRAS 09562+1439,MCG +03-26-009,PGC 028833,SDSS J095856.27+142507.6,UGC 05360;;; -NGC3076;G;09:57:37.62;-18:10:43.3;Hya;0.87;0.84;25;14.03;;11.68;11.07;10.74;22.52;Sab;;;;;;;;2MASX J09573763-1810434,ESO 566-034,ESO-LV 566-0340,MCG -03-26-002,PGC 028766;;; -NGC3077;G;10:03:19.07;+68:44:02.1;UMa;5.21;4.32;49;10.85;10.14;8.12;7.55;7.30;22.80;S?;;;;;;;;2MASX J10031907+6844022,IRAS 09592+6858,MCG +12-10-017,PGC 029146,SDSS J100318.96+684403.9,UGC 05398;;; -NGC3078;G;09:58:24.61;-26:55:36.0;Hya;3.04;2.48;177;12.00;11.07;8.81;8.14;7.88;23.34;E;;;;;;;;2MASX J09582458-2655356,ESO 499-027,ESO-LV 499-0270,MCG -04-24-009,PGC 028806;;; -NGC3079;G;10:01:57.80;+55:40:47.2;UMa;8.18;1.29;166;11.54;10.86;8.44;7.64;7.26;23.17;SBc;;;;;;;;2MASX J10015792+5540480,IRAS 09585+5555,MCG +09-17-010,PGC 029050,SDSS J100157.94+554047.8,UGC 05387;;; -NGC3080;G;09:59:55.84;+13:02:37.8;Leo;0.80;0.77;50;16.66;16.36;12.21;11.43;11.12;23.14;SABa;;;;;;;;2MASX J09595588+1302381,MCG +02-26-015,PGC 028910,SDSS J095955.84+130237.7,SDSS J095955.85+130237.7,SDSS J095955.85+130237.8,UGC 05372;;; -NGC3081;G;09:59:29.54;-22:49:34.6;Hya;2.67;1.59;71;13.06;13.55;9.91;9.21;8.91;23.62;S0-a;;;;;;2529;;2MASX J09592953-2249343,ESO 499-031,ESO-LV 499-0310,MCG -04-24-012,PGC 028876;;The IC identification is not certain.; -NGC3082;G;09:58:53.07;-30:21:27.7;Ant;2.14;0.77;29;13.49;;9.90;9.21;8.96;23.90;E-S0;;;;;;;;2MASX J09585306-3021278,ESO 435-018,ESO-LV 435-0180,MCG -05-24-011,PGC 028829;;; -NGC3083;G;09:59:49.67;-02:52:38.9;Sex;0.99;0.34;50;14.20;;11.24;10.57;10.29;22.61;SBa;;;;;;;;2MASX J09594966-0252383,MCG +00-26-002,PGC 028900,SDSS J095949.67-025238.9;;; -NGC3084;G;09:59:06.42;-27:07:43.7;Ant;1.66;1.23;100;13.17;;10.44;9.76;9.43;22.88;Sab;;;;;;2528;;2MASX J09590643-2707438,ESO 499-029,ESO-LV 499-0290,MCG -04-24-010,PGC 028841;;; -NGC3085;G;09:59:29.18;-19:29:32.2;Hya;1.24;0.41;118;13.99;12.92;11.02;10.35;10.07;23.18;S0;;;;;;;;2MASX J09592917-1929323,ESO 566-038,ESO-LV 566-0380,MCG -03-26-003,PGC 028875;;; -NGC3086;G;10:00:10.99;-02:58:34.2;Sex;1.16;0.40;147;14.50;;11.57;10.95;10.61;23.02;Sb;;;;;;;;2MASX J10001097-0258343,MCG +00-26-003,PGC 028924,SDSS J100010.99-025834.2;;; -NGC3087;G;09:59:08.66;-34:13:30.8;Ant;2.28;2.02;46;12.69;11.55;9.09;8.44;8.13;23.29;E;;;;;;;;2MASX J09590864-3413307,ESO 374-015,ESO-LV 374-0150,MCG -06-22-005,PGC 028845;;; -NGC3088A;G;10:01:07.19;+22:24:11.4;Leo;1.35;0.83;114;14.70;;;;;23.50;SBab;;;;;;;;2MASX J10010717+2224109,MCG +04-24-010,PGC 028997,UGC 05384 NED01;;Called 'NGC 3088a' in MCG. Component 'a)' in UGC notes.; -NGC3088B;G;10:01:09.70;+22:24:08.3;Leo;0.93;0.26;139;14.70;;12.11;11.36;10.93;23.66;Sbc;;;;;;;;2MASX J10010966+2224090,MCG +04-24-011,PGC 028998,UGC 05384 NED02;;Called 'NGC 3088b' in MCG. Component 'b)' in UGC notes.; -NGC3089;G;09:59:36.68;-28:19:52.9;Ant;1.95;1.13;144;13.33;;10.31;9.61;9.33;23.02;SABb;;;;;;;;2MASX J09593665-2819530,ESO 435-024,ESO-LV 435-0240,MCG -05-24-014,PGC 028882;;; -NGC3090;G;10:00:30.23;-02:58:08.4;Sex;1.63;1.30;15;14.20;;;;;23.53;E;;;;;;;;MCG +00-26-005,PGC 028945,SDSS J100030.23-025808.4;;; -NGC3091;G;10:00:14.29;-19:38:13.1;Hya;3.69;2.18;144;12.04;10.61;9.04;8.34;8.09;23.80;E;;;;;;;;2MASX J10001412-1938113,ESO 566-041,ESO-LV 566-0410,MCG -03-26-007,PGC 028927;;; -NGC3092;G;10:00:47.43;-03:00:44.6;Sex;1.30;0.50;27;14.50;;11.62;11.16;10.79;23.95;S0-a;;;;;;;;2MASX J10004745-0300448,MCG +00-26-008,PGC 028967,SDSS J100047.43-030044.5;;; -NGC3093;G;10:00:53.59;-02:58:19.2;Sex;0.77;0.36;51;15.10;;11.73;11.04;10.75;23.60;E;;;;;;;;2MASX J10005359-0258188,MCG +00-26-007,PGC 028977,SDSS J100053.58-025819.1;;; -NGC3094;G;10:01:25.94;+15:46:12.3;Leo;1.34;0.98;63;13.50;;10.68;9.95;9.62;22.65;SBa;;;;;;;;2MASX J10012591+1546117,IRAS 09586+1600,MCG +03-26-015,PGC 029009,SDSS J100125.94+154612.2,UGC 05390;;The position in 1989H&RHI.C...0000H is incorrect.; -NGC3095;G;10:00:05.83;-31:33:10.3;Ant;3.61;1.81;129;12.45;11.58;9.68;8.89;8.68;23.33;Sc;;;;;;;;2MASX J10000582-3133101,2MASX J10000634-3133337,ESO 435-026,ESO-LV 435-0260,IRAS 09578-3118,MCG -05-24-016,PGC 028919,UGCA 192;;; -NGC3096;G;10:00:33.11;-19:39:43.1;Hya;1.17;1.03;70;14.08;13.09;11.36;10.68;10.56;23.45;S0;;;;;;;;2MASX J10003309-1939433,ESO 566-042,ESO-LV 566-0420,MCG -03-26-008,PGC 028950;;; -NGC3097;Other;10:04:16.07;+60:07:32.8;UMa;;;;;;;;;;;;;;;;;;;;Nothing at this position on the POSS.; -NGC3098;G;10:02:16.69;+24:42:39.9;Leo;2.33;0.50;90;13.00;;10.05;9.34;9.11;23.32;S0;;;;;;;;2MASX J10021666+2442399,MCG +04-24-012,PGC 029067,SDSS J100216.69+244239.9,UGC 05397;;; -NGC3099;G;10:02:36.55;+32:42:24.2;LMi;1.15;0.62;147;15.40;;11.51;10.84;10.50;24.28;E;;;;;;;;2MASX J10023655+3242245,MCG +06-22-059,PGC 029087,SDSS J100236.54+324224.2,SDSS J100236.54+324224.3;;; -NGC3100;G;10:00:40.84;-31:39:52.3;Ant;3.56;2.48;148;12.15;12.47;8.92;8.27;8.08;23.52;S0;;;;;3103;;;2MASX J10004083-3139519,ESO 435-030,ESO-LV 435-0300,MCG -05-24-018,PGC 028960;;; -NGC3101;G;10:01:35.43;-02:59:39.9;Sex;1.22;0.21;150;15.60;;12.08;11.28;11.04;23.80;Sa;;;;;;;;2MASX J10013544-0259400,MCG +00-26-011,PGC 029025,SDSS J100135.43-025939.9;;; -NGC3102;G;10:04:31.76;+60:06:28.7;UMa;0.98;0.98;110;14.30;;11.55;10.78;10.58;22.97;E-S0;;;;;;;;2MASX J10043179+6006282,MCG +10-15-007,PGC 029220,SDSS J100431.74+600628.9,SDSS J100431.76+600628.5,SDSS J100431.76+600628.6,SDSS J100431.76+600628.7,UGC 05418;;; -NGC3103;Dup;10:00:40.84;-31:39:52.3;Ant;;;;;;;;;;;;;;;3100;;;;;; -NGC3104;G;10:03:57.35;+40:45:24.9;LMi;2.99;2.03;36;14.20;;;;;24.57;IAB;;;;;;;;MCG +07-21-007,PGC 029186,UGC 05414;;; -NGC3105;OCl;10:00:39.52;-54:47:15.7;Vel;4.08;;;10.73;9.70;;;;;;;;;;;;;MWSC 1742;;; -NGC3106;G;10:04:05.25;+31:11:07.7;LMi;0.89;0.25;124;14.00;;10.52;9.89;9.63;21.74;S0;;;;;;;;2MASX J10040526+3111071,MCG +05-24-009,PGC 029196,SDSS J100405.25+311107.6,SDSS J100405.25+311107.7,UGC 05419;;; -NGC3107;G;10:04:22.47;+13:37:16.8;Leo;0.77;0.63;140;13.60;;11.18;10.49;10.34;21.59;SABb;;;;;;;;2MASX J10042247+1337167,IRAS 10016+1351,MCG +02-26-022,PGC 029209,UGC 05425;;; -NGC3108;G;10:02:29.03;-31:40:38.7;Ant;2.54;2.22;59;12.48;;9.18;8.48;8.23;23.50;S0-a;;;;;;;;2MASX J10022902-3140385,ESO 435-032,ESO-LV 435-0320,MCG -05-24-019,PGC 029076;;; -NGC3109;G;10:03:06.88;-26:09:34.5;Hya;16.00;2.74;93;10.42;10.04;9.91;9.66;9.28;23.59;SBm;;;;;;;;2MASX J10030687-2609344,ESO 499-036,ESO-LV 499-0360,MCG -04-24-013,PGC 029128,UGCA 194;;; -NGC3110;G;10:04:02.11;-06:28:29.2;Sex;1.87;0.90;171;13.40;;10.61;9.88;9.53;22.55;SBb;;;;;3122,3518;;;2MASX J10040212-0628291,IRAS 10015-0614,MCG -01-26-014,PGC 029192;;; -NGC3111;G;10:06:07.44;+47:15:45.5;UMa;1.42;1.34;150;14.00;;10.87;10.19;9.87;23.61;E-S0;;;;;;;;2MASX J10060741+4715456,MCG +08-19-002,PGC 029338,SDSS J100607.43+471545.5,SDSS J100607.44+471545.5,UGC 05441;;; -NGC3112;G;10:03:59.18;-20:46:54.5;Hya;1.10;0.30;47;16.01;;13.53;12.93;12.68;23.90;Sbc;;;;;;;;2MASX J10035918-2046544,ESO 567-011,ESO-LV 567-0110,PGC 029189;;; -NGC3113;G;10:04:26.11;-28:26:38.5;Ant;3.43;1.05;86;13.35;;11.86;10.74;10.56;23.71;SABc;;;;;;;;2MASX J10042611-2826384,2MASX J10042677-2826489,ESO 435-035,ESO-LV 435-0350,MCG -05-24-021,PGC 029216,UGCA 198;;; -NGC3114;OCl;10:02:29.57;-60:07:49.9;Car;12.30;;;4.47;4.20;;;;;;;;;;;;;MWSC 1749;;; -NGC3115;G;10:05:13.98;-07:43:06.9;Sex;7.10;3.01;43;11.00;;6.79;6.12;5.88;23.02;E-S0;;;;;;;;2MASX J10051397-0743068,C 053,MCG -01-26-018,PGC 029265,UGCA 199;Spindle Galaxy;; -NGC3116;G;10:06:45.05;+31:05:51.8;LMi;0.70;0.64;45;15.30;;11.95;11.30;10.96;23.40;E;;;;;;;;2MASX J10064505+3105519,MCG +05-24-012,PGC 029383,SDSS J100645.04+310551.8;;; -NGC3117;G;10:06:10.50;+02:54:46.3;Sex;0.96;0.91;110;14.60;;11.45;10.74;10.54;23.39;E;;;;;;;;2MASX J10061053+0254467,MCG +01-26-014,PGC 029340,SDSS J100610.50+025446.3,UGC 05445;;; -NGC3118;G;10:07:11.54;+33:01:38.6;LMi;2.08;0.44;39;14.40;;12.32;11.83;11.67;23.54;Sbc;;;;;;;;2MASX J10071161+3301403,IRAS 10042+3316,MCG +06-22-074,PGC 029415,SDSS J100711.53+330138.5,SDSS J100711.54+330138.6,UGC 05452;;; -NGC3119;G;10:06:51.87;+14:22:24.7;Leo;1.05;0.81;20;14.20;;10.63;9.94;9.62;23.11;E;;;;;3121;;;2MASX J10065190+1422247,MCG +03-26-027 NED01,PGC 029387,SDSS J100651.86+142224.8,SDSS J100651.87+142224.8,UGC 05450;;; -NGC3120;G;10:05:23.04;-34:13:11.8;Ant;1.68;1.17;7;13.53;;10.61;9.92;9.70;23.09;SABb;;;;;;;;2MASX J10052305-3413118,ESO 374-029,ESO-LV 374-0290,IRAS 10031-3358,MCG -06-22-017,PGC 029278;;; -NGC3121;Dup;10:06:51.87;+14:22:24.7;Leo;;;;;;;;;;;;;;;3119;;;;;; -NGC3122;Dup;10:04:02.11;-06:28:29.2;Sex;;;;;;;;;;;;;;;3110;;;;;; -NGC3123;Other;10:07:01.85;+00:04:01.7;Sex;;;;;;;;;;;;;;;;;;;;Nothing at this position on the POSS.; -NGC3124;G;10:06:39.90;-19:13:17.7;Hya;2.70;2.10;174;12.84;;10.26;9.47;9.09;23.66;Sbc;;;;;;;;2MASX J10063988-1913177,ESO 567-017,ESO-LV 567-0170,MCG -03-26-024,PGC 029377,UGCA 202;;; -NGC3125;G;10:06:33.37;-29:56:05.5;Ant;1.21;0.97;110;13.45;13.00;11.37;10.84;10.52;22.63;E;;;;;;;;2MASX J10063331-2956073,ESO 435-041,ESO-LV 435-0410,IRAS 10042-2941,MCG -05-24-022,PGC 029366;;; -NGC3126;G;10:08:20.66;+31:51:45.7;LMi;3.10;0.66;123;13.50;;10.19;9.45;9.21;23.76;SABb;;;;;;;;2MASX J10082065+3151457,MCG +05-24-019,PGC 029484,SDSS J100820.65+315145.6,SDSS J100820.66+315145.7,UGC 05466;;; -NGC3127;G;10:06:24.85;-16:07:33.9;Hya;1.62;0.28;55;14.00;;11.68;10.90;10.50;23.46;Sb;;;;;;;;2MASX J10062485-1607337,MCG -03-26-022,PGC 029357;;; -NGC3128;G;10:06:01.37;-16:07:19.3;Hya;1.54;0.63;173;13.90;;11.51;10.85;10.39;23.14;SBb;;;;;;;;2MASX J10060139-1607192,MCG -03-26-020,PGC 029330;;; -NGC3129;**;10:08:19.26;+18:25:50.3;Leo;;;;;;;;;;;;;;;;;;;;; -NGC3130;G;10:08:12.34;+09:58:37.2;Leo;1.07;0.61;28;14.30;;11.38;10.68;10.43;23.27;S0-a;;;;;;;;2MASX J10081231+0958374,MCG +02-26-026,PGC 029475,SDSS J100812.34+095837.1,UGC 05468;;; -NGC3131;G;10:08:36.41;+18:13:52.4;Leo;2.16;0.67;58;14.00;;10.67;9.97;9.67;23.51;Sb;;;;;;;;2MASX J10083636+1813525,IRAS 10058+1828,MCG +03-26-033,PGC 029499,SDSS J100836.40+181352.4,SDSS J100836.41+181352.4,UGC 05471;;; -NGC3132;PN;10:07:01.73;-40:26:11.7;Vel;0.50;;;8.20;9.20;9.75;9.73;9.72;;;10.29;10.15;10.07;;;;HD 87892,HD 87877,TYC 7711-00963-1;C 074,ESO 316-027,IRAS 10049-4011,PN G272.1+12.3;Eight-Burst Nebula;; -NGC3133;G;10:07:12.81;-11:57:55.1;Hya;0.68;0.29;27;15.73;;13.01;12.42;12.31;;Sb;;;;;;;;2MASX J10071281-1157553,PGC 029417;;; -NGC3134;G;10:12:29.29;+12:22:38.1;Leo;1.49;0.40;55;14.80;;11.47;10.72;10.54;23.60;SBab;;;;;;;;2MASX J10122928+1222374,MCG +02-26-031,PGC 029722,SDSS J101229.28+122238.0,SDSS J101229.29+122238.0,SDSS J101229.29+122238.1;;; -NGC3135;G;10:10:54.38;+45:57:01.3;UMa;1.00;0.60;88;14.30;;11.73;11.12;10.83;22.80;Sbc;;;;;;;;2MASX J10105440+4557013,MCG +08-19-007,PGC 029646,SDSS J101054.38+455701.2,SDSS J101054.38+455701.3,UGC 05486;;; -NGC3136;G;10:05:48.16;-67:22:40.7;Car;4.20;2.94;27;11.60;11.00;8.07;7.43;7.12;23.66;E;;;;;;;;2MASX J10054815-6722407,ESO 092-008,ESO-LV 92-0080,PGC 029311;;; -NGC3136A;G;10:03:32.58;-67:26:54.5;Car;1.60;0.33;88;15.60;;;;;23.88;IB;;;;;;;;ESO 092-007,ESO-LV 92-0070,PGC 029160;;; -NGC3136B;G;10:10:12.93;-67:00:18.3;Car;1.75;1.35;23;13.32;;9.83;9.03;8.79;22.85;E;;;;;;;;2MASX J10101290-6700183,ESO 092-013,ESO-LV 92-0130,PGC 029597;;; -NGC3137;G;10:09:07.48;-29:03:51.5;Ant;5.57;3.85;4;12.21;;9.95;9.36;9.16;24.27;SABc;;;;;;;;2MASX J10090747-2903514,ESO 435-047,ESO-LV 435-0470,IRAS 10068-2849,MCG -05-24-024,PGC 029530,UGCA 203;;Extended HIPASS source; -NGC3138;G;10:09:16.67;-11:57:24.3;Hya;1.10;0.21;80;15.00;;12.98;12.25;11.94;23.32;Sbc;;;;;;;;2MASX J10091668-1157245,MCG -02-26-032,PGC 029532;;; -NGC3139;G;10:10:05.18;-11:46:41.7;Hya;1.21;0.97;68;14.24;;11.26;10.58;10.27;23.73;S0;;;;;;;;2MASX J10100521-1146414,MCG -02-26-034,PGC 029583;;; -NGC3140;G;10:09:27.82;-16:37:41.4;Hya;0.96;0.68;130;14.00;;11.75;11.15;10.83;23.25;Sc;;;;;;;;2MASX J10092782-1637415,MCG -03-26-028,PGC 029548;;; -NGC3141;G;10:09:19.89;-16:39:12.3;Hya;0.76;0.47;25;15.28;;12.51;11.77;11.56;23.89;Sc;;;;;;;;2MASX J10091989-1639125,PGC 029544;;; -NGC3142;G;10:10:06.37;-08:28:47.1;Sex;0.86;0.30;171;14.00;;;;;23.15;S0;;;;;;;;2MASX J10100562-0828389,MCG -01-26-028,PGC 029586;;; -NGC3143;G;10:10:03.98;-12:34:52.9;Hya;0.82;0.67;103;14.00;;12.21;11.91;11.46;23.07;SBb;;;;;;;;2MASX J10100398-1234527,MCG -02-26-033,PGC 029579;;; -NGC3144;G;10:15:32.18;+74:13:13.0;Dra;1.12;0.74;4;14.30;;11.57;10.86;10.53;23.04;SBab;;;;;3174;;;2MASX J10153223+7413129,MCG +12-10-023,PGC 029949,UGC 05519;;; -NGC3145;G;10:10:09.87;-12:26:01.6;Hya;2.87;1.37;20;12.40;;9.59;8.97;8.62;22.86;SBbc;;;;;;;;2MASX J10100986-1226014,MCG -02-26-036,PGC 029591;;; -NGC3146;G;10:11:09.87;-20:52:14.5;Hya;1.01;0.79;131;13.97;;11.15;10.47;10.15;22.62;SBb;;;;;;;;2MASX J10110987-2052146,ESO 567-023,ESO-LV 567-0230,MCG -03-26-029,PGC 029663;;; -NGC3147;G;10:16:53.65;+73:24:02.7;Dra;4.11;3.55;152;11.43;10.61;8.37;7.76;7.41;22.95;Sbc;;;;;;;;2MASX J10165363+7324023,IRAS 10126+7339,MCG +12-10-025,PGC 030019,UGC 05532;;; -NGC3148;*;10:13:43.83;+50:29:47.5;UMa;;;;6.87;6.63;6.04;5.96;5.92;;;;;;;;;;BD +51 1585,HD 088512,HIP 050097,SAO 27566,TYC 3440-1180-1;;;Eclipsing binary of beta Lyr type (semi-detached). -NGC3149;G;10:03:44.09;-80:25:18.0;Cha;1.15;0.94;23;12.91;;10.37;9.68;9.43;22.38;Sb;;;;;;;;2MASX J10034406-8025178,ESO 019-001,IRAS 10043-8010,PGC 029171;;; -NGC3150;G;10:13:26.32;+38:39:27.6;LMi;1.04;0.77;154;15.40;;12.39;11.71;11.37;23.88;Sb;;;;;;;;2MASX J10132629+3839273,MCG +07-21-017,PGC 029789,SDSS J101326.31+383927.5;;; -NGC3151;G;10:13:29.09;+38:37:11.4;LMi;0.93;0.42;164;15.10;;11.95;11.25;11.00;23.46;S0;;;;;;;;2MASX J10132910+3837113,MCG +07-21-018,PGC 029796,SDSS J101329.08+383711.4;;; -NGC3152;G;10:13:34.12;+38:50:35.5;LMi;0.74;0.65;54;15.50;;12.14;11.47;11.19;23.44;S0;;;;;;;;2MASX J10133414+3850355,MCG +07-21-018a,PGC 029805,SDSS J101334.11+385035.5,SDSS J101334.12+385035.5;;; -NGC3153;G;10:12:50.50;+12:40:00.0;Leo;1.73;0.89;165;13.60;;11.47;11.10;10.62;23.21;Sc;;;;;;;;2MASX J10125050+1240000,IRAS 10101+1254,MCG +02-26-032,PGC 029747,SDSS J101250.51+123959.7,UGC 05505;;; -NGC3154;G;10:13:01.28;+17:02:03.0;Leo;0.83;0.39;121;14.30;;11.47;10.78;10.39;22.21;SBa;;;;;;;;2MASX J10130129+1702030,MCG +03-26-040,PGC 029759,SDSS J101301.09+170203.3,SDSS J101301.27+170202.9,UGC 05507;;Multiple SDSS entries describe this object.; -NGC3155;G;10:17:39.85;+74:20:50.6;Dra;1.21;0.64;37;13.90;;11.72;11.11;10.83;22.71;Sbc;;;;;3194;;;2MASX J10173987+7420504,IRAS 10133+7436,MCG +12-10-026,PGC 030064,UGC 05538;;; -NGC3156;G;10:12:41.25;+03:07:45.7;Sex;1.91;1.02;50;12.80;;10.40;9.82;9.55;23.18;S0;;;;;;;;2MASX J10124120+0307455,MCG +01-26-019,PGC 029730,SDSS J101241.24+030745.6,SDSS J101241.24+030745.7,SDSS J101241.25+030745.6,SDSS J101241.25+030745.7,UGC 05503;;; -NGC3157;G;10:11:42.43;-31:38:34.3;Ant;1.70;0.44;39;13.94;;10.74;10.04;9.75;22.78;SBc;;;;;;2555;;2MASX J10114242-3138341,ESO 435-051,ESO-LV 435-0510,IRAS 10094-3123,MCG -05-24-026,PGC 029691;;; -NGC3158;G;10:13:50.52;+38:45:53.6;LMi;2.32;1.94;152;13.40;;9.81;9.10;8.80;23.59;E;;;;;;;;2MASX J10135049+3845536,MCG +07-21-020,PGC 029822,SDSS J101350.51+384553.6,SDSS J101350.52+384553.6,UGC 05511;;; -NGC3159;G;10:13:52.83;+38:39:16.1;LMi;0.96;0.76;156;14.90;;11.38;10.77;10.51;23.35;E;;;;;;;;2MASX J10135280+3839166,MCG +07-21-021,PGC 029825,SDSS J101352.83+383916.0,SDSS J101352.83+383916.1,SDSS J101352.84+383916.1;;; -NGC3160;G;10:13:55.07;+38:50:34.2;LMi;1.25;0.25;140;15.20;;11.57;10.84;10.56;23.36;Sab;;;;;;;;2MASX J10135502+3850346,MCG +07-21-023,PGC 029830,SDSS J101355.11+385034.5,SDSS J101355.12+385034.5,UGC 05513;;; -NGC3161;G;10:13:59.20;+38:39:25.7;LMi;0.46;0.28;6;15.30;;11.91;11.16;10.93;22.31;E;;;;;;;;2MASX J10135920+3839256,MCG +07-21-022,PGC 029837,SDSS J101359.18+383925.9,SDSS J101359.19+383925.9;;; -NGC3162;G;10:13:31.59;+22:44:15.2;Leo;2.09;1.69;26;12.20;;10.21;9.62;9.47;22.45;SABc;;;;;3575;;;2MASX J10133157+2244152,IRAS 10107+2259,MCG +04-24-019,PGC 029800,SDSS J101331.58+224415.2,UGC 05510;;; -NGC3163;G;10:14:07.10;+38:39:09.2;LMi;1.14;0.97;40;14.40;;10.99;10.28;10.01;23.38;E-S0;;;;;;;;2MASX J10140714+3839096,MCG +07-21-026,PGC 029846,SDSS J101407.10+383909.1,UGC 05517;;; -NGC3164;G;10:15:11.42;+56:40:19.5;UMa;0.80;0.57;178;14.50;;12.33;11.57;11.24;22.76;Sb;;;;;;;;2MASX J10151143+5640191,MCG +10-15-036,PGC 029928,SDSS J101511.42+564019.5,SDSS J101511.42+564019.8,SDSS J101511.43+564019.5,UGC 05527;;; -NGC3165;G;10:13:31.30;+03:22:30.1;Sex;1.17;0.54;175;14.50;;;;;22.90;Sm;;;;;;;;MCG +01-26-023,PGC 029798,SDSS J101331.29+032230.0,SDSS J101331.30+032230.0,SDSS J101331.30+032230.1,UGC 05512;;; -NGC3166;G;10:13:45.60;+03:25:29.0;Sex;4.50;2.84;87;11.20;;8.17;7.49;7.21;23.27;S0-a;;;;;;;;2MASX J10134567+0325288,IRAS 10111+0340,MCG +01-26-024,PGC 029814,SDSS J101345.77+032529.8,SDSS J101345.78+032529.9,UGC 05516;;Multiple SDSS entries describe this object.; -NGC3167;Other;10:14:35.89;+29:35:46.8;LMi;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3168;G;10:16:23.01;+60:14:05.8;UMa;0.91;0.79;35;14.60;;11.23;10.51;10.17;23.18;E;;;;;;;;2MASX J10162300+6014058,MCG +10-15-052,PGC 030001,SDSS J101622.99+601405.9,SDSS J101623.01+601405.6,SDSS J101623.01+601405.7,SDSS J101623.01+601405.8,UGC 05536;;; -NGC3169;G;10:14:15.05;+03:27:57.9;Sex;4.34;2.65;49;13.46;12.41;8.25;7.56;7.28;22.93;Sa;;;;;;;;2MASX J10141509+0327580,IRAS 10116+0342,MCG +01-26-026,PGC 029855,SDSS J101414.21+032802.6,SDSS J101415.04+032758.0,UGC 05525;;; -NGC3170;**;10:16:14.53;+46:36:44.5;UMa;;;;;;;;;;;;;;;;;;;;; -NGC3171;G;10:15:36.82;-20:38:50.6;Hya;1.87;1.25;173;13.85;;10.92;10.22;10.02;24.14;E-S0;;;;;;;;2MASX J10153684-2038502,ESO 567-031,ESO-LV 567-0310,MCG -03-26-032,PGC 029950;;; -NGC3172;G;11:47:14.00;+89:05:35.0;UMi;1.14;1.00;85;14.90;;10.39;9.64;9.32;23.90;S0;;;;;;;;2MASX J11471192+8905357,MCG +15-01-011,PGC 036847;;; -NGC3173;G;10:14:34.87;-27:41:34.2;Ant;1.90;1.71;19;13.56;;11.01;10.32;10.09;23.69;Sc;;;;;;;;2MASX J10143487-2741339,ESO 500-016,ESO-LV 500-0160,IRAS 10122-2726,MCG -04-24-022,PGC 029883;;Confused HIPASS source; -NGC3174;Dup;10:15:32.18;+74:13:13.0;Dra;;;;;;;;;;;;;;;3144;;;;;; -NGC3175;G;10:14:42.11;-28:52:19.4;Ant;5.25;1.95;55;12.14;;8.76;8.05;7.79;23.84;Sab;;;;;;;;2MASX J10144211-2852194,ESO 436-003,ESO-LV 436-0030,IRAS 10124-2837,MCG -05-24-028,PGC 029892,UGCA 207;;; -NGC3176;Other;10:15:17.54;-19:01:57.2;Hya;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3177;G;10:16:34.14;+21:07:23.0;Leo;1.44;1.10;140;12.80;;10.22;9.53;9.23;22.34;Sb;;;;;;;;2MASX J10163416+2107223,IRAS 10138+2122,MCG +04-24-023,PGC 030010,SDSS J101634.13+210722.9,SDSS J101634.14+210723.0,UGC 05544;;; -NGC3178;G;10:16:09.17;-15:47:28.6;Hya;1.47;0.93;71;13.00;;11.44;10.69;10.51;22.87;Sc;;;;;;;;2MASX J10160916-1547287,MCG -03-26-034,PGC 029980;;; -NGC3179;G;10:17:57.21;+41:06:51.5;UMa;1.86;0.41;48;14.20;;11.00;10.28;10.04;24.04;S0;;;;;;;;2MASX J10175720+4106510,MCG +07-21-036,PGC 030078,SDSS J101757.20+410651.4,SDSS J101757.21+410651.4,SDSS J101757.21+410651.5,UGC 05555;;; -NGC3180;HII;10:18:09.67;+41:26:42.1;UMa;;;;;;;;;;;;;;;;;;;;;SIMBAD considers this a duplicate of NGC3184 -NGC3181;HII;10:18:11.51;+41:24:45.7;UMa;2.84;0.83;123;15.79;;;;;;;;;;;;;;;;Includes at least three HII regions: NGC 3184:[HK83] 122, 123, and 125.;Dimensions and B-Mag taken from LEDA -NGC3182;G;10:19:33.02;+58:12:20.6;UMa;1.92;1.59;145;13.00;;10.38;9.63;9.47;23.15;S0-a;;;;;;;;2MASX J10193301+5812209,MCG +10-15-062,PGC 030176,SDSS J101933.02+581220.6,SDSS J101933.03+581220.6,UGC 05568;;; -NGC3183;G;10:21:49.00;+74:10:36.7;Dra;2.22;1.38;160;12.68;;10.25;9.51;9.24;22.78;SBbc;;;;;3218;;;2MASX J10214899+7410368,IRAS 10176+7425,MCG +12-10-028,PGC 030323,TYC 4390-322-1,UGC 05582;;HOLM 177B is a star.; -NGC3184;G;10:18:16.86;+41:25:26.6;UMa;7.40;7.18;117;10.40;;8.08;7.43;7.23;23.47;SABc;;;;;;;;2MASX J10181698+4125277,IRAS 10152+4140,MCG +07-21-037,PGC 030087,SDSS J101816.90+412527.5,UGC 05557;;IRAS source is extended over optical size of galaxy.; -NGC3185;G;10:17:38.57;+21:41:17.7;Leo;2.15;1.23;131;12.99;12.17;10.07;9.42;9.15;23.07;Sa;;;;;;;;2MASX J10173858+2141178,IRAS 10148+2156,MCG +04-24-024,PGC 030059,SDSS J101738.56+214117.6,SDSS J101738.57+214117.7,UGC 05554;;; -NGC3186;G;10:15:53.39;+06:57:49.5;Leo;1.08;1.08;110;15.00;;11.65;11.40;10.82;24.08;E;;;;;;;;2MASX J10155337+0657495,MCG +01-26-028,PGC 029963,SDSS J101553.38+065749.5;;NGC identification is not certain.; -NGC3187;G;10:17:47.86;+21:52:24.0;Leo;2.24;0.74;108;13.91;13.44;12.15;11.45;10.85;23.35;SBc;;;;;;;;2MASX J10174784+2152238,IRAS 10150+2207,MCG +04-24-025,PGC 030068,SDSS J101747.86+215224.0,UGC 05556;;; -NGC3188;G;10:19:42.81;+57:25:24.5;UMa;0.84;0.63;180;14.70;;12.00;11.51;11.25;23.24;Sab;;;;;;;;2MASX J10194277+5725249,MCG +10-15-065,PGC 030183,SDSS J101942.79+572524.7,SDSS J101942.80+572524.5,SDSS J101942.81+572524.4,SDSS J101942.81+572524.5,UGC 05569;;; -NGC3188A;G;10:19:38.28;+57:25:06.9;UMa;0.44;0.21;77;17.00;;14.84;13.65;13.64;23.34;SBc;;;;;;;;2MASX J10193831+5725069,MCG +10-15-064,PGC 030179,SDSS J101938.27+572506.9,SDSS J101938.28+572506.8,SDSS J101938.28+572506.9,UGC 05569 NOTES01;;; -NGC3189;G;10:18:05.63;+21:49:56.3;Leo;3.64;1.22;124;12.12;11.15;8.50;7.77;7.46;22.97;Sa;;;;;3190;;;2MASX J10180564+2149549,IRAS 10153+2204,MCG +04-24-026,PGC 030083,SDSS J101805.65+214956.0,UGC 05559;;NGC 3189 is the southwestern side of NGC 3190.; -NGC3190;Dup;10:18:05.63;+21:49:56.3;Leo;;;;;;;;;;;;;;;3189;;;;;; -NGC3191;G;10:19:05.13;+46:27:14.8;UMa;0.71;0.52;4;13.90;;12.08;11.39;11.15;21.94;SBbc;;;;;3192;;;2MASX J10190493+4627121,IRAS 10160+4642,MCG +08-19-018,PGC 030136,SDSS J101905.12+462714.7,SDSS J101905.13+462714.7,UGC 05565;;; -NGC3192;Dup;10:19:05.13;+46:27:14.8;UMa;;;;;;;;;;;;;;;3191;;;;;; -NGC3193;G;10:18:24.90;+21:53:38.3;Leo;2.36;2.16;20;11.83;10.88;8.86;8.19;7.98;22.73;E;;;;;;;;2MASX J10182488+2153383,MCG +04-24-027,PGC 030099,UGC 05562;;; -NGC3194;Dup;10:17:39.85;+74:20:50.6;Dra;;;;;;;;;;;;;;;3155;;;;;; -NGC3195;PN;10:09:20.98;-80:51:30.9;Cha;0.70;;;11.50;11.60;;;;;;;16.10;15.30;;;;;C 109,ESO 019-002,IRAS 10099-8036,PN G296.6-20.0;;; -NGC3196;G;10:18:49.03;+27:40:08.2;Leo;0.46;0.26;121;15.70;;12.93;12.24;11.80;23.30;E;;;;;;;;2MASX J10184905+2740077,PGC 030121,SDSS J101849.02+274008.2,SDSS J101849.03+274008.2;;; -NGC3197;G;10:14:27.67;+77:49:12.9;Dra;1.11;0.80;161;14.50;;11.45;10.79;10.38;23.14;Sbc;;;;;;;;2MASX J10142763+7749129,MCG +13-08-009,PGC 029870,UGC 05500;;; -NGC3198;G;10:19:54.95;+45:32:58.6;UMa;6.46;1.84;30;10.87;10.33;8.73;8.06;7.78;22.68;Sc;;;;;;;;2MASX J10195499+4532588,IRAS 10168+4548,MCG +08-19-020,PGC 030197,SDSS J101954.92+453259.0,SDSS J101954.92+453259.1,UGC 05572;;; -NGC3199;Neb;10:17:24.43;-57:55:20.0;Car;20.00;15.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC3200;G;10:18:36.55;-17:58:57.1;Hya;4.07;1.14;168;12.92;;9.92;9.06;8.82;23.48;Sc;;;;;;;;2MASX J10183654-1758571,ESO 567-045,ESO-LV 567-0450,MCG -03-26-037,PGC 030108,UGCA 210;;; -NGC3201;GCl;10:17:36.76;-46:24:40.4;Vel;9.60;;;9.18;8.24;;;;;;;;;;;;;C 079,MWSC 1788;;; -NGC3202;G;10:20:31.74;+43:01:17.8;UMa;1.27;0.81;25;14.20;;11.21;10.58;10.28;23.17;Sa;;;;;;;;2MASX J10203177+4301179,MCG +07-21-041,PGC 030236,SDSS J102031.73+430117.7,SDSS J102031.74+430117.7,SDSS J102031.74+430117.8,UGC 05581;;; -NGC3203;G;10:19:33.83;-26:41:56.0;Hya;3.16;0.64;60;13.22;;9.80;9.12;8.86;24.20;S0-a;;;;;;;;2MASX J10193384-2641562,ESO 500-024,ESO-LV 500-0240,MCG -04-25-002,PGC 030177;;; -NGC3204;G;10:20:11.08;+27:49:01.4;Leo;1.25;0.88;106;14.80;;11.78;11.16;10.87;23.54;Sb;;;;;;;;2MASX J10201103+2749011,MCG +05-25-001,PGC 030214,SDSS J102011.08+274901.3,UGC 05580;;; -NGC3205;G;10:20:49.97;+42:58:19.4;UMa;1.31;1.11;158;14.40;;11.20;10.47;10.23;23.51;Sa;;;;;;;;2MASX J10204991+4258199,MCG +07-21-042,PGC 030254,SDSS J102049.96+425819.3,SDSS J102049.96+425819.4,SDSS J102049.97+425819.3,SDSS J102049.97+425819.4,UGC 05585;;; -NGC3206;G;10:21:47.59;+56:55:49.5;UMa;2.30;1.17;7;12.70;;11.88;11.38;11.15;23.39;SBc;;;;;;;;2MASX J10214758+5655494,IRAS 10184+5710,MCG +10-15-069,PGC 030322,SDSS J102147.59+565549.5,UGC 05589;;; -NGC3207;G;10:21:00.55;+42:59:07.1;UMa;1.24;0.83;87;14.30;;11.56;10.85;10.54;23.58;S0;;;;;;;;2MASX J10210058+4259068,MCG +07-21-043,PGC 030267,SDSS J102100.54+425907.0,SDSS J102100.54+425907.1,SDSS J102100.55+425907.1,UGC 05587;;; -NGC3208;G;10:19:41.29;-25:48:53.1;Hya;1.78;1.55;55;13.73;;10.81;10.16;9.41;23.44;Sc;;;;;;;;2MASX J10194128-2548532,ESO 500-025,ESO-LV 500-0250,IRAS 10173-2533,MCG -04-25-003,PGC 030180;;; -NGC3209;G;10:20:38.42;+25:30:17.9;Leo;1.57;1.21;80;13.90;;10.32;9.62;9.34;23.75;E;;;;;;;;2MASX J10203840+2530177,MCG +04-25-002,PGC 030242,SDSS J102038.42+253018.2,UGC 05584;;; -NGC3210;**;10:27:59.20;+79:49:57.1;Dra;;;;;;;;;;;;;;;;;;;;; -NGC3211;PN;10:17:50.51;-62:40:12.2;Car;0.27;;;11.80;10.70;12.54;12.30;11.60;;;;18.00;;;;;HD 89516;2MASX J10175054-6240121,ESO 127-015,IRAS 10162-6225,PN G286.3-04.8;;; -NGC3212;G;10:28:16.46;+79:49:24.2;Dra;0.83;0.75;88;14.30;;11.92;11.40;11.16;22.72;SBb;;;;;;;;2MASX J10281670+7949240,MCG +13-08-021,PGC 030813,UGC 05643;;Called 'NGC 3210' in VV and Arp.; -NGC3213;G;10:21:17.35;+19:39:06.4;Leo;1.05;0.83;128;14.30;;11.17;10.54;10.42;22.85;Sbc;;;;;;;;2MASX J10211731+1939060,MCG +03-27-004,PGC 030283,SDSS J102117.34+193906.3,SDSS J102117.35+193906.3,SDSS J102117.35+193906.4,UGC 05590;;; -NGC3214;G;10:23:08.79;+57:02:20.7;UMa;1.08;0.45;35;14.00;;11.88;11.15;10.83;23.75;S0-a;;;;;;;;2MASX J10230877+5702204,MCG +10-15-071,PGC 030419,SDSS J102308.78+570220.9,SDSS J102308.79+570220.7,SDSS J102308.79+570220.8;;; -NGC3215;G;10:28:40.58;+79:48:47.1;Dra;0.95;0.52;40;14.00;;11.37;10.70;10.33;22.32;SBbc;;;;;;;;2MASX J10284047+7948470,MCG +13-08-022,PGC 030840,UGC 05659;;Called 'NGC 3212' in VV and Arp.; -NGC3216;G;10:21:41.23;+23:55:23.0;Leo;1.71;1.07;176;15.10;;10.88;10.27;9.95;24.47;E;;;;;;;;2MASX J10214125+2355224,MCG +04-25-007,PGC 030312,SDSS J102141.22+235523.0,SDSS J102141.23+235523.0,UGC 05593;;; -NGC3217;G;10:23:32.62;+10:57:35.0;Leo;0.53;0.40;22;15.20;;12.93;12.20;11.97;22.42;Sc;;;;;;0606;;2MASX J10233259+1057353,IRAS 10208+1112,MCG +02-27-006,PGC 030448,SDSS J102332.60+105734.9,SDSS J102332.61+105734.9,SDSS J102332.62+105735.0;;; -NGC3218;Dup;10:21:49.00;+74:10:36.7;Dra;;;;;;;;;;;;;;;3183;;;;;; -NGC3219;G;10:22:37.44;+38:34:45.0;LMi;1.08;0.63;70;15.40;;11.88;11.34;11.01;24.13;E-S0;;;;;;;;2MASX J10223745+3834447,MCG +07-21-051,PGC 030383,SDSS J102237.40+383444.9,SDSS J102237.41+383444.9,SDSS J102237.41+383445.0;;; -NGC3220;G;10:23:44.66;+57:01:36.7;UMa;1.18;0.48;96;13.70;;12.17;11.79;11.60;22.57;Sb;;;;;;0604;;2MASX J10234426+5701375,MCG +10-15-073,PGC 030462,SDSS J102344.65+570136.8,SDSS J102344.66+570136.7,UGC 05614;;; -NGC3221;G;10:22:19.98;+21:34:10.5;Leo;1.70;0.76;166;14.30;;10.17;9.26;8.87;23.26;Sc;;;;;;;;2MASX J10221998+2134105,IRAS 10195+2149,MCG +04-25-013,PGC 030358,SDSS J102219.83+213406.9,UGC 05601;;The SDSS position is 4.1 arcsec southwest of the nucleus.; -NGC3222;G;10:22:34.51;+19:53:13.3;Leo;1.12;1.01;25;14.50;;;;10.98;22.72;S0;;;;;;;;MCG +03-27-011,PGC 030377,SDSS J102234.48+195314.2,UGC 05610;;; -NGC3223;G;10:21:35.08;-34:16:00.5;Ant;4.28;2.79;132;11.82;10.82;8.55;7.86;7.58;23.36;Sb;;;;;;2571;;2MASX J10213507-3416004,ESO 375-012,ESO-LV 375-0120,IRAS 10193-3400,MCG -06-23-023,PGC 030308;;; -NGC3224;G;10:21:41.19;-34:41:48.4;Ant;1.72;1.41;120;13.15;;9.78;9.08;8.84;23.23;E;;;;;;;;2MASX J10214118-3441484,ESO 375-013,ESO-LV 375-0130,MCG -06-23-024,PGC 030314;;; -NGC3225;G;10:25:09.90;+58:09:00.0;UMa;1.65;0.75;154;13.30;;11.80;11.42;11.15;22.98;Sc;;;;;;;;2MASX J10250992+5809000,IRAS 10218+5824,MCG +10-15-077,PGC 030569,SDSS J102509.90+580900.0,UGC 05631;;; -NGC3226;G;10:23:27.01;+19:53:54.7;Leo;3.13;2.26;13;14.32;13.33;9.41;8.89;8.57;23.69;E;;;;;;;;2MASX J10232701+1953543,MCG +03-27-015,PGC 030440,SDSS J102326.99+195354.6,SDSS J102326.99+195354.7,UGC 05617;;; -NGC3227;G;10:23:30.58;+19:51:54.2;Leo;3.98;1.86;156;12.61;11.79;11.27;10.53;9.92;22.88;SABa;;;;;;;;2MASX J10233060+1951538,IRAS 10207+2007,MCG +03-27-016,PGC 030445,SDSS J102330.57+195154.3,UGC 05620;;; -NGC3228;OCl;10:21:22.24;-51:43:21.3;Vel;6.60;;;6.15;6.00;;;;;;;;;;;;;2MASX J10212483-5143085,MWSC 1794;;; -NGC3229;Other;10:23:24.36;+00:03:53.3;Sex;;;;;;;;;;;;;;;;;;SDSS J102324.36+000353.3;;Galactic triple star.; -NGC3230;G;10:23:43.96;+12:34:04.0;Leo;2.02;0.64;114;14.90;;9.83;9.11;8.88;24.72;S0;;;;;;;;2MASX J10234394+1234043,MCG +02-27-007,PGC 030463,SDSS J102343.96+123403.9,UGC 05624;;; -NGC3231;OCl;10:26:57.85;+66:48:54.6;UMa;;;;;;;;;;;;;;;;;;;;; -NGC3232;G;10:24:24.23;+28:01:34.1;LMi;0.85;0.69;57;15.40;;;;;23.70;SABa;;;;;;;;MCG +05-25-004,PGC 030508,SDSS J102424.22+280134.0,SDSS J102424.22+280134.1,SDSS J102424.23+280134.1;;This is a superposed (merging?) pair of galaxies.; -NGC3233;G;10:21:57.46;-22:16:03.9;Hya;1.52;0.64;141;13.53;;10.45;9.71;9.42;23.07;S0-a;;;;;;;;2MASX J10215747-2216038,ESO 568-001,ESO-LV 568-0010,IRAS 10195-2200,MCG -04-25-004,PGC 030336;;; -NGC3234;G;10:24:59.31;+28:01:26.1;LMi;1.34;0.96;85;14.70;;10.88;10.17;10.01;23.82;E-S0;;;;;3235;;;2MASX J10245932+2801259,MCG +05-25-007,PGC 030553,SDSS J102459.31+280126.0,UGC 05635;;; -NGC3235;Dup;10:24:59.31;+28:01:26.1;LMi;;;;;;;;;;;;;;;3234;;;;;; -NGC3236;G;10:26:48.51;+61:16:22.5;UMa;0.95;0.67;52;15.30;;12.23;11.53;11.41;23.87;E;;;;;;;;2MASX J10264855+6116226,MCG +10-15-081,PGC 030711,SDSS J102648.50+611622.9,SDSS J102648.51+611622.4,SDSS J102648.51+611622.5,SDSS J102648.51+611622.6;;; -NGC3237;G;10:25:43.30;+39:38:47.0;UMa;1.07;1.04;37;14.20;;;;;22.98;S0;;;;;;;;MCG +07-22-003,PGC 030610,SDSS J102543.29+393846.9,SDSS J102543.30+393846.9,UGC 05640;;; -NGC3238;G;10:26:42.99;+57:13:34.8;UMa;1.11;0.91;151;13.90;;10.95;10.23;9.95;23.03;S0;;;;;;;;2MASX J10264304+5713353,MCG +10-15-080,PGC 030686,SDSS J102642.97+571335.0,SDSS J102642.98+571334.8,SDSS J102642.99+571334.8,UGC 05649;;; -NGC3239;G;10:25:04.89;+17:09:48.9;Leo;3.61;2.71;80;13.50;;;;;22.95;IB;;;;;;;;2MASX J10250486+1709492,IRAS 10224+1724,MCG +03-27-025,PGC 030560,SDSS J102504.88+170949.4,UGC 05637;;; -NGC3240;G;10:24:30.63;-21:47:27.7;Hya;1.19;1.03;78;13.90;;11.41;10.72;10.59;22.90;Sc;;;;;;;;2MASX J10243063-2147275,ESO 568-003,ESO-LV 568-0030,IRAS 10221-2132,MCG -04-25-007,PGC 030515;;; -NGC3241;G;10:24:16.96;-32:28:57.4;Ant;2.29;1.55;122;12.93;;9.85;9.17;8.85;23.27;SABa;;;;;;;;2MASX J10241695-3228574,ESO 436-016,ESO-LV 436-0160,IRAS 10220-3213,MCG -05-25-002,PGC 030498;;; -NGC3242;PN;10:24:46.08;-18:38:32.0;Hya;0.42;;;8.60;7.70;12.10;12.46;11.75;;;;12.02;12.31;;;;BD -17 3140,HD 90255,SAO 155965;C 059,ESO 568-005,IRAS 10223-1823,PN G261.0+32.0;Jupiter's Ghost Nebula;; -NGC3243;G;10:26:21.47;-02:37:19.9;Sex;1.73;1.19;120;14.00;;10.78;10.15;9.92;24.30;S0;;;;;;;;2MASX J10262146-0237197,MCG +00-27-012,PGC 030655,SDSS J102621.46-023719.8,UGC 05652;;; -NGC3244;G;10:25:28.84;-39:49:39.2;Ant;2.18;1.46;170;13.09;12.28;10.58;9.86;9.61;23.02;Sc;;;;;;;;2MASX J10252885-3949392,ESO 317-024,ESO-LV 317-0240,IRAS 10232-3934,MCG -07-22-005,PGC 030594;;; -NGC3245;G;10:27:18.39;+28:30:26.8;LMi;3.61;2.30;176;11.60;;8.79;8.10;7.86;23.17;S0;;;;;;;;2MASX J10271836+2830267,IRAS 10245+2845,MCG +05-25-013,PGC 030744,SDSS J102718.40+283026.6,UGC 05663;;; -NGC3245A;G;10:27:01.13;+28:38:21.6;LMi;2.32;0.30;148;15.40;;12.59;11.72;11.83;24.43;SBb;;;;;;;;2MASX J10270114+2838218,MCG +05-25-012,PGC 030714,SDSS J102701.12+283821.5,SDSS J102701.13+283821.6,UGC 05662;;; -NGC3246;G;10:26:41.81;+03:51:42.9;Sex;1.94;0.95;98;13.80;;11.64;10.93;10.73;23.43;Sd;;;;;;;;2MASX J10264176+0351435,IRAS 10240+0407,MCG +01-27-009,PGC 030684,SDSS J102641.71+035141.8,SDSS J102641.80+035142.9,SDSS J102641.81+035142.9,UGC 05661;;; -NGC3247;HII;10:24:14.00;-57:45:48.0;Car;5.00;5.00;;7.99;7.60;;;;;;;;;;;;;;;Probably associated with the Galactic open cluster ESO 127-SC 018.;Dimensions taken from LEDA -NGC3248;G;10:27:45.44;+22:50:49.9;Leo;1.70;0.94;135;13.90;;10.41;9.79;9.53;23.77;S0;;;;;;;;2MASX J10274542+2250498,MCG +04-25-020,PGC 030776,SDSS J102745.44+225049.8,UGC 05669;;; -NGC3249;G;10:26:22.21;-34:57:49.3;Ant;1.57;1.40;126;13.86;;10.91;10.25;10.03;23.44;Sc;;;;;;;;2MASX J10262222-3457493,ESO 375-024,ESO-LV 375-0240,IRAS 10240-3442,MCG -06-23-028,PGC 030657;;; -NGC3250;G;10:26:32.28;-39:56:38.2;Ant;2.96;2.20;140;12.26;11.03;8.68;7.96;7.71;23.38;E;;;;;;;;2MASX J10263227-3956380,ESO 317-026,ESO-LV 317-0260,MCG -07-22-007,PGC 030671;;; -NGC3250A;G;10:27:53.73;-40:04:52.8;Ant;1.62;0.32;88;15.67;;11.65;10.85;10.39;24.28;Sb;;;;;;;;2MASX J10275371-4004530,ESO 317-030,ESO-LV 317-0300,IRAS 10257-3949,PGC 030790;;; -NGC3250B;G;10:27:44.77;-40:26:06.1;Vel;2.77;0.80;6;13.83;13.33;10.26;9.48;9.20;24.12;SBa;;;;;;;;2MASX J10274478-4026060,ESO 317-029,ESO-LV 317-0290,IRAS 10255-4010,MCG -07-22-009,PGC 030775;;; -NGC3250C;G;10:27:42.47;-40:00:09.3;Ant;1.91;0.70;58;14.28;14.23;10.64;9.88;9.58;23.77;SABa;;;;;;;;2MASX J10274247-4000090,ESO 317-028,ESO-LV 317-0280,IRAS 10255-3944,MCG -07-22-008,PGC 030774;;; -NGC3250D;G;10:27:57.94;-39:48:53.2;Ant;1.89;0.33;26;14.32;;11.04;10.36;10.07;24.36;S0;;;;;;;;2MASX J10275793-3948531,ESO 317-031,ESO-LV 317-0310,MCG -07-22-011,PGC 030792;;; -NGC3250E;G;10:29:00.70;-40:04:58.1;Ant;1.82;1.45;133;13.19;;11.09;10.44;10.23;23.15;Sc;;;;;;;;2MASX J10290070-4004583,ESO 317-034,ESO-LV 317-0340,IRAS 10268-3949,MCG -07-22-013,PGC 030865;;; -NGC3251;G;10:29:16.84;+26:05:57.3;Leo;2.06;0.50;55;14.20;;10.88;10.09;9.76;23.34;SBbc;;;;;;2579;;2MASX J10291680+2605567,IRAS 10264+2621,MCG +04-25-023,PGC 030892,SDSS J102916.83+260557.2,SDSS J102916.84+260557.3,UGC 05684;;; -NGC3252;G;10:34:23.14;+73:45:53.9;Dra;1.87;0.66;36;14.20;;11.18;10.49;10.26;23.30;SBcd;;;;;;;;2MASX J10342310+7345539,IRAS 10303+7401,MCG +12-10-049,PGC 031278,UGC 05732;;NED follows RC2 for NGC identification. See also UGC 05689.; -NGC3253;G;10:28:27.32;+12:42:14.6;Leo;1.15;1.07;150;14.40;;11.75;11.05;10.80;23.30;Sbc;;;;;;;;2MASX J10282730+1242144,IRAS 10257+1257,MCG +02-27-021,PGC 030829,SDSS J102827.32+124214.5,UGC 05674;;; -NGC3254;G;10:29:19.94;+29:29:30.6;LMi;2.34;1.12;50;12.29;11.60;9.75;9.10;8.80;22.31;Sbc;;;;;;;;2MASX J10291992+2929291,MCG +05-25-018,PGC 030895,SDSS J102919.94+292930.5,UGC 05685;;; -NGC3255;OCl;10:26:31.36;-60:40:30.7;Car;4.80;;;11.54;11.00;;;;;;;;;;;;;MWSC 1804;;; -NGC3256;G;10:27:51.27;-43:54:13.5;Vel;3.29;2.26;83;11.83;11.33;;;;23.12;Sbc;;;;;;;;2MASX J10275128-4354135,ESO 263-038,ESO-LV 263-0380,IRAS 10257-4338,MCG -07-22-010,PGC 030785;;Confused HIPASS source; -NGC3256A;G;10:25:51.04;-43:44:53.1;Vel;1.33;0.65;85;15.05;;13.44;12.71;12.90;23.78;SBm;;;;;;;;2MASX J10255227-4344525,ESO 263-034,ESO-LV 263-0340,PGC 030626;;; -NGC3256B;G;10:29:01.07;-44:24:10.4;Vel;2.10;0.61;135;13.78;;10.58;9.86;9.54;23.21;SBbc;;;;;;;;2MASX J10290107-4424104,ESO 263-039,ESO-LV 263-0390,IRAS 10268-4408,MCG -07-22-014,PGC 030867;;; -NGC3256C;G;10:29:05.74;-43:50:57.4;Vel;1.91;1.30;90;13.31;;11.02;10.30;9.87;23.13;SBcd;;;;;;;;2MASX J10290573-4350574,ESO 263-041,ESO-LV 263-0410,IRAS 10269-4335,MCG -07-22-016,PGC 030873;;; -NGC3257;G;10:28:47.12;-35:39:29.1;Ant;1.08;0.87;170;14.05;12.54;11.14;10.44;10.14;23.01;E-S0;;;;;;;;2MASX J10284710-3539289,ESO 375-036,ESO-LV 375-0360,MCG -06-23-031,PGC 030849;;; -NGC3258;G;10:28:53.57;-35:36:19.9;Ant;2.94;2.34;67;12.50;11.72;9.25;8.56;8.31;23.70;E;;;;;;;;2MASX J10285358-3536199,ESO 375-037,ESO-LV 375-0370,MCG -06-23-032,PGC 030859;;; -NGC3258A;G;10:28:19.16;-35:27:16.1;Ant;1.22;0.44;170;14.56;13.64;11.32;10.61;10.42;23.24;S0-a;;;;;;;;2MASX J10281915-3527159,ESO 375-032,ESO-LV 375-0320,MCG -06-23-030,PGC 030815;;; -NGC3258B;G;10:30:25.30;-35:33:48.8;Ant;1.06;0.35;47;15.50;;12.39;11.81;11.40;24.00;S0-a;;;;;;;;2MASX J10302530-3533483,PGC 083128;;; -NGC3258C;G;10:31:24.15;-35:13:13.7;Ant;1.11;0.74;47;14.61;;11.46;10.87;10.79;23.27;Sa;;;;;;;;2MASX J10312413-3513136,ESO 375-053,ESO-LV 375-0530,MCG -06-23-048,PGC 031053;;; -NGC3258D;G;10:31:55.73;-35:24:35.3;Ant;1.98;0.84;9;13.99;;10.63;10.03;9.80;23.53;Sb;;;;;;;;2MASX J10315572-3524353,ESO 375-058,ESO-LV 375-0580,MCG -06-23-051,PGC 031094;;; -NGC3258E;G;10:32:24.91;-34:59:54.1;Ant;1.57;0.37;29;15.42;;12.20;11.45;11.05;24.08;Sb;;;;;;;;2MASX J10322490-3459538,ESO 375-060,ESO-LV 375-0600,MCG -06-23-051B,PGC 031131;;; -NGC3259;G;10:32:34.85;+65:02:27.9;UMa;1.72;0.90;16;17.55;16.89;11.11;10.43;10.22;22.60;SABb;;;;;;;;2MASX J10323481+6502277,IRAS 10291+6517,MCG +11-13-027,PGC 031145,SDSS J103234.85+650227.9,UGC 05717;;; -NGC3260;G;10:29:06.39;-35:35:42.7;Ant;1.41;1.22;9;13.72;14.39;10.31;9.62;9.42;23.35;E;;;;;;;;2MASX J10290637-3535429,ESO 375-040,ESO-LV 375-0400,MCG -06-23-033,PGC 030875;;; -NGC3261;G;10:29:01.46;-44:39:24.6;Vel;3.65;2.84;76;11.91;11.02;9.11;8.46;8.25;23.46;Sbc;;;;;;;;2MASX J10290147-4439244,ESO 263-040,ESO-LV 263-0400,IRAS 10268-4423,MCG -07-22-015,PGC 030868;;; -NGC3262;G;10:29:06.23;-44:09:34.8;Vel;1.17;0.91;109;14.24;13.76;10.96;10.34;10.00;23.22;S0;;;;;;;;2MASX J10290624-4409344,ESO 263-042,ESO-LV 263-0420,MCG -07-22-017,PGC 030876;;; -NGC3263;G;10:29:13.36;-44:07:22.5;Vel;7.83;1.84;99;11.46;;9.60;8.77;8.51;24.40;SBc;;;;;;;;2MASX J10291339-4407225,ESO 263-043,ESO-LV 263-0430,IRAS 10270-4351,MCG -07-22-018,PGC 030887;;ESO declination is incorrect, but ESO-LV declination is correct.; -NGC3264;G;10:32:19.70;+56:05:07.0;UMa;2.09;0.62;2;14.30;;;;;21.88;Sd;;;;;;;;IRAS 10291+5620,MCG +09-17-069,PGC 031125,UGC 05719;;; -NGC3265;G;10:31:06.77;+28:47:48.0;LMi;0.97;0.71;73;13.87;13.54;11.37;10.68;10.44;22.83;E;;;;;;;;2MASX J10310676+2847470,IRAS 10282+2903,MCG +05-25-019,PGC 031029,SDSS J103106.76+284747.9,SDSS J103106.77+284748.0,UGC 05705;;; -NGC3266;G;10:33:17.61;+64:44:57.8;UMa;1.39;1.21;107;13.50;;10.65;9.96;9.70;22.93;S0;;;;;;;;2MASX J10331762+6444578,MCG +11-13-030,PGC 031198,SDSS J103317.60+644457.6,UGC 05725;;; -NGC3267;G;10:29:48.59;-35:19:20.6;Ant;1.55;0.73;155;13.50;13.35;10.20;9.52;9.33;23.20;S0;;;;;;;;2MASX J10294856-3519207,ESO 375-042,ESO-LV 375-0420,MCG -06-23-036,PGC 030934;;; -NGC3268;G;10:30:00.66;-35:19:31.7;Ant;3.50;2.62;71;12.57;11.77;9.12;8.39;8.15;23.90;E;;;;;;;;2MASX J10300065-3519318,ESO 375-045,ESO-LV 375-0450,MCG -06-23-041,PGC 030949;;; -NGC3269;G;10:29:57.06;-35:13:27.8;Ant;2.51;1.02;9;13.24;13.51;9.96;9.39;9.06;23.87;S0-a;;;;;;;;2MASX J10295707-3513277,ESO 375-044,ESO-LV 375-0440,MCG -06-23-040,PGC 030945;;; -NGC3270;G;10:31:29.98;+24:52:10.0;Leo;2.34;0.62;12;14.10;;10.76;10.06;9.73;23.59;SABb;;;;;;;;2MASX J10312999+2452095,IRAS 10287+2507,MCG +04-25-029,PGC 031059,SDSS J103129.97+245209.9,SDSS J103129.98+245210.0,UGC 05711;;; -NGC3271;G;10:30:26.49;-35:21:34.2;Ant;3.01;1.67;109;12.72;11.73;9.12;8.44;8.15;23.92;S0;;;;;;2585;;2MASX J10302648-3521343,ESO 375-048,ESO-LV 375-0480,MCG -06-23-044,PGC 030988;;; -NGC3272;**;10:31:48.15;+28:28:07.6;LMi;;;;;;;;;;;;;;;;;;;;; -NGC3273;G;10:30:29.17;-35:36:38.3;Ant;1.91;0.88;96;13.50;12.93;9.91;9.18;8.93;23.64;S0;;;;;;;;2MASX J10302915-3536383,ESO 375-049,ESO-LV 375-0490,MCG -06-23-045,PGC 030992;;; -NGC3274;G;10:32:17.27;+27:40:07.6;Leo;1.63;0.81;93;13.30;;11.57;11.03;10.74;22.40;Scd;;;;;;;;2MASX J10321728+2740075,IRAS 10294+2755,MCG +05-25-020,PGC 031122,UGC 05721;;; -NGC3275;G;10:30:51.80;-36:44:13.1;Ant;2.81;2.05;121;12.54;;9.38;8.68;8.42;23.33;Sab;;;;;;;;2MASX J10305182-3644130,ESO 375-050,ESO-LV 375-0500,IRAS 10286-3628,MCG -06-23-046,PGC 031014;;; -NGC3276;G;10:31:09.20;-39:56:40.8;Ant;1.26;0.74;69;14.44;;11.20;10.51;10.21;23.62;S0;;;;;;;;2MASX J10310918-3956407,ESO 317-040,ESO-LV 317-0400,PGC 031031;;; -NGC3277;G;10:32:55.45;+28:30:42.2;LMi;2.11;1.59;29;12.50;11.68;9.83;9.16;8.93;22.66;Sab;;;;;;;;2MASX J10325545+2830422,IRAS 10301+2846,MCG +05-25-022,PGC 031166,UGC 05731;;; -NGC3278;G;10:31:35.39;-39:57:16.7;Ant;1.35;1.04;60;13.02;;10.30;9.59;9.33;22.26;Sc;;;;;;;;2MASX J10313538-3957166,ESO 317-043,ESO-LV 317-0430,IRAS 10293-3941,MCG -07-22-021,PGC 031068;;; -NGC3279;G;10:34:42.80;+11:11:50.4;Leo;2.48;0.41;151;14.10;;10.55;9.75;9.42;23.18;Sc;;;;;;0622;;2MASX J10344279+1111500,IRAS 10320+1127,MCG +02-27-027,PGC 031302,SDSS J103442.79+111150.4,SDSS J103442.80+111150.4,UGC 05741;;HOLM 201B,C are stars.; -NGC3280;GTrpl;10:32:45.27;-12:38:10.5;Hya;1.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC3280A;G;10:32:46.38;-12:38:04.5;Hya;0.65;0.57;29;16.00;;;;;23.51;E-S0;;;;;;;;MCG -02-27-006,PGC 031158;;; -NGC3280B;G;10:32:43.81;-12:38:14.3;Hya;1.02;0.58;122;16.00;;11.29;10.76;10.29;23.86;S0;;;;;;0617;;2MASX J10324383-1238138,MCG -02-27-007,PGC 031153;;; -NGC3280C;G;10:32:45.55;-12:38:14.0;Hya;1.23;0.54;22;16.00;;;;;24.62;E-S0;;;;;;;;MCG -02-27-008,PGC 031156;;; -NGC3281;G;10:31:52.09;-34:51:13.3;Ant;3.10;1.27;140;12.62;14.02;9.31;8.62;8.31;23.34;Sab;;;;;;;;2MASX J10315208-3451133,ESO 375-055,ESO-LV 375-0550,IRAS 10295-3435,MCG -06-23-050,PGC 031090;;; -NGC3281A;G;10:31:58.28;-35:11:54.6;Ant;1.25;0.89;121;14.43;;;;;23.64;S0;;;;;;;;ESO 375-059,ESO-LV 375-0590,MCG -06-23-051A,PGC 031103;;; -NGC3281B;G;10:31:52.16;-35:12:17.5;Ant;1.31;0.64;65;15.00;;11.76;11.07;10.86;24.42;E-S0;;;;;;;;2MASX J10315219-3512173,MCG -06-23-049,PGC 083203;;; -NGC3281C;G;10:32:59.55;-34:53:10.4;Ant;1.13;0.41;159;14.30;;11.15;10.48;10.24;23.35;S0;;;;;;;;2MASX J10325955-3453104,ESO 375-063,ESO-LV 375-0630,MCG -06-23-053,PGC 031173;;; -NGC3281D;G;10:34:19.02;-34:24:12.3;Ant;2.06;0.39;159;14.67;;11.53;10.79;10.50;23.57;SBcd;;;;;;;;2MASX J10341900-3424123,ESO 375-068,ESO-LV 375-0680,MCG -06-23-055,PGC 031273;;; -NGC3282;G;10:32:21.92;-22:18:08.2;Hya;1.77;0.65;81;13.99;;10.58;9.90;9.65;23.98;S0;;;;;;;;2MASX J10322191-2218082,ESO 568-016,ESO-LV 568-0160,MCG -04-25-013,PGC 031129;;; -NGC3283;G;10:31:11.60;-46:15:04.6;Vel;2.86;2.07;166;12.70;;9.01;8.24;7.95;23.58;S0;;;;;;;;2MASX J10311160-4615043,ESO 263-048,ESO-LV 263-0480,IRAS 10290-4559,PGC 031035;;NGC position is +1m35s, +10' in error. ESO 264- ? 001 is for nominal pos.; -NGC3284;G;10:36:21.24;+58:37:12.6;UMa;1.36;0.83;80;14.50;13.67;11.45;10.74;10.43;23.81;E;;;;;3286;;;2MASX J10362128+5837124,MCG +10-15-112,PGC 031433,SDSS J103621.23+583712.6,SDSS J103621.24+583712.6,SDSS J103621.24+583712.7,SDSS J103621.24+583712.9;;; -NGC3285;G;10:33:35.84;-27:27:16.0;Hya;2.97;1.52;109;12.96;12.08;9.56;8.85;8.59;23.80;Sa;;;;;;;;2MASX J10333582-2727160,ESO 501-015,ESO-LV 501-0150,IRAS 10312-2711,MCG -04-25-019,PGC 031217;;; -NGC3285A;G;10:32:48.78;-27:31:20.8;Hya;1.21;0.87;174;14.52;;11.99;11.12;11.22;23.33;Sc;;;;;;;;2MASX J10324878-2731209,ESO 501-008,ESO-LV 501-0080,MCG -04-25-015,PGC 031161;;; -NGC3285B;G;10:34:36.88;-27:39:10.6;Hya;1.64;1.04;52;13.89;;11.64;10.71;10.28;23.27;Sb;;;;;;;;2MASX J10343687-2739108,ESO 501-018,ESO-LV 501-0180,IRAS 10322-2723,MCG -04-25-022,PGC 031293;;; -NGC3286;Dup;10:36:21.24;+58:37:12.6;UMa;;;;;;;;;;;;;;;3284;;;;;; -NGC3287;G;10:34:47.30;+21:38:53.8;Leo;1.78;0.85;18;12.90;;10.72;10.09;9.78;22.26;SBd;;;;;;;;2MASX J10344730+2138539,IRAS 10320+2154,MCG +04-25-032,PGC 031311,SDSS J103447.29+213853.7,SDSS J103447.30+213853.8,UGC 05742;;The 2MASS position is 9 arcsec northwest of the center of the bar.; -NGC3288;G;10:36:25.67;+58:33:22.3;UMa;0.89;0.70;8;14.79;13.99;11.87;11.08;10.90;23.33;SABb;;;;;;;;2MASX J10362571+5833224,MCG +10-15-114,PGC 031446,SDSS J103625.67+583322.2,SDSS J103625.67+583322.3,SDSS J103625.67+583322.6,UGC 05752;;; -NGC3289;G;10:34:07.43;-35:19:24.2;Ant;1.99;0.47;152;13.68;14.13;10.48;9.79;9.55;23.59;S0-a;;;;;;;;2MASX J10340744-3519243,ESO 375-065,ESO-LV 375-0650,MCG -06-23-054,PGC 031253;;; -NGC3290;G;10:35:17.43;-17:16:36.4;Hya;1.05;0.60;58;14.00;;12.38;11.77;11.47;22.79;Sbc;;;;;;;;2MASX J10351742-1716364,IRAS 10328-1701,MCG -03-27-020,PGC 031346;;; -NGC3291;*;10:36:06.48;+37:16:27.9;LMi;;;;;;;;;;;;;;;;;;SDSS J103606.48+371627.8;;; -NGC3292;G;10:35:34.43;-06:10:46.6;Sex;1.11;0.85;178;14.94;;11.59;10.95;10.77;23.76;S0;;;;;;;;2MASX J10353442-0610467,MCG -01-27-023,PGC 031370;;; -NGC3293;OCl;10:35:48.77;-58:13:28.1;Car;5.10;;;4.84;4.70;;;;;;;;;;;;;MWSC 1826;;; -NGC3294;G;10:36:16.25;+37:19:28.9;LMi;3.08;1.60;119;11.50;;9.37;8.62;8.38;22.78;SABc;;;;;;;;2MASX J10361626+3719285,IRAS 10333+3734,MCG +06-23-021,PGC 031428,SDSS J103616.24+371928.8,SDSS J103616.25+371928.9,UGC 05753;;The position in 1987A&AS...70..191S is 13 arcsec southeast of the nucleus.; -NGC3295;Dup;10:32:45.27;-12:38:10.5;Hya;;;;;;;;;;;;;;;3280;;;;;; -NGC3296;G;10:32:45.40;-12:43:02.7;Hya;1.11;0.99;56;14.61;;11.13;10.43;10.09;23.93;E;;;;;;0618;;2MASX J10324540-1243018,PGC 031155;;; -NGC3297;G;10:33:11.80;-12:40:18.6;Hya;0.87;0.51;161;15.38;;11.90;11.21;10.86;23.84;S0;;;;;;;;2MASX J10331172-1240186,PGC 031189;;; -NGC3298;G;10:37:12.28;+50:07:14.1;UMa;1.10;0.70;157;15.20;;11.51;10.72;10.39;23.86;E;;;;;;;;2MASX J10371222+5007143,MCG +08-19-043,PGC 031529,SDSS J103712.27+500714.0;;; -NGC3299;G;10:36:23.80;+12:42:26.6;Leo;1.79;1.32;3;13.60;;;;;23.62;SABd;;;;;;;;MCG +02-27-029,PGC 031442,UGC 05761;;; -NGC3300;G;10:36:38.44;+14:10:16.0;Leo;1.53;0.78;174;13.40;;10.29;9.61;9.39;22.99;S0;;;;;;;;2MASX J10363843+1410175,MCG +02-27-030,PGC 031472,SDSS J103638.44+141015.9,SDSS J103638.44+141016.0,UGC 05766;;; -NGC3301;G;10:36:56.04;+21:52:55.7;Leo;3.63;1.06;53;12.20;;9.39;8.75;8.52;23.66;S0-a;;;;;3760;;;2MASX J10365603+2152557,IRAS 10341+2208,MCG +04-25-035,PGC 031497,UGC 05767;;; -NGC3302;G;10:35:47.43;-32:21:30.6;Ant;1.93;1.28;115;13.51;;10.31;9.59;9.35;23.71;S0;;;;;;;;2MASX J10354741-3221307,ESO 437-007,ESO-LV 437-0070,MCG -05-25-020,PGC 031391;;; -NGC3303;GPair;10:36:59.80;+18:08:12.0;Leo;1.20;;;;;;;;;;;;;;;;;MCG +03-27-066,UGC 05773;;"Arp Atlas ""spike"" is minor planet (84447) 2002 TU240 (J.Kanipe, B.Marsden).";Diameter of the group inferred by the author. -NGC3303 NED01;G;10:36:59.44;+18:08:15.7;Leo;0.59;0.35;97;15.11;;;;;22.83;Sbc;;;;;;;;MCG +03-27-066 NED01,PGC 093104,SDSS J103659.43+180815.6,UGC 05773 NED01;;;B-Mag taken from LEDA -NGC3303 NED02;G;10:37:00.01;+18:08:09.2;Leo;1.10;0.74;157;14.50;;11.08;10.36;10.09;23.24;Sa;;;;;;;;2MASX J10370009+1808088,MCG +03-27-066 NED02,PGC 031508,SDSS J103700.09+180809.2,UGC 05773 NED02;;; -NGC3304;G;10:37:37.91;+37:27:20.3;LMi;1.55;0.53;160;14.40;;10.82;10.17;9.96;23.65;Sa;;;;;;;;2MASX J10373786+3727204,MCG +06-23-026,PGC 031572,SDSS J103737.91+372720.2,SDSS J103737.91+372720.3,UGC 05777;;; -NGC3305;G;10:36:11.75;-27:09:43.9;Hya;1.17;1.11;130;13.88;12.78;10.45;9.72;9.47;22.97;E;;;;;;;;2MASX J10361183-2709439,ESO 501-030,ESO-LV 501-0300,MCG -04-25-031,PGC 031421;;; -NGC3306;G;10:37:10.22;+12:39:08.9;Leo;1.04;0.45;136;13.70;;11.41;10.71;10.41;22.23;SBcd;;;;;;;;2MASX J10371021+1239087,IRAS 10345+1254,MCG +02-27-032,PGC 031528,UGC 05774;;; -NGC3307;G;10:36:17.17;-27:31:47.1;Hya;0.95;0.32;28;15.28;14.48;11.83;11.21;11.17;23.70;S0-a;;;;;;;;2MASX J10361718-2731469,ESO 501-031,ESO-LV 501-0310,MCG -04-25-029,PGC 031430;;; -NGC3308;G;10:36:22.40;-27:26:17.3;Hya;1.21;0.72;34;13.29;12.36;9.95;9.22;8.98;22.51;E-S0;;;;;;;;2MASX J10362237-2726172,ESO 501-034,ESO-LV 501-0340,MCG -04-25-032,PGC 031438;;; -NGC3309;G;10:36:35.70;-27:31:06.4;Hya;1.82;1.57;94;11.98;11.78;9.39;8.71;8.46;22.73;E;;;;;;;;2MASX J10363565-2731063,ESO 501-036,ESO-LV 501-0360,MCG -04-25-034,PGC 031466;;; -NGC3310;G;10:38:45.86;+53:30:12.2;UMa;1.80;1.73;10;12.45;12.15;9.46;8.88;8.62;21.27;SABb;;;;;;;;2MASX J10384585+5330118,IRAS 10356+5345,MCG +09-18-008,PGC 031650,SDSS J103845.85+533012.1,UGC 05786;;; -NGC3311;G;10:36:42.82;-27:31:42.0;Hya;2.63;2.33;57;11.93;10.93;8.97;8.38;8.10;23.65;E-S0;;;;;;;;2MASX J10364282-2731420,ESO 501-038,ESO-LV 501-0380,MCG -04-25-036,PGC 031478;;; -NGC3312;G;10:37:02.52;-27:33:54.2;Hya;3.31;1.07;172;12.63;13.96;9.55;8.91;8.67;23.35;Sb;;;;;;0629;;2MASX J10370254-2733541,ESO 501-043,ESO-LV 501-0430,IRAS 10346-2718,MCG -04-25-039,PGC 031513;;; -NGC3313;G;10:37:25.45;-25:19:10.0;Hya;2.96;2.02;110;12.38;;10.81;10.17;9.91;23.40;Sab;;;;;;;;2MASX J10372544-2519101,ESO 501-050,ESO-LV 501-0500,IRAS 10350-2503,MCG -04-25-044,PGC 031551,UGCA 213;;; -NGC3314;GPair;10:37:13.20;-27:41:04.0;Hya;1.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC3314A;G;10:37:12.85;-27:41:02.2;Hya;1.17;0.64;145;13.47;13.11;;;;22.84;SBab;;;;;;;;2MASX J10371285-2741021,PGC 031531;;;B-Mag taken from LEDA -NGC3314B;G;10:37:13.25;-27:41:05.9;Hya;0.64;0.46;46;13.30;;;;;21.01;Sc;;;;;;;;PGC 031532;;; -NGC3315;G;10:37:19.23;-27:11:32.3;Hya;1.20;1.04;119;13.86;;;;;23.50;E-S0;;;;;;;;ESO 501-048,ESO-LV 501-0480,MCG -04-25-042,PGC 031540;;; -NGC3316;G;10:37:37.32;-27:35:39.5;Hya;0.96;0.78;8;13.66;13.03;10.59;9.86;9.63;22.51;S0;;;;;;;;2MASX J10373729-2735384,ESO 501-054,ESO-LV 501-0540,MCG -04-25-046,PGC 031571;;; -NGC3317;Other;10:37:43.11;-27:31:10.6;Hya;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC3318;G;10:37:15.51;-41:37:39.2;Vel;2.52;1.36;82;12.71;11.97;9.96;9.28;8.97;22.61;Sbc;;;;;;;;2MASX J10371552-4137395,ESO 317-052,ESO-LV 317-0520,IRAS 10350-4122,MCG -07-22-026,PGC 031533;;Confused HIPASS source; -NGC3318A;G;10:35:32.10;-41:44:27.4;Vel;1.29;0.58;4;12.71;11.97;9.96;9.28;8.97;24.35;SABc;;;;;;;;PGC 031373;;; -NGC3318B;G;10:37:33.84;-41:27:55.4;Vel;1.54;1.12;113;13.92;;12.89;12.39;12.53;23.32;Sc;;;;;;;;2MASX J10373385-4127553,ESO 317-053,ESO-LV 317-0530,IRAS 10353-4112,MCG -07-22-027,PGC 031565;;; -NGC3319;G;10:39:09.46;+41:41:12.0;UMa;3.63;1.77;38;11.48;11.07;10.85;10.24;10.07;22.70;SBc;;;;;;;;2MASX J10390953+4141127,MCG +07-22-036,PGC 031671,SDSS J103909.45+414112.0,SDSS J103909.46+414112.0,UGC 05789;;; -NGC3320;G;10:39:36.53;+47:23:52.5;UMa;1.95;0.87;24;13.10;;11.00;10.37;10.10;22.46;Sc;;;;;;;;2MASX J10393652+4723526,IRAS 10366+4739,MCG +08-20-010,PGC 031708,SDSS J103936.52+472352.5,UGC 05794;;; -NGC3321;G;10:38:50.56;-11:38:55.9;Hya;2.30;1.11;29;13.30;;11.46;10.70;10.48;23.56;SABc;;;;;3322;;;2MASX J10385055-1138560,IRAS 10363-1123,MCG -02-27-010,PGC 031653,UGCA 214;;; -NGC3322;Dup;10:38:50.56;-11:38:55.9;Hya;;;;;;;;;;;;;;;3321;;;;;; -NGC3323;G;10:39:39.04;+25:19:21.9;LMi;0.95;0.52;171;14.30;;12.25;11.73;11.30;22.64;SBbc;;;;;;;;2MASX J10393902+2519214,IRAS 10368+2535,MCG +04-25-036,PGC 031712,SDSS J103939.03+251921.8,SDSS J103939.04+251921.9,UGC 05800;;; -NGC3324;Cl+N;10:37:16.21;-58:37:10.4;Car;4.80;;;6.91;6.70;;;;;;;;;;;;;MWSC 1830;;IC 2599 is a part of this emission nebula.; -NGC3325;G;10:39:20.45;-00:12:00.9;Sex;1.26;1.07;64;14.00;13.00;10.85;10.10;9.89;23.35;E;;;;;;;;2MASX J10392046-0012010,MCG +00-27-036,PGC 031689,SDSS J103920.45-001200.8,SDSS J103920.45-001200.9,UGC 05795;;; -NGC3326;G;10:39:31.86;+05:06:27.4;Sex;0.97;0.87;154;14.20;;11.74;11.04;10.69;22.88;Sa;;;;;;;;2MASX J10393183+0506266,MCG +01-27-025,PGC 031701,SDSS J103931.85+050627.3,SDSS J103931.86+050627.3,SDSS J103931.86+050627.4,UGC 05799;;; -NGC3327;G;10:39:57.94;+24:05:28.5;LMi;1.26;0.86;81;14.20;;10.98;10.29;10.00;23.08;Sb;;;;;;;;2MASX J10395794+2405284,MCG +04-25-038,PGC 031729,SDSS J103957.93+240528.5,UGC 05803;;HOLM 207B is a star.; -NGC3328;*;10:39:54.25;+09:18:00.4;Leo;;;;;;;;;;;;;;;;;;SDSS J103954.25+091800.3;;NGC identification is not certain.; -NGC3329;G;10:44:39.37;+76:48:34.0;Dra;1.91;1.14;139;12.90;;10.30;9.66;9.41;22.73;Sb;;;;;3397;;;2MASX J10443936+7648337,IRAS 10405+7704,MCG +13-08-033,PGC 032059,UGC 05837;;; -NGC3330;OCl;10:38:45.43;-54:07:50.6;Vel;5.10;;;7.55;7.40;;;;;;;;;;;;;MWSC 1835;;; -NGC3331;G;10:40:08.94;-23:49:13.3;Hya;1.19;0.95;9;13.94;;11.38;10.80;10.53;22.91;SBc;;;;;;;;2MASX J10400892-2349132,ESO 501-072,ESO-LV 501-0720,IRAS 10377-2333,MCG -04-25-056,PGC 031743;;; -NGC3332;G;10:40:28.37;+09:10:57.2;Leo;1.37;1.14;145;13.70;;10.36;9.72;9.37;23.05;E-S0;;;;;3342;;;2MASX J10402834+0910568,MCG +02-27-038,PGC 031768,SDSS J104028.37+091057.1,SDSS J104028.37+091057.2,UGC 05807;;; -NGC3333;G;10:39:49.83;-36:02:10.2;Ant;1.44;0.41;159;13.91;;10.81;10.03;9.76;22.41;Sbc;;;;;;;;2MASX J10394981-3602102,ESO 376-002,ESO-LV 376-0020,IRAS 10375-3546,MCG -06-24-001,PGC 031723;;; -NGC3334;G;10:41:31.20;+37:18:46.3;LMi;1.21;1.13;150;14.10;;10.77;10.00;9.73;23.00;S0;;;;;;;;2MASX J10413121+3718464,MCG +06-24-004,PGC 031845,SDSS J104131.19+371846.2,SDSS J104131.19+371846.3,UGC 05817;;; -NGC3335;G;10:39:34.06;-23:55:21.7;Hya;1.10;0.91;117;14.02;;10.83;10.13;9.88;23.02;S0-a;;;;;;;;2MASX J10393405-2355217,ESO 501-071,ESO-LV 501-0710,MCG -04-25-055,PGC 031706;;; -NGC3336;G;10:40:17.02;-27:46:37.5;Hya;1.97;1.74;117;13.01;12.19;10.54;9.66;9.41;23.04;SABc;;;;;;;;2MASX J10401702-2746377,ESO 437-036,ESO-LV 437-0360,IRAS 10379-2730,MCG -05-25-036,PGC 031754;;; -NGC3337;G;10:41:47.59;+04:59:18.2;Sex;1.16;0.57;51;15.30;;12.41;11.65;11.49;24.13;E-S0;;;;;;;;2MASX J10414755+0459181,PGC 031860,SDSS J104147.59+045918.1,SDSS J104147.59+045918.2;;; -NGC3338;G;10:42:07.54;+13:44:49.2;Leo;1.23;0.71;98;12.10;;9.11;8.40;8.13;20.18;Sc;;;;;;;;2MASX J10420754+1344489,IRAS 10394+1400,MCG +02-27-041,PGC 031883,SDSS J104207.53+134449.2,SDSS J104207.54+134449.2,UGC 05826;;; -NGC3339;*;10:42:10.06;-00:22:09.3;Sex;;;;15.40;;14.09;13.77;13.79;;;;;;;;;;2MASS J10421006-0022093,SDSS J104210.05-002209.3;;; -NGC3340;G;10:42:17.99;-00:22:36.7;Sex;1.29;0.94;166;13.90;13.24;11.16;10.55;10.33;22.81;SBbc;;;;;;;;2MASX J10421741-0022318,2MASX J10421797-0022365,MCG +00-27-042,PGC 031892,SDSS J104217.98-002236.6,SDSS J104217.99-002236.7,SDSS J104218.42-002249.0,UGC 05827;;NGC 3339 = Holmberg 210b is a star.; -NGC3341;G;10:42:31.47;+05:02:37.7;Sex;1.07;0.31;23;14.90;;11.74;11.11;10.78;23.73;;;;;;;;;2MASX J10423147+0502382,MCG +01-27-031,PGC 031915,UGC 05831;;; -NGC3342;Dup;10:40:28.37;+09:10:57.2;Leo;;;;;;;;;;;;;;;3332;;;;;; -NGC3343;G;10:46:10.45;+73:21:11.3;Dra;1.34;0.93;55;14.70;;10.57;9.83;9.57;24.11;E;;;;;;;;2MASX J10461032+7321108,MCG +12-10-073,PGC 032143,UGC 05863;;; -NGC3344;G;10:43:31.15;+24:55:20.0;LMi;6.70;6.37;150;10.54;9.86;8.20;7.65;7.44;23.33;Sbc;;;;;;;;2MASX J10433114+2455199,IRAS 10407+2511,MCG +04-25-046,PGC 031968,UGC 05840;;; -NGC3345;**;10:43:32.02;+11:59:07.0;Leo;;;;;;;;;;;;;;;;;;;;Two Galactic stars.; -NGC3346;G;10:43:38.91;+14:52:18.7;Leo;2.64;2.20;119;12.80;;10.44;9.83;9.59;23.31;Sc;;;;;;;;2MASX J10433888+1452191,IRAS 10410+1507,MCG +03-28-001,PGC 031982,SDSS J104338.90+145218.6,SDSS J104338.91+145218.7,UGC 05842;;; -NGC3347;G;10:42:46.55;-36:21:09.6;Ant;4.05;1.14;177;12.18;11.35;9.27;8.65;8.46;22.99;SBb;;;;;;;;2MASX J10424650-3621090,ESO 376-013,ESO-LV 376-0130,IRAS 10404-3604,MCG -06-24-007,PGC 031926;;A 12th mag star is superposed just northwest of the nucleus (B. Skiff).; -NGC3347A;G;10:40:20.61;-36:24:40.0;Ant;2.21;0.84;179;13.47;;10.69;9.99;9.68;23.11;SBc;;;;;;;;2MASX J10402061-3624399,ESO 376-004,ESO-LV 376-0040,IRAS 10380-3609,MCG -06-24-002,PGC 031761;;; -NGC3347B;G;10:41:59.82;-36:56:07.2;Ant;2.99;0.57;91;13.71;;;;;23.48;SBcd;;;;;;;;2MASX J10415815-3656077,ESO 376-010,ESO-LV 376-0100,MCG -06-24-005,PGC 031875;;; -NGC3347C;G;10:40:53.69;-36:17:16.5;Ant;1.35;0.94;25;14.84;;;;;23.93;Scd;;;;;;;;ESO 376-005,ESO-LV 376-0050,MCG -06-24-003,PGC 031797;;; -NGC3348;G;10:47:10.00;+72:50:22.8;UMa;2.13;2.13;65;12.00;;8.93;8.24;7.97;22.46;E;;;;;;;;2MASX J10470999+7250228,MCG +12-10-077,PGC 032216,UGC 05875;;; -NGC3349;G;10:43:50.56;+06:45:46.7;Leo;0.70;0.64;70;15.20;;12.67;12.10;11.84;22.94;Sbc;;;;;;;;2MASX J10435053+0645466,MCG +01-28-002,PGC 031989,SDSS J104350.55+064546.6,SDSS J104350.56+064546.6,SDSS J104350.56+064546.7;;; -NGC3350;G;10:44:22.97;+30:43:29.5;LMi;0.65;0.60;80;15.40;;12.39;11.66;11.54;23.12;S0-a;;;;;;;;2MASX J10442298+3043289,PGC 032035,SDSS J104422.97+304329.4,SDSS J104422.97+304329.5,SDSS J104422.98+304329.5;;; -NGC3351;G;10:43:57.70;+11:42:13.7;Leo;7.23;4.45;11;10.51;9.73;7.57;6.95;6.67;23.26;Sb;;;;095;;;;2MASX J10435773+1142129,IRAS 10413+1158,MCG +02-28-001,PGC 032007,SDSS J104357.69+114213.6,SDSS J104357.70+114213.7,UGC 05850;;; -NGC3352;G;10:44:14.93;+22:22:16.3;Leo;1.43;0.95;179;14.10;;10.53;9.85;9.58;23.05;S0;;;;;;;;2MASX J10441491+2222154,MCG +04-25-048,PGC 032025,SDSS J104414.93+222216.2,UGC 05851;;The 2MASS position is 7 arcsec east of the nucleus.; -NGC3353;G;10:45:22.41;+55:57:37.4;UMa;1.36;0.98;76;13.25;12.79;11.38;10.71;10.61;22.37;SABb;;;;;;;;2MASX J10452239+5557373,IRAS 10422+5613,MCG +09-18-022,PGC 032103,SDSS J104522.39+555737.4,SDSS J104522.41+555737.3,SDSS J104522.41+555737.4,SDSS J104522.41+555737.6,UGC 05860;;; -NGC3354;G;10:43:02.94;-36:21:44.6;Ant;1.02;0.82;169;13.82;13.18;11.63;11.01;10.70;22.35;Sc;;;;;;;;2MASX J10430294-3621445,ESO 376-014,ESO-LV 376-0140,IRAS 10407-3606,MCG -06-24-008,PGC 031941;;; -NGC3355;G;10:41:25.99;-23:23:03.3;Hya;1.25;0.93;51;14.23;13.54;;;;23.18;SABm;;;;;;;;ESO 501-079,ESO-LV 501-0790,MCG -04-25-058,PGC 031840,UGCA 215;;"Identification as NGC 3355 is very uncertain; N3355 may be ESO 501- G 080."; -NGC3356;G;10:44:12.23;+06:45:31.6;Leo;1.69;0.82;98;13.30;;11.39;10.72;10.37;23.11;Sbc;;;;;;;;2MASX J10441223+0645314,MCG +01-28-004,PGC 032021,SDSS J104412.21+064531.7,UGC 05852;;; -NGC3357;G;10:44:20.74;+14:05:04.1;Leo;1.03;0.83;88;14.30;;10.76;10.14;9.88;22.95;E;;;;;;;;2MASX J10442076+1405043,MCG +02-28-002,PGC 032032,SDSS J104420.72+140504.0,SDSS J104420.73+140504.0,SDSS J104420.74+140504.1,UGC 05206;;Correction of UGC R.A. error for UGC 05206 makes UGC 05206 = UGC 05854A.; -NGC3358;G;10:43:33.02;-36:24:38.5;Ant;3.62;1.82;140;12.44;11.53;9.23;8.56;8.37;23.59;S0-a;;;;;;;;2MASX J10433303-3624385,ESO 376-017,ESO-LV 376-0170,MCG -06-24-009,PGC 031974;;; -NGC3359;G;10:46:36.86;+63:13:27.2;UMa;4.07;2.83;167;11.03;10.57;9.44;8.73;8.62;22.55;Sc;;;;;;;;2MASX J10463684+6313251,IRAS 10433+6329,MCG +11-13-037,PGC 032183,SDSS J104636.85+631327.2,SDSS J104636.86+631327.2,UGC 05873;;; -NGC3360;G;10:44:16.18;-11:14:33.2;Sex;1.03;0.81;54;14.00;;11.81;11.08;10.86;23.02;Sc;;;;;;;;2MASX J10441619-1114334,MCG -02-28-003,PGC 032026;;; -NGC3361;G;10:44:29.17;-11:12:28.5;Sex;2.23;0.77;155;13.50;;11.17;10.18;10.06;23.06;SABc;;;;;;;;2MASX J10442917-1112284,IRAS 10419-1056,MCG -02-28-004,PGC 032044;;; -NGC3362;G;10:44:51.72;+06:35:48.2;Leo;1.32;1.08;82;17.58;16.96;11.29;10.60;10.28;22.95;SABc;;;;;;;;2MASX J10445172+0635488,MCG +01-28-005,PGC 032078,SDSS J104451.72+063548.6,SDSS J104451.73+063548.6,SDSS J104451.73+063548.7,UGC 05857;;; -NGC3363;G;10:45:09.46;+22:04:42.6;Leo;0.86;0.63;179;14.70;;11.28;10.54;10.24;22.62;Sbc;;;;;;;;2MASX J10450942+2204425,IRAS 10424+2220,MCG +04-26-002,PGC 032089,SDSS J104509.45+220442.5,SDSS J104509.46+220442.5,UGC 05866;;; -NGC3364;G;10:48:29.82;+72:25:30.1;UMa;1.39;1.22;68;13.80;;11.15;10.40;10.13;22.82;SABc;;;;;;;;2MASX J10482979+7225302,IRAS 10448+7241,MCG +12-10-082,PGC 032314,UGC 05890;;The 2MASS position is 5 arcsec east of the nucleus.; -NGC3365;G;10:46:12.59;+01:48:47.8;Sex;4.04;0.69;160;13.00;;10.92;10.31;9.95;23.50;Sc;;;;;;;;2MASX J10461264+0148479,MCG +00-28-006,PGC 032153,SDSS J104612.53+014850.8,SDSS J104612.58+014847.7,SDSS J104612.58+014847.8,SDSS J104612.59+014847.8,UGC 05878;;; -NGC3366;G;10:35:08.28;-43:41:30.5;Vel;2.72;1.31;36;12.77;;;;;22.47;SBb;;;;;;2592;;ESO 264-007,ESO-LV 264-0070,IRAS 10329-4325,MCG -07-22-024,PGC 031335;;Confused HIPASS source; -NGC3367;G;10:46:34.95;+13:45:03.1;Leo;2.88;2.83;70;12.05;11.50;9.76;9.12;8.76;23.04;Sc;;;;;;;;2MASX J10463496+1345026,IRAS 10439+1400,MCG +02-28-005,PGC 032178,SDSS J104634.95+134503.0,SDSS J104634.95+134503.1,SDSS J104634.96+134503.1,UGC 05880;;The 2MASXi position is 6 arcsec northwest of the nucleus.; -NGC3368;G;10:46:45.74;+11:49:11.8;Leo;8.26;5.51;5;10.15;9.25;7.24;6.57;6.32;23.14;Sab;;;;096;;;;2MASX J10464574+1149117,IRAS 10441+1205,MCG +02-28-006,PGC 032192,SDSS J104645.67+114911.8,UGC 05882;;; -NGC3369;G;10:46:44.65;-25:14:40.0;Hya;0.72;0.54;118;14.64;;11.66;10.85;10.66;22.76;E-S0;;;;;;;;2MASX J10464464-2514398,ESO 501-095,ESO-LV 501-0950,MCG -04-26-009,PGC 032191;;; -NGC3370;G;10:47:04.05;+17:16:25.0;Leo;2.44;1.42;147;12.40;;10.35;9.67;9.43;22.54;SABc;;;;;;;;2MASX J10470403+1716253,IRAS 10444+1732,MCG +03-28-008,PGC 032207,SDSS J104704.04+171625.0,SDSS J104704.05+171625.0,UGC 05887;;; -NGC3371;Dup;10:48:16.89;+12:37:45.4;Leo;;;;;;;;;;;;;;;3384;;;;;; -NGC3372;HII;10:45:08.53;-59:52:00.1;Car;120.00;120.00;;3.00;;;;;;;;;;;;;;C 092;Carina Nebula,eta Car Nebula;;Dimensions and B-Mag taken from LEDA -NGC3373;Dup;10:48:27.91;+12:31:59.5;Leo;;;;;;;;;;;;;;;3389;;;;;; -NGC3374;G;10:48:01.05;+43:11:11.6;UMa;1.22;0.88;161;14.60;;11.81;11.15;10.66;23.45;Sc;;;;;;;;2MASX J10480107+4311115,IRAS 10451+4327,MCG +07-22-066,PGC 032266,SDSS J104801.04+431111.5,SDSS J104801.04+431111.6,SDSS J104801.05+431111.6,UGC 05901;;; -NGC3375;G;10:47:00.79;-09:56:28.7;Sex;1.49;1.26;130;13.00;;10.61;9.96;9.77;23.05;S0;;;;;;;;2MASX J10470078-0956285,MCG -01-28-002,MCG -02-28-008,PGC 032205;;MCG decs for MCG -01-28 field are 10 arcmin too far north (MCG4 errata).; -NGC3376;G;10:47:26.57;+06:02:53.3;Sex;1.13;0.53;166;14.40;;11.38;10.65;10.45;23.14;S0-a;;;;;;;;2MASX J10472659+0602529,MCG +01-28-007,PGC 032231,SDSS J104726.57+060253.2,SDSS J104726.57+060253.3,UGC 05891;;; -NGC3377;G;10:47:42.33;+13:59:09.3;Leo;3.87;1.87;36;11.24;10.38;8.29;7.63;7.44;22.89;E;;;;;;;;2MASX J10474239+1359083,MCG +02-28-009,PGC 032249,UGC 05899;;; -NGC3377A;G;10:47:22.30;+14:04:10.0;Leo;1.43;1.37;0;14.31;13.61;;;;23.88;SABm;;;;;;;;MCG +02-28-007,PGC 032226,UGC 05889;;; -NGC3378;G;10:46:43.27;-40:00:57.7;Ant;1.50;1.35;93;13.48;;10.57;9.86;9.60;22.99;SABb;;;;;;;;2MASX J10464327-4000576,ESO 318-012,ESO-LV 318-0120,IRAS 10444-3945,MCG -07-22-029,PGC 032189;;; -NGC3379;G;10:47:49.59;+12:34:53.8;Leo;4.89;4.25;71;10.56;9.76;7.17;6.49;6.27;22.54;E;;;;105;;;;2MASX J10474959+1234538,MCG +02-28-011,PGC 032256,UGC 05902;;; -NGC3380;G;10:48:12.18;+28:36:06.4;LMi;1.56;1.40;21;13.60;;10.79;10.18;9.92;23.08;SBa;;;;;;;;2MASX J10481215+2836063,IRAS 10454+2851,MCG +05-26-012,PGC 032287,SDSS J104812.18+283606.4,SDSS J104812.19+283606.4,UGC 05906;;; -NGC3381;G;10:48:24.82;+34:42:41.1;LMi;2.02;1.82;76;12.80;;11.38;10.63;10.32;23.18;SBbc;;;;;;;;2MASX J10482482+3442405,IRAS 10456+3458,MCG +06-24-015,PGC 032302,SDSS J104824.81+344241.0,SDSS J104824.82+344241.1,UGC 05909;;; -NGC3382;**;10:48:25.03;+36:43:31.6;LMi;;;;;;;;;;;;;;;;;;SDSS J104825.03+364331.5;;Identification as NGC 3382 is very uncertain.; -NGC3383;G;10:47:19.20;-24:26:17.4;Hya;1.45;1.11;5;13.53;;11.09;10.38;10.16;22.89;SBbc;;;;;;;;2MASX J10471919-2426172,ESO 501-097,ESO-LV 501-0970,IRAS 10449-2410,MCG -04-26-010,PGC 032224;;; -NGC3384;G;10:48:16.89;+12:37:45.4;Leo;5.24;2.37;53;10.00;;7.67;7.00;6.75;23.17;E-S0;;;;;3371;;;2MASX J10481689+1237454,MCG +02-28-012,PGC 032292,SDSS J104816.88+123745.3,UGC 05911;;Identification as NGC 3371 is not certain.; -NGC3385;G;10:48:11.63;+04:55:39.9;Sex;1.61;0.88;98;13.70;;10.89;10.22;9.90;23.39;S0;;;;;;;;2MASX J10481163+0455397,MCG +01-28-009,PGC 032285,SDSS J104811.62+045539.8,SDSS J104811.62+045539.9,UGC 05908;;; -NGC3386;G;10:48:11.91;+04:59:54.9;Sex;1.06;1.00;95;14.80;;11.68;11.02;10.60;23.62;E;;;;;;;;2MASX J10481189+0459547,MCG +01-28-010,PGC 032284,SDSS J104811.90+045954.8,SDSS J104811.91+045954.8,SDSS J104811.91+045954.9,UGC 05908 NOTES01;;NGC 3387 is small group of stars at 10h48m17s +04d58.0m (2000).; -NGC3387;G;10:48:16.74;+04:57:59.8;Sex;;;;;;;;;;;;;;;;;;;;"Galactic star superposed; possibly not a galaxy?"; -NGC3388;Dup;10:51:25.53;+08:34:01.7;Leo;;;;;;;;;;;;;;;3425;;;;;; -NGC3389;G;10:48:27.91;+12:31:59.5;Leo;2.68;1.18;104;12.00;;;;;22.70;Sc;;;;;3373;;;MCG +02-28-013,PGC 032306,SDSS J104827.90+123159.4,SDSS J104827.91+123159.5,UGC 05914;;Identification as NGC 3373 is not certain.; -NGC3390;G;10:48:04.36;-31:32:00.1;Hya;3.11;0.69;179;13.24;13.41;9.59;8.79;8.48;23.17;Sb;;;;;;;;2MASX J10480434-3132000,ESO 437-062,ESO-LV 437-0620,IRAS 10457-3116,MCG -05-26-007,PGC 032271;;; -NGC3391;G;10:48:56.36;+14:13:11.4;Leo;0.87;0.56;31;13.50;;12.21;11.76;11.72;21.41;Sb;;;;;;;;2MASX J10485639+1413117,IRAS 10462+1429,MCG +02-28-014,PGC 032347,SDSS J104856.35+141311.3,UGC 05920;;; -NGC3392;G;10:51:03.00;+65:46:53.6;UMa;0.90;0.67;117;16.83;16.11;11.57;10.94;10.74;23.17;E;;;;;;;;2MASX J10510307+6546534,MCG +11-13-042,PGC 032512,SDSS J105103.00+654653.6,SDSS J105103.00+654653.9;;; -NGC3393;G;10:48:23.46;-25:09:43.4;Hya;1.95;1.70;13;13.10;13.95;10.09;9.35;9.06;23.18;SBa;;;;;;;;2MASX J10482346-2509433,ESO 501-100,ESO-LV 501-1000,IRAS 10459-2453,MCG -04-26-011,PGC 032300;;; -NGC3394;G;10:50:39.84;+65:43:38.0;UMa;1.77;1.36;43;13.09;;11.04;10.46;10.14;23.18;Sc;;;;;;;;2MASX J10503976+6543377,IRAS 10473+6559,MCG +11-13-041,PGC 032495,SDSS J105039.84+654337.9,SDSS J105039.84+654338.0,SDSS J105039.85+654337.9,SDSS J105039.85+654338.2,UGC 05937;;; -NGC3395;G;10:49:50.11;+32:58:58.3;LMi;1.60;0.89;40;12.10;12.10;10.76;10.11;9.95;21.65;Sc;;;;;;2613;;2MASX J10495011+3258582,MCG +06-24-017,PGC 032424,UGC 05931;;; -NGC3396;G;10:49:55.07;+32:59:27.0;LMi;3.10;1.27;97;12.60;12.50;11.46;10.99;10.90;22.96;Sm;;;;;;;;2MASX J10495512+3259261,MCG +06-24-018,PGC 032434,SDSS J104955.07+325926.9,SDSS J104955.08+325927.0,UGC 05935;;; -NGC3397;Dup;10:44:39.37;+76:48:34.0;Dra;;;;;;;;;;;;;;;3329;;;;;; -NGC3398;G;10:51:31.43;+55:23:27.5;UMa;0.86;0.32;76;14.40;;11.87;11.17;10.76;22.20;SABb;;;;;;0644;;2MASX J10513147+5523277,MCG +09-18-038,PGC 032564,SDSS J105131.42+552327.4,UGC 05954;;; -NGC3399;G;10:49:27.60;+16:13:06.8;Leo;1.52;1.38;30;14.70;;11.25;10.58;10.29;24.12;E-S0;;;;;;;;2MASX J10492761+1613061,MCG +03-28-012,PGC 032395,SDSS J104927.59+161306.7,SDSS J104927.59+161306.8,SDSS J104927.60+161306.7,SDSS J104927.60+161306.8;;; -NGC3400;G;10:50:45.47;+28:28:08.7;LMi;1.53;0.91;97;14.30;;10.98;10.35;10.15;23.46;SBa;;;;;;;;2MASX J10504550+2828081,MCG +05-26-020,PGC 032499,SDSS J105045.46+282808.6,SDSS J105045.47+282808.7,UGC 05949;;; -NGC3401;Other;10:50:19.87;+05:48:41.4;Sex;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3402;G;10:50:26.47;-12:50:40.6;Crt;1.85;1.78;170;9.00;;9.86;9.16;8.92;23.13;E;;;;;3411;;;2MASX J10502610-1250422,MCG -02-28-012,PGC 032479;;; -NGC3403;G;10:53:54.86;+73:41:25.3;Dra;2.78;1.04;73;13.30;;10.70;9.94;9.65;23.23;Sbc;;;;;;;;2MASX J10535485+7341253,IRAS 10502+7357,MCG +12-10-089,PGC 032719,UGC 05997;;; -NGC3404;G;10:50:17.98;-12:06:31.4;Hya;2.06;0.60;81;14.49;;10.40;9.63;9.35;23.60;SBab;;;;;;2609;;2MASX J10501799-1206316,IRAS 10477-1150,MCG -02-28-011,PGC 032466;;; -NGC3405;GPair;10:49:43.80;+16:14:25.0;Leo;1.20;;;;;;;;;;;;;;;;;UGC 05933;;;Diameter of the group inferred by the author. -NGC3405 NED01;G;10:49:43.31;+16:14:19.8;Leo;1.29;0.98;74;14.40;;11.37;10.42;10.21;24.10;E;;;;;;;;2MASX J10494330+1614201,MCG +03-28-014,PGC 032414,SDSS J104943.30+161419.7,UGC 05933 NED01;;Component 'a)' in UGC notes.; -NGC3405 NED02;G;10:49:44.36;+16:14:31.9;Leo;0.66;0.50;95;15.37;;;;;23.41;E-S0;;;;;;;;MCG +03-28-015,PGC 032418,SDSS J104944.35+161431.8,SDSS J104944.36+161431.9,UGC 05933 NED02;;Component 'b)' in UGC notes.;B-Mag taken from LEDA -NGC3406;GPair;10:51:44.20;+51:01:26.0;UMa;1.20;;;;;;;;;;;;;;;;;MCG +09-18-040,UGC 05970;;;Diameter of the group inferred by the author. -NGC3406 NED01;G;10:51:43.63;+51:01:19.8;UMa;1.45;1.00;84;13.70;;;;;23.74;E;;;;;;;;2MASX J10514368+5101195,MCG +09-18-040 NED01,PGC 032580,SDSS J105143.63+510119.7,SDSS J105143.63+510120.0,UGC 05970 NED01;;; -NGC3406 NED02;G;10:51:44.48;+51:01:30.3;UMa;1.12;0.55;11;14.68;;11.24;10.49;10.16;23.81;S0;;;;;;;;2MASX J10514450+5101303,MCG +09-18-040 NED02,PGC 093106,SDSS J105144.47+510130.2,UGC 05970 NED02;;;B-Mag taken from LEDA -NGC3407;G;10:52:17.79;+61:22:46.7;UMa;1.35;0.67;17;14.80;;11.58;10.86;10.62;23.96;E-S0;;;;;;;;2MASX J10521784+6122471,MCG +10-16-017,PGC 032626,SDSS J105217.78+612246.6,SDSS J105217.78+612246.9,SDSS J105217.79+612246.7,UGC 05978;;; -NGC3408;G;10:52:11.68;+58:26:17.3;UMa;0.85;0.72;150;14.10;;11.83;11.20;10.77;22.57;Sc;;;;;;;;2MASX J10521167+5826168,IRAS 10490+5842,MCG +10-16-016,PGC 032616,SDSS J105211.66+582617.5,SDSS J105211.67+582617.1,SDSS J105211.67+582617.2,SDSS J105211.67+582617.3,SDSS J105211.68+582617.3,UGC 05977;;; -NGC3409;G;10:50:20.35;-17:02:37.1;Crt;1.39;0.32;9;15.00;;12.10;11.43;11.16;24.09;SBc;;;;;;;;2MASX J10502033-1702372,MCG -03-28-012,PGC 032470;;; -NGC3410;G;10:51:53.71;+51:00:23.4;UMa;0.87;0.59;40;14.20;;12.70;11.93;11.74;23.20;SABb;;;;;;;;2MASX J10515373+5100234,IRAS 10488+5116,MCG +09-18-042,PGC 032594,SDSS J105153.71+510023.4,SDSS J105153.71+510023.7;;; -NGC3411;Dup;10:50:26.47;-12:50:40.6;Crt;;;;;;;;;;;;;;;3402;;;;;; -NGC3412;G;10:50:53.28;+13:24:43.7;Leo;3.96;2.17;155;11.45;10.54;8.53;7.86;7.67;23.14;S0;;;;;;;;2MASX J10505331+1324437,MCG +02-28-016,PGC 032508,SDSS J105053.27+132443.6,UGC 05952;;; -NGC3413;G;10:51:20.74;+32:45:59.0;LMi;2.02;0.85;177;13.10;;11.39;10.84;10.73;23.43;S0-a;;;;;;;;2MASX J10512070+3245589,IRAS 10485+3301,MCG +06-24-024,PGC 032543,SDSS J105120.73+324558.9,SDSS J105120.74+324559.0,UGC 05960;;; -NGC3414;G;10:51:16.21;+27:58:30.4;LMi;2.67;1.37;9;12.10;;8.89;8.22;7.98;22.89;S0;;;;;;;;2MASX J10511624+2758298,MCG +05-26-021,PGC 032533,SDSS J105116.20+275830.3,UGC 05959;;; -NGC3415;G;10:51:42.60;+43:42:45.4;UMa;1.35;0.78;10;13.20;;10.32;9.62;9.39;22.76;S0-a;;;;;;;;2MASX J10514261+4342454,IRAS 10488+4358,MCG +07-22-072,PGC 032579,SDSS J105142.59+434245.4,UGC 05969;;; -NGC3416;G;10:51:48.31;+43:45:50.9;UMa;0.59;0.25;31;15.20;;13.96;13.42;12.90;22.57;Sc;;;;;;;;2MASX J10514829+4345512,MCG +07-22-073,PGC 032588,SDSS J105148.30+434550.8,SDSS J105148.30+434550.9;;; -NGC3417;G;10:51:01.72;+08:28:24.6;Leo;0.81;0.52;87;15.30;;12.47;11.80;11.83;23.28;SBb;;;;;;;;2MASX J10510169+0828242,PGC 032520,SDSS J105101.72+082824.5;;; -NGC3418;G;10:51:23.95;+28:06:43.3;LMi;1.10;0.94;77;14.50;;11.18;10.49;10.32;22.96;S0-a;;;;;;;;2MASX J10512393+2806429,MCG +05-26-023,PGC 032549,SDSS J105123.95+280643.2,SDSS J105123.96+280643.3,UGC 05963;;; -NGC3419;G;10:51:17.74;+13:56:45.6;Leo;0.75;0.63;117;13.46;;11.26;10.56;10.28;21.94;S0-a;;;;;;;;2MASX J10511773+1356457,MCG +02-28-018,PGC 032535,SDSS J105117.74+135645.5,UGC 05964;;; -NGC3419A;G;10:51:19.94;+14:01:24.4;Leo;1.67;0.34;136;14.90;;12.55;11.72;11.61;23.79;SBbc;;;;;;;;2MASX J10511994+1401241,MCG +02-28-019,PGC 032540,SDSS J105119.93+140124.3,SDSS J105119.93+140124.4,UGC 05965;;; -NGC3420;G;10:50:09.66;-17:14:33.1;Hya;1.16;1.13;120;14.00;;11.12;10.38;10.05;23.79;SBa;;;;;;;;2MASX J10500967-1714326,MCG -03-28-011,PGC 032453;;; -NGC3421;G;10:50:57.63;-12:26:54.7;Crt;1.58;1.24;65;14.00;;11.41;10.47;10.37;24.10;SBa;;;;;;0652;;2MASX J10505766-1226546,MCG -02-28-013,PGC 032514;;; -NGC3422;G;10:51:17.34;-12:24:08.6;Crt;1.33;0.44;54;14.90;;11.06;10.37;10.06;23.97;S0-a;;;;;;;;2MASX J10511732-1224086,MCG -02-28-015,PGC 032534;;; -NGC3423;G;10:51:14.33;+05:50:24.1;Leo;3.56;3.03;4;12.10;;9.30;8.65;8.55;22.96;Sc;;;;;;;;2MASX J10511434+0550243,MCG +01-28-012,PGC 032529,SDSS J105114.32+055024.0,SDSS J105114.33+055024.1,UGC 05962;;; -NGC3424;G;10:51:46.33;+32:54:02.7;LMi;2.49;0.78;111;13.20;;10.13;9.36;9.04;23.05;SBb;;;;;;;;2MASX J10514632+3254024,IRAS 10489+3309,MCG +06-24-025,PGC 032584,UGC 05972;;; -NGC3425;G;10:51:25.53;+08:34:01.7;Leo;1.16;1.01;65;14.50;;11.39;10.66;10.53;23.56;S0;;;;;3388;;;2MASX J10512551+0834014,MCG +02-28-021,PGC 032555,SDSS J105125.52+083401.7,UGC 05967;;; -NGC3426;G;10:51:41.75;+18:28:51.0;Leo;1.71;1.39;104;13.90;;10.84;10.16;9.87;23.83;E;;;;;;;;2MASX J10514174+1828517,MCG +03-28-020,PGC 032577,SDSS J105141.74+182850.9,UGC 05975;;; -NGC3427;G;10:51:26.33;+08:17:55.3;Leo;1.30;0.83;77;14.00;;11.15;10.43;10.14;23.15;S0-a;;;;;;;;2MASX J10512633+0817554,MCG +02-28-020,PGC 032559,SDSS J105126.31+081755.2,SDSS J105126.32+081755.2,UGC 05966;;; -NGC3428;G;10:51:29.51;+09:16:46.2;Leo;1.40;0.60;167;14.10;;11.62;10.90;10.60;22.91;Sb;;;;;3429;;;2MASX J10512951+0916464,MCG +02-28-022,PGC 032552,SDSS J105129.50+091646.2,UGC 05968;;; -NGC3429;Dup;10:51:29.51;+09:16:46.2;Leo;;;;;;;;;;;;;;;3428;;;;;; -NGC3430;G;10:52:11.40;+32:57:01.6;LMi;3.99;2.22;32;12.20;;9.81;9.14;8.90;23.44;Sc;;;;;;;;2MASX J10521141+3257015,IRAS 10494+3312,MCG +06-24-026,PGC 032614,SDSS J105211.40+325701.5,UGC 05982;;; -NGC3431;G;10:51:15.04;-17:00:28.9;Crt;1.50;0.40;133;14.30;;11.43;10.66;10.31;23.18;SABb;;;;;;;;2MASX J10511503-1700286,IRAS 10487-1644,MCG -03-28-014,PGC 032531;;; -NGC3432;G;10:52:31.13;+36:37:07.6;LMi;7.41;2.08;33;11.81;11.67;9.91;9.29;9.06;23.63;SBm;;;;;;;;2MASX J10523113+3637076,IRAS 10497+3653,MCG +06-24-028,PGC 032643,UGC 05986;;; -NGC3433;G;10:52:03.87;+10:08:53.9;Leo;2.51;2.40;170;13.60;;10.38;9.69;9.68;23.98;Sc;;;;;;;;2MASX J10520382+1008536,MCG +02-28-023,PGC 032605,SDSS J105203.87+100853.9,UGC 05981;;; -NGC3434;G;10:51:58.03;+03:47:31.4;Leo;1.45;1.09;178;13.40;;10.72;9.94;9.76;23.11;Sb;;;;;;;;2MASX J10515804+0347312,MCG +01-28-015,PGC 032595,SDSS J105158.02+034731.4,SDSS J105158.03+034731.4,UGC 05980;;; -NGC3435;G;10:54:48.33;+61:17:23.5;UMa;1.75;1.17;33;14.20;;11.74;11.08;10.73;23.72;SBb;;;;;;;;2MASX J10544836+6117236,MCG +10-16-022,PGC 032786,SDSS J105448.33+611723.5,UGC 06025;;; -NGC3436;G;10:52:27.49;+08:05:38.5;Leo;0.86;0.60;79;15.00;;12.12;11.50;11.07;23.11;Sab;;;;;;;;2MASX J10522747+0805385,MCG +01-28-016,PGC 032633,SDSS J105227.49+080538.5,SDSS J105227.49+080538.6;;; -NGC3437;G;10:52:35.75;+22:56:02.9;Leo;2.35;0.82;119;12.58;11.96;9.92;9.19;8.88;22.43;SABc;;;;;;;;2MASX J10523574+2256028,IRAS 10498+2312,MCG +04-26-016,PGC 032648,SDSS J105235.76+225602.9,UGC 05995;;; -NGC3438;G;10:52:25.98;+10:32:50.1;Leo;0.89;0.83;65;14.30;;11.59;10.89;10.76;22.76;E?;;;;;;;;2MASX J10522599+1032505,MCG +02-28-025,PGC 032638,SDSS J105225.96+103250.1,SDSS J105225.97+103250.0,SDSS J105225.97+103250.1,SDSS J105225.98+103250.1,UGC 05988;;; -NGC3439;G;10:52:25.72;+08:33:27.3;Leo;0.44;0.35;135;15.20;;13.22;12.71;12.32;;Sbc;;;;;;;;2MASX J10522572+0833275,PGC 032634,SDSS J105225.71+083327.3;;;Diameters and position angle taken from Simbad. -NGC3440;G;10:53:49.50;+57:07:07.5;UMa;2.03;0.47;51;14.02;;12.32;11.76;11.68;23.60;Sbc;;;;;;;;2MASX J10534950+5707075,IRAS 10508+5722,MCG +10-16-019,PGC 032714,UGC 06009;;; -NGC3441;G;10:52:31.12;+07:13:29.6;Leo;0.79;0.43;6;13.90;;11.79;11.11;10.76;21.89;Sbc;;;;;;;;2MASX J10523110+0713295,MCG +01-28-017,PGC 032642,SDSS J105231.11+071329.6,SDSS J105231.12+071329.6,UGC 05993;;; -NGC3442;G;10:53:08.11;+33:54:37.3;UMa;0.54;0.36;18;13.20;;11.86;11.20;10.90;21.01;Sab;;;;;;;;2MASX J10530813+3354369,IRAS 10503+3410,PGC 032679,SDSS J105308.10+335437.3,SDSS J105308.11+335437.3,UGC 06001;;; -NGC3443;G;10:53:00.12;+17:34:25.1;Leo;1.77;0.89;146;14.70;;13.59;13.33;12.76;24.14;SABc;;;;;;;;2MASX J10530011+1734250,MCG +03-28-025,PGC 032671,UGC 06000;;; -NGC3444;G;10:52:59.38;+10:12:38.1;Leo;1.36;0.16;19;15.40;;12.79;12.06;11.59;23.48;Sbc;;;;;;;;2MASX J10525942+1012387,PGC 032670,SDSS J105259.37+101238.1,SDSS J105259.38+101238.1,UGC 06004;;; -NGC3445;G;10:54:35.49;+56:59:26.5;UMa;1.41;1.28;130;12.90;12.55;11.22;10.67;10.61;22.32;SABm;;;;;;;;2MASX J10543546+5659264,IRAS 10515+5715,MCG +10-16-023,PGC 032772,SDSS J105435.48+565926.4,UGC 06021;;Multiple SDSS entries describe this object.; -NGC3446;OCl;10:52:06.93;-45:08:21.3;Vel;7.50;;;;;;;;;;;;;;;;;MWSC 1862;;; -NGC3447A;G;10:53:23.98;+16:46:20.8;Leo;3.38;1.95;14;14.30;;;;;25.37;Sm;;;;;;;;MCG +03-28-027,PGC 032694,SDSS J105323.97+164620.7,SDSS J105323.98+164620.8,UGC 06006;;Multiple SDSS entries describe this galaxy.; -NGC3447B;G;10:53:29.65;+16:47:09.6;Leo;1.49;0.79;107;14.30;;;;;24.38;IB;;;;;;;;MCG +03-28-028,PGC 032700,SDSS J105329.82+164707.0,UGC 06007;;Multiple SDSS entries describe this source.; -NGC3448;G;10:54:39.20;+54:18:17.5;UMa;2.97;0.88;65;12.20;;10.39;9.81;9.47;22.61;S?;;;;;;;;2MASX J10543923+5418188,IRAS 10516+5434,MCG +09-18-055,PGC 032774,SDSS J105439.20+541817.5,UGC 06024;;; -NGC3449;G;10:52:53.66;-32:55:39.4;Ant;3.66;0.96;145;12.96;;9.62;8.89;8.61;23.77;SABa;;;;;;;;2MASX J10525364-3255394,ESO 376-025,ESO-LV 376-0250,IRAS 10505-3240,MCG -05-26-010,PGC 032666;;; -NGC3450;G;10:48:03.62;-20:50:57.1;Hya;2.61;2.29;110;12.72;;9.55;8.78;8.50;23.40;Sb;;;;;;;;2MASX J10480361-2050572,ESO 569-006,ESO-LV 569-0060,IRAS 10456-2034,MCG -03-28-004,PGC 032270,UGCA 218;;; -NGC3451;G;10:54:20.89;+27:14:23.1;LMi;1.66;0.78;50;13.50;;11.18;10.53;10.23;22.60;Sc;;;;;;;;2MASX J10542085+2714227,IRAS 10516+2730,MCG +05-26-028,PGC 032754,SDSS J105420.88+271423.1,UGC 06023;;Multiple SDSS entries describe this object.; -NGC3452;G;10:54:14.08;-11:24:18.2;Crt;1.25;0.31;65;15.00;;11.30;10.54;10.32;23.57;Sa;;;;;;;;2MASX J10541409-1124179,MCG -02-28-019,PGC 032742;;; -NGC3453;G;10:53:40.50;-21:47:33.9;Hya;1.09;0.56;13;13.87;;11.14;10.52;10.34;22.33;SBbc;;;;;;;;2MASX J10534049-2147337,ESO 569-017,ESO-LV 569-0170,IRAS 10512-2131,MCG -04-26-013,PGC 032707;;; -NGC3454;G;10:54:29.53;+17:20:38.5;Leo;2.41;0.53;116;14.10;;11.62;10.96;10.67;23.15;SBc;;;;;;;;2MASX J10542945+1720385,MCG +03-28-030,PGC 032763,SDSS J105429.52+172038.5,SDSS J105429.53+172038.5,UGC 06026;;; -NGC3455;G;10:54:31.09;+17:17:05.1;Leo;2.27;1.42;70;13.10;;11.32;10.62;10.39;24.47;SABb;;;;;;;;2MASX J10543106+1717045,IRAS 10518+1733,MCG +03-28-031,PGC 032767,SDSS J105431.08+171705.1,SDSS J105431.09+171705.0,UGC 06028;;; -NGC3456;G;10:54:03.31;-16:01:39.8;Crt;1.75;1.26;105;13.10;;10.93;10.25;9.92;22.98;Sc;;;;;;;;2MASX J10540329-1601398,IRAS 10515-1545,MCG -03-28-018,PGC 032730;;; -NGC3457;G;10:54:48.63;+17:37:16.5;Leo;0.97;0.93;175;13.00;;10.49;9.83;9.64;21.79;E;;;;;3460;;;2MASX J10544862+1737161,MCG +03-28-032,PGC 032787,SDSS J105448.63+173716.4,UGC 06030;;Identification as NGC 3457 is not certain.; -NGC3458;G;10:56:01.48;+57:07:01.1;UMa;1.38;0.73;7;13.20;;10.23;9.55;9.33;22.46;S0;;;;;;;;2MASX J10560145+5707010,MCG +10-16-026,PGC 032854,SDSS J105601.47+570701.1,UGC 06037;;; -NGC3459;G;10:54:44.28;-17:02:31.2;Crt;1.45;0.55;149;14.00;;11.09;10.36;10.06;23.31;SBab;;;;;;;;2MASX J10544427-1702313,IRAS 10522-1646,MCG -03-28-022,PGC 032782;;; -NGC3460;Dup;10:54:48.63;+17:37:16.5;Leo;;;;;;;;;;;;;;;3457;;;;;; -NGC3461;G;10:54:55.29;+17:42:29.3;Leo;0.51;0.43;66;15.99;;;;;23.13;Sbc;;;;;;;;2MASX J10545526+1742292,IRAS 10522+1758,PGC 032793,SDSS J105455.29+174229.2;;; -NGC3462;G;10:55:21.06;+07:41:48.3;Leo;1.76;1.16;62;13.40;;10.33;9.65;9.37;23.38;S0;;;;;;;;2MASX J10552108+0741482,MCG +01-28-019,PGC 032822,SDSS J105521.05+074148.3,UGC 06034;;; -NGC3463;G;10:55:13.36;-26:08:26.7;Hya;1.51;0.70;77;13.78;;10.96;10.22;10.04;22.90;Sb;;;;;;;;2MASX J10551336-2608266,ESO 502-002,ESO-LV 502-0020,IRAS 10528-2552,MCG -04-26-014,PGC 032813;;ESO dec. of -25d53.5m is incorrect. Corrected in ESO-LV.; -NGC3464;G;10:54:40.01;-21:03:59.9;Hya;2.37;1.55;111;13.23;;10.38;9.66;9.46;23.33;Sc;;;;;;;;2MASX J10544007-2103596,2MASX J10544101-2104113,ESO 569-022,ESO-LV 569-0220,IRAS 10521-2047,MCG -03-28-021,PGC 032778,SDSS J105440.10-210359.4,UGCA 222;;DSS1 has a plate flaw superposed at 105440.8, -210507 (2000).; -NGC3465;G;10:59:31.27;+75:11:28.6;Dra;0.95;0.80;65;14.60;;11.86;11.21;10.93;23.18;Sb;;;;;;;;2MASX J10593125+7511284,IRAS 10557+7527,MCG +13-08-048,PGC 033099,UGC 06056;;; -NGC3466;G;10:56:15.48;+09:45:16.0;Leo;1.00;0.56;53;14.60;;11.29;10.60;10.46;22.93;SBab;;;;;;;;2MASX J10561548+0945156,MCG +02-28-028,PGC 032872,SDSS J105615.47+094515.9,SDSS J105615.48+094516.0,UGC 06042;;; -NGC3467;G;10:56:44.08;+09:45:32.1;Leo;0.92;0.81;20;14.20;;11.32;10.63;10.40;22.98;S0;;;;;;;;2MASX J10564407+0945324,MCG +02-28-030,PGC 032903,SDSS J105644.07+094532.0,SDSS J105644.07+094532.1,UGC 06045;;; -NGC3468;G;10:57:31.17;+40:56:46.1;UMa;1.50;0.73;9;14.20;;10.85;10.18;9.89;23.71;S0;;;;;;;;2MASX J10573116+4056463,MCG +07-23-006,PGC 032940,SDSS J105731.16+405646.1,SDSS J105731.17+405646.1,UGC 06048;;; -NGC3469;G;10:56:57.69;-14:18:02.9;Crt;1.56;1.05;142;14.00;;10.77;10.08;9.76;23.70;Sab;;;;;;;;2MASX J10565769-1418018,MCG -02-28-024,PGC 032912;;; -NGC3470;G;10:58:44.90;+59:30:38.5;UMa;1.36;1.16;161;14.10;;11.68;10.84;10.69;23.53;Sab;;;;;;;;2MASX J10584486+5930383,MCG +10-16-038,PGC 033040,SDSS J105844.89+593038.5,SDSS J105844.89+593038.8,SDSS J105844.90+593038.5,SDSS J105844.91+593038.5,UGC 06060;;; -NGC3471;G;10:59:09.01;+61:31:50.5;UMa;1.79;0.92;12;13.00;;10.58;9.94;9.59;22.95;SBa;;;;;;;;2MASX J10590901+6131496,IRAS 10560+6147,MCG +10-16-039,PGC 033074,SDSS J105908.99+613150.4,SDSS J105909.01+613150.4,SDSS J105909.01+613150.5,UGC 06064;;; -NGC3472;Other;10:57:22.24;-19:38:15.7;Crt;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3473;G;10:58:05.17;+17:07:27.9;Leo;1.05;0.84;36;14.80;;11.66;11.02;10.77;23.33;SBb;;;;;;;;2MASX J10580519+1707281,MCG +03-28-041,PGC 032978,SDSS J105805.16+170727.8,UGC 06052;;; -NGC3474;G;10:58:08.76;+17:05:44.5;Leo;1.06;0.82;160;14.90;;11.74;11.11;10.84;23.97;E;;;;;;;;2MASX J10580875+1705441,MCG +03-28-042,PGC 032989,SDSS J105808.75+170544.5,SDSS J105808.76+170544.5;;; -NGC3475;G;10:58:25.22;+24:13:34.8;Leo;1.13;0.70;60;14.00;;10.92;10.21;9.89;23.34;Sa;;;;;;;;2MASX J10582517+2413351,MCG +04-26-022,PGC 033012,SDSS J105825.22+241334.8,UGC 06058;;; -NGC3476;G;10:58:07.60;+09:16:34.1;Leo;1.01;0.90;146;15.00;;11.66;10.93;10.96;23.75;E;;;;;3480;;;2MASX J10580758+0916335,MCG +02-28-032,PGC 032987,SDSS J105807.59+091633.9,SDSS J105807.59+091634.0,SDSS J105807.60+091633.9,SDSS J105807.60+091634.0,SDSS J105807.60+091634.1;;Identification as NGC 3480 is not certain.; -NGC3477;G;10:58:12.58;+09:13:04.1;Leo;1.41;0.31;72;15.70;;12.31;11.58;11.36;24.67;S0-a;;;;;;;;2MASX J10581255+0913046,PGC 032997,SDSS J105812.57+091304.0,SDSS J105812.58+091304.0,SDSS J105812.58+091304.1;;; -NGC3478;G;10:59:27.36;+46:07:20.6;UMa;2.05;0.85;127;13.70;;;;;23.20;SBbc;;;;;;;;2MASX J10592591+4607252,IRAS 10565+4623,MCG +08-20-059,PGC 033101,SDSS J105927.35+460720.5,SDSS J105927.35+460720.6,SDSS J105927.36+460720.6,UGC 06069;;The 2MASX position refers to a knot in the western arm.; -NGC3479;G;10:58:55.48;-14:57:41.0;Crt;1.53;1.07;3;13.00;;11.33;10.76;10.29;23.24;Sbc;;;;;3502;;;2MASX J10585548-1457408,MCG -02-28-027,PGC 033053;;; -NGC3480;Dup;10:58:07.60;+09:16:34.1;Leo;;;;;;;;;;;;;;;3476;;;;;; -NGC3481;G;10:59:26.17;-07:32:37.1;Crt;0.81;0.56;125;14.14;;11.56;11.05;10.61;22.77;Sab;;;;;;;;2MASX J10592616-0732370,IRAS 10569-0716,MCG -01-28-016,PGC 033097;;; -NGC3482;G;10:58:34.27;-46:35:02.0;Vel;1.85;1.36;16;13.51;;10.43;9.70;9.46;23.39;SBa;;;;;;;;2MASX J10583429-4635018,ESO 264-056,ESO-LV 264-0560,PGC 033025;;; -NGC3483;G;10:59:00.18;-28:28:37.1;Hya;1.79;1.35;98;13.07;;9.95;9.29;9.00;23.22;S0-a;;;;;;;;2MASX J10590019-2828370,ESO 438-001,ESO-LV 438-0010,MCG -05-26-016,PGC 033060;;; -NGC3484;Other;10:57:24.05;-19:37:59.7;Crt;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3485;G;11:00:02.38;+14:50:29.7;Leo;2.17;2.05;50;12.80;;10.60;9.76;9.46;23.08;Sb;;;;;;;;2MASX J11000239+1450295,MCG +03-28-044,PGC 033140,SDSS J110002.36+145029.7,UGC 06077;;; -NGC3486;G;11:00:23.87;+28:58:30.5;LMi;5.82;4.12;80;11.11;10.53;8.93;8.16;8.00;23.35;Sc;;;;;;;;2MASX J11002394+2858293,IRAS 10576+2914,MCG +05-26-032,PGC 033166,SDSS J110023.86+285830.4,UGC 06079;;; -NGC3487;G;11:00:46.55;+17:35:15.4;Leo;0.89;0.38;152;14.60;;11.69;10.93;10.52;22.58;Sab;;;;;;;;2MASX J11004654+1735155,MCG +03-28-047,PGC 033195,SDSS J110046.54+173515.1,UGC 06092;;; -NGC3488;G;11:01:23.61;+57:40:39.6;UMa;1.51;0.72;172;13.70;;11.16;10.58;10.45;23.00;Sc;;;;;;;;2MASX J11012353+5740389,IRAS 10583+5756,MCG +10-16-045,PGC 033242,SDSS J110123.57+574039.8,SDSS J110123.60+574039.5,SDSS J110123.61+574039.6,UGC 06096;;; -NGC3489;G;11:00:18.57;+13:54:04.4;Leo;3.44;2.03;70;11.12;10.29;8.27;7.55;7.37;22.44;S0-a;;;;;;;;2MASX J11001858+1354045,MCG +02-28-039,PGC 033160,UGC 06082;;; -NGC3490;G;10:59:54.41;+09:21:42.8;Leo;0.89;0.72;26;15.00;;12.49;11.84;11.51;23.86;E;;;;;;;;2MASX J10595440+0921422,MCG +02-28-036,PGC 033128,SDSS J105954.40+092142.8;;; -NGC3491;G;11:00:35.40;+12:09:41.6;Leo;0.92;0.90;140;14.10;;10.94;10.24;9.96;22.84;E-S0;;;;;;;;2MASX J11003537+1209415,MCG +02-28-041,PGC 033180,SDSS J110035.39+120941.6,SDSS J110035.40+120941.6,SDSS J110035.40+120941.7,UGC 06088;;; -NGC3492;GPair;11:00:57.00;+10:30:18.0;Leo;1.00;;;;;;;;;;;;;;;;;MCG +02-28-045,UGC 06094;;;Diameter of the group inferred by the author. -NGC3492 NED01;G;11:00:56.75;+10:30:15.2;Leo;0.98;0.76;27;15.00;;;;;24.17;E;;;;;;;;MCG +02-28-045 NED01,PGC 083429,SDSS J110056.74+103015.1,SDSS J110056.74+103015.2,UGC 06094 NED01;;; -NGC3492 NED02;G;11:00:57.42;+10:30:19.7;Leo;1.17;0.76;100;14.00;;11.00;10.32;10.06;23.34;E;;;;;;;;2MASX J11005745+1030197,MCG +02-28-045 NED02,PGC 033207,UGC 06094 NED02;;; -NGC3493;G;11:01:27.83;+27:43:10.5;LMi;0.98;0.34;85;15.30;;11.80;11.09;10.80;22.86;SBc;;;;;;;;2MASX J11012782+2743099,IRAS 10587+2759,MCG +05-26-036,PGC 033249,SDSS J110127.82+274310.4,UGC 06099;;; -NGC3494;**;11:01:10.91;+03:46:27.5;Leo;;;;;;;;;;;;;;;;;;;;; -NGC3495;G;11:01:16.23;+03:37:40.6;Leo;4.66;1.00;20;13.10;;9.89;9.24;8.93;23.22;SABc;;;;;;;;2MASX J11011616+0337409,IRAS 10586+0353,MCG +01-28-027,PGC 033234,SDSS J110116.15+033741.5,SDSS J110116.22+033740.5,UGC 06098;;; -NGC3496;OCl;10:59:33.81;-60:20:12.7;Car;6.00;;;9.02;8.20;;;;;;;;;;;;;MWSC 1878;;; -NGC3497;G;11:07:18.07;-19:28:17.6;Crt;2.58;1.56;57;12.79;;9.65;8.96;8.67;23.77;S0;;;;;3528,3525;2624;;2MASX J11071805-1928175,ESO 570-006,MCG -03-28-037,PGC 033667;;; -NGC3498;Other;11:01:42.19;+14:21:02.6;Leo;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -NGC3499;G;11:03:11.03;+56:13:18.2;UMa;0.83;0.71;20;14.30;;11.17;10.47;10.23;22.47;S0-a;;;;;;;;2MASX J11031110+5613179,MCG +09-18-080,PGC 033375,SDSS J110311.01+561318.6,SDSS J110311.03+561318.2,UGC 06115;;"CGCG misprints R.A. as 11h00.0m; corrected in CGCG errata."; -NGC3500;G;11:01:51.47;+75:12:04.9;Dra;0.87;0.42;48;14.80;;11.97;11.26;10.83;22.94;Sab;;;;;;;;2MASX J11015144+7512050,IRAS 10582+7528,MCG +13-08-052,PGC 033277,UGC 06090;;; -NGC3501;G;11:02:47.27;+17:59:21.6;Leo;4.31;0.65;27;13.80;;10.52;9.81;9.41;23.98;Sc;;;;;;;;2MASX J11024730+1759223,MCG +03-28-051,PGC 033343,SDSS J110247.26+175921.6,UGC 06116;;; -NGC3502;Dup;10:58:55.48;-14:57:41.0;Crt;;;;;;;;;;;;;;;3479;;;;;; -NGC3503;RfN;11:01:17.24;-59:50:44.7;Car;3.00;3.00;;;;;;;;;;;;;;;;ESO 128-028;;;Dimensions taken from LEDA -NGC3504;G;11:03:11.21;+27:58:21.0;LMi;2.48;2.24;150;13.48;12.93;9.24;8.61;8.27;22.27;Sab;;;;;;;;2MASX J11031119+2758207,IRAS 11004+2814,MCG +05-26-039,PGC 033371,SDSS J110311.24+275820.2,UGC 06118;;; -NGC3505;Dup;11:02:59.67;-16:17:22.0;Crt;;;;;;;;;;;;;;;3508;;;;;; -NGC3506;G;11:03:12.97;+11:04:36.0;Leo;1.16;1.04;175;12.90;;11.07;10.44;10.20;22.14;Sc;;;;;;;;2MASX J11031294+1104363,MCG +02-28-047,PGC 033379,SDSS J110312.95+110436.3,UGC 06120;;; -NGC3507;G;11:03:25.36;+18:08:07.6;Leo;2.92;2.51;95;11.40;;9.34;8.71;8.38;23.02;SBb;;;;;;;;2MASX J11032539+1808072,MCG +03-28-053,PGC 033390,SDSS J110325.36+180807.5,UGC 06123;;; -NGC3508;G;11:02:59.67;-16:17:22.0;Crt;1.00;0.80;23;13.60;;10.81;10.18;9.83;22.18;Sb;;;;;3505;2622;;2MASX J11025967-1617220,IRAS 11005-1601,MCG -03-28-031,PGC 033362;;Identification as NGC 3505 is not certain.; -NGC3509;G;11:04:23.55;+04:49:43.0;Leo;1.93;0.51;37;14.00;;11.41;10.71;10.19;23.41;Sbc;;;;;;;;2MASX J11042356+0449428,IRAS 11018+0505,MCG +01-28-033,PGC 033446,SDSS J110423.55+044943.0,UGC 06134;;; -NGC3510;G;11:03:43.37;+28:53:13.8;LMi;1.55;0.71;163;13.60;;11.76;11.48;11.15;22.55;SBm;;;;;;;;2MASX J11034335+2853135,IRAS 11010+2909,MCG +05-26-040,PGC 033408,SDSS J110343.36+285313.7,SDSS J110343.36+285313.8,SDSS J110343.37+285313.8,UGC 06126;;; -NGC3511;G;11:03:23.77;-23:05:12.4;Crt;6.04;2.00;76;11.66;;8.95;8.27;8.07;23.29;SABc;;;;;;;;2MASX J11032376-2305124,ESO 502-013,ESO-LV 502-0130,IRAS 11009-2248,MCG -04-26-020,PGC 033385,UGCA 223;;Extended HIPASS source; -NGC3512;G;11:04:02.94;+28:02:12.5;LMi;1.59;1.36;141;13.70;12.87;10.58;9.93;9.65;22.62;Sc;;;;;;;;2MASX J11040298+2802125,IRAS 11013+2818,MCG +05-26-041,PGC 033432,SDSS J110402.94+280212.4,SDSS J110402.94+280212.5,UGC 06128;;; -NGC3513;G;11:03:46.08;-23:14:43.8;Crt;2.81;1.28;113;12.16;;10.42;9.85;9.15;22.28;SBc;;;;;;;;2MASX J11034608-2314437,ESO 502-014,ESO-LV 502-0140,IRAS 11013-2258,MCG -04-26-021,PGC 033410,UGCA 224;;; -NGC3514;G;11:03:59.90;-18:46:50.1;Crt;1.22;0.99;100;14.00;;11.30;10.62;10.41;22.70;SABc;;;;;;;;2MASX J11035989-1846501,ESO 570-001,IRAS 11015-1830,MCG -03-28-035,PGC 033430;;; -NGC3515;G;11:04:37.24;+28:13:40.7;LMi;0.98;0.69;51;14.80;;12.01;11.41;11.04;23.02;Sbc;;;;;;;;2MASX J11043725+2813403,IRAS 11018+2829,MCG +05-26-044,PGC 033467,SDSS J110437.24+281340.6,SDSS J110437.24+281340.7,UGC 06139;;; -NGC3516;G;11:06:47.49;+72:34:06.9;UMa;1.91;1.62;55;13.12;12.40;9.53;8.93;8.51;22.69;S0;;;;;;;;2MASX J11064749+7234066,IRAS 11033+7250,MCG +12-11-009,PGC 033623,UGC 06153;;; -NGC3517;G;11:05:36.81;+56:31:29.7;UMa;0.95;0.81;91;13.80;;11.31;10.62;10.37;22.41;Sab;;;;;;;;2MASX J11053683+5631296,IRAS 11026+5647,MCG +10-16-057,PGC 033532,SDSS J110536.80+563129.9,SDSS J110536.81+563129.7,UGC 06144;;; -NGC3518;Dup;10:04:02.11;-06:28:29.2;Sex;;;;;;;;;;;;;;;3110;;;;;; -NGC3519;OCl;11:04:02.77;-61:22:05.7;Car;;;;8.05;7.70;;;;;;;;;;;;;ESO 128-030,MWSC 1885;;; -NGC3520;G;11:07:09.21;-18:01:25.3;Crt;0.95;0.75;51;14.91;;11.68;10.96;10.82;23.62;E;;;;;;;;2MASX J11070920-1801255,ESO 570-004,PGC 033648;;; -NGC3521;G;11:05:48.58;-00:02:09.1;Leo;8.32;4.47;162;9.83;9.02;6.74;6.03;5.78;22.75;SABb;;;;;;;;2MASX J11054859-0002092,IRAS 11032+0014,MCG +00-28-030,PGC 033550,UGC 06150;;Extended HIPASS source; -NGC3522;G;11:06:40.46;+20:05:08.0;Leo;1.17;0.62;115;14.13;;11.20;10.56;10.38;23.16;E;;;;;;;;2MASX J11064045+2005082,MCG +03-28-060,PGC 033615,SDSS J110640.45+200507.9,SDSS J110640.46+200508.0,UGC 06159;;; -NGC3523;G;11:03:06.32;+75:06:56.7;Dra;1.14;0.97;160;13.80;;11.35;10.71;10.32;22.79;Sbc;;;;;;;;2MASX J11030632+7506567,IRAS 10594+7523,MCG +13-08-053,PGC 033367,UGC 06105;;The 2MASS position is 6 arcsec north of the nucleus.; -NGC3524;G;11:06:32.10;+11:23:07.5;Leo;1.47;0.43;14;13.40;;10.43;9.81;9.61;22.64;S0-a;;;;;;;;2MASX J11063210+1123070,MCG +02-28-050,PGC 033604,SDSS J110632.10+112307.5,SDSS J110632.11+112307.5,UGC 06158;;; -NGC3525;Dup;11:07:18.07;-19:28:17.6;Crt;;;;;;;;;;;;;;;3497;;;;;; -NGC3526;G;11:06:56.63;+07:10:26.1;Leo;2.38;0.56;55;13.70;;11.48;11.04;10.69;23.03;Sc;;;;;3531;;;2MASX J11065662+0710261,IRAS 11043+0726,MCG +01-28-039,PGC 033635,SDSS J110656.67+071026.7,UGC 06167;;; -NGC3527;G;11:07:18.19;+28:31:40.0;UMa;1.18;1.00;171;15.10;;11.59;11.00;10.72;23.87;Sa;;;;;;;;2MASX J11071820+2831399,MCG +05-26-059,PGC 033669,SDSS J110718.18+283139.9,SDSS J110718.19+283140.0,UGC 06170;;; -NGC3528;Dup;11:07:18.07;-19:28:17.6;Crt;;;;;;;;;;;;;;;3497;;;;;; -NGC3529;G;11:07:19.12;-19:33:20.3;Crt;1.11;0.92;104;14.66;;11.54;10.88;10.62;22.89;SBb;;;;;;2625;;2MASX J11071911-1933205,ESO 570-007,IRAS 11048-1917,MCG -03-28-038,PGC 033671;;; -NGC3530;G;11:08:40.38;+57:13:48.7;UMa;0.81;0.27;99;14.40;;11.37;10.71;10.47;22.45;S0-a;;;;;;;;2MASX J11084041+5713485,MCG +10-16-064,PGC 033766,SDSS J110840.38+571348.6,SDSS J110840.38+571348.7,UGC 06188;;; -NGC3531;Dup;11:06:56.63;+07:10:26.1;Leo;;;;;;;;;;;;;;;3526;;;;;; -NGC3532;OCl;11:05:47.82;-58:46:13.8;Car;12.00;;;3.28;3.00;;;;;;;;;;;;;C 091,MWSC 1890;Wishing Well Cluster;; -NGC3533;G;11:07:07.55;-37:10:21.5;Cen;2.88;0.73;70;13.79;;10.25;9.45;9.24;24.16;SABb;;;;;;;;2MASX J11070753-3710214,ESO 377-011,ESO-LV 377-0110,IRAS 11047-3654,MCG -06-25-002,PGC 033647;;; -NGC3534;G;11:08:55.66;+26:36:37.8;Leo;1.44;0.45;88;14.98;14.04;11.62;10.77;10.36;23.79;Sab;;;;;;;;2MASX J11085568+2636372,IRAS 11062+2652,MCG +05-26-062,PGC 033786,SDSS J110855.66+263637.8,UGC 06190;;; -NGC3534B;G;11:08:57.17;+26:35:46.1;Leo;0.92;0.38;169;15.72;14.86;13.03;12.40;12.03;23.61;Sb;;;;;;;;2MASX J11085718+2635462,MCG +05-26-063,PGC 033782,SDSS J110857.16+263546.0,SDSS J110857.16+263546.1,SDSS J110857.17+263546.1,UGC 06193;;; -NGC3535;G;11:08:33.92;+04:49:54.8;Leo;1.16;0.51;178;14.30;;11.04;10.36;10.09;23.02;Sa;;;;;;;;2MASX J11083390+0449545,IRAS 11059+0505,MCG +01-29-004,PGC 033760,SDSS J110833.91+044954.8,SDSS J110833.92+044954.8,UGC 06189;;; -NGC3536;G;11:08:51.20;+28:28:32.5;UMa;0.84;0.68;161;15.20;;11.85;11.15;10.79;23.36;Sa;;;;;;;;2MASX J11085117+2828321,MCG +05-26-061,PGC 033779,SDSS J110851.19+282832.5,SDSS J110851.20+282832.5,UGC 06191;;; -NGC3537;GPair;11:08:26.70;-10:15:28.0;Crt;1.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC3537 NED01;G;11:08:26.51;-10:15:21.7;Crt;1.35;1.20;30;14.18;;10.57;9.90;9.57;;Sab;;;;;;;;2MASX J11082650-1015216,PGC 033752;;; -NGC3537 NED02;G;11:08:26.93;-10:15:31.8;Crt;1.38;1.23;170;;;;;;;;;;;;;;;PGC 033753;;; -NGC3538;**;11:11:34.34;+75:34:11.0;Dra;;;;;;;;;;;;;;;;;;;;; -NGC3539;G;11:09:08.84;+28:40:21.1;UMa;1.26;0.41;5;15.47;;11.83;11.11;10.76;24.10;S0-a;;;;;;;;2MASX J11090884+2840212,2MASX J11091059+2840132,MCG +05-26-065,PGC 033799,SDSS J110908.83+284021.0,SDSS J110908.84+284021.1;;; -NGC3540;G;11:09:16.08;+36:01:15.9;UMa;1.32;1.19;63;14.60;;11.16;10.53;10.17;23.86;S0;;;;;3548;;;2MASX J11091612+3601162,MCG +06-25-011,PGC 033806,SDSS J110916.08+360115.9,UGC 06196;;; -NGC3541;G;11:08:32.21;-10:29:30.6;Crt;1.30;1.18;90;14.00;;11.54;10.95;10.47;24.34;SABc;;;;;;;;2MASX J11083219-1029306,MCG -02-29-003,PGC 033759;;; -NGC3542;G;11:09:55.47;+36:56:47.4;UMa;0.81;0.35;45;15.00;;11.98;11.22;10.92;22.57;SBbc;;;;;;;;2MASX J11095543+3656475,IRAS 11071+3712,MCG +06-25-013,PGC 033868,SDSS J110955.46+365647.4,SDSS J110955.47+365647.3,SDSS J110955.47+365647.4;;; -NGC3543;G;11:10:56.45;+61:20:49.3;UMa;1.21;0.25;9;14.80;;12.24;11.55;11.40;22.80;Sbc;;;;;;;;2MASX J11105648+6120502,MCG +10-16-075,PGC 033953,SDSS J111056.44+612049.2,SDSS J111056.45+612049.2,SDSS J111056.45+612049.3,UGC 06213;;; -NGC3544;G;11:11:30.47;-18:17:22.2;Crt;3.06;0.97;94;12.81;;9.85;9.39;8.99;23.71;Sa;;;;;3571;;;2MASX J11113045-1817219,ESO 570-011,MCG -03-29-001,PGC 034028;;; -NGC3545A;G;11:10:12.25;+36:57:53.2;UMa;1.16;1.16;69;14.80;;;;;24.20;E-S0;;;;;;;;MCG +06-25-016,PGC 033894,SDSS J111012.25+365753.1;;; -NGC3545B;G;11:10:13.25;+36:57:59.6;UMa;0.44;0.44;60;14.80;;11.38;10.76;10.00;22.29;E;;;;;;;;2MASX J11101328+3657596,MCG +06-25-017,PGC 033893,SDSS J111013.24+365759.5,SDSS J111013.25+365759.6;;; -NGC3546;G;11:09:46.79;-13:22:51.1;Crt;1.91;0.90;101;14.00;;10.65;9.96;9.69;24.56;E-S0;;;;;;;;2MASX J11094676-1322500,MCG -02-29-007,PGC 033846;;; -NGC3547;G;11:09:55.94;+10:43:15.0;Leo;1.74;0.77;6;12.80;;11.29;10.76;10.44;22.53;Sb;;;;;;;;2MASX J11095594+1043146,MCG +02-29-007,PGC 033866,SDSS J110955.94+104315.0,SDSS J110955.95+104315.0,UGC 06209;;; -NGC3548;Dup;11:09:16.08;+36:01:15.9;UMa;;;;;;;;;;;;;;;3540;;;;;; -NGC3549;G;11:10:56.87;+53:23:16.0;UMa;2.64;0.86;39;12.80;;10.15;9.45;9.18;22.73;SBc;;;;;;;;2MASX J11105690+5323155,IRAS 11080+5339,MCG +09-18-097,PGC 033964,SDSS J111056.86+532316.1,SDSS J111056.87+532315.9,SDSS J111056.87+532316.0,UGC 06215;;; -NGC3550;GPair;11:10:38.70;+28:46:06.0;UMa;1.20;;;;;;;;;;;;;;;;;MCG +05-27-002,UGC 06214;;;Diameter of the group inferred by the author. -NGC3550 NED01;G;11:10:38.60;+28:46:04.0;UMa;0.87;0.83;20;14.62;;11.00;10.24;9.96;23.34;E-S0;;;;;;;;MCG +05-27-002 NED01,PGC 093111,UGC 06214 NED01;;;B-Mag taken from LEDA -NGC3550 NED02;G;11:10:38.40;+28:46:03.4;UMa;1.07;1.02;50;14.12;13.22;;;;23.19;S0;;;;;;;;2MASX J11103843+2846038,MCG +05-27-002 NED02,PGC 033927,SDSS J111038.39+284603.3,SDSS J111038.39+284603.4,SDSS J111038.40+284603.4,UGC 06214 NED02;;; -NGC3551;G;11:09:44.44;+21:45:32.1;Leo;1.38;0.95;38;14.80;;10.70;10.02;9.69;24.16;E;;;;;;;;2MASX J11094441+2145316,MCG +04-26-035,PGC 033836,SDSS J110944.44+214532.1,UGC 06203;;; -NGC3552;G;11:10:42.85;+28:41:35.4;UMa;0.82;0.77;55;15.10;;11.95;11.22;11.03;23.37;E-S0;;;;;;;;2MASX J11104284+2841348,MCG +05-27-003,PGC 033932,SDSS J111042.85+284135.4;;; -NGC3553;G;11:10:40.48;+28:41:05.1;UMa;0.54;0.27;2;15.10;;12.90;12.20;11.80;23.36;SBab;;;;;;;;PGC 1842970;;; -NGC3554;G;11:10:47.82;+28:39:37.0;UMa;0.74;0.61;57;15.30;;12.07;11.31;11.00;23.45;E;;;;;;;;2MASX J11104785+2839368,MCG +05-27-007,PGC 033948,SDSS J111047.82+283937.0,SDSS J111047.83+283936.9;;; -NGC3555;G;11:09:50.33;+21:48:36.7;Leo;0.60;0.29;32;13.60;;12.27;11.59;11.28;23.38;E;;;;;;;;PGC 033843,SDSS J110950.32+214837.1;;; -NGC3556;G;11:11:30.97;+55:40:26.8;UMa;3.98;1.66;79;10.70;10.06;8.02;7.37;7.04;21.70;Sc;;;;108;;;;2MASX J11113096+5540268,IRAS 11085+5556,MCG +09-18-098,PGC 034030,SDSS J111131.06+554027.4,UGC 06225;;;V-mag taken from LEDA -NGC3557;G;11:09:57.64;-37:32:21.0;Cen;4.36;3.43;32;11.50;10.40;8.16;7.50;7.20;23.46;E;;;;;;;;2MASX J11095583-3732345,2MASX J11095765-3732210,2MASX J11095773-3732216,ESO 377-016,ESO-LV 337-0160,ESO-LV 377-0160,MCG -06-25-005,PGC 033871;;; -NGC3557B;G;11:09:32.13;-37:20:58.7;Cen;1.83;0.52;110;13.30;12.21;10.05;9.35;9.09;23.65;E;;;;;;;;2MASX J11093213-3720586,ESO 377-015,ESO-LV 377-0150,MCG -06-25-004,PGC 033824;;; -NGC3558;G;11:10:55.87;+28:32:37.7;UMa;0.99;0.91;115;14.80;;11.31;10.63;10.28;23.46;E;;;;;;;;2MASX J11105584+2832374,MCG +05-27-008,PGC 033960,SDSS J111055.86+283237.7,SDSS J111055.87+283237.6,SDSS J111055.87+283237.7;;; -NGC3559;G;11:10:45.21;+12:00:58.1;Leo;1.50;0.91;51;13.70;;11.55;10.72;10.67;23.14;SBc;;;;;3560;;;2MASX J11104522+1200580,MCG +02-29-008,PGC 033940,SDSS J111045.20+120058.1,SDSS J111045.21+120058.1,UGC 06217;;; -NGC3560;Dup;11:10:45.21;+12:00:58.1;Leo;;;;;;;;;;;;;;;3559;;;;;; -NGC3561;G;11:11:13.20;+28:41:47.3;UMa;1.71;1.71;175;14.70;;11.49;10.73;10.47;24.44;S0-a;;;;;;;;2MASX J11111316+2841473,IRAS 11085+2859,MCG +05-27-010,PGC 033991,SDSS J111113.18+284147.0,SDSS J111113.19+284147.0,SDSS J111113.19+284147.1,UGC 06224 NED02;the Guitar;Component 'a)' in UGC notes. Called 'NGC 3561B' in RC2.; -NGC3562;G;11:12:58.68;+72:52:45.5;UMa;1.69;1.26;165;13.20;;10.37;9.63;9.38;23.16;E;;;;;;;;2MASX J11125867+7252454,MCG +12-11-011,PGC 034134,UGC 06242;;; -NGC3563;GPair;11:11:24.50;+26:57:45.0;Leo;1.40;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC3563A;G;11:11:23.73;+26:57:42.7;Leo;0.58;0.50;41;14.60;;;;;23.22;S0-a;;;;;;;;MCG +05-27-013,PGC 034012,SDSS J111123.73+265742.6,SDSS J111123.73+265742.7,UGC 06234 NOTES01;;; -NGC3563B;G;11:11:25.20;+26:57:48.9;Leo;1.13;0.82;15;;;11.19;10.38;10.13;23.73;S0;;;;;;;;2MASX J11112519+2657491,MCG +05-27-014,PGC 034025,SDSS J111125.21+265748.9,SDSS J111125.21+265749.0,UGC 06234;;; -NGC3564;G;11:10:36.38;-37:32:51.3;Cen;1.95;1.09;16;13.31;12.21;9.88;9.20;8.95;23.34;S0;;;;;;;;2MASX J11103639-3732513,ESO 377-018,ESO-LV 377-0180,MCG -06-25-006,PGC 033923;;; -NGC3565;G;11:07:47.65;-20:01:17.6;Crt;0.68;0.52;126;15.65;;13.08;12.44;12.24;23.30;E-S0;;;;;3566;;;ESO 570-008,PGC 033701;;;LEDA says NGC 3565 and NGC 3566 are the same object. -NGC3566;Dup;11:07:47.65;-20:01:17.6;Crt;;;;;;;;;;;;;;;3565;;;;;; -NGC3567;G;11:11:18.68;+05:50:10.7;Leo;1.22;0.46;115;14.40;;11.48;10.94;10.53;23.67;S0;;;;;;;;2MASX J11111869+0550107,MCG +01-29-011,PGC 034004,UGC 06230;;; -NGC3568;G;11:10:48.57;-37:26:52.3;Cen;2.70;1.18;6;13.01;12.58;10.09;9.46;9.12;23.14;Sc;;;;;;;;2MASX J11104858-3726523,ESO 377-020,ESO-LV 377-0200,IRAS 11084-3710,MCG -06-25-009,PGC 033952;;; -NGC3569;G;11:12:08.09;+35:27:07.7;UMa;1.15;1.07;50;14.50;;11.17;10.46;10.21;23.48;S0;;;;;;;;2MASX J11120804+3527072,MCG +06-25-020,PGC 034075,SDSS J111208.09+352707.5,UGC 06238;;; -NGC3570;G;11:12:03.35;+27:35:23.2;Leo;1.06;0.99;100;15.00;;11.38;10.66;10.35;23.73;S0;;;;;;;;2MASX J11120331+2735227,MCG +05-27-019,PGC 034071,SDSS J111203.34+273523.1,SDSS J111203.34+273523.2,SDSS J111203.35+273523.2,UGC 06240;;; -NGC3571;Dup;11:11:30.47;-18:17:22.2;Crt;;;;;;;;;;;;;;;3544;;;;;; -NGC3572;OCl;11:10:19.20;-60:14:54.1;Car;4.08;;;6.82;6.60;;;;;;;;;;;;;MWSC 1906;;; -NGC3573;G;11:11:18.57;-36:52:31.9;Cen;2.55;1.08;4;13.18;12.87;9.82;9.07;8.83;23.98;S0-a;;;;;;;;2MASX J11111855-3652318,ESO 377-022,ESO-LV 377-0220,IRAS 11089-3636,MCG -06-25-011,PGC 034005;;; -NGC3574;G;11:12:12.13;+27:37:29.4;Leo;0.73;0.59;31;15.70;;12.22;11.48;11.34;23.80;E;;;;;;;;2MASX J11121211+2737287,MCG +05-27-022,PGC 034080,SDSS J111212.12+273729.3,SDSS J111212.13+273729.4;;; -NGC3575;Dup;10:13:31.59;+22:44:15.2;Leo;;;;;;;;;;;;;;;3162;;;;;; -NGC3576;HII;11:11:31.67;-61:21:46.8;Car;3.00;3.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC3577;G;11:13:44.90;+48:16:21.8;UMa;1.16;1.01;61;14.70;;11.67;11.05;10.90;23.71;Sa;;;;;;;;2MASX J11134488+4816212,MCG +08-21-006,PGC 034195,SDSS J111344.89+481621.7,SDSS J111344.89+481621.8,SDSS J111344.90+481621.7,UGC 06257;;; -NGC3578;Other;11:12:52.79;-15:57:26.1;Crt;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3579;Neb;11:11:59.60;-61:14:35.6;Car;20.00;15.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC3580;G;11:13:15.93;+03:39:26.4;Leo;0.85;0.29;175;14.70;;11.69;10.97;10.71;23.19;S0;;;;;;;;2MASX J11131591+0339265,MCG +01-29-018,PGC 034159,SDSS J111315.92+033926.3,SDSS J111315.92+033926.4;;; -NGC3581;HII;11:12:01.96;-61:18:06.7;Car;;;;;;;;;;;;;;;;;;;;Within 10 degrees of the galactic plane.; -NGC3582;Neb;11:12:11.97;-61:16:24.8;Car;;;;;;;;;;;;;;;;;;;;; -NGC3583;G;11:14:10.89;+48:19:06.7;UMa;2.24;1.26;127;11.60;;9.36;8.73;8.38;22.43;Sb;;;;;;;;2MASX J11141097+4819061,IRAS 11113+4835,MCG +08-21-008,PGC 034232,SDSS J111410.89+481906.6,SDSS J111410.89+481906.7,UGC 06263;;; -NGC3584;Neb;11:12:19.79;-61:13:43.0;Car;;;;;;;;;;;;;;;;;;;;; -NGC3585;G;11:13:17.09;-26:45:17.4;Hya;6.61;3.27;104;10.64;;7.61;6.94;6.70;23.74;E;;;;;;;;2MASX J11131710-2645179,ESO 502-025,ESO-LV 502-0250,MCG -04-27-004,PGC 034160;;; -NGC3586;Neb;11:12:29.94;-61:21:08.1;Car;;;;;;;;;;;;;;;;;;;;; -NGC3587;PN;11:14:47.71;+55:01:08.5;UMa;2.83;;;11.60;9.90;16.71;;;;;14.36;15.66;16.01;097;;;;IRAS 11119+5517,PN G148.4+57.0,SDSS J111447.71+550108.5;Owl Nebula;; -NGC3588;GPair;11:14:02.70;+20:23:19.0;Leo;0.55;0.55;10;15.30;;11.40;10.62;10.43;22.73;Sa;;;;;;;;2MASXJ11140245+2023140,MCG +04-27-009,PGC 034219,UGC 06264;;; -NGC3589;G;11:15:13.33;+60:41:59.7;UMa;1.49;0.76;50;14.50;;;;;23.52;SABc;;;;;;;;MCG +10-16-096,PGC 034308,UGC 06275;;; -NGC3590;OCl;11:12:58.97;-60:47:20.5;Car;5.10;;;8.50;8.20;;;;;;;;;;;;;MWSC 1920;;; -NGC3591;G;11:14:03.31;-14:05:14.4;Crt;1.22;0.77;151;14.00;;10.75;10.06;9.70;23.51;S0-a;;;;;;;;2MASX J11140326-1405140,MCG -02-29-012,PGC 034220;;; -NGC3592;G;11:14:27.37;+17:15:36.0;Leo;2.13;0.57;118;14.80;;11.71;10.95;10.78;23.80;Sc;;;;;;;;2MASX J11142724+1715367,MCG +03-29-011,PGC 034248,SDSS J111427.36+171535.9,SDSS J111427.37+171536.0,UGC 06267;;The 2MASS position is 9 arcsec southeast of the optical peak.; -NGC3593;G;11:14:37.00;+12:49:03.6;Leo;4.69;1.85;91;11.80;;8.41;7.63;7.42;23.82;S0-a;;;;;;;;2MASX J11143700+1249048,IRAS 11119+1305,MCG +02-29-014,PGC 034257,SDSS J111436.99+124903.6,SDSS J111437.00+124903.6,UGC 06272;;; -NGC3594;G;11:16:13.99;+55:42:15.6;UMa;1.25;1.06;8;15.20;;11.43;10.64;10.30;23.89;S0;;;;;;;;2MASX J11161400+5542150,MCG +09-19-022,PGC 034374,SDSS J111613.98+554215.4,SDSS J111613.98+554215.6,SDSS J111613.99+554215.6,UGC 06286;;NGC identification is not certain.; -NGC3595;G;11:15:25.55;+47:26:49.3;UMa;1.51;0.63;176;13.00;;10.34;9.65;9.43;22.50;S0;;;;;;;;2MASX J11152555+4726497,MCG +08-21-009,PGC 034325,SDSS J111525.54+472649.3,UGC 06280;;; -NGC3596;G;11:15:06.21;+14:47:13.3;Leo;3.55;3.37;65;12.01;11.49;9.63;8.99;8.70;23.24;SABc;;;;;;;;2MASX J11150622+1447136,MCG +03-29-013,PGC 034298,SDSS J111506.20+144713.2,UGC 06277;;; -NGC3597;G;11:14:41.97;-23:43:39.7;Crt;1.49;1.06;84;13.62;;10.87;10.13;9.79;23.28;S0-a;;;;;;;;2MASX J11144196-2343396,ESO 503-003,ESO-LV 503-0030,IRAS 11122-2327,MCG -04-27-005,PGC 034266,TYC 6649-955-1;;; -NGC3598;G;11:15:11.67;+17:15:45.7;Leo;1.61;1.26;38;13.50;;10.52;9.84;9.56;23.28;E-S0;;;;;;;;2MASX J11151168+1715459,MCG +03-29-014,PGC 034306,UGC 06278;;; -NGC3599;G;11:15:26.96;+18:06:37.4;Leo;2.40;2.18;105;13.00;;10.18;9.50;9.27;23.54;S0;;;;;;;;2MASX J11152695+1806373,MCG +03-29-015,PGC 034326,UGC 06281;;; -NGC3600;G;11:15:52.01;+41:35:27.7;UMa;1.87;0.59;4;12.60;;11.01;10.31;10.20;22.72;SBa;;;;;;;;2MASX J11155197+4135289,IRAS 11130+4152,MCG +07-23-038,PGC 034353,SDSS J111552.00+413527.7,SDSS J111552.01+413527.7,UGC 06283;;The Bologna position is 6 arcsec northwest of the nucleus.; -NGC3601;G;11:15:33.30;+05:06:55.5;Leo;0.51;0.43;17;14.10;;11.93;11.23;10.89;21.41;SBab;;;;;;;;2MASX J11153331+0506554,IRAS 11129+0523,MCG +01-29-024,PGC 034335,SDSS J111533.30+050655.5,UGC 06282;;; -NGC3602;G;11:15:48.32;+17:24:58.0;Leo;1.04;0.43;48;15.70;;12.97;12.12;11.82;24.09;SBa;;;;;;;;2MASX J11154832+1724579,MCG +03-29-017,PGC 034351,SDSS J111548.31+172458.0,SDSS J111548.32+172458.0;;; -NGC3603;Cl+N;11:15:06.59;-61:15:40.4;Car;3.30;;;;;;;;;;;;;;;;;MWSC 1926;;; -NGC3604;G;11:17:30.17;+04:33:20.1;Leo;1.40;0.75;11;12.40;;10.36;9.73;9.50;22.02;Sa;;;;;3611;;;2MASX J11173015+0433195,IRAS 11149+0449,MCG +01-29-026,PGC 034478,SDSS J111730.14+043318.7,SDSS J111730.17+043320.0,UGC 06305;;; -NGC3605;G;11:16:46.59;+18:01:01.8;Leo;1.25;0.71;19;12.70;;10.54;9.91;9.70;22.48;E;;;;;;;;2MASX J11164662+1801017,MCG +03-29-019,PGC 034415,SDSS J111646.58+180101.7,SDSS J111646.59+180101.7,UGC 06295;;; -NGC3606;G;11:16:15.63;-33:49:38.8;Hya;1.59;1.49;10;13.42;;10.35;9.61;9.39;23.28;E;;;;;;;;2MASX J11161564-3349386,ESO 377-032,ESO-LV 377-0320,MCG -05-27-004,PGC 034378;;; -NGC3607;G;11:16:54.64;+18:03:06.3;Leo;4.59;4.03;120;13.84;12.76;7.91;7.28;6.99;22.99;E-S0;;;;;;;;2MASX J11165465+1803065,MCG +03-29-020,PGC 034426,SDSS J111654.63+180306.3,UGC 06297;;; -NGC3608;G;11:16:58.95;+18:08:55.3;Leo;3.18;2.67;78;11.70;;8.95;8.38;8.10;22.95;E;;;;;;;;2MASX J11165896+1808547,MCG +03-29-022,PGC 034433,SDSS J111658.95+180855.2,UGC 06299;;; -NGC3609;G;11:17:50.62;+26:37:32.9;Leo;1.17;0.97;49;14.10;;10.92;10.24;9.90;22.96;SABa;;;;;;;;2MASX J11175059+2637332,MCG +05-27-043,PGC 034511,SDSS J111750.61+263732.8,SDSS J111750.62+263732.9,UGC 06310;;; -NGC3610;G;11:18:25.27;+58:47:10.6;UMa;2.39;2.37;135;11.40;;8.84;8.17;7.91;22.39;E;;;;;;;;2MASX J11182527+5847104,MCG +10-16-107,PGC 034566,SDSS J111825.27+584710.6,UGC 06319;;; -NGC3611;Dup;11:17:30.17;+04:33:20.1;Leo;;;;;;;;;;;;;;;3604;;;;;; -NGC3612;G;11:18:14.72;+26:37:14.0;Leo;0.93;0.64;169;15.00;;12.05;11.50;11.32;23.27;Scd;;;;;;;;2MASX J11181468+2637143,MCG +05-27-051,PGC 034546,SDSS J111814.70+263713.9,SDSS J111814.72+263714.0,UGC 06321;;; -NGC3613;G;11:18:36.11;+58:00:00.0;UMa;3.55;1.78;100;11.60;;8.93;8.24;8.00;23.31;E;;;;;;;;2MASX J11183613+5759597,MCG +10-16-109,PGC 034583,SDSS J111836.10+580000.0,UGC 06323;;; -NGC3614;G;11:18:21.32;+45:44:53.6;UMa;2.50;1.74;88;12.70;;10.52;9.98;9.63;23.44;SABc;;;;;;;;2MASX J11182139+4544538,IRAS 11155+4601,MCG +08-21-015,PGC 034561,SDSS J111821.32+454453.5,SDSS J111821.32+454453.6,SDSS J111821.33+454453.4,UGC 06318;;; -NGC3614A;G;11:18:11.87;+45:43:00.8;UMa;0.69;0.62;34;16.00;;;;;;Sm;;;;;;;;MCG +08-21-014,PGC 034562,SDSS J111811.87+454300.7,SDSS J111811.87+454300.8;;MCG misprints dec as +48d01m.; -NGC3615;G;11:18:06.65;+23:23:50.4;Leo;1.51;0.91;40;14.00;;10.45;9.74;9.45;23.66;E;;;;;;;;2MASX J11180666+2323502,MCG +04-27-012,PGC 034535,SDSS J111806.65+232350.3,UGC 06313;;; -NGC3616;*;11:18:08.87;+14:45:54.8;Leo;;;;;;;;;;;;;;;;;;SDSS J111808.86+144554.8;;; -NGC3617;G;11:17:50.86;-26:08:03.9;Hya;1.79;1.22;137;13.45;;10.62;9.98;9.78;23.76;E;;;;;;;;2MASX J11175085-2608040,ESO 503-012,ESO-LV 503-0120,MCG -04-27-008,PGC 034513,UGCA 231;;; -NGC3618;G;11:18:32.54;+23:28:08.7;Leo;0.89;0.77;3;14.40;;11.73;11.05;10.75;22.78;SABb;;;;;;;;2MASX J11183255+2328080,MCG +04-27-014,PGC 034575,SDSS J111832.54+232808.7,UGC 06327;;; -NGC3619;G;11:19:21.56;+57:45:28.2;UMa;3.89;3.08;25;12.60;;9.57;8.87;8.58;24.20;S0-a;;;;;;;;2MASX J11192162+5745276,IRAS 11164+5802,MCG +10-16-115,PGC 034641,SDSS J111921.56+574528.1,UGC 06330;;; -NGC3620;G;11:16:04.68;-76:12:58.7;Cha;3.16;0.84;80;15.90;;8.83;7.93;7.57;25.86;SBab;;;;;;;;2MASX J11160468-7612587,ESO 038-010,IRAS 11143-7556,PGC 034366;;; -NGC3621;G;11:18:16.51;-32:48:50.6;Hya;9.79;4.03;161;9.44;9.56;7.46;6.80;6.60;23.03;SBcd;;;;;;;;2MASX J11181630-3248453,ESO 377-037,ESO-LV 377-0370,IRAS 11158-3232,MCG -05-27-008,PGC 034554,UGCA 232;;; -NGC3622;G;11:20:12.37;+67:14:29.6;UMa;1.25;0.51;9;13.70;;11.62;11.00;10.84;22.06;Scd;;;;;;;;2MASX J11201242+6714304,IRAS 11171+6730,PGC 034692,SDSS J112012.35+671429.7,SDSS J112012.36+671429.7,SDSS J112012.37+671429.6,SDSS J112012.53+671429.1,UGC 06339;;; -NGC3623;G;11:18:55.92;+13:05:32.5;Leo;7.64;1.97;173;9.60;9.32;6.99;6.31;6.07;22.73;Sa;;;;065;;;;2MASX J11185595+1305319,IRAS 11163+1322,MCG +02-29-018,PGC 034612,UGC 06328;;;V-mag taken from LEDA -NGC3624;G;11:18:50.98;+07:31:17.0;Leo;0.91;0.51;166;14.70;;11.97;11.35;10.99;23.02;SBb;;;;;;;;2MASX J11185095+0731172,MCG +01-29-029,PGC 034599,SDSS J111850.98+073116.9,SDSS J111850.98+073117.0;;; -NGC3625;G;11:20:31.34;+57:46:53.1;UMa;1.91;0.50;151;13.90;;11.87;11.12;10.95;23.28;Sb;;;;;;;;2MASX J11203125+5746527,MCG +10-16-120,PGC 034718,SDSS J112031.33+574653.0,SDSS J112031.34+574653.1,UGC 06348;;; -NGC3626;G;11:20:03.81;+18:21:24.6;Leo;2.94;1.94;157;11.20;;9.10;8.45;8.16;22.86;S0-a;;;;;3632;;;2MASX J11200379+1821244,C 040,MCG +03-29-032,PGC 034684,SDSS J112003.81+182124.6,UGC 06343;;; -NGC3627;G;11:20:14.96;+12:59:29.5;Leo;10.28;4.61;168;9.65;8.92;6.84;6.15;5.88;22.96;Sb;;;;066;;;;2MASX J11201502+1259286,IRAS 11176+1315,MCG +02-29-019,PGC 034695,SDSS J112014.98+125929.4,UGC 06346;;The position in 1989H&RHI.C...0000H is incorrect.; -NGC3628;G;11:20:16.97;+13:35:22.9;Leo;11.04;3.44;104;10.42;9.48;7.17;6.38;6.07;23.13;SBb;;;;;;;;2MASX J11201701+1335221,IRAS 11176+1351,MCG +02-29-020,PGC 034697,SDSS J112017.01+133522.8,SDSS J112017.01+133522.9,UGC 06350;;; -NGC3629;G;11:20:31.81;+26:57:48.1;Leo;1.77;1.14;35;12.90;;11.38;10.70;10.50;22.77;SABc;;;;;;;;2MASX J11203181+2657482,MCG +05-27-058,PGC 034719,SDSS J112031.80+265748.0,SDSS J112031.80+265748.1,UGC 06352;;HOLM 247B is a star.; -NGC3630;G;11:20:16.98;+02:57:51.8;Leo;1.92;0.88;38;12.91;;9.74;9.06;8.84;22.98;S0;;;;;3645;;;2MASX J11201698+0257510,MCG +01-29-031,PGC 034698,SDSS J112016.98+025751.7,UGC 06349;;; -NGC3631;G;11:21:02.87;+53:10:10.4;UMa;3.72;3.08;118;11.00;;8.91;8.22;7.99;22.15;Sc;;;;;;;;2MASX J11210294+5310099,IRAS 11181+5326,MCG +09-19-047,PGC 034767,SDSS J112102.87+531010.4,UGC 06360;;One of two 6cm sources associated with [WB92] 1117+5321; -NGC3632;Dup;11:20:03.81;+18:21:24.6;Leo;;;;;;;;;;;;;;;3626;;;;;; -NGC3633;G;11:20:26.22;+03:35:08.2;Leo;1.19;0.44;71;14.45;;10.97;10.21;9.87;23.07;Sa;;;;;;;;2MASX J11202621+0335077,IRAS 11178+0351,MCG +01-29-032,PGC 034711,SDSS J112026.21+033508.1,SDSS J112026.21+033508.2,SDSS J112026.22+033508.2,UGC 06351;;; -NGC3634;G;11:20:30.31;-09:00:49.5;Crt;0.35;0.21;;15.50;;;;;;E;;;;;;;;MCG -01-29-008,PGC 034714;;; -NGC3635;G;11:20:31.39;-09:00:49.0;Crt;1.35;1.35;55;16.00;;11.52;10.72;10.51;24.03;SABb;;;;;;;;2MASX J11203133-0900495,MCG -01-29-009,PGC 034717,SDSS J112031.37-090049.0;;; -NGC3636;G;11:20:25.04;-10:16:54.4;Crt;2.51;1.29;91;13.00;;;;;24.16;E;;;;;;;;MCG -02-29-019,PGC 034709;;; -NGC3637;G;11:20:39.57;-10:15:26.5;Crt;2.45;2.14;20;13.00;;9.78;9.12;8.86;24.21;S0;;;;;;;;2MASX J11203957-1015264,MCG -02-29-020,PGC 034731;;; -NGC3638;G;11:20:10.03;-08:06:20.5;Crt;1.60;0.38;140;15.00;;;;;23.65;Sb;;;;;;;;2MASX J11201003-0806205,IRAS 11176-0749,MCG -01-29-007,PGC 034688;;; -NGC3639;G;11:21:35.68;+18:27:30.9;Leo;1.10;0.85;27;14.00;;11.53;10.75;10.58;22.95;Sab;;;;;;;;2MASX J11213572+1827293,MCG +03-29-036,PGC 034819,SDSS J112135.68+182730.9,UGC 06374;;; -NGC3640;G;11:21:06.85;+03:14:05.4;Leo;4.33;3.81;98;11.36;10.44;8.44;7.79;7.52;23.38;E;;;;;;;;2MASX J11210685+0314051,MCG +01-29-033,PGC 034778,UGC 06368;;; -NGC3641;G;11:21:08.81;+03:11:40.5;Leo;0.99;0.82;178;14.10;13.20;11.14;10.46;10.23;22.96;E;;;;;;;;2MASX J11210878+0311401,MCG +01-29-034,PGC 034780,SDSS J112108.81+031140.5,UGC 06370;;This entry was added to CGCG in vol III, 'Errors and Omissions'.; -NGC3642;G;11:22:17.89;+59:04:28.3;UMa;4.27;3.65;120;14.86;14.04;9.87;9.12;8.97;23.48;Sbc;;;;;;;;2MASX J11221801+5904272,IRAS 11194+5920,MCG +10-16-128,PGC 034889,SDSS J112217.89+590428.2,SDSS J112217.89+590428.3,UGC 06385;;; -NGC3643;G;11:21:24.99;+03:00:50.1;Leo;0.95;0.74;107;14.80;;11.89;11.24;11.03;23.25;S0-a;;;;;;;;2MASX J11212495+0300501,MCG +01-29-036,PGC 034802,SDSS J112124.99+030050.1;;The position in 1992PASP..104...57V is 19 arcsec northeast of the nucleus.; -NGC3644;G;11:21:32.87;+02:48:37.6;Leo;1.43;0.61;65;14.60;;11.99;11.25;10.87;24.16;Sa;;;;;;0684;;2MASX J11213286+0248379,MCG +01-29-037,PGC 034814,SDSS J112132.87+024837.5,SDSS J112132.87+024837.6,UGC 06373;;; -NGC3645;Dup;11:20:16.98;+02:57:51.8;Leo;;;;;;;;;;;;;;;3630;;;;;; -NGC3646;G;11:21:43.08;+20:10:10.4;Leo;3.09;1.48;45;11.78;11.13;9.43;8.84;8.48;22.37;Sc;;;;;;;;2MASX J11214310+2010103,MCG +03-29-037,PGC 034836,SDSS J112143.07+201010.3,SDSS J112143.08+201010.3,UGC 06376;;; -NGC3647;G;11:21:38.58;+02:53:30.2;Leo;0.39;0.38;75;15.40;;12.62;11.84;11.75;22.52;E;;;;;;;;2MASX J11213859+0253309,PGC 034815,SDSS J112138.57+025330.2;;; -NGC3648;G;11:22:31.51;+39:52:36.8;UMa;1.19;0.73;73;13.57;12.64;10.39;9.71;9.46;22.72;S0;;;;;;;;2MASX J11223148+3952370,MCG +07-23-043,PGC 034908,SDSS J112231.51+395236.8,UGC 06389;;The FIRST source is 24 arcsec southeast of the optical nucleus.; -NGC3649;G;11:22:14.74;+20:12:30.7;Leo;0.76;0.54;141;14.57;;11.44;10.80;10.40;22.82;SBa;;;;;;0682;;2MASX J11221474+2012310,MCG +03-29-038,PGC 034883,UGC 06386;;; -NGC3650;G;11:22:35.39;+20:42:14.1;Leo;1.91;0.32;54;14.60;;10.89;10.09;9.79;23.51;Sb;;;;;;;;2MASX J11223537+2042145,MCG +04-27-031,PGC 034913,SDSS J112235.39+204214.1,UGC 06391;;; -NGC3651;GPair;11:22:26.30;+24:17:50.0;Leo;1.00;;;;;;;;;;;;;;;;;MCG +04-27-028,UGC 06388;;;Diameter of the group inferred by the author. -NGC3651 NED01;G;11:22:26.32;+24:17:56.7;Leo;1.35;1.10;137;14.60;;10.78;10.12;9.89;23.67;E;;;;;;;;2MASX J11222635+2417567,MCG +04-27-028 NED01,PGC 034898,SDSS J112226.34+241756.6,SDSS J112226.35+241756.6,UGC 06388 NED01;;; -NGC3651 NED02;G;11:22:26.38;+24:17:43.6;Leo;0.78;0.36;99;15.40;;;;;23.38;S0;;;;;;;;MCG +04-27-028 NED02,PGC 034899,UGC 06388 NED02;;; -NGC3652;G;11:22:39.03;+37:45:54.4;UMa;2.48;0.77;153;12.60;;11.73;10.95;10.46;22.61;Sc;;;;;;;;2MASX J11223905+3745541,IRAS 11199+3802,MCG +06-25-055,PGC 034917,SDSS J112239.02+374554.3,SDSS J112239.03+374554.3,SDSS J112239.03+374554.4,UGC 06392;;; -NGC3653;G;11:22:30.07;+24:16:45.4;Leo;1.21;0.65;79;15.00;;11.41;10.64;10.33;23.71;S0;;;;;;;;2MASX J11223008+2416457,MCG +04-27-029,PGC 034905,SDSS J112230.06+241645.3;;; -NGC3654;G;11:24:10.74;+69:24:47.1;UMa;1.46;0.84;45;13.40;;11.47;10.86;10.52;22.44;Sbc;;;;;;;;2MASX J11241072+6924471,IRAS 11211+6941,MCG +12-11-022,PGC 035025,UGC 06407;;; -NGC3655;G;11:22:54.62;+16:35:24.1;Leo;1.45;1.00;32;12.58;11.90;9.80;9.11;8.83;21.56;Sc;;;;;;;;2MASX J11225460+1635246,IRAS 11202+1651,MCG +03-29-039,PGC 034935,SDSS J112254.61+163524.0,SDSS J112254.61+163524.1,UGC 06396;;Multiple SDSS entries describe this object.; -NGC3656;G;11:23:38.65;+53:50:31.6;UMa;1.46;0.97;168;14.25;12.75;10.30;9.59;9.28;22.71;S?;;;;;;;;2MASX J11233859+5350313,IRAS 11208+5406,MCG +09-19-063,PGC 034989,SDSS J112338.81+535031.7,SDSS J112338.82+535031.8,UGC 06403;;; -NGC3657;G;11:23:55.58;+52:55:15.6;UMa;0.99;0.88;169;13.10;;11.13;10.47;10.29;22.14;SABc;;;;;;;;2MASX J11235555+5255155,MCG +09-19-065,PGC 035002,SDSS J112355.58+525515.5,UGC 06406;;; -NGC3658;G;11:23:58.26;+38:33:44.4;UMa;1.72;1.59;30;13.30;;10.06;9.39;9.13;23.03;S0;;;;;;;;2MASX J11235824+3833447,MCG +07-24-002,PGC 035003,SDSS J112358.26+383344.4,UGC 06409;;; -NGC3659;G;11:23:45.54;+17:49:07.2;Leo;1.96;1.04;59;12.70;;11.06;10.52;10.28;22.59;Sd;;;;;;;;2MASX J11234549+1749068,IRAS 11211+1805,MCG +03-29-040,PGC 034995,SDSS J112345.53+174907.2,UGC 06405;;; -NGC3660;G;11:23:32.28;-08:39:30.8;Crt;2.56;2.17;105;15.34;14.45;10.54;9.91;9.52;23.40;Sbc;;;;;;;;2MASX J11233229-0839308,IRAS 11210-0823,MCG -01-29-016,PGC 034980,UGCA 234;;; -NGC3661;G;11:23:38.43;-13:49:52.0;Crt;1.77;0.75;139;14.00;;10.82;10.10;9.84;24.08;S0-a;;;;;;0689;;2MASX J11233844-1349520,MCG -02-29-022,PGC 034986;;; -NGC3662;G;11:23:46.46;-01:06:17.5;Leo;1.32;0.76;19;13.71;;10.71;10.01;9.73;22.68;Sbc;;;;;;;;IRAS 11211-0049,MCG +00-29-025,PGC 034996,SDSS J112346.46-010617.5,UGC 06408;;Mistakenly called a triple galaxy in MCG and UGC.; -NGC3663;G;11:23:59.91;-12:17:47.2;Crt;1.98;1.43;85;13.73;;;;;23.10;Sbc;;;;;;;;2MASX J11235989-1217470,IRAS 11214-1200,MCG -02-29-023,PGC 035006;;; -NGC3664;G;11:24:24.25;+03:19:30.0;Leo;1.45;0.94;34;13.60;;13.08;12.53;12.32;22.48;SBm;;;;;;;;2MASX J11242425+0319299,IRAS 11218+0336,MCG +01-29-041,PGC 035041,SDSS J112424.70+031934.0,UGC 06419;;The UZC position is for a knot northeast of the nucleus.; -NGC3664A;G;11:24:25.10;+03:13:21.0;Leo;0.63;0.51;1;15.40;;;;;23.55;Sm;;;;;;;;PGC 035042,UGC 06418;;; -NGC3665;G;11:24:43.67;+38:45:46.3;UMa;4.06;3.00;29;13.26;11.62;8.62;7.93;7.68;23.55;S0;;;;;;;;2MASX J11244363+3845460,IRAS 11220+3902,MCG +07-24-003,PGC 035064,SDSS J112443.66+384546.0,UGC 06426;;; -NGC3666;G;11:24:26.07;+11:20:32.0;Leo;3.44;0.99;97;12.50;;10.17;9.47;9.23;23.12;SBc;;;;;;;;2MASX J11242608+1120312,IRAS 11218+1137,MCG +02-29-025,PGC 035043,SDSS J112426.06+112031.9,SDSS J112426.07+112032.0,UGC 06420;;; -NGC3667;G;11:24:17.02;-13:51:26.3;Crt;2.10;1.20;82;13.00;;10.19;9.52;9.28;23.87;Sab;;;;;;;;2MASX J11241702-1351259,MCG -02-29-025,PGC 035028;;; -NGC3667A;G;11:24:21.49;-13:51:20.9;Crt;0.92;0.68;41;14.25;;11.47;10.84;10.46;23.19;Sb;;;;;;;;2MASX J11242148-1351209,MCG -02-29-026,PGC 035034;;; -NGC3668;G;11:25:30.44;+63:26:46.8;UMa;1.82;1.11;133;13.10;;10.34;9.72;9.48;22.86;SBbc;;;;;;;;2MASX J11253042+6326464,IRAS 11225+6343,MCG +11-14-023,PGC 035123,SDSS J112530.42+632647.0,SDSS J112530.44+632646.7,SDSS J112530.44+632646.8,SDSS J112530.45+632646.6,UGC 06430;;; -NGC3669;G;11:25:26.76;+57:43:16.5;UMa;1.79;0.45;154;12.90;;11.38;10.76;10.58;22.16;Scd;;;;;;;;2MASX J11252681+5743161,IRAS 11226+5759,MCG +10-16-135,PGC 035113,SDSS J112526.76+574316.4,SDSS J112526.76+574316.5,UGC 06431;;; -NGC3670;G;11:24:49.66;+23:56:42.8;Leo;1.06;0.66;36;14.60;;11.02;10.37;10.09;23.11;S0-a;;;;;;;;2MASX J11244968+2356428,MCG +04-27-033,PGC 035067,SDSS J112449.65+235642.8,UGC 06427;;; -NGC3671;G;11:25:52.55;+60:28:46.5;UMa;0.82;0.67;1;15.70;;12.58;11.78;11.56;23.92;E-S0;;;;;;;;2MASX J11255254+6028470,PGC 035149,SDSS J112552.54+602846.3,SDSS J112552.54+602846.4,SDSS J112552.54+602846.7;;; -NGC3672;G;11:25:02.47;-09:47:43.4;Crt;2.90;1.69;7;11.90;;9.20;8.56;8.27;22.68;Sc;;;;;;;;2MASX J11250247-0947434,IRAS 11225-0931,MCG -02-29-028,PGC 035088,SDSS J112502.43-094743.2,UGCA 235;;; -NGC3673;G;11:25:12.85;-26:44:12.2;Hya;3.48;2.32;74;12.31;;9.49;8.78;8.55;23.63;Sb;;;;;;;;2MASX J11251284-2644121,ESO 503-016,ESO-LV 503-0160,IRAS 11227-2627,MCG -04-27-010,PGC 035097,UGCA 236;;; -NGC3674;G;11:26:26.61;+57:02:54.2;UMa;1.59;0.47;32;13.10;;10.32;9.63;9.39;22.68;S0;;;;;;;;2MASX J11262660+5702538,MCG +10-16-138,PGC 035191,SDSS J112626.60+570254.1,UGC 06444;;; -NGC3675;G;11:26:08.58;+43:35:09.3;UMa;5.90;3.27;178;11.04;;7.84;7.10;6.86;23.13;Sb;;;;;;;;2MASX J11260858+4335093,IRAS 11234+4351,MCG +07-24-004,PGC 035164,SDSS J112608.55+433509.6,UGC 06439;;; -NGC3676;G;11:25:37.50;-11:08:22.8;Crt;1.01;0.76;151;15.00;;11.20;10.57;10.32;23.43;E-S0;;;;;;;;2MASX J11253748-1108225,MCG -02-29-029,PGC 035131;;; -NGC3677;G;11:26:17.76;+46:58:26.8;UMa;1.49;1.29;130;13.50;;11.12;10.44;10.11;23.43;S0-a;;;;;;;;2MASX J11261773+4658269,IRAS 11235+4714,MCG +08-21-035,PGC 035181,SDSS J112617.75+465826.8,SDSS J112617.76+465826.7,SDSS J112617.76+465826.8,UGC 06441;;; -NGC3678;G;11:26:15.76;+27:52:01.7;Leo;0.71;0.68;50;14.20;;12.53;12.15;11.56;22.34;Sbc;;;;;;;;2MASX J11261572+2752015,MCG +05-27-071,PGC 035177,SDSS J112615.75+275201.6,SDSS J112615.76+275201.7,UGC 06443;;; -NGC3679;G;11:21:48.06;-05:45:27.7;Leo;1.21;0.95;90;14.65;;11.15;10.54;10.22;24.06;E;;;;;;;;2MASX J11214807-0545274,MCG -01-29-012,PGC 034844;;NGC identification is not certain.; -NGC3680;OCl;11:25:37.08;-43:15:00.4;Cen;5.70;;;8.40;7.60;;;;;;;;;;;;;MWSC 1942;;; -NGC3681;G;11:26:29.80;+16:51:47.5;Leo;1.74;1.68;10;12.20;;9.91;9.22;9.00;22.34;Sbc;;;;;;;;2MASX J11262980+1651475,2MASX J11263106+1652010,IRAS 11238+1708,MCG +03-29-048,PGC 035193,SDSS J112629.79+165148.3,UGC 06445;;; -NGC3682;G;11:27:41.20;+66:35:23.4;Dra;2.23;1.41;93;13.40;;10.26;9.60;9.31;23.62;S0-a;;;;;;;;2MASX J11274119+6635232,IRAS 11247+6651,MCG +11-14-027,PGC 035266,SDSS J112741.19+663523.4,UGC 06459;;The 2MASS position is 5 arcsec east of the nucleus.; -NGC3683;G;11:27:31.85;+56:52:37.4;UMa;1.74;0.71;124;12.70;;9.78;9.03;8.67;22.18;SBc;;;;;;;;2MASX J11273188+5652361,IRAS 11247+5709,MCG +10-16-143,PGC 035249,SDSS J112731.84+565237.3,SDSS J112731.84+565237.4,SDSS J112731.85+565237.4,UGC 06458;;; -NGC3683A;G;11:29:11.76;+57:07:56.4;UMa;2.03;1.48;68;12.60;;10.55;9.82;9.62;22.97;Sc;;;;;;;;2MASX J11291172+5707558,IRAS 11263+5724,MCG +10-17-006,PGC 035376,SDSS J112911.75+570756.3,UGC 06484;;; -NGC3684;G;11:27:11.20;+17:01:48.6;Leo;2.29;1.50;126;12.10;;10.16;9.54;9.28;22.52;Sbc;;;;;;;;2MASX J11271117+1701491,IRAS 11245+1718,MCG +03-29-050,PGC 035224,SDSS J112711.19+170148.6,UGC 06453;;; -NGC3685;G;11:28:16.22;+04:19:38.2;Leo;0.75;0.38;147;15.30;;12.13;11.44;11.32;23.65;E;;;;;;;;2MASX J11281621+0419381,MCG +01-29-045,PGC 035305,SDSS J112816.21+041938.2,SDSS J112816.22+041938.2;;; -NGC3686;G;11:27:43.97;+17:13:27.1;Leo;2.88;2.18;21;11.60;;9.44;8.69;8.49;22.82;SBbc;;;;;;;;2MASX J11274394+1713266,IRAS 11251+1729,MCG +03-29-051,PGC 035268,SDSS J112743.97+171327.0,UGC 06460;;; -NGC3687;G;11:28:00.61;+29:30:39.8;UMa;1.40;0.49;173;13.00;12.58;10.66;10.03;9.68;22.20;Sbc;;;;;;;;2MASX J11280056+2930397,2MASX J11280164+2930527,MCG +05-27-073,PGC 035285,SDSS J112800.60+293039.7,SDSS J112800.60+293039.8,UGC 06463;;; -NGC3688;G;11:27:44.45;-09:09:56.2;Crt;1.11;0.93;168;15.00;;12.28;11.56;11.29;23.91;SBb;;;;;;;;2MASX J11274443-0909560,MCG -01-29-024,PGC 035269;;; -NGC3689;G;11:28:11.03;+25:39:40.2;Leo;1.48;0.97;94;12.90;;10.16;9.46;9.19;22.24;SABc;;;;;;;;2MASX J11281100+2539397,MCG +04-27-037,PGC 035294,SDSS J112811.02+253940.2,UGC 06467;;; -NGC3690;GPair;11:28:32.30;+58:33:43.0;UMa;2.10;;;;;;;;;;;;;;;;;;;Part of the GTrpl ARP 299.;Diameter of the group inferred by the author. -NGC3690A;G;11:28:31.02;+58:33:40.7;UMa;0.21;0.15;164;11.80;;;;;18.36;Sm;;;;;3690W;;;2MASX J11283132+5833417,PGC 035326,SDSS J112830.76+583342.8,UGC 06471;;Claim of an SN outburst probably an AGN outburst.; -NGC3690B;G;11:28:33.63;+58:33:46.6;UMa;2.40;1.86;41;11.80;;;;;22.11;SBm;;;;;3690E;;;IRAS11257+5850,PGC 035321,SDSS J112833.38+583346.4,UGC 06472;;Often confused with IC 0694 in the literature.; -NGC3691;G;11:28:09.41;+16:55:13.7;Leo;1.49;1.04;20;13.10;;11.49;10.78;10.51;21.99;SBb;;;;;;;;2MASX J11280941+1655136,IRAS 11255+1711,MCG +03-29-053,PGC 035292,UGC 06464;;The 2MASS position is 22 arcsec northeast of the optical nucleus.; -NGC3692;G;11:28:24.01;+09:24:27.5;Leo;3.22;0.75;93;12.90;;10.27;9.57;9.32;23.45;Sb;;;;;;;;2MASX J11282405+0924279,IRAS 11258+0940,MCG +02-29-032,PGC 035314,SDSS J112824.00+092427.4,SDSS J112824.01+092427.4,SDSS J112824.01+092427.5,UGC 06474;;; -NGC3693;G;11:28:11.57;-13:11:41.5;Crt;2.33;0.75;86;13.40;;10.53;9.77;9.56;23.71;Sb;;;;;;;;2MASX J11281163-1311395,IRAS 11256-1255,MCG -02-29-032,PGC 035299;;; -NGC3694;G;11:28:54.13;+35:24:50.4;UMa;1.00;0.78;116;13.50;;11.26;10.62;10.39;22.47;E;;;;;;;;2MASX J11285413+3524498,IRAS 11262+3541,MCG +06-25-076,PGC 035352,SDSS J112854.12+352450.3,SDSS J112854.13+352450.3,SDSS J112854.13+352450.4,UGC 06480;;; -NGC3695;G;11:29:17.09;+35:34:32.6;UMa;0.97;0.67;165;14.90;;11.81;11.11;10.82;23.24;SBbc;;;;;3698;;;2MASX J11291712+3534319,MCG +06-25-078,PGC 035389,SDSS J112917.08+353432.6,UGC 06490;;; -NGC3696;G;11:28:43.89;-11:16:58.2;Crt;0.90;0.73;102;14.76;;;;;23.18;SABc;;;;;;;;PGC 035340;;Identification as NGC 3696 is very uncertain.; -NGC3697;G;11:28:50.38;+20:47:42.1;Leo;2.07;0.61;93;14.10;;10.95;10.27;10.00;23.22;Sb;;;;;;;;2MASX J11285037+2047426,MCG +04-27-042,PGC 035347,SDSS J112850.37+204742.0,UGC 06479;;; -NGC3698;Dup;11:29:17.09;+35:34:32.6;UMa;;;;;;;;;;;;;;;3695;;;;;; -NGC3699;PN;11:27:57.15;-59:57:29.0;Cen;0.75;;;11.00;11.30;;;;;;;;;;;;;ESO 129-021,IRAS 11256-5940,PN G292.6+01.2;;; -NGC3700;G;11:29:38.61;+35:30:52.7;UMa;0.98;0.71;146;15.10;;11.94;11.27;10.96;23.36;Sab;;;;;;;;2MASX J11293859+3530529,MCG +06-25-079,PGC 035413,SDSS J112938.61+353052.7,UGC 06494;;; -NGC3701;G;11:29:28.92;+24:05:36.4;Leo;1.60;0.77;143;14.10;;11.39;10.73;10.49;22.70;Sbc;;;;;;;;2MASX J11292890+2405365,MCG +04-27-048,PGC 035405,SDSS J112928.92+240536.3,UGC 06493;;; -NGC3702;G;11:30:13.48;-08:51:46.5;Crt;1.29;0.95;158;15.00;;10.91;10.30;9.96;23.57;SABa;;;;;;;;2MASX J11301349-0851462,MCG -01-29-026,PGC 035448;;; -NGC3703;G;11:29:09.36;-08:26:47.2;Crt;0.60;0.42;110;15.58;;12.13;11.40;11.13;;S0;;;;;;;;2MASX J11290939-0826468,PGC 170146;;Identification as NGC 3703 is uncertain.;Diameters and position angle taken from Simbad. -NGC3704;G;11:30:04.65;-11:32:46.8;Crt;1.55;1.44;30;14.00;;10.47;9.81;9.55;23.64;E;;;;;;0703;;2MASX J11300472-1132462,MCG -02-29-037,PGC 035435;;The identification with IC 0703 is not certain.; -NGC3705;G;11:30:07.46;+09:16:35.9;Leo;4.31;1.74;121;11.86;11.07;8.82;8.16;7.92;23.09;SABa;;;;;;;;2MASX J11300745+0916358,IRAS 11275+0933,MCG +02-29-039,PGC 035440,UGC 06498;;; -NGC3705A;G;11:30:29.72;+09:23:16.6;Leo;0.89;0.28;128;15.50;;;;;23.58;Sc;;;;;;2887;;2MASX J11302968+0923168,PGC 035470,SDSS J113029.72+092316.5,SDSS J113029.72+092316.6;;; -NGC3705B;G;11:29:43.70;+09:12:20.9;Leo;0.59;0.27;69;15.86;;;;;23.67;SBbc;;;;;;;;2MASX J11294373+0912210,PGC 1361422,SDSS J112943.69+091220.9,SDSS J112943.70+091220.9;;;B-Mag taken from LEDA -NGC3706;G;11:29:44.43;-36:23:28.7;Cen;3.10;2.10;78;12.20;11.08;8.84;8.18;7.90;23.53;E-S0;;;;;;;;2MASX J11294442-3623285,ESO 378-006,ESO-LV 378-0060,MCG -06-25-022,PGC 035417;;; -NGC3707;G;11:30:11.56;-11:32:36.6;Crt;0.67;0.53;77;15.66;;12.48;11.83;11.55;23.69;E;;;;;;0704;;2MASX J11301159-1132362,PGC 035446;;The identification with IC 0704 is not certain.; -NGC3708;Other;11:30:39.28;-03:13:21.3;Leo;;;;;;;;;;;;;;;;;;;;Nothing at this position on the POSS.; -NGC3709;Other;11:30:39.27;-03:15:21.3;Leo;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3710;G;11:31:06.94;+22:46:05.0;Leo;1.22;0.45;99;14.50;;11.02;10.33;10.03;23.31;E;;;;;;;;2MASX J11310694+2246046,MCG +04-27-052,PGC 035502,SDSS J113106.93+224604.9,SDSS J113106.94+224604.9,UGC 06504;;; -NGC3711;G;11:29:25.52;-11:04:44.7;Crt;0.95;0.46;155;15.00;;13.93;13.18;12.70;22.71;SABb;;;;;;;;2MASX J11292551-1104444,MCG -02-29-035,PGC 035392;;; -NGC3712;G;11:31:09.15;+28:34:04.6;UMa;1.97;0.70;159;14.25;;;;;24.94;SBd;;;;;;;;MCG +05-27-082,PGC 035507,UGC 06506;;; -NGC3713;G;11:31:42.02;+28:09:12.9;Leo;1.21;0.80;123;14.40;;10.92;10.22;9.96;23.32;E-S0;;;;;;;;2MASX J11314203+2809127,MCG +05-27-084,PGC 035546,SDSS J113142.01+280912.9,SDSS J113142.02+280912.9,UGC 06511;;; -NGC3714;G;11:31:53.61;+28:21:30.5;Leo;1.23;0.85;65;14.30;;11.58;10.79;10.45;23.51;S0;;;;;;;;2MASX J11315360+2821307,MCG +05-27-085,PGC 035556,SDSS J113153.60+282130.5,SDSS J113153.61+282130.5,UGC 06516;;Noted in MCG as possibly interacting.; -NGC3715;G;11:31:32.34;-14:13:52.9;Crt;1.23;0.81;133;13.00;;10.45;9.81;9.50;22.31;SBbc;;;;;;;;2MASX J11313233-1413527,IRAS 11290-1357,MCG -02-29-041,PGC 035540;;; -NGC3716;G;11:31:41.13;+03:29:16.8;Leo;0.92;0.78;152;14.50;;11.28;10.55;10.30;22.82;S0;;;;;;;;2MASX J11314113+0329168,MCG +01-30-001,PGC 035545,SDSS J113141.13+032916.8,SDSS J113141.13+032916.9,UGC 06513;;; -NGC3717;G;11:31:31.99;-30:18:27.9;Hya;6.52;2.04;32;12.21;;8.59;7.85;7.52;24.21;Sb;;;;;;;;2MASX J11313199-3018278,ESO 439-015,ESO-LV 439-0150,IRAS 11290-3001,MCG -05-27-015,PGC 035539,UGCA 238;;; -NGC3718;G;11:32:34.85;+53:04:04.5;UMa;4.70;2.34;9;11.35;10.61;8.65;7.98;7.76;23.29;Sa;;;;;;;;2MASX J11323494+5304041,MCG +09-19-114,PGC 035616,UGC 06524;;; -NGC3719;G;11:32:13.46;+00:49:09.4;Leo;1.67;1.11;24;13.50;;11.13;10.42;10.19;23.25;Sbc;;;;;;;;2MASX J11321346+0049095,MCG +00-30-005,PGC 035581,SDSS J113213.45+004909.4,SDSS J113213.46+004909.3,SDSS J113213.46+004909.4,UGC 06521;;"The APMUKS position is 6"" southwest of the nucleus."; -NGC3720;G;11:32:21.60;+00:48:14.4;Leo;1.07;0.99;125;13.70;;10.90;10.26;9.92;22.63;Sab;;;;;;;;2MASX J11322159+0048145,IRAS 11297+0104,MCG +00-30-006,PGC 035594,SDSS J113221.59+004814.4,UGC 06523;;; -NGC3721;G;11:34:07.82;-09:28:01.7;Crt;0.91;0.53;130;15.51;;12.07;11.32;10.93;23.79;S0-a;;;;;;;;2MASX J11340784-0928014,PGC 035727;;Identification as NGC 3721 is uncertain.; -NGC3722;G;11:34:23.31;-09:40:48.2;Crt;1.11;0.81;58;15.00;;11.93;11.25;11.04;24.33;E;;;;;;;;2MASX J11342332-0940475,MCG -01-30-005,PGC 035746;;Note +40 arcsec error in [VCV2006] position.; -NGC3723;G;11:32:30.55;-09:58:10.3;Crt;1.30;1.10;75;14.00;;10.89;10.19;9.93;23.58;E-S0;;;;;;;;2MASX J11323053-0958098,MCG -02-30-002,PGC 035604;;; -NGC3724;G;11:34:28.68;-09:39:36.7;Crt;1.46;0.35;63;15.00;;11.58;10.82;10.54;24.54;S0-a;;;;;;;;2MASX J11342867-0939365,IRAS 11319-0922,MCG -01-30-007,PGC 035757;;Identification as NGC 3724 is uncertain.; -NGC3725;G;11:33:40.53;+61:53:16.8;UMa;1.54;1.27;144;13.60;;11.05;10.27;10.09;23.31;SBc;;;;;;;;2MASX J11334053+6153165,IRAS 11308+6209,MCG +10-17-015,PGC 035698,SDSS J113340.51+615316.9,SDSS J113340.52+615316.8,SDSS J113340.53+615316.8,UGC 06542;;; -NGC3726;G;11:33:21.12;+47:01:45.1;UMa;5.27;3.54;14;11.11;;8.62;7.93;7.78;22.70;Sc;;;;;;;;2MASX J11332117+4701447,IRAS 11306+4718,MCG +08-21-051,PGC 035676,SDSS J113321.12+470145.1,UGC 06537;;The Bologna position is 7 arcsec southwest of the center.; -NGC3727;G;11:33:40.93;-13:52:44.0;Crt;0.92;0.63;87;15.07;;11.85;11.23;11.28;23.57;S0;;;;;;;;2MASX J11334092-1352435,PGC 035697;;; -NGC3728;G;11:33:15.78;+24:26:48.8;Leo;1.56;0.85;22;14.70;;11.27;10.55;10.36;23.79;Sb;;;;;;;;2MASX J11331580+2426493,MCG +04-27-061,PGC 035669,SDSS J113315.78+242648.7,SDSS J113315.78+242648.8,UGC 06536;;; -NGC3729;G;11:33:49.32;+53:07:32.0;UMa;2.89;2.09;14;12.20;;9.36;8.73;8.73;22.59;Sa;;;;;;;;2MASX J11334932+5307317,IRAS 11310+5324,MCG +09-19-117,PGC 035711,SDSS J113349.32+530731.9,UGC 06547;;; -NGC3730;G;11:34:16.88;-09:34:34.0;Crt;1.42;1.06;13;15.00;;11.09;10.38;10.18;23.89;S0;;;;;;;;2MASX J11341683-0934335,MCG -01-30-003,PGC 035743;;Identification as NGC 3730 is uncertain.; -NGC3731;G;11:34:11.68;+12:30:44.3;Leo;0.97;0.85;45;14.30;;11.19;10.46;10.28;23.11;E;;;;;;;;2MASX J11341166+1230436,MCG +02-30-001,PGC 035731,SDSS J113411.67+123044.2,SDSS J113411.67+123044.3,SDSS J113411.68+123044.3,UGC 06553;;; -NGC3732;G;11:34:13.94;-09:50:44.4;Crt;1.28;1.10;89;13.70;;10.46;9.81;9.55;22.18;S0-a;;;;;;;;2MASX J11341393-0950444,IRAS 11316-0934,MCG -02-30-005,PGC 035734;;; -NGC3733;G;11:35:01.60;+54:51:01.8;UMa;3.40;1.07;167;13.20;;12.62;11.86;12.14;23.41;SABc;;;;;;;;2MASX J11350158+5451018,MCG +09-19-123,PGC 035797,SDSS J113501.63+545102.0,UGC 06554;;; -NGC3734;G;11:34:40.68;-14:04:54.6;Crt;1.11;0.97;59;14.00;;11.80;11.15;10.92;23.52;SABb;;;;;;;;2MASX J11344067-1404545,MCG -02-30-006,PGC 035773;;; -NGC3735;G;11:35:57.30;+70:32:08.1;Dra;3.54;0.80;130;12.40;;9.54;8.75;8.45;22.62;Sc;;;;;;;;2MASX J11355732+7032081,IRAS 11330+7048,MCG +12-11-036,PGC 035869,SDSS J113557.30+703209.0,UGC 06567;;The 2MASS position is 10 arcsec southeast of the center of the optical bulge.; -NGC3736;G;11:35:41.73;+73:27:06.6;Dra;1.15;0.55;151;15.60;;11.90;11.16;10.84;24.14;Sbc;;;;;;;;2MASX J11354184+7327061,MCG +12-11-035,PGC 035835,UGC 06560;;; -NGC3737;G;11:35:36.38;+54:56:54.8;UMa;1.10;0.95;89;13.90;;10.90;10.18;9.90;22.91;S0;;;;;;;;2MASX J11353641+5456547,MCG +09-19-128,PGC 035840,SDSS J113536.36+545655.1,SDSS J113536.37+545654.7,SDSS J113536.37+545654.8,SDSS J113536.38+545654.9,UGC 06563;;; -NGC3738;G;11:35:48.79;+54:31:26.0;UMa;2.26;1.63;156;12.12;12.04;;;;21.77;I;;;;;;;;IRAS 11330+5448,MCG +09-19-130,PGC 035856,UGC 06565;;; -NGC3739;G;11:35:37.60;+25:05:19.1;Leo;1.22;0.35;18;15.30;;12.00;11.33;11.00;23.42;SBbc;;;;;;;;2MASX J11353761+2505189,MCG +04-27-071,PGC 035841,SDSS J113537.59+250519.0,UGC 06564;;; -NGC3740;G;11:36:12.28;+59:58:35.4;UMa;1.26;0.69;109;14.90;;12.02;11.34;11.06;23.64;Sb;;;;;;;;2MASX J11361233+5958351,MCG +10-17-023,PGC 035883,SDSS J113612.28+595835.4,SDSS J113612.28+595835.6,SDSS J113612.29+595835.4,UGC 06573;;; -NGC3741;G;11:36:06.18;+45:17:01.1;UMa;0.94;0.81;2;14.55;14.23;;;;22.88;I;;;;;;;;MCG +08-21-068,PGC 035878,UGC 06572;;; -NGC3742;G;11:35:32.51;-37:57:23.0;Cen;2.60;1.83;113;12.91;;9.62;8.92;8.65;23.61;Sab;;;;;;;;2MASX J11353252-3757229,ESO 320-006,ESO-LV 320-0060,MCG -06-26-001,PGC 035833;;; -NGC3743;G;11:35:57.36;+21:43:21.4;Leo;0.56;0.48;3;15.60;;12.15;11.45;11.00;23.30;E;;;;;;;;2MASX J11355731+2143217,PGC 035855,SDSS J113557.35+214321.3,SDSS J113557.36+214321.3,SDSS J113557.36+214321.4;;; -NGC3744;G;11:35:57.87;+23:00:41.6;Leo;0.73;0.32;13;15.40;;12.49;11.92;11.57;23.20;Sa;;;;;;;;2MASX J11355789+2300417,PGC 035857,SDSS J113557.86+230041.5,SDSS J113557.87+230041.5;;; -NGC3745;G;11:37:44.43;+22:01:16.6;Leo;0.58;0.33;102;16.35;;12.79;12.19;11.68;23.68;E-S0;;;;;;;;2MASX J11374443+2201170,MCG +04-28-004,PGC 036001,SDSS J113744.43+220116.5,SDSS J113744.43+220116.6;;; -NGC3746;G;11:37:43.62;+22:00:35.4;Leo;1.13;0.53;115;15.30;;11.98;11.28;10.98;23.49;Sab;;;;;;;;2MASX J11374364+2200349,MCG +04-28-005,PGC 035997,SDSS J113743.62+220035.3,UGC 06597;;Called 'Arp 320a' in UGC notes.; -NGC3747;G;11:32:31.06;+74:22:42.2;Dra;0.48;0.23;110;;;12.98;12.36;11.91;23.32;;;;;;;;;2MASX J11323098+7422421,IRAS 11294+7439,PGC 090149;;; -NGC3748;G;11:37:49.06;+22:01:34.1;Leo;0.85;0.31;138;15.50;;12.28;11.63;11.44;24.07;S0;;;;;;;;2MASX J11374903+2201340,MCG +04-28-007,PGC 036007,SDSS J113749.06+220134.1,UGC 06602 NOTES03;;; -NGC3749;G;11:35:53.21;-37:59:50.5;Cen;2.82;0.48;109;13.22;;9.85;9.04;8.71;24.15;Sa;;;;;;;;2MASX J11355320-3759503,ESO 320-008,ESO-LV 320-0080,IRAS 11333-3743,MCG -06-26-002,PGC 035861;;; -NGC3750;G;11:37:51.64;+21:58:27.3;Leo;1.05;0.73;154;15.20;;;;;23.74;E-S0;;;;;;;;MCG +04-28-008,PGC 036011,SDSS J113751.63+215827.1,SDSS J113751.63+215827.2,UGC 06602 NOTES02;;; -NGC3751;G;11:37:53.86;+21:56:11.3;Leo;0.91;0.53;9;15.23;;12.46;11.97;11.55;23.51;E-S0;;;;;;;;2MASX J11375386+2156110,MCG +04-28-009,PGC 036017,SDSS J113753.85+215611.3,UGC 06601;;; -NGC3752;G;11:32:32.21;+74:37:39.1;Dra;1.62;0.68;152;13.70;;11.45;10.76;10.42;22.99;SABa;;;;;;;;2MASX J11323219+7437392,IRAS 11293+7454,MCG +13-08-064,PGC 035608,UGC 06515;;; -NGC3753;G;11:37:53.90;+21:58:53.0;Leo;1.60;0.46;109;14.60;;11.11;10.26;9.94;23.57;SBab;;;;;;;;2MASX J11375378+2158520,MCG +04-28-010,PGC 036016,UGC 06602;;; -NGC3754;G;11:37:54.92;+21:59:07.8;Leo;0.55;0.45;1;15.20;;;;;22.30;SBb;;;;;;;;MCG +04-28-011,PGC 036018,SDSS J113754.91+215907.8,SDSS J113754.92+215907.7,SDSS J113754.92+215907.8,UGC 06602 NOTES01;;Component 'b)' in UGC notes.; -NGC3755;G;11:36:33.37;+36:24:37.2;UMa;2.90;1.16;124;13.90;;11.45;10.81;10.60;24.14;Sc;;;;;;;;2MASX J11363336+3624370,MCG +06-26-008,PGC 035913,SDSS J113633.36+362437.2,SDSS J113633.37+362437.2,UGC 06577;;; -NGC3756;G;11:36:48.02;+54:17:36.8;UMa;1.91;0.97;179;12.10;;9.69;9.06;8.78;21.69;SABb;;;;;;;;2MASX J11364797+5417372,IRAS 11340+5434,MCG +09-19-134,PGC 035931,SDSS J113648.01+541736.7,SDSS J113648.01+541736.8,SDSS J113648.02+541736.8,SDSS J113648.72+541731.4,SDSS J113648.73+541731.5,UGC 06579;;SDSS and 2MASXi positions are off-center.; -NGC3757;G;11:37:02.86;+58:24:55.9;UMa;1.14;0.89;125;13.50;;10.54;9.87;9.63;22.45;S0;;;;;;;;2MASX J11370282+5824563,MCG +10-17-026,PGC 035955,SDSS J113702.86+582455.9,UGC 06584;;; -NGC3758;G;11:36:29.10;+21:35:46.0;Leo;0.70;0.57;54;14.80;;;;;22.43;Sb;;;;;;;;IRAS 11338+2152,MCG +04-27-073,PGC 035905;;; -NGC3759;G;11:36:54.09;+54:49:23.9;UMa;1.03;0.95;10;14.30;;11.15;10.45;10.20;23.09;S0;;;;;;;;2MASX J11365408+5449233,MCG +09-19-136,PGC 035945,SDSS J113654.09+544923.8,UGC 06581;;LEDA 094203 superposed 17 arcsec southwest.; -NGC3759A;G;11:36:58.03;+55:09:43.4;UMa;1.08;0.97;35;14.50;;11.69;11.03;10.77;23.07;Sbc;;;;;;;;2MASX J11365805+5509433,MCG +09-19-135,PGC 035948,SDSS J113658.02+550943.4,SDSS J113658.03+550943.4,UGC 06582;;; -NGC3760;Dup;10:36:56.04;+21:52:55.7;Leo;;;;;;;;;;;;;;;3301;;;;;; -NGC3761;G;11:36:44.12;+22:59:31.3;Leo;1.09;0.83;63;15.00;;11.98;11.31;11.02;24.04;E;;;;;;;;2MASX J11364412+2259309,PGC 035933,SDSS J113644.11+225931.2,SDSS J113644.12+225931.3,SDSS J113644.13+225931.2;;; -NGC3762;G;11:37:23.83;+61:45:33.7;UMa;1.83;0.42;166;13.30;;10.38;9.59;9.36;22.72;SBa;;;;;;;;2MASX J11372373+6145337,MCG +10-17-027,PGC 035979,SDSS J113723.83+614533.7,UGC 06591;;; -NGC3763;G;11:36:30.19;-09:50:48.1;Crt;1.07;0.95;159;13.40;;11.27;10.59;10.33;21.17;SABc;;;;;;0714;;2MASX J11362964-0950330,2MASX J11363017-0950480,IRAS 11339-0934,MCG -02-30-009,PGC 035907;;; -NGC3764;GPair;11:36:54.10;+17:53:22.0;Leo;0.80;;;;;;;;;;;;;;;;;MCG +03-30-020;;;Diameter of the group inferred by the author. -NGC3764 NED01;G;11:36:54.62;+17:53:19.0;Leo;0.69;0.56;132;14.90;;11.66;11.16;10.86;22.80;Sc;;;;;;;;2MASX J11365463+1753189,MCG +03-30-020 NED01,PGC 035930,SDSS J113654.62+175318.9;;; -NGC3764 NED02;G;11:36:53.66;+17:53:25.6;Leo;0.24;0.19;25;18.02;;;;;;Sd;;;;;;;;MCG +03-30-020 NED02,PGC 4581793;;;B-Mag taken from LEDA -NGC3765;G;11:37:04.18;+24:05:46.5;Leo;0.85;0.57;61;15.10;;11.90;11.17;10.90;22.92;SBbc;;;;;;;;2MASX J11370417+2405467,MCG +04-28-001,PGC 035956,SDSS J113704.17+240546.4,SDSS J113704.18+240546.5;;; -NGC3766;OCl;11:36:14.39;-61:36:18.6;Cen;6.90;;;5.66;5.30;;;;;;;;;;;;;C 097,MWSC 1958;Pearl Cluster;; -NGC3767;G;11:37:15.56;+16:52:37.8;Leo;0.98;0.70;88;14.50;;11.19;10.47;10.22;23.06;S0;;;;;;;;2MASX J11371552+1652381,MCG +03-30-023,PGC 035969,SDSS J113715.55+165237.8,UGC 06590;;; -NGC3768;G;11:37:14.48;+17:50:23.6;Leo;1.36;0.84;154;13.70;;10.56;9.85;9.61;23.16;S0;;;;;;;;2MASX J11371444+1750241,MCG +03-30-024,PGC 035968,SDSS J113714.47+175023.5,UGC 06589;;; -NGC3769;G;11:37:44.11;+47:53:35.1;UMa;2.82;0.89;150;11.70;;10.11;9.33;9.20;22.69;Sb;;;;;;;;2MASX J11374410+4753351,IRAS 11350+4809,MCG +08-21-076,PGC 035999,SDSS J113744.10+475335.3,SDSS J113744.11+475335.1,UGC 06595;;Called 'Arp 280a' in UGC notes.; -NGC3769A;G;11:37:51.36;+47:52:52.8;UMa;0.92;0.37;107;14.70;;13.12;12.85;12.22;22.50;SBm;;;;;;;;2MASX J11375136+4752531,MCG +08-21-077,PGC 036008,UGC 06595 NOTES01;;Called 'Arp 280b' in UGC notes.; -NGC3770;G;11:37:58.74;+59:37:00.9;UMa;0.95;0.63;119;13.50;;10.86;10.20;9.91;22.14;SBa;;;;;;;;2MASX J11375873+5937011,IRAS 11352+5953,MCG +10-17-028,PGC 036025,SDSS J113758.73+593701.1,SDSS J113758.74+593700.9,UGC 06600;;; -NGC3771;G;11:39:06.00;-09:20:53.5;Crt;1.47;0.86;10;14.04;;10.74;10.04;9.73;23.25;E;;;;;;;;2MASX J11390599-0920535,MCG -01-30-018,PGC 036107;;NGC identification is not certain.; -NGC3772;G;11:37:48.48;+22:41:28.6;Leo;1.31;0.69;14;14.40;;11.13;10.41;10.21;23.23;Sa;;;;;;;;2MASX J11374841+2241320,MCG +04-28-006,PGC 036005,SDSS J113748.47+224128.6,UGC 06598;;; -NGC3773;G;11:38:12.88;+12:06:43.4;Leo;1.23;0.97;161;13.10;;11.50;11.12;10.70;22.67;S0;;;;;;;;2MASX J11381296+1206429,IRAS 11356+1223,MCG +02-30-005,PGC 036043,SDSS J113812.87+120643.3,UGC 06605;;Multiple SDSS entries describe this object.; -NGC3774;G;11:38:30.26;-08:58:34.1;Crt;1.11;0.67;79;15.00;;12.14;11.38;11.19;23.32;Sb;;;;;;;;2MASX J11383026-0858338,MCG -01-30-016,PGC 036058;;NGC identification is not certain.; -NGC3775;G;11:38:26.70;-10:38:19.6;Crt;1.28;0.50;30;15.00;;11.56;10.91;10.54;23.96;S0-a;;;;;;;;2MASX J11382669-1038198,MCG -02-30-012,PGC 036055;;; -NGC3776;G;11:38:17.98;-03:21:15.8;Vir;0.48;0.38;155;15.60;;;;;23.06;Sb;;;;;;;;2MASX J11381802-0321162,PGC 036048,SDSS J113817.97-032115.7,SDSS J113817.98-032115.8;;; -NGC3777;G;11:36:06.85;-12:34:08.7;Crt;1.18;0.63;35;14.00;;11.58;10.87;10.60;23.12;SABa;;;;;;;;2MASX J11360684-1234087,MCG -02-30-008,PGC 035879;;; -NGC3778;G;11:38:21.41;-50:42:55.3;Cen;1.21;0.99;40;14.15;;10.19;9.45;9.19;23.32;E-S0;;;;;;;;2MASX J11382141-5042551,ESO 216-026,ESO-LV 216-0260,PGC 036051;;; -NGC3779;G;11:38:51.05;-10:35:01.5;Crt;1.62;0.82;92;14.42;;;;;23.55;SBcd;;;;;;0717;;MCG -02-30-013,PGC 036084;;; -NGC3780;G;11:39:22.36;+56:16:14.4;UMa;2.64;2.17;74;12.20;;9.92;9.28;9.04;22.81;Sc;;;;;;;;2MASX J11392237+5616146,IRAS 11366+5632,MCG +09-19-150,PGC 036138,SDSS J113922.35+561614.3,SDSS J113922.36+561614.3,SDSS J113922.36+561614.4,UGC 06615;;; -NGC3781;G;11:39:03.76;+26:21:42.3;Leo;0.68;0.55;25;14.80;;11.60;10.89;10.49;22.77;S0;;;;;;;;2MASX J11390377+2621419,MCG +05-28-004,PGC 036104,SDSS J113903.77+262142.2,SDSS J113903.78+262142.2;;; -NGC3782;G;11:39:20.76;+46:30:49.8;UMa;1.23;0.64;178;13.10;;11.56;10.97;10.67;21.71;Scd;;;;;;;;2MASX J11392067+4630482,IRAS 11366+4647,MCG +08-21-087,PGC 036136,SDSS J113920.75+463049.7,UGC 06618;;; -NGC3783;G;11:39:01.76;-37:44:19.2;Cen;2.15;1.94;163;12.46;13.43;9.83;9.09;8.65;22.77;SBa;;;;;;;;2MASX J11390172-3744185,ESO 378-014,ESO-LV 378-0140,IRAS 11365-3727,MCG -06-26-004,PGC 036101;;; -NGC3784;G;11:39:29.80;+26:18:32.9;Leo;0.93;0.50;137;15.20;;11.90;11.22;10.96;23.30;SABa;;;;;;;;2MASX J11392981+2618330,MCG +05-28-006,PGC 036147,SDSS J113929.79+261832.9,SDSS J113929.80+261832.9;;; -NGC3785;G;11:39:32.89;+26:18:08.2;Leo;1.11;0.44;27;15.30;;11.31;10.59;10.36;23.93;S0;;;;;;;;2MASX J11393294+2618079,MCG +05-28-007,PGC 036148,SDSS J113932.88+261808.1,SDSS J113932.89+261808.1,SDSS J113932.89+261808.2,UGC 06620;;; -NGC3786;G;11:39:42.55;+31:54:33.4;UMa;1.96;1.00;72;14.62;13.74;10.40;9.65;9.34;23.32;SABa;;;;;;;;2MASX J11394247+3154337,MCG +05-28-008,PGC 036158,SDSS J113942.52+315433.7,UGC 06621;;; -NGC3787;G;11:39:37.95;+20:27:16.9;Leo;0.75;0.70;25;14.70;;11.38;10.68;10.39;22.68;S0;;;;;;;;2MASX J11393798+2027169,MCG +04-28-015,PGC 036154,SDSS J113937.94+202716.8;;; -NGC3788;G;11:39:44.65;+31:55:52.3;UMa;2.00;0.58;179;13.30;12.50;10.30;9.60;9.34;22.77;Sab;;;;;;;;2MASX J11394459+3155526,MCG +05-28-009,PGC 036160,SDSS J113944.59+315552.4,UGC 06623;;HOLM 272C is a star.; -NGC3789;G;11:38:09.06;-09:36:25.7;Crt;1.80;0.52;178;15.00;;11.03;10.36;10.10;24.30;S0-a;;;;;;;;2MASX J11380904-0936257,MCG -01-30-015,PGC 036036;;; -NGC3790;G;11:39:47.26;+17:42:44.1;Leo;1.03;0.36;154;14.50;;11.53;10.82;10.59;23.13;S0-a;;;;;;;;2MASX J11394722+1742438,MCG +03-30-032,PGC 036167,SDSS J113947.26+174244.1,UGC 06624;;; -NGC3791;G;11:39:41.70;-09:22:02.1;Crt;1.34;0.92;165;14.50;;10.96;10.22;10.05;23.73;S0;;;;;;;;2MASX J11394183-0922028,MCG -01-30-020,PGC 036156;;; -NGC3792;**;11:39:38.53;+05:05:58.2;Vir;;;;;;;;;;;;;;;;;;;;; -NGC3793;*;11:40:01.99;+31:52:39.8;UMa;;;;14.40;;12.67;12.37;12.34;;;;;;;;;;2MASS J11400198+3152397,SDSS J114001.98+315239.7;;; -NGC3794;G;11:40:53.42;+56:12:07.3;UMa;2.03;1.12;118;13.80;;11.88;11.32;11.01;23.66;SABc;;;;;3804;;;2MASX J11405341+5612073,2MASX J11405425+5612080,IRAS 11381+5628,MCG +09-19-153,PGC 036238,UGC 06640;;; -NGC3795;G;11:40:06.67;+58:36:47.1;UMa;2.10;0.55;54;14.10;;11.54;10.92;10.64;23.36;Sbc;;;;;;;;2MASX J11400684+5836473,MCG +10-17-038,PGC 036192,SDSS J114006.66+583647.1,UGC 06629;;; -NGC3795A;G;11:39:21.31;+58:16:07.3;UMa;2.03;1.48;71;14.20;;;;;24.33;SABc;;;;;;;;MCG +10-17-035,PGC 036137,SDSS J113921.31+581607.3,SDSS J113921.32+581607.2,UGC 06616;;; -NGC3796;G;11:40:31.12;+60:17:56.1;UMa;1.46;0.88;126;13.40;;10.89;10.22;9.95;22.85;E-S0;;;;;;;;2MASX J11403114+6017562,MCG +10-17-039,PGC 036215,SDSS J114031.12+601756.0,UGC 06638;;; -NGC3797;*;11:40:13.31;+31:54:23.6;UMa;;;;14.80;14.90;13.67;13.37;13.32;;;;;;;;;;2MASS J11401327+3154246;;; -NGC3798;G;11:40:13.94;+24:41:49.4;Leo;2.15;1.01;60;13.90;;10.53;9.84;9.55;24.03;S0;;;;;;;;2MASX J11401393+2441493,IRAS 11376+2458,MCG +04-28-018,PGC 036199,SDSS J114013.93+244149.4,SDSS J114013.94+244149.4,UGC 06632;;; -NGC3799;G;11:40:09.38;+15:19:38.3;Leo;0.67;0.38;105;14.40;;11.99;11.41;11.10;21.92;SBb;;;;;;;;2MASX J11400936+1519385,MCG +03-30-037,PGC 036193,SDSS J114009.38+151938.2,SDSS J114009.38+151938.3,UGC 06630;;Multiple SDSS entries describe this object.; -NGC3800;G;11:40:13.51;+15:20:32.5;Leo;1.67;0.58;53;13.10;;10.37;9.64;9.32;22.36;SABb;;;;;;;;2MASX J11401351+1520324,IRAS 11376+1537,MCG +03-30-039,PGC 036197,UGC 06634;;; -NGC3801;G;11:40:16.94;+17:43:41.0;Leo;2.31;1.29;120;13.30;;9.87;9.12;8.88;23.72;S0;;;;;;;;2MASX J11401689+1743404,MCG +03-30-040,PGC 036200,SDSS J114016.98+174340.3,SDSS J114016.98+174340.4,UGC 06635;;The radio pos. in 1996AJ....111.1945D is 4.5 arcsec se of the optical/IR peak.; -NGC3802;G;11:40:18.78;+17:45:55.2;Leo;1.04;0.24;85;14.70;;11.23;10.49;10.17;22.32;Sb;;;;;;;;2MASX J11401906+1745564,IRAS 11377+1802,MCG +03-30-041,PGC 036203,SDSS J114018.78+174555.2,UGC 06636;;; -NGC3803;G;11:40:17.25;+17:48:04.5;Leo;0.62;0.50;19;;;15.02;14.38;14.31;23.92;SBcd;;;;;;;;2MASX J11401725+1748044,PGC 036204,SDSS J114017.29+174805.0;;; -NGC3804;Dup;11:40:53.42;+56:12:07.3;UMa;;;;;;;;;;;;;;;3794;;;;;; -NGC3805;G;11:40:41.68;+20:20:34.6;Leo;1.53;1.25;62;13.80;;10.27;9.60;9.30;23.35;E-S0;;;;;;;;2MASX J11404166+2020348,MCG +04-28-019,PGC 036224,SDSS J114041.67+202034.6,UGC 06642;;; -NGC3806;G;11:40:46.63;+17:47:46.6;Leo;1.14;0.94;170;14.60;;12.37;12.19;11.45;23.07;Sb;;;;;;;;2MASX J11404661+1747468,MCG +03-30-042,PGC 036231,SDSS J114046.66+174745.2,UGC 06641;;NGC 3807 is a Galactic star.; -NGC3807;*;11:41:54.68;+17:49:08.1;Leo;;;;;;;;;;;;;;;;;;;;; -NGC3808;GPair;11:40:44.40;+22:26:16.0;Leo;2.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC3808A;G;11:40:44.24;+22:25:45.7;Leo;0.94;0.73;135;14.10;;11.97;11.19;11.00;22.62;SABc;;;;;;;;2MASX J11404420+2225459,MCG +04-28-021,PGC 036227,SDSS J114044.23+222545.6,UGC 06643 NED01;;Component 'a)' in UGC notes. Called 'NGC 3808' in MCG.; -NGC3808B;G;11:40:44.64;+22:26:49.0;Leo;0.75;0.33;46;15.00;;12.41;11.65;11.37;19.93;SBc;;;;;;;;2MASX J11404456+2226479,IRAS 11381+2243,MCG +04-28-020,PGC 036228,SDSS J114044.64+222648.9,SDSS J114044.64+222649.0,UGC 06643 NED02;;Component 'b)' in UGC notes.; -NGC3809;G;11:41:16.06;+59:53:08.8;UMa;1.22;1.12;125;13.60;;10.43;9.73;9.48;22.72;S0;;;;;;;;2MASX J11411612+5953092,MCG +10-17-040,PGC 036263,SDSS J114116.05+595308.7,UGC 06649;;; -NGC3810;G;11:40:58.76;+11:28:16.1;Leo;3.35;2.29;28;11.40;;8.84;8.29;7.95;22.32;Sc;;;;;;;;2MASX J11405873+1128160,IRAS 11383+1144,MCG +02-30-010,PGC 036243,SDSS J114058.75+112816.0,SDSS J114058.75+112816.1,SDSS J114058.76+112816.1,UGC 06644;;; -NGC3811;G;11:41:16.63;+47:41:26.9;UMa;2.03;1.51;172;13.00;;10.63;10.00;9.70;22.96;SBc;;;;;;;;2MASX J11411665+4741266,IRAS 11386+4758,MCG +08-21-091,PGC 036265,SDSS J114116.62+474126.9,UGC 06650;;; -NGC3812;G;11:41:07.71;+24:49:18.1;Leo;1.71;0.52;25;13.90;;10.33;9.69;9.41;23.87;E;;;;;;;;2MASX J11410768+2449180,MCG +04-28-023,PGC 036256,UGC 06648;;; -NGC3813;G;11:41:18.66;+36:32:48.5;UMa;2.12;1.22;85;12.60;;9.81;9.14;8.86;22.24;Sb;;;;;;;;2MASX J11411865+3632481,MCG +06-26-019,PGC 036266,SDSS J114118.65+363248.4,UGC 06651;;; -NGC3814;G;11:41:27.68;+24:48:19.5;Leo;0.79;0.42;172;15.60;;;;;23.82;;;;;;;;;MCG +04-28-024,PGC 036267,SDSS J114127.67+244819.4;;; -NGC3815;G;11:41:39.29;+24:48:01.8;Leo;1.44;0.77;70;14.20;;11.23;10.49;10.24;23.20;Sab;;;;;;;;2MASX J11413930+2448019,MCG +04-28-025,PGC 036288,SDSS J114139.29+244801.7,SDSS J114139.29+244801.8,UGC 06654;;; -NGC3816;G;11:41:48.04;+20:06:13.1;Leo;1.70;0.90;68;13.46;12.50;10.52;9.91;9.60;23.35;S0;;;;;;;;2MASX J11414804+2006127,MCG +03-30-046,PGC 036292,SDSS J114148.03+200613.3,UGC 06656;;; -NGC3817;G;11:41:52.95;+10:18:15.8;Vir;1.10;0.85;122;14.40;;11.16;10.49;10.18;23.16;S0-a;;;;;;;;PGC 036299;;; -NGC3818;G;11:41:57.36;-06:09:20.4;Vir;2.44;1.55;96;13.00;;9.80;9.09;8.87;23.49;E;;;;;;;;2MASX J11415735-0609203,MCG -01-30-023,PGC 036304,UGCA 243;;; -NGC3819;G;11:42:05.86;+10:21:04.1;Vir;0.90;0.63;145;14.80;;11.46;10.82;10.54;23.41;E;;;;;;;;2MASX J11420585+1021047,MCG +02-30-013,PGC 036311,SDSS J114205.86+102104.0,SDSS J114205.86+102104.1,SDSS J114205.87+102104.1;;; -NGC3820;G;11:42:04.91;+10:23:03.3;Vir;0.69;0.52;25;15.59;;12.63;12.02;11.59;23.13;Sbc;;;;;;;;2MASX J11420490+1023027,MCG +02-30-014,PGC 036308,SDSS J114204.90+102303.2,SDSS J114204.90+102303.3,SDSS J114204.91+102303.3;;; -NGC3821;G;11:42:09.11;+20:18:56.4;Leo;1.36;1.01;175;13.70;12.88;11.13;10.41;10.15;22.98;S0-a;;;;;;;;2MASX J11420907+2018567,MCG +04-28-030,PGC 036314,SDSS J114209.10+201856.4,UGC 06663;;; -NGC3822;G;11:42:11.11;+10:16:40.0;Vir;1.36;0.76;176;13.70;;10.73;9.98;9.58;23.46;S0-a;;;;;3848;;;2MASX J11421107+1016398,IRAS 11395+1033,MCG +02-30-015,PGC 036319,SDSS J114211.10+101640.0,UGC 06661;;ALFALFA source is blended with NGC 3825.; -NGC3823;G;11:42:15.10;-13:52:01.0;Crt;1.93;1.18;86;14.00;;10.70;10.01;9.70;24.00;E;;;;;;;;2MASX J11421509-1352013,MCG -02-30-017,PGC 036331;;; -NGC3824;G;11:42:44.86;+52:46:46.5;UMa;1.23;0.69;115;14.60;;11.04;10.29;9.94;23.36;SBa;;;;;;;;2MASX J11424481+5246459,IRAS 11400+5303,MCG +09-19-161,PGC 036370,SDSS J114244.85+524646.6,SDSS J114244.86+524646.4,SDSS J114244.86+524646.5,UGC 06676;;; -NGC3825;G;11:42:23.73;+10:15:50.9;Vir;1.35;0.89;147;13.80;;10.73;10.03;9.89;23.10;Sa;;;;;3852;;;2MASX J11422374+1015508,MCG +02-30-018,PGC 036348,SDSS J114223.73+101550.8,SDSS J114223.73+101550.9,UGC 06668;;ALFALFA source is blended with NGC 3822.; -NGC3826;G;11:42:32.85;+26:29:20.0;Leo;1.06;0.79;68;14.40;;10.95;10.25;9.95;23.30;E;;;;;3830;;;2MASX J11423285+2629198,MCG +05-28-018,PGC 036359,SDSS J114232.84+262919.9,SDSS J114232.84+262920.0,SDSS J114232.85+262920.0,UGC 06671;;; -NGC3827;G;11:42:36.27;+18:50:43.6;Leo;1.01;0.73;74;13.60;;11.52;10.94;10.79;22.27;Sd;;;;;;;;2MASX J11423626+1850440,IRAS 11400+1907,MCG +03-30-054,PGC 036361,SDSS J114236.27+185043.6,UGC 06673;;; -NGC3828;G;11:42:58.42;+16:29:15.4;Leo;0.77;0.55;51;15.60;;12.16;11.38;11.15;23.73;E;;;;;;;;2MASX J11425845+1629151,MCG +03-30-057,PGC 036376,SDSS J114258.42+162915.3;;; -NGC3829;G;11:43:27.28;+52:42:40.1;UMa;1.04;0.55;97;15.00;;12.66;11.96;11.96;23.30;Sb;;;;;;;;2MASX J11432724+5242400,IRAS 11407+5259,MCG +09-19-164,PGC 036439,SDSS J114327.27+524240.0,SDSS J114327.27+524240.3,SDSS J114327.28+524240.0,UGC 06690;;; -NGC3830;Dup;11:42:32.85;+26:29:20.0;Leo;;;;;;;;;;;;;;;3826;;;;;; -NGC3831;G;11:43:18.60;-12:52:42.1;Crt;2.28;0.63;23;10.90;;10.80;10.02;9.77;24.27;S0-a;;;;;;;;2MASX J11431859-1252419,MCG -02-30-023,PGC 036417;;; -NGC3832;G;11:43:31.44;+22:43:31.6;Leo;1.87;1.51;7;14.00;;11.40;10.86;10.11;23.62;Sc;;;;;;;;2MASX J11433138+2243316,IRAS 11409+2300,MCG +04-28-040,PGC 036446,SDSS J114331.43+224331.5,SDSS J114331.43+224331.6,SDSS J114331.44+224331.6,UGC 06693;;; -NGC3833;G;11:43:28.98;+10:09:42.7;Vir;1.34;0.67;29;14.70;;11.19;10.68;10.48;23.34;Sc;;;;;;;;2MASX J11432894+1009423,MCG +02-30-020,PGC 036441,SDSS J114328.97+100942.7,SDSS J114328.98+100942.7,UGC 06692;;; -NGC3834;G;11:43:37.73;+19:05:25.7;Leo;0.86;0.60;133;15.10;;11.67;11.08;10.72;23.35;E-S0;;;;;;;;2MASX J11433771+1905256,MCG +03-30-065,PGC 036443,SDSS J114337.72+190525.6;;; -NGC3835;G;11:44:04.90;+60:07:11.2;UMa;1.91;0.64;62;13.00;;10.51;9.83;9.55;22.71;Sab;;;;;;;;2MASX J11440487+6007108,IRAS 11413+6023,MCG +10-17-055,PGC 036493,SDSS J114404.89+600711.2,SDSS J114404.90+600711.2,UGC 06703;;; -NGC3835A;G;11:47:22.90;+60:18:01.6;UMa;1.10;1.08;170;13.90;;11.46;10.80;10.60;22.98;E?;;;;;;;;2MASX J11472284+6018015,IRAS 11447+6034,MCG +10-17-068,PGC 036776,SDSS J114722.89+601801.5,UGC 06762;;; -NGC3836;GPair;11:43:29.80;-16:47:44.0;Crt;1.50;;;;;;;;;;;;;;;;;MCG -03-30-010;;;Diameter of the group inferred by the author. -NGC3836 NED01;G;11:43:29.51;-16:47:39.3;Crt;;;;;;;;;;;;;;;;;;MCG -03-30-010 NED01;;; -NGC3836 NED02;G;11:43:29.84;-16:47:47.3;Crt;1.20;0.93;138;13.39;;11.65;10.94;10.54;22.55;Sc;;;;;;;;2MASX J11432985-1647473,IRAS 11409-1631,MCG -03-30-010 NED02,PGC 036445;;; -NGC3837;G;11:43:56.43;+19:53:40.5;Leo;0.93;0.84;6;14.68;;11.01;10.29;9.96;22.96;E;;;;;;;;2MASX J11435642+1953403,MCG +03-30-068,PGC 036476,SDSS J114356.42+195340.4,UGC 06701;;; -NGC3838;G;11:44:13.76;+57:56:53.6;UMa;1.43;0.59;141;12.70;;10.23;9.55;9.35;22.58;S0-a;;;;;;;;2MASX J11441372+5756531,MCG +10-17-056,PGC 036505,SDSS J114413.75+575653.6,TYC 3838-691-1,UGC 06707;;; -NGC3839;G;11:43:54.33;+10:47:04.9;Leo;1.04;0.51;85;13.60;;11.76;11.11;10.68;22.28;Scd;;;;;;;;2MASX J11435429+1047051,IRAS 11413+1103,MCG +02-30-024,PGC 036475,SDSS J114354.33+104704.8,SDSS J114354.33+104704.9,SDSS J114354.33+104705.1,UGC 06700;;; -NGC3840;G;11:43:58.96;+20:04:37.3;Leo;0.79;0.68;67;14.89;13.84;12.05;11.18;10.89;22.79;Sa;;;;;;;;2MASX J11435898+2004373,IRAS 11413+2021,MCG +03-30-070,PGC 036477,SDSS J114358.95+200437.2,SDSS J114358.96+200437.3,UGC 06702;;; -NGC3841;G;11:44:02.15;+19:58:18.8;Leo;0.99;0.65;119;15.78;;11.65;10.90;10.57;23.26;E-S0;;;;;;;;2MASX J11440217+1958183,MCG +03-30-073,PGC 036469,SDSS J114402.15+195818.8,SDSS J114402.16+195818.8;;; -NGC3842;G;11:44:02.15;+19:56:59.3;Leo;2.14;1.49;177;13.70;11.82;10.04;9.39;9.08;23.31;E;;;;;;;;2MASX J11440217+1956593,MCG +03-30-072,PGC 036487,SDSS J114402.15+195659.3,UGC 06704;;; -NGC3843;G;11:43:54.63;+07:55:32.5;Vir;0.99;0.37;43;14.10;;11.17;10.42;10.11;22.97;S0-a;;;;;;;;2MASX J11435462+0755321,MCG +01-30-011,PGC 036471,SDSS J114354.63+075532.4,SDSS J114354.63+075532.5,UGC 06699;;; -NGC3844;G;11:44:00.79;+20:01:45.6;Leo;1.16;0.30;28;14.85;13.87;11.56;10.94;10.80;23.65;S0-a;;;;;;;;2MASX J11440075+2001453,MCG +03-30-069,PGC 036481,SDSS J114400.79+200145.5,SDSS J114400.79+200145.6,UGC 06705;;; -NGC3845;G;11:44:05.47;+19:59:46.0;Leo;0.95;0.47;125;15.48;;11.93;11.19;10.97;23.57;S0-a;;;;;;;;2MASX J11440543+1959463,MCG +03-30-074,PGC 036470,SDSS J114405.46+195945.9;;; -NGC3846;G;11:44:29.08;+55:39:08.1;UMa;0.97;0.63;134;14.70;;11.86;11.30;10.92;21.95;SBbc;;;;;;;;2MASX J11442911+5539073,IRAS 11417+5556,MCG +09-19-171,PGC 036539,SDSS J114429.05+553908.3,SDSS J114429.06+553908.0,SDSS J114429.07+553908.1,SDSS J114429.07+553908.2,SDSS J114429.08+553908.2,UGC 06710;;; -NGC3846A;G;11:44:14.82;+55:02:05.9;UMa;1.94;1.55;47;14.20;;12.02;11.37;11.28;24.32;IB;;;;;;;;2MASX J11441477+5502061,MCG +09-19-169,PGC 036506,SDSS J114414.82+550205.8,SDSS J114414.82+550205.9,SDSS J114414.83+550205.9,UGC 06706;;; -NGC3847;G;11:44:13.97;+33:30:52.3;UMa;1.52;1.36;130;14.60;;10.96;10.28;9.98;24.12;E;;;;;3856;;;2MASX J11441398+3330521,MCG +06-26-023,PGC 036504,SDSS J114413.97+333052.2,SDSS J114413.97+333052.3,SDSS J114413.98+333052.2,UGC 06708;;Identification as NGC 3856 is not certain.; -NGC3848;Dup;11:42:11.11;+10:16:40.0;Vir;;;;;;;;;;;;;;;3822;;;;;; -NGC3849;G;11:45:35.25;+03:13:54.6;Vir;0.67;0.40;29;14.70;;11.61;10.84;10.41;22.70;S0-a;;;;;;0730;;2MASX J11453527+0313550,IRAS 11430+0330,MCG +01-30-013,PGC 036658,SDSS J114535.24+031354.6,SDSS J114535.25+031354.4,SDSS J114535.25+031354.6;;; -NGC3850;G;11:45:35.56;+55:53:12.8;UMa;1.71;0.69;124;14.40;;;;;23.66;Sc;;;;;;;;MCG +09-19-174,PGC 036660,SDSS J114535.56+555312.8,SDSS J114535.57+555312.7,UGC 06733;;; -NGC3851;G;11:44:20.42;+19:58:51.1;Leo;0.63;0.48;83;15.91;;12.04;11.27;11.02;23.01;E-S0;;;;;;;;2MASX J11442041+1958508,MCG +03-30-077,PGC 036516,SDSS J114420.41+195851.0,SDSS J114420.42+195851.0,SDSS J114420.42+195851.1;;; -NGC3852;Dup;11:42:23.73;+10:15:50.9;Vir;;;;;;;;;;;;;;;3825;;;;;; -NGC3853;G;11:44:28.33;+16:33:29.2;Leo;1.43;0.82;140;13.50;;10.43;9.68;9.50;23.03;E;;;;;;;;2MASX J11442833+1633287,MCG +03-30-081,PGC 036535,SDSS J114428.32+163329.1,SDSS J114428.33+163329.2,UGC 06712;;; -NGC3854;G;11:44:52.05;-09:13:59.8;Crt;1.87;1.64;57;13.08;;10.07;9.39;9.12;23.01;SABb;;;;;3865;;;2MASX J11445205-0913595,MCG -01-30-028,PGC 036581;;; -NGC3855;G;11:44:25.78;+33:21:18.3;UMa;1.22;0.95;73;15.10;;11.78;11.04;10.68;23.75;Sb;;;;;;2953;;2MASX J11442576+3321182,MCG +06-26-025,PGC 036530,SDSS J114425.77+332118.2,SDSS J114425.78+332118.3,UGC 06709;;Identification as NGC 3855 is not certain.; -NGC3856;Dup;11:44:13.97;+33:30:52.3;UMa;;;;;;;;;;;;;;;3847;;;;;; -NGC3857;G;11:44:50.15;+19:31:58.3;Leo;0.90;0.55;48;15.10;;11.67;11.03;10.75;23.55;S0-a;;;;;;;;2MASX J11445012+1931579,MCG +03-30-084,PGC 036548,SDSS J114450.14+193158.2;;; -NGC3858;G;11:45:11.68;-09:18:50.3;Crt;1.41;0.77;71;13.00;;10.83;10.31;10.09;23.39;SBa;;;;;3866;;;2MASX J11451168-0918504,IRAS 11426-0902,MCG -01-30-029,PGC 036621;;; -NGC3859;G;11:44:52.24;+19:27:15.1;Leo;1.05;0.33;58;14.90;;12.17;11.37;11.13;22.58;Sm;;;;;;;;2MASX J11445225+1927149,IRAS 11423+1943,MCG +03-30-091,PGC 036582,SDSS J114452.23+192715.1,UGC 06721;;; -NGC3860;G;11:44:49.16;+19:47:42.1;Leo;1.32;0.72;40;14.61;;11.35;10.63;10.40;23.21;Sab;;;;;;;;2MASX J11444919+1947419,IRAS 11422+2003,MCG +03-30-088,PGC 036577,SDSS J114449.16+194742.2,UGC 06718;;; -NGC3861;G;11:45:03.88;+19:58:25.3;Leo;2.04;1.01;61;13.47;12.67;10.92;10.24;9.97;23.34;Sb;;;;;;;;2MASX J11450387+1958249,IRAS 11424+2015,MCG +03-30-093,PGC 036604,SDSS J114503.87+195825.2,SDSS J114503.88+195825.2,UGC 06724;;; -NGC3862;G;11:45:05.01;+19:36:22.7;Leo;1.09;1.09;155;14.98;13.97;10.48;9.77;9.49;22.79;E;;;;;;;;2MASX J11450498+1936229,MCG +03-30-095,PGC 036606,SDSS J114505.02+193622.8,UGC 06723;;; -NGC3863;G;11:45:05.52;+08:28:10.2;Vir;2.51;0.52;74;14.00;;10.65;9.90;9.62;23.47;SBbc;;;;;;;;2MASX J11450555+0828100,IRAS 11425+0844,MCG +02-30-028,PGC 036607,SDSS J114505.52+082810.2,SDSS J114505.53+082810.2,UGC 06722;;HOLM 286B is a star.; -NGC3864;G;11:45:15.68;+19:23:31.6;Leo;0.77;0.58;82;15.50;;12.45;11.70;11.41;23.56;Sab;;;;;;;;2MASX J11451571+1923316,MCG +03-30-097,PGC 036620,SDSS J114515.67+192331.5;;; -NGC3865;Dup;11:44:52.05;-09:13:59.8;Crt;;;;;;;;;;;;;;;3854;;;;;; -NGC3866;Dup;11:45:11.68;-09:18:50.3;Crt;;;;;;;;;;;;;;;3858;;;;;; -NGC3867;G;11:45:29.62;+19:24:00.6;Leo;1.44;0.82;176;14.60;;11.08;10.39;9.99;23.43;Sab;;;;;;;;2MASX J11452963+1924007,MCG +03-30-103,PGC 036649,SDSS J114529.61+192400.5,SDSS J114529.62+192400.5,UGC 06731;;; -NGC3868;G;11:45:29.94;+19:26:40.9;Leo;0.84;0.44;80;14.80;;11.71;11.04;10.74;23.22;S0-a;;;;;;;;2MASX J11452991+1926407,MCG +03-30-104,PGC 036638,SDSS J114529.93+192640.8,SDSS J114529.94+192640.8;;; -NGC3869;G;11:45:45.56;+10:49:28.6;Leo;1.67;0.46;136;13.50;;10.19;9.42;9.21;22.86;Sa;;;;;;;;2MASX J11454556+1049286,MCG +02-30-032,PGC 036669,SDSS J114545.56+104928.5,SDSS J114545.56+104928.6,SDSS J114545.57+104928.5,UGC 06737;;; -NGC3870;G;11:45:56.60;+50:11:59.1;UMa;1.03;0.75;24;13.20;;11.64;11.03;10.82;22.26;S0-a;;;;;;;;2MASX J11455663+5011596,IRAS 11432+5028,MCG +08-22-001,PGC 036686,SDSS J114556.59+501159.0,SDSS J114556.60+501159.0,SDSS J114556.60+501159.1,UGC 06742;;; -NGC3871;G;11:46:10.14;+33:06:31.5;UMa;0.94;0.20;104;15.40;;11.95;11.18;10.81;22.85;Sb;;;;;;2959;;2MASX J11461015+3306311,MCG +06-26-031,PGC 036702,SDSS J114610.14+330631.4,SDSS J114610.14+330631.5,UGC 06744;;; -NGC3872;G;11:45:49.06;+13:46:00.1;Leo;2.39;1.77;4;12.90;;9.51;8.74;8.51;23.47;E;;;;;;;;2MASX J11454906+1346000,MCG +02-30-033,PGC 036678,UGC 06738;;; -NGC3873;G;11:45:46.10;+19:46:26.2;Leo;1.14;1.06;0;14.20;;10.71;10.00;9.75;23.01;E;;;;;;;;2MASX J11454612+1946258,MCG +03-30-106,PGC 036670,SDSS J114546.10+194625.5,UGC 06735;;; -NGC3874;**;11:45:37.75;+08:34:26.1;Vir;;;;;;;;;;;;;;;;;;;;; -NGC3875;G;11:45:49.45;+19:46:02.7;Leo;1.59;0.36;86;14.80;;11.21;10.54;10.24;23.98;S0-a;;;;;;;;2MASX J11454945+1946028,MCG +03-30-105,PGC 036675,UGC 06739;;; -NGC3876;G;11:45:26.67;+09:09:38.6;Vir;1.12;0.64;105;13.40;;12.14;11.34;11.17;22.40;Sab;;;;;;;;2MASX J11452663+0909386,IRAS 11428+0926,MCG +02-30-029,PGC 036644,SDSS J114526.66+090938.5,UGC 06730;;; -NGC3877;G;11:46:07.70;+47:29:39.6;UMa;5.36;1.23;36;11.80;;8.76;8.02;7.75;23.01;Sc;;;;;;;;2MASX J11460778+4729401,IRAS 11434+4746,MCG +08-22-002,PGC 036699,SDSS J114607.79+472941.1,SDSS J114607.80+472941.1,SDSS J114607.80+472941.2,UGC 06745;;; -NGC3878;G;11:46:17.78;+33:12:16.1;UMa;0.60;0.60;145;15.50;;11.96;11.23;10.94;21.82;E;;;;;;;;2MASX J11461779+3312161,MCG +06-26-032,PGC 036708,SDSS J114617.77+331216.1,SDSS J114617.78+331216.1;;; -NGC3879;G;11:46:49.42;+69:23:01.3;Dra;2.04;0.50;131;13.50;;11.98;11.75;11.33;22.71;Sd;;;;;;;;2MASX J11464940+6923011,IRAS 11441+6939,MCG +12-11-040,PGC 036743,UGC 06752;;; -NGC3880;G;11:46:22.23;+33:09:42.4;UMa;0.94;0.90;115;14.80;;11.50;10.74;10.45;23.43;E;;;;;;;;2MASX J11462225+3309421,2MASX J11462225+3310051,MCG +06-26-033,PGC 036712,SDSS J114622.23+330942.3;;; -NGC3881;G;11:46:34.41;+33:06:23.1;UMa;1.20;1.04;15;15.20;;11.68;11.07;10.79;24.09;E-S0;;;;;;;;2MASX J11463441+3306229,MCG +06-26-034,PGC 036722,SDSS J114634.40+330623.0,SDSS J114634.40+330623.1,SDSS J114634.41+330623.0,SDSS J114634.42+330623.1;;; -NGC3882;G;11:46:06.55;-56:23:17.3;Cen;3.32;1.82;107;12.50;;9.05;8.30;8.11;23.68;SBbc;;;;;;;;2MASX J11460639-5623274,ESO 170-011,IRAS 11436-5606,PGC 036697;;; -NGC3883;G;11:46:47.18;+20:40:31.5;Leo;1.77;1.56;159;14.20;;10.93;10.32;9.94;23.70;Sb;;;;;;;;2MASX J11464719+2040312,MCG +04-28-053,PGC 036740,SDSS J114647.17+204031.4,SDSS J114647.17+204031.5,UGC 06754;;; -NGC3884;G;11:46:12.18;+20:23:29.9;Leo;1.91;1.41;10;13.79;12.88;10.40;9.70;9.41;23.57;Sa;;;;;;;;2MASX J11461218+2023297,MCG +04-28-051,PGC 036706,SDSS J114612.17+202329.9,SDSS J114612.18+202329.9,UGC 06746;;; -NGC3885;G;11:46:46.49;-27:55:19.8;Hya;2.74;1.11;120;12.68;11.89;9.44;8.70;8.38;23.48;S0-a;;;;;;;;2MASX J11464650-2755198,ESO 440-007,ESO-LV 440-0070,IRAS 11442-2738,MCG -05-28-006,PGC 036737;;; -NGC3886;G;11:47:05.60;+19:50:13.9;Leo;1.35;0.71;125;14.30;;10.70;10.01;9.73;23.48;E-S0;;;;;;;;2MASX J11470561+1950143,MCG +03-30-111,PGC 036756,SDSS J114705.59+195013.8,UGC 06760;;; -NGC3887;G;11:47:04.57;-16:51:16.6;Crt;3.27;2.57;10;11.40;;8.97;8.34;8.02;22.54;Sbc;;;;;;;;2MASX J11470456-1651167,IRAS 11445-1634,MCG -03-30-012,PGC 036754,UGCA 246;;; -NGC3888;G;11:47:34.37;+55:58:02.0;UMa;1.61;1.31;119;12.60;;10.22;9.54;9.25;22.28;SABc;;;;;;;;2MASX J11473433+5558021,IRAS 11449+5614,MCG +09-19-189,PGC 036789,SDSS J114734.37+555802.0,UGC 06765;;; -NGC3889;G;11:47:48.13;+56:01:06.0;UMa;0.73;0.41;123;;;12.34;11.68;11.52;23.63;E-S0;;;;;;;;2MASX J11474814+5601062,MCG +09-19-191,PGC 036819,SDSS J114748.11+560106.3,SDSS J114748.12+560106.0,SDSS J114748.13+560105.9,SDSS J114748.13+560106.0;;; -NGC3890;G;11:49:19.85;+74:18:07.9;Dra;0.87;0.78;50;14.10;;11.58;10.79;10.55;22.55;Sab;;;;;3939;;;2MASX J11491989+7418078,IRAS 11465+7434,MCG +13-09-003,PGC 036925,UGC 06788;;; -NGC3891;G;11:48:03.36;+30:21:33.6;UMa;1.72;1.29;71;13.70;;10.69;9.93;9.75;23.14;Sbc;;;;;;;;2MASX J11480336+3021335,MCG +05-28-031,PGC 036832,SDSS J114803.35+302133.5,SDSS J114803.35+302133.6,UGC 06772;;; -NGC3892;G;11:48:00.99;-10:57:43.4;Crt;3.08;2.70;98;12.21;;9.28;8.60;8.35;24.00;S0-a;;;;;;;;2MASX J11480099-1057432,MCG -02-30-030,PGC 036827;;; -NGC3893;G;11:48:38.19;+48:42:39.0;UMa;2.69;1.43;158;11.23;10.67;8.77;8.08;7.89;21.19;SABc;;;;;;;;2MASX J11483820+4842388,IRAS 11460+4859,MCG +08-22-007,PGC 036875,UGC 06778;;; -NGC3894;G;11:48:50.36;+59:24:56.4;UMa;2.66;1.83;18;12.90;;9.55;8.82;8.56;23.59;E;;;;;;;;2MASX J11485036+5924561,MCG +10-17-078,PGC 036889,SDSS J114850.34+592456.3,UGC 06779;;; -NGC3895;G;11:49:04.03;+59:25:57.6;UMa;1.19;0.81;124;14.00;;10.75;10.04;9.80;22.90;SBa;;;;;;;;2MASX J11490400+5925580,MCG +10-17-080,PGC 036907,SDSS J114904.01+592557.9,SDSS J114904.02+592557.6,SDSS J114904.03+592557.6,UGC 06785;;; -NGC3896;G;11:48:56.39;+48:40:28.8;UMa;1.39;0.86;129;14.05;13.57;12.47;11.94;11.65;22.45;SBa;;;;;;;;2MASX J11485638+4840287,MCG +08-22-008,PGC 036897,UGC 06781;;; -NGC3897;G;11:48:59.46;+35:00:57.8;UMa;1.53;1.16;107;14.20;;11.21;10.46;10.19;23.12;SBbc;;;;;;;;2MASX J11485947+3500579,MCG +06-26-041,PGC 036902,SDSS J114859.46+350057.7,SDSS J114859.46+350057.8,UGC 06784;;; -NGC3898;G;11:49:15.37;+56:05:03.7;UMa;3.47;2.11;107;11.70;;8.58;7.89;7.66;22.41;Sab;;;;;;;;2MASX J11491536+5605036,MCG +09-19-204,PGC 036921,SDSS J114915.24+560504.2,UGC 06787;;; -NGC3899;G;11:50:04.45;+26:28:45.3;Leo;1.51;0.67;4;13.20;;10.92;10.18;9.95;22.42;Sb;;;;;3912;;;2MASX J11500444+2628443,IRAS 11474+2645,MCG +05-28-037,PGC 036979,SDSS J115004.45+262845.2,SDSS J115004.45+262845.3,UGC 06801;;; -NGC3900;G;11:49:09.46;+27:01:19.3;Leo;2.55;1.25;2;12.50;;9.62;8.98;8.70;22.91;S0-a;;;;;;;;2MASX J11490943+2701194,MCG +05-28-034,PGC 036914,SDSS J114909.46+270119.3,UGC 06786;;; -NGC3901;G;11:42:49.72;+77:22:21.7;Cam;1.37;0.67;166;14.60;;12.53;12.08;11.60;23.38;Sc;;;;;;;;2MASX J11424981+7722212,MCG +13-09-001,PGC 036386,UGC 06675;;; -NGC3902;G;11:49:18.76;+26:07:17.8;Leo;1.27;0.82;89;14.00;;11.55;10.94;10.87;22.94;SABb;;;;;;;;2MASX J11491874+2607175,IRAS 11467+2623,MCG +04-28-055,PGC 036923,SDSS J114918.75+260717.7,SDSS J114918.76+260717.8,UGC 06790;;; -NGC3903;G;11:49:03.54;-37:31:01.6;Cen;1.28;1.11;133;13.47;;11.13;10.44;10.27;22.69;SABc;;;;;;;;2MASX J11490354-3731014,ESO 378-024,ESO-LV 378-0240,IRAS 11465-3714,MCG -06-26-008,PGC 036906;;; -NGC3904;G;11:49:13.22;-29:16:36.3;Hya;3.47;2.51;11;11.82;10.96;8.63;7.95;7.68;23.35;E;;;;;;;;2MASX J11491320-2916360,ESO 440-013,ESO-LV 440-0130,MCG -05-28-009,PGC 036918;;; -NGC3905;G;11:49:04.91;-09:43:47.4;Crt;1.89;1.29;63;13.00;;10.95;10.25;9.88;23.21;Sc;;;;;;;;2MASX J11490490-0943479,IRAS 11465-0927,MCG -01-30-035,PGC 036909;;; -NGC3906;G;11:49:40.50;+48:25:33.5;UMa;1.35;0.84;80;14.10;;11.81;11.17;11.02;22.52;SBcd;;;;;;;;2MASX J11494049+4825334,IRAS 11469+4842,MCG +08-22-012,PGC 036953,UGC 06797;;; -NGC3907;G;11:49:30.14;-01:05:11.5;Vir;1.06;0.67;40;14.63;;11.16;10.36;10.17;23.48;E-S0;;;;;;;;2MASX J11493017-0105112,MCG +00-30-028,PGC 036941,SDSS J114930.14-010511.4,UGC 06796;;; -NGC3907B;G;11:49:23.54;-01:05:01.6;Vir;1.49;0.41;71;14.80;;11.43;10.59;10.26;23.54;SBb;;;;;;;;2MASX J11492351-0105022,IRAS 11468-0048,MCG +00-30-026,PGC 036928,SDSS J114923.53-010501.5,UGC 06793;;; -NGC3908;G;11:49:52.68;+12:11:09.3;Leo;0.65;0.52;79;;;12.57;11.48;11.24;24.12;E;;;;;;;;2MASX J11495270+1211086,PGC 036967,SDSS J114952.68+121109.2,SDSS J114952.68+121109.3;;NGC identification is not certain.; -NGC3909;OCl;11:50:08.14;-48:14:17.3;Cen;6.60;;;;;;;;;;;;;;;;;MWSC 1979;;; -NGC3910;G;11:49:59.31;+21:20:01.1;Leo;1.43;0.94;144;14.40;;10.68;9.94;9.67;23.73;E-S0;;;;;;;;2MASX J11495932+2120012,MCG +04-28-058,PGC 036971,SDSS J114959.30+212001.1,UGC 06800;;; -NGC3911;G;11:49:22.09;+24:56:18.5;Leo;0.87;0.71;112;15.40;;13.72;13.22;12.84;23.60;SABb;;;;;;;;2MASX J11492209+2456185,MCG +04-28-056,PGC 036926,SDSS J114922.08+245618.4,SDSS J114922.08+245618.5,SDSS J114922.09+245618.5,UGC 06795;;; -NGC3912;Dup;11:50:04.45;+26:28:45.3;Leo;;;;;;;;;;;;;;;3899;;;;;; -NGC3913;G;11:50:38.94;+55:21:13.9;UMa;1.64;1.38;146;14.20;;11.60;11.04;10.80;23.03;Scd;;;;;;0740;;2MASX J11503892+5521139,IRAS 11480+5537,MCG +09-20-001,PGC 037024,SDSS J115038.93+552113.9,SDSS J115038.94+552113.9,UGC 06813;;HOLM 296B does not exist (it is probably a plate defect).; -NGC3914;G;11:50:32.65;+06:34:03.3;Vir;0.84;0.39;37;13.80;;11.23;10.47;10.26;22.07;SBb;;;;;;;;2MASX J11503264+0634030,IRAS 11479+0650,MCG +01-30-017,PGC 037014,SDSS J115032.64+063403.2,SDSS J115032.65+063403.3,UGC 06809;;; -NGC3915;G;11:49:24.53;-05:07:06.4;Vir;1.90;0.43;96;14.25;;11.83;11.29;11.06;24.62;S0-a;;;;;;2963;;2MASX J11492457-0507062,IRAS 11468-0450,MCG -01-30-036,PGC 036933;;The identification as NGC 3915 is very uncertain.; -NGC3916;G;11:50:51.05;+55:08:37.1;UMa;1.21;0.31;47;14.80;;11.52;10.77;10.51;22.84;Sb;;;;;;;;2MASX J11505098+5508372,IRAS 11481+5525,MCG +09-20-005,PGC 037047,SDSS J115051.04+550837.0,SDSS J115051.04+550837.1,SDSS J115051.05+550837.1,UGC 06819;;; -NGC3917;G;11:50:45.43;+51:49:28.8;UMa;4.61;1.03;76;12.50;;9.77;9.06;8.86;23.35;Sc;;;;;;;;2MASX J11504548+5149271,IRAS 11481+5206,MCG +09-20-008,PGC 037036,SDSS J115045.43+514928.7,UGC 06815;;; -NGC3918;PN;11:50:17.95;-57:10:56.4;Cen;0.32;;;8.40;8.10;;;;;;;15.69;;;;;HD 102854;ESO 170-013,IRAS 11478-5654;;; -NGC3919;G;11:50:41.53;+20:00:54.7;Leo;0.95;0.87;150;14.50;;10.81;10.11;9.80;23.16;E;;;;;;;;2MASX J11504150+2000544,MCG +03-30-119,PGC 037032,SDSS J115041.52+200054.6,SDSS J115041.52+200054.7,UGC 06810;;; -NGC3920;G;11:50:05.93;+24:55:12.0;Leo;1.05;0.89;131;14.10;;11.82;11.17;10.91;22.86;Sbc;;;;;;;;2MASX J11500592+2455123,IRAS 11475+2511,MCG +04-28-059,PGC 036981,SDSS J115005.93+245512.0,UGC 06803;;; -NGC3921;G;11:51:06.87;+55:04:43.5;UMa;2.02;1.20;30;13.40;12.64;10.79;10.06;9.81;23.29;S0-a;;;;;;;;2MASX J11510686+5504433,IRAS 11484+5521,MCG +09-20-009,PGC 037063,SDSS J115106.87+550443.4,UGC 06823;;"VV misprints dec as +56d21.5; corrected in MCG errata."; -NGC3922;G;11:51:13.43;+50:09:24.8;UMa;1.91;0.65;39;13.80;;10.81;10.23;10.00;23.56;S0-a;;;;;3924;;;2MASX J11511346+5009242,MCG +08-22-017,PGC 037072,SDSS J115113.42+500924.8,SDSS J115113.43+500924.8,UGC 06824;;; -NGC3923;G;11:51:01.69;-28:48:21.7;Hya;6.89;4.55;48;10.59;9.80;7.42;6.76;6.50;23.80;E;;;;;;;;2MASX J11510178-2848223,ESO 440-017,ESO-LV 440-0170,MCG -05-28-012,PGC 037061;;; -NGC3924;Dup;11:51:13.43;+50:09:24.8;UMa;;;;;;;;;;;;;;;3922;;;;;; -NGC3925;G;11:51:20.97;+21:53:20.9;Leo;1.23;0.82;15;15.30;;11.77;11.14;10.86;24.01;SABa;;;;;;;;2MASX J11512100+2153210,MCG +04-28-071,PGC 037078,SDSS J115120.96+215320.8;;; -NGC3926A;G;11:51:26.56;+22:01:40.7;Leo;0.62;0.51;86;;;;;;23.18;E-S0;;;;;;;;MCG +04-28-073,PGC 037079,SDSS J115126.56+220140.7,UGC 06829 NED01;;; -NGC3926B;G;11:51:28.23;+22:01:33.5;Leo;0.83;0.38;135;14.70;;;;10.64;23.57;E;;;;;;;;MCG +04-28-074,PGC 037080,UGC 06829 NED02;;; -NGC3927;Other;11:51:32.28;+28:08:24.8;Leo;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3928;G;11:51:47.62;+48:40:59.3;UMa;1.36;1.25;0;13.10;;10.59;9.94;9.67;22.70;E;;;;;;;;2MASX J11514768+4840593,IRAS 11491+4857,MCG +08-22-019,PGC 037136,SDSS J115147.62+484059.2,SDSS J115147.62+484059.3,UGC 06834;Miniature Spiral;; -NGC3929;G;11:51:42.53;+21:00:09.8;Leo;0.58;0.44;85;14.50;;11.89;11.18;10.91;22.37;S0;;;;;;;;2MASX J11514255+2100094,MCG +04-28-076,PGC 037126,SDSS J115142.52+210009.8,SDSS J115142.53+210009.7,SDSS J115142.53+210009.8,UGC 06832;;; -NGC3930;G;11:51:46.01;+38:00:54.4;UMa;2.66;1.98;38;13.50;;11.93;11.38;11.19;24.14;Sc;;;;;;;;2MASX J11514602+3800544,MCG +06-26-045,PGC 037132,UGC 06833;;; -NGC3931;G;11:51:13.45;+52:00:03.1;UMa;1.13;0.88;157;14.60;;11.44;10.80;10.60;23.28;E-S0;;;;;3917A;;;2MASX J11511340+5200032,MCG +09-20-011,PGC 037073,SDSS J115113.45+520003.0,SDSS J115113.45+520003.1,UGC 06825;;; -NGC3932;G;11:52:29.26;+48:27:32.3;UMa;0.97;0.44;50;15.10;;11.94;11.30;10.88;23.14;SBb;;;;;;;;2MASX J11522922+4827323,IRAS 11498+4844,MCG +08-22-023,PGC 037194,SDSS J115229.22+482732.2,SDSS J115229.24+482731.9;;; -NGC3933;G;11:52:02.05;+16:48:34.9;Leo;1.01;0.50;83;14.20;;11.49;10.82;10.52;22.65;SBab;;;;;;;;2MASX J11520204+1648350,MCG +03-30-122,PGC 037156,SDSS J115202.04+164834.8,SDSS J115202.05+164834.9,UGC 06839;;; -NGC3934;G;11:52:12.56;+16:51:05.2;Leo;0.92;0.67;73;15.00;;11.61;10.83;10.46;23.25;Sab;;;;;;;;2MASX J11521256+1651049,IRAS 11496+1707,MCG +03-30-123,PGC 037170,UGC 06841;;; -NGC3935;G;11:52:24.07;+32:24:13.7;UMa;1.03;0.60;112;14.00;;11.08;10.42;10.10;22.39;Sab;;;;;;;;2MASX J11522410+3224133,MCG +06-26-049,PGC 037183,SDSS J115224.06+322413.9,SDSS J115224.07+322413.9,SDSS J115224.07+322414.0,UGC 06843;;; -NGC3936;G;11:52:20.59;-26:54:21.2;Hya;4.55;0.78;64;12.58;;10.08;9.35;9.07;23.46;SBbc;;;;;;;;2MASX J11522059-2654211,ESO 504-020,ESO-LV 504-0200,IRAS 11497-2637,MCG -04-28-004,PGC 037178,UGCA 248;;; -NGC3937;G;11:52:42.62;+20:37:52.7;Leo;1.75;1.54;20;14.00;;10.41;9.71;9.42;23.41;E-S0;;;;;;;;2MASX J11524264+2037527,MCG +04-28-081,PGC 037219,SDSS J115242.61+203752.6,SDSS J115242.61+203752.7,UGC 06851;;; -NGC3938;G;11:52:49.45;+44:07:14.6;UMa;3.55;3.44;28;10.90;10.38;8.62;8.17;7.81;22.39;Sc;;;;;;;;2MASX J11524945+4407146,IRAS 11502+4423,MCG +07-25-001,PGC 037229,SDSS J115249.43+440714.6,UGC 06856;;; -NGC3939;Dup;11:49:19.85;+74:18:07.9;Dra;;;;;;;;;;;;;;;3890;;;;;; -NGC3940;G;11:52:46.45;+20:59:21.4;Leo;1.22;1.04;99;14.30;;10.76;10.08;9.76;23.12;E;;;;;;;;2MASX J11524641+2059217,MCG +04-28-082,PGC 037224,SDSS J115246.44+205921.3,UGC 06852;;; -NGC3941;G;11:52:55.36;+36:59:10.8;UMa;3.51;2.33;10;11.45;11.62;8.24;7.56;7.32;22.73;S0;;;;;;;;2MASX J11525536+3659109,MCG +06-26-051,PGC 037235,SDSS J115255.35+365910.7,UGC 06857;;; -NGC3942;G;11:51:30.14;-11:25:29.0;Crt;1.34;0.69;124;14.00;;11.83;11.17;11.06;22.69;SABc;;;;;;;;2MASX J11513013-1125290,IRAS 11489-1108,MCG -02-30-035,PGC 037099;;; -NGC3943;G;11:52:56.57;+20:28:44.8;Leo;0.97;0.91;130;14.70;;11.33;10.65;10.34;23.04;SBab;;;;;;;;2MASX J11525659+2028445,MCG +04-28-084,PGC 037237,SDSS J115256.57+202844.7;;; -NGC3944;G;11:53:05.08;+26:12:25.0;Leo;1.07;0.76;30;14.30;;11.02;10.47;10.19;22.99;E-S0;;;;;;;;2MASX J11530509+2612255,MCG +04-28-085,PGC 037244,SDSS J115305.08+261224.9,SDSS J115305.08+261225.0,UGC 06859;;; -NGC3945;G;11:53:13.73;+60:40:32.0;UMa;5.55;3.29;15;11.60;;8.52;7.61;7.53;24.12;S0-a;;;;;;;;2MASX J11531372+6040320,IRAS 11506+6056,MCG +10-17-096,PGC 037258,UGC 06860;;; -NGC3946;G;11:53:20.63;+21:01:17.5;Leo;0.66;0.54;83;15.50;;12.27;11.58;11.25;23.03;S0-a;;;;;;;;2MASX J11532062+2101175,MCG +04-28-089,PGC 037268,SDSS J115320.62+210117.4;;; -NGC3947;G;11:53:20.32;+20:45:06.2;Leo;1.37;0.80;106;14.20;;11.21;10.52;10.21;22.98;Sb;;;;;;;;2MASX J11532031+2045055,IRAS 11507+2101,MCG +04-28-088,PGC 037264,SDSS J115320.32+204506.1,UGC 06863;;; -NGC3948;*;11:53:36.65;+20:57:02.8;Leo;;;;;;;;;;;;;;;;;;SDSS J115336.65+205702.8;;; -NGC3949;G;11:53:41.72;+47:51:31.3;UMa;2.26;1.32;116;10.90;;9.44;8.80;8.60;21.46;Sbc;;;;;;;;2MASX J11534174+4751316,IRAS 11510+4808,MCG +08-22-029,PGC 037290,SDSS J115341.72+475131.3,UGC 06869;;; -NGC3950;G;11:53:41.41;+47:53:04.5;UMa;0.40;0.34;52;15.70;;13.26;12.64;12.35;23.21;E;;;;;;;;2MASX J11534137+4753052,MCG +08-22-030,PGC 037294,SDSS J115341.41+475304.4,SDSS J115341.41+475304.5;;NGC identification is not certain.; -NGC3951;G;11:53:41.25;+23:22:56.0;Leo;1.02;0.51;175;14.50;;11.48;10.80;10.47;22.66;Sab;;;;;;;;2MASX J11534125+2322557,IRAS 11511+2339,MCG +04-28-090,PGC 037288,SDSS J115341.24+232255.9,SDSS J115341.25+232255.9,UGC 06867;;; -NGC3952;G;11:53:40.63;-03:59:47.5;Vir;1.63;0.41;84;13.84;;11.84;11.35;11.01;22.06;SBm;;;;;;2972;;2MASX J11534064-0359474,IRAS 11510-0342,MCG -01-30-044,PGC 037285;;Confused HIPASS source; -NGC3953;G;11:53:48.92;+52:19:36.4;UMa;6.14;3.13;14;11.08;;7.92;7.33;7.05;22.64;Sbc;;;;;;;;2MASX J11534902+5219355,IRAS 11511+5236,MCG +09-20-026,PGC 037306,SDSS J115349.00+521936.6,UGC 06870;;; -NGC3954;G;11:53:41.68;+20:52:57.0;Leo;0.91;0.75;19;14.40;;11.05;10.37;10.09;23.02;E;;;;;;;;2MASX J11534168+2052567,MCG +04-28-091,PGC 037291,SDSS J115341.67+205256.9,SDSS J115341.68+205257.0,UGC 06866;;; -NGC3955;G;11:53:57.15;-23:09:51.0;Crt;4.15;1.21;166;12.30;11.90;9.75;9.05;8.75;24.07;S0-a;;;;;;;;2MASX J11535713-2309513,ESO 504-026,ESO-LV 504-0260,IRAS 11514-2253,MCG -04-28-005,PGC 037320;;; -NGC3956;G;11:54:00.69;-20:34:02.4;Crt;3.46;1.00;64;12.99;;10.78;10.42;10.04;23.22;SBc;;;;;;;;2MASX J11540068-2034023,ESO 572-013,ESO-LV 572-0130,IRAS 11514-2017,MCG -03-30-016,PGC 037325,UGCA 251;;Confused HIPASS source; -NGC3957;G;11:54:01.51;-19:34:08.0;Crt;3.24;0.61;176;13.00;;9.67;8.94;8.69;24.09;S0-a;;;;;;2965;;2MASX J11540154-1934073,ESO 572-014,ESO-LV 572-0140,IRAS 11515-1917,MCG -03-30-017,PGC 037326;;ESO 572- ? 004 applies to the nominal position for IC 2965.; -NGC3958;G;11:54:33.68;+58:22:01.3;UMa;1.26;0.51;30;14.07;13.17;10.75;10.08;9.80;22.65;Sa;;;;;;;;2MASX J11543369+5822012,MCG +10-17-098,PGC 037358,SDSS J115433.66+582201.4,SDSS J115433.66+582201.7,SDSS J115433.67+582201.3,SDSS J115433.68+582201.3,UGC 06880;;; -NGC3959;G;11:54:37.65;-07:45:23.4;Crt;0.88;0.59;153;14.00;;11.09;10.39;10.12;22.66;Sa;;;;;;;;2MASX J11543763-0745233,MCG -01-30-046,PGC 037363;;; -NGC3960;OCl;11:50:33.21;-55:40:11.4;Cen;6.00;;;9.07;8.30;;;;;;;;;;;;;MWSC 1982;;; -NGC3961;G;11:54:57.64;+69:19:48.4;Dra;1.30;1.28;165;14.70;;11.70;11.06;10.81;23.93;SBa;;;;;;;;2MASX J11545766+6919484,PGC 037390,UGC 06885;;; -NGC3962;G;11:54:40.10;-13:58:30.1;Crt;4.17;3.00;10;13.16;12.16;8.56;7.89;7.67;23.56;E;;;;;;;;2MASX J11544010-1358299,MCG -02-30-040,PGC 037366,UGCA 253;;; -NGC3963;G;11:54:58.71;+58:29:37.1;UMa;2.52;2.22;96;12.20;;10.28;9.72;9.30;23.24;Sbc;;;;;;;;2MASX J11545871+5829364,IRAS 11523+5846,MCG +10-17-100,PGC 037386,SDSS J115458.71+582936.9,SDSS J115458.71+582937.0,SDSS J115458.71+582937.1,SDSS J115458.71+582937.2,UGC 06884;;; -NGC3964;G;11:54:53.48;+28:15:44.7;Leo;0.89;0.67;78;15.20;;11.43;10.74;10.46;23.30;S0-a;;;;;;;;2MASX J11545343+2815444,MCG +05-28-043,PGC 037375,SDSS J115453.47+281544.6,SDSS J115453.48+281544.6,SDSS J115453.48+281544.7;;; -NGC3965;Other;11:55:07.42;-10:52:41.9;Crt;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC3966;G;11:56:44.19;+32:01:18.4;UMa;2.48;0.52;109;14.00;;10.07;9.38;8.98;24.43;S0-a;;;;;3986;;;2MASX J11564416+3201181,IRAS 11541+3217,MCG +05-28-053,PGC 037544,SDSS J115644.18+320118.3,SDSS J115644.19+320118.4,SDSS J115644.25+320116.5,UGC 06920;;; -NGC3967;G;11:55:10.40;-07:50:37.6;Crt;1.28;1.01;108;14.37;;10.92;10.15;9.96;23.68;E-S0;;;;;;;;2MASX J11551037-0750373,MCG -01-30-047,PGC 037398;;; -NGC3968;G;11:55:28.70;+11:58:06.1;Leo;1.91;1.31;17;13.30;;10.16;9.41;9.15;23.18;Sbc;;;;;;;;2MASX J11552868+1158059,IRAS 11529+1214,MCG +02-30-045,PGC 037429,SDSS J115528.69+115806.1,SDSS J115528.70+115806.1,UGC 06895;;; -NGC3969;G;11:55:09.24;-18:55:38.7;Crt;1.32;1.16;64;13.99;;10.70;9.97;9.71;23.30;S0-a;;;;;;;;2MASX J11550923-1855386,ESO 572-017,ESO-LV 572-0170,MCG -03-30-020,PGC 037396;;; -NGC3970;G;11:55:28.07;-12:03:40.6;Crt;1.19;0.52;101;14.00;;10.89;10.16;9.93;23.55;S0;;;;;;;;2MASX J11552806-1203405,MCG -02-30-041,PGC 037425;;; -NGC3971;G;11:55:36.39;+29:59:45.3;UMa;1.05;0.91;76;14.01;13.13;10.98;10.31;10.04;22.86;S0;;;;;3984;;;2MASX J11553641+2959452,MCG +05-28-047,PGC 037443,SDSS J115536.39+295945.2,SDSS J115536.39+295945.3,UGC 06899;;; -NGC3972;G;11:55:45.09;+55:19:14.7;UMa;3.67;0.99;117;13.14;;10.54;9.83;9.64;23.55;SABb;;;;;;;;2MASX J11554511+5519144,IRAS 11531+5535,MCG +09-20-032,PGC 037466,SDSS J115545.08+551914.6,SDSS J115545.09+551914.7,UGC 06904;;One of two 6cm sources associated with [WB92] 1154+5537; -NGC3973;G;11:55:37.00;+11:59:50.6;Leo;0.69;0.42;166;15.40;;12.74;12.12;11.98;23.84;S0-a;;;;;;;;2MASX J11553699+1159504,MCG +02-31-001,PGC 037439,SDSS J115536.99+115950.5,SDSS J115536.99+115950.6;;; -NGC3974;G;11:55:40.14;-12:01:38.8;Crv;1.18;0.96;170;14.00;;11.09;10.34;10.06;23.39;S0-a;;;;;;;;2MASX J11554013-1201386,MCG -02-31-001,PGC 037452;;; -NGC3975;G;11:55:53.69;+60:31:45.9;UMa;0.76;0.42;94;15.20;;13.12;12.42;12.14;23.53;SABb;;;;;;;;2MASX J11555367+6031461,MCG +10-17-103,PGC 037480,SDSS J115553.68+603146.2,SDSS J115553.69+603145.8,SDSS J115553.69+603145.9;;; -NGC3976;G;11:55:57.29;+06:44:58.0;Vir;3.13;0.90;57;12.80;;9.70;8.99;8.76;22.80;Sb;;;;;;;;2MASX J11555729+0644580,2MASX J11555763+0645030,IRAS 11533+0701,MCG +01-31-001,PGC 037483,UGC 06906;;; -NGC3977;G;11:56:07.20;+55:23:26.8;UMa;1.53;1.19;177;14.70;;11.56;11.00;10.57;23.93;Sab;;;;;3980;;;2MASX J11560714+5523263,MCG +09-20-034,PGC 037497,SDSS J115607.19+552326.9,SDSS J115607.20+552326.8,UGC 06909;;; -NGC3978;G;11:56:10.32;+60:31:21.1;UMa;1.58;1.46;25;13.20;;11.00;10.36;10.01;23.01;SABb;;;;;;;;2MASX J11561045+6031300,IRAS 11535+6047,MCG +10-17-105,PGC 037502,SDSS J115610.31+603121.0,SDSS J115610.31+603121.1,SDSS J115610.32+603121.1,SDSS J115610.33+603121.1,UGC 06910;;; -NGC3979;G;11:56:01.05;-02:43:15.1;Vir;1.23;0.65;99;14.20;;10.87;10.18;9.95;23.18;S0;;;;;;2976;;2MASX J11560108-0243151,MCG +00-31-003,PGC 037488,SDSS J115601.05-024315.1,UGC 06907;;; -NGC3980;Dup;11:56:07.20;+55:23:26.8;UMa;;;;;;;;;;;;;;;3977;;;;;; -NGC3981;G;11:56:07.45;-19:53:46.2;Crv;3.32;2.11;15;11.75;;9.53;8.78;8.46;23.14;Sbc;;;;;;;;2MASX J11560744-1953462,ESO 572-020,ESO-LV 572-0200,IRAS 11535-1937,MCG -03-31-001,PGC 037496,UGCA 255;;Confused and extended HIPASS source; -NGC3982;G;11:56:28.13;+55:07:30.9;UMa;2.13;1.87;25;12.20;11.70;9.77;9.08;8.85;22.05;SABb;;;;;;;;2MASX J11562816+5507313,IRAS 11538+5524,MCG +09-20-036,PGC 037520,SDSS J115628.12+550730.8,SDSS J115628.13+550730.8,SDSS J115628.13+550730.9,UGC 06918;;; -NGC3983;G;11:56:23.68;+23:52:04.6;Leo;1.17;0.27;113;14.80;;11.15;10.46;10.17;23.29;S0-a;;;;;;;;2MASX J11562369+2352049,MCG +04-28-098,PGC 037514,SDSS J115623.67+235204.6,SDSS J115623.68+235204.6,UGC 06914;;; -NGC3984;Dup;11:55:36.39;+29:59:45.3;UMa;;;;;;;;;;;;;;;3971;;;;;; -NGC3985;G;11:56:42.11;+48:20:02.2;UMa;1.06;0.70;67;13.00;;11.18;10.55;10.36;21.62;Sm;;;;;;;;2MASX J11564210+4820022,IRAS 11541+4836,MCG +08-22-045,PGC 037542,UGC 06921;;; -NGC3986;Dup;11:56:44.19;+32:01:18.4;UMa;;;;;;;;;;;;;;;3966;;;;;; -NGC3987;G;11:57:20.92;+25:11:43.4;Leo;2.72;0.68;59;14.40;;10.35;9.48;9.05;23.88;SBb;;;;;;;;2MASX J11572090+2511436,IRAS 11547+2528,MCG +04-28-099,PGC 037591,SDSS J115720.75+251140.6,SDSS J115720.83+251145.4,UGC 06928;;; -NGC3988;G;11:57:24.22;+27:52:39.1;Leo;0.76;0.59;50;14.70;;11.45;10.73;10.46;22.99;E;;;;;;;;2MASX J11572422+2752386,MCG +05-28-057,PGC 037609,SDSS J115724.22+275239.0,SDSS J115724.22+275239.1;;; -NGC3989;G;11:57:26.69;+25:13:59.1;Leo;0.76;0.38;123;15.70;;13.68;12.98;12.91;23.38;Sbc;;;;;;;;2MASX J11572664+2513586,MCG +04-28-100,PGC 037599,SDSS J115726.68+251359.0,SDSS J115726.69+251359.1;;; -NGC3990;G;11:57:35.56;+55:27:31.2;UMa;1.38;0.81;42;13.57;;10.48;9.75;9.55;22.88;E-S0;;;;;;;;2MASX J11573559+5527318,MCG +09-20-043,PGC 037618,SDSS J115735.57+552731.6,UGC 06938;;; -NGC3991;GPair;11:57:31.08;+32:20:16.0;UMa;1.80;;;;;;;;;;;;;;;;;MCG +06-26-060,UGC 06933;;;Diameter of the group inferred by the author. -NGC3991 NED01;G;11:57:30.38;+32:20:01.8;UMa;1.17;0.29;31;13.80;;11.67;11.05;10.88;21.36;IB;;;;;3991S;;;2MASX J11573046+3220030,IRAS 11549+3237,MCG +06-26-060 NED01,PGC 037613,SDSS J115730.38+322001.7,UGC 06933 NED01;;; -NGC3991 NED02;G;11:57:31.73;+32:20:30.2;UMa;0.83;0.50;15;14.54;;;;;22.98;Sab;;;;;3991N;;;MCG +06-26-060 NED02,PGC 200277,SDSS J115731.73+322030.1,SDSS J115731.73+322030.2,UGC 06933 NED02;;;B-Mag taken from LEDA -NGC3992;G;11:57:35.98;+53:22:28.3;UMa;8.07;5.64;78;10.94;9.88;7.85;7.19;6.94;23.45;Sbc;;;;109;;;;2MASX J11573598+5322282,IRAS 11549+5339,MCG +09-20-044,PGC 037617,SDSS J115735.96+532228.9,UGC 06937;;;V-mag taken from LEDA -NGC3993;G;11:57:37.82;+25:14:26.2;Com;1.68;0.51;140;14.80;;11.72;11.03;10.80;23.63;Sb;;;;;;;;2MASX J11573783+2514261,MCG +04-28-101,PGC 037619,SDSS J115737.81+251426.1,SDSS J115737.82+251426.1,SDSS J115737.82+251426.2,UGC 06935;;; -NGC3994;G;11:57:36.87;+32:16:39.4;UMa;0.85;0.46;10;13.51;12.87;10.76;10.04;9.72;21.23;Sc;;;;;;;;2MASX J11573685+3216400,MCG +06-26-059,PGC 037616,SDSS J115736.86+321639.4,SDSS J115736.87+321639.4,UGC 06936;;; -NGC3995;G;11:57:44.10;+32:17:38.6;UMa;2.59;0.95;38;12.81;;11.35;10.57;10.52;22.61;SABm;;;;;;;;2MASX J11574411+3217389,MCG +06-26-061,PGC 037624,SDSS J115744.09+321738.6,SDSS J115744.10+321738.6,UGC 06944;;; -NGC3996;G;11:57:46.06;+14:17:50.7;Com;0.83;0.64;51;14.40;;11.31;10.65;10.38;22.46;Sb;;;;;;;;2MASX J11574605+1417507,IRAS 11551+1434,MCG +03-31-004,PGC 037628,SDSS J115746.05+141750.6,SDSS J115746.06+141750.7,UGC 06941;;; -NGC3997;G;11:57:48.23;+25:16:14.3;Com;1.10;0.56;126;14.30;;11.87;11.20;10.97;22.50;SBb;;;;;;;;2MASX J11574822+2516142,IRAS 11552+2532,MCG +04-28-102,PGC 037629,UGC 06942;;; -NGC3998;G;11:57:56.13;+55:27:12.9;UMa;2.78;2.26;139;11.64;12.10;8.33;7.58;7.37;22.37;S0;;;;;;;;2MASX J11575616+5527128,MCG +09-20-046,PGC 037642,UGC 06946;;; -NGC3999;G;11:57:56.49;+25:04:05.8;Com;0.63;0.40;86;15.70;;13.27;12.57;12.26;23.78;E;;;;;;;;2MASX J11575647+2504062,PGC 037647,SDSS J115756.49+250405.8;;; -NGC4000;G;11:57:57.02;+25:08:40.1;Com;1.04;0.37;1;15.20;;12.33;11.74;11.41;23.28;SBbc;;;;;;;;2MASX J11575699+2508402,IRAS 11554+2524,MCG +04-28-103,PGC 037643,SDSS J115756.98+250838.9,UGC 06949;;; -NGC4001;G;11:58:06.78;+47:20:05.5;UMa;0.59;0.40;149;15.00;;12.81;11.99;11.85;23.22;Sbc;;;;;;;;2MASX J11580681+4720050,MCG +08-22-047,PGC 037656,SDSS J115806.78+472005.4;;; -NGC4002;G;11:57:59.30;+23:12:07.4;Com;1.34;0.61;111;14.70;;11.11;10.41;10.13;23.52;Sa;;;;;;;;2MASX J11575931+2312070,MCG +04-28-104,PGC 037635,SDSS J115759.29+231207.3;;; -NGC4003;G;11:57:59.04;+23:07:29.6;Com;1.04;0.61;160;14.80;;11.16;10.46;10.13;23.32;S0;;;;;;;;2MASX J11575902+2307300,MCG +04-28-105,PGC 037646,SDSS J115759.03+230729.6,UGC 06948;;; -NGC4004;G;11:58:05.23;+27:52:43.9;Com;1.17;0.51;8;14.00;;11.67;11.01;10.74;22.41;IB;;;;;;;;2MASX J11580522+2752441,IRAS 11555+2809,MCG +05-28-060,PGC 037654,SDSS J115805.22+275243.8,SDSS J115805.22+275243.9,SDSS J115805.23+275243.9,UGC 06950;;; -NGC4004B;G;11:57:51.38;+27:52:07.2;Com;0.76;0.47;75;15.20;;11.95;11.22;11.06;23.22;E-S0;;;;;;2982;;2MASX J11575134+2752072,MCG +05-28-059,PGC 037636,SDSS J115751.37+275207.2,SDSS J115751.38+275207.2;;Identification as IC 2982 is very uncertain.; -NGC4005;G;11:58:10.17;+25:07:20.1;Com;1.12;0.74;92;14.10;;11.00;10.29;10.13;22.78;S0-a;;;;;4007;;;2MASX J11581014+2507199,MCG +04-28-107,PGC 037661,SDSS J115810.16+250720.0,SDSS J115810.16+250720.1,UGC 06952;;; -NGC4006;G;11:58:05.78;-02:07:12.3;Vir;1.52;0.96;13;14.20;;10.48;9.75;9.45;23.89;E;;;;;;;;2MASX J11580578-0207124,MCG +00-31-006,PGC 037655,SDSS J115805.78-020712.2,UGC 06951;;; -NGC4007;Dup;11:58:10.17;+25:07:20.1;Com;;;;;;;;;;;;;;;4005;;;;;; -NGC4008;G;11:58:17.04;+28:11:33.0;Com;2.07;1.11;166;13.10;;9.76;9.08;8.83;23.38;E;;;;;;;;2MASX J11581704+2811330,MCG +05-28-061,PGC 037666,UGC 06953;;; -NGC4009;*;11:58:15.05;+25:11:23.1;Com;;;;;;;;;;;;;;;;;;SDSS J115815.04+251123.0;;; -NGC4010;G;11:58:37.89;+47:15:41.4;UMa;3.07;0.65;66;13.10;;10.67;9.88;9.59;23.04;SBcd;;;;;;;;2MASX J11583799+4715407,IRAS 11560+4732,MCG +08-22-049,PGC 037697,SDSS J115837.89+471541.3,SDSS J115837.89+471541.4,UGC 06964;;; -NGC4011;G;11:58:25.43;+25:05:51.5;Com;0.77;0.37;35;15.70;;13.21;12.64;12.27;23.49;Sc;;;;;;;;2MASX J11582545+2505521,PGC 037674,SDSS J115825.42+250551.5,SDSS J115825.43+250551.5;;; -NGC4012;G;11:58:27.53;+10:01:17.4;Vir;1.73;0.52;151;14.60;;11.34;10.72;10.43;23.52;SABb;;;;;;;;2MASX J11582752+1001169,MCG +02-31-006,PGC 037686,SDSS J115827.52+100117.4,SDSS J115827.53+100117.3,SDSS J115827.53+100117.4,UGC 06960;;; -NGC4013;G;11:58:31.38;+43:56:47.7;UMa;4.89;1.23;58;12.40;;8.82;8.01;7.63;23.64;SABb;;;;;;;;2MASX J11583141+4356492,IRAS 11559+4413,MCG +07-25-009,PGC 037691,SDSS J115831.38+435647.6,SDSS J115831.38+435647.7,UGC 06963;;; -NGC4014;G;11:58:35.81;+16:10:38.3;Com;1.63;0.99;119;13.50;;10.52;9.82;9.51;23.19;S0-a;;;;;4028;;;2MASX J11583580+1610384,IRAS 11560+1627,MCG +03-31-005,PGC 037695,SDSS J115835.83+161038.1,UGC 06961;;; -NGC4015;GPair;11:58:42.90;+25:02:25.0;Com;1.40;;;;;;;;;;;;;;;;;UGC 06965;;;Diameter of the group inferred by the author. -NGC4015 NED01;G;11:58:42.60;+25:02:11.8;Com;1.62;1.26;156;14.20;;10.84;10.16;9.94;23.70;E-S0;;;;;;;;2MASX J11584264+2502123,MCG +04-28-109,PGC 037702,SDSS J115842.60+250211.8,UGC 06965 NED01;;Component 'a)' in UGC notes.; -NGC4015 NED02;G;11:58:43.22;+25:02:37.8;Com;0.78;0.16;35;13.76;;;;;21.95;Sc;;;;;;;;MCG +04-28-110,PGC 037703,UGC 06965 NED02;;Component 'b)' in UGC notes.;B-Mag taken from LEDA -NGC4016;G;11:58:29.02;+27:31:43.6;Com;0.76;0.47;155;14.60;;;;;21.57;Sd;;;;;;;;2MASX J11582910+2731431,MCG +05-28-063,PGC 037687,SDSS J115829.01+273143.6,SDSS J115829.02+273143.6,UGC 06954;;; -NGC4017;G;11:58:45.67;+27:27:08.8;Com;1.57;1.08;69;13.50;;11.14;10.58;10.45;22.48;Sbc;;;;;;;;2MASX J11584562+2727084,IRAS 11561+2743,MCG +05-28-065,PGC 037705,SDSS J115845.66+272708.7,SDSS J115845.67+272708.7,SDSS J115845.67+272708.8,UGC 06967;;Misidentified in CGCG as 'NGC 4016'.; -NGC4018;G;11:58:40.70;+25:18:59.1;Com;1.39;0.41;162;14.70;;11.80;10.96;10.55;23.23;Sab;;;;;;;;2MASX J11584070+2518591,IRAS 11561+2535,MCG +04-28-108,PGC 037699,SDSS J115840.76+251858.8,UGC 06966;;; -NGC4019;G;12:01:10.42;+14:06:15.5;Com;1.48;0.30;145;13.90;;12.28;11.64;11.33;22.51;Sbc;;;;;;0755;;2MASX J12011038+1406162,IRAS 11585+1423,MCG +02-31-014,PGC 037912,SDSS J120110.53+140613.5,SDSS J120110.54+140613.5,UGC 07001;;; -NGC4020;G;11:58:56.67;+30:24:42.8;UMa;1.87;0.82;19;13.20;;11.59;10.98;10.76;22.66;Scd;;;;;;;;2MASX J11585693+3024490,IRAS 11563+3041,MCG +05-28-066,PGC 037723,SDSS J115856.67+302442.6,SDSS J115856.67+302442.8,UGC 06971;;; -NGC4021;G;11:59:02.59;+25:04:59.6;Com;0.93;0.84;81;15.30;;12.24;11.50;11.25;24.06;E;;;;;;;;2MASX J11590257+2504596,MCG +04-28-112,PGC 037730,SDSS J115902.58+250459.5,SDSS J115902.59+250459.5;;; -NGC4022;G;11:59:01.01;+25:13:22.1;Com;1.00;0.96;105;14.40;;11.40;10.74;10.53;23.10;S0;;;;;;;;2MASX J11590100+2513216,MCG +04-28-111,PGC 037729,SDSS J115901.01+251322.0,SDSS J115901.01+251322.1,UGC 06975;;; -NGC4023;G;11:59:05.47;+24:59:20.3;Com;0.92;0.75;30;14.60;;12.07;11.34;11.33;23.02;Sb;;;;;;;;2MASX J11590546+2459206,MCG +04-28-113,PGC 037732,SDSS J115905.46+245920.2,SDSS J115905.47+245920.2,UGC 06977;;; -NGC4024;G;11:58:31.25;-18:20:48.6;Crv;1.75;1.51;64;12.91;;9.66;8.91;8.73;22.67;E-S0;;;;;;;;2MASX J11583124-1820486,ESO 572-031,ESO-LV 572-0310,MCG -03-31-004,PGC 037690;;; -NGC4025;G;11:59:10.19;+37:47:36.3;UMa;1.42;0.92;34;14.90;;13.17;12.46;12.34;23.24;SBc;;;;;;;;2MASX J11591024+3747372,MCG +06-26-064,PGC 037738,SDSS J115910.18+374736.2,SDSS J115910.19+374736.3,UGC 06982;;; -NGC4026;G;11:59:25.19;+50:57:42.1;UMa;4.41;0.87;178;12.17;;8.52;7.79;7.58;23.54;S0;;;;;;;;2MASX J11592518+5057420,MCG +09-20-052,PGC 037760,UGC 06985;;; -NGC4027;G;11:59:30.17;-19:15:54.8;Crv;3.54;2.80;163;11.71;11.10;9.37;8.70;8.50;22.86;SBd;;;;;;;;2MASX J11593016-1915546,ESO 572-037,ESO-LV 572-0370,IRAS 11569-1859,MCG -03-31-008,PGC 037773,UGCA 260;;; -NGC4027A;G;11:59:29.39;-19:19:55.2;Crv;1.11;0.57;165;15.03;;;;;23.32;IB;;;;;;;;ESO 572-036,ESO-LV 572-0360,MCG -03-31-007,PGC 037772;;; -NGC4028;Dup;11:58:35.81;+16:10:38.3;Com;;;;;;;;;;;;;;;4014;;;;;; -NGC4029;G;12:00:03.17;+08:10:54.2;Vir;1.25;0.60;156;14.50;;11.43;10.92;10.55;23.27;SABb;;;;;;;;2MASX J12000318+0810536,MCG +01-31-008,PGC 037816,SDSS J120003.16+081054.1,SDSS J120003.16+081054.2,SDSS J120003.17+081054.2,UGC 06990;;; -NGC4030;G;12:00:23.63;-01:06:00.3;Vir;3.78;2.65;19;11.42;;8.27;7.60;7.33;22.50;Sbc;;;;;;;;2MASX J12002364-0105598,IRAS 11578-0049,MCG +00-31-016,PGC 037845,SDSS J120023.33-010559.3,SDSS J120023.62-010600.2,SDSS J120023.62-010600.3,UGC 06993;;Extended HIPASS source; -NGC4031;G;12:00:31.35;+31:56:51.3;UMa;0.67;0.47;48;14.70;;12.33;11.71;11.42;22.69;Sb;;;;;;;;2MASX J12003130+3156514,MCG +05-28-075,PGC 037855,SDSS J120031.34+315651.2;;; -NGC4032;G;12:00:32.82;+20:04:26.2;Com;1.35;1.06;179;12.70;;11.15;10.85;10.45;22.20;I;;;;;;;;2MASX J12003281+2004260,IRAS 11579+2021,MCG +03-31-010,PGC 037860,SDSS J120032.86+200426.2,UGC 06995;;; -NGC4033;G;12:00:34.74;-17:50:33.4;Crv;2.59;1.30;44;12.79;;9.58;8.94;8.70;23.54;E;;;;;;;;2MASX J12003474-1750333,ESO 572-042,ESO-LV 572-0420,MCG -03-31-011,PGC 037863;;; -NGC4034;G;12:01:29.66;+69:19:26.1;Dra;1.45;0.87;11;14.50;;12.19;11.51;11.38;23.68;Sc;;;;;;;;2MASX J12012963+6919261,MCG +12-11-044,PGC 037935,UGC 07006;;; -NGC4035;G;12:00:29.34;-15:56:53.1;Crv;1.23;1.11;22;13.70;;12.18;11.60;11.47;23.19;SABb;;;;;;;;2MASX J12002921-1556543,IRAS 11579-1540,MCG -03-31-010,PGC 037853;;; -NGC4036;G;12:01:26.75;+61:53:44.8;UMa;4.85;2.08;83;12.18;11.20;8.47;7.79;7.56;23.66;S0;;;;;;;;2MASX J12012689+6153445,IRAS 11588+6210,MCG +10-17-125,PGC 037930,SDSS J120126.74+615344.7,SDSS J120126.75+615344.8,UGC 07005;;; -NGC4037;G;12:01:23.67;+13:24:03.7;Com;2.38;2.22;30;13.80;;10.88;10.28;10.11;23.44;Sb;;;;;;;;2MASX J12012368+1324041,IRAS 11588+1340,MCG +02-31-015,PGC 037928,SDSS J120123.66+132403.6,SDSS J120123.67+132403.7,UGC 07002;;; -NGC4038;G;12:01:53.01;-18:52:03.4;Crv;5.42;3.78;80;10.91;;;;;22.94;SBm;;;;;;;;2MASS J12015301-1852034,C 060,ESO 572-047,ESO-LV 572-0470,ESO-LV 572-0481,MCG -03-31-014,PGC 037967,UGCA 264;Antennae Galaxies;ESO-LV has two entries for this object.; -NGC4039;G;12:01:53.51;-18:53:10.3;Crv;5.36;2.73;50;11.08;;;;;22.82;SBm;;;;;;;;2MASS J12015350-1853103,C 061,ESO 572-048,ESO-LV 572-0471,ESO-LV 572-0480,MCG -03-31-015,PGC 037969,UGCA 265;Antennae Galaxies;ESO-LV has two entries for this object.; -NGC4040;G;12:02:05.44;+17:49:23.6;Com;1.20;0.61;140;15.00;;11.70;11.02;10.77;24.12;E;;;;;;;;2MASX J12020544+1749232,MCG +03-31-018,PGC 037993,SDSS J120205.44+174923.5,SDSS J120205.44+174923.6,UGC 07013;;; -NGC4041;G;12:02:12.20;+62:08:14.0;UMa;2.57;2.39;70;11.60;;9.36;8.67;8.41;22.38;Sbc;;;;;;;;2MASX J12021217+6208142,IRAS 11596+6224,MCG +10-17-129,PGC 037999,SDSS J120212.20+620813.9,SDSS J120212.20+620814.0,UGC 07014;;; -NGC4042;G;12:02:46.78;+20:09:47.7;Com;0.41;0.32;124;15.50;;13.45;12.80;12.41;23.29;E;;;;;;;;2MASX J12024674+2009478,PGC 3781394,SDSS J120246.76+200947.6,SDSS J120246.77+200947.7;;NGC identification is not certain.; -NGC4043;G;12:02:22.96;+04:19:47.3;Vir;0.95;0.63;136;14.10;;11.17;10.42;10.31;22.84;S0-a;;;;;;;;2MASX J12022296+0419473,IRAS 11597+0437,MCG +01-31-012,PGC 038010,SDSS J120222.96+041947.3,SDSS J120222.97+041947.3,UGC 07015;;; -NGC4044;G;12:02:29.51;-00:12:44.7;Vir;1.12;1.03;5;14.60;;10.92;10.14;9.91;23.66;E;;;;;;;;2MASX J12022950-0012445,MCG +00-31-020,PGC 038018,UGC 07018;;"Star superposed 9"" northeast of the nucleus."; -NGC4045;G;12:02:42.24;+01:58:36.5;Vir;2.55;1.58;86;13.14;;9.74;9.07;8.75;23.13;Sa;;;;;4046;;;2MASX J12024226+0158363,IRAS 12001+0215,MCG +00-31-022,PGC 038031,SDSS J120242.23+015836.5,SDSS J120242.24+015836.4,SDSS J120242.24+015836.5,SDSS J120242.34+015837.2,UGC 07021;;; -NGC4045A;G;12:02:42.69;+01:57:08.0;Vir;0.92;0.42;146;15.20;;12.22;11.54;11.26;23.83;S0;;;;;;;;2MASX J12024266+0157083,MCG +00-31-021,PGC 038033,SDSS J120242.68+015707.9,SDSS J120242.69+015707.9;;; -NGC4046;Dup;12:02:42.24;+01:58:36.5;Vir;;;;;;;;;;;;;;;4045;;;;;; -NGC4047;G;12:02:50.68;+48:38:10.3;UMa;1.53;1.17;100;12.80;;10.16;9.46;9.17;22.35;Sb;;;;;;;;2MASX J12025065+4838106,IRAS 12002+4854,MCG +08-22-058,PGC 038042,SDSS J120250.67+483810.3,SDSS J120250.68+483810.3,UGC 07025;;; -NGC4048;G;12:02:50.19;+18:00:56.1;Com;0.67;0.52;92;14.40;;11.92;11.28;10.94;22.44;S0;;;;;;;;2MASX J12025025+1800559,MCG +03-31-020,PGC 038040,SDSS J120250.18+180056.0,UGC 07023;;; -NGC4049;G;12:02:54.70;+18:45:09.0;Com;1.16;0.72;51;14.20;;12.83;12.27;11.98;22.75;Sm;;;;;;;;2MASX J12025425+1845049,MCG +03-31-021,PGC 038050,UGC 07027;;; -NGC4050;G;12:02:53.95;-16:22:25.0;Crv;3.43;2.14;89;12.00;;9.75;9.11;8.86;24.15;Sab;;;;;;;;2MASX J12025395-1622249,IRAS 12003-1605,MCG -03-31-016,PGC 038049;;; -NGC4051;G;12:03:09.61;+44:31:52.8;UMa;4.89;4.26;146;11.08;12.92;8.58;8.06;7.67;22.87;SABb;;;;;;;;2MASX J12030968+4431525,IRAS 12005+4448,MCG +08-22-059,PGC 038068,SDSS J120309.61+443152.6,UGC 07030;;; -NGC4052;OCl;12:02:05.19;-63:13:24.5;Cru;5.10;;;;8.80;;;;;;;;;;;;;MWSC 1991;;; -NGC4053;G;12:03:11.57;+19:43:43.8;Com;1.06;0.62;107;14.60;;11.04;10.29;9.97;22.99;Sab;;;;;;;;2MASX J12031157+1943434,MCG +03-31-024,PGC 038069,SDSS J120311.56+194343.7,SDSS J120311.57+194343.7,UGC 07029;;; -NGC4054;GTrpl;12:03:13.10;+57:53:40.0;UMa;1.00;;;;;;;;;;;;;;;;;MCG +10-17-131;;VV misprints R.A. as 11h44.3m.;Diameter of the group inferred by the author. -NGC4054 NED01;G;12:03:12.46;+57:53:36.4;UMa;0.65;0.43;91;14.60;;13.13;12.76;12.67;23.12;Sbc;;;;;;;;2MASX J12031243+5753363,MCG +10-17-131 NED01,PGC 038078,SDSS J120312.46+575336.4;;; -NGC4054 NED02;G;12:03:13.42;+57:53:53.0;UMa;0.43;0.19;167;16.73;;14.85;14.47;13.88;23.70;Sc;;;;;;;;2MASX J12031339+5753529,MCG +10-17-131 NED02,SDSS J120313.42+575353.0,SDSS J120313.42+575353.1;;;B-Mag taken from LEDA -NGC4054 NED03;G;12:03:13.83;+57:53:26.0;UMa;0.62;0.44;121;15.53;;12.90;12.19;11.99;23.44;S0;;;;;;;;2MASX J12031377+5753259,MCG +10-17-131 NED03,SDSS J120313.82+575325.9,SDSS J120313.82+575326.0,SDSS J120313.82+575326.3,SDSS J120313.83+575326.0;;;B-Mag taken from LEDA -NGC4055;G;12:04:01.48;+20:13:56.4;Com;0.92;0.79;1;14.40;;10.83;10.08;9.76;22.53;E;;;;;4061;;;2MASX J12040140+2013559,2MASX J12040147+2013489,MCG +04-29-006,PGC 038146,SDSS J120401.47+201356.3,SDSS J120401.48+201356.3,SDSS J120401.48+201356.4,UGC 07044;;; -NGC4056;G;12:03:57.77;+20:18:45.0;Com;0.63;0.53;133;16.38;;13.65;13.06;12.93;24.36;E;;;;;;;;2MASX J12035771+2018449,PGC 038140,SDSS J120357.76+201844.9,SDSS J120357.77+201845.0;;NGC identification is not certain.; -NGC4057;G;12:04:06.17;+20:14:06.3;Com;1.29;0.99;120;14.00;;10.64;9.96;9.69;23.01;E;;;;;4065;;;2MASX J12040616+2014059,MCG +04-29-007,PGC 038156,SDSS J120406.16+201406.2,SDSS J120406.17+201406.3,UGC 07050;;; -NGC4058;G;12:03:49.06;+03:32:53.6;Vir;1.39;0.69;167;14.00;;10.65;10.01;9.75;23.42;S0-a;;;;;;;;2MASX J12034906+0332535,MCG +01-31-017,PGC 038124,UGC 07036;;; -NGC4059;Dup;12:04:11.30;+20:24:35.4;Com;;;;;;;;;;;;;;;4070;;;;;; -NGC4060;G;12:04:01.00;+20:20:14.7;Com;0.55;0.35;88;15.60;;12.59;11.86;11.64;23.05;E;;;;;;;;2MASX J12040098+2020149,PGC 038151,SDSS J120400.98+202014.6,SDSS J120400.99+202014.7;;NGC identification is not certain.; -NGC4061;Dup;12:04:01.48;+20:13:56.4;Com;;;;;;;;;;;;;;;4055;;;;;; -NGC4062;G;12:04:03.83;+31:53:44.9;UMa;4.14;1.61;101;11.90;11.21;9.13;8.47;8.21;22.94;SABc;;;;;;;;2MASX J12040383+3153449,IRAS 12015+3210,MCG +05-29-004,PGC 038150,SDSS J120403.82+315344.8,SDSS J120403.83+315344.9,UGC 07045;;; -NGC4063;G;12:04:05.99;+01:50:49.1;Vir;0.92;0.40;8;15.00;;11.51;10.88;10.61;23.39;S0-a;;;;;;;;2MASX J12040596+0150495,PGC 038154,SDSS J120405.98+015049.1,SDSS J120405.99+015049.1;;; -NGC4064;G;12:04:11.16;+18:26:36.3;Com;3.22;1.31;151;12.50;;9.45;8.78;8.56;22.94;SBa;;;;;;;;2MASX J12041119+1826364,IRAS 12016+1843,MCG +03-31-033,PGC 038167,SDSS J120411.15+182636.3,UGC 07054;;; -NGC4065;Dup;12:04:06.17;+20:14:06.3;Com;;;;;;;;;;;;;;;4057;;;;;; -NGC4066;G;12:04:09.42;+20:20:52.6;Com;1.16;1.09;170;14.40;;10.78;10.07;9.81;23.21;E;;;;;;;;2MASX J12040938+2020520,MCG +04-29-008,PGC 038161,SDSS J120409.40+202052.5,SDSS J120409.41+202052.6,UGC 07051;;; -NGC4067;G;12:04:11.54;+10:51:15.8;Vir;1.13;0.82;38;13.20;;10.80;10.15;9.90;22.18;SBb;;;;;;;;2MASX J12041155+1051156,IRAS 12016+1107,MCG +02-31-019,PGC 038168,SDSS J120411.54+105115.8,UGC 07048;;; -NGC4068;G;12:04:00.78;+52:35:17.8;UMa;1.92;1.16;29;13.29;;;;;22.78;I;;;;;;0757;;MCG +09-20-079,PGC 038148,SDSS J120400.77+523517.7,UGC 07047;;; -NGC4069;G;12:04:06.04;+20:19:25.6;Com;0.49;0.35;25;;;13.41;12.73;12.60;23.57;E;;;;;;;;2MASX J12040603+2019259,PGC 038166,SDSS J120406.03+201925.5,SDSS J120406.04+201925.6;;NGC identification is not certain.; -NGC4070;G;12:04:11.30;+20:24:35.4;Com;1.24;0.99;46;14.30;;10.73;10.01;9.75;23.33;E;;;;;4059;;;2MASX J12041129+2024351,MCG +04-29-009,PGC 038169,SDSS J120411.29+202435.4,UGC 07052;;; -NGC4071;PN;12:04:15.77;-67:18:36.4;Mus;1.05;;;12.90;13.00;;;;;;;18.20;19.20;;;;;ESO 094-012,IRAS 12016-6701,PN G298.3-04.8;;; -NGC4072;G;12:04:13.84;+20:12:35.0;Com;0.44;0.22;29;15.60;;12.33;11.48;11.34;22.62;S0;;;;;;;;2MASX J12041380+2012351,PGC 038176,SDSS J120413.83+201234.9,SDSS J120413.84+201234.9;;; -NGC4073;G;12:04:27.07;+01:53:45.5;Vir;2.09;1.70;99;13.80;13.21;9.46;8.71;8.49;23.00;E;;;;;;;;2MASX J12042705+0153456,MCG +00-31-029,PGC 038201,SDSS J120427.06+015345.4,SDSS J120427.07+015345.5,UGC 07060;;; -NGC4074;G;12:04:29.68;+20:18:58.4;Com;0.55;0.31;110;15.43;14.44;11.76;10.98;10.57;22.57;S0-a;;;;;;;;2MASX J12042964+2018581,MCG +04-29-011,PGC 038207,SDSS J120429.66+201858.6,SDSS J120429.67+201858.6;;; -NGC4075;G;12:04:37.83;+02:04:21.1;Vir;1.21;0.66;110;14.44;;11.05;10.33;10.04;23.78;S0-a;;;;;;;;2MASX J12043780+0204216,MCG +00-31-032,PGC 038216,SDSS J120437.82+020421.0;;; -NGC4076;G;12:04:32.52;+20:12:17.8;Com;0.87;0.79;78;14.30;;11.31;10.53;10.34;22.60;Sb;;;;;;;;2MASX J12043249+2012181,IRAS 12019+2029,MCG +03-31-034,PGC 038209,SDSS J120432.51+201217.7,SDSS J120432.51+201217.8,SDSS J120432.52+201217.8,UGC 07061;;; -NGC4077;G;12:04:38.05;+01:47:15.8;Vir;1.26;0.86;19;14.50;;10.81;10.10;9.79;23.50;S0;;;;;4140;;;2MASX J12043806+0147156,MCG +00-31-031,PGC 038218,SDSS J120438.05+014715.7,SDSS J120438.06+014715.8,UGC 07063;;The APM image includes two superposed stars.; -NGC4078;G;12:04:47.64;+10:35:44.1;Vir;1.17;0.58;17;13.90;;10.88;10.18;9.93;22.82;S0;;;;;4107;;;2MASX J12044762+1035439,MCG +02-31-023,PGC 038238,UGC 07066;;; -NGC4079;G;12:04:49.85;-02:22:56.6;Vir;1.73;1.18;135;14.00;;10.48;9.82;9.54;23.38;SABb;;;;;;;;2MASX J12044984-0222571,IRAS 12022-0206,MCG +00-31-034,PGC 038240,SDSS J120449.84-022256.5,UGC 07067;;; -NGC4080;G;12:04:51.83;+26:59:33.1;Com;1.23;0.58;121;14.00;;11.34;10.80;10.79;22.52;SBm;;;;;;;;2MASX J12045180+2659334,MCG +05-29-006,PGC 038244,SDSS J120451.82+265933.0,SDSS J120451.83+265933.1,UGC 07068;;; -NGC4081;G;12:04:33.91;+64:26:12.3;UMa;1.43;0.63;130;13.60;;11.05;10.32;10.05;22.65;Sa;;;;;4125A;;;2MASX J12043393+6426124,IRAS 12020+6442,MCG +11-15-015,PGC 038212,UGC 07062;;; -NGC4082;G;12:05:11.45;+10:40:14.2;Vir;0.78;0.35;70;15.50;;12.04;11.35;10.92;22.76;Sb;;;;;;;;2MASX J12051141+1040142,MCG +02-31-026,PGC 038274,SDSS J120511.44+104014.2,SDSS J120511.45+104014.2;;; -NGC4083;G;12:05:14.05;+10:36:47.6;Vir;0.88;0.46;35;15.10;;11.90;11.25;11.08;23.57;S0;;;;;;;;2MASX J12051406+1036482,MCG +02-31-024,PGC 038275,SDSS J120514.04+103647.6,SDSS J120514.05+103647.6;;; -NGC4084;G;12:05:15.26;+21:12:52.0;Com;1.08;1.07;120;14.90;;11.32;10.59;10.36;23.63;E;;;;;;;;2MASX J12051526+2112518,MCG +04-29-014,PGC 038272,SDSS J120515.25+211251.9;;; -NGC4085;G;12:05:22.71;+50:21:10.6;UMa;2.22;0.57;78;13.93;12.83;10.14;9.45;9.12;21.67;SABc;;;;;;;;2MASX J12052270+5021098,IRAS 12028+5037,MCG +09-20-086,PGC 038283,SDSS J120522.71+502110.6,UGC 07075;;; -NGC4086;G;12:05:29.37;+20:14:48.3;Com;1.17;0.87;85;15.10;;11.60;10.90;10.57;24.03;S0;;;;;;;;2MASX J12052935+2014488,MCG +04-29-016,PGC 038290,SDSS J120529.36+201448.2,SDSS J120529.37+201448.2,UGC 07076;;; -NGC4087;G;12:05:35.33;-26:31:21.5;Hya;2.00;1.69;40;13.11;;9.85;9.10;8.92;23.41;E-S0;;;;;;;;2MASX J12053534-2631217,ESO 505-010,ESO-LV 505-0100,MCG -04-29-005,PGC 038303;;; -NGC4088;G;12:05:34.19;+50:32:20.5;UMa;7.01;2.65;44;11.20;;8.48;7.77;7.48;23.45;SABc;;;;;;;;2MASX J12053418+5032205,IRAS 12030+5049,MCG +09-20-089,PGC 038302,SDSS J120534.21+503221.5,UGC 07081;;; -NGC4089;G;12:05:37.43;+20:33:20.6;Com;0.86;0.84;75;14.90;;11.38;10.67;10.40;23.16;E;;;;;;;;2MASX J12053741+2033207,MCG +04-29-017,PGC 038298,SDSS J120537.43+203320.5,SDSS J120537.43+203320.6;;; -NGC4090;G;12:05:27.92;+20:18:31.5;Com;1.12;0.50;38;15.00;;11.62;10.89;10.60;23.24;Sab;;;;;;;;2MASX J12052793+2018318,IRAS 12028+2035,MCG +04-29-015,PGC 038288,SDSS J120527.91+201831.4,SDSS J120527.91+201831.5,SDSS J120527.92+201831.5,UGC 07077;;"This is not IC 2997; that is probably nonexistent."; -NGC4091;G;12:05:40.09;+20:33:20.6;Com;0.94;0.24;42;15.20;;11.62;10.84;10.59;22.60;Sb;;;;;;;;2MASX J12054008+2033201,MCG +04-29-019,PGC 038308,SDSS J120540.08+203320.6,SDSS J120540.09+203320.6,UGC 07083;;; -NGC4092;G;12:05:50.11;+20:28:37.2;Com;1.01;0.99;40;14.40;;11.44;10.79;10.51;22.98;Sab;;;;;;;;2MASX J12055011+2028371,IRAS 12032+2045,MCG +04-29-020,PGC 038338,SDSS J120550.07+202837.1,SDSS J120550.07+202837.2,UGC 07087;;; -NGC4093;G;12:05:51.47;+20:31:19.1;Com;0.75;0.61;50;15.30;;11.86;11.21;10.94;23.33;E;;;;;;;;2MASX J12055147+2031191,MCG +04-29-021,PGC 038323,SDSS J120551.46+203119.0,SDSS J120551.47+203119.1;;; -NGC4094;G;12:05:53.96;-14:31:35.1;Crv;4.40;1.51;62;12.10;;10.36;9.69;9.46;23.88;Sc;;;;;;;;2MASX J12055396-1431352,IRAS 12033-1414,MCG -02-31-016,PGC 038346,UGCA 269;;; -NGC4095;G;12:05:54.22;+20:34:21.1;Com;1.36;1.07;149;14.60;;11.07;10.34;10.14;23.84;E;;;;;;;;2MASX J12055425+2034211,MCG +04-29-022,PGC 038324,SDSS J120554.21+203421.1,SDSS J120554.22+203421.0,SDSS J120554.22+203421.1;;; -NGC4096;G;12:06:01.13;+47:28:42.4;UMa;5.65;1.43;20;11.61;;8.77;8.08;7.81;22.48;SABc;;;;;;;;2MASX J12060116+4728420,IRAS 12034+4745,MCG +08-22-067,PGC 038361,SDSS J120601.13+472842.3,SDSS J120601.13+472842.4,UGC 07090;;; -NGC4097;G;12:06:02.51;+36:51:49.2;CVn;1.22;0.92;94;14.60;;11.19;10.59;10.30;23.66;S0;;;;;;;;2MASX J12060247+3651488,MCG +06-27-004,PGC 038363,SDSS J120602.51+365149.2,UGC 07092;;; -NGC4098;GPair;12:06:03.90;+20:36:22.0;Com;1.20;;;;;;;;;;;;;;4099;;;MCG +04-29-023,UGC 07091;;;Diameter of the group inferred by the author. -NGC4098 NED01;G;12:06:03.58;+20:36:29.1;Com;1.32;0.85;156;14.50;;10.89;10.17;9.94;23.37;Sab;;;;;;;;2MASX J12060358+2036290,MCG +04-29-023 NED01,PGC 038365,SDSS J120603.58+203629.0,SDSS J120603.58+203629.1,SDSS J120603.59+203629.1,UGC 07091 NED01;;; -NGC4098 NED02;G;12:06:04.22;+20:36:14.1;Com;1.23;0.79;161;14.64;;;;;23.99;Sb;;;;;;;;MCG +04-29-023 NED02,SDSSJ120603.75+203620.0,SDSSJ120603.75+203620.1;;;B-Mag taken from LEDA -NGC4099;Dup;12:06:03.90;+20:36:22.0;Com;;;;;;;;;;;;;;;4098;;;;;; -NGC4100;G;12:06:08.45;+49:34:57.7;UMa;4.56;1.30;167;11.70;;8.97;8.28;8.03;22.79;Sbc;;;;;;;;2MASX J12060860+4934563,IRAS 12036+4951,MCG +08-22-068,PGC 038370,SDSS J120608.45+493457.6,UGC 07095;;; -NGC4101;G;12:06:10.57;+25:33:25.2;Com;1.18;0.74;59;14.70;;11.29;10.57;10.30;23.48;S0-a;;;;;;;;2MASX J12061058+2533252,MCG +04-29-025,PGC 038373,SDSS J120610.56+253325.2,UGC 07093;;; -NGC4102;G;12:06:22.99;+52:42:39.9;UMa;2.94;1.67;37;11.80;;8.76;8.11;7.72;22.76;SABb;;;;;;;;2MASX J12062311+5242394,IRAS 12038+5259,MCG +09-20-094,PGC 038392,SDSS J120623.00+524239.7,SDSS J120623.74+524237.9,UGC 07096;;; -NGC4103;OCl;12:06:39.57;-61:15:00.3;Cru;7.80;;;;7.40;;;;;;;;;;;;;MWSC 1997;;; -NGC4104;G;12:06:38.97;+28:10:27.1;Com;2.50;1.09;34;13.70;13.58;;;;23.82;S0;;;;;;;;IRAS 12040+2827,MCG +05-29-016,PGC 038407,SDSS J120638.92+281026.8,SDSS J120638.97+281028.0,SDSS J120638.97+281028.1,UGC 07099;;; -NGC4105;G;12:06:40.77;-29:45:36.8;Hya;4.33;3.41;136;11.35;12.52;8.37;7.84;7.52;23.61;E;;;;;;;;2MASX J12064076-2945366,ESO 440-054,ESO-LV 440-0540,MCG -05-29-013,PGC 038411;;; -NGC4106;G;12:06:44.80;-29:46:05.9;Hya;4.14;3.33;94;11.61;11.35;;;;24.09;S0-a;;;;;;;;ESO 440-056,ESO-LV 440-0560,MCG -05-29-014,PGC 038417;;; -NGC4107;Dup;12:04:47.64;+10:35:44.1;Vir;;;;;;;;;;;;;;;4078;;;;;; -NGC4108;G;12:06:44.57;+67:09:47.1;Dra;1.63;1.33;105;13.04;;10.72;10.08;9.81;22.67;Sc;;;;;;;;2MASX J12064460+6709475,IRAS 12042+6726,MCG +11-15-023,PGC 038423,SDSS J120644.57+670947.1,TYC 4160-568-1,UGC 07101;;; -NGC4108A;G;12:05:49.66;+67:15:07.5;Dra;1.28;0.56;12;14.63;;12.64;12.18;12.23;23.29;Sbc;;;;;;;;2MASX J12054972+6715069,MCG +11-15-021,PGC 038343,SDSS J120549.65+671507.4,SDSS J120549.65+671507.5,UGC 07088;;; -NGC4108B;G;12:07:11.62;+67:14:06.6;Dra;1.33;1.02;122;14.29;;13.48;12.93;12.87;23.79;Scd;;;;;;;;2MASX J12071143+6714066,IRAS 12046+6730,MCG +11-15-025,PGC 038461,SDSS J120711.61+671406.5,SDSS J120711.61+671406.6,SDSS J120711.62+671406.5,SDSS J120711.62+671406.6,UGC 07106;;; -NGC4109;G;12:06:51.12;+42:59:44.3;CVn;0.70;0.53;146;14.84;;12.10;11.42;11.13;22.83;Sa;;;;;;;;2MASX J12065107+4259441,MCG +07-25-024,PGC 038427,SDSS J120651.11+425944.3,SDSS J120651.12+425944.3;;; -NGC4110;G;12:07:03.45;+18:31:54.2;Com;1.31;0.65;128;14.70;;11.49;10.82;10.50;23.26;SBb;;;;;;;;2MASX J12070346+1831541,MCG +03-31-040,PGC 038441,SDSS J120703.44+183154.3,UGC 07102;;; -NGC4111;G;12:07:03.13;+43:03:56.6;CVn;1.78;0.64;152;11.63;10.74;8.48;7.77;7.55;21.57;S0-a;;;;;;;;2MASX J12070312+4303554,MCG +07-25-026,PGC 038440,UGC 07103;;; -NGC4112;G;12:07:09.47;-40:12:29.4;Cen;1.70;0.99;5;12.83;;10.18;9.49;9.20;22.46;Sb;;;;;;;;2MASX J12070945-4012293,ESO 321-006,ESO-LV 321-0060,IRAS 12045-3955,MCG -07-25-003,PGC 038452;;; -NGC4113;G;12:07:08.48;+32:59:45.2;Com;0.81;0.47;62;14.80;;12.02;11.27;11.17;23.06;SBa;;;;;4122;;;2MASX J12070849+3259453,IRAS 12045+3316,MCG +06-27-011,PGC 038451,SDSS J120708.47+325945.1,SDSS J120708.48+325945.2;;; -NGC4114;G;12:07:12.29;-14:11:07.7;Crv;2.16;1.07;135;13.00;;10.38;9.69;9.42;24.01;SABa;;;;;;;;2MASX J12071225-1411074,MCG -02-31-018,PGC 038460;;; -NGC4115;*;12:07:09.55;+14:24:23.6;Com;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.;NGC identification is not certain. -NGC4116;G;12:07:37.15;+02:41:25.8;Vir;2.57;1.49;152;12.41;11.97;11.04;10.41;10.27;22.79;SBcd;;;;;;;;2MASX J12073681+0241319,2MASX J12073715+0241255,IRAS 12050+0258,MCG +01-31-022,PGC 038492,SDSS J120736.81+024132.2,UGC 07111;;Host galaxy of UM 476.; -NGC4117;G;12:07:46.11;+43:07:34.9;CVn;1.58;0.63;20;14.04;;10.93;10.34;10.05;23.72;S0;;;;;;;;2MASX J12074608+4307352,MCG +07-25-027,PGC 038503,SDSS J120746.11+430734.8,SDSS J120746.11+430734.9,UGC 07112;;; -NGC4118;G;12:07:52.87;+43:06:39.8;CVn;0.69;0.38;148;15.70;;14.18;14.25;13.56;23.77;S0-a;;;;;;;;2MASX J12075284+4306402,MCG +07-25-028,PGC 038507,SDSS J120752.86+430639.7,SDSS J120752.87+430639.8,UGC 07112 NOTES01;;; -NGC4119;G;12:08:09.62;+10:22:44.0;Vir;1.58;1.10;120;12.70;;9.37;8.72;8.49;22.04;S0-a;;;;;4124;3011;;2MASX J12080964+1022433,IRAS 12055+1039,MCG +02-31-036,PGC 038527,SDSS J120809.61+102243.9,SDSS J120809.61+102244.0,SDSS J120809.62+102244.0,UGC 07117;;Identification as NGC 4119 is not certain.; -NGC4120;G;12:08:31.02;+69:32:41.4;Dra;1.57;0.38;167;14.10;;12.13;11.43;11.06;22.81;Sc;;;;;;;;2MASX J12083100+6932414,IRAS 12060+6949,MCG +12-12-001,PGC 038553,UGC 07121;;; -NGC4121;G;12:07:56.63;+65:06:50.2;Dra;0.52;0.46;65;14.10;;11.54;10.87;10.67;21.33;E;;;;;;;;2MASX J12075667+6506503,MCG +11-15-026,PGC 038508,SDSS J120756.63+650650.2,SDSS J120756.63+650650.3,SDSS J120756.63+650650.4;;; -NGC4122;Dup;12:07:08.48;+32:59:45.2;Com;;;;;;;;;;;;;;;4113;;;;;; -NGC4123;G;12:08:11.11;+02:52:41.8;Vir;3.18;2.32;125;13.10;;9.45;8.81;8.79;22.95;Sc;;;;;;;;2MASX J12081108+0252419,IRAS 12056+0309,MCG +01-31-023,PGC 038531,SDSS J120811.10+025241.8,SDSS J120811.11+025241.8,UGC 07116;;; -NGC4124;Dup;12:08:09.62;+10:22:44.0;Vir;;;;;;;;;;;;;;;4119;;;;;; -NGC4125;G;12:08:06.02;+65:10:26.9;Dra;5.87;4.58;95;10.65;9.72;7.77;7.10;6.86;23.34;E;;;;;;;;2MASX J12080601+6510268,IRAS 12055+6527,MCG +11-15-027,PGC 038524,UGC 07118;;; -NGC4126;G;12:08:37.44;+16:08:34.0;Com;0.81;0.61;4;14.60;;11.47;10.76;10.53;22.84;S0;;;;;;;;2MASX J12083747+1608341,MCG +03-31-047,PGC 038565,SDSS J120837.43+160833.9,SDSS J120837.44+160833.9,SDSS J120837.44+160834.0,UGC 07123;;; -NGC4127;G;12:08:26.36;+76:48:14.5;Cam;1.51;0.82;134;13.50;;10.89;10.27;10.04;22.68;Sc;;;;;;;;2MASX J12082637+7648144,IRAS 12060+7705,MCG +13-09-012,PGC 038550,UGC 07122;;; -NGC4128;G;12:08:32.33;+68:46:03.4;Dra;2.21;0.67;62;12.70;;9.68;9.00;8.75;23.30;S0;;;;;;;;2MASX J12083235+6846034,MCG +12-12-002a,PGC 038555,UGC 07120;;; -NGC4129;G;12:08:53.22;-09:02:11.4;Vir;2.58;0.71;94;13.30;;10.60;9.82;9.62;23.11;SBab;;;;;4130;;;2MASX J12085319-0902112,IRAS 12063-0845,MCG -01-31-006,PGC 038580;;; -NGC4130;Dup;12:08:53.22;-09:02:11.4;Vir;;;;;;;;;;;;;;;4129;;;;;; -NGC4131;G;12:08:47.29;+29:18:17.2;Com;1.36;0.59;69;14.10;13.27;11.06;10.40;10.21;23.22;S0-a;;;;;;;;2MASX J12084728+2918172,MCG +05-29-019,PGC 038573,SDSS J120847.28+291817.1,SDSS J120847.28+291817.2,SDSS J120847.29+291817.2,UGC 07126;;; -NGC4132;G;12:09:01.40;+29:15:00.4;Com;1.14;0.41;21;14.60;13.99;11.82;11.14;10.81;23.18;Sab;;;;;;;;2MASX J12090142+2915003,IRAS 12064+2931,MCG +05-29-020,PGC 038593,SDSS J120901.40+291500.3,SDSS J120901.41+291500.4;;; -NGC4133;G;12:08:49.96;+74:54:15.5;Dra;1.66;1.09;132;13.10;;10.32;9.61;9.35;22.65;SABb;;;;;;;;2MASX J12084992+7454154,IRAS 12063+7510,MCG +13-09-013,PGC 038578,UGC 07127;;; -NGC4134;G;12:09:10.01;+29:10:36.9;Com;1.85;0.79;149;13.80;13.10;11.04;10.42;10.15;23.26;Sb;;;;;;;;2MASX J12090997+2910363,IRAS 12066+2927,MCG +05-29-023,PGC 038605,SDSS J120910.00+291036.8,SDSS J120910.01+291036.8,SDSS J120910.01+291036.9,TYC 1988-1531-1,UGC 07130;;; -NGC4135;G;12:09:08.81;+44:00:11.5;CVn;0.76;0.54;96;14.79;14.02;12.13;11.44;11.03;22.68;SABb;;;;;;;;2MASX J12090882+4400112,MCG +07-25-032,PGC 038601,SDSS J120908.80+440011.4,SDSS J120908.80+440011.5,SDSS J120908.81+440011.5;;; -NGC4136;G;12:09:17.69;+29:55:39.4;Com;2.34;2.18;30;11.69;;10.32;9.61;9.31;22.59;Sc;;;;;;;;2MASX J12091770+2955393,IRAS 12067+3012,MCG +05-29-025,PGC 038618,SDSS J120917.70+295539.4,UGC 07134;;; -NGC4137;G;12:09:17.51;+44:05:24.6;CVn;0.79;0.52;175;14.92;14.34;12.70;12.25;11.72;22.99;Sc;;;;;;;;2MASX J12091745+4405242,MCG +07-25-033,PGC 038619,SDSS J120917.50+440524.6,SDSS J120917.51+440524.6,UGC 07135 NED02;;; -NGC4138;G;12:09:29.78;+43:41:07.1;CVn;2.92;1.64;150;12.29;11.32;9.12;8.42;8.20;23.30;S0-a;;;;;;;;2MASX J12092978+4341071,MCG +07-25-035,PGC 038643,UGC 07139;;"Bright foreground star 4"" from nucleus."; -NGC4139;G;12:04:34.03;+01:48:05.8;Vir;1.20;0.48;159;14.80;;11.51;10.90;10.62;23.87;S0;;;;;;2989;;2MASX J12043399+0148056,MCG +00-31-030,PGC 038213,SDSS J120434.02+014805.7,SDSS J120434.03+014805.7,SDSS J120434.03+014805.8;;; -NGC4140;Dup;12:04:38.05;+01:47:15.8;Vir;;;;;;;;;;;;;;;4077;;;;;; -NGC4141;G;12:09:47.32;+58:50:57.1;UMa;1.18;0.75;70;14.50;;;;;23.49;Sc;;;;;;;;MCG +10-17-152,PGC 038669,SDSS J120947.31+585057.0,SDSS J120947.32+585057.1,UGC 07147;;; -NGC4142;G;12:09:30.19;+53:06:17.8;UMa;1.76;0.91;174;14.30;;;;;23.31;SBcd;;;;;;;;MCG +09-20-102,PGC 038645,UGC 07140;;; -NGC4143;G;12:09:36.06;+42:32:03.0;CVn;2.73;1.68;144;13.04;12.08;8.80;8.10;7.85;22.72;S0;;;;;;;;2MASX J12093608+4232031,MCG +07-25-036,PGC 038654,SDSS J120936.06+423203.0,UGC 07142;;; -NGC4144;G;12:09:58.60;+46:27:25.8;UMa;5.24;1.00;103;12.17;;10.12;9.59;9.39;23.01;SABc;;;;;;;;2MASX J12095860+4627258,IRAS 12074+4644,MCG +08-22-077,PGC 038688,SDSS J120958.41+462726.6,UGC 07151;;; -NGC4145;G;12:10:01.52;+39:53:01.9;CVn;4.62;2.11;100;12.20;;9.47;8.87;8.48;23.19;Scd;;;;;;;;2MASX J12100152+3953019,MCG +07-25-040,PGC 038693,UGC 07154;;; -NGC4146;G;12:10:18.26;+26:25:50.7;Com;1.29;1.17;75;13.80;;10.94;10.29;9.94;23.23;Sab;;;;;;;;2MASX J12101822+2625508,MCG +05-29-028,PGC 038721,SDSS J121018.25+262550.6,SDSS J121018.26+262550.7,UGC 07163;;; -NGC4147;GCl;12:10:06.17;+18:32:31.7;Com;2.40;;;11.45;10.74;9.82;9.29;9.23;;;;;;;4153;;;2MASX J12100614+1832317,MWSC 2004;;; -NGC4148;G;12:10:07.97;+35:52:39.4;CVn;1.63;1.07;163;14.60;;11.03;10.35;10.08;24.14;S0-a;;;;;;;;2MASX J12100796+3552394,MCG +06-27-018,PGC 038704,SDSS J121007.96+355239.3,SDSS J121007.96+355239.4,SDSS J121007.97+355239.4,SDSS J121007.98+355239.3,UGC 07158;;; -NGC4149;G;12:10:32.84;+58:18:14.9;UMa;1.37;0.27;86;13.90;;10.99;10.13;9.80;22.24;SABb;;;;;4154;;;2MASX J12103285+5818137,IRAS 12080+5834,MCG +10-17-155,PGC 038741,SDSS J121032.82+581815.1,SDSS J121032.83+581814.9,SDSS J121032.84+581814.8,UGC 07167;;; -NGC4150;G;12:10:33.65;+30:24:05.5;Com;1.99;1.33;148;12.44;11.64;9.92;9.25;8.99;22.70;S0;;;;;;;;2MASX J12103365+3024053,IRAS 12080+3040,MCG +05-29-029,PGC 038742,UGC 07165;;; -NGC4151;G;12:10:32.58;+39:24:20.6;CVn;2.88;2.21;50;12.18;11.48;8.50;7.79;7.38;22.23;Sab;;;;;;;;2MASX J12103265+3924207,MCG +07-25-044,PGC 038739,SDSS J121032.57+392421.1,TYC 3017-939-1,UGC 07166;;; -NGC4152;G;12:10:37.50;+16:01:58.5;Com;1.36;0.89;138;14.00;13.35;10.54;9.88;9.63;21.91;SABc;;;;;;;;2MASX J12103751+1601585,IRAS 12080+1618,MCG +03-31-052,PGC 038749,SDSS J121037.50+160158.5,UGC 07169;;; -NGC4153;Dup;12:10:06.17;+18:32:31.7;Com;;;;;;;;;;;;;;;4147;;;;;; -NGC4154;Dup;12:10:32.84;+58:18:14.9;UMa;;;;;;;;;;;;;;;4149;;;;;; -NGC4155;G;12:10:45.69;+19:02:27.0;Com;1.24;1.05;76;14.70;;10.99;10.28;10.00;23.68;E;;;;;;;;2MASX J12104567+1902267,MCG +03-31-058,PGC 038761,SDSS J121045.68+190227.0,UGC 07172;;; -NGC4156;G;12:10:49.61;+39:28:21.8;CVn;1.11;0.95;71;15.01;14.32;11.00;10.35;10.06;22.83;Sb;;;;;;;;2MASX J12104958+3928223,MCG +07-25-045,PGC 038773,SDSS J121049.60+392822.1,SDSS J121049.61+392822.1,UGC 07173;;; -NGC4157;G;12:11:04.37;+50:29:04.8;CVn;6.22;1.14;65;12.15;11.35;8.56;7.59;7.36;23.65;SABb;;;;;;;;2MASX J12110436+5029048,IRAS 12085+5045,MCG +09-20-106,PGC 038795,SDSS J121104.35+502904.1,UGC 07183;;; -NGC4158;G;12:11:10.17;+20:10:32.4;Com;1.45;1.14;77;13.10;;10.69;10.03;9.75;22.65;SABb;;;;;;;;2MASX J12111016+2010327,IRAS 12086+2027,MCG +03-31-060,PGC 038802,SDSS J121110.16+201032.4,UGC 07182;;; -NGC4159;G;12:10:53.62;+76:07:33.1;Dra;1.36;0.55;34;14.30;;12.16;11.42;11.09;22.92;Scd;;;;;;;;2MASX J12105363+7607329,IRAS 12085+7624,MCG +13-09-015,PGC 038777,UGC 07174;;; -NGC4160;**;12:12:01.74;+43:44:08.1;CVn;;;;;;;;;;;;;;;;;;;;Identification as NGC 4160 is uncertain.; -NGC4161;G;12:11:33.46;+57:44:15.0;UMa;1.06;0.68;51;13.70;;11.00;10.30;10.16;22.42;Sbc;;;;;;;;2MASX J12113350+5744147,IRAS 12090+5800,MCG +10-18-002,PGC 038834,SDSS J121133.45+574414.9,SDSS J121133.45+574415.1,SDSS J121133.46+574415.0,UGC 07191;;; -NGC4162;G;12:11:52.47;+24:07:25.2;Com;2.28;1.37;173;12.60;;10.29;9.62;9.37;22.80;Sbc;;;;;;;;2MASX J12115246+2407252,IRAS 12093+2423,MCG +04-29-046,PGC 038851,SDSS J121152.49+240724.9,UGC 07193;;; -NGC4163;G;12:12:09.16;+36:10:09.1;CVn;1.67;1.12;8;13.70;13.20;;;;23.20;I;;;;;4167;;;MCG +06-27-026,PGC 038881,UGC 07199;;; -NGC4164;G;12:12:05.46;+13:12:20.3;Vir;0.71;0.46;114;15.70;;12.47;11.94;11.52;23.50;E;;;;;;;;PGC 038877,SDSS J121205.45+131220.2,SDSS J121205.45+131220.3;;; -NGC4165;G;12:12:11.80;+13:14:47.5;Vir;1.24;0.67;161;14.38;13.54;11.03;11.05;10.50;23.15;SABa;;;;;;3035;;2MASX J12121181+1314472,MCG +02-31-045 NED01,PGC 038885,SDSS J121211.79+131447.4,SDSS J121211.80+131447.5,UGC 07201;;; -NGC4166;G;12:12:09.56;+17:45:25.3;Com;1.05;0.52;34;14.30;;10.85;10.16;9.90;23.01;S0;;;;;;;;2MASX J12120956+1745248,MCG +03-31-068,PGC 038882,SDSS J121209.56+174525.2,UGC 07198;;; -NGC4167;Dup;12:12:09.16;+36:10:09.1;CVn;;;;;;;;;;;;;;;4163;;;;;; -NGC4168;G;12:12:17.27;+13:12:18.7;Vir;2.92;2.28;121;12.11;11.18;9.36;8.69;8.44;23.21;E;;;;;;;;2MASX J12121723+1312192,MCG +02-31-046,PGC 038890,SDSS J121217.26+131218.6,SDSS J121217.26+131218.7,SDSS J121217.27+131218.7,UGC 07203;;The 2MASS peak is 6 arcsec northwest of the optical nucleus.; -NGC4169;G;12:12:18.78;+29:10:45.9;Com;1.64;0.81;151;12.90;12.34;10.06;9.39;9.08;22.93;S0;;;;;;;;2MASX J12121881+2910454,MCG +05-29-032,PGC 038892,SDSS J121218.78+291045.8,UGC 07202;;; -NGC4170;*;12:12:13.24;+29:10:00.5;Com;;;;;;;;;;;;;;;;;;SDSS J121213.24+291000.4;;Identification as NGC 4170 is uncertain.;Identification as NGC 4170 is uncertain. -NGC4171;*;12:12:38.39;+29:13:28.2;Com;;;;;;;;;;;;;;;;;;;;Identification as NGC 4171 is uncertain.;Identification as NGC 4171 is uncertain. -NGC4172;G;12:12:14.89;+56:10:39.2;UMa;1.23;1.16;0;14.40;;10.83;10.11;9.87;23.38;Sab;;;;;;;;2MASX J12121490+5610386,MCG +09-20-109,PGC 038887,SDSS J121214.88+561039.1,SDSS J121214.89+561039.1,SDSS J121214.89+561039.2,SDSS J121214.89+561039.3,UGC 07205;;; -NGC4173;G;12:12:21.46;+29:12:25.4;Com;2.34;0.52;134;13.73;13.34;;;;22.90;SBcd;;;;;;;;MCG +05-29-033,PGC 038897,SDSS J121221.45+291225.3,UGC 07204;;; -NGC4174;G;12:12:26.89;+29:08:57.2;Com;0.91;0.41;50;14.30;13.64;11.53;10.86;10.59;22.70;S0-a;;;;;;;;2MASX J12122691+2908574,MCG +05-29-034,PGC 038906,SDSS J121226.88+290857.1,SDSS J121226.89+290857.2,UGC 07206;;; -NGC4175;G;12:12:31.05;+29:10:06.4;Com;1.61;0.33;130;14.20;13.45;10.78;9.98;9.60;22.91;SBb;;;;;;;;2MASX J12123108+2910069,IRAS 12099+2926,MCG +05-29-036,PGC 038912,UGC 07211;;; -NGC4176;G;12:12:36.83;-09:09:37.7;Vir;0.70;0.46;76;15.06;;12.66;12.17;11.75;23.01;Sb;;;;;;;;2MASX J12123676-0909309,PGC 038928;;; -NGC4177;G;12:12:41.26;-14:00:52.4;Crv;1.82;1.27;61;13.00;;10.42;9.78;9.59;23.01;Sc;;;;;;;;2MASX J12124127-1400523,IRAS 12101-1344,MCG -02-31-021,PGC 038937;;; -NGC4178;G;12:12:46.45;+10:51:57.5;Vir;4.66;1.24;32;12.90;;9.89;9.37;9.58;22.87;Scd;;;;;;3042;;2MASX J12124644+1051575,IRAS 12102+1108,MCG +02-31-050,PGC 038943,SDSS J121246.24+105152.1,UGC 07215;;; -NGC4179;G;12:12:52.11;+01:17:58.9;Vir;4.48;1.22;146;12.80;;8.83;8.19;7.92;23.76;S0;;;;;;;;2MASX J12125210+0117588,MCG +00-31-038,PGC 038950,SDSS J121252.11+011758.8,UGC 07214;;; -NGC4180;G;12:13:03.05;+07:02:20.2;Vir;1.45;0.49;21;13.20;;10.15;9.44;9.11;22.13;SABa;;;;;4182;;;2MASX J12130305+0702196,IRAS 12104+0719,MCG +01-31-025,PGC 038964,SDSS J121303.04+070220.1,UGC 07219;;Identification as NGC 4182 is not certain.; -NGC4181;G;12:12:48.99;+52:54:11.9;UMa;1.12;0.77;8;15.20;;11.80;11.05;10.91;23.92;E;;;;;;;;2MASX J12124899+5254122,MCG +09-20-111,PGC 038938,SDSS J121248.98+525411.8,SDSS J121248.98+525412.0,SDSS J121248.99+525411.8;;; -NGC4182;Dup;12:13:03.05;+07:02:20.2;Vir;;;;;;;;;;;;;;;4180;;;;;; -NGC4183;G;12:13:16.88;+43:41:54.9;CVn;4.29;0.63;166;13.50;;10.67;10.13;9.85;23.18;Sc;;;;;;;;2MASX J12131686+4341537,MCG +07-25-051,PGC 038988,SDSS J121316.88+434153.3,SDSS J121316.88+434154.9,UGC 07222;;; -NGC4184;OCl;12:13:32.59;-62:43:17.1;Cru;;;;;;;;;;;;;;;;;;MWSC 2007;;; -NGC4185;G;12:13:22.20;+28:30:39.5;Com;1.85;1.26;165;13.50;;10.36;9.78;9.47;23.24;SBbc;;;;;;;;2MASX J12132220+2830393,MCG +05-29-038,PGC 038995,SDSS J121322.19+283039.4,SDSS J121322.19+283039.5,SDSS J121322.20+283039.5,UGC 07225;;; -NGC4186;G;12:14:06.53;+14:43:32.9;Com;1.02;0.79;57;14.65;;11.64;10.96;10.56;23.14;Sab;;;;;;;;2MASX J12140651+1443324,MCG +03-31-081,PGC 039057,SDSS J121406.52+144332.8,SDSS J121406.52+144332.9,SDSS J121406.53+144332.9,UGC 07240;;; -NGC4187;G;12:13:29.28;+50:44:29.4;CVn;1.64;1.05;147;14.18;;10.79;10.09;9.77;24.06;E;;;;;;;;2MASX J12132932+5044292,MCG +09-20-117,PGC 039004,SDSS J121329.27+504429.3,SDSS J121329.27+504429.4,SDSS J121329.27+504429.7,SDSS J121329.28+504429.3,SDSS J121329.28+504429.4,UGC 07229;;; -NGC4188;G;12:14:07.36;-12:35:09.6;Crv;0.67;0.55;110;14.00;;11.77;11.04;10.92;22.29;Sb;;;;;;;;2MASX J12140734-1235096,IRAS 12115-1218,MCG -02-31-023,PGC 039059;;; -NGC4189;G;12:13:47.27;+13:25:29.3;Com;2.20;1.79;87;12.51;11.74;9.95;9.33;8.91;22.79;Sc;;;;;;3050;;2MASX J12134727+1325294,IRAS 12112+1342,MCG +02-31-054,PGC 039025,SDSS J121347.26+132529.2,SDSS J121347.27+132529.3,UGC 07235;;; -NGC4190;G;12:13:44.77;+36:38:02.5;CVn;1.53;1.41;30;13.40;13.25;13.11;12.64;12.47;23.44;IB;;;;;;;;MCG +06-27-030,PGC 039023,SDSS J121344.76+363802.4,SDSS J121344.77+363802.5,UGC 07232;;; -NGC4191;G;12:13:50.40;+07:12:03.2;Vir;1.52;1.23;3;13.90;;10.74;10.11;9.87;23.21;S0;;;;;;;;2MASX J12135037+0712030,MCG +01-31-026,PGC 039034,SDSS J121350.40+071203.2,SDSS J121350.41+071203.2,UGC 07233;;; -NGC4192;G;12:13:48.29;+14:54:01.2;Com;11.04;2.66;152;10.95;10.14;7.82;7.10;6.89;23.89;SABb;;;;098;;;;2MASX J12134829+1454016,IRAS 12112+1510,MCG +03-31-079,PGC 039028,SDSS J121348.28+145401.6,UGC 07231;;; -NGC4193;G;12:13:53.59;+13:10:22.3;Vir;2.23;0.99;90;13.18;12.31;10.31;9.51;9.33;22.97;SABb;;;;;;3051;;2MASX J12135358+1310224,IRAS 12113+1326,MCG +02-31-053,PGC 039040,SDSS J121353.59+131022.2,UGC 07234;;; -NGC4194;G;12:14:09.47;+54:31:36.6;UMa;1.64;1.14;170;13.79;13.30;10.63;9.93;9.63;22.44;SBm;;;;;;;;2MASX J12140957+5431360,IRAS 12116+5448,MCG +09-20-119,PGC 039068,SDSS J121409.45+543136.5,SDSS J121409.46+543136.6,SDSS J121409.47+543136.6,SDSS J121409.63+543135.8,UGC 07241;Medusa Galaxy Merger;Multiple SDSS entries describe this object.; -NGC4195;G;12:14:18.08;+59:36:55.6;UMa;1.51;1.32;173;15.50;;13.39;12.80;12.81;24.70;Sc;;;;;;;;2MASX J12141805+5936550,MCG +10-18-010,PGC 039082,SDSS J121418.07+593655.9,SDSS J121418.08+593655.5,SDSS J121418.08+593655.6,UGC 07244;;; -NGC4196;G;12:14:29.75;+28:25:24.4;Com;1.14;0.81;59;13.70;;10.79;10.11;9.86;22.80;S0;;;;;;;;2MASX J12142972+2825243,MCG +05-29-040,PGC 039098,SDSS J121429.74+282524.3,SDSS J121429.74+282524.4,SDSS J121429.75+282524.3,SDSS J121429.75+282524.4,UGC 07245;;; -NGC4197;G;12:14:38.55;+05:48:20.6;Vir;2.84;0.73;36;13.80;;11.20;10.58;10.23;23.21;SABc;;;;;;;;2MASX J12143850+0548205,IRAS 12121+0605,MCG +01-31-029,PGC 039114,SDSS J121438.55+054820.6,UGC 07247;;; -NGC4198;G;12:14:22.05;+56:00:41.2;UMa;0.80;0.43;137;14.60;;11.15;10.43;10.21;22.74;S0-a;;;;;;0778;;2MASX J12142200+5600410,MCG +09-20-123,PGC 039090,SDSS J121422.04+560041.1,SDSS J121422.04+560041.2,SDSS J121422.05+560041.2,SDSS J121422.05+560041.4,UGC 07246;;; -NGC4199;GPair;12:14:50.20;+59:54:27.0;UMa;1.10;;;;;;;;;;;;;;;;;MCG +10-18-011,UGC 07253;;;Diameter of the group inferred by the author. -NGC4199A;G;12:14:48.63;+59:54:22.3;UMa;1.02;0.69;49;15.50;;12.28;11.28;10.91;24.02;E?;;;;;;;;2MASX J12144858+5954219,MCG +10-18-011 NED01,PGC 039135,SDSS J121448.62+595422.2,SDSS J121448.62+595422.5,SDSS J121448.63+595422.3,SDSS J121448.64+595422.3,UGC 07253 NED01;;; -NGC4199B;G;12:14:51.70;+59:54:30.2;UMa;0.85;0.41;83;17.00;;;;;24.58;S0-a;;;;;;;;MCG +10-18-011 NED02,PGC 200285,UGC 07253 NED02;;; -NGC4200;G;12:14:44.23;+12:10:50.7;Vir;1.43;0.86;97;14.10;;11.15;10.51;10.23;23.35;S0;;;;;;;;2MASX J12144419+1210503,MCG +02-31-057,PGC 039124,SDSS J121444.22+121050.7,SDSS J121444.23+121050.7,UGC 07251;;; -NGC4201;G;12:14:41.86;-11:34:58.3;Vir;1.00;0.73;81;14.00;;11.54;10.83;10.44;23.25;S0;;;;;;;;2MASX J12144185-1134581,IRAS 12120-1118,MCG -02-31-024,PGC 039120;;; -NGC4202;G;12:18:08.55;-01:03:50.8;Vir;1.03;0.56;129;14.60;;12.04;11.34;11.07;22.90;SABb;;;;;;;;2MASX J12180856-0103506,MCG +00-31-046,PGC 039495,SDSS J121808.55-010350.8,SDSS J121808.56-010350.8,SDSS J121808.69-010352.2,UGC 07337;;; -NGC4203;G;12:15:05.06;+33:11:50.4;Com;3.42;1.43;10;12.98;11.99;8.31;7.64;7.41;23.08;E-S0;;;;;;;;2MASX J12150502+3311500,IRAS 12125+3328,MCG +06-27-040,PGC 039158,TYC 2527-2134-1,UGC 07256;;; -NGC4204;G;12:15:14.44;+20:39:30.9;Com;4.06;4.06;120;14.30;;12.26;12.36;11.84;24.67;SBd;;;;;;;;2MASX J12151435+2039326,IRAS 12126+2056,MCG +04-29-051,PGC 039179,SDSS J121514.43+203930.8,SDSS J121514.43+203930.9,UGC 07261;;; -NGC4205;G;12:14:55.54;+63:46:58.0;Dra;1.67;0.66;31;13.80;;11.39;10.69;10.43;22.77;SBc;;;;;;;;2MASX J12145558+6346579,IRAS 12125+6403,MCG +11-15-038,PGC 039143,UGC 07258;;; -NGC4206;G;12:15:16.81;+13:01:26.3;Vir;4.69;0.88;0;12.82;12.15;10.32;9.55;9.39;23.73;Sbc;;;;;;3064;;2MASX J12151687+1301258,IRAS 12127+1318,MCG +02-31-066,PGC 039183,SDSS J121516.80+130126.3,SDSS J121516.81+130126.3,UGC 07260;;; -NGC4207;G;12:15:30.50;+09:35:05.6;Vir;1.50;0.77;122;13.70;;10.49;9.76;9.44;22.45;Sd;;;;;;;;2MASX J12153043+0935057,IRAS 12129+0951,MCG +02-31-069,PGC 039206,SDSS J121530.50+093505.6,TYC 873-1069-1,UGC 07268;;; -NGC4208;G;12:15:39.36;+13:54:05.4;Com;2.80;1.69;74;11.90;;9.32;8.62;8.38;22.34;Sc;;;;;4212;;;2MASX J12153937+1354053,IRAS 12130+1411,MCG +02-31-070,PGC 039224,UGC 07275;;; -NGC4209;*;12:15:25.82;+28:28:06.3;Com;;;;13.60;;12.09;11.78;11.70;;;;;;;;;;2MASS J12152582+2828063,SDSS J121525.82+282806.3;;"Identification as NGC 4209 is uncertain; N4209 may be NGC 4185."; -NGC4210;G;12:15:15.83;+65:59:07.2;Dra;1.94;1.39;96;13.40;;10.62;9.96;9.71;23.43;Sb;;;;;;;;2MASX J12151588+6559075,IRAS 12128+6615,MCG +11-15-039,PGC 039184,SDSS J121515.83+655907.2,SDSS J121515.84+655907.1,UGC 07264;;; -NGC4211;G;12:15:35.85;+28:10:39.5;Com;1.03;0.60;123;14.40;;11.18;10.41;10.26;23.16;S0-a;;;;;;;;IRAS 12130+2826,PGC 039221,UGC 07277;;; -NGC4211A;G;12:15:37.32;+28:10:10.7;Com;0.44;0.29;157;15.00;;12.48;11.79;11.59;22.93;S0-a;;;;;;;;2MASX J12153729+2810106,MCG +05-29-043,PGC 039195,SDSS J121537.32+281010.6,SDSS J121537.32+281010.7,UGC 07277 NED02;;; -NGC4212;Dup;12:15:39.36;+13:54:05.4;Com;;;;;;;;;;;;;;;4208;;;;;; -NGC4213;G;12:15:37.56;+23:58:54.8;Com;1.57;1.10;67;14.30;;10.60;9.94;9.61;23.35;E;;;;;;;;2MASX J12153750+2358544,MCG +04-29-054,PGC 039223,SDSS J121537.56+235854.7,UGC 07276;;; -NGC4214;G;12:15:39.17;+36:19:36.8;CVn;6.79;5.28;128;10.30;9.93;8.71;8.06;7.91;22.88;I;;;;;4228;;;2MASX J12153917+3619368,IRAS 12131+3636,MCG +06-27-042,PGC 039225,UGC 07278;;IRAS F12131+3636 (in FSC version 1) was removed from version 2.; -NGC4215;G;12:15:54.54;+06:24:04.1;Vir;1.69;0.57;174;13.00;;9.99;9.30;9.07;22.68;S0-a;;;;;;;;2MASX J12155451+0624040,MCG +01-31-031,PGC 039251,SDSS J121554.53+062404.1,UGC 07281;;; -NGC4216;G;12:15:54.44;+13:08:57.8;Vir;7.82;1.84;20;10.99;10.01;7.53;6.78;6.52;23.12;SABb;;;;;;;;2MASX J12155444+1308578,IRAS 12133+1325,MCG +02-31-072,PGC 039246,UGC 07284;;; -NGC4217;G;12:15:50.90;+47:05:30.4;CVn;5.43;1.61;50;12.40;;8.76;7.92;7.58;23.64;Sb;;;;;;;;2MASX J12155089+4705304,MCG +08-22-087,PGC 039241,UGC 07282;;; -NGC4218;G;12:15:46.41;+48:07:51.0;CVn;0.96;0.62;135;13.20;;11.83;11.07;10.86;22.04;SABa;;;;;;;;2MASX J12154624+4807531,IRAS 12132+4824,MCG +08-22-088,PGC 039237,SDSS J121546.40+480751.0,SDSS J121546.41+480751.0,UGC 07283;;; -NGC4219;G;12:16:27.32;-43:19:27.3;Cen;3.75;1.23;31;12.71;11.31;9.14;8.42;8.09;23.45;Sbc;;;;;;;;2MASX J12162731-4319274,ESO 267-037,ESO-LV 267-0370,IRAS 12138-4302,MCG -07-25-005,PGC 039315;;; -NGC4219A;G;12:17:59.89;-43:32:24.1;Cen;1.29;0.56;31;14.42;;11.21;10.47;10.10;23.35;SBc;;;;;;;;2MASX J12175987-4332239,ESO 267-038,ESO-LV 267-0380,IRAS 12153-4315,MCG -07-25-006,PGC 039484;;; -NGC4220;G;12:16:11.71;+47:52:59.7;CVn;3.30;0.99;140;12.40;;9.09;8.39;8.13;23.36;S0-a;;;;;;;;2MASX J12161173+4753000,IRAS 12137+4809,MCG +08-22-089,PGC 039285,SDSS J121611.70+475259.6,SDSS J121611.71+475259.6,SDSS J121611.71+475259.7,UGC 07290;;; -NGC4221;G;12:15:59.86;+66:13:50.9;Dra;1.85;1.21;24;13.60;;9.98;9.33;9.09;23.26;S0-a;;;;;;;;2MASX J12155994+6613504,MCG +11-15-040,PGC 039266,SDSS J121559.84+661351.0,SDSS J121559.86+661350.9,UGC 07288;;; -NGC4222;G;12:16:22.52;+13:18:25.4;Vir;2.83;0.42;56;13.86;;11.37;10.64;10.33;23.20;Scd;;;;;;;;2MASX J12162252+1318254,IRAS 12138+1334,MCG +02-31-075,PGC 039308,UGC 07291;;"Often mistakenly called IC 3087; that is a Galactic double star."; -NGC4223;G;12:17:25.81;+06:41:24.3;Vir;2.02;1.25;131;13.60;;10.01;9.31;9.02;23.11;S0-a;;;;;;3102;;2MASX J12172582+0641239,MCG +01-31-038,PGC 039412,SDSS J121725.80+064124.2,SDSS J121725.81+064124.2,SDSS J121725.81+064124.3,UGC 07319;;CGCG incorrectly calls this NGC 4241.; -NGC4224;G;12:16:33.79;+07:27:43.5;Vir;2.90;1.17;55;13.30;;9.49;8.79;8.61;23.32;SABa;;;;;;;;2MASX J12163376+0727436,MCG +01-31-034,PGC 039328,SDSS J121633.78+072743.5,SDSS J121633.79+072743.5,UGC 07292;;; -NGC4225;G;12:16:38.37;-12:19:39.6;Crv;0.84;0.61;66;14.00;;11.64;10.91;10.63;23.32;S0-a;;;;;;;;2MASX J12163839-1219391,IRAS 12140-1203,MCG -02-31-027,PGC 039337;;; -NGC4226;G;12:16:26.28;+47:01:30.7;CVn;1.12;0.53;123;14.36;;11.18;10.46;10.11;23.01;SBa;;;;;;;;2MASX J12162629+4701310,MCG +08-22-090,PGC 039312,SDSS J121626.29+470131.5,SDSS J121626.29+470131.6,UGC 07297;;; -NGC4227;G;12:16:33.70;+33:31:19.4;CVn;1.49;0.82;71;13.80;;10.51;9.78;9.51;23.47;S0-a;;;;;;;;2MASX J12163368+3331191,MCG +06-27-043,PGC 039329,SDSS J121633.69+333119.4,TYC 2527-1723-1,UGC 07296;;; -NGC4228;Dup;12:15:39.17;+36:19:36.8;CVn;;;;;;;;;;;;;;;4214;;;;;; -NGC4229;G;12:16:38.79;+33:33:39.2;CVn;1.24;0.79;9;14.30;;11.12;10.55;10.12;23.55;S0;;;;;;;;2MASX J12163880+3333391,MCG +06-27-044,PGC 039341,SDSS J121638.78+333339.2,SDSS J121638.79+333339.2,UGC 07299;;; -NGC4230;OCl;12:17:09.37;-55:17:10.1;Cen;5.40;;;;9.40;;;;;;;;;;;;;MWSC 2013;;ESO 171-SC 014 is not NGC 4230.; -NGC4231;G;12:16:48.87;+47:27:26.6;CVn;0.78;0.63;3;14.27;;12.13;11.33;11.09;22.88;S0-a;;;;;;;;2MASX J12164888+4727268,MCG +08-22-094,PGC 039354,SDSS J121648.86+472726.5,SDSS J121648.86+472726.6,SDSS J121648.87+472726.6,UGC 07304;;; -NGC4232;G;12:16:49.03;+47:26:19.7;CVn;1.23;0.54;152;14.43;;11.57;10.80;10.78;23.20;Sb;;;;;;;;2MASX J12164899+4726198,MCG +08-22-093,PGC 039353,SDSS J121649.02+472619.6,SDSS J121649.02+472619.7,SDSS J121649.03+472619.7,UGC 07303;;; -NGC4233;G;12:17:07.68;+07:37:27.8;Vir;2.34;0.98;177;13.20;;9.71;9.05;8.78;23.40;S0;;;;;;;;2MASX J12170769+0737279,MCG +01-31-037,PGC 039384,SDSS J121707.67+073727.8,SDSS J121707.68+073727.8,UGC 07311;;; -NGC4234;G;12:17:09.16;+03:40:59.0;Vir;1.15;1.11;25;13.40;;12.05;11.51;11.18;22.41;Sm;;;;;;;;2MASX J12170789+0340563,IRAS 12146+0357,MCG +01-31-035,PGC 039388,SDSS J121709.15+034059.0,SDSS J121709.16+034059.0,UGC 07309;;The 2MASS position refers to a knot 19 arcsec west of the nucleus.; -NGC4235;G;12:17:09.88;+07:11:29.7;Vir;4.41;0.89;49;14.70;13.60;9.33;8.68;8.40;23.77;Sa;;;;;;3098;;2MASS J12170988+0711296,2MASX J12170991+0711299,MCG +01-31-036,PGC 039389,SDSS J121709.88+071129.6,SDSS J121709.89+071129.6,SDSS J121709.89+071129.7,UGC 07310;;; -NGC4236;G;12:16:42.12;+69:27:45.3;Dra;23.50;6.85;161;10.58;10.08;9.91;9.17;9.01;24.58;SBd;;;;;;;;2MASX J12164211+6927452,C 003,IRAS 12143+6945,MCG +12-12-004,PGC 039346,UGC 07306;;; -NGC4237;G;12:17:11.42;+15:19:26.3;Com;1.82;1.18;106;12.30;;9.57;8.85;8.61;22.08;SABb;;;;;;;;2MASX J12170941+1519330,2MASX J12171141+1519262,IRAS 12146+1536,MCG +03-31-091,PGC 039393,SDSS J121711.41+151926.3,SDSS J121711.42+151926.3,UGC 07315;;; -NGC4238;G;12:16:55.80;+63:24:35.7;Dra;1.73;0.53;35;14.20;;11.71;11.24;11.04;23.15;SABc;;;;;;;;2MASX J12165577+6324358,IRAS 12145+6341,MCG +11-15-041,PGC 039366,SDSS J121655.78+632435.8,SDSS J121655.80+632435.7,SDSS J121655.81+632435.7,UGC 07308;;; -NGC4239;G;12:17:14.93;+16:31:53.0;Com;1.36;0.79;117;13.50;;11.05;10.39;10.19;23.16;E;;;;;;;;2MASX J12171493+1631532,MCG +03-31-092,PGC 039398,SDSS J121714.93+163152.7,UGC 07316;;; -NGC4240;G;12:17:24.36;-09:57:05.9;Vir;1.47;1.28;90;14.00;;10.26;9.59;9.36;23.97;E;;;;;4243;;;2MASX J12172434-0957056,MCG -02-31-029,PGC 039411;;; -NGC4241;G;12:17:59.90;+06:39:15.1;Vir;1.46;1.03;164;14.40;;;;;22.93;Sc;;;;;;3115;;MCG +01-31-040,PGC 039483,SDSS J121759.90+063915.0,SDSS J121759.90+063915.1,UGC 07333;;; -NGC4242;G;12:17:30.18;+45:37:09.5;CVn;3.80;2.67;23;11.37;10.83;14.12;13.20;13.09;22.92;Sd;;;;;;;;MCG +08-22-098,PGC 039423,SDSS J121730.17+453709.4,SDSS J121730.18+453709.5,UGC 07323;;; -NGC4243;Dup;12:17:24.36;-09:57:05.9;Vir;;;;;;;;;;;;;;;4240;;;;;; -NGC4244;G;12:17:29.66;+37:48:25.6;CVn;16.22;7.24;45;10.71;;8.56;7.98;7.72;24.57;Sc;;;;;;;;2MASX J12172965+3748255,C 026,MCG +06-27-045,PGC 039422,UGC 07322;;; -NGC4245;G;12:17:36.77;+29:36:28.8;Com;2.55;1.62;145;12.40;;9.25;8.58;8.31;22.98;S0-a;;;;;;;;2MASX J12173678+2936288,IRAS 12151+2952,MCG +05-29-049,PGC 039437,SDSS J121736.78+293628.8,SDSS J121736.78+293628.9,UGC 07328;;; -NGC4246;G;12:17:58.12;+07:11:09.3;Vir;2.14;1.09;84;14.00;;10.57;10.07;9.95;23.24;Sc;;;;;;3113;;2MASX J12175811+0711091,MCG +01-31-041,PGC 039479,SDSS J121758.11+071109.2,SDSS J121758.12+071109.3,UGC 07334;;; -NGC4247;G;12:17:58.08;+07:16:26.2;Vir;0.99;0.84;43;14.70;;11.67;10.91;10.50;23.38;SABa;;;;;;;;2MASX J12175805+0716261,IRAS 12153+0733,MCG +01-31-042,PGC 039480,SDSS J121758.08+071626.2;;; -NGC4248;G;12:17:49.85;+47:24:33.1;CVn;2.01;0.90;108;13.12;12.53;11.45;10.88;10.59;22.71;SBm;;;;;;;;2MASX J12174990+4724329,MCG +08-22-099,PGC 039461,SDSS J121749.84+472433.1,UGC 07335;;; -NGC4249;G;12:17:59.39;+05:35:54.9;Vir;0.86;0.84;100;14.80;;11.87;11.10;10.97;22.89;E-S0;;;;;;;;MCG +01-31-039,PGC 039481,SDSS J121759.39+053554.9,SDSS J121759.40+053554.9;;; -NGC4250;G;12:17:26.27;+70:48:09.3;Dra;1.87;0.94;166;13.00;;10.04;9.38;9.14;23.18;S0-a;;;;;;;;2MASX J12172630+7048094,IRAS 12150+7105,MCG +12-12-005,PGC 039414,UGC 07329;;; -NGC4251;G;12:18:08.25;+28:10:31.4;Com;2.34;1.23;100;11.50;;8.67;8.00;7.73;22.19;S0;;;;;;;;2MASX J12180830+2810310,MCG +05-29-050,PGC 039492,UGC 07338;;; -NGC4252;G;12:18:30.89;+05:33:34.1;Vir;1.19;0.41;49;15.00;;13.30;12.61;12.49;22.99;Sbc;;;;;;;;MCG +01-31-045,PGC 039537,SDSS J121830.89+053334.0,SDSS J121830.89+053334.1,UGC 07343;;; -NGC4253;G;12:18:26.51;+29:48:46.3;Com;0.89;0.64;73;14.34;13.57;11.10;10.38;9.84;22.05;SBa;;;;;;;;2MASX J12182648+2948461,IRAS 12159+3005,MCG +05-29-051,PGC 039525,SDSS J121826.51+294846.5,UGC 07344;;; -NGC4254;G;12:18:49.60;+14:24:59.4;Com;5.04;4.74;23;10.44;9.87;7.89;7.25;6.93;22.60;Sc;;;;099;;;;2MASX J12184962+1424593,IRAS 12162+1441,MCG +03-31-099,PGC 039578,SDSS J121849.60+142459.4,UGC 07345;Coma Pinwheel,Virgo Cluster Pinwheel;; -NGC4255;G;12:18:56.15;+04:47:10.1;Vir;1.35;0.62;113;13.50;;10.42;9.73;9.49;22.75;S0;;;;;;;;2MASX J12185618+0447093,MCG +01-31-047,PGC 039592,SDSS J121856.14+044710.1,UGC 07348;;; -NGC4256;G;12:18:43.09;+65:53:53.7;Dra;3.87;0.76;41;12.70;;9.23;8.52;8.25;23.31;Sb;;;;;;;;2MASX J12184303+6553530,2MASX J12184305+6553540,IRAS 12163+6610,MCG +11-15-045,PGC 039568,SDSS J121843.08+655353.6,SDSS J121843.08+655353.7,UGC 07351;;; -NGC4257;G;12:19:06.47;+05:43:33.5;Vir;0.47;0.18;66;15.00;;11.63;10.93;10.70;21.16;Sab;;;;;;;;2MASX J12190647+0543333,MCG +01-31-049,PGC 039624,SDSS J121906.47+054333.4,SDSS J121906.47+054333.5;;; -NGC4258;G;12:18:57.50;+47:18:14.3;CVn;16.98;7.24;150;9.14;8.41;6.38;5.72;5.46;23.36;Sbc;;;;106;;;;2MASX J12185761+4718133,MCG +08-22-104,PGC 039600,SDSS J121857.50+471814.2,UGC 07353;;; -NGC4259;G;12:19:22.21;+05:22:35.0;Vir;1.04;0.45;143;14.50;;11.54;10.93;10.67;23.23;S0;;;;;;;;2MASX J12192219+0522344,MCG +01-31-051,PGC 039657,SDSS J121922.21+052235.0,UGC 07359;;; -NGC4260;G;12:19:22.24;+06:05:55.2;Vir;2.51;1.15;58;13.10;;9.44;8.76;8.54;22.86;SBa;;;;;;;;2MASX J12192224+0605556,MCG +01-31-054,PGC 039656,SDSS J121922.23+060555.2,SDSS J121922.24+060555.2,UGC 07361;;; -NGC4261;G;12:19:23.22;+05:49:30.8;Vir;4.25;3.35;160;13.92;12.87;8.20;7.51;7.26;23.18;E;;;;;;;;2MASX J12192326+0549289,MCG +01-31-052,PGC 039659,SDSS J121922.98+054930.4,SDSS J121922.98+054930.5,SDSS J121923.21+054929.6,SDSS J121923.21+054929.7,UGC 07360;;Additional radio sources may contribute to the WMAP flux.; -NGC4262;G;12:19:30.57;+14:52:39.6;Com;1.74;1.52;145;12.49;11.55;9.29;8.60;8.36;22.35;E-S0;;;;;;;;2MASX J12193058+1452397,MCG +03-31-101,PGC 039676,SDSS J121930.57+145239.5,UGC 07365;;; -NGC4263;G;12:19:42.20;-12:13:32.0;Crv;1.16;0.55;116;14.00;;11.08;10.44;10.09;22.47;SABb;;;;;4265;;;2MASX J12194219-1213319,IRAS 12171-1156,MCG -02-32-001,PGC 039698;;; -NGC4264;G;12:19:35.76;+05:50:48.3;Vir;0.86;0.67;110;13.90;;10.75;10.12;9.88;22.06;S0-a;;;;;;;;2MASX J12193577+0550484,MCG +01-32-001,PGC 039687,SDSS J121935.75+055048.3,SDSS J121935.76+055048.3,UGC 07364;;; -NGC4265;Dup;12:19:42.20;-12:13:32.0;Crv;;;;;;;;;;;;;;;4263;;;;;; -NGC4266;G;12:19:42.30;+05:32:17.8;Vir;2.00;0.50;74;15.00;;10.38;9.77;9.46;23.09;SBa;;;;;;;;2MASX J12194231+0532175,MCG +01-32-002,PGC 039699,SDSS J121942.29+053217.8,SDSS J121942.30+053217.8,UGC 07368;;Multiple SDSS entries describe this object.; -NGC4267;G;12:19:45.24;+12:47:53.8;Vir;2.55;1.76;143;12.40;;8.73;8.07;7.84;22.58;E-S0;;;;;;;;2MASX J12194528+1247540,MCG +02-32-004,PGC 039710,SDSS J121945.27+124753.7,UGC 07373;;; -NGC4268;G;12:19:47.22;+05:17:01.6;Vir;1.51;0.64;47;13.90;;10.43;9.71;9.47;23.10;S0-a;;;;;;;;2MASX J12194722+0517011,MCG +01-32-004,PGC 039712,SDSS J121947.21+051701.5,SDSS J121947.21+051701.6,SDSS J121947.22+051701.6,UGC 07371;;; -NGC4269;G;12:19:49.19;+06:00:53.9;Vir;1.22;0.93;130;13.90;;10.68;10.04;9.89;22.55;S0-a;;;;;;;;2MASX J12194918+0600541,MCG +01-32-005,PGC 039719,UGC 07372;;; -NGC4270;G;12:19:49.47;+05:27:48.4;Vir;1.88;0.78;110;13.30;;9.95;9.28;9.04;23.02;S0;;;;;;;;2MASX J12194943+0527481,MCG +01-32-007,PGC 039718,SDSS J121949.46+052748.3,UGC 07376;;; -NGC4271;G;12:19:32.60;+56:44:11.7;UMa;1.77;1.36;59;13.70;;10.46;9.78;9.51;23.61;E-S0;;;;;;;;2MASX J12193263+5644119,MCG +10-18-025,PGC 039683,SDSS J121932.59+564411.6,SDSS J121932.59+564411.7,SDSS J121932.59+564411.8,SDSS J121932.60+564411.6,SDSS J121932.60+564411.9,UGC 07375;;; -NGC4272;G;12:19:47.64;+30:20:20.7;Com;1.02;0.83;117;14.20;;10.95;10.26;9.99;23.06;E;;;;;;;;2MASX J12194763+3020211,MCG +05-29-059,PGC 039715,SDSS J121947.63+302020.6,SDSS J121947.64+302020.6,SDSS J121947.64+302020.7,UGC 07378;;87GB source with large sky, narrow minor axis, or very bad confusion.; -NGC4273;G;12:19:56.08;+05:20:36.0;Vir;2.19;1.95;11;12.30;;10.03;9.44;9.11;22.66;Sc;;;;;;;;2MASX J12195606+0520361,IRAS 12173+0537,MCG +01-32-008,PGC 039738,SDSS J121956.07+052035.9,UGC 07380;;; -NGC4274;G;12:19:50.59;+29:36:52.1;Com;3.63;1.70;102;11.34;10.41;8.02;7.32;7.03;22.44;SBab;;;;;;;;2MASX J12195066+2936529,IRAS 12173+2953,MCG +05-29-060,PGC 039724,SDSS J121950.59+293652.9,UGC 07377;;; -NGC4275;G;12:19:52.58;+27:37:15.6;Com;0.87;0.81;120;13.40;;11.06;10.37;10.19;21.85;SABb;;;;;;;;2MASX J12195260+2737152,IRAS 12173+2753,MCG +05-29-058,PGC 039728,SDSS J121952.57+273715.5,SDSS J121952.57+273715.6,SDSS J121952.58+273715.5,SDSS J121952.58+273715.6,UGC 07382;;; -NGC4276;G;12:20:07.48;+07:41:30.7;Vir;1.34;1.18;80;14.10;;11.66;10.94;10.69;22.84;Sc;;;;;;;;2MASX J12200749+0741311,MCG +01-32-010,PGC 039765,SDSS J122007.48+074130.6,SDSS J122007.48+074130.7,UGC 07385;;; -NGC4277;G;12:20:03.72;+05:20:28.9;Vir;0.76;0.32;132;15.00;;11.66;11.02;10.61;22.30;S0-a;;;;;;;;2MASX J12200369+0520161,2MASX J12200369+0520291,MCG +01-32-009,PGC 039759,SDSS J122003.72+052028.8,SDSS J122003.72+052028.9;;; -NGC4278;G;12:20:06.82;+29:16:50.7;Com;2.89;2.83;35;11.09;10.16;8.09;7.42;7.18;22.22;E;;;;;;;;2MASX J12200679+2916502,2MASX J12200682+2916498,IRAS 12175+2933,MCG +05-29-062,PGC 039764,SDSS J122006.82+291650.6,SDSS J122006.84+291650.6,UGC 07386;;; -NGC4279;G;12:20:25.00;-11:39:59.8;Crv;1.17;0.72;26;14.00;;11.45;10.66;10.55;23.93;S0-a;;;;;;;;2MASX J12202503-1139593,MCG -02-32-003,PGC 039812;;; -NGC4280;Other;12:20:31.90;-11:39:08.8;Crv;;;;;;;;;;;;;;;;;;;;Three Galactic stars. Identification as NGC 4280 is uncertain.; -NGC4281;G;12:20:21.52;+05:23:11.0;Vir;2.85;1.43;86;12.50;;8.90;8.21;7.94;23.07;S0-a;;;;;;;;2MASX J12202152+0523111,IRAS 12177+0539,MCG +01-32-012,PGC 039801,SDSS J122021.52+052311.0,UGC 07389;;; -NGC4282;G;12:20:24.31;+05:34:22.2;Vir;0.88;0.56;100;14.70;;11.58;10.89;10.69;22.96;S0-a;;;;;;;;2MASX J12202426+0534221,MCG +01-32-013,PGC 039809,SDSS J122024.29+053422.1,SDSS J122024.30+053422.2,SDSS J122024.30+053422.3;;; -NGC4283;G;12:20:20.85;+29:18:39.4;Com;1.23;1.13;140;13.00;12.07;10.01;9.34;9.13;22.32;E;;;;;;;;2MASX J12202078+2918392,MCG +05-29-063,PGC 039800,SDSS J122020.77+291839.1,UGC 07390;;; -NGC4284;G;12:20:12.62;+58:05:34.4;UMa;1.90;0.86;101;14.70;;11.54;10.93;10.63;24.00;Sbc;;;;;;;;2MASX J12201263+5805347,MCG +10-18-026,PGC 039775,SDSS J122012.62+580534.3,UGC 07393;;; -NGC4285;G;12:20:39.80;-11:38:30.9;Crv;0.93;0.46;43;14.00;;11.98;11.33;11.19;23.26;Sa;;;;;;;;2MASX J12203979-1138310,MCG -02-32-004,PGC 039842;;; -NGC4286;G;12:20:42.09;+29:20:45.2;Com;1.08;0.38;144;14.10;;11.78;11.15;10.82;23.02;Sa;;;;;;3181;;2MASX J12204209+2920454,MCG +05-29-065,PGC 039846,SDSS J122042.08+292045.1,SDSS J122042.09+292045.1,UGC 07398;;; -NGC4287;G;12:20:48.50;+05:38:23.6;Vir;1.22;0.39;71;15.20;;12.19;11.48;11.02;23.29;Sbc;;;;;;;;2MASX J12204845+0538229,MCG +01-32-014,PGC 039860,SDSS J122048.49+053823.5,SDSS J122048.49+053823.6;;; -NGC4288;G;12:20:38.11;+46:17:30.0;CVn;1.70;1.35;138;13.60;;11.96;11.50;11.30;22.99;SBcd;;;;;;;;2MASX J12203811+4617276,MCG +08-23-006,PGC 039840,SDSS J122038.14+461730.4,SDSS J122038.15+461730.4,UGC 07399;;; -NGC4288A;G;12:20:40.57;+46:15:19.6;CVn;0.72;0.64;155;15.00;;13.09;12.29;11.99;23.73;S0-a;;;;;;;;2MASX J12204053+4615196,MCG +08-23-007,PGC 039841,SDSS J122040.56+461519.5,SDSS J122040.56+461519.6,SDSS J122040.57+461519.6;;; -NGC4289;G;12:21:02.25;+03:43:19.7;Vir;4.26;0.46;1;15.00;;11.13;10.26;9.89;24.44;SBc;;;;;;;;2MASX J12210230+0343190,IRAS 12184+0400,MCG +01-32-015,PGC 039886,SDSS J122102.25+034319.7,SDSS J122102.33+034317.0,UGC 07403;;; -NGC4290;G;12:20:47.53;+58:05:33.0;UMa;2.19;1.47;70;12.80;;10.26;9.59;9.30;23.07;Sb;;;;;;;;2MASX J12204750+5805325,IRAS 12183+5822,MCG +10-18-029,PGC 039859,SDSS J122047.51+580533.0,SDSS J122047.52+580533.0,SDSS J122047.53+580533.0,SDSS J122047.53+580533.3,UGC 07402;;; -NGC4291;G;12:20:18.20;+75:22:15.0;Dra;1.93;1.62;108;17.00;;9.37;8.65;8.42;22.68;E;;;;;;;;2MASX J12201769+7522154,MCG +13-09-024,PGC 039791,UGC 07397;;; -NGC4292;G;12:21:16.46;+04:35:44.5;Vir;1.60;1.11;10;13.09;12.21;10.40;9.75;9.55;22.84;S0;;;;;;;;2MASX J12211648+0435444,MCG +01-32-016,PGC 039922,SDSS J122116.45+043544.5,UGC 07404;;; -NGC4293;G;12:21:12.89;+18:22:56.6;Com;6.24;3.72;72;11.60;;8.37;7.72;7.48;23.61;S0-a;;;;;;;;2MASX J12211289+1822566,IRAS 12186+1839,MCG +03-32-006,PGC 039907,SDSS J122112.82+182257.7,UGC 07405;;; -NGC4294;G;12:21:17.83;+11:30:37.6;Vir;2.69;1.02;148;12.60;;10.58;10.19;9.70;22.49;SBc;;;;;;;;2MASX J12211778+1130399,IRAS 12187+1147,MCG +02-32-009,PGC 039925,SDSS J122117.82+113037.5,SDSS J122117.83+113037.6,UGC 07407;;ALFALFA source also includes UGC 07414.; -NGC4295;G;12:21:09.78;+28:09:54.4;Com;0.51;0.44;152;15.00;;11.69;11.00;10.73;22.27;S0-a;;;;;;;;2MASX J12210974+2809538,MCG +05-29-068,PGC 039906,SDSS J122109.77+280954.3,SDSS J122109.78+280954.4;;; -NGC4296;G;12:21:28.39;+06:39:12.8;Vir;1.44;0.79;16;14.00;;10.64;9.97;9.74;23.99;S0;;;;;;;;2MASX J12212838+0639128,MCG +01-32-017,PGC 039943,SDSS J122128.39+063912.8,UGC 07409;;; -NGC4297;G;12:21:27.41;+06:40:15.7;Vir;0.64;0.31;171;16.00;;13.04;12.52;12.29;21.56;S0-a;;;;;;;;2MASX J12212737+0640159,MCG +01-32-018,PGC 039940,SDSS J122127.40+064016.3,SDSS J122127.41+064016.4,UGC 07409 NOTES01;;; -NGC4298;G;12:21:32.76;+14:36:22.2;Com;2.54;1.40;137;12.04;11.34;9.43;8.66;8.47;22.21;Sc;;;;;;;;2MASX J12213279+1436217,IRAS 12190+1452,MCG +03-32-007,PGC 039950,SDSS J122132.76+143622.1,SDSS J122132.76+143622.2,SDSS J122132.77+143622.2,UGC 07412;;; -NGC4299;G;12:21:40.55;+11:29:59.7;Vir;1.48;1.38;0;12.80;;;;;22.27;SABd;;;;;;;;2MASX J12214230+1130118,IRAS 12191+1146,MCG +02-32-010,PGC 039968,SDSS J122140.55+112959.7,UGC 07414;;ALFALFA source also includes UGC 07407.; -NGC4300;G;12:21:41.47;+05:23:05.3;Vir;1.79;0.72;40;13.90;;10.44;9.78;9.53;22.97;Sa;;;;;;;;2MASX J12214148+0523051,MCG +01-32-021,PGC 039972,SDSS J122141.46+052305.2,SDSS J122141.46+052305.3,UGC 07413;;; -NGC4301;G;12:22:27.21;+04:33:58.6;Vir;1.14;1.09;15;13.40;12.99;12.14;11.94;11.20;22.51;Sc;;;;;4303A;;;2MASX J12222724+0433586,IRAS 12198+0450,MCG +01-32-027,PGC 040087,UGC 07439;;; -NGC4302;G;12:21:42.48;+14:35:53.9;Com;6.00;1.13;178;13.40;11.61;9.08;8.21;7.83;23.42;Sc;;;;;;;;2MASX J12214247+1435519,MCG +03-32-009,PGC 039974,SDSS J122142.47+143553.8,SDSS J122142.48+143553.9,UGC 07418;;; -NGC4303;G;12:21:54.90;+04:28:25.1;Vir;6.89;6.56;20;10.18;9.65;7.73;7.09;6.84;23.05;Sbc;;;;061;;;;2MASX J12215494+0428249,IRAS 12194+0444,MCG +01-32-022,PGC 040001,SDSS J122154.92+042825.6,UGC 07420;;; -NGC4303A;Dup;12:22:27.21;+04:33:58.6;Vir;;;;;;;;;;;;;;;4301;;;;;; -NGC4304;G;12:22:12.72;-33:29:04.2;Hya;2.48;2.43;105;12.41;12.02;10.00;9.35;9.05;23.17;Sbc;;;;;;;;2MASX J12221272-3329038,ESO 380-020,ESO-LV 380-0200,IRAS 12195-3312,MCG -05-29-034,PGC 040055;;; -NGC4305;G;12:22:03.60;+12:44:27.3;Vir;2.30;1.19;30;13.80;;10.48;9.93;9.83;23.53;Sa;;;;;;;;2MASX J12220361+1244269,MCG +02-32-013,PGC 040030,SDSS J122203.59+124427.3,SDSS J122203.60+124427.3,UGC 07432;;; -NGC4306;G;12:22:04.11;+12:47:14.9;Vir;1.49;1.06;142;14.40;;11.35;10.55;10.54;23.18;S0;;;;;;;;2MASX J12220408+1247139,MCG +02-32-014,PGC 040032,SDSS J122204.10+124714.9,SDSS J122204.11+124714.9,UGC 07433;;; -NGC4307;G;12:22:05.68;+09:02:37.1;Vir;3.44;0.81;24;13.40;;9.72;9.00;8.72;23.14;SBb;;;;;;;;2MASX J12220562+0902367,IRAS 12195+0919,MCG +02-32-012a,PGC 040033,SDSS J122205.68+090237.0,UGC 07431;;; -NGC4307A;G;12:22:07.32;+08:59:26.0;Vir;0.76;0.69;90;15.50;;13.71;13.99;13.52;23.12;SABc;;;;;;3211;;2MASX J12220731+0859257,MCG +02-32-012,PGC 040034,SDSS J122207.32+085926.0,UGC 07430;;; -NGC4308;G;12:21:56.85;+30:04:27.7;Com;0.94;0.69;21;14.30;;11.47;10.89;10.62;22.83;E;;;;;;;;2MASX J12215687+3004271,MCG +05-29-069,PGC 040011,SDSS J122156.85+300427.6,SDSS J122156.86+300427.7,UGC 07426;;; -NGC4309;G;12:22:12.38;+07:08:39.5;Vir;1.93;0.92;86;14.30;;10.63;9.99;9.77;23.66;S0-a;;;;;;;;2MASX J12221234+0708398,IRAS 12196+0725,MCG +01-32-025,PGC 040051,SDSS J122212.38+070839.4,SDSS J122212.38+070839.5,UGC 07435;;; -NGC4310;G;12:22:26.30;+29:12:32.5;Com;1.93;0.76;148;13.22;;10.62;10.01;9.68;23.64;S0-a;;;;;4338;;;2MASX J12222627+2912312,IRAS 12199+2929,MCG +05-29-074,PGC 040086,SDSS J122226.29+291232.5,SDSS J122226.30+291232.5,UGC 07440;;Often mistakenly called NGC 4311.; -NGC4311;**;12:22:26.85;+29:08:45.4;Com;;;;;;;;;;;;;;;;;;;;NGC identification is uncertain.; -NGC4312;G;12:22:31.36;+15:32:16.5;Com;5.02;1.15;170;12.53;11.72;9.69;9.02;8.79;23.90;Sab;;;;;;;;2MASX J12223135+1532165,IRAS 12199+1548,MCG +03-32-014,PGC 040095,UGC 07442;;; -NGC4313;G;12:22:38.54;+11:48:03.4;Vir;3.80;0.99;141;13.20;;9.43;8.76;8.47;23.29;Sab;;;;;;;;2MASX J12223853+1148031,IRAS 12200+1204,MCG +02-32-016,PGC 040105,SDSS J122238.54+114803.3,SDSS J122238.55+114803.4,UGC 07445;;HOLM 385B is a star.; -NGC4314;G;12:22:31.82;+29:53:45.2;Com;3.70;3.56;150;11.43;10.58;8.52;7.83;7.56;22.98;Sa;;;;;;;;2MASX J12223197+2953430,IRAS 12200+3010,MCG +05-29-075,PGC 040097,SDSS J122232.01+295343.7,UGC 07443;;; -NGC4315;**;12:22:39.39;+09:17:09.3;Vir;;;;;;;;;;;;;;;;;;SDSS J122239.39+091709.3;;; -NGC4316;G;12:22:42.24;+09:19:56.9;Vir;2.47;0.58;112;14.00;;10.37;9.57;9.25;23.06;Sc;;;;;;;;2MASX J12224222+0919581,IRAS 12201+0936,MCG +02-32-017,PGC 040119,SDSS J122242.23+091956.9,SDSS J122242.24+091956.9,UGC 07447;;; -NGC4317;Other;12:22:41.98;+31:02:16.3;Com;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC4318;G;12:22:43.29;+08:11:53.8;Vir;0.73;0.50;65;14.10;;11.24;10.55;10.35;22.25;E;;;;;;;;2MASX J12224330+0811541,MCG +02-32-015,PGC 040122,SDSS J122243.28+081153.7,SDSS J122243.29+081153.7,SDSS J122243.29+081153.8,UGC 07446;;; -NGC4319;G;12:21:43.87;+75:19:21.3;Dra;2.45;0.97;154;13.00;;9.78;9.06;8.86;23.03;SBab;;;;;4345;;;2MASX J12214384+7519214,MCG +13-09-025,PGC 039981,UGC 07429;;; -NGC4320;G;12:22:57.72;+10:32:54.0;Vir;0.94;0.66;149;15.30;;11.91;11.22;10.91;23.25;Sbc;;;;;;;;2MASX J12225772+1032540,IRAS 12204+1049,MCG +02-32-018,PGC 040160,SDSS J122257.72+103253.9,SDSS J122257.73+103254.0,UGC 07452;;; -NGC4321;G;12:22:54.83;+15:49:18.5;Com;6.10;5.62;108;10.05;9.35;7.46;6.82;6.59;22.61;SABb;;;;100;;;;2MASX J12225489+1549205,IRAS 12204+1605,MCG +03-32-015,PGC 040153,SDSS J122254.91+154920.2,UGC 07450;;; -NGC4322;*;12:22:41.89;+15:54:11.8;Com;;;;13.40;;11.95;11.71;11.68;;;;;;;;;;2MASS J12224188+1554119,SDSS J122241.89+155411.8;;Not the same as NGC 4323, which is a galaxy.; -NGC4323;G;12:23:01.73;+15:54:20.1;Com;1.23;0.71;133;14.81;13.94;12.88;12.43;12.14;23.79;S0;;;;;;;;2MASX J12230167+1554196,MCG +03-32-016,PGC 040171,SDSS J122301.72+155420.0,SDSS J122301.73+155420.0,SDSS J122301.73+155420.1,UGC 07450 NOTES01;;Often mistakenly called NGC 4322 (which is a star).; -NGC4324;G;12:23:06.18;+05:15:01.2;Vir;2.96;1.21;55;12.50;;9.42;8.68;8.48;23.42;S0-a;;;;;;;;2MASX J12230617+0515017,IRAS 12205+0531,MCG +01-32-032,PGC 040179,SDSS J122306.17+051501.2,UGC 07451;;HOLM 388B is a star.; -NGC4325;G;12:23:06.68;+10:37:16.3;Vir;1.23;0.77;180;15.00;;11.24;10.56;10.30;23.62;E;;;;;4368;;;2MASX J12230667+1037170,MCG +02-32-019,PGC 040183,SDSS J122306.66+103716.4,SDSS J122306.66+103716.5;;; -NGC4326;G;12:23:11.63;+06:04:19.7;Vir;1.13;1.07;110;13.10;;11.22;10.82;10.23;23.25;Sab;;;;;;;;2MASX J12231163+0604200,MCG +01-32-033,PGC 040192,SDSS J122311.63+060419.6,SDSS J122311.63+060419.7,UGC 07454;;; -NGC4327;*;12:23:07.51;+15:44:11.4;Com;;;;16.10;;15.00;14.63;14.81;;;;;;;;;;2MASS J12230749+1544115,SDSS J122307.50+154411.4;;Identification as NGC 4327 is uncertain.; -NGC4328;G;12:23:20.03;+15:49:13.4;Com;1.60;1.23;99;14.04;;12.01;11.45;11.46;23.94;E-S0;;;;;;;;2MASX J12232004+1549139,MCG +03-32-019,PGC 040209,SDSS J122320.02+154913.2,SDSS J122320.02+154913.3,SDSS J122320.03+154913.4;;; -NGC4329;G;12:23:20.71;-12:33:31.0;Crv;1.08;0.59;49;14.00;;10.82;10.10;9.84;23.64;E;;;;;;;;2MASX J12232069-1233308,MCG -02-32-009,PGC 040212;;; -NGC4330;G;12:23:17.25;+11:22:04.7;Vir;2.29;0.60;60;14.00;;10.56;9.75;9.51;22.54;Sc;;;;;;;;2MASX J12231724+1122047,IRAS 12207+1138,MCG +02-32-020,PGC 040201,UGC 07456;;; -NGC4331;G;12:22:35.96;+76:10:20.9;Dra;1.58;0.37;2;14.80;;;;;23.22;I;;;;;;;;MCG +13-09-026,PGC 040085,UGC 07449;;; -NGC4332;G;12:22:46.76;+65:50:37.6;Dra;1.97;1.43;137;13.20;;10.25;9.51;9.23;23.42;SBa;;;;;;;;2MASX J12224682+6550373,IRAS 12204+6607,MCG +11-15-048,PGC 040133,SDSS J122246.75+655037.6,SDSS J122246.75+655037.9,SDSS J122246.76+655037.6,UGC 07453;;; -NGC4333;G;12:23:22.27;+06:02:26.6;Vir;0.80;0.75;90;14.80;;11.64;10.92;10.58;22.57;SBab;;;;;;;;2MASX J12232229+0602269,MCG +01-32-034,PGC 040217,SDSS J122322.27+060226.5,SDSS J122322.27+060226.6;;; -NGC4334;G;12:23:23.88;+07:28:23.5;Vir;2.00;0.91;135;14.90;;10.63;9.96;9.49;23.91;Sab;;;;;;;;2MASX J12232386+0728230,IRAS 12208+0744,MCG +01-32-035,PGC 040218,SDSS J122323.88+072823.5,SDSS J122323.89+072825.6,SDSS J122323.90+072825.6,UGC 07458;;; -NGC4335;G;12:23:01.88;+58:26:40.4;UMa;1.85;1.37;149;13.70;;10.06;9.36;9.09;23.83;E;;;;;;;;2MASX J12230190+5826409,MCG +10-18-035,PGC 040169,SDSS J122301.91+582640.4,SDSS J122301.92+582640.4,UGC 07455;;One of two 6cm sources associated with [WB92] 1220+5843; -NGC4336;G;12:23:29.83;+19:25:36.9;Com;1.54;0.81;162;13.60;;10.74;10.05;9.96;22.75;S0-a;;;;;;3254;;2MASX J12232983+1925373,MCG +03-32-020,PGC 040231,SDSS J122329.82+192536.8,SDSS J122329.82+192536.9,UGC 07462;;HOLM 389B is a star.; -NGC4337;OCl;12:24:03.31;-58:07:25.6;Cru;6.60;;;9.44;8.90;;;;;;;;;;;;;MWSC 2023;;; -NGC4338;Dup;12:22:26.30;+29:12:32.5;Com;;;;;;;;;;;;;;;4310;;;;;; -NGC4339;G;12:23:34.95;+06:04:54.3;Vir;2.32;2.20;50;13.10;;9.43;8.75;8.54;23.03;E;;;;;;;;2MASX J12233494+0604541,MCG +01-32-036,PGC 040240,UGC 07461;;; -NGC4340;G;12:23:35.29;+16:43:20.5;Com;2.82;1.79;87;12.40;;9.22;8.53;8.32;23.03;S0-a;;;;;;;;2MASX J12233531+1643199,MCG +03-32-021,PGC 040245,SDSS J122335.28+164320.4,UGC 07467;;; -NGC4341;G;12:23:53.56;+07:06:25.6;Vir;1.67;0.51;95;14.50;;11.58;10.93;10.64;23.56;S0;;;;;;3260;;2MASX J12235347+0706261,MCG +01-32-042,PGC 040280,SDSS J122353.55+070625.6,SDSS J122353.56+070625.6,UGC 07472;;; -NGC4342;G;12:23:39.00;+07:03:14.4;Vir;1.25;0.64;165;13.00;;9.95;9.26;9.02;22.40;E-S0;;;;;;3256;;2MASX J12233902+0703141,MCG +01-32-039,PGC 040252,SDSS J122339.00+070314.3,UGC 07466;;POSS-I E print shows star-like flaw on northeast side (Wei-Dong Li).; -NGC4343;G;12:23:38.70;+06:57:14.7;Vir;1.92;1.92;130;13.50;;10.04;9.27;8.97;23.47;Sb;;;;;;;;2MASX J12233869+0657141,IRAS 12210+0713,MCG +01-32-038,PGC 040251,SDSS J122338.69+065714.6,SDSS J122338.70+065714.7,UGC 07465;;; -NGC4344;G;12:23:37.47;+17:32:27.1;Com;1.34;1.30;56;13.34;;11.36;10.67;10.48;22.70;S0;;;;;;;;2MASX J12233719+1732150,IRAS 12210+1748,MCG +03-32-022,PGC 040249,SDSS J122337.45+173227.2,UGC 07468;;HOLM 390B is a star.; -NGC4345;Dup;12:21:43.87;+75:19:21.3;Dra;;;;;;;;;;;;;;;4319;;;;;; -NGC4346;G;12:23:27.94;+46:59:37.8;CVn;3.13;1.13;99;12.30;;9.07;8.42;8.18;23.29;S0;;;;;;;;2MASX J12232794+4659379,MCG +08-23-016,PGC 040228,SDSS J122327.95+465937.6,UGC 07463;;; -NGC4347;*;12:14:52.31;-03:14:27.7;Vir;;;;;;;;;;;;;;;;;;;;"Identification as NGC 4347 is uncertain; N4347 may be NGC 4348."; -NGC4348;G;12:23:53.99;-03:26:34.5;Vir;2.67;0.50;31;13.60;;9.98;9.27;8.91;22.77;Sbc;;;;;;;;2MASX J12235396-0326344,IRAS 12213-0310,MCG +00-32-003,PGC 040284,SDSS J122353.76-032635.2,SDSS J122353.98-032634.5,SDSS J122353.99-032634.5;;; -NGC4349;OCl;12:24:06.04;-61:52:13.6;Cru;6.30;;;8.01;7.40;;;;;;;;;;;;;MWSC 2024;;; -NGC4350;G;12:23:57.87;+16:41:36.3;Com;2.80;1.33;28;11.50;11.08;8.76;8.01;7.82;22.75;S0;;;;;;;;2MASX J12235781+1641360,MCG +03-32-023,PGC 040295,UGC 07473;;; -NGC4351;G;12:24:01.50;+12:12:17.2;Vir;1.58;1.28;72;13.50;;11.26;10.59;10.24;22.54;SBb;;;;;4354;;;2MASX J12240156+1212180,IRAS 12214+1229,MCG +02-32-024,PGC 040306,SDSS J122401.49+121217.1,SDSS J122401.50+121217.1,SDSS J122401.50+121217.2,UGC 07476;;; -NGC4352;G;12:24:05.02;+11:13:05.0;Vir;1.64;0.77;102;14.00;;10.63;10.05;9.87;23.20;S0;;;;;;;;2MASX J12240502+1113048,MCG +02-32-023,PGC 040313,SDSS J122405.02+111305.0,UGC 07475;;; -NGC4353;G;12:24:00.26;+07:47:06.7;Vir;1.05;0.81;67;14.60;;;;;22.74;IB;;;;;;3266;;2MASX J12235912+0746578,MCG +01-32-043,PGC 040303,SDSS J122400.25+074706.6,SDSS J122400.26+074706.7;;2MASS position is on western edge.; -NGC4354;Dup;12:24:01.50;+12:12:17.2;Vir;;;;;;;;;;;;;;;4351;;;;;; -NGC4355;G;12:26:54.62;-00:52:39.4;Vir;1.41;0.68;64;14.21;13.37;11.04;10.35;10.12;22.98;SABa;;;;;4418;;;2MASX J12265462-0052395,IRAS 12243-0036,MCG +00-32-012,PGC 040762,SDSS J122654.61-005239.4,SDSS J122654.62-005239.2,SDSS J122654.62-005239.3,SDSS J122654.62-005239.4,UGC 07545;;; -NGC4356;G;12:24:14.53;+08:32:09.1;Vir;2.01;0.73;40;14.30;;10.67;9.95;9.69;22.81;Sc;;;;;;3273;;2MASX J12241453+0832088,IRAS 12217+0848,MCG +02-32-026,PGC 040342,UGC 07482;;; -NGC4357;G;12:23:58.82;+48:46:46.1;CVn;3.48;1.27;77;13.36;12.68;10.49;9.86;9.59;24.24;Sbc;;;;;4381;;;2MASX J12235883+4846454,MCG +08-23-017,PGC 040296,SDSS J122358.82+484646.1,SDSS J122358.84+484646.0,SDSS J122358.86+484646.3,UGC 07478;;; -NGC4358;G;12:24:02.02;+58:23:06.8;UMa;1.15;0.92;167;14.30;;11.33;10.70;10.52;23.31;S0;;;;;;;;2MASX J12240211+5823063,MCG +10-18-038,PGC 040309,SDSS J122402.02+582306.7,SDSS J122402.02+582306.8,SDSS J122402.03+582306.7,SDSS J122402.04+582306.7,SDSS J122402.04+582306.9,UGC 07479;;Incorrectly identified as NGC 4364 in MCG and UGC.; -NGC4359;G;12:24:11.17;+31:31:19.0;Com;1.38;0.83;108;13.90;;11.73;10.99;10.81;22.75;SBc;;;;;;;;2MASX J12241105+3131177,IRAS 12216+3147,MCG +05-29-079,PGC 040330,SDSS J122411.16+313119.0,SDSS J122411.17+313119.0,UGC 07483;;; -NGC4360;G;12:24:21.70;+09:17:34.0;Vir;1.40;1.20;148;13.90;;10.46;9.77;9.51;22.92;E;;;;;;;;2MASX J12242169+0917338,MCG +02-32-028,PGC 040363,SDSS J122421.70+091733.9,UGC 07484;;; -NGC4360B;G;12:24:14.72;+09:16:00.7;Vir;0.50;0.41;151;15.20;;11.89;11.18;10.91;22.01;S?;;;;;;3274;;2MASX J12241473+0916008,MCG +02-32-027,PGC 040344,SDSS J122414.71+091600.6,SDSS J122414.72+091600.6,SDSS J122414.72+091600.7;;; -NGC4361;PN;12:24:30.76;-18:47:05.4;Crv;1.05;;;10.30;10.90;13.94;14.00;14.02;;;11.53;12.85;13.21;;;;HD 107969,BD -17 3614;2MASX J12243097-1847190,ESO 573-019,IRAS 12219-1830,PN G294.1+43.6;;Incorrectly called a galaxy in RC1.; -NGC4362;G;12:24:11.26;+58:21:38.4;UMa;1.28;0.49;41;15.00;;11.75;11.13;10.85;23.98;S0-a;;;;;4364;;;2MASX J12241139+5821383,MCG +10-18-039,PGC 040350,SDSS J122411.26+582138.3,SDSS J122411.26+582138.4,SDSS J122411.29+582138.2;;; -NGC4363;G;12:23:28.40;+74:57:08.0;Dra;0.79;0.63;10;14.60;;;;;22.75;Sb;;;;;;;;PGC 040233;;; -NGC4364;Dup;12:24:11.26;+58:21:38.4;UMa;;;;;;;;;;;;;;;4362;;;;;; -NGC4365;G;12:24:28.28;+07:19:03.6;Vir;5.12;3.66;40;11.50;;7.54;6.87;6.64;22.90;E;;;;;;;;2MASX J12242822+0719030,MCG +01-32-048,PGC 040375,UGC 07488;;; -NGC4366;G;12:24:47.01;+07:21:10.9;Vir;0.85;0.31;41;15.20;;12.62;11.99;11.73;23.35;E;;;;;;;;2MASX J12244694+0721113,MCG +01-32-050,PGC 040421,SDSS J122447.00+072110.8,SDSS J122447.00+072110.9,SDSS J122447.01+072110.9;;; -NGC4367;**;12:24:35.14;+12:10:56.3;Vir;;;;;;;;;;;;;;;;;;;;; -NGC4368;Dup;12:23:06.68;+10:37:16.3;Vir;;;;;;;;;;;;;;;4325;;;;;; -NGC4369;G;12:24:36.20;+39:22:58.8;CVn;1.98;1.89;175;12.30;;9.78;9.13;8.92;22.55;SBa;;;;;;;;2MASX J12243620+3922587,IRAS 12221+3939,MCG +07-26-004,PGC 040396,SDSS J122436.13+392259.8,UGC 07489;;; -NGC4370;G;12:24:54.90;+07:26:41.6;Vir;1.62;1.06;79;15.59;13.84;10.31;9.63;9.31;23.01;SBa;;;;;;;;2MASX J12245493+0726404,IRAS 12223+0743,MCG +01-32-051,PGC 040439,SDSS J122454.89+072641.5,SDSS J122454.90+072641.6,UGC 07492;;; -NGC4371;G;12:24:55.43;+11:42:15.2;Vir;3.88;1.81;96;11.79;10.81;8.60;7.96;7.72;23.30;S0-a;;;;;;;;2MASX J12245542+1142154,MCG +02-32-033,PGC 040442,SDSS J122455.43+114215.1,UGC 07493;;; -NGC4372;GCl;12:25:45.38;-72:39:32.7;Mus;12.00;;;10.86;9.85;;;;;;;;;;;;;C 108,MWSC 2029;;; -NGC4373;G;12:25:17.82;-39:45:35.0;Cen;3.98;2.11;54;11.59;11.05;8.58;7.92;7.65;23.61;E-S0;;;;;;;;2MASX J12251781-3945347,ESO 322-006,ESO-LV 322-0060,MCG -06-27-025,PGC 040498;;; -NGC4373A;G;12:25:37.73;-39:19:10.8;Cen;2.80;1.04;152;13.11;12.94;9.74;9.05;8.80;23.59;S0;;;;;;;;2MASX J12253773-3919110,ESO 322-008,ESO-LV 322-0080,IRAS 12229-3902,MCG -06-27-026,PGC 040549;;; -NGC4373B;G;12:26:43.78;-39:08:03.2;Cen;1.03;0.80;95;15.05;;13.76;13.25;12.71;23.63;SBd;;;;;;;;2MASX J12264376-3908033,ESO 322-010,ESO-LV 322-0100,MCG -06-27-027A,PGC 040735;;; -NGC4374;G;12:25:03.74;+12:53:13.1;Vir;7.41;6.44;133;12.09;10.49;7.12;6.47;6.22;23.23;E;;;;084;;;;2MASX J12250377+1253130,IRAS 12224+1309,MCG +02-32-034,PGC 040455,SDSS J122503.74+125312.8,UGC 07494;;; -NGC4375;G;12:25:00.47;+28:33:31.0;Com;1.16;0.85;14;13.90;;11.00;10.25;10.02;22.82;SBab;;;;;;;;2MASX J12250049+2833306,IRAS 12224+2850,MCG +05-29-080,PGC 040449,SDSS J122500.46+283330.9,SDSS J122500.47+283330.9,SDSS J122500.47+283331.0,UGC 07496;;; -NGC4376;G;12:25:18.06;+05:44:28.3;Vir;1.32;0.79;152;13.90;;12.16;11.53;11.23;22.69;I;;;;;;;;2MASX J12251806+0544280,IRAS 12227+0601,MCG +01-32-053,PGC 040494,SDSS J122518.01+054428.3,UGC 07498;;; -NGC4377;G;12:25:12.34;+14:45:43.8;Com;1.60;1.24;179;12.50;;9.73;9.06;8.83;22.43;E-S0;;;;;;;;2MASX J12251230+1445439,MCG +03-32-025,PGC 040477,SDSS J122512.33+144543.7,UGC 07501;;; -NGC4378;G;12:25:18.10;+04:55:30.5;Vir;2.09;1.93;155;14.51;13.49;9.42;8.72;8.51;22.54;Sa;;;;;;;;2MASX J12251807+0455300,MCG +01-32-052,PGC 040490,SDSS J122518.10+045530.5,UGC 07497;;; -NGC4379;G;12:25:14.74;+15:36:26.9;Com;1.87;1.52;103;12.63;11.72;9.65;8.96;8.77;22.63;E-S0;;;;;;;;2MASX J12251473+1536269,MCG +03-32-026,PGC 040484,UGC 07502;;; -NGC4380;G;12:25:22.17;+10:01:00.5;Vir;3.35;1.78;158;13.40;;9.23;8.44;8.33;23.24;SABa;;;;;;;;2MASX J12252217+1001001,IRAS 12228+1017,MCG +02-32-037,PGC 040507,SDSS J122522.16+100100.5,SDSS J122522.17+100100.5,UGC 07503;;; -NGC4381;Dup;12:23:58.82;+48:46:46.1;CVn;;;;;;;;;;;;;;;4357;;;;;; -NGC4382;G;12:25:24.11;+18:11:29.4;Com;6.95;5.35;12;10.20;9.05;7.06;6.42;6.15;22.87;S0-a;;;;085;;;;2MASX J12252405+1811278,MCG +03-32-029,PGC 040515,SDSS J122524.06+181127.7,UGC 07508;;;V-mag taken from LEDA -NGC4383;G;12:25:25.52;+16:28:12.5;Com;1.67;0.90;31;12.67;12.12;10.40;9.77;9.49;22.25;Sa;;;;;;;;2MASX J12252551+1628120,IRAS 12228+1644,MCG +03-32-030,PGC 040516,SDSS J122525.52+162812.4,UGC 07507;;; -NGC4384;G;12:25:11.98;+54:30:22.4;UMa;1.27;0.99;85;13.50;;11.36;10.68;10.38;22.66;Sa;;;;;;;;2MASX J12251201+5430220,IRAS 12227+5446,MCG +09-20-168,PGC 040475,SDSS J122511.97+543022.3,SDSS J122511.98+543022.3,SDSS J122511.98+543022.4,UGC 07506;;; -NGC4385;G;12:25:42.80;+00:34:21.4;Vir;2.15;1.16;91;14.63;14.12;10.65;10.02;9.78;23.41;S0-a;;;;;;;;2MASX J12254281+0034213,IRAS 12231+0050,MCG +00-32-009,PGC 040564,SDSS J122542.79+003420.3,SDSS J122542.80+003421.4,UGC 07515;;Confused HIPASS source; -NGC4386;G;12:24:28.35;+75:31:44.1;Dra;2.52;1.44;135;12.60;;9.45;8.71;8.50;23.38;S0;;;;;;;;2MASX J12242831+7531440,MCG +13-09-027,PGC 040378,UGC 07491;;; -NGC4387;G;12:25:41.68;+12:48:37.9;Vir;1.58;0.94;138;13.01;12.12;10.04;9.34;9.15;22.75;E;;;;;;;;2MASX J12254171+1248372,MCG +02-32-039,PGC 040562,SDSS J122541.67+124837.8,SDSS J122541.68+124837.8,SDSS J122541.68+124837.9,UGC 07517;;; -NGC4388;G;12:25:46.75;+12:39:43.5;Vir;5.38;1.29;91;11.76;11.02;8.98;8.25;8.00;23.20;SBb;;;;;;;;2MASX J12254682+1239434,IRAS 12232+1256,MCG +02-32-041,PGC 040581,SDSS J122546.72+123942.7,UGC 07520;;; -NGC4389;G;12:25:35.10;+45:41:04.8;CVn;2.51;1.67;98;12.64;;10.12;9.46;9.13;22.98;SBbc;;;;;;;;2MASX J12253509+4541048,MCG +08-23-028,PGC 040537,SDSS J122534.60+454106.8,SDSS J122534.61+454106.8,UGC 07514;;Multiple SDSS entries describe this object.; -NGC4390;G;12:25:50.67;+10:27:32.6;Vir;1.52;1.13;99;13.70;;11.30;10.67;10.33;22.74;Sc;;;;;;3320;;2MASX J12255069+1027323,IRAS 12233+1044,MCG +02-32-040,PGC 040597,SDSS J122550.67+102732.5,SDSS J122550.67+102732.6,UGC 07519;;; -NGC4391;G;12:25:18.79;+64:56:00.5;Dra;1.25;1.24;125;13.80;;10.82;10.10;9.93;22.99;E-S0;;;;;;;;2MASX J12251872+6456008,MCG +11-15-053,PGC 040500,SDSS J122518.79+645600.4,SDSS J122518.79+645600.5,UGC 07511;;; -NGC4392;G;12:25:18.96;+45:50:50.9;CVn;1.58;1.16;75;14.60;;11.12;10.43;10.12;24.02;S0;;;;;;;;2MASX J12251894+4550507,MCG +08-23-023,PGC 040499,SDSS J122518.95+455050.8,SDSS J122518.96+455050.8;;; -NGC4393;G;12:25:51.23;+27:33:41.6;Com;2.92;2.70;15;13.80;;;;;24.86;Scd;;;;;;;;MCG +05-29-083,PGC 040600,UGC 07521;;; -NGC4394;G;12:25:55.53;+18:12:50.6;Com;3.48;3.35;145;11.90;;9.10;8.40;8.16;23.05;SBb;;;;;;;;2MASX J12255562+1812501,IRAS 12234+1829,MCG +03-32-035,PGC 040614,UGC 07523;;; -NGC4395;G;12:25:48.86;+33:32:48.9;CVn;4.17;1.39;128;10.54;10.11;10.66;10.25;9.98;21.71;Sm;;;;;;;;2MASX J12254892+3332482,IRAS 12233+3348,MCG +06-27-053,PGC 040596,SDSS J122548.86+333248.7,SDSS J122548.87+333248.7,UGC 07524;;NGC 4399, 4400 and 4401 are HII regions in NGC 4395.; -NGC4396;G;12:25:58.82;+15:40:17.3;Com;2.97;1.04;124;13.06;12.58;11.06;10.46;10.34;23.32;Scd;;;;;;;;2MASX J12255880+1540172,IRAS 12234+1556,MCG +03-32-034,PGC 040622,UGC 07526;;HOLM 400B is a double star.; -NGC4397;Other;12:25:58.16;+18:18:03.7;Com;;;;;;;;;;;;;;;;;;;;"Three Galactic stars within 12""."; -NGC4398;*;12:26:07.43;+10:41:09.9;Vir;;;;;;;;;;;;;;;;;;SDSS J122607.43+104109.8;;; -NGC4399;Other;12:25:43.01;+33:30:57.9;CVn;;;;;;;;;;;;;;;;;;;;This is a superassociation in the galaxy NGC 4395.;This is a superassociation in the galaxy NGC 4395. -NGC4400;Other;12:25:55.91;+33:30:53.4;CVn;;;;;;;;;;;;;;;;;;;;This is a superassociation in the galaxy NGC 4395.;This is a superassociation in the galaxy NGC 4395. -NGC4401;Other;12:25:57.57;+33:31:42.1;CVn;;;;;;;;;;;;;;;;;;;;This is a superassociation in the galaxy NGC 4395.;This is a superassociation in the galaxy NGC 4395. -NGC4402;G;12:26:07.65;+13:06:48.0;Vir;3.52;1.00;89;12.55;;9.60;8.63;8.49;23.38;Sb;;;;;;;;2MASX J12260756+1306460,IRAS 12235+1323,MCG +02-32-044,PGC 040644,SDSS J122607.65+130647.9,SDSS J122607.71+130649.0,UGC 07528;;; -NGC4403;G;12:26:12.79;-07:41:05.8;Vir;1.58;0.61;17;14.00;;10.74;9.96;9.72;22.91;SBab;;;;;;;;2MASX J12261279-0741059,IRAS 12236-0724,MCG -01-32-008,PGC 040656;;; -NGC4404;G;12:26:16.21;-07:40:51.0;Vir;1.56;1.00;139;14.00;;10.73;10.11;9.77;23.93;E-S0;;;;;;;;2MASX J12261616-0740509,MCG -01-32-009,PGC 040666;;; -NGC4405;G;12:26:07.15;+16:10:51.6;Com;1.52;1.02;21;13.03;;10.28;9.58;9.38;22.47;S0-a;;;;;;0788;;2MASX J12260711+1610510,IRAS 12235+1627,MCG +03-32-036,PGC 040643,SDSS J122607.14+161051.5,SDSS J122607.14+161051.6,SDSS J122607.15+161051.6,UGC 07529;;; -NGC4406;G;12:26:11.74;+12:56:46.4;Vir;11.53;8.43;128;9.83;8.90;7.01;6.33;6.10;23.90;E;;;;086;;;;2MASX J12261181+1256454,MCG +02-32-046,PGC 040653,SDSS J122611.75+125646.3,UGC 07532;;HOLM 403H is a star.; -NGC4407;G;12:26:32.25;+12:36:39.5;Vir;2.08;1.46;53;13.60;12.25;10.63;10.11;9.79;22.91;Sab;;;;;4413;;;2MASX J12263225+1236390,IRAS 12239+1253,MCG +02-32-049,PGC 040705,SDSS J122632.24+123638.3,UGC 07538;;; -NGC4408;G;12:26:17.24;+27:52:16.2;Com;0.62;0.52;36;15.20;;12.12;11.39;11.12;23.09;E;;;;;;;;2MASX J12261724+2752158,PGC 040668,SDSS J122617.24+275216.1,SDSS J122617.24+275216.2,SDSS J122617.25+275216.2;;; -NGC4409;G;12:26:58.50;+02:29:39.7;Vir;1.82;0.89;9;12.70;;10.51;9.89;9.66;22.23;SBc;;;;;4420;;;2MASX J12265847+0229396,IRAS 12244+0246,MCG +01-32-064,PGC 040775,SDSS J122658.44+022936.6,SDSS J122658.50+022939.6,SDSS J122658.50+022939.7,UGC 07549;;; -NGC4410A;G;12:26:28.19;+09:01:09.0;Vir;0.62;0.45;0;13.60;;;;;21.51;Sa;;;;;;;;MCG +02-32-047 NED01,PGC 040694,UGC 07535 NED01;;ALFALFA source may include the galaxy NGC 4410 NED02.; -NGC4410B;G;12:26:29.58;+09:01:09.2;Vir;0.58;0.53;105;13.60;;10.45;9.72;9.46;21.72;S0-a;;;;;;;;2MASX J12262960+0901094,MCG +02-32-047 NED02,PGC 040697,SDSS J122629.57+090109.2,UGC 07535 NED02;;Identified as NGC 4410B and as UGC 07535 in VCC.; -NGC4410C;G;12:26:35.50;+09:02:07.7;Vir;0.85;0.56;93;15.20;;11.70;10.95;10.56;23.12;S0-a;;;;;;0790;;2MASX J12263547+0902074,MCG +02-32-051,PGC 040713,SDSS J122635.49+090207.6,SDSS J122635.50+090207.6,SDSS J122635.50+090207.7;;; -NGC4411;G;12:26:30.10;+08:52:20.0;Vir;1.63;0.98;19;14.40;;;;;22.69;Sc;;;;;4411A;3339;;MCG +02-32-048,PGC 040695,UGC 07537;;The position in 1995ApJS...96..359Y includes a superposed star.; -NGC4411B;G;12:26:47.23;+08:53:04.6;Vir;1.92;1.72;90;14.40;;12.14;11.41;10.71;23.04;SABc;;;;;;;;2MASX J12264721+0853044,IRAS 12242+0909,MCG +02-32-055,PGC 040745,SDSS J122647.22+085304.5,SDSS J122647.23+085304.5,SDSS J122647.23+085304.6,UGC 07546;;NGC 4411 and UGC 07590 may contribute to the HIPASS detection.; -NGC4412;G;12:26:36.08;+03:57:52.9;Vir;1.50;1.35;109;13.20;;10.76;10.17;9.65;22.54;Sb;;;;;;;;2MASX J12263610+0357526,IRAS 12240+0414,MCG +01-32-062,PGC 040715,SDSS J122636.08+035752.8,UGC 07536;;; -NGC4413;Dup;12:26:32.25;+12:36:39.5;Vir;;;;;;;;;;;;;;;4407;;;;;; -NGC4414;G;12:26:27.10;+31:13:24.7;Com;1.95;1.12;162;10.96;10.12;7.93;7.23;6.95;20.72;Sc;;;;;;;;2MASX J12262708+3113247,IRAS 12239+3129,MCG +05-29-085,PGC 040692,SDSS J122627.12+311324.5,UGC 07539;;; -NGC4415;G;12:26:40.49;+08:26:08.5;Vir;1.28;1.13;6;14.20;;11.12;10.52;10.19;22.86;S0-a;;;;;;;;2MASX J12264046+0826084,MCG +02-32-052,PGC 040727,SDSS J122640.48+082608.5,SDSS J122640.49+082608.5,UGC 07540;;; -NGC4416;G;12:26:46.72;+07:55:08.4;Vir;1.57;1.37;112;13.15;11.57;11.38;10.81;10.97;22.76;Sc;;;;;;;;2MASX J12264672+0755084,IRAS 12242+0811,MCG +01-32-063,PGC 040743,TYC 874-874-1,UGC 07541;;; -NGC4417;G;12:26:50.61;+09:35:03.3;Vir;3.09;1.09;49;12.20;;9.05;8.42;8.17;23.07;S0;;;;;;;;2MASX J12265062+0935028,MCG +02-32-053,PGC 040756,SDSS J122650.61+093503.3,UGC 07542;;; -NGC4418;Dup;12:26:54.62;-00:52:39.4;Vir;;;;;;;;;;;;;;;4355;;;;;; -NGC4419;G;12:26:56.44;+15:02:50.6;Com;3.89;1.30;133;12.08;11.16;8.78;8.04;7.74;23.17;Sa;;;;;;;;2MASX J12265643+1502507,IRAS 12244+1519,MCG +03-32-038,PGC 040772,SDSS J122656.42+150250.4,UGC 07551;;; -NGC4420;Dup;12:26:58.50;+02:29:39.7;Vir;;;;;;;;;;;;;;;4409;;;;;; -NGC4421;G;12:27:02.54;+15:27:41.3;Com;2.59;1.97;9;12.47;11.60;9.71;9.04;8.80;23.06;S0-a;;;;;;;;2MASX J12270254+1527406,MCG +03-32-039,PGC 040785,SDSS J122702.53+152741.3,SDSS J122702.54+152741.3,UGC 07554;;; -NGC4422;G;12:27:12.11;-05:49:51.6;Vir;1.48;1.43;80;14.50;;10.71;10.04;9.74;24.20;E-S0;;;;;;;;2MASX J12271208-0549511,MCG -01-32-010,PGC 040813;;; -NGC4423;G;12:27:08.97;+05:52:48.6;Vir;2.05;0.41;20;14.40;;11.49;10.74;11.05;22.79;Sd;;;;;;;;2MASX J12270897+0552488,IRAS 12246+0609,MCG +01-32-065,PGC 040801,SDSS J122708.99+055248.2,UGC 07556;;; -NGC4424;G;12:27:11.61;+09:25:14.4;Vir;3.04;1.57;95;13.10;;9.87;9.27;9.09;23.15;Sa;;;;;;;;2MASX J12271158+0925138,IRAS 12246+0941,MCG +02-32-058,PGC 040809,SDSS J122711.61+092514.4,UGC 07561;;; -NGC4425;G;12:27:13.33;+12:44:05.0;Vir;3.08;1.26;26;12.73;11.83;9.88;9.26;9.01;23.92;S0-a;;;;;;;;2MASX J12271335+1244052,MCG +02-32-059,PGC 040816,SDSS J122713.33+124405.1,SDSS J122713.34+124405.2,UGC 07562;;; -NGC4426;**;12:27:10.53;+27:50:17.5;Com;;;;;;;;;;;;;;;4427;;;;;; -NGC4427;Dup;12:27:10.53;+27:50:17.5;Com;;;;;;;;;;;;;;;4426;;;;;; -NGC4428;G;12:27:28.30;-08:10:04.4;Vir;1.62;0.67;93;14.50;;10.64;10.03;9.65;22.28;SABc;;;;;;;;2MASX J12272830-0810044,IRAS 12248-0753,MCG -01-32-012,PGC 040860;;; -NGC4429;G;12:27:26.51;+11:06:27.8;Vir;5.30;2.42;98;11.40;;7.73;7.01;6.78;23.17;S0-a;;;;;;;;2MASX J12272655+1106271,IRAS 12249+1123,MCG +02-32-061,PGC 040850,SDSS J122726.50+110627.7,UGC 07568;;; -NGC4430;G;12:27:26.41;+06:15:46.0;Vir;2.02;1.50;75;13.40;;10.29;9.71;9.35;22.69;Sb;;;;;;;;2MASX J12272638+0615455,IRAS 12248+0632,MCG +01-32-067,PGC 040851,SDSS J122726.40+061545.9,SDSS J122726.41+061546.0,UGC 07566;;; -NGC4431;G;12:27:27.38;+12:17:25.0;Vir;1.53;0.88;179;13.74;12.89;11.22;10.54;10.31;23.46;S0;;;;;;;;2MASX J12272735+1217252,MCG +02-32-062,PGC 040852,SDSS J122727.38+121725.0,UGC 07569;;; -NGC4432;G;12:27:32.97;+06:13:59.7;Vir;0.64;0.49;4;15.00;;13.32;12.54;12.52;22.56;SABb;;;;;;;;2MASX J12273295+0613595,MCG +01-32-068,PGC 040875,SDSS J122732.97+061400.0,UGC 07570;;; -NGC4433;G;12:27:38.59;-08:16:42.3;Vir;2.00;0.67;3;13.40;;10.62;9.89;9.51;22.82;SABa;;;;;;;;2MASX J12273860-0816424,IRAS 12250-0800,MCG -01-32-013,PGC 040894;;; -NGC4434;G;12:27:36.68;+08:09:15.6;Vir;1.42;1.36;75;13.20;;10.07;9.44;9.21;22.59;E;;;;;;;;2MASX J12273667+0809155,MCG +01-32-069,PGC 040886,SDSS J122736.68+080915.6,UGC 07571;;; -NGC4435;G;12:27:40.49;+13:04:44.2;Vir;3.03;2.14;12;11.74;10.80;8.42;7.16;7.30;22.66;S0;;;;;;;;2MASX J12274050+1304444,IRAS 12251+1321,MCG +02-32-064,PGC 040898,SDSS J122740.46+130444.4,UGC 07575;;; -NGC4436;G;12:27:41.24;+12:18:57.2;Vir;1.66;0.79;114;13.91;12.98;11.53;10.86;10.75;23.75;S0;;;;;;;;2MASX J12274122+1218574,MCG +02-32-066,PGC 040903,SDSS J122741.23+121857.2,SDSS J122741.24+121857.2,UGC 07573;;; -NGC4437;Dup;12:32:45.59;+00:06:54.1;Vir;;;;;;;;;;;;;;;4517;;;;;; -NGC4438;G;12:27:45.59;+13:00:31.8;Vir;9.16;4.02;27;11.02;10.17;8.25;7.56;7.27;24.21;Sa;;;;;;;;2MASX J12274565+1300309,IRAS 12252+1317,MCG +02-32-065,PGC 040914,SDSS J122745.63+130031.7,UGC 07574;;; -NGC4439;OCl;12:28:26.35;-60:06:11.6;Cru;4.50;;;8.73;8.40;;;;;;;;;;;;;MWSC 2035;;; -NGC4440;G;12:27:53.57;+12:17:35.8;Vir;1.77;1.44;120;12.70;11.72;9.82;9.14;8.91;22.66;Sa;;;;;;;;2MASX J12275357+1217354,MCG +02-32-067,PGC 040927,SDSS J122753.56+121735.8,UGC 07581;;; -NGC4441;G;12:27:20.35;+64:48:05.4;Dra;4.13;2.96;171;13.50;;10.94;10.30;10.01;25.13;S0-a;;;;;;;;2MASX J12272040+6448056,IRAS 12250+6504,MCG +11-15-056,PGC 040836,SDSS J122720.34+644805.4,SDSS J122720.35+644805.3,SDSS J122720.35+644805.4,SDSS J122720.36+644805.3,UGC 07572;;; -NGC4442;G;12:28:03.88;+09:48:13.4;Vir;4.32;1.61;87;11.20;;8.22;7.50;7.29;23.18;S0;;;;;;;;2MASX J12280389+0948130,MCG +02-32-068,PGC 040950,SDSS J122803.88+094813.3,UGC 07583;;; -NGC4443;Dup;12:29:03.01;+13:11:01.5;Vir;;;;;;;;;;;;;;;4461;;;;;; -NGC4444;G;12:28:36.41;-43:15:42.3;Cen;2.27;1.85;68;13.00;;10.42;9.73;9.41;23.40;SABb;;;;;;;;2MASX J12283639-4315423,ESO 268-010,ESO-LV 268-0100,IRAS 12259-4259,MCG -07-26-007,PGC 041043;;; -NGC4445;G;12:28:15.93;+09:26:10.3;Vir;2.54;0.50;105;13.70;;10.79;10.12;9.83;23.44;Sab;;;;;;0793;;2MASX J12281593+0926106,MCG +02-32-072,PGC 040987,SDSS J122815.92+092610.3,SDSS J122815.93+092610.7,UGC 07587;;; -NGC4446;G;12:28:06.79;+13:54:42.3;Com;0.98;0.59;89;15.00;;12.47;11.94;11.97;22.89;Sc;;;;;;;;2MASX J12280679+1354418,MCG +02-32-069,PGC 040962,SDSS J122806.78+135442.3,SDSS J122806.79+135442.3,UGC 07586;;; -NGC4447;G;12:28:12.53;+13:53:57.2;Com;0.75;0.62;117;15.20;;12.05;11.47;11.02;22.96;S0;;;;;;;;2MASX J12281256+1353569,MCG +02-32-073,PGC 040979,SDSS J122812.53+135357.2;;; -NGC4448;G;12:28:15.43;+28:37:13.1;Com;1.58;1.04;92;11.90;;8.73;8.06;7.81;21.52;SBab;;;;;;;;2MASX J12281542+2837130,IRAS 12257+2853,MCG +05-29-089,PGC 040988,UGC 07591;;; -NGC4449;G;12:28:11.10;+44:05:37.1;CVn;4.66;2.71;51;9.98;9.64;8.10;7.45;7.25;21.10;IB;;;;;;;;2MASX J12281111+4405368,C 021,MCG +07-26-009,PGC 040973,SDSS J122811.10+440537.0,UGC 07592;;One of two 6cm sources associated with [WB92] 1225+4417; -NGC4450;G;12:28:29.63;+17:05:05.8;Com;5.46;3.78;173;10.90;10.08;7.94;7.22;7.05;22.99;Sab;;;;;;;;2MASX J12282963+1705058,IRAS 12259+1721,MCG +03-32-048,PGC 041024,UGC 07594;;; -NGC4451;G;12:28:40.55;+09:15:31.7;Vir;1.35;0.86;166;13.40;;10.81;10.18;9.99;22.40;Sb;;;;;;;;2MASX J12284055+0915321,IRAS 12260+0932,MCG +02-32-079,PGC 041050,SDSS J122840.50+091533.7,UGC 07600;;; -NGC4452;G;12:28:43.31;+11:45:18.1;Vir;3.36;0.60;32;12.87;11.98;9.95;9.21;9.07;24.03;S0;;;;;;;;2MASX J12284362+1145261,MCG +02-32-080,PGC 041060,SDSS J122843.30+114518.1,SDSS J122843.31+114518.1,UGC 07601;;; -NGC4453;GPair;12:28:47.20;+06:30:27.0;Vir;1.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC4453 NED01;G;12:28:46.81;+06:30:43.2;Vir;0.63;0.30;157;15.40;;13.21;12.52;12.16;22.91;Sbc;;;;;;;;2MASX J12284685+0630429,IRAS 12262+0647,MCG +01-32-073,PGC 041072,SDSS J122846.81+063043.2;;; -NGC4453 NED02;G;12:28:47.68;+06:30:12.8;Vir;0.34;0.22;42;17.34;;;;;23.85;Scd;;;;;;;;MCG +01-32-073 NOTES01,SDSS J122847.68+063012.7,SDSS J122847.68+063012.8;;;B-Mag taken from LEDA -NGC4454;G;12:28:50.75;-01:56:21.1;Vir;2.17;1.99;25;12.72;11.87;10.01;9.33;9.05;23.16;S0-a;;;;;;;;2MASX J12285074-0156209,MCG +00-32-014,PGC 041083,SDSS J122850.74-015621.0,UGC 07606;;; -NGC4455;G;12:28:44.11;+22:49:13.6;Com;1.61;0.56;16;15.50;;;;;21.98;SBcd;;;;;;;;MCG +04-30-001,PGC 041066,SDSS J122844.11+224913.5,SDSS J122844.11+224913.6,UGC 07603;;; -NGC4456;G;12:27:52.40;-30:05:52.4;Hya;1.29;0.69;154;14.08;;11.35;10.61;10.34;22.92;Sbc;;;;;;;;2MASX J12275243-3005510,ESO 441-030,ESO-LV 441-0300,IRAS 12252-2949,MCG -05-30-002,PGC 040922,PGC 040925;;; -NGC4457;G;12:28:59.01;+03:34:14.1;Vir;2.79;2.37;79;11.90;;8.67;8.02;7.78;22.34;S0-a;;;;;;;;2MASX J12285901+0334141,IRAS 12264+0350,MCG +01-32-075,PGC 041101,SDSS J122858.90+033413.4,UGC 07609;;; -NGC4458;G;12:28:57.57;+13:14:30.8;Vir;1.59;1.48;175;12.93;12.07;10.22;9.57;9.32;22.79;E;;;;;;;;2MASX J12285753+1314308,MCG +02-32-082,PGC 041095,SDSS J122857.56+131430.9,UGC 07610;;; -NGC4459;G;12:29:00.01;+13:58:42.1;Com;4.17;3.16;109;11.60;;8.10;7.40;7.15;23.13;S0;;;;;;;;2MASX J12290002+1358428,IRAS 12264+1415,MCG +02-32-083,PGC 041104,SDSS J122900.03+135842.8,UGC 07614;;; -NGC4460;G;12:28:45.56;+44:51:51.2;CVn;3.93;1.05;40;12.50;;9.97;9.29;9.06;24.05;S0-a;;;;;;;;2MASX J12284555+4451512,MCG +08-23-041,PGC 041069,UGC 07611;;; -NGC4461;G;12:29:03.01;+13:11:01.5;Vir;3.61;1.23;8;12.09;11.19;8.97;8.24;8.01;23.35;S0-a;;;;;4443;;;2MASX J12290301+1311018,MCG +02-32-084,PGC 041111,SDSS J122903.00+131101.7,UGC 07613;;Identification as NGC 4443 is not certain.; -NGC4462;G;12:29:21.22;-23:09:58.9;Crv;3.60;1.33;124;12.81;11.54;9.44;8.74;8.46;23.71;SBab;;;;;;;;2MASX J12292109-2309598,ESO 506-013,ESO-LV 506-0130,IRAS 12266-2253,MCG -04-30-002,PGC 041150;;; -NGC4463;OCl;12:29:55.22;-64:47:22.8;Mus;4.80;;;7.62;7.20;;;;;;;;;;;;;MWSC 2042;;; -NGC4464;G;12:29:21.29;+08:09:23.8;Vir;1.01;0.76;11;13.50;;10.45;9.81;9.58;22.19;E-S0;;;;;;;;2MASX J12292131+0809236,MCG +01-32-078,PGC 041148,SDSS J122921.29+080923.8,UGC 07619;;; -NGC4465;G;12:29:23.54;+08:01:33.6;Vir;0.26;0.21;108;15.40;;13.94;13.34;12.99;20.88;Sc;;;;;;;;2MASX J12292353+0801336,PGC 041157,SDSS J122923.70+080135.7;;The SDSS image includes the star or companion to the northeast.; -NGC4466;G;12:29:30.57;+07:41:47.1;Vir;0.93;0.57;101;14.70;;;;;22.58;Sb;;;;;;;;MCG +01-32-081,PGC 041170,SDSS J122930.56+074147.1,SDSS J122930.57+074147.1,UGC 07626;;HOLM 412B is a star.; -NGC4467;G;12:29:30.25;+07:59:34.3;Vir;0.59;0.49;55;15.20;;11.43;11.31;10.49;22.66;E;;;;;;;;2MASX J12293026+0759346,MCG +01-32-080,PGC 041169,SDSS J122930.24+075934.2,SDSS J122930.24+075934.3,SDSS J122930.25+075934.3;;; -NGC4468;G;12:29:30.90;+14:02:56.7;Com;1.54;1.00;72;14.20;;11.10;10.49;10.24;23.45;E-S0;;;;;;;;2MASX J12293088+1402569,MCG +02-32-090,PGC 041171,SDSS J122930.89+140256.6,SDSS J122930.89+140256.7,SDSS J122930.90+140256.7,UGC 07628;;; -NGC4469;G;12:29:28.03;+08:44:59.7;Vir;2.86;1.05;87;12.60;;9.05;8.23;8.04;22.73;S0-a;;;;;;;;2MASX J12292799+0845006,IRAS 12269+0901,MCG +02-32-089,PGC 041164,SDSS J122928.02+084459.7,SDSS J122928.03+084459.7,UGC 07622;;; -NGC4470;G;12:29:37.78;+07:49:27.1;Vir;1.28;0.86;1;12.90;;10.88;10.30;10.12;22.10;Sab;;;;;4610;;;2MASX J12293780+0749266,IRAS 12270+0806,MCG +01-32-082,PGC 041189,SDSS J122937.77+074927.1,SDSS J122937.78+074927.1,UGC 07627;;; -NGC4471;G;12:29:37.05;+07:55:57.9;Vir;0.44;0.43;150;16.76;15.92;13.48;12.81;12.90;23.21;E;;;;;;;;2MASX J12293706+0755576,PGC 041185,SDSS J122937.05+075557.8,SDSS J122937.05+075557.9;;"NGC identification is doubtful; NGC 4471 is probably a nearby field star."; -NGC4472;G;12:29:46.76;+08:00:01.7;Vir;10.21;8.38;156;13.21;12.17;6.27;5.64;5.40;23.25;E;;;;049;;;;2MASX J12294679+0800014,MCG +01-32-083,PGC 041220,SDSS J122946.76+080001.7,UGC 07629;;HOLM 413B is a star.; -NGC4473;G;12:29:48.87;+13:25:45.7;Com;4.27;2.51;100;11.16;10.20;8.04;7.40;7.16;23.03;E;;;;;;;;2MASX J12294887+1325455,MCG +02-32-093,PGC 041228,SDSS J122948.86+132545.9,UGC 07631;;; -NGC4474;G;12:29:53.55;+14:04:06.9;Com;2.33;1.57;79;12.60;;9.62;8.97;8.70;23.01;S0;;;;;;;;2MASX J12295354+1404072,MCG +02-32-094,PGC 041241,SDSS J122953.54+140406.9,UGC 07634;;; -NGC4475;G;12:29:47.58;+27:14:36.0;Com;1.10;0.61;9;14.60;;11.81;11.05;10.98;23.05;SBbc;;;;;;;;2MASX J12294758+2714362,MCG +05-30-008,PGC 041225,SDSS J122947.57+271436.0,SDSS J122947.58+271436.0,UGC 07632;;; -NGC4476;G;12:29:59.08;+12:20:55.2;Vir;1.70;1.15;27;13.01;12.19;10.38;9.72;9.47;22.98;E-S0;;;;;;;;2MASX J12295908+1220552,IRAS 12274+1237,MCG +02-32-096,PGC 041255,SDSS J122959.08+122055.1,SDSS J122959.08+122055.2,UGC 07637;;; -NGC4477;G;12:30:02.20;+13:38:11.8;Com;3.70;3.22;26;11.38;10.42;8.28;7.60;7.35;22.86;S0;;;;;;;;2MASX J12300217+1338111,IRAS 12275+1354,MCG +02-32-097,PGC 041260,SDSS J123002.19+133811.5,UGC 07638;;; -NGC4478;G;12:30:17.42;+12:19:42.8;Vir;1.75;1.43;144;12.36;11.45;9.25;8.56;8.36;22.30;E;;;;;;;;2MASX J12301743+1219428,MCG +02-32-099,PGC 041297,SDSS J123017.41+121942.7,UGC 07645;;Multiple SDSS entries describe this object.; -NGC4479;G;12:30:18.37;+13:34:39.5;Com;1.43;1.25;14;13.40;12.44;10.64;10.02;9.77;23.00;S0;;;;;;;;2MASX J12301834+1334388,MCG +02-32-100,PGC 041302,SDSS J123018.37+133439.5,UGC 07646;;; -NGC4480;G;12:30:26.78;+04:14:47.7;Vir;1.89;0.97;173;13.40;;10.54;9.95;9.75;22.68;SABc;;;;;;;;2MASX J12302678+0414472,IRAS 12278+0431,MCG +01-32-087,PGC 041317,SDSS J123026.78+041447.6,SDSS J123026.78+041447.7,UGC 07647;;; -NGC4481;G;12:29:48.67;+64:01:58.8;Dra;1.23;0.52;146;14.30;;11.87;11.20;10.95;23.42;Sab;;;;;;;;2MASX J12294832+6402020,IRAS 12275+6418,MCG +11-15-057,PGC 041222,SDSS J122948.66+640158.8,SDSS J122948.67+640158.8,SDSS J122948.67+640158.9;;; -NGC4482;G;12:30:10.33;+10:46:46.1;Vir;1.51;0.85;137;14.20;;11.25;10.79;10.58;23.41;E;;;;;;3427;;2MASX J12301033+1046461,MCG +02-32-098,PGC 041272,SDSS J123010.32+104646.1,SDSS J123010.33+104646.1,UGC 07640;;; -NGC4483;G;12:30:40.65;+09:00:56.4;Vir;1.65;0.85;70;13.40;;10.11;9.50;9.29;22.86;S0-a;;;;;;;;2MASX J12304062+0900563,MCG +02-32-103,PGC 041339,SDSS J123040.64+090056.4,SDSS J123040.65+090056.4,UGC 07649;;; -NGC4484;G;12:28:52.68;-11:39:07.4;Crv;1.26;1.10;72;13.90;;11.83;11.13;11.17;23.33;Sc;;;;;;;;2MASX J12285267-1139073,IRAS 12262-1122,MCG -02-32-013,PGC 041087;;; -NGC4485;G;12:30:31.13;+41:42:04.2;CVn;2.01;1.34;2;12.42;11.93;11.01;10.44;10.58;22.22;I;;;;;;;;2MASX J12303111+4142042,MCG +07-26-013,PGC 041326,SDSS J123030.96+414201.4,UGC 07648;;; -NGC4486;G;12:30:49.42;+12:23:28.0;Vir;7.11;6.67;153;9.59;8.63;6.72;6.07;5.81;22.79;E;;;;087;;;;2MASX J12304942+1223279,IRAS 12282+1240,MCG +02-32-105,PGC 041361,SDSS J123049.41+122328.1,UGC 07654;Virgo Galaxy;; -NGC4486A;G;12:30:57.71;+12:16:13.3;Vir;0.92;0.81;25;11.20;;9.83;9.22;9.01;21.42;E;;;;;;;;2MASX J12305772+1216132,MCG +02-32-110,PGC 041377,SDSS J123057.71+121613.2,UGC 07658;;; -NGC4486B;G;12:30:31.97;+12:29:24.6;Vir;0.38;0.37;20;14.50;;11.01;10.29;10.09;21.00;E;;;;;;;;2MASX J12303198+1229248,MCG +02-32-101,PGC 041327,SDSS J123031.97+122924.6,UGCA 283;;; -NGC4487;G;12:31:04.46;-08:03:14.1;Vir;3.46;1.90;74;11.70;;10.07;9.39;9.35;22.75;Sc;;;;;;;;2MASX J12310446-0803140,IRAS 12285-0746,MCG -01-32-021,PGC 041399;;; -NGC4488;G;12:30:51.37;+08:21:36.0;Vir;2.75;0.76;167;13.80;;10.30;9.60;9.41;23.58;S0-a;;;;;;;;2MASX J12305139+0821364,MCG +02-32-104,PGC 041363,SDSS J123051.37+082135.9,SDSS J123051.37+082136.0,UGC 07653;;; -NGC4489;G;12:30:52.25;+16:45:31.9;Com;1.72;1.56;125;13.20;;10.24;9.59;9.37;23.02;E;;;;;;;;2MASX J12305224+1645313,MCG +03-32-054,PGC 041365,SDSS J123052.24+164531.8,UGC 07655;;; -NGC4490;G;12:30:36.24;+41:38:38.0;CVn;6.71;1.65;133;10.22;9.79;8.21;7.64;7.35;21.43;SBcd;;;;;;;;2MASX J12303636+4138370,IRAS 12281+4155,MCG +07-26-014,PGC 041333,UGC 07651;;; -NGC4491;G;12:30:57.11;+11:29:00.7;Vir;1.64;0.86;147;13.50;12.55;10.70;10.06;9.88;22.88;SBa;;;;;;;;2MASX J12305713+1129007,IRAS 12284+1145,MCG +02-32-107,PGC 041376,SDSS J123057.11+112900.7,UGC 07657;;; -NGC4492;G;12:30:59.71;+08:04:40.3;Vir;2.11;1.86;65;14.10;;9.87;9.33;9.08;22.94;Sa;;;;;;3438;;2MASX J12305975+0804404,MCG +01-32-089,PGC 041383,SDSS J123059.71+080440.3,UGC 07656;;; -NGC4493;G;12:31:08.37;+00:36:49.3;Vir;1.52;0.74;139;14.85;;11.32;10.54;10.32;24.51;E;;;;;;;;2MASX J12310835+0036496,MCG +00-32-017 NED01,PGC 041409,SDSS J123108.36+003649.3,SDSS J123108.37+003649.3,SDSS J123108.37+003649.4;;; -NGC4494;G;12:31:24.10;+25:46:30.9;Com;4.35;4.13;173;10.55;9.74;7.90;7.25;7.00;22.75;E;;;;;;;;2MASX J12312403+2546299,MCG +04-30-002,PGC 041441,UGC 07662;;The position given in 1996ApJS..106....1W is 11 arcsec west of the nucleus.; -NGC4495;G;12:31:22.88;+29:08:11.3;Com;1.34;0.57;132;14.19;13.46;11.28;10.51;10.14;23.02;Sab;;;;;;;;2MASX J12312290+2908109,IRAS 12289+2924,MCG +05-30-012,PGC 041438,SDSS J123122.88+290811.3,UGC 07663;;; -NGC4496A;G;12:31:39.21;+03:56:22.1;Vir;3.37;2.78;68;11.71;;10.32;9.78;9.56;23.32;Scd;;;;;4505;;;2MASX J12313920+0356220,MCG +01-32-090 NED01,PGC 041471,SDSS J123139.23+035622.1,UGC 07668 NED01;;; -NGC4496B;G;12:31:40.88;+03:55:34.8;Vir;1.05;0.91;112;14.50;;11.07;10.50;10.28;23.27;SBm;;;;;;;;2MASX J12314087+0355350,MCG +01-32-090 NED02,PGC 041473,SDSS J123140.88+035534.7,SDSS J123140.88+035534.8,SDSS J123140.89+035534.7,UGC 07668 NED02;;; -NGC4497;G;12:31:32.53;+11:37:29.0;Vir;2.00;1.03;62;13.19;12.47;10.61;9.94;9.74;23.37;S0-a;;;;;;3452;;2MASX J12313253+1137291,MCG +02-32-113,PGC 041457,SDSS J123132.52+113728.9,SDSS J123132.53+113729.0,UGC 07665;;; -NGC4498;G;12:31:39.56;+16:51:10.0;Com;2.88;1.53;131;12.80;;10.64;9.93;9.66;23.25;Sc;;;;;;;;2MASX J12313956+1651101,IRAS 12291+1707,MCG +03-32-056,PGC 041472,UGC 07669;;; -NGC4499;G;12:32:04.94;-39:58:56.9;Cen;2.01;1.29;102;13.58;;10.91;10.21;9.93;23.87;SBbc;;;;;;;;2MASX J12320494-3958568,ESO 322-022,ESO-LV 322-0220,MCG -07-26-008,PGC 041537;;; -NGC4500;G;12:31:22.16;+57:57:52.7;UMa;1.53;1.06;135;13.20;;10.67;10.06;9.75;22.59;Sa;;;;;;;;2MASX J12312214+5757528,IRAS 12290+5814,MCG +10-18-062,PGC 041436,SDSS J123122.15+575752.4,UGC 07667;;; -NGC4501;G;12:31:59.16;+14:25:13.4;Com;8.65;4.38;138;14.33;13.18;7.21;6.56;6.27;23.17;Sb;;;;088;;;;2MASX J12315921+1425134,IRAS 12294+1441,MCG +03-32-059,PGC 041517,UGC 07675;;; -NGC4502;G;12:32:03.35;+16:41:15.8;Com;1.04;0.54;43;14.80;;12.50;11.96;11.90;22.83;Sc;;;;;;;;2MASX J12320335+1641157,MCG +03-32-060,PGC 041531,SDSS J123203.22+164115.4,UGC 07677;;; -NGC4503;G;12:32:06.23;+11:10:35.1;Vir;3.48;1.58;12;12.05;11.07;8.82;8.14;7.89;23.34;S0;;;;;;;;2MASX J12320619+1110351,MCG +02-32-118,PGC 041538,SDSS J123206.23+111035.0,UGC 07680;;; -NGC4504;G;12:32:17.45;-07:33:48.4;Vir;3.18;1.97;163;12.10;;10.29;9.66;9.50;23.01;SABc;;;;;;;;2MASX J12321745-0733483,IRAS 12296-0717,MCG -01-32-022,PGC 041555;;; -NGC4505;Dup;12:31:39.21;+03:56:22.1;Vir;;;;;;;;;;;;;;;4496A;;;;;; -NGC4506;G;12:32:10.53;+13:25:10.6;Com;1.63;1.11;107;13.63;;11.04;10.52;10.26;23.18;SABa;;;;;;;;2MASX J12321048+1325107,MCG +02-32-120,PGC 041546,SDSS J123210.52+132510.6,SDSS J123210.53+132510.6,UGC 07682;;; -NGC4507;G;12:35:36.63;-39:54:33.3;Cen;1.39;1.19;50;12.95;13.54;9.93;9.20;8.87;22.37;Sab;;;;;;;;2MASX J12353661-3954331,ESO 322-029,ESO-LV 322-0290,IRAS 12329-3938,MCG -07-26-011,PGC 041960;;; -NGC4508;**;12:32:17.42;+05:49:11.9;Vir;;;;;;;;;;;;;;;;;;;;; -NGC4509;G;12:33:06.79;+32:05:29.6;CVn;0.67;0.37;161;14.10;;13.51;12.69;12.71;21.87;Sb;;;;;;;;2MASX J12330650+3205273,IRAS 12306+3222,MCG +05-30-018,PGC 041660,UGC 07704;;; -NGC4510;G;12:31:47.21;+64:14:01.7;Dra;1.46;0.84;151;14.20;;11.18;10.49;10.24;23.72;E;;;;;;;;2MASX J12314721+6414019,MCG +11-15-058,PGC 041489,SDSS J123147.21+641401.6,UGC 07679;;; -NGC4511;G;12:32:08.11;+56:28:16.2;UMa;0.92;0.57;7;14.00;;11.86;11.18;11.00;22.84;Sb;;;;;;;;2MASX J12320816+5628159,MCG +10-18-063,PGC 041560,SDSS J123208.10+562816.1,SDSS J123208.10+562816.2,SDSS J123208.11+562816.1,SDSS J123208.11+562816.4;;; -NGC4512;G;12:32:47.65;+63:56:21.1;Dra;2.57;0.50;166;13.00;;9.98;9.25;9.09;23.56;S0-a;;;;;4521;;;2MASX J12324772+6356214,MCG +11-15-061,PGC 041621,SDSS J123247.65+635621.1,SDSS J123247.65+635621.2,UGC 07706;;; -NGC4513;G;12:32:01.52;+66:19:57.3;Dra;2.06;1.35;16;14.10;;11.05;10.42;10.22;24.28;S0;;;;;;;;2MASX J12320145+6619575,MCG +11-15-059,PGC 041527,SDSS J123201.51+661957.5,SDSS J123201.52+661957.3,UGC 07683;;; -NGC4514;G;12:32:42.97;+29:42:44.6;Com;1.00;0.80;62;14.68;13.98;11.84;11.18;10.98;22.96;Sbc;;;;;;;;2MASX J12324296+2942441,MCG +05-30-015,PGC 041610,SDSS J123242.96+294244.5,SDSS J123242.97+294244.5,SDSS J123242.97+294244.6,UGC 07693;;; -NGC4515;G;12:33:04.97;+16:15:55.9;Com;1.35;1.06;6;13.30;;10.70;10.06;9.89;22.74;E-S0;;;;;;;;2MASX J12330494+1615557,MCG +03-32-065,PGC 041652,SDSS J123304.96+161555.9,SDSS J123304.97+161555.9,UGC 07701;;; -NGC4516;G;12:33:07.54;+14:34:29.8;Com;1.75;0.97;175;13.90;;10.90;10.19;9.99;23.16;SBa;;;;;;;;2MASX J12330756+1434297,MCG +03-32-067,PGC 041661,SDSS J123307.53+143429.7,SDSS J123307.53+143429.8,SDSS J123307.54+143429.8,UGC 07703;;; -NGC4517;G;12:32:45.59;+00:06:54.1;Vir;9.02;1.42;84;11.10;;8.36;7.62;7.33;23.18;Sc;;;;;4437;;;2MASX J12324558+0006541,IRAS 12301+0023,MCG +00-32-020,PGC 041618,SDSS J123244.76+000655.1,UGC 07694;;Host galaxy of UM 505.; -NGC4517A;G;12:32:28.15;+00:23:22.8;Vir;2.05;0.98;30;12.70;;;;;22.45;Sd;;;;;;;;MCG +00-32-019,PGC 041578,SDSS J123227.94+002326.2,SDSS J123227.95+002326.4,SDSS J123228.08+002319.3,SDSS J123228.08+002326.4,UGC 07685;;Multiple SDSS entries describe this object.; -NGC4518;G;12:33:11.76;+07:51:05.9;Vir;1.18;0.58;179;15.00;;11.24;10.53;10.26;23.58;S0-a;;;;;;;;2MASX J12331176+0751057,MCG +01-32-095,PGC 041674,SDSS J123311.75+075105.8,SDSS J123311.76+075105.9;;; -NGC4519;G;12:33:30.25;+08:39:17.1;Vir;2.33;1.77;147;12.80;;10.52;9.95;9.56;22.72;Scd;;;;;;;;2MASX J12333027+0839160,IRAS 12308+0856,MCG +02-32-135,PGC 041719,SDSS J123330.25+083917.0,SDSS J123330.25+083917.1,UGC 07709;;; -NGC4519A;G;12:33:24.71;+08:41:26.7;Vir;0.58;0.30;45;15.58;;;13.17;;22.68;I;;;;;;;;MCG +02-32-134,PGC 041706,SDSS J123324.70+084126.7;;; -NGC4520;G;12:33:49.90;-07:22:32.0;Vir;0.79;0.46;98;13.91;;11.27;10.74;10.36;23.01;E-S0;;;;;;0799;;2MASX J12334988-0722318,PGC 041748;;; -NGC4521;Dup;12:32:47.65;+63:56:21.1;Dra;;;;;;;;;;;;;;;4512;;;;;; -NGC4522;G;12:33:39.71;+09:10:30.1;Vir;3.51;0.91;34;13.60;;10.74;10.13;9.80;23.27;Sc;;;;;;;;2MASX J12333965+0910295,IRAS 12311+0926,MCG +02-32-137,PGC 041729,SDSS J123339.70+091030.0,SDSS J123339.71+091030.0,SDSS J123339.71+091030.1,UGC 07711;;; -NGC4523;G;12:33:48.00;+15:10:05.9;Com;1.24;1.15;0;15.10;;;10.98;;23.06;Sm;;;;;;;;IRAS 12313+1526,MCG +03-32-068,PGC 041746,SDSS J123347.74+151001.6,SDSS J123347.99+151005.8,UGC 07713;;The 2MASS position applies to the compact object 11 arcsec southeast.; -NGC4524;G;12:33:54.39;-12:01:39.4;Crv;1.25;0.70;80;14.00;;11.81;11.17;10.97;23.01;SABb;;;;;;;;2MASX J12335438-1201392,MCG -02-32-014,PGC 041757;;; -NGC4525;G;12:33:51.14;+30:16:38.9;Com;2.00;1.03;53;13.00;;10.89;10.24;9.99;22.91;Sc;;;;;;;;2MASX J12335119+3016390,MCG +05-30-020,PGC 041755,SDSS J123351.13+301638.9,SDSS J123351.14+301638.9,UGC 07714;;; -NGC4526;G;12:34:03.09;+07:41:58.3;Vir;6.95;2.47;138;10.60;;7.45;6.70;6.47;23.43;S0;;;;;4560;;;2MASX J12340302+0741569,IRAS 12315+0758,MCG +01-32-100,PGC 041772,SDSS J123402.98+074157.4,UGC 07718;;; -NGC4527;G;12:34:08.42;+02:39:13.2;Vir;6.30;1.72;69;12.40;;8.02;7.26;6.93;23.10;SABb;;;;;;;;2MASX J12340849+0239137,IRAS 12315+0255,MCG +01-32-101,PGC 041789,SDSS J123408.44+023913.7,UGC 07721;;; -NGC4528;G;12:34:06.07;+11:19:16.5;Vir;1.60;0.86;5;12.97;12.06;9.88;9.14;8.97;22.60;S0;;;;;;;;2MASX J12340606+1119165,MCG +02-32-140,PGC 041781,SDSS J123406.07+111916.5,TYC 877-409-1,UGC 07722;;; -NGC4529;G;12:32:51.65;+20:11:00.6;Com;1.11;0.25;98;15.30;;13.44;12.72;12.94;22.84;Sc;;;;;;;;2MASX J12325162+2011013,MCG +03-32-064,PGC 041639,SDSS J123251.64+201100.5,SDSS J123251.64+201100.6,UGC 07697;;"Identification as NGC 4529 is uncertain; N4529 may be CGCG 129-006."; -NGC4530;*;12:33:47.71;+41:21:12.5;CVn;;;;;;;;;;;;;;;;;;;;; -NGC4531;G;12:34:15.89;+13:04:31.2;Vir;3.03;1.97;155;12.42;;9.59;8.99;8.76;23.40;S0-a;;;;;;;;2MASX J12341584+1304318,IRAS 12317+1321,MCG +02-32-141,PGC 041806,SDSS J123415.88+130431.1,TYC 880-751-1,UGC 07729;;; -NGC4532;G;12:34:19.33;+06:28:03.7;Vir;2.49;0.88;161;12.30;;10.43;9.75;9.48;22.02;I;;;;;;;;2MASX J12341932+0628037,IRAS 12317+0644,MCG +01-32-103,PGC 041811,SDSS J123418.74+062823.6,UGC 07726;;The SDSS position is for a knot at the northwest end of the galaxy.; -NGC4533;G;12:34:22.02;+02:19:31.3;Vir;1.82;0.43;165;14.70;;;;;23.04;Scd;;;;;;;;MCG +01-32-102,PGC 041816,SDSS J123422.02+021931.2,SDSS J123422.02+021931.3,UGC 07725;;; -NGC4534;G;12:34:05.42;+35:31:06.0;CVn;2.78;1.64;120;13.20;;;;;23.71;SABd;;;;;;;;MCG +06-28-010,PGC 041779,SDSS J123405.41+353105.9,SDSS J123405.42+353106.0,UGC 07723;;HOLM 419B superposed on southeast side.; -NGC4535;G;12:34:20.31;+08:11:51.9;Vir;8.15;7.48;27;11.10;;8.23;7.65;7.38;23.79;Sc;;;;;;;;2MASX J12342031+0811519,IRAS 12318+0828,MCG +01-32-104,PGC 041812,UGC 07727;;; -NGC4536;G;12:34:27.05;+02:11:17.3;Vir;7.08;2.55;121;11.16;10.55;8.50;7.88;7.52;23.26;SABb;;;;;;;;2MASS J12342707+0211174,2MASX J12342712+0211163,IRAS 12318+0227,MCG +00-32-023,PGC 041823,SDSS J123427.04+021117.2,UGC 07732;;Contains the possible HII region UM 506.; -NGC4537;G;12:34:48.91;+50:48:18.6;CVn;1.34;0.76;21;15.50;;11.73;11.02;10.62;24.42;S0-a;;;;;4542;;;2MASX J12344888+5048184,MCG +09-21-021,PGC 041864,SDSS J123448.90+504818.5,UGC 07746;;; -NGC4538;G;12:34:40.90;+03:19:25.2;Vir;0.71;0.40;80;14.80;;12.51;11.83;11.68;22.14;Sc;;;;;;;;2MASX J12344093+0319253,IRAS 12320+0336,MCG +01-32-105,PGC 041850,SDSS J123440.89+031925.1,SDSS J123440.90+031925.2;;; -NGC4539;G;12:34:34.74;+18:12:09.7;Com;2.74;1.08;94;13.50;;10.37;9.61;9.45;23.46;Sa;;;;;;;;2MASX J12343476+1812092,MCG +03-32-071,PGC 041839,SDSS J123434.73+181209.6,UGC 07735;;; -NGC4540;G;12:34:50.87;+15:33:06.2;Com;2.19;1.83;43;12.50;;10.24;9.55;9.24;22.61;SABc;;;;;;;;2MASX J12345086+1533052,IRAS 12323+1549,MCG +03-32-074,PGC 041876,SDSS J123450.86+153306.1,UGC 07742;;; -NGC4541;G;12:35:10.66;-00:13:16.1;Vir;1.63;0.64;91;14.00;;11.12;10.46;10.15;23.04;SABb;;;;;;;;2MASX J12351066-0013157,IRAS 12326+0003,MCG +00-32-024,PGC 041911,SDSS J123510.66-001316.1,UGC 07749;;; -NGC4542;Dup;12:34:48.91;+50:48:18.6;CVn;;;;;;;;;;;;;;;4537;;;;;; -NGC4543;G;12:35:20.24;+06:06:54.3;Vir;1.02;0.63;178;14.60;;11.51;10.76;10.54;23.15;E;;;;;;;;2MASX J12352028+0606551,MCG +01-32-109,PGC 041923,SDSS J123520.23+060654.3;;; -NGC4544;G;12:35:36.57;+03:02:04.3;Vir;1.93;0.60;163;14.40;;11.14;10.42;10.11;23.42;SBa;;;;;;;;2MASX J12353660+0302043,MCG +01-32-110,PGC 041958,SDSS J123536.57+030204.2,SDSS J123536.57+030204.3,UGC 07756;;; -NGC4545;G;12:34:34.15;+63:31:30.2;Dra;2.43;1.37;9;13.10;;10.92;10.26;9.97;23.53;Sc;;;;;;;;2MASX J12343421+6331301,IRAS 12323+6348,MCG +11-15-064,PGC 041838,SDSS J123434.13+633130.5,SDSS J123434.14+633130.2,SDSS J123434.15+633130.2,UGC 07747;;; -NGC4546;G;12:35:29.51;-03:47:35.5;Vir;3.16;1.76;90;11.30;10.32;8.31;7.64;7.39;22.56;E-S0;;;;;;;;2MASX J12352950-0347356,MCG -01-32-027,PGC 041939,UGCA 288;;The APM position refers to the northeast side of the galaxy.; -NGC4547;G;12:34:51.84;+58:55:00.4;UMa;1.19;0.92;38;15.30;;11.53;11.20;10.56;24.24;E;;;;;;;;2MASX J12345191+5855002,MCG +10-18-069,PGC 041896,SDSS J123451.82+585500.6,SDSS J123451.83+585500.4,SDSS J123451.84+585500.3,SDSS J123451.84+585500.4;;Incorrectly identified as NGC 4549 in MCG.; -NGC4548;G;12:35:26.45;+14:29:46.8;Com;5.55;4.52;150;14.63;13.57;8.01;7.37;7.12;23.24;Sb;;;;091;;;;2MASX J12352642+1429467,IRAS 12328+1446,MCG +03-32-075,PGC 041934,SDSS J123526.45+142946.8,UGC 07753;;; -NGC4549;G;12:35:21.27;+58:56:58.8;UMa;0.60;0.27;100;16.00;;13.04;12.35;12.11;23.20;SABb;;;;;;;;2MASX J12352123+5856592,MCG +10-18-072,PGC 041954,SDSS J123521.26+585658.8,SDSS J123521.26+585659.0,SDSS J123521.27+585658.8;;; -NGC4550;G;12:35:30.58;+12:13:15.0;Vir;3.16;0.71;179;12.56;11.68;9.55;8.87;8.69;23.57;S0;;;;;;;;2MASX J12353061+1213154,MCG +02-32-147,PGC 041943,SDSS J123530.58+121314.9,UGC 07757;;; -NGC4551;G;12:35:37.95;+12:15:50.3;Vir;1.71;1.26;67;12.97;12.02;9.78;9.11;8.87;22.87;E;;;;;;;;2MASX J12353797+1215504,MCG +02-32-148,PGC 041963,SDSS J123537.95+121550.3,UGC 07759;;; -NGC4552;G;12:35:39.81;+12:33:22.8;Vir;8.13;8.00;150;10.73;9.75;7.62;6.94;6.73;24.11;E;;;;089;;;;2MASX J12353988+1233217,MCG +02-32-149,PGC 041968,SDSS J123539.80+123322.8,UGC 07760;;; -NGC4553;G;12:36:07.60;-39:26:19.2;Cen;2.59;1.34;175;13.31;13.20;9.95;9.25;8.94;23.98;S0-a;;;;;;;;2MASX J12360761-3926191,ESO 322-030,ESO-LV 322-0300,MCG -06-28-006,PGC 042018;;; -NGC4554;**;12:35:59.52;+11:15:55.3;Vir;;;;;;;;;;;;;;;;;;;;Identification as NGC 4554 is very uncertain.; -NGC4555;G;12:35:41.18;+26:31:23.2;Com;1.40;1.04;121;13.50;;10.18;9.45;9.17;23.03;E;;;;;;3545;;2MASX J12354118+2631227,MCG +05-30-026,PGC 041975,SDSS J123541.17+263123.0,SDSS J123541.19+263123.0,SDSS J123541.19+263123.1,UGC 07762;;; -NGC4556;G;12:35:45.86;+26:54:32.0;Com;1.31;0.87;81;14.40;;10.89;10.23;9.91;23.65;E;;;;;;;;2MASX J12354585+2654317,MCG +05-30-027,PGC 041980,SDSS J123545.85+265431.9,SDSS J123545.85+265432.0,SDSS J123545.86+265432.0,SDSS J123545.87+265431.9,UGC 07765;;; -NGC4557;Other;12:35:49.74;+27:03:13.6;Com;;;;;;;;;;;;;;;;;;SDSS J123549.74+270313.6;;Galactic triple star.; -NGC4558;G;12:35:52.65;+26:59:31.7;Com;0.73;0.31;95;15.10;;11.86;11.15;10.84;23.07;S0-a;;;;;;;;2MASX J12355268+2659310,MCG +05-30-028,PGC 041995,SDSS J123552.64+265931.6,SDSS J123552.65+265931.7;;; -NGC4559;G;12:35:57.65;+27:57:36.0;Com;10.57;4.82;148;10.46;10.01;8.41;7.83;7.58;23.48;Sc;;;;;;;;2MASX J12355768+2757351,C 036,IRAS 12334+2814,MCG +05-30-030,PGC 042002,SDSS J123557.64+275735.9,UGC 07766;;; -NGC4559A;G;12:36:53.44;+27:51:43.3;Com;0.40;0.21;133;15.10;;12.20;11.51;11.15;21.73;Sa;;;;;;3592;;2MASX J12365341+2751439,MCG +05-30-038,PGC 042097,SDSS J123653.44+275143.2,SDSS J123653.44+275143.3,SDSS J123653.45+275143.3,UGC 07789;;; -NGC4559B;G;12:36:53.93;+27:44:56.8;Com;0.62;0.25;3;15.40;;12.68;11.83;11.76;22.58;SBab;;;;;;3593;;2MASX J12365393+2744569,IRAS F12344+2801,MCG +05-30-039,PGC 042098,SDSS J123653.92+274456.7,SDSS J123653.92+274456.8,SDSS J123653.93+274456.8;;; -NGC4559C;HII;12:35:52.12;+27:55:55.5;Com;;;;;;;;;;;;;;;;3550;;;;This is an HII region in NGC 4559.; -NGC4560;Dup;12:34:03.09;+07:41:58.3;Vir;;;;;;;;;;;;;;;4526;;;;;; -NGC4561;G;12:36:08.20;+19:19:22.5;Com;1.32;1.12;61;12.70;;11.50;10.98;10.63;22.24;SBcd;;;;;;3569;;2MASX J12360813+1919213,IRAS 12336+1935,MCG +03-32-076,PGC 042020,UGC 07768;;; -NGC4562;G;12:35:34.80;+25:51:00.0;Com;1.93;0.64;49;14.60;;;;;23.59;SBcd;;;;;4565A;;;MCG +04-30-004,PGC 041955,SDSS J123534.57+255058.5,UGC 07758;;; -NGC4563;G;12:36:12.88;+26:56:29.2;Com;0.56;0.40;106;15.70;;12.64;11.84;11.67;23.16;E;;;;;;;;2MASX J12361287+2656290,MCG +05-30-033,PGC 042030,SDSS J123612.87+265629.2,SDSS J123612.88+265629.2;;; -NGC4564;G;12:36:26.98;+11:26:21.4;Vir;3.13;1.68;48;12.05;11.12;8.87;8.09;7.94;23.25;E;;;;;;;;2MASX J12362699+1126215,MCG +02-32-150,PGC 042051,SDSS J123626.98+112621.2,UGC 07773;;; -NGC4565;G;12:36:20.78;+25:59:15.6;Com;16.75;2.89;135;13.61;12.43;7.16;6.31;6.06;23.75;Sb;;;;;;;;2MASX J12362080+2559146,C 038,IRAS 12338+2615,MCG +04-30-006,PGC 042038,UGC 07772;Needle Galaxy;HOLM 426D is a star.; -NGC4565A;Dup;12:35:34.80;+25:51:00.0;Com;;;;;;;;;;;;;;;4562;;;;;; -NGC4565B;G;12:35:41.69;+26:13:19.9;Com;0.80;0.45;139;15.30;;12.58;11.98;11.63;23.02;Sbc;;;;;;3546;;2MASX J12354167+2613197,MCG +04-30-005,PGC 041976,SDSS J123541.68+261319.8,SDSS J123541.69+261319.9;;; -NGC4565C;G;12:35:41.42;+26:17:09.0;Com;0.96;0.14;141;16.50;;13.60;13.20;12.77;23.53;Scd;;;;;;3543;;2MASX J12354145+2617077,PGC 041974,SDSS J123541.42+261708.9,SDSS J123541.42+261709.0,UGC 07764;;; -NGC4566;G;12:36:00.11;+54:13:15.5;UMa;1.08;0.75;72;14.17;13.31;11.11;10.47;10.24;22.64;SBb;;;;;;;;2MASX J12360013+5413150,MCG +09-21-024,PGC 042007,SDSS J123600.10+541315.5,SDSS J123600.10+541315.6,SDSS J123600.11+541315.4,SDSS J123600.11+541315.5,UGC 07769;;; -NGC4567;G;12:36:32.71;+11:15:28.8;Vir;2.74;2.15;89;12.06;11.31;9.19;8.57;8.30;22.67;Sbc;;;;;;;;2MASX J12363270+1115283,MCG +02-32-151,PGC 042064,SDSS J123632.70+111528.7,SDSS J123632.71+111528.8,UGC 07777;;ALFALFA source is a blend of this and NGC 4568.; -NGC4568;G;12:36:34.26;+11:14:20.0;Vir;4.31;1.87;29;12.11;11.19;8.52;7.82;7.52;22.89;Sbc;;;;;;;;2MASX J12363429+1114190,MCG +02-32-152,PGC 042069,SDSS J123634.26+111419.9,SDSS J123634.26+111420.0,UGC 07776;;; -NGC4569;G;12:36:49.79;+13:09:46.6;Vir;9.12;3.82;22;10.26;9.54;7.50;6.79;6.58;23.16;Sab;;;;090;;;;2MASX J12364981+1309463,IRAS 12343+1326,MCG +02-32-155,PGC 042089,SDSS J123649.79+130946.5,UGC 07786;;; -NGC4570;G;12:36:53.40;+07:14:47.9;Vir;3.88;0.94;160;11.80;;8.61;7.93;7.69;23.30;S0;;;;;;;;2MASX J12365340+0714479,MCG +01-32-114,PGC 042096,UGC 07785;;; -NGC4571;G;12:36:56.38;+14:13:02.5;Com;3.56;3.31;35;13.60;;9.26;8.85;8.52;23.36;Sc;;;;;;3588;;2MASX J12365637+1413024,IRAS 12344+1429,MCG +02-32-156,PGC 042100,SDSS J123656.37+141302.4,UGC 07788;;; -NGC4572;G;12:35:45.30;+74:14:44.0;Dra;1.47;0.42;168;14.90;;;;;23.36;Sc;;;;;;;;2MASX J12354538+7414334,MCG +12-12-012,PGC 041991,UGC 07775;;; -NGC4573;G;12:37:43.79;-43:37:16.1;Cen;2.49;1.89;125;13.48;;10.61;9.98;9.65;24.52;S0-a;;;;;;;;2MASX J12374380-4337163,ESO 268-026,ESO-LV 268-0260,MCG -07-26-014,PGC 042167;;; -NGC4574;G;12:37:43.51;-35:31:03.5;Cen;1.83;1.14;112;13.69;;11.22;10.67;10.29;23.26;SABc;;;;;;;;2MASX J12374350-3531037,ESO 380-049,ESO-LV 380-0490,IRAS 12350-3514,MCG -06-28-007,PGC 042166;;; -NGC4575;G;12:37:51.12;-40:32:14.5;Cen;2.06;1.24;109;13.13;13.06;10.31;9.64;9.35;23.06;SBbc;;;;;;;;2MASX J12375111-4032146,ESO 322-036,ESO-LV 322-0360,IRAS 12351-4015,MCG -07-26-015,PGC 042181;;; -NGC4576;G;12:37:33.56;+04:22:03.7;Vir;1.22;0.66;152;14.70;;11.76;11.07;10.69;22.94;SABb;;;;;;;;2MASX J12373357+0422034,MCG +01-32-116,PGC 042152,SDSS J123733.55+042203.6,SDSS J123733.56+042203.6,SDSS J123733.56+042203.7,UGC 07792;;; -NGC4577;G;12:39:12.44;+06:00:44.3;Vir;1.42;0.78;39;14.10;;11.18;10.47;10.24;22.90;SBb;;;;;4591;;;2MASX J12391244+0600439,IRAS 12366+0617,MCG +01-32-125,PGC 042319,SDSS J123912.44+060044.3,UGC 07821;;Identification as NGC 4577 is uncertain.; -NGC4578;G;12:37:30.56;+09:33:18.3;Vir;2.50;1.75;34;12.90;;9.35;8.63;8.40;22.98;S0;;;;;;;;2MASX J12373054+0933184,MCG +02-32-159,PGC 042149,UGC 07793;;; -NGC4579;G;12:37:43.52;+11:49:05.5;Vir;5.01;3.84;90;10.48;9.66;7.37;6.71;6.49;22.49;Sb;;;;058;;;;2MASX J12374359+1149051,IRAS 12351+1205,MCG +02-32-160,PGC 042168,SDSS J123743.52+114905.4,UGC 07796;;; -NGC4580;G;12:37:48.39;+05:22:06.7;Vir;1.87;1.28;156;13.10;;9.75;9.06;8.77;22.45;SABa;;;;;;;;2MASX J12374839+0522063,IRAS 12352+0538,MCG +01-32-117,PGC 042174,SDSS J123748.38+052206.6,SDSS J123748.39+052206.6,SDSS J123748.39+052206.7,UGC 07794;;Nearest galaxy of comparable redshift to [HB89] 1226+023 ABS07.; -NGC4581;G;12:38:05.17;+01:28:39.9;Vir;1.62;1.06;172;13.40;;10.56;9.86;9.61;23.12;E;;;;;;;;2MASX J12380513+0128404,MCG +00-32-028,PGC 042199,SDSS J123805.17+012839.8,SDSS J123805.17+012839.9,UGC 07801;;; -NGC4582;*;12:38:10.20;+00:10:57.9;Vir;;;;14.28;;;;;;;;;;;;;;;;; -NGC4583;G;12:38:04.54;+33:27:31.8;CVn;1.51;1.51;95;15.67;14.47;10.99;10.29;9.98;24.00;S0;;;;;;;;2MASX J12380454+3327323,MCG +06-28-017,PGC 042198,SDSS J123804.54+332731.7,SDSS J123804.54+332731.8;;; -NGC4584;G;12:38:17.87;+13:06:35.6;Vir;1.61;1.11;8;13.77;;11.15;10.56;10.46;23.32;Sa;;;;;;;;2MASX J12381783+1306360,MCG +02-32-162,PGC 042223,SDSS J123817.87+130635.6,UGC 07803;;; -NGC4585;G;12:38:13.28;+28:56:13.3;Com;0.79;0.47;105;14.60;14.22;12.29;11.60;11.29;22.71;SBb;;;;;;;;2MASX J12381331+2856128,IRAS 12357+2912,MCG +05-30-042,PGC 042215,SDSS J123813.27+285613.2,SDSS J123813.28+285613.2,SDSS J123813.28+285613.3;;; -NGC4586;G;12:38:28.40;+04:19:08.7;Vir;3.43;1.12;116;13.50;;9.38;8.72;8.47;23.43;Sa;;;;;;;;2MASX J12382843+0419087,MCG +01-32-122,PGC 042241,SDSS J123828.40+041908.7,UGC 07804;;; -NGC4587;G;12:38:35.42;+02:39:26.4;Vir;1.32;0.75;47;14.40;;11.17;10.47;10.10;23.11;S0;;;;;;;;2MASX J12383544+0239267,MCG +01-32-123,PGC 042253,SDSS J123835.42+023926.4,UGC 07805;;; -NGC4588;G;12:38:45.43;+06:46:05.4;Vir;1.19;0.46;60;15.10;;12.80;12.40;11.78;23.31;Sc;;;;;;;;2MASX J12384531+0646042,MCG +01-32-124,PGC 042277,SDSS J123845.42+064605.3,SDSS J123845.43+064605.3,SDSS J123845.43+064605.4,UGC 07810;;; -NGC4589;G;12:37:24.99;+74:11:30.9;Dra;2.93;2.31;84;12.00;;8.70;7.97;7.76;22.90;E;;;;;;;;2MASX J12372503+7411307,MCG +12-12-013,PGC 042139,UGC 07797;;The 2MASS position is 7 arcsec north of the nucleus.; -NGC4590;GCl;12:39:28.01;-26:44:34.9;Hya;6.60;;;10.26;7.96;;;;;;;;;068;;;;MWSC 2059;;; -NGC4591;Dup;12:39:12.44;+06:00:44.3;Vir;;;;;;;;;;;;;;;4577;;;;;; -NGC4592;G;12:39:18.74;-00:31:55.2;Vir;4.10;1.17;94;12.40;;11.00;10.40;10.22;23.04;Sd;;;;;;;;2MASX J12391877-0031546,IRAS 12367-0015,MCG +00-32-032,PGC 042336,SDSS J123918.14-003153.0,SDSS J123918.73-003154.9,SDSS J123918.73-003155.0,SDSS J123918.73-003155.2,SDSS J123918.74-003155.0,UGC 07819;;Extended HIPASS source; -NGC4593;G;12:39:39.43;-05:20:39.3;Vir;2.40;2.04;38;13.95;13.15;8.96;8.29;7.99;22.68;Sb;;;;;;;;2MASX J12393949-0520391,IRAS 12370-0504,MCG -01-32-032,PGC 042375;;; -NGC4594;G;12:39:59.43;-11:37:23.0;Crv;8.45;4.91;90;9.55;8.00;5.89;5.21;4.96;22.26;Sa;;;;104;;;;2MASX J12395949-1137230,IRAS 12373-1120,MCG -02-32-020,PGC 042407,UGCA 293;Sombrero Galaxy;; -NGC4595;G;12:39:51.91;+15:17:52.1;Com;1.52;0.97;110;12.80;;10.75;10.30;10.03;22.23;SABb;;;;;;;;2MASX J12395191+1517520,IRAS 12373+1534,MCG +03-32-081,PGC 042396,UGC 07826;;; -NGC4596;G;12:39:55.95;+10:10:34.1;Vir;3.93;3.30;120;12.40;;8.36;7.72;7.46;22.99;S0-a;;;;;;;;2MASX J12395593+1010337,MCG +02-32-170,PGC 042401,SDSS J123955.94+101034.0,UGC 07828;;; -NGC4597;G;12:40:12.93;-05:47:57.4;Vir;3.55;1.42;70;12.30;;12.67;12.04;11.68;23.55;Sm;;;;;;;;2MASX J12401293-0547574,IRAS 12376-0531,MCG -01-32-034,PGC 042429;;Extended HIPASS source; -NGC4598;G;12:40:11.93;+08:23:01.5;Vir;1.50;1.15;131;14.10;;11.05;10.35;9.93;23.16;S0;;;;;;;;2MASX J12401194+0823014,MCG +02-32-171,PGC 042427,SDSS J124011.93+082301.4,SDSS J124011.93+082301.5,SDSS J124011.94+082301.5,UGC 07829;;; -NGC4599;G;12:40:27.09;+01:11:48.9;Vir;1.71;0.72;145;13.70;;10.57;9.89;9.69;23.13;S0-a;;;;;;;;2MASX J12402707+0111486,MCG +00-32-034,PGC 042453,SDSS J124027.09+011148.8,SDSS J124027.09+011148.9,UGC 07833;;; -NGC4600;G;12:40:22.96;+03:07:03.9;Vir;1.42;1.01;59;13.70;;10.72;10.04;9.81;22.76;S0;;;;;;;;2MASX J12402299+0307036,MCG +01-32-128,PGC 042447,SDSS J124022.95+030703.8,UGC 07832;;; -NGC4601;G;12:40:46.74;-40:53:35.0;Cen;1.82;0.50;18;14.58;14.20;11.12;10.35;10.11;24.82;S0-a;;;;;;;;2MASX J12404671-4053350,ESO 322-050,ESO-LV 322-0500,MCG -07-26-026,PGC 042492;;; -NGC4602;G;12:40:36.85;-05:07:58.8;Vir;1.29;0.79;88;12.34;;9.50;8.83;8.54;21.42;SABb;;;;;;;;2MASX J12403684-0507588,IRAS 12380-0451,MCG -01-32-036,PGC 042476;;One APM position refers to the east side of the galaxy.; -NGC4603;G;12:40:55.21;-40:58:35.0;Cen;2.60;1.84;18;12.42;11.30;9.36;8.68;8.37;22.99;SABc;;;;;;;;2MASX J12405519-4058350,ESO 322-052,ESO-LV 322-0520,IRAS 12382-4042,MCG -07-26-028,PGC 042510;;Confused HIPASS source; -NGC4603A;G;12:39:36.92;-40:44:24.1;Cen;1.84;0.63;90;14.24;;11.15;10.39;10.08;23.45;SBc;;;;;;;;2MASX J12393691-4044240,ESO 322-044,ESO-LV 322-0440,IRAS 12368-4027,MCG -07-26-020,PGC 042369;;; -NGC4603B;G;12:40:29.74;-41:04:11.4;Cen;1.30;0.26;38;15.21;;12.54;11.84;11.81;23.72;SBb;;;;;;;;2MASX J12402971-4104113,ESO 322-048,ESO-LV 322-0480,PGC 042460;;; -NGC4603C;G;12:40:43.11;-40:45:48.1;Cen;1.83;0.44;159;14.16;;10.79;10.04;9.83;24.19;S0;;;;;;;;2MASX J12404311-4045480,ESO 322-049,ESO-LV 322-0490,MCG -07-26-025,PGC 042486;;; -NGC4603D;G;12:42:08.10;-40:49:15.1;Cen;1.62;0.97;75;14.14;12.80;10.78;10.12;9.95;23.42;SABc;;;;;;;;2MASX J12420808-4049151,ESO 322-055,ESO-LV 322-0550,MCG -07-26-029,PGC 042640;;; -NGC4604;G;12:40:45.06;-05:18:10.4;Vir;1.06;0.44;104;14.38;;12.28;11.64;11.40;22.47;IB;;;;;;;;2MASX J12404493-0518091,IRAS 12381-0501,MCG -01-32-037,PGC 042489;;; -NGC4605;G;12:39:59.38;+61:36:33.1;UMa;5.87;2.29;122;10.94;;8.61;7.96;7.76;22.63;SBc;;;;;;;;2MASX J12395938+6136330,IRAS 12378+6152,MCG +10-18-074,PGC 042408,UGC 07831;;; -NGC4606;G;12:40:57.54;+11:54:44.0;Vir;2.47;1.36;14;12.70;;10.00;9.40;9.17;23.10;SBa;;;;;;;;2MASX J12405755+1154438,IRAS 12384+1211,MCG +02-32-174,PGC 042516,SDSS J124057.53+115444.0,UGC 07839;;; -NGC4607;G;12:41:12.40;+11:53:11.9;Vir;2.86;0.58;2;14.70;;10.75;9.95;9.58;23.51;SBbc;;;;;;;;2MASX J12411240+1153118,IRAS 12386+1209,MCG +02-32-176,PGC 042544,UGC 07843;;; -NGC4608;G;12:41:13.29;+10:09:20.4;Vir;2.88;2.49;25;12.60;;9.03;8.42;8.16;22.96;S0;;;;;;;;2MASX J12411328+1009208,MCG +02-32-177,PGC 042545,SDSS J124113.28+100920.3,UGC 07842;;; -NGC4609;OCl;12:42:16.83;-62:59:44.7;Cru;5.40;;;7.32;6.90;;;;;;;;;;;;;C 098,MWSC 2062;Coalsack Cluster;; -NGC4610;Dup;12:29:37.78;+07:49:27.1;Vir;;;;;;;;;;;;;;;4470;;;;;; -NGC4611;G;12:41:25.45;+13:43:46.3;Com;1.24;0.38;125;15.10;;12.24;11.49;11.20;23.27;Sbc;;;;;;0805;;2MASX J12412541+1343458,MCG +02-32-179,PGC 042564,SDSS J124125.45+134346.3,UGC 07849;;; -NGC4612;G;12:41:32.75;+07:18:53.6;Vir;2.57;1.77;138;11.90;;9.42;8.82;8.56;22.88;S0;;;;;;;;2MASX J12413275+0718532,MCG +01-32-134,PGC 042574,SDSS J124132.75+071853.5,UGC 07850;;; -NGC4613;G;12:41:28.95;+26:05:19.0;Com;0.52;0.49;15;15.50;;12.73;12.05;11.75;22.75;Sbc;;;;;;;;2MASX J12412891+2605184,MCG +04-30-011,PGC 042570,SDSS J124128.94+260518.9,UGC 07852 NOTES01;;; -NGC4614;G;12:41:31.47;+26:02:33.6;Com;1.00;0.86;152;14.20;;11.32;10.62;10.33;23.03;S0-a;;;;;;;;2MASX J12413143+2602333,MCG +04-30-012,PGC 042573,SDSS J124131.46+260233.5,SDSS J124131.47+260233.5,UGC 07851;;; -NGC4615;G;12:41:37.32;+26:04:22.2;Com;1.54;0.46;120;13.80;;12.22;11.15;11.01;22.63;Sc;;;;;;;;2MASX J12413730+2604223,IRAS 12391+2620,MCG +04-30-013,PGC 042584,SDSS J124137.31+260422.1,SDSS J124137.32+260422.1,UGC 07852;;The position in 1998AJ....116.1573B is 5 arcsec south of the nucleus.; -NGC4616;G;12:42:16.45;-40:38:31.4;Cen;1.31;1.06;50;14.15;12.80;10.62;9.96;9.68;23.83;E;;;;;;;;2MASX J12421644-4038313,ESO 322-056,ESO-LV 322-0560,MCG -07-26-030,PGC 042662;;; -NGC4617;G;12:41:05.87;+50:23:36.3;CVn;2.81;0.52;180;14.20;;10.88;10.14;9.83;23.98;SABb;;;;;;;;2MASX J12410588+5023364,MCG +09-21-028,PGC 042530,SDSS J124105.86+502336.2,UGC 07847;;; -NGC4618;G;12:41:32.85;+41:09:02.8;CVn;3.56;2.29;32;11.22;10.78;9.51;8.79;8.66;22.41;SBm;;;;;;3667;;2MASX J12413284+4109027,IRAS 12391+4125,MCG +07-26-037,PGC 042575,UGC 07853;;; -NGC4619;G;12:41:44.55;+35:03:46.0;CVn;1.37;1.33;0;13.50;;10.82;10.21;9.89;23.01;Sb;;;;;;;;2MASX J12414453+3503463,IRAS 12393+3520,MCG +06-28-018,PGC 042594,SDSS J124144.54+350345.9,SDSS J124144.55+350346.0,UGC 07856;;; -NGC4620;G;12:41:59.36;+12:56:34.0;Vir;1.60;1.45;52;14.00;;10.93;10.22;10.04;23.15;S0;;;;;;;;2MASX J12415932+1256346,MCG +02-32-182,PGC 042619,SDSS J124159.34+125634.2,SDSS J124159.35+125634.3,UGC 07859;;; -NGC4621;G;12:42:02.24;+11:38:49.3;Vir;4.55;3.21;165;11.00;9.56;7.65;6.97;6.75;22.71;E;;;;059;;;;2MASX J12420232+1138489,MCG +02-32-183,PGC 042628,SDSS J124202.25+113848.8,UGC 07858;;;V-mag taken from LEDA -NGC4622;G;12:42:37.62;-40:44:39.2;Cen;1.81;1.56;9;13.28;12.44;10.02;9.30;9.04;23.92;Sa;;;;;;;;2MASX J12423762-4044394,ESO 322-057,ESO-LV 322-0570,MCG -07-26-031,PGC 042701;;Star superposed northeast of nucleus.; -NGC4622A;G;12:43:49.11;-40:42:52.6;Cen;0.70;0.58;119;14.50;;10.72;10.01;9.71;22.68;E-S0;;;;;;;;2MASX J12434912-4042528,ESO-LV 322-0640,MCG -07-26-036,PGC 042845;;; -NGC4622B;G;12:43:50.61;-40:43:02.9;Cen;1.15;0.77;68;14.96;;;;;24.31;S0;;;;;;;;MCG -07-26-035,PGC 042852;;; -NGC4623;G;12:42:10.69;+07:40:37.0;Vir;2.23;0.74;175;13.24;;10.31;9.64;9.47;23.53;S0-a;;;;;;;;2MASX J12421070+0740369,MCG +01-32-135,PGC 042647,UGC 07862;;; -NGC4624;Dup;12:45:05.99;+03:03:20.8;Vir;;;;;;;;;;;;;;;4664;;;;;; -NGC4625;G;12:41:52.72;+41:16:26.3;CVn;1.41;1.06;27;12.92;12.35;10.65;9.93;9.75;22.26;SABm;;;;;;3675;;2MASX J12415270+4116253,IRAS 12395+4132,MCG +07-26-038,PGC 042607,SDSS J124152.71+411626.2,SDSS J124152.72+411626.2,SDSS J124152.72+411626.3,UGC 07861;;; -NGC4626;G;12:42:25.31;-07:02:39.4;Vir;1.63;0.49;39;14.00;;11.67;11.06;10.83;22.80;SBbc;;;;;;;;2MASX J12422507-0702456,2MASX J12422554-0702364,IRAS 12398-0646,MCG -01-32-040,PGC 042680;;; -NGC4627;G;12:41:59.68;+32:34:24.8;CVn;2.36;1.66;21;13.06;12.43;;;;23.73;E;;;;;;;;MCG +06-28-019,PGC 042620,UGC 07860;;; -NGC4628;G;12:42:25.26;-06:58:15.6;Vir;1.64;0.57;46;13.80;;10.51;9.84;9.46;23.13;Sb;;;;;;;;2MASX J12422527-0658154,IRAS 12398-0641,MCG -01-32-041,PGC 042681;;; -NGC4629;G;12:42:32.67;-01:21:02.4;Vir;1.03;0.71;90;14.00;;12.57;11.94;11.84;22.38;SABm;;;;;;;;2MASX J12423272-0121021,MCG +00-32-037,PGC 042692,SDSS J124232.42-012102.9,SDSS J124232.67-012102.3,SDSS J124232.67-012102.4,UGC 07869;;; -NGC4630;G;12:42:31.13;+03:57:36.9;Vir;1.66;1.21;10;13.40;;10.75;10.21;9.89;22.60;I;;;;;;;;2MASX J12423114+0357372,IRAS 12399+0414,MCG +01-32-136,PGC 042688,SDSS J124231.01+035727.0,SDSS J124231.12+035736.8,UGC 07871;;; -NGC4631;G;12:42:08.01;+32:32:29.4;CVn;14.45;2.20;86;9.78;9.19;7.53;6.83;6.47;22.44;SBcd;;;;;;;;2MASX J12420800+3232294,C 032,IRAS 12396+3249,MCG +06-28-020,PGC 042637,UGC 07865;Whale Galaxy;; -NGC4632;G;12:42:32.03;-00:04:57.4;Vir;2.56;0.98;59;12.50;;10.12;9.55;9.28;22.27;Sc;;;;;;;;IRAS 12399+0011,MCG +00-32-038,PGC 042689,SDSS J124231.87-000454.8,SDSS J124231.99-000457.7,UGC 07870;;Position is for 2MASX J12423203-0004571, the nucleus.; -NGC4633;G;12:42:37.38;+14:21:25.9;Com;1.77;0.75;33;14.70;;;10.27;;22.97;SABd;;;;;;3688;;MCG +03-32-085,PGC 042699,SDSS J124237.37+142125.9,UGC 07874;;; -NGC4634;G;12:42:40.96;+14:17:45.0;Com;2.47;0.60;156;13.60;;10.38;9.56;9.25;22.56;SBc;;;;;;;;2MASX J12424098+1417451,IRAS 12401+1434,MCG +03-32-086,PGC 042707,UGC 07875;;; -NGC4635;G;12:42:39.24;+19:56:43.1;Com;1.94;1.40;178;13.60;13.00;11.45;10.98;10.71;23.14;SABc;;;;;;;;2MASX J12423925+1956428,IRAS 12402+2012,MCG +03-32-087,PGC 042704,SDSS J124239.23+195643.0,SDSS J124239.24+195643.1,UGC 07876;;; -NGC4636;G;12:42:49.83;+02:41:16.0;Vir;6.35;4.70;150;12.62;11.84;7.31;6.60;6.42;22.91;E;;;;;;;;2MASX J12424986+0241160,MCG +01-32-137,PGC 042734,SDSS J124249.82+024115.9,UGC 07878;;; -NGC4637;G;12:42:54.10;+11:26:17.8;Vir;1.29;0.71;91;16.00;;13.65;13.11;12.71;24.15;S0;;;;;;;;2MASX J12425409+1126178,MCG +02-32-188,PGC 042744,SDSS J124254.09+112617.7,UGC 07881;;NGC identification is not certain.; -NGC4638;G;12:42:47.42;+11:26:33.0;Vir;2.31;1.50;123;12.20;11.23;9.13;8.46;8.21;22.60;E-S0;;;;;4667;;;2MASX J12424743+1126328,MCG +02-32-187,PGC 042728,SDSS J124247.42+112633.0,UGC 07880;;Identification as NGC 4667 is not certain.; -NGC4639;G;12:42:52.39;+13:15:26.6;Vir;2.87;1.88;138;13.62;12.72;9.65;9.03;8.81;22.79;Sbc;;;;;;;;2MASX J12425235+1315271,IRAS 12403+1331,MCG +02-32-189,PGC 042741,SDSS J124252.36+131526.5,SDSS J124252.37+131526.6,UGC 07884;;; -NGC4640;G;12:42:57.77;+12:17:13.1;Vir;1.61;0.89;53;15.20;;11.84;11.11;10.82;23.89;S0-a;;;;;;;;2MASX J12425775+1217121,MCG +02-32-190,PGC 042753,SDSS J124257.76+121713.0,SDSS J124257.77+121713.0,SDSS J124257.77+121713.1,UGC 07888;;; -NGC4641;G;12:43:07.66;+12:03:04.3;Vir;1.28;1.05;172;14.90;;11.74;11.21;11.12;23.00;S0;;;;;;;;2MASX J12430765+1203039,MCG +02-32-191,PGC 042769,SDSS J124307.66+120304.2,SDSS J124307.66+120304.3,UGC 07889;;; -NGC4642;G;12:43:17.78;-00:38:39.3;Vir;1.55;0.53;27;13.80;;11.32;10.71;10.36;22.68;Sbc;;;;;;;;2MASX J12431778-0038392,IRAS 12407-0022,MCG +00-33-004,PGC 042791,TYC 4949-288-1,UGC 07893;;The APM position refers to the northeastern end of the galaxy.; -NGC4643;G;12:43:20.14;+01:58:41.8;Vir;2.24;1.75;132;11.90;;8.32;7.67;7.41;21.68;S0-a;;;;;;;;2MASX J12432013+0158422,IRAS 12407+0215,MCG +00-33-005,PGC 042797,SDSS J124319.16+015838.2,SDSS J124320.13+015841.7,UGC 07895;;; -NGC4644;G;12:42:42.66;+55:08:43.8;UMa;1.51;0.63;51;14.80;;11.65;10.98;10.61;23.62;Sb;;;;;;;;2MASX J12424266+5508435,MCG +09-21-030,PGC 042708,SDSS J124242.65+550843.8,SDSS J124242.66+550843.8,UGC 07887;;; -NGC4645;G;12:44:09.99;-41:44:59.8;Cen;1.97;0.89;46;12.82;11.68;9.37;8.72;8.44;23.18;E;;;;;;;;2MASX J12440998-4144596,ESO 322-066,ESO-LV 322-0660,MCG -07-26-037,PGC 042879;;; -NGC4645A;G;12:43:05.57;-41:21:32.1;Cen;3.03;0.97;30;13.45;;9.42;8.67;8.44;24.50;S0;;;;;;;;2MASX J12430555-4121319,ESO 322-059,ESO-LV 322-0590,IRAS 12403-4105,MCG -07-26-032,PGC 042764;;; -NGC4645B;G;12:43:31.18;-41:21:45.1;Cen;2.16;0.89;158;13.42;12.99;;;;23.84;S0;;;;;;;;ESO 322-060,ESO-LV 322-0600,MCG -07-26-034,PGC 042813;;; -NGC4646;G;12:42:52.12;+54:51:21.6;UMa;0.63;0.28;17;13.80;;10.82;10.09;9.81;22.14;E;;;;;;;;2MASX J12425218+5451215,MCG +09-21-031,PGC 042740,SDSS J124252.11+545121.6,SDSS J124252.12+545121.5,SDSS J124252.12+545121.6,UGC 07892;;; -NGC4647;G;12:43:32.31;+11:34:54.7;Vir;2.75;2.36;139;12.50;12.50;8.88;8.28;8.05;22.41;SABc;;;;;;;;2MASX J12433254+1134568,IRAS 12410+1151,MCG +02-33-001,PGC 042816,UGC 07896;;; -NGC4648;G;12:41:44.39;+74:25:15.4;Dra;1.41;1.16;73;12.60;;9.77;9.11;8.85;22.55;E;;;;;;;;2MASX J12414441+7425151,MCG +13-09-029,PGC 042595,UGC 07868;;; -NGC4649;G;12:43:39.98;+11:33:09.7;Vir;6.78;5.45;105;10.30;8.79;6.67;6.00;5.74;22.81;E;;;;060;;;;2MASS J12434000+1133099,2MASX J12434000+1133093,MCG +02-33-002,PGC 042831,SDSS J124339.97+113309.7,UGC 07898;;;V-mag taken from LEDA -NGC4650;G;12:44:19.59;-40:43:54.5;Cen;3.05;2.04;111;12.74;11.91;9.56;8.84;8.56;23.73;S0-a;;;;;;;;2MASX J12441959-4043546,ESO 322-067,ESO-LV 322-0670,IRAS 12415-4027,MCG -07-26-038,PGC 042891;;; -NGC4650A;G;12:44:49.06;-40:42:51.5;Cen;1.46;0.33;172;14.12;13.58;11.92;11.20;11.03;23.18;S0-a;;;;;;;;2MASX J12444906-4042512,ESO 322-069,ESO-LV 322-0690,PGC 042951;;; -NGC4651;G;12:43:42.63;+16:23:36.2;Com;3.87;2.58;77;11.30;10.92;8.93;8.27;8.03;22.71;Sc;;;;;;;;2MASX J12434262+1623362,IRAS 12412+1639,MCG +03-33-001,PGC 042833,SDSS J124342.64+162335.9,UGC 07901;Umbrella Galaxy;; -NGC4652;G;12:43:19.75;+58:57:53.6;UMa;1.10;0.38;40;14.20;;12.00;11.37;11.10;23.54;Sb;;;;;;;;2MASX J12431978+5857536,MCG +10-18-078,PGC 042802,SDSS J124319.74+585753.5,SDSS J124319.74+585753.6,SDSS J124319.74+585753.8,SDSS J124319.75+585753.6;;; -NGC4653;G;12:43:50.91;-00:33:40.4;Vir;2.31;2.08;17;12.60;;10.60;10.12;9.97;23.24;SABc;;;;;;;;2MASX J12435092-0033406,IRAS 12412-0017,MCG +00-33-006,PGC 042847,SDSS J124350.90-003340.4,SDSS J124350.91-003340.4,SDSS J124350.98-003345.4,UGC 07900;;The APM position is northeast of the nucleus.; -NGC4654;G;12:43:56.58;+13:07:36.0;Vir;4.72;2.49;123;11.80;;8.65;7.98;7.74;22.65;Sc;;;;;;;;2MASX J12435663+1307348,IRAS 12414+1324,MCG +02-33-004,PGC 042857,SDSS J124356.57+130736.0,SDSS J124356.58+130736.0,UGC 07902;;; -NGC4655;G;12:43:36.49;+41:01:06.7;CVn;0.86;0.79;10;15.30;;11.39;10.68;10.38;23.37;E;;;;;;;;2MASX J12433648+4101069,MCG +07-26-042,PGC 042823,SDSS J124336.49+410106.7;;; -NGC4656;GPair;12:43:57.73;+32:10:05.3;CVn;8.00;;;;;;;;;;;;;;;;;MCG +05-30-066,UGC 07907;;;Diameter of the group inferred by the author. -NGC4656 NED01;G;12:43:57.67;+32:10:12.9;CVn;6.46;0.66;36;10.96;10.52;11.61;11.05;10.91;20.62;SBm;;;;;;;;2MASX J12435764+3210130,IRAS 12415+3226,MCG +05-30-066 NED01,PGC 042863,UGC 07907 NED01;;; -NGC4656 NED02;Dup;12:44:07.10;+32:12:31.5;CVn;;;;;;;;;;;;;;;4657;;;;;; -NGC4657;G;12:44:07.10;+32:12:31.5;CVn;1.86;0.63;71;13.57;;;;;23.65;Sm;;;;;4656 NED02;;;2MASXJ12440599+3212340,MCG +05-30-066 NED02,SDSSJ124405.97+321232.3,UGC 07907 NED02;;;B-Mag taken from LEDA -NGC4658;G;12:44:37.79;-10:04:59.2;Vir;1.38;0.86;3;13.10;;13.20;10.07;9.82;22.01;Sbc;;;;;;;;2MASX J12443778-1004592,IRAS 12420-0948,MCG -02-33-001,PGC 042929;;; -NGC4659;G;12:44:29.39;+13:29:54.8;Com;1.75;1.24;176;13.30;;10.12;9.48;9.26;22.82;S0-a;;;;;;;;2MASX J12442937+1329552,MCG +02-33-007,PGC 042913,SDSS J124429.39+132954.8,UGC 07915;;; -NGC4660;G;12:44:31.98;+11:11:25.9;Vir;2.09;1.57;100;12.10;;9.11;8.44;8.21;22.50;E;;;;;;;;2MASX J12443197+1111259,MCG +02-33-006,PGC 042917,UGC 07914;;; -NGC4661;G;12:45:14.95;-40:49:27.3;Cen;1.17;0.41;116;14.58;;11.44;10.74;10.47;23.67;E-S0;;;;;4650B;;;2MASX J12451495-4049272,ESO 322-072,ESO-LV 322-0720,MCG -07-26-040,PGC 042983;;; -NGC4662;G;12:44:26.20;+37:07:16.4;CVn;1.83;1.48;60;14.10;;10.83;10.10;9.77;23.42;Sbc;;;;;;;;2MASX J12442621+3707167,MCG +06-28-025,PGC 042904,SDSS J124426.19+370716.3,SDSS J124426.20+370716.4,UGC 07917;;; -NGC4663;G;12:44:47.05;-10:11:52.2;Vir;1.07;0.85;170;14.00;;10.64;9.95;9.70;23.02;S0;;;;;;0811;;2MASX J12444706-1011522,MCG -02-33-002,PGC 042946;;; -NGC4664;G;12:45:05.99;+03:03:20.8;Vir;4.52;4.52;5;11.50;10.50;8.34;7.68;7.43;23.13;S0-a;;;;;4624,4665;;;2MASX J12450595+0303204,MCG +01-33-005,PGC 042970,SDSS J124505.99+030320.7,UGC 07924;;; -NGC4665;Dup;12:45:05.99;+03:03:20.8;Vir;;;;;;;;;;;;;;;4664;;;;;; -NGC4666;G;12:45:08.59;-00:27:42.8;Vir;4.97;1.97;40;11.70;;8.20;7.40;7.06;22.92;SABc;;;;;;;;2MASX J12450867-0027428,IRAS 12425-0011,MCG +00-33-008,PGC 042975,SDSS J124508.16-002742.8,SDSS J124508.59-002742.7,UGC 07926;;; -NGC4667;Dup;12:42:47.42;+11:26:33.0;Vir;;;;;;;;;;;;;;;4638;;;;;; -NGC4668;G;12:45:31.99;-00:32:08.6;Vir;1.59;0.92;3;13.50;;11.71;11.07;10.58;22.82;Scd;;;;;;;;2MASX J12453194-0032023,IRAS 12429-0015,MCG +00-33-009,PGC 042999,SDSS J124531.99-003208.6,UGC 07931;;The 2MASX position is 6.2 arcsec north of the nucleus.; -NGC4669;G;12:44:46.74;+54:52:32.4;UMa;1.53;0.38;2;15.10;;10.99;10.30;10.11;22.86;Sb;;;;;;;;2MASX J12444673+5452328,MCG +09-21-038,PGC 042942,SDSS J124446.53+545233.2,SDSS J124446.54+545233.2,SDSS J124446.54+545233.3,UGC 07925;;Multiple SDSS entries describe this object.; -NGC4670;G;12:45:17.07;+27:07:31.5;Com;0.97;0.83;90;12.60;;11.31;10.74;10.41;21.76;SBa;;;;;;;;2MASX J12451714+2707317,IRAS 12428+2724,MCG +05-30-072,PGC 042987,SDSS J124517.25+270732.1,UGC 07930;;Multiple SDSS entries describe this galaxy.; -NGC4671;G;12:45:47.63;-07:04:10.9;Vir;1.69;1.26;138;14.50;;10.17;9.49;9.28;23.61;E;;;;;;;;2MASX J12454763-0704111,MCG -01-33-004,PGC 043029;;; -NGC4672;G;12:46:15.75;-41:42:21.5;Cen;2.06;0.50;59;14.12;14.25;10.81;10.03;9.75;23.74;Sa;;;;;;;;2MASX J12461573-4142214,ESO 322-073,ESO-LV 322-0730,IRAS 12435-4125,MCG -07-26-041,PGC 043073;;; -NGC4673;G;12:45:34.67;+27:03:39.0;Com;1.07;0.84;171;13.70;;10.82;10.15;9.87;23.78;E;;;;;;;;2MASX J12453470+2703386,MCG +05-30-073,PGC 043008,SDSS J124534.67+270338.9,UGC 07933;;; -NGC4674;G;12:46:03.47;-08:39:19.6;Vir;1.79;0.70;105;15.00;;11.22;10.45;10.28;23.64;Sa;;;;;;;;2MASX J12460347-0839196,MCG -01-33-005,PGC 043050,SDSS J124603.46-083920.5;;; -NGC4675;G;12:45:31.89;+54:44:15.4;UMa;1.34;0.43;92;15.40;;11.71;10.94;10.64;23.44;SBb;;;;;;;;2MASX J12453191+5444151,IRAS 12432+5500,MCG +09-21-039,PGC 042998,SDSS J124531.88+544415.3,SDSS J124531.88+544415.4,SDSS J124531.89+544415.4,UGC 07935;;; -NGC4676;GPair;12:46:10.70;+30:43:38.0;Com;3.00;;;;;;;;;;;;;;;;;IRAS 12437+3059;Mice Galaxy;;Diameter of the group inferred by the author. -NGC4676A;G;12:46:10.11;+30:43:54.9;Com;2.16;1.26;179;;;11.54;10.74;10.39;24.90;S0-a;;;;;;0819;;2MASX J12461005+3043546,MCG +05-30-076,PGC 043062,SDSS J124610.10+304354.8,SDSS J124610.11+304354.9,UGC 07938;;; -NGC4676B;G;12:46:11.24;+30:43:21.9;Com;0.98;0.66;169;14.10;;;;;23.06;S0-a;;;;;4676S;0820;;MCG +05-30-077,PGC 043065,SDSS J124611.24+304321.8,SDSS J124611.24+304321.9,UGC 07939;;; -NGC4677;G;12:46:57.13;-41:34:57.1;Cen;1.49;0.84;166;13.77;12.67;10.52;9.81;9.60;23.44;S0-a;;;;;;;;2MASX J12465714-4134571,ESO 322-078,ESO-LV 322-0780,MCG -07-26-044,PGC 043127;;; -NGC4678;G;12:49:41.85;-04:34:47.0;Vir;0.97;0.51;85;14.50;;13.22;12.69;12.42;22.38;S?;;;;;;0824;;IRAS 12471-0418,MCG -01-33-018,PGC 043385;;Diameter includes companions or long extensions.; -NGC4679;G;12:47:30.25;-39:34:15.1;Cen;2.43;0.88;5;13.32;11.90;10.42;9.72;9.42;24.39;SBc;;;;;;;;2MASX J12473024-3934150,ESO 322-082,ESO-LV 322-0820,IRAS 12447-3917,MCG -06-28-018,PGC 043170;;; -NGC4680;G;12:46:54.71;-11:38:13.4;Crv;1.36;0.76;40;13.00;;10.70;10.06;9.77;23.11;S0-a;;;;;;;;2MASX J12465474-1138133,IRAS 12443-1121,MCG -02-33-007,PGC 043118,SDSS J124654.73-113813.4;;; -NGC4681;G;12:47:28.81;-43:20:05.3;Cen;1.40;1.17;171;13.46;;10.59;9.88;9.65;22.80;Sab;;;;;;;;2MASX J12472882-4320051,ESO 268-040,ESO-LV 268-0400,IRAS 12446-4303,MCG -07-26-046,PGC 043166;;; -NGC4682;G;12:47:15.49;-10:03:48.4;Vir;2.58;1.19;86;12.90;;10.59;9.81;9.60;23.26;SABc;;;;;;;;2MASX J12471548-1003484,IRAS 12446-0947,MCG -02-33-008,PGC 043147;;; -NGC4683;G;12:47:42.37;-41:31:41.8;Cen;1.44;1.33;130;14.02;13.80;10.43;9.70;9.44;23.47;E-S0;;;;;;;;2MASX J12474238-4131418,ESO 322-083,ESO-LV 322-0830,MCG -07-26-047,PGC 043182;;; -NGC4684;G;12:47:17.52;-02:43:38.7;Vir;2.97;0.96;18;12.40;;9.26;8.60;8.39;23.16;S0-a;;;;;;;;2MASX J12471748-0243391,IRAS 12447-0227,MCG +00-33-011,PGC 043149,SDSS J124717.51-024338.6,SDSS J124717.52-024338.6,UGC 07951;;; -NGC4685;G;12:47:11.44;+19:27:51.7;Com;1.59;0.87;155;13.80;;10.84;10.16;9.93;23.35;E-S0;;;;;;;;2MASX J12471143+1927520,MCG +03-33-004,PGC 043143,SDSS J124711.44+192751.6,UGC 07954;;; -NGC4686;G;12:46:39.88;+54:32:03.4;UMa;1.92;0.67;2;13.70;;10.04;9.32;9.06;23.30;Sa;;;;;;;;2MASX J12463982+5432030,MCG +09-21-044,PGC 043101,SDSS J124639.88+543203.3,UGC 07946;;; -NGC4687;G;12:47:23.77;+35:21:07.4;CVn;0.96;0.90;95;14.30;;11.25;10.64;10.35;22.81;E;;;;;;;;2MASX J12472374+3521076,MCG +06-28-031,PGC 043157,SDSS J124723.77+352107.4,UGC 07958;;; -NGC4688;G;12:47:46.52;+04:20:09.8;Vir;3.72;3.42;35;14.50;;12.33;11.32;11.16;24.44;Sc;;;;;;;;2MASX J12474646+0420098,IRAS 12452+0436,MCG +01-33-013,PGC 043189,SDSS J124746.52+042009.7,UGC 07961;;; -NGC4689;G;12:47:45.56;+13:45:46.1;Com;3.82;2.86;163;12.80;;8.76;8.06;7.96;22.96;Sc;;;;;;;;2MASX J12474552+1345456,IRAS 12452+1402,MCG +02-33-022,PGC 043186,SDSS J124745.56+134546.1,UGC 07965;;; -NGC4690;G;12:47:55.52;-01:39:21.8;Vir;1.60;1.14;150;14.00;;10.90;10.33;10.08;23.32;E-S0;;;;;;;;2MASX J12475551-0139215,MCG +00-33-012,PGC 043202,SDSS J124755.52-013921.8,UGC 07964;;; -NGC4691;G;12:48:13.63;-03:19:57.8;Vir;3.03;2.46;28;11.66;11.08;9.39;8.75;8.54;22.59;S0-a;;;;;;;;2MASX J12481367-0319585,IRAS 12456-0303,MCG +00-33-013,PGC 043238,SDSS J124813.63-031957.7,SDSS J124813.65-031958.2,UGCA 299;;; -NGC4692;G;12:47:55.32;+27:13:20.5;Com;1.00;0.94;85;14.00;;10.70;10.05;9.76;22.59;E;;;;;;;;2MASX J12475528+2713209,MCG +05-30-086,PGC 043200,SDSS J124755.31+271320.4,UGC 07967;;; -NGC4693;G;12:47:09.17;+71:10:34.1;Dra;1.00;0.56;34;14.00;;11.54;10.59;10.38;22.49;Sc;;;;;;;;2MASX J12470913+7110341,MCG +12-12-018,PGC 043141,UGC 07962;;HOLM 460B is a star.; -NGC4694;G;12:48:15.08;+10:59:01.0;Vir;2.00;1.11;135;13.93;13.36;9.87;9.23;8.96;22.42;S0;;;;;;;;2MASX J12481509+1059010,IRAS 12457+1115,MCG +02-33-023,PGC 043241,UGC 07969;;; -NGC4695;G;12:47:32.11;+54:22:29.4;UMa;1.12;0.65;79;14.50;;12.93;12.23;12.20;22.54;SABb;;;;;;3791;;2MASX J12473208+5422297,MCG +09-21-048,PGC 043173,SDSS J124732.10+542229.4,UGC 07966;;; -NGC4696;G;12:48:49.25;-41:18:39.0;Cen;3.85;2.56;88;11.21;;8.10;7.38;7.14;23.42;E;;;;;;;;2MASX J12484927-4118399,ESO 322-091,ESO-LV 322-0910,MCG -07-26-051,PGC 043296;;Incorrectly identified as NGC 4296 in PKSCAT90 (version 1.01).; -NGC4696A;G;12:46:55.62;-41:29:48.3;Cen;1.74;0.57;174;14.57;;10.86;10.12;9.81;23.70;SBb;;;;;;;;2MASX J12465561-4129482,ESO 322-077,ESO-LV 322-0770,IRAS 12441-4113,MCG -07-26-043,PGC 043120;;; -NGC4696B;G;12:47:21.78;-41:14:15.0;Cen;1.33;0.81;40;13.84;;10.01;9.27;9.01;23.12;E-S0;;;;;;;;2MASX J12472179-4114150,ESO 322-081,ESO-LV 322-0810,IRAS 12446-4058,MCG -07-26-045,PGC 043155;;Marginal HIPASS detection.; -NGC4696C;G;12:48:02.66;-40:49:06.8;Cen;2.30;0.37;140;14.68;;11.26;10.43;10.07;24.01;Sb;;;;;;;;2MASX J12480264-4049068,ESO 322-087,ESO-LV 322-0870,MCG -07-26-048,PGC 043218;;; -NGC4696D;G;12:48:21.66;-41:42:50.5;Cen;1.38;0.54;129;14.02;;10.41;9.70;9.52;23.36;S0;;;;;;;;2MASX J12482156-4142516,ESO 322-088,ESO-LV 322-0880,MCG -07-26-049,PGC 043249;;; -NGC4696E;G;12:48:26.12;-40:56:11.4;Cen;1.41;0.71;178;14.56;;11.47;10.78;10.79;23.98;S0;;;;;;;;2MASX J12482614-4056086,ESO 322-090,ESO-LV 322-0900,MCG -07-26-050,PGC 043262;;; -NGC4697;G;12:48:35.88;-05:48:02.7;Vir;7.14;4.16;83;10.97;;7.24;6.59;6.37;23.36;E;;;;;;;;2MASX J12483590-0548030,C 052,MCG -01-33-010,PGC 043276,UGCA 300;;; -NGC4698;G;12:48:22.91;+08:29:14.6;Vir;3.81;1.55;170;13.24;12.27;8.40;7.78;7.56;22.64;Sab;;;;;;;;2MASX J12482293+0829140,IRAS 12458+0845,MCG +02-33-024,PGC 043254,UGC 07970;;; -NGC4699;G;12:49:02.23;-08:39:53.5;Vir;3.99;3.02;35;10.80;;7.40;6.75;6.50;21.92;SABb;;;;;;;;2MASX J12490218-0839514,IRAS 12464-0823,MCG -01-33-013,PGC 043321,SDSS J124902.19-083951.8,UGCA 301;;; -NGC4700;G;12:49:08.15;-11:24:35.5;Vir;2.72;0.47;51;12.70;14.32;10.59;9.96;9.78;21.58;SBc;;;;;;;;2MASX J12490814-1124354,IRAS 12465-1108,MCG -02-33-013,PGC 043330;;Extended HIPASS source; -NGC4701;G;12:49:11.59;+03:23:19.4;Vir;1.74;1.28;39;13.10;;10.71;10.07;9.77;22.47;Sc;;;;;;;;2MASX J12491156+0323194,IRAS 12466+0339,MCG +01-33-015,PGC 043331,SDSS J124911.52+032322.6,SDSS J124911.59+032319.3,UGC 07975;;; -NGC4702;G;12:49:01.49;+27:10:44.9;Com;0.58;0.33;176;15.00;;14.06;13.43;13.27;23.21;Sd;;;;;;;;MCG +05-30-091,PGC 043317,SDSS J124901.49+271044.8,SDSS J124901.49+271044.9;;; -NGC4703;G;12:49:18.97;-09:06:30.3;Vir;1.70;0.41;155;14.50;;9.98;9.31;9.03;23.29;Sb;;;;;;;;2MASX J12491896-0906301,MCG -01-33-015,PGC 043342;;; -NGC4704;G;12:48:46.43;+41:55:16.5;CVn;1.01;0.95;40;14.80;;11.82;11.12;10.69;23.23;SBbc;;;;;;;;2MASX J12484638+4155166,IRAS 12464+4211,MCG +07-26-054,PGC 043288,SDSS J124846.42+415516.5,UGC 07972;;; -NGC4705;G;12:49:24.97;-05:11:45.1;Vir;3.65;1.09;106;13.10;;10.37;9.58;9.32;23.16;SABb;;;;;;;;2MASX J12492497-0511452,IRAS 12468-0455,MCG -01-33-016,PGC 043350;;The APM position refers to the southeastern part of the galaxy.; -NGC4706;G;12:49:54.15;-41:16:46.4;Cen;1.47;0.75;26;14.00;13.50;10.37;9.59;9.36;23.47;S0;;;;;;;;2MASX J12495418-4116456,ESO 323-001,ESO-LV 323-0010,MCG -07-26-055,PGC 043411;;; -NGC4707;G;12:48:22.87;+51:09:52.9;CVn;2.19;2.00;25;15.20;;;;;23.82;Sm;;;;;;;;MCG +09-21-050,PGC 043255,UGC 07971;;The 2MASS position refers to a superposed star.; -NGC4708;G;12:49:41.48;-11:05:34.9;Vir;1.25;0.91;30;14.00;;11.16;10.52;10.14;22.92;SABa;;;;;;;;2MASX J12494148-1105350,IRAS 12470-1049,MCG -02-33-016,PGC 043382;;HOLM 463B superposed on arm northwest side.; -NGC4709;G;12:50:03.88;-41:22:55.1;Cen;3.09;1.51;107;12.48;11.32;9.02;8.31;8.01;23.36;E;;;;;;;;2MASX J12500394-4122554,ESO 323-003,ESO-LV 323-0030,MCG -07-26-056,PGC 043423;;; -NGC4710;G;12:49:38.83;+15:09:55.6;Com;4.39;1.13;26;11.60;;8.53;7.79;7.57;23.43;S0-a;;;;;;;;2MASX J12493895+1509557,IRAS 12471+1526,MCG +03-33-009,PGC 043375,UGC 07980;;; -NGC4711;G;12:48:45.87;+35:19:57.7;CVn;1.21;0.68;41;14.40;;11.34;10.62;10.42;22.96;SBb;;;;;;3804;;2MASX J12484584+3519581,IRAS 12463+3536,MCG +06-28-033,PGC 043286,SDSS J124845.86+351957.7,SDSS J124845.87+351957.7,UGC 07973;;; -NGC4712;G;12:49:34.22;+25:28:11.8;Com;1.56;0.75;162;13.50;;10.92;10.42;10.09;22.66;Sbc;;;;;;;;2MASX J12493421+2528117,IRAS 12471+2544,MCG +04-30-021,PGC 043368,UGC 07977;;; -NGC4713;G;12:49:57.87;+05:18:41.1;Vir;1.66;1.52;50;12.30;;10.39;9.83;9.75;21.97;Scd;;;;;;;;2MASX J12495789+0518411,IRAS 12474+0534,MCG +01-33-018,PGC 043413,SDSS J124957.72+051840.7,SDSS J124957.86+051841.0,SDSS J124957.87+051841.0,SDSS J124957.87+051841.1,UGC 07985;;; -NGC4714;G;12:50:19.25;-13:19:27.6;Crv;2.00;1.11;152;14.00;;10.02;9.35;9.09;24.33;E-S0;;;;;;;;2MASX J12501925-1319275,MCG -02-33-018,PGC 043442;;; -NGC4715;G;12:49:57.88;+27:49:20.7;Com;1.34;0.99;18;15.40;;10.86;10.25;10.07;24.21;S0-a;;;;;;;;2MASX J12495786+2749203,MCG +05-30-096,PGC 043399,SDSS J124957.87+274920.6,SDSS J124957.87+274920.7,SDSS J124957.88+274920.7,UGC 07986;;; -NGC4716;G;12:50:33.11;-09:27:04.0;Vir;1.13;0.85;94;15.00;;10.45;9.87;9.55;22.87;S0;;;;;;;;2MASX J12503310-0927038,MCG -01-33-021,PGC 043464;;; -NGC4717;G;12:50:34.39;-09:27:46.9;Vir;1.61;0.68;2;15.00;;10.79;10.11;9.86;23.43;Sa;;;;;;;;2MASX J12503439-0927468,MCG -01-33-023,PGC 043467;;; -NGC4718;G;12:50:32.64;-05:16:54.9;Vir;2.02;0.70;97;13.90;;11.36;10.75;10.54;23.72;Sb;;;;;;;;2MASX J12503262-0516548,MCG -01-33-020,PGC 043463;;Confused HIPASS source; -NGC4719;G;12:50:08.72;+33:09:32.9;CVn;1.42;1.25;159;14.20;;11.32;10.59;10.35;23.48;SBb;;;;;;;;2MASX J12500870+3309330,IRAS 12477+3325,MCG +06-28-035,PGC 043428,SDSS J125008.71+330932.9,SDSS J125008.72+330932.9,UGC 07987;;; -NGC4720;G;12:50:42.78;-04:09:21.0;Vir;1.23;0.73;107;14.20;;11.66;11.03;10.77;23.46;E-S0;;;;;;;;2MASX J12504278-0409208,IRAS 12481-0352,MCG -01-33-024,PGC 043478;;Confused HIPASS source; -NGC4721;G;12:50:19.92;+27:19:26.4;Com;0.84;0.24;113;15.20;;11.86;11.20;10.73;23.46;S0;;;;;;;;2MASX J12501989+2719266,MCG +05-30-097,PGC 043437,SDSS J125019.91+271926.3,SDSS J125019.92+271926.4;;; -NGC4722;G;12:51:32.39;-13:19:48.1;Crv;1.98;0.69;32;13.00;;10.41;9.70;9.42;23.58;S0-a;;;;;;3833;;2MASX J12513239-1319482,IRAS 12488-1303,MCG -02-33-031,PGC 043560;;; -NGC4723;G;12:51:02.91;-13:14:11.8;Crv;1.02;0.55;43;14.60;;;;;23.39;SABm;;;;;;;;MCG -02-33-026,PGC 043510;;Holmberg 471b is a star (perhaps with a plate defect involved).; -NGC4724;G;12:50:53.84;-14:19:54.7;Crv;0.95;0.54;95;15.00;;;;;22.30;E-S0;;;;;;;;MCG -02-33-022,PGC 043494;;; -NGC4725;G;12:50:26.58;+25:30:02.9;Com;9.71;7.10;36;13.45;12.44;7.16;6.31;6.17;23.39;SABa;;;;;;;;2MASX J12502661+2530027,MCG +04-30-022,PGC 043451,SDSS J125026.57+253002.7,UGC 07989;;; -NGC4726;G;12:50:46.06;-14:16:06.8;Crv;1.10;0.24;76;15.68;;12.44;11.81;11.43;24.41;;;;;;;;;2MASX J12504606-1416068,PGC 926789;;; -NGC4727;G;12:50:57.24;-14:19:58.6;Crv;2.70;1.54;127;18.21;;9.87;9.19;8.88;23.10;Sbc;;;;;4740;;;2MASX J12505723-1419588,IRAS 12483-1403,MCG -02-33-023,PGC 043499;;; -NGC4728;G;12:50:28.08;+27:26:05.7;Com;0.78;0.60;107;15.60;;11.81;11.08;10.73;23.57;E;;;;;4728A;;;2MASX J12502807+2726056,MCG +05-30-098,PGC 043455,SDSS J125028.07+272605.6;;; -NGC4729;G;12:51:46.28;-41:07:56.2;Cen;1.97;0.90;145;13.49;;9.97;9.26;8.95;23.85;E;;;;;;;;2MASX J12514627-4107561,2MASX J12514810-4107417,ESO 323-016,ESO-LV 323-0160,MCG -07-27-002,PGC 043591;;; -NGC4730;G;12:52:00.47;-41:08:50.3;Cen;1.28;1.05;28;13.90;;10.23;9.49;9.19;23.29;E-S0;;;;;;;;2MASX J12520048-4108488,ESO 323-017,ESO-LV 323-0170,MCG -07-27-003,PGC 043611,TYC 7776-638-1;;; -NGC4731;G;12:51:01.09;-06:23:35.0;Vir;6.32;2.14;97;12.00;;10.50;9.94;9.79;23.72;SBc;;;;;;;;2MASX J12510109-0623349,IRAS 12484-0607,MCG -01-33-026,PGC 043507,UGCA 302;;Confused and extended HIPASS source; -NGC4732;G;12:50:07.10;+52:51:00.4;UMa;1.21;0.56;8;15.20;;11.53;10.85;10.53;24.06;E;;;;;;;;2MASX J12500704+5251002,MCG +09-21-053,PGC 043430,SDSS J125007.09+525100.3,SDSS J125007.09+525100.4,SDSS J125007.10+525100.4,SDSS J125007.11+525100.6,UGC 07988;;"The position in 1999A&AS..140...89P is 7.5"" east of the nucleus."; -NGC4733;G;12:51:06.78;+10:54:43.5;Vir;1.97;1.82;70;13.20;;9.92;9.23;9.02;22.95;E;;;;;;;;2MASX J12510678+1054435,2MASX J12510753+1054571,MCG +02-33-028,PGC 043516,SDSS J125106.77+105443.4,UGC 07997;;HOLM 473B is a star.; -NGC4734;G;12:51:12.89;+04:51:32.6;Vir;0.97;0.80;60;14.30;;11.43;10.71;10.41;22.78;Sc;;;;;;;;2MASX J12511286+0451320,IRAS 12486+0507,MCG +01-33-019,PGC 043525,SDSS J125112.88+045132.5,SDSS J125112.89+045132.4,SDSS J125112.89+045132.5,SDSS J125112.89+045132.6,UGC 07998;;; -NGC4735;G;12:51:01.73;+28:55:40.7;Com;0.66;0.51;117;15.10;14.42;12.48;11.75;11.48;22.80;SBc;;;;;;;;2MASX J12510174+2855401,IRAS 12485+2911,MCG +05-30-104,PGC 043509,SDSS J125101.72+285540.6,SDSS J125101.73+285540.7;;; -NGC4736;G;12:50:53.06;+41:07:13.6;CVn;7.74;6.68;105;8.96;8.24;6.03;5.35;5.11;21.79;SABa;;;;094;;;;2MASX J12505314+4107125,IRAS 12485+4123,MCG +07-26-058,PGC 043495,UGC 07996;;IRAS F12485+4123 (in FSC version 1) was removed from version 2.; -NGC4737;G;12:50:52.94;+34:09:24.7;CVn;1.36;0.97;49;15.30;;11.51;10.86;10.53;24.11;S0-a;;;;;;;;2MASX J12505290+3409246,MCG +06-28-036,PGC 043490,SDSS J125052.93+340924.6,SDSS J125052.94+340924.6,SDSS J125052.94+340924.7;;; -NGC4738;G;12:51:08.90;+28:47:17.0;Com;1.82;0.26;33;14.90;13.81;11.33;10.56;10.30;22.76;Sc;;;;;;;;2MASX J12510889+2847171,MCG +05-30-103,PGC 043517,SDSS J125108.90+284716.9,SDSS J125108.90+284717.0,UGC 07999;;; -NGC4739;G;12:51:37.08;-08:24:36.8;Vir;1.50;1.37;115;14.00;;10.18;9.46;9.21;23.78;E;;;;;;;;2MASX J12513706-0824369,MCG -01-33-029,PGC 043571;;; -NGC4740;Dup;12:50:57.24;-14:19:58.6;Crv;;;;;;;;;;;;;;;4727;;;;;; -NGC4741;G;12:50:59.52;+47:40:17.6;CVn;1.17;0.76;171;14.50;;11.43;10.82;10.48;23.10;Sc;;;;;;;;2MASX J12505951+4740171,MCG +08-23-098,PGC 043504,SDSS J125059.51+474017.4,SDSS J125059.51+474017.5,SDSS J125059.52+474017.5,SDSS J125059.52+474017.6,UGC 08000;;; -NGC4742;G;12:51:48.04;-10:27:17.0;Vir;2.14;1.39;76;12.00;;9.24;8.57;8.39;22.61;E;;;;;;;;2MASX J12514803-1027172,MCG -02-33-032,PGC 043594,UGCA 303;;; -NGC4743;G;12:52:15.98;-41:23:26.4;Cen;1.73;0.66;176;14.00;13.31;10.49;9.77;9.52;23.81;S0;;;;;;;;2MASX J12521598-4123259,ESO 323-021,ESO-LV 323-0210,MCG -07-27-005,PGC 043653;;; -NGC4744;G;12:52:19.60;-41:03:36.1;Cen;2.45;0.95;126;13.47;12.34;10.09;9.39;9.06;24.23;S0-a;;;;;;;;2MASX J12521960-4103358,ESO 323-022,ESO-LV 323-0220,IRAS 12495-4047,MCG -07-27-006,PGC 043661;;; -NGC4745;G;12:51:26.16;+27:25:16.6;Com;0.61;0.56;25;15.40;;12.19;11.35;11.23;23.79;S0;;;;;;;;2MASX J12512615+2725163,MCG +05-30-105a,PGC 043539,SDSS J125126.16+272516.4,SDSS J125126.16+272516.5;;; -NGC4746;G;12:51:55.36;+12:04:58.7;Vir;2.03;0.42;120;13.30;;10.57;9.79;9.50;22.55;Sb;;;;;;;;2MASX J12515537+1204588,IRAS 12494+1221,MCG +02-33-029,PGC 043601,SDSS J125155.14+120500.7,UGC 08007;;The SDSS position is 3.8 arcsec northwest of the nucleus.; -NGC4747;G;12:51:45.95;+25:46:37.5;Com;2.09;1.00;33;13.20;;;;;22.69;SBcd;;;;;;;;2MASX J12514596+2546383,IRAS 12492+2602,MCG +04-30-023,PGC 043586,SDSS J125145.95+254637.4,UGC 08005;;; -NGC4748;G;12:52:12.46;-13:24:53.0;Crv;1.27;0.82;66;14.73;14.03;10.90;10.20;9.85;23.27;S?;;;;;;;;2MASX J12521245-1324528,IRAS 12495-1308,MCG -02-33-034,PGC 043643;;; -NGC4749;G;12:51:11.97;+71:38:12.2;Dra;1.59;0.53;156;14.20;;10.75;9.89;9.47;23.27;Sb;;;;;;;;2MASX J12511200+7138124,IRAS 12493+7154,MCG +12-12-020,PGC 043527,UGC 08006;;; -NGC4750;G;12:50:07.27;+72:52:28.7;Dra;2.40;2.06;142;11.80;;9.05;8.38;8.12;22.45;Sab;;;;;;;;2MASX J12500721+7252281,IRAS 12483+7308,MCG +12-12-019,PGC 043426,UGC 07994;;; -NGC4751;G;12:52:50.79;-42:39:35.7;Cen;1.66;0.63;175;12.99;;9.23;8.52;8.24;22.87;E-S0;;;;;;;;2MASX J12525080-4239358,ESO 323-029,ESO-LV 323-0290,IRAS 12500-4223,MCG -07-27-011,PGC 043723;;; -NGC4752;G;12:51:29.07;+13:46:54.5;Com;0.95;0.45;153;15.40;;12.36;11.70;11.41;23.45;SBab;;;;;;;;2MASX J12512906+1346542,PGC 043555,SDSS J125129.06+134654.4,SDSS J125129.06+134654.5,SDSS J125129.07+134654.5;;Identification as NGC 4752 is uncertain.; -NGC4753;G;12:52:22.11;-01:11:58.9;Vir;6.49;3.06;86;10.85;9.95;7.65;6.97;6.72;23.31;S0-a;;;;;;;;2MASX J12522211-0111588,IRAS 12498-0055,MCG +00-33-016,PGC 043671,SDSS J125222.06-011158.4,UGC 08009;;; -NGC4754;G;12:52:17.50;+11:18:50.0;Vir;4.16;1.95;22;11.60;;8.31;7.64;7.41;23.19;S0;;;;;;;;2MASX J12521756+1118491,MCG +02-33-030,PGC 043656,SDSS J125217.49+111849.9,UGC 08010;;; -NGC4755;OCl;12:53:37.08;-60:21:22.7;Cru;7.80;;;;;;;;;;;;;;;;;C 094,MWSC 2072;Herschel's Jewel Box,kappa Crucis Cluster;; -NGC4756;G;12:52:52.63;-15:24:47.8;Crv;2.28;1.56;47;13.00;;9.96;9.32;9.08;23.83;E-S0;;;;;;;;2MASX J12525262-1524478,MCG -02-33-039,PGC 043725;;; -NGC4757;G;12:52:50.09;-10:18:36.8;Vir;0.80;0.26;58;15.00;;11.20;10.46;10.32;23.18;S0;;;;;;;;2MASX J12525011-1018361,MCG -02-33-040,PGC 043715;;; -NGC4758;G;12:52:44.05;+15:50:54.7;Com;2.75;0.77;159;14.10;;;;;23.22;SBm;;;;;;;;2MASX J12524473+1550289,IRAS 12502+1607,MCG +03-33-015,PGC 043707,UGC 08014;;; -NGC4759;GPair;12:53:05.20;-09:12:08.0;Vir;;;;;;;;;;;;;;;;;;;;This is a pair included in the GTrpl [PCM2000] 05.;Diameter of the group inferred by the author. -NGC4759 NED01;Dup;12:53:04.46;-09:11:59.7;Vir;;;;;;;;;;;;;;;4776;;;;;; -NGC4759 NED02;Dup;12:53:05.81;-09:12:13.8;Vir;;;;;;;;;;;;;;;4778;;;;;; -NGC4760;G;12:53:07.23;-10:29:39.1;Vir;2.57;2.01;9;13.00;;9.49;8.81;8.55;23.41;E;;;;;;;;2MASX J12530723-1029394,MCG -02-33-041,PGC 043763;;; -NGC4761;G;12:53:09.81;-09:11:52.1;Vir;1.55;0.65;168;15.00;;;;;23.96;S?;;;;;;;;MCG -01-33-039,PGC 043768;;; -NGC4762;G;12:52:56.05;+11:13:50.9;Vir;8.26;3.52;32;11.10;;8.20;7.46;7.30;24.30;S0;;;;;;;;2MASX J12525604+1113508,MCG +02-33-033,PGC 043733,UGC 08016;;; -NGC4763;G;12:53:27.22;-17:00:19.9;Crv;1.86;1.16;105;14.00;;10.51;9.84;9.58;23.09;SBa;;;;;;;;2MASX J12532723-1700197,IRAS 12507-1643,MCG -03-33-013,PGC 043792;;; -NGC4764;G;12:53:06.63;-09:15:27.5;Vir;0.46;0.37;78;16.30;;12.73;12.20;11.96;23.16;E;;;;;;;;2MASX J12530661-0915274,PGC 043760;;NGC identification is not certain.; -NGC4765;G;12:53:14.41;+04:27:47.2;Vir;1.16;0.85;80;13.00;;11.64;10.98;10.82;22.28;Sa;;;;;;;;2MASX J12531456+0427479,IRAS 12507+0444,MCG +01-33-020,PGC 043775,SDSS J125314.31+042748.9,SDSS J125314.41+042747.2,SDSS J125314.42+042747.2,SDSS J125314.47+042749.7,UGC 08018;;Multiple SDSS entries describe this object.; -NGC4766;G;12:53:08.17;-10:22:41.5;Vir;0.98;0.23;129;15.00;;11.81;11.09;10.83;23.99;S0;;;;;;;;2MASX J12530818-1022414,MCG -02-33-042,PGC 043766;;; -NGC4767;G;12:53:52.95;-39:42:51.5;Cen;2.82;1.39;141;12.62;11.53;9.17;8.49;8.23;23.59;E;;;;;;;;2MASX J12535295-3942516,ESO 323-036,ESO-LV 323-0360,MCG -06-28-023,PGC 043845;;; -NGC4767A;G;12:53:01.48;-39:50:06.9;Cen;0.59;0.27;110;16.39;;13.24;12.26;11.86;23.29;Sc;;;;;;;;2MASX J12530149-3950067,ESO 323-031,ESO-LV 323-0310,IRAS 12502-3933,MCG -07-27-011A,PGC 043744;;; -NGC4767B;G;12:54:45.03;-39:51:08.2;Cen;1.47;1.17;96;13.85;;10.89;10.16;9.83;23.26;SBc;;;;;;;;2MASX J12544502-3951082,ESO 323-041,ESO-LV 323-0410,IRAS 12519-3934,MCG -07-27-015,PGC 043954;;; -NGC4768;*;12:53:17.25;-09:31:53.2;Vir;;;;;;;;;;;;;;;;;;;;; -NGC4769;**;12:53:18.08;-09:32:09.6;Vir;;;;;;;;;;;;;;;;;;;;; -NGC4770;G;12:53:32.15;-09:32:29.4;Vir;1.73;1.11;88;14.00;;10.23;9.55;9.26;23.58;S0-a;;;;;;;;2MASX J12533215-0932294,MCG -01-33-040,PGC 043804;;; -NGC4771;G;12:53:21.22;+01:16:08.7;Vir;3.10;0.98;133;12.92;;9.96;9.28;9.01;22.97;Sc;;;;;;;;2MASX J12532127+0116090,IRAS 12507+0132,MCG +00-33-017,PGC 043784,SDSS J125321.21+011608.7,SDSS J125321.22+011608.7,SDSS J125321.22+011608.8,SDSS J125321.41+011606.2,UGC 08020;;; -NGC4772;G;12:53:29.16;+02:10:06.2;Vir;4.12;2.00;155;11.96;11.04;9.16;8.53;8.36;23.36;SABa;;;;;;;;2MASX J12532917+0210060,MCG +00-33-018,PGC 043798,SDSS J125329.04+021006.6,SDSS J125329.17+021006.0,SDSS J125329.17+021006.1,UGC 08021;;; -NGC4773;G;12:53:36.01;-08:38:19.5;Vir;0.85;0.52;77;15.00;;10.36;9.73;9.41;22.14;E;;;;;;;;2MASX J12533599-0838197,MCG -01-33-041,PGC 043810;;; -NGC4774;GPair;12:53:06.20;+36:49:22.0;CVn;1.20;;;;;;;;;;;;;;;;;MCG +06-28-037;;;Diameter of the group inferred by the author. -NGC4774 NED01;G;12:53:06.02;+36:49:34.8;CVn;0.40;0.27;143;16.25;;;;;24.71;Sbc;;;;;;;;MCG +06-28-037 NED01,PGC 2087677,SDSS J125306.01+364934.7;;;B-Mag taken from LEDA -NGC4774 NED02;G;12:53:06.59;+36:49:08.6;CVn;0.60;0.35;125;14.60;;12.48;11.79;11.33;22.02;Sc;;;;;;;;2MASX J12530651+3649109,IRAS 12507+3705,MCG +06-28-037 NED02,PGC 043759,SDSS J125306.58+364908.6;;; -NGC4775;G;12:53:45.70;-06:37:19.8;Vir;2.22;1.96;59;12.30;;10.20;9.80;9.22;21.94;Scd;;;;;;;;2MASX J12534570-0637197,IRAS 12511-0621,MCG -01-33-043,PGC 043826,UGCA 306;;; -NGC4776;G;12:53:04.46;-09:11:59.7;Vir;1.96;1.08;65;14.21;;;;;24.20;S0;;;;;4759 NED01;;;MCG -01-33-036,PGC 043754;;; -NGC4777;G;12:53:58.54;-08:46:32.6;Vir;1.84;0.79;8;14.50;;10.66;10.08;9.93;23.64;SABa;;;;;;;;2MASX J12535853-0846326,MCG -01-33-044,PGC 043852;;; -NGC4778;G;12:53:05.81;-09:12:13.8;Vir;2.69;2.09;120;13.79;;9.59;8.89;8.63;24.37;S0;;;;;4759 NED02;;;2MASX J12530567-0912141,MCG -01-33-037,PGC 043757;;; -NGC4779;G;12:53:50.84;+09:42:36.2;Vir;1.86;1.31;54;13.50;;10.78;10.15;9.87;22.88;SBc;;;;;;;;2MASX J12535086+0942357,IRAS 12513+0958,MCG +02-33-034,PGC 043837,SDSS J125350.82+094234.7,SDSS J125350.83+094236.2,UGC 08022;;; -NGC4780;G;12:54:05.23;-08:37:16.0;Vir;1.96;0.50;173;13.20;;10.89;10.27;10.15;22.89;SABc;;;;;;;;2MASX J12540524-0837159,IRAS 12515-0821,MCG -01-33-045,PGC 043870;;; -NGC4780A;G;12:54:03.04;-08:39:13.7;Vir;0.74;0.25;26;16.05;;12.74;12.05;11.81;24.05;;;;;;;;;2MASX J12540303-0839136,PGC 1000913;;; -NGC4781;G;12:54:23.75;-10:32:13.9;Vir;3.66;1.48;120;11.80;;9.47;8.89;8.61;22.16;Scd;;;;;;;;2MASX J12542374-1032139,IRAS 12517-1015,MCG -02-33-049,PGC 043902;;; -NGC4782;G;12:54:35.72;-12:34:07.1;Crv;1.48;0.87;171;13.00;12.75;8.75;8.04;7.75;21.93;E;;;;;;;;2MASX J12543569-1234069,2MASX J12543570-1234070,MCG -02-33-050,PGC 043924;;Sometimes confused with NGC 4783.; -NGC4783;G;12:54:36.59;-12:33:28.2;Crv;1.41;0.69;134;12.50;12.80;;;;22.39;E;;;;;;;;MCG -02-33-051,PGC 043926;;Sometimes confused with NGC 4782.; -NGC4784;G;12:54:37.02;-10:36:47.0;Vir;1.67;0.41;103;15.00;;10.91;10.22;9.93;24.16;S0;;;;;;;;2MASX J12543702-1036471,MCG -02-33-053,PGC 043929;;; -NGC4785;G;12:53:27.33;-48:44:57.1;Cen;2.04;0.97;80;13.22;12.09;9.62;8.85;8.57;22.95;SBb;;;;;;;;2MASX J12532731-4844569,ESO 219-004,ESO-LV 219-0040,IRAS 12506-4828,PGC 043791;;; -NGC4786;G;12:54:32.42;-06:51:33.9;Vir;1.98;1.51;171;14.00;;9.68;8.97;8.72;23.06;E;;;;;;;;2MASX J12543242-0651339,MCG -01-33-046,PGC 043922;;; -NGC4787;G;12:54:05.52;+27:04:07.1;Com;1.02;0.32;1;15.44;;12.20;11.70;11.40;24.00;S0-a;;;;;;;;2MASX J12540552+2704071,MCG +05-30-121,PGC 043875,SDSS J125405.51+270407.0,SDSS J125405.52+270406.9,SDSS J125405.52+270407.0,SDSS J125405.52+270407.1,UGC 08026;;; -NGC4788;G;12:54:16.03;+27:18:13.3;Com;0.91;0.32;141;15.40;;12.03;11.23;11.03;23.66;S0-a;;;;;;;;2MASX J12541602+2718131,MCG +05-30-123,PGC 043874,SDSS J125416.02+271813.4,SDSS J125416.03+271813.6;;; -NGC4789;G;12:54:19.02;+27:04:04.9;Com;1.66;1.12;174;13.12;12.10;10.00;9.53;9.24;22.91;S0;;;;;;;;2MASX J12541900+2704051,MCG +05-30-124,PGC 043895,SDSS J125419.01+270404.9,UGC 08028;;; -NGC4789A;G;12:54:05.25;+27:08:58.7;Com;1.90;1.24;37;14.23;13.95;14.79;14.33;15.35;23.87;I;;;;;;;;2MASX J12540524+2708586,MCG +05-30-120,PGC 043869,UGC 08024;;; -NGC4790;G;12:54:51.94;-10:14:52.2;Vir;1.69;0.93;87;12.00;;10.70;10.03;9.78;22.16;SBc;;;;;;;;2MASX J12545193-1014521,IRAS 12522-0958,MCG -02-33-056,PGC 043972;;Confused HIPASS source; -NGC4791;G;12:54:43.95;+08:03:11.2;Vir;1.06;0.70;66;15.10;;12.17;11.60;11.35;23.62;SBa;;;;;;;;2MASX J12544393+0803113,MCG +01-33-021,PGC 043950,SDSS J125443.94+080311.1;;; -NGC4792;G;12:55:03.68;-12:29:49.8;Crv;0.85;0.42;143;15.44;15.00;11.36;10.61;10.41;23.43;S0;;;;;;;;2MASX J12550368-1229493,PGC 043999;;; -NGC4793;G;12:54:40.62;+28:56:19.2;Com;1.82;0.94;54;12.50;11.93;9.85;9.22;8.89;21.80;Sc;;;;;;;;2MASX J12544060+2856195,IRAS 12522+2912,MCG +05-31-003,PGC 043939,SDSS J125440.61+285619.2,SDSS J125440.62+285619.2,UGC 08033;;; -NGC4794;G;12:55:10.50;-12:36:30.5;Crv;1.12;0.51;151;14.00;13.00;10.33;9.63;9.40;23.25;Sa;;;;;;;;2MASX J12551051-1236303,MCG -02-33-060,PGC 044012;;; -NGC4795;G;12:55:02.86;+08:03:55.8;Vir;2.16;1.42;119;13.50;;9.82;9.20;8.96;23.00;SBa;;;;;;;;2MASX J12550289+0803555,MCG +01-33-024 NED01,PGC 043998,SDSS J125502.85+080355.9,UGC 08037;;; -NGC4796;G;12:55:04.69;+08:03:58.4;Vir;1.80;1.73;110;14.50;;;;;25.38;E-S0;;;;;;;;MCG +01-33-024 NED02,PGC 093119,UGC 08037 NOTES01;;Superimposed on NGC 4795, 0.45 arcmin East of center.; -NGC4797;G;12:54:55.17;+27:24:45.7;Com;1.15;0.85;34;14.20;13.17;10.92;10.22;9.89;23.23;E-S0;;;;;4798;;;2MASX J12545516+2724455,MCG +05-31-004,PGC 043981,SDSS J125455.16+272445.7,SDSS J125455.17+272445.7,UGC 08038;;; -NGC4798;Dup;12:54:55.17;+27:24:45.7;Com;;;;;;;;;;;;;;;4797;;;;;; -NGC4799;G;12:55:15.53;+02:53:47.9;Vir;1.44;0.62;91;14.32;;10.83;10.16;9.89;22.78;Sab;;;;;;;;2MASX J12551554+0253477,IRAS 12526+0310,MCG +01-33-025,PGC 044017,SDSS J125515.50+025347.0,SDSS J125515.53+025347.8,SDSS J125515.53+025347.9,UGC 08043;;; -NGC4800;G;12:54:37.80;+46:31:52.2;CVn;1.65;1.16;21;12.00;;9.28;8.57;8.30;21.90;Sb;;;;;;;;2MASX J12543777+4631521,IRAS 12523+4648,MCG +08-24-004,PGC 043931,SDSS J125437.79+463152.1,UGC 08035;;; -NGC4801;G;12:54:37.77;+53:05:24.0;UMa;1.35;0.67;138;14.60;;11.59;10.88;10.61;24.48;E-S0;;;;;;;;2MASX J12543771+5305241,MCG +09-21-060,PGC 043946,SDSS J125437.76+530523.9,SDSS J125437.76+530524.1,SDSS J125437.77+530524.0;;; -NGC4802;G;12:55:49.64;-12:03:19.1;Vir;2.64;2.30;18;12.00;;9.36;8.60;8.50;23.24;S0;;;;;4804;;;2MASX J12554963-1203192,IRAS 12532-1147,MCG -02-33-061,PGC 044087;;; -NGC4803;G;12:55:33.68;+08:14:25.5;Vir;0.76;0.42;15;15.00;;11.49;10.80;10.71;23.06;E-S0;;;;;;;;2MASX J12553366+0814259,MCG +02-33-036,PGC 044061,SDSS J125533.67+081425.4;;; -NGC4804;Dup;12:55:49.64;-12:03:19.1;Vir;;;;;;;;;;;;;;;4802;;;;;; -NGC4805;*;12:55:24.23;+27:58:52.7;Com;;;;;;;;;;;;;;;;;;;;; -NGC4806;G;12:56:12.40;-29:30:10.6;Hya;1.35;1.15;52;13.44;;11.39;10.74;10.34;22.68;Sc;;;;;;;;2MASX J12561239-2930106,ESO 443-012,ESO-LV 443-0120,IRAS 12535-2914,MCG -05-31-003,PGC 044116;;; -NGC4807;G;12:55:29.10;+27:31:17.1;Com;0.88;0.65;22;14.50;13.50;11.30;10.67;10.40;22.94;E-S0;;;;;;;;2MASX J12552907+2731169,MCG +05-31-006,PGC 044037,SDSS J125529.08+273117.0,SDSS J125529.09+273117.1,SDSS J125529.10+273117.1,UGC 08049;;; -NGC4808;G;12:55:48.95;+04:18:14.8;Vir;2.36;0.93;127;12.50;;10.00;9.33;9.04;22.21;SABc;;;;;;;;2MASX J12554894+0418147,IRAS 12532+0434,MCG +01-33-028,PGC 044086,UGC 08054;;; -NGC4809;G;12:54:51.06;+02:39:14.7;Vir;1.58;0.64;65;14.20;;;;;23.23;IAB;;;;;;;;MCG +01-33-022,PGC 043969,SDSS J125451.06+023914.7,SDSS J125451.07+023914.7,SDSS J125451.12+023914.7,UGC 08034;;NGC gives only one pos. for N4809 & N4810. NED follows CGCG and RC2.; -NGC4810;G;12:54:51.20;+02:38:25.0;Vir;0.86;0.43;167;14.80;;;;;22.50;IAB;;;;;;;;MCG +01-33-023,PGC 043971,UGC 08034 NOTES01;;NGC gives only one pos. for N4809 & N4810. NED follows CGCG and RC2.; -NGC4811;G;12:56:52.36;-41:47:49.9;Cen;1.32;0.89;40;14.05;;10.70;9.92;9.72;23.73;S0-a;;;;;;;;2MASX J12565235-4147499,ESO 323-047,ESO-LV 323-0470,MCG -07-27-019,PGC 044201;;; -NGC4812;G;12:56:52.70;-41:48:48.0;Cen;1.50;0.63;34;14.16;;10.60;9.90;9.65;23.79;S0;;;;;;;;2MASX J12565270-4148479,ESO 323-048,ESO-LV 323-0480,MCG -07-27-018,PGC 044204;;; -NGC4813;G;12:56:36.12;-06:49:04.2;Vir;1.59;0.86;26;15.00;;10.79;10.11;9.88;23.81;S0;;;;;;;;2MASX J12563612-0649040,MCG -01-33-055,PGC 044160;;The APM position refers to the northeastern part of the galaxy.; -NGC4814;G;12:55:21.94;+58:20:38.8;UMa;2.75;2.00;128;12.40;;9.99;9.32;9.05;23.53;Sb;;;;;;;;2MASX J12552194+5820382,IRAS 12532+5836,MCG +10-19-003,PGC 044025,SDSS J125521.92+582038.7,SDSS J125521.94+582038.7,SDSS J125521.94+582038.8,UGC 08051;;; -NGC4815;OCl;12:57:58.37;-64:57:42.3;Mus;3.90;;;9.61;8.60;;;;;;;;;;;;;MWSC 2075;;; -NGC4816;G;12:56:12.15;+27:44:43.7;Com;1.38;0.63;90;13.80;12.84;10.70;10.01;9.71;23.03;E-S0;;;;;;;;2MASX J12561213+2744440,MCG +05-31-010,PGC 044114,SDSS J125612.14+274443.7,UGC 08057;;; -NGC4817;G;12:56:29.82;+27:56:24.0;Com;0.69;0.60;120;15.00;;12.69;11.96;11.47;23.81;E;;;;;;;;2MASX J12562984+2756240,PGC 083663,SDSS J125629.80+275624.0,SDSS J125629.81+275623.9,SDSS J125629.81+275624.0,SDSS J125629.82+275624.0;;; -NGC4818;G;12:56:48.90;-08:31:31.1;Vir;4.27;1.28;178;11.00;;8.81;8.19;7.94;23.20;SABa;;;;;;;;2MASX J12564890-0831310,IRAS 12542-0815,MCG -01-33-057,PGC 044191;;; -NGC4819;G;12:56:27.86;+26:59:14.4;Com;1.00;0.78;150;14.10;13.17;11.05;10.29;10.12;22.73;Sa;;;;;;;;2MASX J12562784+2659150,MCG +05-31-014,PGC 044144,SDSS J125627.85+265914.7,SDSS J125627.86+265914.6,UGC 08060;;; -NGC4820;G;12:57:00.56;-13:43:09.6;Vir;1.19;0.42;106;15.00;;11.34;10.68;10.39;23.91;S0;;;;;;;;2MASX J12570056-1343094,MCG -02-33-067,PGC 044227;;; -NGC4821;G;12:56:29.13;+26:57:25.2;Com;0.59;0.34;8;15.00;;12.06;11.33;11.10;22.70;E;;;;;;;;2MASX J12562911+2657250,MCG +05-31-015,PGC 044148,SDSS J125629.13+265725.1,SDSS J125629.13+265725.2;;; -NGC4822;G;12:57:03.74;-10:45:42.6;Vir;1.38;0.97;93;14.00;;10.87;10.12;9.88;23.79;E-S0;;;;;;;;2MASX J12570373-1045423,MCG -02-33-069,PGC 044236;;; -NGC4823;G;12:57:25.64;-13:41:55.3;Vir;0.81;0.22;178;15.97;;12.67;11.98;11.80;;S0-a;;;;;;;;2MASX J12572565-1341551,PGC 044305;;; -NGC4824;*;12:56:36.37;+27:25:57.5;Com;;;;;;;;;;;;;;;;;;SDSS J125636.36+272557.4;;; -NGC4825;G;12:57:12.24;-13:39:53.4;Vir;2.69;1.64;139;9.30;;9.47;8.77;8.51;23.75;E-S0;;;;;;;;2MASX J12571223-1339534,MCG -02-33-070,PGC 044261;;; -NGC4826;G;12:56:43.64;+21:40:58.7;Com;10.52;5.33;114;9.36;8.52;6.27;5.58;5.33;22.68;SABa;;;;064;;;;2MASX J12564369+2140575,IRAS 12542+2157,MCG +04-31-001,PGC 044182,UGC 08062;Black Eye Galaxy,Evil Eye Galaxy;; -NGC4827;G;12:56:43.53;+27:10:43.1;Com;1.22;0.97;34;13.90;12.91;10.98;10.32;10.04;23.07;E-S0;;;;;;;;2MASX J12564351+2710438,MCG +05-31-016,PGC 044178,SDSS J125643.51+271043.6,SDSS J125643.52+271043.6,SDSS J125643.52+271043.7,SDSS J125643.53+271043.7,UGC 08065;;; -NGC4828;G;12:56:42.86;+28:01:13.6;Com;0.75;0.70;155;15.40;;11.99;11.20;10.92;22.82;S0;;;;;;;;2MASX J12564283+2801138,MCG +05-31-017,PGC 044176,SDSS J125642.85+280113.5,SDSS J125642.86+280113.6,SDSS J125642.86+280113.8;;; -NGC4829;G;12:57:24.48;-13:44:15.0;Vir;0.58;0.37;106;16.09;;12.76;12.00;11.91;23.67;E;;;;;;;;2MASX J12572449-1344151,PGC 044299;;; -NGC4830;G;12:57:27.91;-19:41:28.6;Vir;2.31;1.49;164;12.68;;9.80;9.07;8.85;23.63;E-S0;;;;;;;;2MASX J12572790-1941286,ESO 575-037,ESO-LV 575-0370,MCG -03-33-024,PGC 044313;;; -NGC4831;G;12:57:36.69;-27:17:31.7;Hya;1.57;0.87;177;13.39;;10.31;9.56;9.32;23.19;E-S0;;;;;;;;2MASX J12573667-2717318,ESO 507-055,ESO-LV 507-0550,MCG -04-31-010,PGC 044340;;; -NGC4832;G;12:57:47.53;-39:45:42.1;Cen;2.14;1.48;35;13.17;;9.89;9.17;8.93;23.69;S0;;;;;;;;2MASX J12574754-3945421,ESO 323-051,ESO-LV 323-0510,MCG -06-29-001,PGC 044361;;; -NGC4833;GCl;12:59:34.94;-70:52:28.5;Mus;8.40;;;8.72;7.79;;;;;;;;;;;;;C 105,MWSC 2077;;; -NGC4834;G;12:56:25.28;+52:17:45.1;CVn;1.08;0.46;109;15.50;;11.73;11.00;10.73;23.68;Sa;;;;;;;;2MASX J12562525+5217453,MCG +09-21-067,PGC 044136,SDSS J125625.27+521745.1,SDSS J125625.28+521745.1,SDSS J125625.29+521745.3;;; -NGC4835;G;12:58:07.84;-46:15:51.2;Cen;3.30;0.68;150;12.31;11.74;9.26;8.50;8.18;22.57;Sbc;;;;;;;;2MASX J12580782-4615511,ESO 269-019,ESO-LV 269-0190,IRAS 12552-4559,PGC 044409;;; -NGC4835A;G;12:57:13.13;-46:22:28.9;Cen;2.95;0.38;178;14.07;;11.27;10.48;10.11;23.56;Sc;;;;;;;;2MASX J12571315-4622287,ESO 269-015,ESO-LV 269-0150,PGC 044271;;; -NGC4836;G;12:57:34.29;-12:44:38.8;Vir;1.48;1.08;8;13.99;;11.18;10.50;10.14;23.87;SABc;;;;;;;;2MASX J12573428-1244381,IRAS 12549-1228,MCG -02-33-072,PGC 044328;;; -NGC4837;GPair;12:56:49.10;+48:17:55.0;CVn;1.30;;;;;;;;;;;;;;;;;UGC 08068;;;Diameter of the group inferred by the author. -NGC4837 NED01;G;12:56:48.30;+48:17:48.8;CVn;1.32;0.54;64;14.40;;11.59;10.88;10.52;23.06;I;;;;;;;;2MASX J12564828+4817485,IRAS 12545+4834,MCG +08-24-011,PGC 044188,UGC 08068 NED01;;; -NGC4837 NED02;G;12:56:49.90;+48:18:00.4;CVn;0.33;0.28;;16.00;;;;;;Sd;;;;;;;;MCG +08-24-012,PGC 044198,SDSS J125649.90+481800.3,UGC 08068 NED02;;; -NGC4838;G;12:57:56.16;-13:03:36.3;Vir;1.79;1.41;9;13.30;;10.74;10.09;9.77;23.62;Sb;;;;;;;;2MASX J12575614-1303360,MCG -02-33-074,PGC 044383;;; -NGC4839;G;12:57:24.36;+27:29:52.1;Com;2.70;1.24;65;13.02;12.06;10.09;9.33;9.20;24.04;E;;;;;;;;2MASX J12572435+2729517,MCG +05-31-025,PGC 044298,SDSS J125724.36+272952.0,SDSS J125724.36+272952.1,UGC 08070;;The position in 1996ApJS..106....1W is 6 arcsec south of the nucleus.; -NGC4840;G;12:57:32.84;+27:36:37.2;Com;0.73;0.70;125;14.80;;11.58;10.84;10.56;22.88;E;;;;;;;;2MASX J12573284+2736368,MCG +05-31-029,PGC 044324,SDSS J125732.83+273637.1,SDSS J125732.83+273637.2,SDSS J125732.83+273637.4;;; -NGC4841A;G;12:57:31.95;+28:28:37.0;Com;1.45;1.38;60;13.50;;10.26;9.45;9.22;23.44;E;;;;;;;;2MASX J12573197+2828368,MCG +05-31-026,PGC 044323,SDSS J125731.94+282836.8,SDSS J125731.95+282836.9,SDSS J125731.95+282837.0,UGC 08072;;Component 'a)' in UGC notes.; -NGC4841B;G;12:57:33.89;+28:28:56.1;Com;1.00;0.79;169;13.50;;;;;22.58;E;;;;;;;;MCG +05-31-027,PGC 044329,SDSS J125733.88+282856.1,SDSS J125733.88+282856.2,UGC 08073;;Component 'b)' in UGC notes.; -NGC4842A;G;12:57:35.84;+27:29:35.7;Com;0.58;0.57;70;14.90;;11.88;11.18;11.00;22.91;E;;;;;;;;2MASX J12573584+2729358,MCG +05-31-030,PGC 044337,SDSS J125735.85+272935.5,SDSS J125735.85+272935.6,SDSS J125735.86+272935.5,UGC 08070 NOTES02;;; -NGC4842B;G;12:57:36.14;+27:29:05.3;Com;0.42;0.29;49;16.30;;13.11;12.47;12.14;23.06;E;;;;;;;;2MASX J12573614+2729058,MCG +05-31-031,PGC 044338,SDSS J125736.14+272905.2,UGC 08070 NOTES03;;; -NGC4843;G;12:58:00.82;-03:37:16.1;Vir;1.98;0.44;91;14.10;;10.49;9.74;9.47;24.04;S0-a;;;;;;;;2MASX J12580082-0337161,MCG +00-33-024,PGC 044388,SDSS J125800.83-033715.9;;; -NGC4844;*;12:58:08.26;-13:04:47.7;Vir;;;;15.77;14.14;10.58;10.03;9.80;;;;;;;;;;2MASS J12580816-1304505,UCAC3 154-139697,UCAC4 385-061931;;NGC identification is not certain.; -NGC4845;G;12:58:01.19;+01:34:33.0;Vir;5.50;1.20;82;17.40;16.31;8.81;8.08;7.79;23.46;SABa;;;;;4910;;;2MASX J12580124+0134320,IRAS 12554+0150,MCG +00-33-025,PGC 044392,SDSS J125801.18+013433.0,SDSS J125801.19+013433.0,UGC 08078;;Identification as NGC 4910 is uncertain.; -NGC4846;G;12:57:47.69;+36:22:14.6;CVn;1.21;0.50;62;14.60;;11.60;10.86;10.76;23.03;SBbc;;;;;;;;2MASX J12574764+3622139,MCG +06-29-002,PGC 044362,SDSS J125747.68+362214.5,SDSS J125747.69+362214.6,UGC 08079;;; -NGC4847;G;12:58:28.95;-13:08:27.3;Vir;0.83;0.63;155;15.07;;12.12;11.44;11.33;23.77;E;;;;;;;;2MASX J12582896-1308274,PGC 044464;;; -NGC4848;G;12:58:05.64;+28:14:33.9;Com;1.27;0.42;157;14.20;;11.74;11.10;10.72;22.68;Sc;;;;;;;;2MASX J12580552+2814335,IRAS 12556+2830,MCG +05-31-039,PGC 044405,SDSS J125805.58+281433.3,SDSS J125805.59+281433.3,SDSS J125805.59+281433.4,UGC 08082;;; -NGC4849;G;12:58:12.68;+26:23:48.8;Com;1.40;0.99;176;14.50;;10.98;10.34;10.02;23.71;S0;;;;;;3935;;2MASX J12581261+2623486,MCG +05-31-044,PGC 044424,SDSS J125812.66+262348.7,SDSS J125812.67+262348.7,SDSS J125812.68+262348.8,UGC 08086;;"CGCG misprints name as 'IC 0838'; corrected in vol III (errata)."; -NGC4850;G;12:58:21.84;+27:58:03.8;Com;0.66;0.64;130;15.30;14.03;12.02;11.43;11.04;23.11;S0;;;;;;;;2MASX J12582185+2758037,MCG +05-31-040,PGC 044449,SDSS J125821.82+275803.9,SDSS J125821.83+275804.0,SDSS J125821.84+275804.0,SDSS J125821.84+275804.1;;; -NGC4851;G;12:58:21.71;+28:08:55.5;Com;0.40;0.33;94;15.20;14.94;;;;22.38;S0;;;;;;;;2MASX J12582169+2808557,PGC 044439,SDSS J125821.69+280855.6,SDSS J125821.70+280855.5,SDSS J125821.71+280855.5;;; -NGC4852;OCl;13:00:04.39;-59:36:34.0;Cen;5.40;;;;8.90;;;;;;;;;;;;;MWSC 2078;;; -NGC4853;G;12:58:35.19;+27:35:46.8;Com;0.68;0.57;76;14.68;13.00;11.62;10.94;10.57;22.30;E-S0;;;;;;;;2MASX J12583518+2735467,IRAS 12561+2752,MCG +05-31-048,PGC 044481,SDSS J125835.18+273546.9,SDSS J125835.18+273547.0,SDSS J125835.19+273547.0,UGC 08092;;; -NGC4854;G;12:58:47.40;+27:40:29.1;Com;0.95;0.67;44;15.20;14.21;11.87;11.22;10.93;23.56;S0;;;;;;;;2MASX J12584742+2740288,MCG +05-31-049,PGC 044502,SDSS J125847.39+274029.0,SDSS J125847.40+274028.9,SDSS J125847.40+274029.0;;; -NGC4855;G;12:59:18.45;-13:13:51.7;Vir;1.68;1.24;170;14.00;;10.32;9.66;9.36;24.17;E-S0;;;;;;;;2MASX J12591844-1313519,MCG -02-33-077,PGC 044572;;; -NGC4856;G;12:59:21.27;-15:02:31.8;Vir;4.25;1.57;38;11.00;;8.38;7.74;7.47;23.23;S0-a;;;;;;;;2MASX J12592127-1502318,MCG -02-33-078,PGC 044582,UGCA 313;;; -NGC4857;G;12:57:18.34;+70:12:12.4;Dra;1.15;0.66;118;14.70;;11.87;11.21;10.89;23.28;SABb;;;;;;;;2MASX J12571835+7012123,IRAS 12554+7028,MCG +12-12-022,PGC 044284,UGC 08077;;; -NGC4858;G;12:59:02.04;+28:06:56.7;Com;0.51;0.42;28;15.50;15.02;13.53;12.84;12.53;22.80;SBb;;;;;;;;2MASX J12590210+2806559,IRAS 12566+2823,MCG +05-31-051,PGC 044535,SDSS J125902.06+280656.3,SDSS J125902.06+280656.5,SDSS J125902.07+280656.3,SDSS J125902.07+280656.4;;; -NGC4859;G;12:59:01.83;+26:48:56.4;Com;1.51;0.65;93;14.80;;11.42;10.70;10.42;24.08;S0-a;;;;;;;;2MASX J12590180+2648569,MCG +05-31-053,PGC 044534,SDSS J125901.82+264856.3,SDSS J125901.82+264856.4,SDSS J125901.82+264856.5,UGC 08097;;; -NGC4860;G;12:59:03.90;+28:07:25.3;Com;1.07;0.94;121;14.70;13.24;11.28;10.62;10.29;23.51;E;;;;;;;;2MASX J12590392+2807249,MCG +05-31-054,PGC 044539,SDSS J125903.89+280725.3,SDSS J125903.90+280725.3,SDSS J125903.91+280725.3;;; -NGC4861;G;12:59:02.34;+34:51:34.0;CVn;3.81;1.45;18;12.90;12.32;12.44;12.16;11.77;23.65;Sm;;;;;;3961;;2MASX J12590234+3451339,MCG +06-29-003,PGC 044536,UGC 08098;;; -NGC4862;G;12:59:30.82;-14:07:56.4;Vir;1.09;0.89;147;15.00;;13.12;12.33;12.01;23.71;Sc;;;;;;3999;;2MASX J12593083-1407566,MCG -02-33-079,PGC 044610;;IC identification is not certain.; -NGC4863;G;12:59:42.46;-14:01:46.7;Vir;1.90;0.40;23;15.00;;11.42;10.73;10.79;24.75;S0-a;;;;;;;;2MASX J12594244-1401465,MCG -02-33-081,PGC 044650;;; -NGC4864;G;12:59:13.11;+27:58:37.2;Com;0.77;0.47;90;14.80;13.87;11.60;10.77;10.60;22.80;E;;;;;;;;2MASX J12591312+2758369,MCG +05-31-058,PGC 044566,SDSS J125913.11+275837.1,SDSS J125913.13+275837.2;;Shortened CGCG name may be confused with CGCG 125650+2814.5.; -NGC4865;G;12:59:19.87;+28:05:03.5;Com;0.88;0.42;113;14.60;13.69;11.43;10.74;10.48;22.94;E;;;;;;;;2MASX J12591985+2805038,MCG +05-31-064,PGC 044578,SDSS J125919.87+280503.4,SDSS J125919.87+280503.5,UGC 08100;;; -NGC4866;G;12:59:27.14;+14:10:15.8;Vir;5.77;0.98;88;11.90;;8.86;8.19;7.92;24.19;S0-a;;;;;;;;2MASX J12592713+1410157,MCG +02-33-045,PGC 044600,UGC 08102;;; -NGC4867;G;12:59:15.25;+27:58:14.6;Com;0.65;0.50;13;15.50;14.14;12.19;11.51;11.00;23.32;E;;;;;;;;2MASX J12591525+2758147,MCG +05-31-062,PGC 044568,SDSS J125915.24+275814.5;;Shortened CGCG name may be confused with CGCG 125648+2814.9.; -NGC4868;G;12:59:08.90;+37:18:37.2;CVn;1.43;1.30;155;12.90;;10.45;9.76;9.51;22.41;Sab;;;;;;;;2MASX J12590891+3718370,IRAS 12567+3734,MCG +06-29-004,PGC 044557,UGC 08099;;; -NGC4869;G;12:59:23.36;+27:54:41.7;Com;0.77;0.73;0;14.90;13.52;11.64;10.84;10.61;22.66;E;;;;;;;;2MASX J12592333+2754418,MCG +05-31-065,PGC 044587,SDSS J125923.36+275441.7,SDSS J125923.37+275441.8;;One of two 6cm sources associated with [WB92] 1256+2811; -NGC4870;G;12:59:17.77;+37:02:54.1;CVn;0.91;0.31;2;;;12.45;11.82;11.42;23.29;Sbc;;;;;;;;2MASX J12591779+3702540,PGC 044569,SDSS J125917.76+370254.0,SDSS J125917.77+370254.1;;; -NGC4871;G;12:59:29.96;+27:57:23.2;Com;0.77;0.57;160;15.10;14.07;12.16;11.32;11.12;23.42;S0;;;;;;;;2MASS J12592995+2757231,MCG +05-31-066,PGC 044606,SDSS J125929.95+275723.0,SDSS J125929.96+275723.1,SDSS J125929.96+275723.2;;; -NGC4872;G;12:59:34.04;+27:56:49.0;Com;0.67;0.41;124;14.70;14.10;12.33;11.66;11.00;22.41;E-S0;;;;;;;;MCG +05-31-068,PGC 044624,SDSS J125934.11+275648.5,SDSS J125934.12+275648.4,SDSS J125934.12+275648.6,SDSS J125934.13+275648.5;;; -NGC4873;G;12:59:32.79;+27:59:01.0;Com;0.81;0.52;103;15.40;14.13;12.29;11.53;11.25;23.37;S0;;;;;;;;2MASX J12593276+2759008,MCG +05-31-069,PGC 044621,SDSS J125932.78+275900.9,SDSS J125932.79+275900.9,SDSS J125932.80+275901.0;;; -NGC4874;G;12:59:35.71;+27:57:33.4;Com;2.29;1.98;49;13.70;11.40;9.85;9.02;8.86;23.44;E;;;;;;;;2MASX J12593570+2757338,MCG +05-31-070,PGC 044628,SDSS J125935.70+275733.3,SDSS J125935.71+275733.4,SDSS J125935.71+275733.5,UGC 08103;;One of two 6cm sources associated with [WB92] 1256+2811; -NGC4875;G;12:59:37.91;+27:54:26.4;Com;0.48;0.36;117;15.92;14.57;12.64;11.81;11.57;22.80;S0;;;;;;;;2MASX J12593789+2754267,PGC 044640,SDSS J125937.90+275426.3,SDSS J125937.91+275426.3,SDSS J125937.92+275426.2;;; -NGC4876;G;12:59:44.41;+27:54:44.9;Com;0.56;0.42;26;15.10;14.18;12.23;11.55;11.34;22.96;E;;;;;;;;2MASX J12594438+2754447,MCG +05-31-073,PGC 044658,SDSS J125944.40+275444.8,SDSS J125944.40+275445.0,SDSS J125944.41+275444.9;;; -NGC4877;G;13:00:26.34;-15:17:00.4;Vir;2.36;0.94;8;13.30;;10.00;9.26;8.95;23.19;Sab;;;;;;;;2MASX J13002634-1517005,IRAS 12577-1500,MCG -02-33-086,PGC 044761;;; -NGC4878;G;13:00:20.17;-06:06:13.8;Vir;1.53;1.43;70;14.50;;10.44;9.70;9.48;23.62;S0-a;;;;;;;;2MASX J13002017-0606135,MCG -01-33-064,PGC 044747;;NGC identification is not certain.; -NGC4879;*;13:00:25.61;-06:06:40.4;Vir;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC4880;G;13:00:10.57;+12:28:59.9;Vir;2.63;1.97;164;13.30;;10.10;9.32;9.08;23.47;S0-a;;;;;;;;2MASX J13001053+1229001,MCG +02-33-047,PGC 044719,SDSS J130010.57+122859.9,SDSS J130010.58+122859.9,UGC 08109;;HOLM 497B is a star.; -NGC4881;G;12:59:57.60;+28:14:50.6;Com;0.98;0.91;15;14.70;13.56;11.37;10.67;10.39;23.32;E;;;;;;;;2MASX J12595775+2814473,MCG +05-31-075,PGC 044686,UGC 08106;;; -NGC4882;Dup;13:00:04.44;+27:59:15.3;Com;;;;;;;;;;;;;;;4886;;;;;; -NGC4883;G;12:59:56.01;+28:02:05.0;Com;0.77;0.61;83;15.20;14.27;12.13;11.39;11.16;23.54;E-S0;;;;;;;;2MASX J12595601+2802052,PGC 044682,SDSS J125956.01+280204.9;;; -NGC4884;Dup;13:00:08.13;+27:58:37.2;Com;;;;;;;;;;;;;;;4889;;;;;; -NGC4885;G;13:00:33.87;-06:51:11.1;Vir;0.85;0.66;100;15.00;;12.38;11.90;11.42;23.13;Sab;;;;;;;;2MASX J13003387-0651110,IRAS 12579-0635,MCG -01-33-065,PGC 044781;;; -NGC4886;G;13:00:04.44;+27:59:15.3;Com;0.80;0.70;112;15.10;14.29;12.13;11.44;11.05;23.16;E;;;;;4882;;;MCG +05-31-076,PGC 044698,SDSS J130004.44+275915.2,SDSS J130004.44+275915.3;;; -NGC4887;G;13:00:39.26;-14:39:58.5;Vir;1.14;0.59;155;14.00;;11.73;11.24;10.90;23.10;S0-a;;;;;;;;2MASX J13003924-1439585,IRAS 12580-1423,MCG -02-33-087,PGC 044796;;; -NGC4888;G;13:00:36.26;-06:04:30.7;Vir;1.55;0.79;107;15.00;;10.76;9.99;9.96;23.70;Sa;;;;;;;;2MASX J13003582-0604290,MCG -01-33-066,PGC 044766;;The APM position refers to the eastern end of the galaxy.; -NGC4889;G;13:00:08.13;+27:58:37.2;Com;2.59;1.68;80;13.00;11.30;9.40;8.71;8.41;23.39;E;;;;;4884;;;2MASX J13000809+2758372,C 035,MCG +05-31-077,PGC 044715,SDSS J130008.12+275837.0,SDSS J130008.13+275836.9,SDSS J130008.13+275837.2,SDSS J130008.14+275837.2,UGC 08110;;; -NGC4890;G;13:00:39.12;-04:36:15.6;Vir;0.96;0.79;93;13.90;;11.45;10.84;10.56;22.32;Sm;;;;;;;;IRAS 12580-0420,MCG -01-33-067,PGC 044793;;; -NGC4891;*;13:00:46.99;-13:25:33.4;Vir;;;;;;;;;;;;;;;;;;;;This NGC number is often mistakenly applied to the galaxy NGC 4897.; -NGC4892;G;13:00:03.53;+26:53:53.2;Com;1.40;0.26;12;14.70;;11.54;10.88;10.63;23.59;S0-a;;;;;;;;2MASX J13000351+2653532,MCG +05-31-078,PGC 044697,SDSS J130003.52+265353.1,SDSS J130003.52+265353.2,SDSS J130003.53+265353.2,UGC 08108;;; -NGC4893;G;12:59:59.61;+37:11:36.2;CVn;1.10;0.70;3;15.60;;11.71;10.88;10.97;24.30;E;;;;;;4015;;2MASX J12595961+3711359,MCG +06-29-008,PGC 044690,SDSS J125959.61+371136.1,UGC 08111 NED01;;HOLM 498C is a star.; -NGC4893A;G;12:59:59.84;+37:11:17.3;CVn;0.56;0.39;177;16.00;;;;;23.43;E?;;;;;;4016;;MCG +06-29-009,PGC 044696,SDSS J125959.83+371117.3,SDSS J125959.84+371117.3;;Component 'a)' in UGC notes.; -NGC4894;G;13:00:16.52;+27:58:03.1;Com;0.60;0.28;36;16.11;15.04;12.88;12.20;11.88;23.64;S0;;;;;;;;2MASX J13001655+2758032,PGC 044732,SDSS J130016.51+275803.0,SDSS J130016.52+275803.1;;; -NGC4895;G;13:00:17.93;+28:12:08.3;Com;1.66;0.56;152;14.30;13.09;11.09;10.41;10.14;23.98;S0;;;;;;;;2MASX J13001795+2812082,MCG +05-31-081,PGC 044737,SDSS J130017.92+281208.6,SDSS J130017.93+281208.6,UGC 08113;;; -NGC4895A;G;13:00:09.12;+28:10:13.4;Com;0.59;0.32;99;15.60;14.94;12.80;12.28;11.78;23.64;E;;;;;;;;2MASX J13000909+2810132,PGC 044717,SDSS J130009.11+281013.3,SDSS J130009.11+281013.4,SDSS J130009.12+281013.4;;; -NGC4896;G;13:00:30.78;+28:20:46.4;Com;0.85;0.48;5;15.10;;11.75;11.11;10.76;23.25;E-S0;;;;;;;;2MASX J13003074+2820466,MCG +05-31-084,PGC 044768,SDSS J130030.76+282046.9,SDSS J130030.76+282047.0,UGC 08117;;; -NGC4897;G;13:00:52.95;-13:26:59.3;Vir;2.65;2.12;153;12.80;;10.50;9.77;9.58;23.92;Sbc;;;;;;;;2MASX J13005294-1326592,IRAS 12582-1310,MCG -02-33-089,PGC 044829,UGCA 316;;Misidentified as NGC 4891 in many catalogs.; -NGC4898;GPair;13:00:18.00;+27:57:26.0;Com;0.80;;;;;;;;;;;;;;;;;MCG +05-31-082;;;Diameter of the group inferred by the author. -NGC4898A;G;13:00:17.67;+27:57:19.4;Com;0.68;0.31;96;15.00;13.86;11.69;10.91;10.68;23.51;E;;;;;4898W;;;2MASX J13001768+2757192,MCG +05-31-082 NED01,PGC 044736,SDSS J130017.67+275718.9,SDSS J130017.69+275719.1;;; -NGC4898B;G;13:00:18.09;+27:57:23.6;Com;0.61;0.47;155;15.28;14.33;12.16;11.42;11.25;23.42;E-S0;;;;;4898E;;;2MASS J13001809+2757235,MCG +05-31-082 NED02,PGC 3098454;;; -NGC4899;G;13:00:56.63;-13:56:39.2;Vir;2.02;1.17;15;12.90;;10.30;9.65;9.35;22.48;SABc;;;;;;;;2MASX J13005663-1356392,IRAS 12583-1340,MCG -02-33-090,PGC 044841;;; -NGC4900;G;13:00:39.11;+02:30:05.2;Vir;2.13;2.02;150;12.80;;9.51;8.97;8.64;22.23;Sc;;;;;;;;2MASX J13003914+0230052,IRAS 12580+0246,MCG +01-33-035,PGC 044797,SDSS J130036.55+023002.2,SDSS J130039.10+023005.1,SDSS J130039.24+023002.6,SDSS J130039.24+023002.8,SDSS J130039.25+023002.6,UGC 08116;;Multiple SDSS entries describe this object.; -NGC4901;G;12:59:56.41;+47:12:20.0;CVn;1.15;1.10;155;15.50;;11.62;10.86;10.62;24.30;E;;;;;;;;2MASX J12595639+4712196,MCG +08-24-019,PGC 044684,SDSS J125956.41+471219.9,SDSS J125956.41+471220.0,SDSS J125956.42+471220.0,UGC 08112;;; -NGC4902;G;13:00:59.73;-14:30:49.1;Vir;2.63;2.37;78;12.00;;9.38;8.56;8.32;22.57;Sb;;;;;;;;2MASX J13005972-1430492,IRAS 12583-1414,MCG -02-33-092,PGC 044847,UGCA 315;;; -NGC4903;G;13:01:22.77;-30:56:05.9;Cen;1.72;1.41;90;13.74;;11.09;10.28;9.77;23.48;Sc;;;;;;;;2MASX J13012275-3056057,ESO 443-030,ESO-LV 443-0300,IRAS 12586-3039,MCG -05-31-013,PGC 044894;;; -NGC4904;G;13:00:58.66;-00:01:39.4;Vir;1.99;1.24;7;13.20;;10.40;9.75;9.50;22.42;Sc;;;;;;;;2MASX J13005866-0001388,IRAS 12584+0014,MCG +00-33-026,PGC 044846,SDSS J130058.65-000139.3,SDSS J130058.65-000139.6,SDSS J130058.66-000139.1,SDSS J130058.66-000139.3,SDSS J130058.66-000139.4,UGC 08121;;Multiple SDSS entries describe this object.; -NGC4905;G;13:01:30.68;-30:52:05.8;Cen;1.55;0.50;174;14.28;;10.94;10.21;9.95;23.94;S0-a;;;;;;;;2MASX J13013067-3052056,ESO 443-031,ESO-LV 443-0310,MCG -05-31-015,PGC 044902;;; -NGC4906;G;13:00:39.77;+27:55:26.0;Com;0.70;0.64;0;15.20;14.08;12.15;11.58;11.24;23.18;E;;;;;;;;2MASX J13003975+2755256,PGC 044799,SDSS J130039.76+275526.0;;; -NGC4907;G;13:00:48.80;+28:09:30.0;Com;1.00;0.90;32;14.60;13.81;11.54;10.86;10.53;23.18;Sb;;;;;;;;2MASX J13004875+2809296,MCG +05-31-089,PGC 044819,SDSS J130048.79+280929.8,SDSS J130048.80+280930.0;;; -NGC4908;G;13:00:54.46;+28:00:27.5;Com;1.19;0.77;97;14.80;13.50;11.33;10.72;10.41;23.45;E;;;;;;;;2MASX J13005445+2800271,MCG +05-31-090,PGC 044832,SDSS J130054.45+280027.3,SDSS J130054.45+280027.4,UGC 08129;;The identifications of IC 4051 and NGC 4908 are often confused.; -NGC4909;G;13:02:01.85;-42:46:17.1;Cen;1.96;1.80;30;13.63;;11.14;10.43;10.13;23.75;Sa;;;;;;;;2MASX J13020184-4246169,ESO 269-035,ESO-LV 269-0350,MCG -07-27-028,PGC 044949;;; -NGC4910;Dup;12:58:01.19;+01:34:33.0;Vir;;;;;;;;;;;;;;;4845;;;;;; -NGC4911;G;13:00:56.08;+27:47:27.0;Com;1.16;0.96;130;13.70;13.33;10.83;10.16;9.84;22.57;SABb;;;;;;;;2MASX J13005609+2747268,IRAS 12584+2803,MCG +05-31-093,PGC 044840,SDSS J130056.05+274727.0,SDSS J130056.05+274727.1,SDSS J130056.06+274727.2,UGC 08128;;; -NGC4912;Other;13:00:46.57;+37:22:39.7;CVn;;;;;;;;;;;;;;;;;;;;Nothing at this position on the POSS.; -NGC4913;Other;13:00:46.59;+37:20:39.7;CVn;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC4914;G;13:00:42.95;+37:18:55.0;CVn;2.69;1.31;154;12.70;;9.59;8.90;8.65;23.48;E;;;;;;;;2MASX J13004296+3718552,MCG +06-29-014,PGC 044807,UGC 08125;;; -NGC4915;G;13:01:28.22;-04:32:47.5;Vir;1.64;1.55;65;14.00;;9.72;9.02;8.77;22.84;E;;;;;;;;2MASX J13012822-0432470,MCG -01-33-069,PGC 044891,UGCA 318;;; -NGC4916;Other;13:00:54.55;+37:21:39.8;CVn;;;;;;;;;;;;;;;;;;;;Nothing at this position on the POSS.; -NGC4917;G;13:00:55.57;+47:13:19.6;CVn;1.33;0.81;152;15.00;;11.89;11.17;10.92;23.87;Sb;;;;;;;;2MASX J13005553+4713197,MCG +08-24-023,PGC 044838,SDSS J130055.56+471319.5,SDSS J130055.57+471319.6,UGC 08130;;; -NGC4918;G;13:01:50.62;-04:30:02.0;Vir;0.89;0.33;77;15.36;;12.71;12.05;11.81;23.59;S0-a;;;;;;;;2MASX J13015062-0430020,PGC 044934;;; -NGC4919;G;13:01:17.59;+27:48:32.7;Com;1.11;0.58;142;14.90;;11.78;11.20;10.85;23.99;S0;;;;;;;;2MASX J13011761+2748321,MCG +05-31-097,PGC 044885,SDSS J130117.59+274832.6,SDSS J130117.59+274832.7,UGC 08133;;; -NGC4920;G;13:02:04.15;-11:22:42.3;Vir;1.08;0.83;170;14.00;;;;;22.82;I;;;;;;4134;;2MASX J13020525-1122378,MCG -02-33-094,PGC 044958;;; -NGC4921;G;13:01:26.15;+27:53:09.4;Com;1.96;1.80;135;13.70;;10.23;9.58;9.31;23.64;Sab;;;;;;;;2MASX J13012613+2753095,MCG +05-31-098,PGC 044899,SDSS J130126.11+275309.6,SDSS J130126.12+275309.5,SDSS J130126.13+275309.6,UGC 08134;;; -NGC4922;GPair;13:01:24.90;+29:18:40.0;Com;1.10;;;;;;;;;;;;;;;;;MCG +05-31-099,UGC 08135;;;Diameter of the group inferred by the author. -NGC4922 NED01;G;13:01:24.52;+29:18:30.1;Com;1.23;1.17;137;15.93;14.99;10.85;10.10;9.84;23.15;E;;;;;;;;2MASX J13012450+2918306,MCG +05-31-099 NED01,PGC 044896,SDSS J130124.51+291830.1,UGC 08135 NED01;;; -NGC4922 NED02;G;13:01:25.26;+29:18:49.6;Com;0.58;0.34;123;15.60;14.67;;;;21.90;S?;;;;;;;;IRAS 12590+2934,MCG +05-31-099 NED02,PGC 086794,SDSS J130125.26+291849.4,SDSS J130125.26+291849.5,SDSS J130125.27+291849.4,UGC 08135 NED02;;; -NGC4923;G;13:01:31.80;+27:50:51.1;Com;0.72;0.67;60;14.70;;11.62;10.89;10.72;22.73;E-S0;;;;;;;;2MASX J13013176+2750507,MCG +05-31-101,PGC 044903,SDSS J130131.80+275051.0;;; -NGC4924;G;13:02:12.85;-14:58:11.4;Vir;1.77;1.35;58;13.70;;10.91;10.26;9.97;23.73;S0-a;;;;;;;;2MASX J13021285-1458115,IRAS 12595-1442,MCG -02-33-096,PGC 044977;;; -NGC4925;G;13:02:07.39;-07:42:38.8;Vir;1.18;0.87;119;14.00;;10.88;10.23;9.98;23.51;S0;;;;;;;;2MASX J13020740-0742388,MCG -01-33-074,PGC 044967;;; -NGC4926;G;13:01:53.73;+27:37:28.0;Com;1.23;1.04;64;14.10;;10.84;10.17;9.89;23.23;E-S0;;;;;;;;2MASX J13015375+2737277,MCG +05-31-103,PGC 044938,SDSS J130153.72+273727.9,SDSS J130153.73+273728.0,SDSS J130153.73+273728.2,UGC 08142;;; -NGC4926A;G;13:02:07.88;+27:38:53.9;Com;0.63;0.44;87;15.10;;12.61;12.03;11.74;23.17;S0;;;;;;;;2MASX J13020791+2738539,IRAS 12596+2755,MCG +05-31-107,PGC 044968,SDSS J130207.87+273853.8,SDSS J130207.88+273853.9,UGC 08142 NOTES01;;; -NGC4927;G;13:01:57.60;+28:00:21.2;Com;1.01;0.64;12;14.80;;11.37;10.57;10.37;23.48;E-S0;;;;;;;;2MASX J13015756+2800209,MCG +05-31-104,PGC 044945,SDSS J130157.57+280020.8,SDSS J130157.57+280020.9,SDSS J130157.57+280021.0;;; -NGC4928;G;13:03:00.57;-08:05:05.9;Vir;1.05;0.80;73;13.40;;11.06;10.46;10.27;21.55;Sbc;;;;;;;;2MASX J13030056-0805059,IRAS 13004-0749,MCG -01-33-075,PGC 045052;;; -NGC4929;G;13:02:44.40;+28:02:43.3;Com;0.82;0.68;48;14.90;;11.92;11.11;10.80;23.36;E;;;;;;;;2MASX J13024442+2802434,MCG +05-31-111,PGC 045027,SDSS J130244.39+280243.2,SDSS J130244.40+280243.0;;; -NGC4930;G;13:04:05.27;-41:24:41.7;Cen;3.54;2.84;44;12.35;12.00;9.79;9.06;8.83;23.49;Sbc;;;;;;;;2MASX J13040526-4124417,ESO 323-074,ESO-LV 323-0740,IRAS 13012-4108,MCG -07-27-029,PGC 045155,TYC 7781-612-1;;; -NGC4931;G;13:03:00.88;+28:01:56.9;Com;1.65;0.62;77;14.40;;11.18;10.47;10.31;24.23;S0;;;;;;;;2MASX J13030089+2801573,MCG +05-31-114,PGC 045055,SDSS J130300.87+280156.9,SDSS J130300.88+280157.0,UGC 08154;;; -NGC4932;G;13:02:37.71;+50:26:18.3;CVn;1.44;1.08;1;14.70;;12.04;11.25;11.07;23.88;Sc;;;;;;;;2MASX J13023767+5026181,MCG +09-21-089,PGC 045015,SDSS J130237.71+502618.2,SDSS J130237.71+502618.3,UGC 08150;;; -NGC4933;GTrpl;13:03:57.90;-11:29:52.0;Vir;3.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC4933A;G;13:03:54.73;-11:30:18.2;Vir;0.74;0.74;40;13.00;;9.39;8.69;8.43;22.18;E;;;;;;4173;;MCG -02-33-101,PGC 045142;;; -NGC4933B;G;13:03:56.74;-11:29:53.0;Vir;4.37;1.88;46;15.00;;;;;24.41;S0-a;;;;;;4176;;2MASX J13035697-1129475,MCG -02-33-102,PGC 045146;;; -NGC4933C;G;13:04:01.09;-11:29:26.0;Vir;0.65;0.52;146;17.00;;;;;23.50;Sd;;;;;;;;MCG -02-33-103,PGC 045143;;; -NGC4934;G;13:03:16.24;+28:01:49.5;Com;1.00;0.16;103;15.00;;12.13;11.46;11.15;23.71;S0-a;;;;;;;;2MASX J13031623+2801494,MCG +05-31-115,PGC 045082,SDSS J130316.24+280149.4,UGC 08160;;; -NGC4935;G;13:03:21.23;+14:22:39.0;Vir;1.09;0.92;84;13.90;;11.62;10.76;10.45;22.78;Sb;;;;;;;;2MASX J13032119+1422391,MCG +03-33-023,PGC 045093,SDSS J130321.22+142239.0,UGC 08159;;; -NGC4936;G;13:04:16.89;-30:31:34.5;Cen;2.85;2.43;6;11.76;12.23;8.68;7.98;7.73;23.12;E;;;;;;;;2MASX J13041709-3031347,ESO 443-047,ESO-LV 443-0470,MCG -05-31-028,PGC 045174;;; -NGC4937;*Ass;13:04:51.57;-47:13:09.7;Cen;;;;;;;;;;;;;;;;;;;;Group of stars.; -NGC4938;G;13:02:57.59;+51:19:06.7;CVn;0.87;0.78;44;15.30;;;;;23.41;SBb;;;;;;;;2MASX J13025758+5119070,MCG +09-21-091,PGC 045044,SDSS J130257.58+511906.7,SDSS J130257.59+511906.7,SDSS J130257.59+511906.9;;MCG implies the R.A.=12h00.5m.; -NGC4939;G;13:04:14.39;-10:20:22.6;Vir;5.71;2.30;6;14.81;13.80;9.32;8.69;8.44;23.71;Sbc;;;;;;;;2MASX J13041438-1020225,IRAS 13016-1004,MCG -02-33-104,PGC 045170;;; -NGC4940;G;13:05:00.25;-47:14:12.9;Cen;1.13;1.00;28;13.81;;10.75;10.09;9.79;22.89;Sa;;;;;;;;2MASX J13050026-4714129,ESO 269-042,ESO-LV 269-0420,IRAS 13021-4658,PGC 045235;;; -NGC4941;G;13:04:13.14;-05:33:05.8;Vir;3.29;2.70;23;13.18;12.23;9.09;8.44;8.22;23.09;SABa;;;;;;;;2MASX J13041314-0533058,IRAS 13016-0516,MCG -01-33-077,PGC 045165,UGCA 321;;; -NGC4942;G;13:04:19.11;-07:38:58.0;Vir;1.68;1.22;25;13.50;;11.66;10.97;10.45;23.25;SABc;;;;;;4136;;2MASX J13041910-0738579,IRAS 13017-0723,MCG -01-33-078,PGC 045177;;The IC identification is not certain.; -NGC4943;G;13:03:44.94;+28:05:03.2;Com;0.79;0.54;105;15.60;;12.36;11.62;11.40;23.64;S0;;;;;;;;2MASX J13034495+2805029,PGC 045129,SDSS J130344.94+280503.1,SDSS J130344.94+280503.2,SDSS J130344.95+280503.1;;; -NGC4944;G;13:03:49.95;+28:11:08.6;Com;1.39;0.43;88;13.30;;10.92;10.27;10.00;22.69;Sa;;;;;;;;2MASX J13034994+2811089,MCG +05-31-118,PGC 045133,SDSS J130349.94+281108.5,SDSS J130349.94+281108.6,UGC 08167;;; -NGC4945;G;13:05:27.48;-49:28:05.6;Cen;23.33;4.03;44;9.31;14.40;5.60;4.84;4.48;23.40;SBc;;;;;;;;2MASX J13052727-4928044,C 083,ESO 219-024,ESO-LV 219-0240,IRAS 13025-4911,PGC 045279;;A-M +30' Dec error.; -NGC4945A;G;13:06:33.73;-49:41:26.3;Cen;2.63;1.62;57;13.01;;;;;23.72;Sm;;;;;;;;ESO 219-028,ESO-LV 219-0280,PGC 045380;;; -NGC4946;G;13:05:29.38;-43:35:28.1;Cen;2.00;1.67;135;13.31;;9.91;9.17;8.90;23.76;E;;;;;;;;2MASX J13052940-4335279,ESO 269-045,ESO-LV 269-0450,MCG -07-27-030,PGC 045283;;; -NGC4947;G;13:05:20.20;-35:20:14.7;Cen;2.65;1.34;11;12.74;11.89;9.95;9.28;9.02;23.05;Sb;;;;;;3974;;2MASX J13052020-3520147,ESO 382-005,ESO-LV 382-0050,IRAS 13025-3504,MCG -06-29-006,PGC 045269;;; -NGC4947A;G;13:04:20.83;-35:13:40.0;Cen;1.28;0.51;23;15.06;;14.48;13.61;13.71;23.53;SBm;;;;;;;;2MASX J13042083-3513396,ESO 382-004,ESO-LV 382-0040,MCG -06-29-005A,PGC 045180;;; -NGC4948;G;13:04:55.96;-07:56:51.7;Vir;2.30;0.82;140;13.62;;11.67;10.99;10.75;23.20;SBcd;;;;;;4156;;2MASX J13045595-0756517,MCG -01-33-079,PGC 045224;;"The IC identification is not certain; HOLM 505B is a double star."; -NGC4948A;G;13:05:05.79;-08:09:40.8;Vir;1.44;1.04;180;14.02;;12.75;12.76;11.94;23.24;SBd;;;;;;;;2MASX J13050578-0809407,MCG -01-33-080,PGC 045242;;HOLM 506B is a star.; -NGC4949;G;13:04:17.92;+29:01:46.3;Com;0.72;0.38;102;;14.97;12.71;11.83;11.65;23.40;Sb;;;;;;;;PGC 045161,SDSS J130417.92+290146.2,SDSS J130417.92+290146.3;;; -NGC4950;G;13:05:36.53;-43:30:01.9;Cen;0.92;0.79;99;14.94;;11.74;11.11;10.62;23.48;S0;;;;;;;;2MASX J13053653-4330017,ESO 269-047,ESO-LV 269-0470,MCG -07-27-031,PGC 045294;;; -NGC4951;G;13:05:07.70;-06:29:37.8;Vir;3.14;1.16;90;12.50;;9.94;9.22;8.96;22.96;SABc;;;;;;;;2MASX J13050769-0629377,IRAS 13025-0613,MCG -01-33-081,PGC 045246;;The APM position is west of the nucleus.; -NGC4952;G;13:04:58.38;+29:07:20.1;Com;1.60;0.97;22;13.39;13.01;10.70;9.99;9.76;23.58;E;;;;;4962;;;2MASX J13045839+2907204,MCG +05-31-121,PGC 045233,SDSS J130458.38+290720.0,SDSS J130458.38+290720.1,SDSS J130458.39+290719.9,UGC 08175;;; -NGC4953;G;13:06:10.47;-37:35:08.7;Cen;1.84;0.99;51;14.12;;10.96;10.24;9.98;24.13;S0-a;;;;;;;;2MASX J13061048-3735086,ESO 382-008,ESO-LV 382-0080,MCG -06-29-009,PGC 045349;;; -NGC4954;G;13:02:19.87;+75:24:15.0;Dra;0.99;0.65;68;15.30;;11.11;10.37;10.11;22.98;S0;;;;;4972;;;2MASX J13021987+7524148,IRAS 13009+7540,MCG +13-09-044,PGC 044988,UGC 08157;;; -NGC4955;G;13:06:04.82;-29:45:15.4;Hya;2.34;1.72;15;12.89;;9.85;9.20;8.91;23.87;E;;;;;;;;2MASX J13060479-2945155,ESO 443-062,ESO-LV 443-0620,MCG -05-31-034,PGC 045340;;; -NGC4956;G;13:05:00.94;+35:10:40.9;CVn;1.56;1.52;60;13.50;;10.50;9.82;9.60;22.99;S0;;;;;;;;2MASX J13050097+3510413,MCG +06-29-025,PGC 045236,SDSS J130500.94+351040.9,UGC 08177;;; -NGC4957;G;13:05:12.39;+27:34:11.1;Com;1.22;0.93;97;14.20;;10.98;10.26;9.98;23.29;E;;;;;;;;2MASX J13051235+2734113,MCG +05-31-124,PGC 045253,SDSS J130512.38+273411.2,SDSS J130512.39+273411.1,UGC 08178;;; -NGC4958;G;13:05:48.88;-08:01:13.0;Vir;4.79;1.20;7;12.10;;8.49;7.83;7.61;23.53;S0;;;;;;;;2MASX J13054887-0801129,MCG -01-33-084,PGC 045313,UGCA 323;;; -NGC4959;G;13:05:41.03;+33:10:44.1;CVn;0.74;0.64;178;15.40;;11.81;11.12;10.91;23.37;S0-a;;;;;;;;2MASX J13054103+3310440,MCG +06-29-029,PGC 045301,SDSS J130541.02+331044.0,SDSS J130541.03+331044.0,SDSS J130541.03+331044.1;;; -NGC4960;Dup;13:05:47.57;+27:44:02.9;Com;;;;;;;;;;;;;;;4961;;;;;; -NGC4961;G;13:05:47.57;+27:44:02.9;Com;1.11;0.88;106;13.50;;11.75;10.98;10.85;22.73;Sc;;;;;4960;;;2MASX J13054757+2744027,IRAS 13033+2800,MCG +05-31-126,PGC 045311,SDSS J130547.56+274402.8,SDSS J130547.56+274402.9,UGC 08185;;Identification as NGC 4960 is not certain.; -NGC4962;Dup;13:04:58.38;+29:07:20.1;Com;;;;;;;;;;;;;;;4952;;;;;; -NGC4963;G;13:05:51.95;+41:43:18.9;CVn;0.86;0.81;55;14.20;;11.35;10.65;10.32;22.59;Sa;;;;;;;;2MASX J13055194+4143191,IRAS 13035+4159,MCG +07-27-030,PGC 045315,SDSS J130551.95+414318.8,SDSS J130551.95+414318.9,SDSS J130551.96+414318.8,UGC 08190;;; -NGC4964;G;13:05:24.86;+56:19:22.0;UMa;1.10;0.69;134;14.00;;11.87;11.21;10.94;22.71;SABa;;;;;;;;2MASX J13052487+5619216,MCG +09-22-007,PGC 045278,SDSS J130524.86+561921.9,SDSS J130524.87+561922.0,UGC 08184;;; -NGC4965;G;13:07:09.38;-28:13:41.5;Hya;2.49;2.05;142;12.76;;11.42;10.86;10.50;23.27;SABc;;;;;;;;2MASX J13070938-2813414,ESO 443-070,ESO-LV 443-0700,IRAS 13044-2757,MCG -05-31-036,PGC 045437,UGCA 326;;Confused HIPASS source; -NGC4966;G;13:06:17.31;+29:03:46.3;Com;1.03;0.49;142;14.23;13.48;11.14;10.42;10.25;22.34;SABa;;;;;;;;2MASX J13061725+2903471,MCG +05-31-131,PGC 045358,SDSS J130617.29+290347.4,SDSS J130617.29+290347.5,UGC 08194;;; -NGC4967;G;13:05:36.43;+53:33:51.4;UMa;1.15;0.87;117;14.20;;11.80;11.16;10.98;24.11;E;;;;;;;;2MASX J13053642+5333509,MCG +09-22-005,PGC 045281,SDSS J130536.42+533351.3,SDSS J130536.43+533351.3,SDSS J130536.43+533351.4,SDSS J130536.44+533351.6;;; -NGC4968;G;13:07:05.98;-23:40:37.3;Hya;2.28;1.04;57;13.78;14.79;10.55;9.63;9.48;24.30;S0;;;;;;;;2MASX J13070597-2340373,ESO 508-006,ESO-LV 508-0060,IRAS 13044-2324,MCG -04-31-030,PGC 045426;;; -NGC4969;GPair;13:07:03.00;+13:38:13.0;Vir;0.80;;;;;;;;;;;;;;;;;MCG +02-33-055;;;Diameter of the group inferred by the author. -NGC4969 NED01;G;13:07:02.74;+13:38:14.5;Vir;0.78;0.74;77;14.76;;11.63;11.07;11.02;23.33;E;;;;;;;;2MASX J13070274+1338143,MCG +02-33-055 NED01,PGC 045425;;;B-Mag taken from LEDA -NGC4969 NED02;G;13:07:03.47;+13:38:13.6;Vir;0.68;0.66;82;15.51;;;;;23.66;E-S0;;;;;;;;2MASS J13070346+1338134,MCG +02-33-055 NED02,SDSS J130703.46+133813.2,SDSS J130703.47+133813.2;;;B-Mag taken from LEDA -NGC4970;G;13:07:33.74;-24:00:30.8;Hya;1.79;1.14;138;13.24;;10.06;9.40;9.10;23.31;S0;;;;;;4196;;2MASX J13073375-2400309,ESO 508-009,ESO-LV 508-0090,MCG -04-31-033,PGC 045466;;; -NGC4971;G;13:06:54.96;+28:32:52.9;Com;0.78;0.68;101;15.00;;11.77;11.06;10.75;23.21;E-S0;;;;;;;;2MASX J13065496+2832523,MCG +05-31-134,PGC 045406,SDSS J130654.95+283252.9,SDSS J130654.96+283252.9;;; -NGC4972;Dup;13:02:19.87;+75:24:15.0;Dra;;;;;;;;;;;;;;;4954;;;;;; -NGC4973;G;13:05:32.15;+53:41:06.5;UMa;0.96;0.82;94;15.10;;11.63;10.96;10.70;23.41;E;;;;;;0847;;2MASX J13053216+5341069,MCG +09-22-006,PGC 045280,PGC 045299,SDSS J130532.15+534106.5,SDSS J130532.17+534106.7;;; -NGC4974;G;13:05:55.89;+53:39:33.4;UMa;1.57;1.11;123;14.30;;11.23;10.50;10.22;24.14;E;;;;;;;;2MASX J13055593+5339331,MCG +09-22-009,PGC 045321,SDSS J130555.89+533933.3,SDSS J130555.89+533933.4,SDSS J130555.90+533933.5;;; -NGC4975;G;13:07:50.20;-05:01:02.9;Vir;0.97;0.61;29;15.50;;11.19;10.53;10.30;23.63;S0;;;;;;;;2MASX J13075018-0501027,MCG -01-34-002,PGC 045492;;; -NGC4976;G;13:08:37.53;-49:30:23.1;Cen;5.83;3.27;161;11.05;10.20;7.76;7.12;6.85;23.63;E;;;;;;;;2MASX J13083752-4930230,ESO 219-029,ESO-LV 219-0290,PGC 045562;;; -NGC4977;G;13:06:04.43;+55:39:21.9;UMa;1.05;1.02;45;14.50;;11.03;10.35;10.12;23.25;Sb;;;;;;;;2MASX J13060447+5539218,MCG +09-22-010,PGC 045339,SDSS J130604.42+553921.9,SDSS J130604.43+553921.9,SDSS J130604.44+553921.7,SDSS J130604.45+553921.9,UGC 08196;;; -NGC4978;G;13:07:50.53;+18:24:55.8;Com;1.51;0.63;142;14.40;;10.90;10.19;9.96;23.72;S0-a;;;;;;;;2MASX J13075053+1824560,MCG +03-34-002,PGC 045494,SDSS J130750.52+182455.7,SDSS J130750.52+182455.8,UGC 08212;;; -NGC4979;G;13:07:42.82;+24:48:38.1;Com;0.86;0.74;102;15.30;;12.00;11.28;11.41;23.61;Sb;;;;;;4198;;2MASX J13074277+2448379,MCG +04-31-007,PGC 045484,SDSS J130742.81+244838.1,UGC 08209;;; -NGC4980;G;13:09:10.08;-28:38:30.4;Hya;1.77;0.78;165;13.53;;11.54;10.84;10.85;23.14;Sa;;;;;;;;2MASX J13091008-2838304,ESO 443-075,ESO-LV 443-0750,IRAS 13064-2822,MCG -05-31-037,PGC 045596;;; -NGC4981;G;13:08:48.74;-06:46:39.1;Vir;2.70;1.97;155;12.10;;9.43;8.79;8.49;22.72;Sbc;;;;;;;;2MASX J13084873-0646392,IRAS 13062-0630,MCG -01-34-003,PGC 045574;;; -NGC4982;Other;13:08:46.14;-10:35:19.2;Vir;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC4983;G;13:08:27.29;+28:19:13.8;Com;1.04;0.57;122;14.90;;11.68;11.02;10.63;23.48;SBa;;;;;;;;2MASX J13082728+2819139,MCG +05-31-138,PGC 045542,SDSS J130827.28+281913.7,SDSS J130827.28+281913.8,SDSS J130827.29+281913.8;;; -NGC4984;G;13:08:57.23;-15:30:58.7;Vir;3.37;2.50;45;12.00;;8.73;8.02;7.74;23.55;S0-a;;;;;;;;2MASX J13085721-1530586,IRAS 13062-1514,MCG -02-34-004,PGC 045585;;; -NGC4985;G;13:08:12.10;+41:40:34.8;CVn;1.15;0.82;126;15.10;;11.48;10.73;10.53;23.77;S0;;;;;;;;2MASX J13081207+4140349,MCG +07-27-032,PGC 045522,SDSS J130812.09+414034.8,SDSS J130812.10+414034.8,UGC 08218;;; -NGC4986;G;13:08:24.46;+35:12:23.2;CVn;1.55;0.93;82;14.20;;11.82;11.21;10.86;23.44;SBb;;;;;;;;2MASX J13082447+3512229,MCG +06-29-044,PGC 045538,SDSS J130824.45+351223.1,UGC 08221;;; -NGC4987;G;13:07:59.06;+51:55:45.5;CVn;1.24;0.71;33;14.60;;11.28;10.57;10.49;23.65;E;;;;;;;;2MASX J13075908+5155450,MCG +09-22-015,PGC 045502,SDSS J130759.04+515545.4,SDSS J130759.05+515545.7,SDSS J130759.06+515545.4,SDSS J130759.06+515545.5,SDSS J130759.06+515545.7,UGC 08216;;; -NGC4988;G;13:09:54.38;-43:06:20.6;Cen;1.86;0.64;26;13.86;;11.29;10.65;10.28;23.87;S0-a;;;;;;;;2MASX J13095440-4306204,2MASX J13095623-4306274,ESO 269-055,ESO-LV 269-0550,IRAS 13070-4250,MCG -07-27-037,PGC 045671;;; -NGC4989;G;13:09:16.05;-05:23:47.1;Vir;1.41;0.55;175;14.00;;10.15;9.46;9.24;23.83;S0;;;;;;;;2MASX J13091607-0523469,MCG -01-34-005,PGC 045606;;; -NGC4990;G;13:09:17.29;-05:16:22.1;Vir;0.90;0.81;48;14.38;13.82;11.28;10.63;10.37;22.79;S0;;;;;;;;2MASX J13091728-0516219,IRAS 13067-0500,MCG -01-34-004,PGC 045608;Cocoon Galaxy;; -NGC4991;G;13:09:15.11;+02:20:51.6;Vir;0.59;0.48;101;15.50;;12.88;12.27;12.18;22.97;SBb;;;;;;;;2MASX J13091510+0220513,PGC 045604,SDSS J130915.10+022051.5,SDSS J130915.11+022051.5,SDSS J130915.11+022051.6;;; -NGC4992;G;13:09:05.60;+11:38:03.0;Vir;1.06;0.60;11;14.60;;11.23;10.51;10.18;23.03;SBa;;;;;;;;2MASX J13090558+1138026,MCG +02-34-001,PGC 045593,SDSS J130905.59+113802.8,SDSS J130905.60+113802.9,UGC 08232;;; -NGC4993;G;13:09:47.70;-23:23:02.0;Hya;1.55;1.35;173;13.34;;10.18;9.51;9.22;23.16;E-S0;;;;;4994;;;2MASX J13094770-2323017,ESO 508-018,ESO-LV 508-0180,MCG -04-31-039,PGC 045657;;; -NGC4994;Dup;13:09:47.70;-23:23:02.0;Hya;;;;;;;;;;;;;;;4993;;;;;; -NGC4995;G;13:09:40.65;-07:50:00.3;Vir;2.43;1.49;99;12.00;;9.11;8.39;8.23;22.23;SABb;;;;;;;;2MASX J13094065-0750002,IRAS 13070-0734,MCG -01-34-007,PGC 045643,UGCA 329;;; -NGC4996;G;13:09:31.89;+00:51:25.3;Vir;1.81;1.36;16;14.40;;;;;24.33;S0-a;;;;;;;;MCG +00-34-009,PGC 045629,SDSS J130931.88+005125.2,SDSS J130931.89+005125.3,UGC 08235;;; -NGC4997;G;13:09:51.70;-16:30:55.7;Vir;1.61;0.89;85;13.00;;;;11.52;23.74;E-S0;;;;;;;;2MASX J13095347-1631018,MCG -03-34-005,PGC 045667;;; -NGC4998;G;13:08:10.16;+50:39:49.5;CVn;1.02;0.87;19;15.20;;;;;23.57;Sc;;;;;;;;2MASX J13081011+5039491,MCG +09-22-017,PGC 045537,SDSS J130810.15+503949.4;;; -NGC4999;G;13:09:33.13;+01:40:23.0;Vir;2.50;2.11;98;13.50;;9.93;9.32;8.94;23.90;Sb;;;;;;;;2MASX J13093312+0140233,IRAS 13069+0156,MCG +00-34-010,PGC 045632,SDSS J130933.13+014023.0,UGC 08236;;; -NGC5000;G;13:09:47.49;+28:54:25.0;Com;1.28;1.02;63;14.00;13.41;11.38;10.64;10.15;23.08;Sbc;;;;;;;;2MASX J13094745+2854250,IRAS 13073+2910,MCG +05-31-144,PGC 045658,SDSS J130947.48+285424.9,SDSS J130947.48+285425.0,SDSS J130947.49+285425.0,UGC 08241;;; -NGC5001;G;13:09:33.11;+53:29:39.4;UMa;1.15;0.42;157;14.60;;11.51;10.78;10.43;23.75;SBb;;;;;;;;2MASX J13093325+5329391,IRAS 13074+5345,MCG +09-22-022,PGC 045631,SDSS J130933.10+532939.3,UGC 08243;;; -NGC5002;G;13:10:38.01;+36:38:02.1;CVn;1.39;0.71;179;14.70;;13.55;13.17;12.95;23.55;Sm;;;;;;;;2MASX J13103818+3638031,MCG +06-29-051,PGC 045728,SDSS J131038.00+363802.1,SDSS J131038.24+363804.3,UGC 08254;;Multiple SDSS entries describe this galaxy.; -NGC5003;G;13:08:37.91;+43:44:15.1;CVn;1.03;0.77;148;15.30;;11.34;10.63;10.30;23.64;Sa;;;;;;;;2MASX J13083783+4344152,MCG +07-27-033,PGC 045559,SDSS J130837.91+434415.0,SDSS J130837.91+434415.1,UGC 08228;;; -NGC5004;G;13:11:01.55;+29:38:12.1;Com;1.33;0.96;167;13.89;13.15;10.88;10.20;9.87;23.48;S0;;;;;;;;2MASX J13110159+2938120,MCG +05-31-149,PGC 045756,SDSS J131101.55+293812.1,SDSS J131101.56+293812.0,UGC 08260;;; -NGC5004A;G;13:11:01.70;+29:34:41.8;Com;1.25;0.55;173;14.60;14.20;11.61;10.88;10.72;23.83;Sab;;;;;;;;2MASX J13110168+2934420,IRAS 13086+2950,MCG +05-31-150,PGC 045757,SDSS J131101.71+293442.0,SDSS J131101.71+293442.1,UGC 08259;;; -NGC5004B;G;13:10:47.65;+29:42:35.6;Com;0.81;0.48;175;15.30;14.67;12.84;11.96;11.82;23.15;SBb;;;;;;4210;;2MASX J13104761+2942349,IRAS F13083+2958,MCG +05-31-148,PGC 045742,SDSS J131047.64+294235.6;;; -NGC5005;G;13:10:56.23;+37:03:33.1;CVn;4.82;1.52;70;14.67;13.67;7.46;6.73;6.44;21.82;SABb;;;;;;;;2MASX J13105631+3703321,C 029,IRAS 13086+3719,MCG +06-29-052,PGC 045749,UGC 08256;;; -NGC5006;G;13:11:45.77;-19:15:42.3;Vir;2.07;1.66;2;13.33;;10.26;9.56;9.27;23.70;S0-a;;;;;;;;2MASX J13114576-1915421,ESO 576-006,ESO-LV 576-0060,MCG -03-34-011,PGC 045806;;; -NGC5007;G;13:09:14.39;+62:10:30.1;UMa;0.93;0.57;136;14.20;;11.32;10.65;10.33;22.75;E-S0;;;;;;;;2MASX J13091431+6210299,MCG +10-19-042,PGC 045605,SDSS J130914.38+621030.1,SDSS J130914.38+621030.2,SDSS J130914.39+621029.9,SDSS J130914.39+621030.1,UGC 08240;;; -NGC5008;G;14:10:57.24;+25:29:50.0;Boo;1.07;0.83;165;14.80;;11.70;10.97;10.61;23.08;Sc;;;;;;4381;;2MASX J14105726+2529502,MCG +04-33-042,PGC 050629,SDSS J141057.23+252950.0,SDSS J141057.24+252950.0,UGC 09073;;; -NGC5009;G;13:10:47.03;+50:05:34.3;CVn;1.08;0.62;67;15.60;;12.16;11.41;11.25;23.70;Sb;;;;;;;;2MASX J13104698+5005301,MCG +08-24-061,PGC 045739,SDSS J131047.02+500534.5,SDSS J131047.03+500534.3,SDSS J131047.04+500534.3,UGC 08258;;; -NGC5010;G;13:12:26.35;-15:47:52.3;Vir;1.00;0.75;115;14.30;;10.62;9.74;9.34;23.16;S0-a;;;;;;;;2MASX J13122633-1547526,IRAS 13097-1531,MCG -03-34-015,PGC 045868;;; -NGC5011;G;13:12:51.86;-43:05:46.4;Cen;2.92;2.43;154;12.14;11.33;9.08;8.39;8.14;23.59;E;;;;;;;;2MASX J13125184-4305462,ESO 269-065,ESO-LV 269-0650,MCG -07-27-042,PGC 045898;;; -NGC5011A;G;13:12:09.72;-43:18:28.3;Cen;1.58;0.81;92;14.36;;11.14;10.46;10.15;23.50;SABc;;;;;;;;2MASX J13120971-4318283,ESO 269-063,ESO-LV 269-0630,MCG -07-27-041,PGC 045847;;; -NGC5012;G;13:11:37.04;+22:54:55.8;Com;2.64;1.44;10;13.60;;9.75;9.02;8.76;22.75;Sc;;;;;;;;2MASX J13113705+2254556,IRAS 13091+2310,MCG +04-31-012,PGC 045795,SDSS J131137.03+225455.7,UGC 08270;;Position in 1987AnTok..212.251T is for a superposed star.; -NGC5013;G;13:12:07.35;+03:11:56.6;Vir;0.74;0.51;148;15.00;;12.59;11.82;11.70;22.99;SBbc;;;;;;;;2MASX J13120735+0311564,MCG +01-34-007,PGC 045838,SDSS J131207.15+031156.4,SDSS J131207.35+031156.5;;; -NGC5014;G;13:11:31.22;+36:16:55.7;CVn;2.11;0.73;100;13.50;;10.97;10.30;10.11;23.36;Sa;;;;;;;;2MASX J13113119+3616556,IRAS 13092+3632,MCG +06-29-055,PGC 045787,SDSS J131131.22+361655.6,SDSS J131131.22+361655.7,UGC 08271;;; -NGC5015;G;13:12:22.89;-04:20:11.3;Vir;2.00;0.79;62;12.90;;10.36;9.67;9.49;23.23;Sa;;;;;;;;2MASX J13122290-0420111,IRAS 13097-0404,MCG -01-34-012,PGC 045862;;; -NGC5016;G;13:12:06.68;+24:05:42.0;Com;1.57;1.14;56;13.18;12.56;10.68;10.01;9.72;22.55;SABb;;;;;;;;2MASX J13120668+2405421,IRAS 13096+2421,MCG +04-31-013,PGC 045836,SDSS J131206.67+240542.0,SDSS J131206.68+240542.0,UGC 08279;;; -NGC5017;G;13:12:54.50;-16:45:57.0;Vir;1.50;1.29;29;13.20;;10.24;9.55;9.27;23.29;E;;;;;;;;2MASX J13125449-1645571,MCG -03-34-016,PGC 045900;;; -NGC5018;G;13:13:01.03;-19:31:05.5;Vir;3.49;2.17;99;11.71;;8.67;8.04;7.73;23.24;E;;;;;;;;2MASX J13130099-1931058,ESO 576-010,ESO-LV 576-0100,IRAS 13103-1915,MCG -03-34-017,PGC 045908,UGCA 335;;; -NGC5019;G;13:12:42.39;+04:43:46.8;Vir;0.85;0.72;101;14.50;;12.16;11.58;11.42;22.79;SABc;;;;;;;;2MASX J13124237+0443465,IRAS 13101+0459,MCG +01-34-009,PGC 045885,SDSS J131242.37+044346.8,SDSS J131242.38+044346.8,SDSS J131242.39+044346.8,UGC 08288;;; -NGC5020;G;13:12:39.87;+12:35:59.1;Vir;2.69;2.42;85;13.40;;10.02;9.34;9.08;24.02;Sbc;;;;;;;;2MASX J13123987+1235590,IRAS 13102+1251,MCG +02-34-003,PGC 045883,SDSS J131239.87+123559.1,UGC 08289;;; -NGC5021;G;13:12:06.27;+46:11:46.1;CVn;1.49;0.60;78;14.30;;10.74;10.01;10.14;23.16;SBb;;;;;;;;2MASX J13120529+4611469,2MASX J13120625+4611458,IRAS 13099+4627,MCG +08-24-084,PGC 045834,SDSS J131206.27+461146.0,SDSS J131206.27+461146.1,UGC 08284;;; -NGC5022;G;13:13:30.79;-19:32:47.9;Vir;2.46;0.49;19;13.72;;10.53;9.84;9.52;23.45;Sbc;;;;;;;;2MASX J13133078-1932477,ESO 576-014,ESO-LV 576-0140,MCG -03-34-021,PGC 045952,PGC 045953;;; -NGC5023;G;13:12:12.60;+44:02:28.4;CVn;6.22;0.78;28;13.20;;10.65;10.03;9.74;23.84;Sc;;;;;;;;2MASX J13121179+4402168,MCG +07-27-043,PGC 045849,UGC 08286;;; -NGC5024;GCl;13:12:55.23;+18:10:08.8;Com;9.00;;;8.95;7.79;;;;;;;;;053;;;;MWSC 2094;;; -NGC5025;G;13:12:44.75;+31:48:33.8;CVn;2.07;0.51;59;14.60;;11.51;10.79;10.56;23.82;Sb;;;;;;;;2MASX J13124475+3148335,MCG +05-31-155,PGC 045887,SDSS J131244.75+314833.7,SDSS J131244.75+314833.8,UGC 08292;;Position in 1995ApJS...97...77D is for northeast end of galaxy.; -NGC5026;G;13:14:13.64;-42:57:40.6;Cen;3.52;1.79;50;12.48;13.42;9.08;8.40;8.13;23.74;Sa;;;;;;;;2MASX J13141365-4257404,ESO 269-073,ESO-LV 269-0730,MCG -07-27-048,PGC 046023;;; -NGC5027;G;13:13:20.99;+06:03:40.6;Vir;1.10;1.01;0;14.80;;11.74;11.15;10.78;23.75;Sb;;;;;;;;2MASX J13132098+0603401,IRAS 13108+0619,MCG +01-34-010,PGC 045936,SDSS J131320.83+060341.4,SDSS J131320.98+060340.5,SDSS J131320.98+060340.6,SDSS J131320.99+060340.6,UGC 08297;;; -NGC5028;G;13:13:45.86;-13:02:32.9;Vir;2.12;1.38;118;14.00;;10.02;9.34;9.08;24.52;E;;;;;;;;2MASX J13134588-1302324,MCG -02-34-011,PGC 045976;;; -NGC5029;G;13:12:37.59;+47:03:47.8;CVn;1.52;0.93;147;14.50;;10.71;10.02;9.77;23.84;E;;;;;;;;2MASX J13123755+4703480,MCG +08-24-087,PGC 045880,SDSS J131237.59+470347.8,SDSS J131237.60+470347.8,UGC 08293;;; -NGC5030;G;13:13:54.15;-16:29:27.4;Vir;1.78;1.16;173;14.20;;10.69;10.01;9.81;23.82;S0-a;;;;;;;;2MASX J13135414-1629274,MCG -03-34-023,PGC 045991;;; -NGC5031;G;13:14:03.22;-16:07:23.2;Vir;1.89;0.30;110;14.00;;10.15;9.52;9.26;24.18;S0-a;;;;;;;;2MASX J13140323-1607234,MCG -03-34-024,PGC 046006;;; -NGC5032;G;13:13:26.95;+27:48:08.6;Com;1.95;1.08;18;13.60;;10.74;10.04;9.72;23.47;Sb;;;;;;;;2MASX J13132694+2748086,MCG +05-31-160,PGC 045947,SDSS J131326.94+274808.5,SDSS J131326.95+274808.6,UGC 08300;;; -NGC5033;G;13:13:27.47;+36:35:38.2;CVn;9.84;4.58;172;11.01;12.03;7.92;7.24;6.96;23.78;Sc;;;;;;;;2MASX J13132753+3635371,IRAS 13111+3651,MCG +06-29-062,PGC 045948,SDSS J131327.49+363538.0,UGC 08307;;; -NGC5034;G;13:12:19.01;+70:38:57.7;UMi;0.89;0.65;20;14.10;;11.98;11.38;11.06;22.57;Sbc;;;;;;;;2MASX J13121901+7038576,IRAS 13107+7054,MCG +12-13-001,PGC 045859,UGC 08295;;; -NGC5035;G;13:14:49.23;-16:29:33.7;Vir;1.56;0.99;171;13.90;;10.57;9.91;9.62;23.34;S0-a;;;;;;;;2MASX J13144922-1629331,MCG -03-34-028,PGC 046068;;; -NGC5036;G;13:14:42.84;-04:10:42.9;Vir;0.69;0.57;73;14.99;;12.13;11.45;11.15;23.26;E-S0;;;;;;;;2MASX J13144283-0410424,PGC 046057;;; -NGC5037;G;13:14:59.37;-16:35:25.1;Vir;2.02;0.47;44;13.00;;9.56;8.89;8.60;22.74;Sa;;;;;;;;2MASX J13145938-1635251,IRAS 13123-1619,MCG -03-34-029,PGC 046078;;; -NGC5038;G;13:15:02.13;-15:57:06.5;Vir;1.79;0.38;94;13.90;;10.54;9.83;9.53;24.09;S0;;;;;;;;2MASX J13150213-1557061,IRAS 13123-1541,MCG -03-34-031,PGC 046081;;; -NGC5039;G;13:14:51.92;-04:09:29.4;Vir;0.55;0.19;133;16.98;;;;;24.69;Sa;;;;;;;;2MASX J13145192-0409294,PGC 046064;;; -NGC5040;G;13:13:32.64;+51:15:30.1;CVn;1.03;0.48;70;14.30;;11.21;10.57;10.29;23.09;Sab;;;;;;;;2MASX J13133267+5115300,MCG +09-22-031,PGC 045945,SDSS J131332.63+511530.0,SDSS J131332.63+511530.1,SDSS J131332.64+511530.1,SDSS J131332.64+511530.3;;; -NGC5041;G;13:14:32.46;+30:42:20.8;Com;1.26;0.97;143;14.20;;11.57;10.94;10.67;23.15;Sc;;;;;;;;2MASX J13143246+3042205,IRAS 13122+3058,MCG +05-31-162,PGC 046046,SDSS J131432.45+304220.8,SDSS J131432.46+304220.8,UGC 08319;;; -NGC5042;G;13:15:31.02;-23:59:02.6;Hya;4.15;2.20;19;12.49;;10.33;9.75;9.40;23.88;SABc;;;;;;;;2MASX J13153130-2358565,ESO 508-031,ESO-LV 508-0310,IRAS 13127-2343,MCG -04-31-043,PGC 046126,UGCA 340;;; -NGC5043;OCl;13:16:14.66;-60:02:43.8;Cen;5.52;;;;;;;;;;;;;;;;;MWSC 2099;;; -NGC5044;G;13:15:23.97;-16:23:07.9;Vir;3.66;3.17;41;11.90;;8.67;7.99;7.71;23.27;E;;;;;;;;2MASX J13152396-1623079,MCG -03-34-034,PGC 046115,UGCA 341;;; -NGC5045;*Ass;13:28:35.09;-63:30:31.3;Cen;9.30;;;;;;;;;;;;;;5155;;;MWSC 2096;;This is a Milky Way star cloud. NGC RA for NGC 5045 is -10m in error.; -NGC5046;G;13:15:45.12;-16:19:36.6;Vir;1.02;0.85;42;14.30;;11.14;10.46;10.22;23.00;E;;;;;;;;2MASX J13154512-1619360,MCG -03-34-035,PGC 046141;;; -NGC5047;G;13:15:48.52;-16:31:08.0;Vir;2.86;0.29;84;13.70;;10.21;9.59;9.42;24.44;S0;;;;;;;;2MASX J13154852-1631080,MCG -03-34-036,PGC 046150;;; -NGC5048;G;13:16:08.38;-28:24:37.9;Hya;1.57;0.92;43;13.74;;10.63;9.89;9.63;23.65;E-S0;;;;;;;;2MASX J13160837-2824376,ESO 443-087,ESO-LV 443-0870,MCG -05-31-041,PGC 046179;;; -NGC5049;G;13:15:59.30;-16:23:49.8;Vir;2.01;0.40;115;13.80;;10.40;9.73;9.52;23.89;S0;;;;;;;;2MASX J13155930-1623500,MCG -03-34-037,PGC 046166,UGCA 343;;; -NGC5050;G;13:15:41.73;+02:52:44.3;Vir;1.40;0.44;32;14.70;;11.11;10.39;10.17;23.60;S0-a;;;;;;;;2MASX J13154175+0252448,MCG +01-34-012,PGC 046138,SDSS J131541.72+025244.2,UGC 08329;;; -NGC5051;G;13:16:20.10;-28:17:08.5;Hya;1.65;0.71;48;14.02;;10.64;9.95;9.62;23.16;SABb;;;;;;;;2MASX J13162008-2817085,ESO 444-001,ESO-LV 444-0010,IRAS 13135-2801,MCG -05-31-042,PGC 046194;;; -NGC5052;G;13:15:34.89;+29:40:33.9;Com;1.37;1.02;150;14.60;13.57;11.37;10.61;10.56;23.74;S0-a;;;;;;;;2MASX J13153485+2940338,MCG +05-31-165,PGC 046131,SDSS J131534.88+294033.8,SDSS J131534.89+294033.9,UGC 08330;;; -NGC5053;GCl;13:16:26.99;+17:41:51.9;Com;4.80;;;;9.96;;;;;;;;;;;;;MWSC 2101;;; -NGC5054;G;13:16:58.49;-16:38:05.5;Vir;5.04;2.90;171;11.30;;8.52;7.82;7.59;23.45;Sbc;;;;;;;;2MASX J13165848-1638054,IRAS 13142-1622,MCG -03-34-039,PGC 046247,UGCA 344;;; -NGC5055;G;13:15:49.33;+42:01:45.4;CVn;11.83;7.16;103;9.34;8.59;6.57;5.83;5.61;23.04;Sbc;;;;063;;;;2MASX J13154932+4201454,IRAS 13135+4217,MCG +07-27-054,PGC 046153,SDSS J131549.26+420145.8,UGC 08334;Sunflower Galaxy;; -NGC5056;G;13:16:12.32;+30:57:01.2;Com;1.62;0.82;1;13.60;;11.13;9.85;9.99;22.92;SABc;;;;;;;;2MASX J13161233+3057009,IRAS 13138+3112,MCG +05-31-166,PGC 046180,SDSS J131612.32+305701.1,UGC 08337;;; -NGC5057;G;13:16:27.77;+31:01:53.4;Com;1.31;0.99;0;14.60;;11.46;10.72;10.50;23.74;S0;;;;;;;;2MASX J13162775+3101531,MCG +05-31-169,PGC 046202,SDSS J131627.76+310153.3,SDSS J131627.77+310153.4,UGC 08342;;; -NGC5058;G;13:16:52.31;+12:32:53.6;Vir;0.76;0.56;13;14.60;;12.59;11.95;11.46;22.13;Scd;;;;;;;;2MASX J13165233+1232539,MCG +02-34-006,PGC 046241,SDSS J131652.31+123253.6,UGC 08345;;; -NGC5059;G;13:16:58.46;+07:50:40.2;Vir;1.12;0.41;6;15.50;;12.26;11.59;11.27;23.75;Sc;;;;;;;;2MASX J13165848+0750407,PGC 046244,SDSS J131658.45+075040.1,SDSS J131658.46+075040.1,UGC 08344;;; -NGC5060;G;13:17:16.22;+06:02:14.8;Vir;1.17;0.95;61;14.20;;11.46;10.64;10.32;23.14;SBb;;;;;;;;2MASX J13171622+0602149,IRAS 13147+0618,MCG +01-34-015,PGC 046278,SDSS J131716.21+060214.8,UGC 08351;;; -NGC5061;G;13:18:05.07;-26:50:14.0;Hya;3.75;3.05;109;11.18;10.41;8.19;7.53;7.29;22.94;E;;;;;;;;2MASX J13180505-2650139,ESO 508-038,ESO-LV 508-0380,MCG -04-31-048,PGC 046330;;; -NGC5062;G;13:18:23.62;-35:27:31.2;Cen;2.69;1.18;132;13.19;;9.79;9.07;8.82;24.10;S0;;;;;;;;2MASX J13182362-3527311,ESO 382-035,ESO-LV 382-0350,MCG -06-29-026,PGC 046351;;; -NGC5063;G;13:18:25.71;-35:21:08.9;Cen;2.02;1.63;146;13.27;;10.01;9.20;9.34;23.39;Sa;;;;;;;;2MASX J13182572-3521091,ESO 382-036,ESO-LV 382-0360,MCG -06-29-027,PGC 046357;;; -NGC5064;G;13:18:59.93;-47:54:31.2;Cen;2.70;1.40;36;12.81;11.61;9.09;8.38;8.01;23.50;Sb;;;;;;;;2MASX J13185991-4754311,ESO 220-002,ESO-LV 220-0020,IRAS 13160-4738,PGC 046409;;Confused HIPASS source; -NGC5065;G;13:17:30.61;+31:05:33.7;Com;1.22;0.73;87;14.30;;11.94;11.27;10.98;23.00;SABc;;;;;;;;2MASX J13173061+3105336,IRAS 13151+3121,MCG +05-31-170,PGC 046293,UGC 08356;;; -NGC5066;G;13:18:28.45;-10:14:02.0;Vir;0.80;0.56;0;14.00;;12.09;11.40;11.22;22.23;Sa;;;;;5069;;;2MASX J13182846-1014021,MCG -02-34-020,PGC 046360;;; -NGC5067;**;13:18:27.76;-10:08:43.0;Vir;;;;;;;;;;;;;;;;;;;;; -NGC5068;G;13:18:54.81;-21:02:20.8;Vir;7.48;6.70;138;10.53;10.01;8.36;7.87;7.55;23.65;Sc;;;;;;;;2MASX J13185480-2102207,ESO 576-029,ESO-LV 576-0290,IRAS 13161-2046,MCG -03-34-046,PGC 046400,UGCA 345;;; -NGC5069;Dup;13:18:28.45;-10:14:02.0;Vir;;;;;;;;;;;;;;;5066;;;;;; -NGC5070;G;13:19:12.56;-12:32:23.6;Vir;1.17;0.98;90;14.00;;11.07;10.36;10.12;23.55;E-S0;;;;;5072;;;2MASX J13191256-1232232,MCG -02-34-022,PGC 046432;;; -NGC5071;G;13:18:37.19;+07:56:07.9;Vir;0.77;0.57;142;15.50;;12.17;11.26;10.93;23.71;S0;;;;;;;;2MASX J13183717+0756079,PGC 046375,SDSS J131837.18+075607.9,SDSS J131837.19+075607.9;;; -NGC5072;Dup;13:19:12.56;-12:32:23.6;Vir;;;;;;;;;;;;;;;5070;;;;;; -NGC5073;G;13:19:20.65;-14:50:40.3;Vir;3.78;0.56;149;13.46;;10.14;9.44;9.16;23.62;SBc;;;;;;;;2MASX J13192062-1450402,IRAS 13167-1435,MCG -02-34-025,PGC 046441,UGCA 346;;; -NGC5074;G;13:18:25.77;+31:28:08.7;CVn;0.82;0.41;145;14.70;;13.09;12.57;12.38;22.23;SABb;;;;;;;;2MASX J13182578+3128088,MCG +05-31-172,PGC 046354;;; -NGC5075;G;13:19:06.25;+07:49:51.7;Vir;1.02;0.76;57;15.10;;11.86;11.21;10.98;23.97;E;;;;;;;;2MASX J13190624+0749513,PGC 046424,SDSS J131906.24+074951.6;;; -NGC5076;G;13:19:30.40;-12:44:27.1;Vir;1.35;0.97;31;13.00;;11.13;10.42;10.12;23.25;S0-a;;;;;;;;2MASX J13193039-1244272,MCG -02-34-026,PGC 046453;;; -NGC5077;G;13:19:31.67;-12:39:25.1;Vir;2.65;2.07;4;13.87;12.85;9.20;8.49;8.22;23.30;E;;;;;;;;2MASX J13193162-1239252,MCG -02-34-027,PGC 046456,UGCA 347;;; -NGC5078;G;13:19:49.98;-27:24:37.4;Hya;2.56;0.62;147;11.51;;8.21;7.46;7.12;22.26;Sa;;;;;;;;2MASX J13195002-2724362,ESO 508-048,ESO-LV 508-0480,IRAS 13170-2708,MCG -04-32-001,PGC 046490;;Confused HIPASS source; -NGC5079;G;13:19:38.05;-12:41:56.5;Vir;1.38;0.89;31;12.00;;11.22;10.35;10.09;22.15;SBbc;;;;;;;;2MASX J13193805-1241562,IRAS 13169-1226,MCG -02-34-030,PGC 046473;;; -NGC5080;G;13:19:19.22;+08:25:44.9;Vir;1.31;1.17;93;14.60;;10.84;10.20;9.96;23.58;S0;;;;;;;;2MASX J13191921+0825443,MCG +02-34-007,PGC 046440,SDSS J131919.22+082544.9;;; -NGC5081;G;13:19:08.24;+28:30:24.9;Com;1.90;0.73;101;14.30;;11.12;10.28;10.07;23.64;Sb;;;;;;;;2MASX J13190823+2830244,MCG +05-31-174,PGC 046427,SDSS J131908.23+283024.9,SDSS J131908.24+283024.9,UGC 08366;;; -NGC5082;G;13:20:40.03;-43:41:59.8;Cen;1.73;1.04;33;13.78;;9.98;9.17;8.96;23.67;S0;;;;;;;;2MASX J13204003-4341598,ESO 269-089,ESO-LV 269-0890,MCG -07-27-053,PGC 046566;;; -NGC5083;G;13:19:03.10;+39:35:21.6;CVn;1.09;0.83;136;15.40;;12.11;11.25;11.13;23.68;Sc;;;;;;;;2MASX J13190306+3935258,IRAS 13167+3951,MCG +07-27-059,PGC 046413,SDSS J131903.10+393521.5,SDSS J131903.10+393521.6,UGC 08367;;; -NGC5084;G;13:20:16.92;-21:49:39.3;Vir;9.93;2.46;80;11.15;12.21;8.01;7.26;7.06;25.22;S0;;;;;;;;2MASX J13201692-2149392,ESO 576-033,ESO-LV 576-0330,MCG -04-32-004,PGC 046525;;Confused and extended HIPASS source; -NGC5085;G;13:20:17.75;-24:26:24.5;Hya;4.06;3.26;42;11.99;11.12;;;;25.07;Sc;;;;;;;;2MASX J13201659-2426464,ESO 508-050,ESO-LV 508-0500,IRAS 13175-2410,MCG -04-32-005,PGC 046531,UGCA 349;;Extended HIPASS source; -NGC5086;**;13:20:59.41;-43:44:00.7;Cen;;;;;;;;;;;;;;;;;;ESO 270-001,ESO-LV 270-0010;;; -NGC5087;G;13:20:24.96;-20:36:39.6;Vir;2.99;2.52;6;11.96;12.08;8.80;8.05;7.82;23.35;E-S0;;;;;;;;2MASX J13202496-2036396,ESO 576-035,ESO-LV 576-0350,IRAS 13177-2021,MCG -03-34-050,PGC 046541,UGCA 350;;; -NGC5088;G;13:20:20.25;-12:34:18.4;Vir;1.86;0.51;180;12.90;;10.86;10.17;10.08;22.43;SABb;;;;;;;;2MASX J13202023-1234185,IRAS 13176-1218,MCG -02-34-034,PGC 046535;;HOLM 515B is a star.; -NGC5089;G;13:19:39.36;+30:15:23.6;Com;0.95;0.65;122;14.40;;11.70;11.27;10.87;22.77;Sb;;;;;;;;2MASX J13193929+3015227,IRAS 13173+3031,MCG +05-31-175,PGC 046477,SDSS J131939.35+301523.6,UGC 08371;;; -NGC5090;G;13:21:12.82;-43:42:16.4;Cen;3.51;2.76;106;12.59;11.51;8.58;7.80;7.57;24.15;E;;;;;;;;2MASX J13211286-4342168,ESO 270-002,ESO-LV 270-0020,MCG -07-27-054,PGC 046618;;; -NGC5090A;G;13:19:21.11;-43:38:57.8;Cen;1.91;0.73;142;13.99;;10.33;9.65;9.37;24.50;S0;;;;;;;;2MASX J13192110-4338578,ESO 269-084,ESO-LV 269-0840,MCG -07-27-051,PGC 046442;;; -NGC5090B;G;13:20:17.52;-43:51:52.8;Cen;2.39;0.85;128;14.03;;;;;23.97;SBb;;;;;;;;2MASX J13201750-4351525,ESO 269-088,ESO-LV 269-0880,MCG -07-27-052,PGC 046528;;; -NGC5091;G;13:21:17.72;-43:43:10.8;Cen;2.15;1.33;122;13.94;13.35;11.42;10.64;10.33;23.82;Sb;;;;;;;;ESO 270-004,ESO-LV 270-0040,MCG -07-27-055,PGC 046626;;; -NGC5092;G;13:19:51.53;+22:59:59.6;Com;1.01;0.96;50;14.70;;10.90;10.24;9.94;23.22;E;;;;;;;;2MASX J13195150+2300000,MCG +04-31-023,PGC 046493,SDSS J131951.52+225959.5,SDSS J131951.53+225959.5,UGC 08376;;; -NGC5093;G;13:19:37.81;+40:23:10.0;CVn;1.14;0.53;139;14.80;;10.99;10.33;10.01;23.13;SBa;;;;;;;;2MASX J13193778+4023100,MCG +07-27-060,PGC 046472,SDSS J131937.80+402310.0,SDSS J131937.81+402309.9,SDSS J131937.81+402310.0,UGC 08373;;; -NGC5094;G;13:20:46.85;-14:04:50.4;Vir;1.52;1.13;99;14.00;;10.51;9.83;9.50;24.03;E;;;;;;;;2MASX J13204685-1404504,MCG -02-34-037,PGC 046580;;; -NGC5095;G;13:20:36.87;-02:17:21.6;Vir;1.29;0.41;122;14.80;;11.52;10.81;10.55;23.62;S0-a;;;;;;;;2MASX J13203685-0217217,MCG +00-34-029,PGC 046561,SDSS J132036.87-021721.6,UGC 08381;;The APM position refers to the southeastern end of the galaxy.; -NGC5096;GTrpl;13:20:08.70;+33:05:22.0;CVn;0.70;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC5096 NED01;G;13:20:08.69;+33:05:16.6;CVn;0.87;0.71;7;15.10;;11.91;11.09;10.70;23.64;E-S0;;;;;;;;2MASX J13200867+3305169,MCG +06-29-076,PGC 046506,SDSS J132008.70+330516.6;;; -NGC5096 NED02;G;13:20:09.16;+33:05:26.7;CVn;0.66;0.49;79;16.09;;12.51;11.68;11.40;24.30;E;;;;;;;;2MASX J13200914+3305266,SDSS J132009.15+330526.7;;;B-Mag taken from LEDA -NGC5096 NED03;G;13:20:08.09;+33:05:22.5;CVn;0.65;0.48;60;16.33;;;;;24.51;E;;;;;;;;SDSS J132008.08+330522.4;;;B-Mag taken from LEDA -NGC5097;G;13:20:59.69;-12:28:16.5;Vir;0.54;0.39;38;15.10;;11.98;11.29;10.96;23.14;E;;;;;;;;2MASX J13205967-1228164,IRAS 13183-1212,PGC 046602;;; -NGC5098;GPair;13:20:16.20;+33:08:39.0;CVn;1.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC5098 NED01;G;13:20:17.75;+33:08:41.1;CVn;0.79;0.65;61;15.00;;11.89;11.37;10.96;23.58;E;;;;;;;;2MASX J13201775+3308409,MCG +06-29-078,PGC 046515;;; -NGC5098 NED02;G;13:20:14.73;+33:08:36.3;CVn;1.10;0.98;61;15.00;;11.70;10.97;10.76;23.78;E;;;;;;;;2MASX J13201472+3308359,MCG +06-29-077,PGC 046529,SDSS J132014.72+330836.2,SDSS J132014.73+330836.2;;Incorrectly called 'NGC 5096' in MCG.; -NGC5099;G;13:21:19.57;-13:02:32.5;Vir;0.69;0.59;50;15.00;;12.86;12.30;12.03;23.41;E;;;;;;;;2MASX J13211966-1302306,PGC 046627;;; -NGC5100;GPair;13:20:58.60;+08:58:55.0;Vir;1.40;;;;;;;;;;;;;;;;;MCG +02-34-009,UGC 08389;;;Diameter of the group inferred by the author. -NGC5100 NED01;G;13:20:57.58;+08:59:07.7;Vir;0.66;0.42;146;17.90;;14.48;13.84;13.36;23.97;SBbc;;;;;;;;2MASX J13205758+0859081,MCG +02-34-009 NED01,PGC 046603,SDSS J132057.57+085907.6,SDSS J132057.57+085907.7,UGC 08389 NED01;;; -NGC5100 NED02;Dup;13:20:59.59;+08:58:41.9;Vir;;;;;;;;;;;;;;;5106;;;;;; -NGC5101;G;13:21:46.24;-27:25:49.9;Hya;5.90;5.52;123;11.26;10.47;8.07;7.40;7.16;24.15;S0-a;;;;;;;;2MASX J13214624-2725498,ESO 508-058,ESO-LV 508-0580,IRAS 13190-2709,MCG -04-32-008,PGC 046661,UGCA 351;;Confused HIPASS source; -NGC5102;G;13:21:57.61;-36:37:48.9;Cen;9.71;3.71;49;9.74;9.65;7.71;7.03;6.92;23.87;E-S0;;;;;;;;2MASX J13215765-3637487,ESO 382-050,ESO-LV 382-0500,IRAS 13191-3622,MCG -06-29-031,PGC 046674;;Extended HIPASS source; -NGC5103;G;13:20:30.08;+43:05:02.3;CVn;1.59;0.98;142;13.60;;10.38;9.76;9.49;23.16;S0;;;;;;;;2MASX J13203005+4305024,MCG +07-27-062,PGC 046552,UGC 08388;;; -NGC5104;G;13:21:23.09;+00:20:32.6;Vir;1.20;0.46;170;14.50;;10.87;10.15;9.74;23.11;Sa;;;;;;;;2MASX J13212311+0020333,IRAS 13188+0036,MCG +00-34-031,PGC 046633,SDSS J132123.08+002032.6,SDSS J132123.08+002032.7,SDSS J132123.09+002032.6,SDSS J132123.09+002032.7,UGC 08391;;; -NGC5105;G;13:21:49.09;-13:12:24.4;Vir;1.93;1.37;140;13.30;;11.58;11.24;10.68;22.69;Sc;;;;;;;;2MASX J13214910-1312244,IRAS 13191-1256,MCG -02-34-039,PGC 046664;;; -NGC5106;G;13:20:59.59;+08:58:41.9;Vir;0.94;0.67;22;15.10;;11.55;10.78;10.41;23.24;Sb;;;;;5100 NED02;;;2MASX J13205961+0858421,MCG +02-34-009 NED02,PGC 046599,SDSS J132059.58+085841.9,UGC 08389 NED02;;; -NGC5107;G;13:21:24.68;+38:32:15.4;CVn;1.71;0.51;128;13.70;;12.19;11.74;11.49;22.75;SBcd;;;;;;;;2MASX J13212526+3832109,IRAS 13191+3847,MCG +07-28-001,PGC 046636,UGC 08396;;; -NGC5108;G;13:23:18.84;-32:20:31.6;Cen;1.32;0.37;2;15.00;;11.91;11.14;10.92;23.38;SBbc;;;;;;;;2MASX J13231884-3220314,ESO 444-020,ESO-LV 444-0200,MCG -05-32-005,PGC 046774;;; -NGC5109;G;13:20:52.35;+57:38:41.1;UMa;1.60;0.43;155;13.60;;12.25;11.62;11.30;22.18;Sc;;;;;5113;;;2MASX J13205234+5738410,IRAS 13189+5754,MCG +10-19-061,PGC 046589,UGC 08393;;; -NGC5110;G;13:22:56.52;-12:57:53.3;Vir;2.63;2.10;108;13.00;;9.91;9.29;8.99;24.29;E-S0;;;;;5111;;;2MASX J13225651-1257530,MCG -02-34-041,PGC 046737;;Star superposed.; -NGC5111;Dup;13:22:56.52;-12:57:53.3;Vir;;;;;;;;;;;;;;;5110;;;;;; -NGC5112;G;13:21:56.40;+38:44:04.9;CVn;2.99;1.83;127;12.50;;10.87;10.29;10.02;23.34;SBc;;;;;;;;2MASX J13215650+3844042,IRAS 13196+3859,MCG +07-28-003,PGC 046671,SDSS J132156.40+384404.9,SDSS J132156.41+384405.0,UGC 08403;;; -NGC5113;Dup;13:20:52.35;+57:38:41.1;UMa;;;;;;;;;;;;;;;5109;;;;;; -NGC5114;G;13:24:01.73;-32:20:38.2;Cen;1.81;1.12;78;13.47;;10.25;9.54;9.29;23.65;E-S0;;;;;;;;2MASX J13240173-3220383,ESO 444-024,ESO-LV 444-0240,MCG -05-32-006,PGC 046828;;; -NGC5115;G;13:23:00.38;+13:57:02.4;Vir;1.14;0.63;97;14.80;;12.09;11.98;11.38;23.38;Sc;;;;;;;;2MASX J13230036+1357022,MCG +02-34-010,PGC 046754,SDSS J132300.38+135702.3,SDSS J132300.39+135702.4,UGC 08408;;; -NGC5116;G;13:22:55.61;+26:58:50.6;Com;1.95;0.67;39;13.70;;10.87;10.09;9.91;22.78;SBc;;;;;;;;2MASX J13225563+2658505,IRAS 13205+2714,MCG +05-32-009,PGC 046744,SDSS J132255.61+265850.6,SDSS J132255.62+265850.6,UGC 08410;;; -NGC5117;G;13:22:56.48;+28:18:59.2;CVn;1.54;0.76;154;14.50;;12.06;12.22;11.34;23.50;Sc;;;;;;;;2MASX J13225646+2818595,MCG +05-32-010,PGC 046746,SDSS J132256.47+281859.1,SDSS J132256.48+281859.2,UGC 08411;;; -NGC5118;G;13:23:27.45;+06:23:33.2;Vir;0.95;0.82;91;14.40;;11.97;11.31;11.05;22.99;SABc;;;;;;4236;;2MASX J13232747+0623338,IRAS 13209+0639,MCG +01-34-019,PGC 046782,SDSS J132327.45+062333.2,UGC 08413;;; -NGC5119;G;13:24:00.32;-12:16:35.2;Vir;1.49;0.41;22;14.00;;10.56;9.91;9.66;23.80;S0;;;;;;;;2MASX J13240030-1216351,MCG -02-34-042,PGC 046826;;; -NGC5120;OCl;13:25:39.41;-63:27:30.0;Cen;;;;11.68;10.80;;;;;;;;;;;;;MWSC 2121;;; -NGC5121;G;13:24:45.61;-37:40:55.9;Cen;2.16;1.67;30;12.54;11.41;9.39;8.73;8.46;22.79;Sa;;;;;;;;2MASX J13244558-3740559,ESO 382-057,ESO-LV 382-0570,IRAS 13219-3725,MCG -06-29-035,PGC 046896;;Confused HIPASS source; -NGC5121A;G;13:25:32.80;-37:22:43.7;Cen;1.21;0.38;106;15.69;;;;;23.92;SABd;;;;;;;;ESO 382-061,ESO-LV 382-0610,MCG -06-30-001,PGC 046960;;Confused HIPASS source; -NGC5122;G;13:24:14.94;-10:39:15.4;Vir;1.15;1.00;126;14.00;;11.00;10.32;10.04;23.30;S0-a;;;;;;;;2MASX J13241494-1039156,MCG -02-34-043,PGC 046848;;; -NGC5123;G;13:23:10.52;+43:05:10.5;CVn;1.18;1.05;154;13.50;;11.09;10.39;10.05;22.62;Sc;;;;;;;;2MASX J13231050+4305108,IRAS 13209+4320,MCG +07-28-005,PGC 046767,SDSS J132310.52+430510.5,UGC 08415;;; -NGC5124;G;13:24:50.43;-30:18:27.1;Cen;2.48;0.80;12;13.17;;9.84;9.12;8.93;23.83;E;;;;;;4233;;2MASX J13245027-3018279,ESO 444-027,ESO-LV 444-0270,MCG -05-32-009,PGC 046902;;; -NGC5125;G;13:24:00.71;+09:42:36.7;Vir;1.77;1.37;169;13.50;;10.74;10.07;9.78;23.38;Sb;;;;;;;;2MASX J13240068+0942362,MCG +02-34-011,PGC 046827,SDSS J132400.70+094236.6,SDSS J132400.71+094236.7,UGC 08421;;; -NGC5126;G;13:24:53.60;-30:20:01.0;Cen;1.86;0.64;57;14.09;;10.67;9.93;9.66;24.03;S0-a;;;;;;;;2MASX J13245297-3020059,2MASX J13245359-3020009,ESO 444-028,ESO-LV 444-0280,MCG -05-32-010,PGC 046910;;; -NGC5127;G;13:23:45.02;+31:33:56.7;CVn;2.18;1.58;72;13.90;;10.34;9.72;9.36;24.07;E;;;;;;;;2MASX J13234497+3133568,MCG +05-32-013,PGC 046809,SDSS J132345.01+313356.7,SDSS J132345.02+313356.7,UGC 08419;;; -NGC5128;G;13:25:27.62;-43:01:08.8;Cen;25.88;19.77;33;8.18;6.84;4.98;4.27;3.94;23.59;S0;;;;;;;;2MASX J13252775-4301073,C 077,ESO 270-009,ESO-LV 270-0090,IRAS 13225-4245,MCG -07-28-001,PGC 046957;Centaurus A;; -NGC5129;G;13:24:10.01;+13:58:35.5;Vir;1.65;1.29;7;13.30;;10.16;9.47;9.25;22.98;E;;;;;;;;2MASX J13241000+1358351,MCG +02-34-012,PGC 046836,SDSS J132410.01+135835.5,SDSS J132410.02+135835.5,SDSS J132410.02+135835.6,UGC 08423;;; -NGC5130;G;13:24:27.16;-10:12:36.8;Vir;1.11;0.82;45;14.00;;11.17;10.51;10.20;23.28;S0-a;;;;;;;;2MASX J13242716-1012368,MCG -02-34-044,PGC 046866;;; -NGC5131;G;13:23:56.94;+30:59:17.0;CVn;0.45;0.39;77;14.40;;10.89;10.34;9.95;21.43;Sa;;;;;;;;2MASX J13235697+3059168,MCG +05-32-014,PGC 046819,SDSS J132356.93+305916.9,SDSS J132356.94+305916.9,SDSS J132356.94+305917.0,UGC 08422;;; -NGC5132;G;13:24:28.90;+14:05:33.3;Vir;1.31;0.88;63;14.30;;10.82;10.05;9.84;23.51;S0-a;;;;;;;;2MASX J13242889+1405332,IRAS 13219+1421,MCG +02-34-014,PGC 046868,UGC 08428;;; -NGC5133;G;13:24:52.91;-04:04:55.2;Vir;1.10;0.65;25;15.00;;11.05;10.32;10.03;23.59;E-S0;;;;;;;;2MASX J13245289-0404550,MCG -01-34-015,PGC 046909;;; -NGC5134;G;13:25:18.55;-21:08:03.0;Vir;2.70;1.53;159;12.11;;9.15;8.48;8.19;22.95;SABb;;;;;;;;2MASX J13251856-2108030,ESO 576-052,ESO-LV 576-0520,IRAS 13225-2052,MCG -03-34-073,PGC 046938;;; -NGC5135;G;13:25:44.06;-29:50:01.2;Hya;2.40;2.20;125;12.58;13.35;9.87;8.98;8.83;23.41;Sab;;;;;;;;2MASX J13254405-2950012,ESO 444-032,ESO-LV 444-0320,IRAS 13229-2934,MCG -05-32-013,PGC 046974;;; -NGC5136;G;13:24:51.41;+13:44:16.3;Vir;1.31;1.17;89;14.70;;11.19;10.52;10.19;23.91;E;;;;;;0888;;2MASX J13245137+1344162,MCG +02-34-015,PGC 046905,SDSS J132451.40+134416.2,SDSS J132451.40+134416.3;;; -NGC5137;G;13:24:52.50;+14:04:37.9;Vir;0.77;0.55;120;15.60;;12.84;12.36;11.91;23.87;S0-a;;;;;;;;2MASX J13245247+1404382,PGC 046907,SDSS J132452.49+140437.9,SDSS J132452.50+140437.9;;; -NGC5138;OCl;13:27:15.21;-59:02:27.4;Cen;4.20;;;6.12;5.33;;;;;;;;;;;;;MWSC 2120;;; -NGC5139;GCl;13:26:45.89;-47:28:36.7;Cen;27.00;;;6.12;5.33;;;;;;;;;;;;;C 080,MWSC 2125;Omega Centauri;; -NGC5140;G;13:26:21.73;-33:52:06.5;Cen;2.36;1.98;47;12.78;12.97;9.59;8.90;8.62;23.46;E-S0;;;;;;;;2MASX J13262174-3352067,ESO 382-065,ESO-LV 382-0650,IRAS 13235-3336,MCG -05-32-016,PGC 047031;;; -NGC5141;G;13:24:51.44;+36:22:42.7;CVn;1.59;1.10;78;13.90;;10.58;9.90;9.64;23.52;S0;;;;;;;;2MASX J13245144+3622424,MCG +06-30-004,PGC 046906,UGC 08433;;; -NGC5142;G;13:25:01.11;+36:23:58.2;CVn;1.18;1.04;14;14.00;;11.07;10.41;10.11;23.29;S0;;;;;;;;2MASX J13250113+3623585,MCG +06-30-006,PGC 046919,SDSS J132501.10+362358.2,UGC 08435;;; -NGC5143;G;13:25:01.28;+36:26:13.8;CVn;0.53;0.34;101;15.50;;14.56;13.69;14.05;23.00;SBd;;;;;;;;2MASX J13250120+3626145,MCG +06-30-005,PGC 046918,SDSS J132501.28+362613.7;;; -NGC5144;GPair;13:22:53.70;+70:30:44.0;UMi;1.10;;;;;;;;;;;;;;;;;MCG +12-13-005,UGC 08420;;;Diameter of the group inferred by the author. -NGC5144 NED01;G;13:22:53.49;+70:30:36.4;UMi;0.89;0.40;55;15.62;;;;;;;;;;;;;;2MASX J13225349+7030363,MCG +12-13-005 NED01,PGC 200298,UGC 08420 NED01;;UGC says this is probably a superimposed companion of UGC 08420 NED02.;b-Mag taken from LEDA. -NGC5144 NED02;G;13:22:54.08;+70:30:53.0;UMi;1.00;0.81;151;13.20;;;;;22.05;Sc;;;;;;;;IRAS 13214+7046,MCG +12-13-005 NED02,PGC 046742,UGC 08420 NED02;;; -NGC5145;G;13:25:13.92;+43:16:02.2;CVn;1.97;1.45;84;13.60;;10.39;9.64;9.33;23.70;S0-a;;;;;;;;2MASX J13251390+4316018,IRAS 13230+4331,MCG +07-28-009,PGC 046934,SDSS J132513.91+431602.1,SDSS J132513.92+431602.2,UGC 08439;;; -NGC5146;G;13:26:37.49;-12:19:26.3;Vir;2.16;1.39;33;14.00;;10.18;9.48;9.23;24.35;E-S0;;;;;;;;2MASX J13263751-1219259,MCG -02-34-049,PGC 047055;;HOLM 516B is a star.; -NGC5147;G;13:26:19.73;+02:06:03.1;Vir;1.47;1.36;160;12.70;;10.57;9.91;9.73;21.78;Sd;;;;;;;;2MASX J13261970+0206027,IRAS 13237+0221,MCG +00-34-033,PGC 047027,SDSS J132619.73+020603.0,UGC 08443;;; -NGC5148;G;13:26:38.78;+02:18:49.4;Vir;0.66;0.60;0;15.40;;13.69;13.36;12.66;23.26;SBcd;;;;;;;;2MASX J13263886+0218499,MCG +01-34-021,PGC 047060,SDSS J132638.78+021849.3,SDSS J132638.78+021849.4;;; -NGC5149;G;13:26:09.15;+35:56:03.9;CVn;1.62;0.95;153;13.80;;10.85;10.14;9.87;23.15;SBbc;;;;;;;;2MASX J13260917+3556039,IRAS 13238+3611,MCG +06-30-010,PGC 047011,SDSS J132609.14+355603.9,UGC 08444;;; -NGC5150;G;13:27:36.54;-29:33:44.1;Hya;1.40;1.03;117;13.43;12.54;10.42;9.75;9.46;22.66;SBbc;;;;;;;;2MASX J13273652-2933438,ESO 444-043,ESO-LV 444-0430,IRAS 13248-2918,MCG -05-32-023,PGC 047169;;; -NGC5151;G;13:26:40.84;+16:52:25.7;Com;0.91;0.82;175;14.90;;11.41;10.67;10.42;23.29;E;;;;;;;;2MASX J13264084+1652258,MCG +03-34-032,PGC 047056,SDSS J132640.83+165225.7,SDSS J132640.84+165225.7;;; -NGC5152;G;13:27:51.12;-29:37:07.0;Hya;2.03;1.04;110;13.32;;12.27;11.58;11.39;23.45;SBb;;;;;;;;2MASX J13274933-2937048,ESO 444-044,ESO-LV 444-0440,MCG -05-32-024,PGC 047187;;; -NGC5153;G;13:27:54.33;-29:37:04.9;Hya;2.44;1.89;17;13.29;;10.00;9.38;9.15;23.71;E;;;;;;;;2MASX J13275431-2937048,ESO 444-045,ESO-LV 444-0450,MCG -05-32-025,PGC 047194;;; -NGC5154;G;13:26:28.54;+36:00:37.0;CVn;1.35;1.26;60;14.90;;12.20;11.64;11.24;23.94;Sc;;;;;;;;2MASX J13262849+3600373,MCG +06-30-011,PGC 047041,SDSS J132628.53+360036.9,SDSS J132628.53+360037.0,UGC 08447;;; -NGC5155;Dup;13:28:35.09;-63:30:31.3;Cen;;;;;;;;;;;;;;;5045;;;;;; -NGC5156;G;13:28:44.09;-48:55:00.5;Cen;2.54;2.08;115;12.54;11.99;9.69;9.04;8.73;23.12;SBb;;;;;;;;2MASX J13284409-4855005,ESO 220-013,ESO-LV 220-0130,IRAS 13256-4839,PGC 047283;;Confused HIPASS source; -NGC5157;G;13:27:16.85;+32:01:50.6;CVn;1.32;1.11;116;14.40;;11.01;10.28;10.02;23.28;Sa;;;;;;;;2MASX J13271683+3201505,MCG +05-32-021,PGC 047131,SDSS J132716.84+320150.5,SDSS J132716.85+320150.5,UGC 08455;;; -NGC5158;G;13:27:46.97;+17:46:43.8;Com;0.98;0.93;30;13.80;;11.24;10.51;10.31;22.59;Sab;;;;;;;;2MASX J13274693+1746442,MCG +03-34-038,PGC 047180,SDSS J132746.96+174643.7,SDSS J132746.97+174643.7,UGC 08459;;"CGCG misprints name as 'NGC 5188'; corrected in vol III (errata)"; -NGC5159;G;13:28:16.17;+02:58:57.6;Vir;1.24;0.35;162;15.20;;12.70;11.97;11.93;23.41;Sc;;;;;;;;2MASX J13281623+0258574,MCG +01-34-022,PGC 047235,SDSS J132816.17+025857.5,SDSS J132816.18+025857.6,UGC 08460;;; -NGC5160;**;13:28:21.60;+05:59:45.2;Vir;;;;;;;;;;;;;;;;;;;;; -NGC5161;G;13:29:13.91;-33:10:25.8;Cen;5.36;1.62;77;12.13;11.00;9.49;8.85;8.63;23.43;Sc;;;;;;;;2MASX J13291390-3310258,ESO 383-004,ESO-LV 383-0040,IRAS 13264-3255,MCG -05-32-031,PGC 047321,UGCA 359;;; -NGC5162;G;13:29:25.93;+11:00:28.4;Vir;2.96;1.60;162;13.70;;10.29;9.63;9.33;24.30;SBc;;;;;5174;;;2MASX J13292596+1100285,IRAS 13269+1115,MCG +02-34-018,PGC 047346,SDSS J132925.92+110028.4,SDSS J132925.93+110028.4,SDSS J132925.94+110028.4,UGC 08475;;"Called 'double nebula' in CGCG; UGC calls it galaxy with star superposed."; -NGC5163;G;13:26:54.26;+52:45:12.7;UMa;1.13;0.72;10;14.90;;11.22;10.46;10.24;23.81;E;;;;;;;;2MASX J13265425+5245127,MCG +09-22-062,PGC 047096,SDSS J132654.25+524512.8,SDSS J132654.26+524512.6,SDSS J132654.26+524513.0,SDSS J132654.27+524512.7,UGC 08453;;; -NGC5164;G;13:27:11.90;+55:29:13.8;UMa;0.99;0.90;35;14.60;;11.73;11.11;10.75;23.11;SBb;;;;;;;;2MASX J13271189+5529135,MCG +09-22-063,PGC 047124,SDSS J132711.89+552913.8,SDSS J132711.90+552913.8,SDSS J132711.90+552914.0,UGC 08458;;MRK 0257 in Astrofiz,5,581,1969 table, but chart/note are for CGCG 271-046.; -NGC5165;G;13:28:39.18;+11:23:13.4;Vir;1.64;0.91;2;14.60;;11.22;10.54;10.22;24.33;E-S0;;;;;;;;2MASX J13283913+1123131,MCG +02-34-016,PGC 047281,SDSS J132839.17+112313.3;;; -NGC5166;G;13:28:15.04;+32:01:56.6;CVn;2.13;0.37;67;14.30;;10.59;9.80;9.48;23.54;SABb;;;;;;;;2MASX J13281504+3201565,IRAS 13259+3217,MCG +05-32-026,PGC 047234,UGC 08463;;; -NGC5167;G;13:28:40.23;+12:42:40.3;Vir;1.00;0.96;15;14.70;;12.21;11.66;11.22;23.40;SBb;;;;;;;;IRAS 13261+1258,MCG +02-34-017,PGC 047277,SDSS J132840.23+124240.3;;; -NGC5168;OCl;13:31:05.25;-60:56:21.2;Cen;4.20;;;9.55;9.10;;;;;;;;;;;;;MWSC 2129;;; -NGC5169;G;13:28:10.05;+46:40:19.7;CVn;1.51;0.60;104;14.30;;12.00;11.34;11.08;23.64;Sbc;;;;;;;;2MASX J13281003+4640196,MCG +08-25-004,PGC 047231,SDSS J132810.04+464019.6,SDSS J132810.05+464019.6,SDSS J132810.05+464019.7,UGC 08465;;; -NGC5170;G;13:29:48.79;-17:57:59.1;Vir;7.96;1.41;123;12.08;10.79;8.70;7.95;7.63;23.95;Sc;;;;;;;;2MASX J13294883-1757593,ESO 576-065,ESO-LV 576-0650,IRAS 13271-1742,MCG -03-34-084,PGC 047394,PGC 047396,UGCA 360;;; -NGC5171;G;13:29:21.56;+11:44:06.4;Vir;1.07;0.78;5;14.70;;11.02;10.30;10.04;22.61;E-S0;;;;;;;;2MASX J13292154+1144065,MCG +02-34-020,PGC 047339,SDSS J132921.56+114406.4,UGC 08476;;; -NGC5172;G;13:29:19.31;+17:03:06.9;Com;2.38;1.34;101;12.70;;10.17;9.50;9.20;22.84;SABc;;;;;;;;2MASX J13291914+1703061,IRAS 13268+1718,MCG +03-34-041,PGC 047330,SDSS J132919.16+170306.2,UGC 08477;;; -NGC5173;G;13:28:25.27;+46:35:29.9;CVn;1.10;1.04;130;13.10;;10.88;10.26;10.05;22.47;E;;;;;;;;2MASX J13282527+4635296,MCG +08-25-005,PGC 047257,SDSS J132825.27+463529.9,SDSS J132825.28+463529.9,UGC 08468;;; -NGC5174;Dup;13:29:25.93;+11:00:28.4;Vir;;;;;;;;;;;;;;;5162;;;;;; -NGC5175;*;13:29:26.27;+10:59:42.5;Vir;;;;;;;;;;;;;;;;;;SDSS J132926.26+105942.5;;This star is superposed on NGC 5174.; -NGC5176;G;13:29:24.96;+11:46:53.3;Vir;0.38;0.38;130;15.40;;11.87;11.29;10.69;22.14;E;;;;;;;;2MASX J13292494+1146535,MCG +02-34-021,PGC 047338,SDSS J132924.95+114653.3,SDSS J132924.96+114653.3;;; -NGC5177;G;13:29:24.26;+11:47:49.3;Vir;0.86;0.23;134;15.40;;12.60;11.65;11.35;23.17;Sa;;;;;;;;2MASX J13292426+1147495,MCG +02-34-019,PGC 047337,SDSS J132924.25+114749.3,SDSS J132924.26+114749.3;;; -NGC5178;G;13:29:29.31;+11:37:29.2;Vir;1.03;0.66;94;15.00;;11.86;11.08;11.03;23.49;S0-a;;;;;;;;2MASX J13292930+1137295,MCG +02-34-022,PGC 047358,SDSS J132929.30+113729.1,SDSS J132929.31+113729.2,UGC 08478;;; -NGC5179;G;13:29:30.88;+11:44:45.0;Vir;1.10;0.73;40;14.90;;11.42;10.69;10.56;23.62;E-S0;;;;;;;;2MASX J13293087+1144445,MCG +02-34-023,PGC 047363,SDSS J132930.88+114444.9,SDSS J132930.88+114445.0;;; -NGC5180;G;13:29:26.96;+16:49:33.0;Com;1.25;0.89;34;14.30;;10.92;10.25;9.97;23.19;S0;;;;;;;;2MASX J13292695+1649331,MCG +03-34-042,PGC 047352,UGC 08479;;; -NGC5181;G;13:29:42.00;+13:18:14.8;Vir;1.04;0.90;30;14.70;;11.11;10.42;10.20;23.42;E;;;;;;;;2MASX J13294202+1318144,MCG +02-34-024,PGC 047373,SDSS J132942.00+131814.7,SDSS J132942.00+131814.8;;; -NGC5182;G;13:30:41.11;-28:09:01.1;Hya;2.06;1.60;12;13.22;;;;;23.45;Sbc;;;;;;;;2MASX J13304109-2809009,ESO 444-062,ESO-LV 444-0620,IRAS 13278-2753,MCG -05-32-034,PGC 047489;;The position in 1995AJ....110..463Q is 13 arcsec north of the nucleus.; -NGC5183;G;13:30:06.15;-01:43:14.1;Vir;1.72;0.60;118;13.60;;10.92;10.22;9.98;23.03;Sb;;;;;;;;2MASX J13300614-0143144,IRAS 13275-0127,MCG +00-34-039,PGC 047432,SDSS J133006.14-014314.1,SDSS J133006.15-014314.1,UGC 08485;;; -NGC5184;G;13:30:11.49;-01:39:47.3;Vir;1.57;0.94;128;13.70;;10.45;9.80;9.61;22.92;SABb;;;;;;;;2MASX J13301147-0139474,MCG +00-34-041,PGC 047438,SDSS J133011.48-013947.2,SDSS J133011.49-013947.2,SDSS J133011.49-013947.3,UGC 08487;;; -NGC5185;G;13:30:02.25;+13:24:57.8;Vir;2.00;0.74;58;14.70;;11.20;10.56;10.24;24.02;SBb;;;;;;;;2MASX J13300224+1324573,MCG +02-34-025,PGC 047422,SDSS J133002.24+132457.8,SDSS J133002.25+132457.8,UGC 08488;;; -NGC5186;G;13:30:03.90;+12:10:30.7;Vir;0.73;0.49;160;15.60;;13.63;12.93;12.51;23.60;Sb;;;;;;;;2MASX J13300388+1210313,PGC 047426,SDSS J133003.89+121030.6,SDSS J133003.90+121030.7;;; -NGC5187;G;13:29:48.19;+31:07:48.5;CVn;0.81;0.54;45;14.60;;11.75;11.14;10.80;22.71;Sb;;;;;;;;2MASX J13294820+3107485,IRAS 13274+3123,MCG +05-32-029,PGC 047393,SDSS J132948.19+310748.5;;; -NGC5188;G;13:31:28.28;-34:47:39.9;Cen;3.41;2.41;98;12.68;11.85;9.53;8.81;8.52;24.07;Sb;;;;;;;;2MASX J13312829-3447400,ESO 383-009,ESO-LV 383-0090,IRAS 13286-3432,MCG -06-30-007,PGC 047549;;; -NGC5189;PN;13:33:32.91;-65:58:26.6;Mus;2.33;;;10.30;;14.02;13.84;13.53;;;;14.92;;;;4274;HD 117622;ESO 096-016,PN G307.2-03.4;;; -NGC5190;G;13:30:38.55;+18:08:04.6;Com;0.97;0.76;155;13.70;;11.40;10.76;10.33;22.59;Sb;;;;;;;;2MASX J13303853+1808042,IRAS 13282+1823,MCG +03-34-043,PGC 047482,SDSS J133038.54+180804.5,SDSS J133038.54+180804.6,UGC 08500;;; -NGC5191;G;13:30:47.36;+11:12:02.7;Vir;1.03;0.67;89;14.90;;11.44;10.71;10.50;23.49;S0;;;;;;;;2MASX J13304735+1112023,MCG +02-34-026,PGC 047498,SDSS J133047.35+111202.7,SDSS J133047.36+111202.7;;; -NGC5192;G;13:30:51.68;-01:46:43.3;Vir;0.61;0.30;12;15.20;;12.45;11.76;11.56;22.74;Sa;;;;;;;;2MASX J13305167-0146433,IRAS 13282-0131,PGC 047503,SDSS J133051.67-014643.3,SDSS J133051.68-014643.3;;; -NGC5193;G;13:31:53.53;-33:14:03.2;Cen;2.07;1.89;65;12.69;11.92;9.62;8.92;8.69;23.03;E;;;;;;;;2MASX J13315348-3314040,ESO 383-015,ESO-LV 383-0150,MCG -05-32-037,PGC 047582,TYC 7269-1438-1;;; -NGC5193A;G;13:31:49.08;-33:14:22.1;Cen;1.49;0.53;48;14.00;;11.42;10.68;10.94;23.68;S0;;;;;;;;2MASX J13314907-3314221,ESO 383-014,ESO-LV 383-0140,MCG -05-32-036,PGC 047568;;; -NGC5194;G;13:29:52.71;+47:11:42.6;CVn;13.71;11.67;163;9.26;8.36;6.40;5.65;5.50;22.90;SABb;;;;051;;;;2MASX J13295269+4711429,IRAS 13277+4727,MCG +08-25-012,PGC 047404,UGC 08493;Whirlpool Galaxy;; -NGC5195;G;13:29:59.59;+47:15:58.1;CVn;5.50;4.36;79;10.45;9.55;7.21;6.46;6.25;22.84;SBa;;;;;;;;2MASX J13295958+4715580,IRAS 13278+4731,MCG +08-25-014,PGC 047413,UGC 08494;;; -NGC5196;G;13:31:19.66;-01:36:54.2;Vir;0.87;0.80;165;15.50;;12.05;11.30;11.13;23.57;E-S0;;;;;;;;2MASX J13311969-0136537,PGC 047540,SDSS J133119.66-013654.1,SDSS J133119.66-013654.2;;; -NGC5197;G;13:31:25.13;-01:41:35.0;Vir;0.86;0.19;148;15.40;;12.44;11.73;11.66;24.15;S0-a;;;;;;;;2MASX J13312516-0141347,PGC 047546,SDSS J133125.13-014135.0;;; -NGC5198;G;13:30:11.40;+46:40:14.8;CVn;2.03;1.68;15;13.20;;9.81;9.14;8.90;23.10;E;;;;;;;;2MASX J13301141+4640149,MCG +08-25-015,PGC 047441,TYC 3463-238-1,UGC 08499;;; -NGC5199;G;13:30:42.76;+34:49:50.4;CVn;1.27;0.91;130;15.10;;11.34;10.72;10.48;23.96;S0;;;;;;;;2MASX J13304274+3449503,2MASX J13304388+3449263,MCG +06-30-024,PGC 047492,SDSS J133042.75+344950.3,SDSS J133042.76+344950.3,SDSS J133042.76+344950.4,UGC 08504;;; -NGC5200;**;13:31:42.46;-00:01:48.6;Vir;;;;;;;;;;;;;;;;;;;;;Components are 2MASS J13314257-0001487 and 2MASS J13314200-0001488. -NGC5201;G;13:29:16.21;+53:04:55.1;UMa;1.58;0.99;127;14.30;;10.91;10.34;10.08;23.61;Sb;;;;;;;;2MASX J13291617+5304554,MCG +09-22-069,PGC 047324,SDSS J132916.20+530455.1,SDSS J132916.21+530455.0,SDSS J132916.21+530455.1,SDSS J132916.22+530455.4,UGC 08480;;; -NGC5202;G;13:32:00.51;-01:41:55.6;Vir;0.67;0.29;178;15.57;;12.55;11.84;11.89;23.00;Sb;;;;;;;;2MASX J13320050-0141555,PGC 047589,SDSS J133200.50-014155.5,SDSS J133200.51-014155.5,SDSS J133200.51-014155.6;;; -NGC5203;G;13:32:13.40;-08:47:10.4;Vir;1.66;1.05;90;14.00;;10.54;9.86;9.61;23.97;E-S0;;;;;;;;2MASX J13321340-0847104,MCG -01-35-001,PGC 047610;;; -NGC5204;G;13:29:36.51;+58:25:07.4;UMa;4.50;2.82;5;11.84;;10.24;9.64;9.51;23.32;Sm;;;;;;;;2MASX J13293650+5825074,IRAS 13277+5840,MCG +10-19-078,PGC 047368,UGC 08490;;; -NGC5205;G;13:30:03.58;+62:30:41.7;UMa;1.58;0.94;168;13.50;;10.67;9.59;9.76;22.89;SBbc;;;;;;;;2MASX J13300369+6230415,IRAS 13283+6245,MCG +11-17-003,PGC 047425,SDSS J133003.57+623041.6,SDSS J133003.58+623041.7,UGC 08501;;; -NGC5206;G;13:33:43.98;-48:09:04.2;Cen;4.26;2.81;28;11.62;;9.39;8.55;8.49;23.77;E-S0;;;;;;;;2MASX J13334398-4809044,ESO 220-018,ESO-LV 220-0180,PGC 047762;;; -NGC5207;G;13:32:13.99;+13:53:32.6;Vir;1.75;0.88;142;14.70;;10.83;10.08;9.82;23.76;Sb;;;;;;;;2MASX J13321395+1353323,MCG +02-35-001,PGC 047612,SDSS J133213.98+135332.5,UGC 08518;;; -NGC5208;G;13:32:27.93;+07:18:59.2;Vir;1.69;0.60;161;14.40;;10.52;9.77;9.51;24.01;S0;;;;;;;;2MASX J13322790+0718599,MCG +01-35-001,PGC 047637,SDSS J133227.93+071859.1,SDSS J133227.93+071859.2,UGC 08519;;Possible association with NGC 5212 indicated in MCG.; -NGC5209;G;13:32:42.54;+07:19:38.1;Vir;1.25;0.88;111;14.70;;10.98;10.42;10.07;23.83;E;;;;;;;;2MASX J13324251+0719382,MCG +01-35-002,PGC 047654,SDSS J133242.54+071938.1,SDSS J133242.55+071938.1,UGC 08522;;; -NGC5210;G;13:32:49.25;+07:10:12.3;Vir;1.51;1.25;12;14.40;;10.59;9.95;9.69;23.55;Sa;;;;;;;;2MASX J13324924+0710122,MCG +01-35-003,PGC 047678,SDSS J133249.24+071012.3,UGC 08523;;; -NGC5211;G;13:33:05.34;-01:02:08.9;Vir;2.00;1.55;30;13.79;13.10;10.60;9.90;9.63;23.77;Sab;;;;;;;;2MASX J13330535-0102085,IRAS 13305-0046,MCG +00-35-009,PGC 047709,SDSS J133305.33-010208.8,SDSS J133305.34-010208.8,SDSS J133305.34-010208.9,UGC 08530;;; -NGC5212;G;13:32:56.05;+07:17:15.9;Vir;0.51;0.47;90;15.40;;13.64;13.22;12.78;23.21;Sc;;;;;;;;2MASX J13325602+0717162,PGC 047687,SDSS J133256.10+071716.0;;; -NGC5213;GPair;13:34:39.40;+04:08:00.0;Vir;0.93;0.71;133;14.90;;12.11;11.38;11.20;23.18;Sb;;;;;;;;2MASX J13343925+0407477,MCG +01-35-008,PGC 047842,SDSS J133439.26+040747.8,SDSS J133439.26+040747.9,UGC 08552;;; -NGC5214;G;13:32:48.70;+41:52:18.6;CVn;1.04;0.83;131;14.12;13.67;11.75;11.11;10.79;22.99;Sc;;;;;;;;2MASX J13324873+4152184,MCG +07-28-030,PGC 047675,SDSS J133248.70+415218.5,SDSS J133248.70+415218.6,SDSS J133248.71+415218.5,SDSS J133248.71+415218.6,UGC 08531;;; -NGC5215A;G;13:35:06.66;-33:28:51.6;Cen;0.64;0.59;135;14.16;;11.01;10.33;9.98;21.94;S0;;;;;;;;2MASX J13350667-3328517,ESO 383-028,ESO-LV 383-0280,ESO-LV 383-0291,MCG -05-32-040,PGC 047883;;The position in 2003A&A...405....1P is for a knot on the southwestern side.; -NGC5215B;G;13:35:09.86;-33:28:58.7;Cen;1.24;0.88;85;13.93;;;;;23.15;S0;;;;;;;;2MASX J13351155-3328576,ESO 383-029,ESO-LV 383-0281,ESO-LV 383-0290,MCG -05-32-041,PGC 047887;;ESO-LV has two entries for this object.; -NGC5216;G;13:32:06.89;+62:42:02.5;UMa;1.69;1.10;54;16.80;16.14;10.80;10.13;9.87;23.70;E;;;;;;;;2MASX J13320682+6242029,MCG +11-17-004,PGC 047598,SDSS J133206.89+624202.3,SDSS J133206.89+624202.5,SDSS J133206.90+624202.5,UGC 08528;;; -NGC5217;G;13:34:05.93;+17:51:24.7;Com;1.56;0.53;16;14.00;;10.82;10.08;9.80;23.76;E;;;;;;;;2MASX J13340593+1751244,MCG +03-35-009,PGC 047793,SDSS J133405.92+175124.6,SDSS J133405.93+175124.6,SDSS J133405.93+175124.7,UGC 08546;;; -NGC5218;G;13:32:10.38;+62:46:03.9;UMa;1.84;1.21;93;13.10;;10.14;9.43;9.21;22.86;SBb;;;;;;;;2MASX J13321042+6246039,IRAS 13304+6301,MCG +11-17-005,PGC 047603,SDSS J133210.37+624603.8,SDSS J133210.37+624603.9,SDSS J133210.38+624603.9,SDSS J133210.39+624603.9,UGC 08529;;; -NGC5219;Dup;13:38:41.70;-45:51:21.5;Cen;;;;;;;;;;;;;;;5244;;;;;; -NGC5220;G;13:35:56.67;-33:27:13.7;Cen;2.62;1.21;95;13.12;;9.88;9.11;8.87;24.09;Sa;;;;;;;;2MASX J13355666-3327137,ESO 383-036,ESO-LV 383-0360,IRAS 13330-3311,MCG -05-32-046,PGC 047972;;; -NGC5221;G;13:34:55.90;+13:49:57.0;Vir;1.56;0.77;109;14.50;;10.88;10.26;10.05;23.60;SABb;;;;;;;;2MASX J13345590+1349571,MCG +02-35-006,PGC 047869,UGC 08559;;Misidentified in VV as 'NGC 5226'.; -NGC5222;GPair;13:34:56.70;+13:44:36.0;Vir;1.20;;;;;;;;;;;;;;;;;MCG +02-35-005,UGC 08558;;;Diameter of the group inferred by the author. -NGC5222 NED01;G;13:34:55.95;+13:44:31.8;Vir;1.51;1.00;12;14.10;;10.81;10.00;9.82;23.75;E;;;;;;;;2MASX J13345590+1344311,MCG +02-35-005 NED01,PGC 047871,SDSS J133455.94+134431.7,SDSS J133455.95+134431.8,UGC 08558 NED01;;Component 'a)' in UGC notes.; -NGC5222 NED02;G;13:34:57.59;+13:44:39.4;Vir;0.93;0.59;33;15.14;;;;;23.87;Sab;;;;;;;;MCG +02-35-005 NED02,PGC 093122,SDSS J133457.59+134439.3,UGC 08558 NED02;;Component 'c)' in UGC notes. UGC says VV identification as NGC 5221 incorrect.;B-Mag taken from LEDA -NGC5223;G;13:34:25.22;+34:41:25.6;CVn;2.14;1.42;170;14.40;;10.46;9.71;9.48;24.58;E;;;;;;;;2MASX J13342524+3441255,MCG +06-30-040,PGC 047822,SDSS J133425.21+344125.5,UGC 08553;;; -NGC5224;G;13:35:08.86;+06:28:52.0;Vir;0.87;0.76;139;15.00;;11.62;10.91;10.69;23.50;E;;;;;;;;2MASX J13350883+0628519,MCG +01-35-009,PGC 047884,SDSS J133508.85+062851.9;;; -NGC5225;G;13:33:20.16;+51:29:25.2;CVn;0.73;0.73;60;14.40;;11.41;10.83;10.58;22.56;E;;;;;;;;2MASX J13332012+5129253,MCG +09-22-078,PGC 047731,SDSS J133320.15+512925.1,SDSS J133320.16+512925.1,SDSS J133320.16+512925.2,UGC 08540;;; -NGC5226;G;13:35:03.62;+13:55:19.8;Vir;0.50;0.26;17;;;13.54;12.41;12.69;23.82;E;;;;;;;;2MASX J13350365+1355200,PGC 047877,SDSS J133503.61+135519.7,SDSS J133503.62+135519.8;;; -NGC5227;G;13:35:24.56;+01:24:38.1;Vir;1.51;1.29;161;17.16;16.45;11.54;10.83;10.56;23.38;Sb;;;;;;;;2MASX J13352457+0124376,IRAS 13328+0140,MCG +00-35-010,PGC 047915,SDSS J133524.50+012437.4,SDSS J133524.55+012438.0,SDSS J133524.55+012438.1,SDSS J133524.56+012438.1,UGC 08566;;; -NGC5228;G;13:34:35.06;+34:46:40.1;CVn;1.15;0.98;20;14.50;;10.93;10.23;10.01;23.31;E-S0;;;;;;;;2MASX J13343506+3446405,MCG +06-30-043,PGC 047837,SDSS J133435.06+344639.9,SDSS J133435.07+344639.9,UGC 08556;;; -NGC5229;G;13:34:02.83;+47:54:55.6;CVn;2.28;0.63;169;14.60;;12.49;12.09;11.67;23.91;SBcd;;;;;;;;2MASX J13340283+4754556,MCG +08-25-019,PGC 047788,UGC 08550;;; -NGC5230;G;13:35:31.88;+13:40:34.2;Boo;1.55;1.48;0;13.40;;10.59;9.80;9.83;22.84;SABc;;;;;;;;2MASX J13353188+1340344,IRAS 13330+1355,MCG +02-35-009,PGC 047932,SDSS J133531.87+134034.2,UGC 08573;;; -NGC5231;G;13:35:48.25;+02:59:56.1;Vir;1.15;0.76;133;14.25;16.15;10.99;10.31;10.14;23.14;SBa;;;;;;;;2MASX J13354825+0259556,IRAS 13332+0315,MCG +01-35-011,PGC 047953,SDSS J133548.24+025956.1,SDSS J133548.25+025956.1,UGC 08574;;; -NGC5232;G;13:36:08.26;-08:29:51.8;Vir;1.72;1.34;65;13.00;;10.20;9.50;9.17;23.27;S0-a;;;;;;;;2MASX J13360823-0829519,IRAS 13335-0814,MCG -01-35-003,PGC 047998;;; -NGC5233;G;13:35:13.34;+34:40:38.8;CVn;1.46;0.76;80;14.80;;10.97;10.23;9.98;23.61;Sab;;;;;;;;2MASX J13351333+3440383,MCG +06-30-047,PGC 047895,SDSS J133513.34+344038.7,SDSS J133513.34+344038.8,UGC 08568;;; -NGC5234;G;13:37:29.94;-49:50:12.9;Cen;1.51;0.87;46;14.00;;10.41;9.75;9.46;23.57;S0-a;;;;;;;;2MASX J13372994-4950128,ESO 220-024,ESO-LV 220-0240,PGC 048129;;; -NGC5235;G;13:36:01.41;+06:35:07.3;Vir;1.31;0.57;115;14.90;;11.52;10.84;10.67;23.78;SBb;;;;;;;;2MASX J13360139+0635076,IRAS 13335+0650,MCG +01-35-012,PGC 047984,SDSS J133601.40+063507.2,UGC 08582;;; -NGC5236;G;13:37:00.95;-29:51:55.5;Hya;13.61;13.21;45;8.11;7.52;5.54;4.87;4.62;22.20;Sc;;;;083;;;;2MASX J13370091-2951567,ESO 444-081,ESO-LV 444-0810,IRAS 13341-2936,MCG -05-32-050,PGC 048082,UGCA 366;Southern Pinwheel Galaxy;Extended HIPASS source; -NGC5237;G;13:37:39.05;-42:50:49.1;Cen;2.34;1.57;111;13.26;12.67;10.64;10.13;9.85;23.80;E-S0;;;;;;;;2MASX J13373905-4250488,ESO 270-022,ESO-LV 270-0220,MCG -07-28-005,PGC 048139;;; -NGC5238;G;13:34:42.51;+51:36:49.2;UMa;1.75;1.44;162;14.20;;;;;23.68;SABd;;;;;;;;2MASX J13344249+5136494,MCG +09-22-082,PGC 047853,PGC 047857,SDSS J133442.50+513649.2,SDSS J133442.51+513649.2,UGC 08565;;; -NGC5239;G;13:36:26.20;+07:22:10.5;Vir;1.80;1.75;150;14.70;;11.29;10.98;10.22;24.39;Sbc;;;;;;;;2MASX J13362618+0722109,IRAS 13339+0737,MCG +01-35-015,PGC 048023,SDSS J133626.20+072210.5,UGC 08589;;; -NGC5240;G;13:35:55.20;+35:35:17.7;CVn;1.83;1.26;57;14.10;;11.56;10.88;10.68;23.57;SBc;;;;;;;;2MASX J13355522+3535177,MCG +06-30-056,PGC 047971,SDSS J133555.19+353517.6,SDSS J133555.19+353517.7,SDSS J133555.20+353517.7,UGC 08587;;; -NGC5241;G;13:36:39.87;-08:24:06.8;Vir;1.05;0.46;50;15.00;;11.35;10.62;10.38;22.16;SBab;;;;;;;;2MASX J13363986-0824065,IRAS 13340-0808,MCG -01-35-006,PGC 048043;;; -NGC5242;Other;13:37:07.39;+02:46:14.1;Vir;;;;;;;;;;;;;;;;;;;;Nothing at this position on the POSS.; -NGC5243;G;13:36:14.95;+38:20:38.1;CVn;1.01;0.45;126;14.00;;11.08;10.39;10.13;22.50;Sbc;;;;;;;;2MASX J13361501+3820381,2MASX J13361539+3820345,IRAS 13340+3836,MCG +07-28-036,PGC 048011,SDSS J133614.95+382038.1,UGC 08592;;; -NGC5244;G;13:38:41.70;-45:51:21.5;Cen;2.22;1.49;18;13.34;;10.78;10.18;9.96;23.52;Sbc;;;;;5219;;;2MASX J13384167-4551217,ESO 270-023,ESO-LV 270-0230,IRAS 13356-4536,MCG -07-28-007,PGC 048093,PGC 048236;;The name ESO 270- ? 020 applies to the nominal position for NGC 5219.; -NGC5245;G;13:37:23.23;+03:53:50.7;Vir;0.56;0.21;90;15.30;;11.89;11.07;11.01;23.05;S0-a;;;;;;;;2MASX J13372326+0353504,PGC 048110,SDSS J133723.23+035350.7,SDSS J133723.24+035350.7;;; -NGC5246;G;13:37:29.37;+04:06:16.0;Vir;0.85;0.65;85;14.80;;11.97;11.29;11.13;22.93;SBb;;;;;;;;2MASX J13372941+0406164,IRAS 13349+0421,MCG +01-35-017,PGC 048128,SDSS J133729.36+040615.9,SDSS J133729.36+040616.0,UGC 08612;;; -NGC5247;G;13:38:03.04;-17:53:02.5;Vir;5.32;4.26;170;10.77;;8.40;7.79;7.53;22.95;SABb;;;;;;;;2MASX J13380303-1753025,ESO 577-014,ESO-LV 577-0140,IRAS 13353-1737,MCG -03-35-011,PGC 048171,UGCA 368;;; -NGC5248;G;13:37:32.02;+08:53:06.6;Boo;4.07;2.38;120;11.40;;8.18;7.46;7.25;22.25;SABb;;;;;;;;2MASX J13373206+0853062,C 045,IRAS 13350+0908,MCG +02-35-015,PGC 048130,SDSS J133732.02+085306.6,UGC 08616;;; -NGC5249;G;13:37:37.50;+15:58:20.0;Boo;1.49;0.93;176;15.09;13.97;10.88;10.17;9.93;23.83;S0;;;;;;;;2MASX J13373751+1558197,MCG +03-35-015,PGC 048134,SDSS J133737.49+155820.0,UGC 08618;;; -NGC5250;G;13:36:07.33;+51:14:08.9;UMa;0.93;0.85;110;14.00;;10.90;10.30;10.05;22.42;S0;;;;;;;;2MASX J13360737+5114085,MCG +09-22-085,PGC 047997,SDSS J133607.32+511408.9,SDSS J133607.33+511408.9,SDSS J133607.33+511409.2,SDSS J133607.34+511408.9,UGC 08594;;; -NGC5251;G;13:37:24.83;+27:25:09.2;Boo;0.90;0.76;54;14.70;;11.81;10.96;10.77;23.14;S0-a;;;;;;;;2MASX J13372485+2725097,MCG +05-32-044,PGC 048119,SDSS J133724.82+272509.1,SDSS J133724.83+272509.1;;; -NGC5252;G;13:38:15.96;+04:32:33.3;Vir;1.29;0.75;11;15.21;14.21;10.89;10.10;9.77;23.56;S0;;;;;;;;2MASX J13381586+0432330,MCG +01-35-022,PGC 048189,SDSS J133815.86+043233.3,SDSS J133815.87+043233.3,UGC 08622;;; -NGC5253;G;13:39:55.96;-31:38:24.4;Cen;5.01;2.12;43;10.94;10.49;9.05;8.50;8.29;22.28;SBm;;;;;;;;2MASX J13395599-3138241,ESO 445-004,ESO-LV 445-0040,IRAS 13370-3123,MCG -05-32-060,PGC 048334,UGCA 369;;; -NGC5254;G;13:39:37.91;-11:29:37.9;Vir;3.35;1.44;127;12.20;;10.24;9.56;9.37;23.34;Sc;;;;;;;;2MASX J13393790-1129379,IRAS 13369-1114,MCG -02-35-012,PGC 048307;;; -NGC5255;G;13:37:18.12;+57:06:32.2;UMa;1.41;0.40;26;14.50;;11.94;11.24;10.98;24.14;Sa;;;;;;;;2MASX J13371811+5706324,MCG +10-19-098,PGC 048124,SDSS J133718.11+570632.1,SDSS J133718.12+570632.2,SDSS J133718.13+570632.1,SDSS J133718.13+570632.3;;; -NGC5256;GPair;13:38:17.50;+48:16:37.0;UMa;0.95;0.83;;14.10;13.42;;;;;;;;;;;;;MCG +08-25-031,UGC 08632;;; -NGC5256 NED01;G;13:38:17.31;+48:16:32.0;UMa;0.22;0.19;117;14.19;13.42;11.27;10.52;9.80;21.59;Sbc;;;;;;;;2MASX J13381728+4816319,MCG +08-25-031 NED01,PGC 093123,SDSS J133817.27+481632.3,SDSS J133817.28+481632.2,UGC 08632 NED01;;; -NGC5256 NED02;G;13:38:17.79;+48:16:41.0;UMa;1.48;1.29;9;15.00;;;;;23.52;Sab;;;;;;;;IRAS 13362+4831,MCG +08-25-031 NED02,PGC 048192,SDSS J133817.77+481640.9,SDSS J133817.77+481641.0,SDSS J133817.77+481641.1,UGC 08632 NED02;;; -NGC5257;G;13:39:52.91;+00:50:24.0;Vir;1.48;0.77;85;13.70;12.99;11.14;10.46;10.08;22.78;SABb;;;;;;;;2MASX J13395227+0050224,MCG +00-35-015,PGC 048330,UGC 08641;;UM 598 is a set of two HII regions within NGC 5257.; -NGC5258;G;13:39:57.69;+00:49:51.4;Vir;1.48;1.24;178;13.80;12.83;11.02;10.30;9.96;23.32;SBb;;;;;;;;2MASX J13395767+0049514,MCG +00-35-016,PGC 048338,UGC 08645;;; -NGC5259;GPair;13:39:23.90;+30:59:29.0;CVn;1.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC5259 NED01;G;13:39:23.13;+30:59:32.5;CVn;0.83;0.55;101;16.35;;;;;24.86;E;;;;;;;;SDSS J133923.13+305932.4;;Incorrectly called a superposed star in MCG Notes.;B-Mag taken from LEDA -NGC5259 NED02;G;13:39:24.67;+30:59:26.9;CVn;0.87;0.69;132;15.20;;11.43;10.67;10.45;23.73;E;;;;;;;;2MASX J13392470+3059275,MCG +05-32-052,PGC 048292,SDSS J133924.66+305926.8;;; -NGC5260;G;13:40:19.90;-23:51:29.1;Hya;1.64;1.60;160;13.63;;11.12;10.28;9.94;23.37;Sc;;;;;;;;2MASX J13401990-2351291,ESO 509-092,ESO-LV 509-0920,IRAS 13375-2336,MCG -04-32-050,PGC 048371,TYC 6714-1168-1;;; -NGC5261;G;13:40:16.09;+05:04:34.7;Vir;0.86;0.45;131;15.30;;11.91;11.22;10.82;23.27;Sa;;;;;;;;2MASX J13401609+0504343,PGC 048360,SDSS J134016.08+050434.7;;; -NGC5262;G;13:35:38.58;+75:02:21.9;UMi;1.22;0.69;177;14.41;13.65;11.58;10.90;10.53;24.19;E-S0;;;;;;;;2MASX J13353855+7502217,PGC 047923,UGC 08606;;; -NGC5263;G;13:39:55.64;+28:24:02.1;CVn;1.14;0.39;26;14.00;;11.23;10.52;10.17;22.51;Sc;;;;;;;;2MASX J13395563+2824020,IRAS 13376+2839,MCG +05-32-058,PGC 048333,UGC 08648;;; -NGC5264;G;13:41:36.68;-29:54:47.1;Hya;2.97;2.20;64;12.96;12.39;11.49;10.87;10.54;23.42;IB;;;;;;;;2MASX J13413668-2954472,ESO 445-012,ESO-LV 445-0120,MCG -05-32-066,PGC 048467,UGCA 370;;; -NGC5265;G;13:40:09.11;+36:51:39.9;CVn;0.95;0.85;140;14.90;;11.90;11.26;10.90;23.14;SBc;;;;;;;;2MASX J13400908+3651396,IRAS 13379+3706,MCG +06-30-068,PGC 048354,SDSS J134009.10+365139.9,SDSS J134009.11+365139.9,SDSS J134009.12+365139.9;;; -NGC5266;G;13:43:02.11;-48:10:09.9;Cen;2.92;2.09;98;11.89;11.14;8.43;7.70;7.48;23.11;S0;;;;;;;;2MASX J13430212-4810097,ESO 220-033,ESO-LV 220-0330,IRAS 13399-4755,PGC 048593;;Confused HIPASS source; -NGC5266A;G;13:40:37.10;-48:20:31.1;Cen;1.91;1.69;30;12.70;13.82;11.56;10.90;10.70;23.00;SBc;;;;;;;;2MASX J13403707-4820311,ESO 220-030,ESO-LV 220-0300,IRAS 13375-4805,PGC 048390;;Confused and extended HIPASS source; -NGC5267;G;13:40:39.96;+38:47:38.7;CVn;1.53;0.55;53;14.30;;10.83;10.13;9.83;23.06;SBb;;;;;;;;2MASX J13403994+3847384,MCG +07-28-049,PGC 048393,SDSS J134039.96+384738.6,SDSS J134039.96+384738.7,UGC 08655;;; -NGC5268;*;13:42:12.59;-13:51:34.4;Vir;;;;11.78;11.33;9.92;9.59;9.50;;;;;;;;;;2MASS J13421242-1351343,TYC 5552-395-1;;; -NGC5269;OCl;13:44:44.20;-62:54:45.0;Cen;4.80;;;;;;;;;;;;;;;;;MWSC 2156;;; -NGC5270;G;13:42:10.88;+04:15:45.3;Vir;1.00;0.76;20;14.70;;11.95;11.35;10.96;23.43;SBb;;;;;;;;2MASX J13421086+0415450,MCG +01-35-031,PGC 048527,UGC 08673;;; -NGC5271;G;13:41:42.41;+30:07:31.6;CVn;0.84;0.67;80;15.40;;12.27;11.59;11.38;23.42;SBa;;;;;;;;2MASX J13414237+3007312,MCG +05-32-065,PGC 048477,SDSS J134142.40+300731.5,SDSS J134142.41+300731.6;;; -NGC5272;GCl;13:42:11.23;+28:22:31.6;CVn;16.20;;;;6.39;;;;;;;;;003;;;;MWSC 2152;;;V-mag taken from LEDA -NGC5273;G;13:42:08.34;+35:39:15.2;CVn;2.31;1.52;6;14.01;13.12;9.50;8.84;8.67;23.07;S0;;;;;;;;2MASS J13420837+3539154,2MASX J13420838+3539152,MCG +06-30-072,PGC 048521,SDSS J134208.38+353915.4,SDSS J134208.39+353915.5,UGC 08675;;; -NGC5274;G;13:42:23.31;+29:50:52.2;CVn;0.60;0.54;111;15.40;;12.43;11.72;11.52;23.16;E;;;;;;;;2MASX J13422333+2950523,MCG +05-32-066,PGC 048536,SDSS J134223.31+295052.2,SDSS J134223.32+295052.1;;; -NGC5275;G;13:42:23.56;+29:49:29.6;CVn;0.88;0.67;79;15.40;;11.81;11.18;10.81;23.68;S0-a;;;;;;;;2MASX J13422356+2949293,MCG +05-32-067,PGC 048544,SDSS J134223.55+294929.5;;; -NGC5276;G;13:42:22.00;+35:37:26.9;CVn;0.86;0.60;156;14.60;;12.42;11.97;11.60;22.89;Sb;;;;;;;;2MASX J13422200+3537262,MCG +06-30-074,PGC 048542,SDSS J134222.00+353726.8,SDSS J134222.00+353726.9,UGC 08680;;; -NGC5277;G;13:42:38.38;+29:57:15.9;CVn;0.58;0.45;119;15.40;;13.18;12.67;12.30;22.91;Sbc;;;;;;;;2MASX J13423840+2957154,PGC 048563,SDSS J134238.38+295715.9;;; -NGC5278;G;13:41:39.62;+55:40:14.3;UMa;0.76;0.60;73;13.60;;11.25;10.64;10.27;21.72;Sb;;;;;;;;2MASX J13413961+5540146,IRAS 13397+5555,MCG +09-22-101,PGC 048473,SDSS J134139.61+554014.3,UGC 08677;;Multiple SDSS entries describe this object.; -NGC5279;G;13:41:43.75;+55:40:25.7;UMa;0.61;0.35;24;13.60;;12.35;11.70;11.41;21.98;SBa;;;;;;;;2MASX J13414375+5540256,MCG +09-22-102,PGC 048482,UGC 08678;;; -NGC5280;G;13:42:55.54;+29:52:07.0;CVn;0.84;0.81;100;15.10;;11.68;10.77;10.58;23.17;E;;;;;;;;2MASX J13425552+2952070,MCG +05-32-072,PGC 048580,SDSS J134255.53+295206.9;;; -NGC5281;OCl;13:46:35.15;-62:54:59.5;Cen;6.90;;;6.15;5.90;;;;;;;;;;;;;MWSC 2161;;; -NGC5282;G;13:43:24.88;+30:04:10.3;CVn;0.66;0.62;80;15.00;;11.71;10.99;10.69;22.93;E;;;;;;;;2MASX J13432486+3004104,MCG +05-32-075,PGC 048614,SDSS J134324.87+300410.2,SDSS J134324.88+300410.3,UGC 08687;;; -NGC5283;G;13:41:05.76;+67:40:20.3;Dra;1.19;1.03;132;14.97;14.05;10.97;10.29;9.97;23.41;S0;;;;;;;;2MASX J13410573+6740197,MCG +11-17-007,PGC 048425,UGC 08672;;; -NGC5284;*Ass;13:47:23.30;-59:08:57.8;Cen;8.40;;;;;;;;;;;;;;;;;MWSC 2162;;The ESO number applies to the nominal position.; -NGC5285;G;13:44:25.79;+02:06:35.7;Vir;0.77;0.64;61;15.50;;11.76;10.99;10.81;23.75;E;;;;;;;;2MASX J13442577+0206352,PGC 048688,SDSS J134425.79+020635.6,SDSS J134425.79+020635.7;;; -NGC5286;GCl;13:46:26.58;-51:22:24.5;Cen;6.60;;;9.18;8.31;;;;;;;;;;;;;C 084,MWSC 2160;;; -NGC5287;G;13:44:52.54;+29:46:15.3;CVn;0.68;0.45;116;16.00;;12.45;11.75;11.51;23.56;E;;;;;;;;2MASX J13445252+2946157,PGC 048741,SDSS J134452.54+294615.2,SDSS J134452.54+294615.3;;; -NGC5288;OCl;13:48:44.94;-64:41:07.4;Cir;3.60;;;;11.80;;;;;;;;;;;;;MWSC 2168;;; -NGC5289;G;13:45:08.71;+41:30:12.2;CVn;2.33;0.70;100;14.09;13.09;10.76;9.93;9.74;23.83;SABa;;;;;;;;2MASX J13450866+4130118,MCG +07-28-058,PGC 048749,SDSS J134508.71+413012.2,UGC 08699;;; -NGC5290;G;13:45:19.18;+41:42:45.3;CVn;3.24;0.90;95;17.80;16.50;9.51;8.76;8.44;23.63;Sbc;;;;;;;;2MASX J13451913+4142444,IRAS 13432+4157,MCG +07-28-061,PGC 048767,SDSS J134519.14+414244.7,SDSS J134519.18+414245.2,SDSS J134519.18+414245.3,UGC 08700;;; -NGC5291;G;13:47:24.48;-30:24:25.2;Cen;1.77;1.24;173;15.18;14.00;10.26;9.58;9.38;23.83;E-S0;;;;;;;;2MASX J13472445-3024250,ESO 445-030,ESO-LV 445-0300,MCG -05-33-006,PGC 048893;;; -NGC5292;G;13:47:40.07;-30:56:22.3;Cen;2.29;1.33;51;12.85;;9.62;8.98;8.69;22.98;Sab;;;;;;;;2MASX J13474008-3056225,ESO 445-031,ESO-LV 445-0310,MCG -05-33-008,PGC 048909;;; -NGC5293;G;13:46:52.68;+16:16:22.3;Boo;1.58;1.07;122;14.30;;11.43;10.92;10.66;23.16;Sc;;;;;;;;2MASX J13465265+1616220,MCG +03-35-024,PGC 048854,SDSS J134652.67+161622.2,UGC 08710;;; -NGC5294;G;13:45:18.13;+55:17:27.0;UMa;1.26;0.65;125;15.20;;13.41;12.70;12.74;23.81;I;;;;;;;;2MASX J13451806+5517256,PGC 048761,SDSS J134518.13+551726.9,SDSS J134518.13+551727.0;;; -NGC5295;G;13:38:39.39;+79:27:32.0;Cam;0.63;0.62;70;14.90;;11.67;10.98;10.67;22.54;E-S0;;;;;;;;2MASX J13383945+7927316,MCG +13-10-009,PGC 048215;;; -NGC5296;G;13:46:18.66;+43:51:04.9;CVn;0.95;0.55;11;15.00;;12.62;12.01;11.90;23.06;S0-a;;;;;;;;2MASX J13461868+4351046,MCG +07-28-062,PGC 048811,SDSS J134618.66+435104.8,SDSS J134618.66+435104.9;;; -NGC5297;G;13:46:23.67;+43:52:20.4;CVn;3.72;0.91;147;12.30;;9.84;9.18;8.89;22.87;Sc;;;;;;;;2MASX J13462369+4352193,IRAS 13442+4407,MCG +07-28-063,PGC 048815,SDSS J134623.67+435220.4,UGC 08709;;; -NGC5298;G;13:48:36.49;-30:25:42.7;Cen;1.86;0.87;69;13.83;13.09;10.43;9.73;9.45;23.54;SBb;;;;;;;;2MASX J13483648-3025427,ESO 445-039,ESO-LV 445-0390,MCG -05-33-015,PGC 048985;;; -NGC5299;OCl;13:50:26.26;-59:56:51.8;Cen;4.20;;;;;;;;;;;;;;;;;MWSC 2170;;; -NGC5300;G;13:48:16.04;+03:57:03.1;Vir;2.83;1.84;147;13.70;;10.40;9.71;9.50;23.77;SABc;;;;;;;;2MASX J13481608+0357032,IRAS 13457+0411,MCG +01-35-038,PGC 048959,SDSS J134816.03+035703.1,SDSS J134816.04+035703.1,SDSS J134816.08+035702.5,UGC 08727;;; -NGC5301;G;13:46:24.67;+46:06:25.4;CVn;3.96;0.84;150;13.00;;10.08;9.34;9.11;23.85;SBc;;;;;;;;2MASX J13462460+4606266,IRAS 13443+4621,MCG +08-25-041,PGC 048816,SDSS J134624.66+460625.4,SDSS J134624.67+460625.4,UGC 08711;;; -NGC5302;G;13:48:49.68;-30:30:40.0;Cen;1.05;0.59;162;13.23;12.20;9.80;9.11;8.85;22.21;S0-a;;;;;;;;2MASX J13484969-3030401,ESO 445-043,ESO-LV 445-0430,MCG -05-33-018,PGC 049007;;; -NGC5303;G;13:47:44.99;+38:18:16.7;CVn;0.86;0.44;90;12.90;;11.10;10.53;10.23;20.77;Sb;;;;;;;;2MASX J13474496+3818163,IRAS 13455+3833,MCG +07-28-067,PGC 048917,SDSS J134744.98+381816.6,SDSS J134744.99+381816.6,UGC 08725;;; -NGC5304;G;13:50:01.48;-30:34:42.5;Cen;1.91;1.39;140;13.59;13.56;10.44;9.74;9.51;23.75;E-S0;;;;;;;;2MASX J13500146-3034426,ESO 445-052,ESO-LV 445-0520,MCG -05-33-022,PGC 049090;;; -NGC5305;G;13:47:55.74;+37:49:34.8;CVn;1.46;1.02;26;14.70;;11.48;10.80;10.50;23.69;Sb;;;;;;;;2MASX J13475569+3749343,MCG +06-30-087,PGC 048930,SDSS J134755.74+374934.7,SDSS J134755.75+374934.8,UGC 08729;;; -NGC5306;G;13:49:11.40;-07:13:27.8;Vir;1.94;1.24;33;13.43;;9.91;9.26;8.96;23.25;S0;;;;;;;;2MASX J13491141-0713277,MCG -01-35-014,PGC 049039;;; -NGC5307;PN;13:51:03.30;-51:12:20.8;Cen;0.21;;;12.10;11.20;12.03;11.99;11.28;;;;14.67;14.66;;;;HD 120489;2MASX J13510332-5112207,ESO 221-011,IRAS 13478-5057,PN G312.3+10.5;;; -NGC5308;G;13:47:00.43;+60:58:23.4;UMa;4.33;0.57;60;12.50;;9.28;8.59;8.36;24.00;S0;;;;;;;;2MASX J13470039+6058229,MCG +10-20-029,PGC 048860,SDSS J134700.42+605823.4,SDSS J134700.43+605823.3,UGC 08722;;; -NGC5309;G;13:50:10.76;-15:37:06.3;Vir;0.63;0.56;125;15.71;;13.24;12.69;12.32;23.34;;;;;;;;;2MASX J13501075-1537063,PGC 908764;;Identification as NGC 5309 is very uncertain.; -NGC5310;*;13:49:47.74;+00:04:09.1;Vir;;;;14.07;;11.75;11.45;11.43;;;;;;;;;;2MASS J13494774+0004088,SDSS J134947.74+000409.0;;; -NGC5311;G;13:48:56.08;+39:59:06.4;CVn;2.01;1.66;102;14.35;13.30;10.17;9.47;9.25;23.60;S0-a;;;;;;;;2MASX J13485605+3959068,IRAS 13467+4014,MCG +07-28-072,PGC 049011,SDSS J134856.07+395906.6,SDSS J134856.07+395906.7,UGC 08735;;; -NGC5312;G;13:49:50.57;+33:37:18.3;CVn;1.09;0.57;39;14.80;;11.54;10.86;10.58;23.52;S0-a;;;;;;;;2MASX J13495059+3337179,MCG +06-30-092,PGC 049075,SDSS J134950.57+333718.3;;; -NGC5313;G;13:49:44.34;+39:59:05.2;CVn;1.81;1.05;42;12.40;;9.80;9.12;8.82;22.38;SABb;;;;;;;;2MASX J13494435+3959045,IRAS 13475+4013,MCG +07-28-074,PGC 049069,SDSS J134944.34+395905.2,UGC 08744;;; -NGC5314;G;13:46:11.40;+70:20:22.4;UMi;0.95;0.49;86;14.60;;11.36;10.65;10.36;23.01;Sa;;;;;;;;2MASX J13461136+7020225,IRAS 13450+7035,MCG +12-13-009,PGC 048810;;; -NGC5315;PN;13:53:56.89;-66:30:51.0;Cir;0.10;;;13.00;9.80;10.23;10.06;9.11;;;;14.58;14.40;;;;HD 120800;ESO 097-009,PN G309.1-04.3;;Incorrectly identified as IC 5315 in PKSCAT90 (version 1.01).; -NGC5316;OCl;13:53:57.22;-61:52:08.8;Cen;9.90;;;6.08;6.00;;;;;;;;;;;;;MWSC 2175;;; -NGC5317;Dup;13:56:12.00;+05:00:52.1;Vir;;;;;;;;;;;;;;;5364;;;;;; -NGC5318;G;13:50:36.01;+33:42:17.6;CVn;1.51;1.12;165;13.50;;10.46;9.78;9.49;23.21;S0;;;;;;;;PGC 049139;;; -NGC5319;G;13:50:40.66;+33:45:41.6;CVn;0.65;0.27;68;16.50;;14.16;13.70;12.99;23.70;Sbc;;;;;;;;2MASX J13504067+3345414,PGC 084061,SDSS J135040.65+334541.5,SDSS J135040.66+334541.6;;; -NGC5320;G;13:50:20.38;+41:21:58.4;CVn;1.82;0.92;17;13.10;;10.63;9.99;9.73;22.83;SABc;;;;;;;;2MASX J13502037+4121588,IRAS 13482+4136,MCG +07-28-076,PGC 049112,SDSS J135020.37+412158.3,SDSS J135020.38+412158.4,UGC 08749;;; -NGC5321;G;13:50:43.69;+33:37:57.4;CVn;0.89;0.63;49;15.30;;11.75;11.13;10.84;23.32;S0-a;;;;;;;;2MASX J13504364+3337574,MCG +06-30-101,PGC 049148,SDSS J135043.69+333757.3,SDSS J135043.70+333757.4;;; -NGC5322;G;13:49:15.27;+60:11:25.9;UMa;5.62;3.49;95;11.30;;11.08;10.41;9.92;23.64;E;;;;;;;;2MASX J13491520+6011254,MCG +10-20-035,PGC 049044,UGC 08745;;; -NGC5323;G;13:45:36.52;+76:49:42.0;UMi;1.05;0.44;164;14.30;;11.96;11.39;11.11;22.78;Sab;;;;;;;;2MASX J13453654+7649421,IRAS 13451+7704,MCG +13-10-012,PGC 048785,UGC 08719;;; -NGC5324;G;13:52:05.89;-06:03:29.9;Vir;2.22;1.09;15;12.50;;10.33;9.75;9.38;22.51;Sc;;;;;;;;2MASX J13520588-0603299,IRAS 13494-0548,MCG -01-35-016,PGC 049236;;; -NGC5325;G;13:50:54.21;+38:16:29.2;CVn;0.86;0.62;108;15.10;;13.03;12.24;12.31;23.29;Sc;;;;;;;;2MASX J13505425+3816279,MCG +07-28-080,PGC 049163,SDSS J135054.21+381629.2;;VV 607 incorrectly identified as MCG +06-30-103 in 1977A&AS...28....1V .; -NGC5326;G;13:50:50.70;+39:34:29.5;CVn;2.18;1.03;136;12.90;;9.80;9.12;8.88;23.00;Sa;;;;;;;;2MASX J13505071+3934296,MCG +07-28-082,PGC 049157,SDSS J135050.70+393429.4,UGC 08764;;; -NGC5327;G;13:52:04.17;-02:12:23.8;Vir;1.61;0.95;93;13.60;;11.00;10.29;9.90;23.17;Sb;;;;;;;;2MASX J13520418-0212233,IRAS 13494-0157,MCG +00-35-021,PGC 049234,SDSS J135204.17-021223.7,SDSS J135204.17-021223.8,SDSS J135204.18-021223.8,UGC 08768;;; -NGC5328;G;13:52:53.31;-28:29:21.8;Hya;3.07;1.71;78;12.74;;9.48;8.76;8.49;23.98;E;;;;;;;;2MASX J13525331-2829213,ESO 445-067,ESO-LV 445-0670,MCG -05-33-028,PGC 049307;;; -NGC5329;G;13:52:10.09;+02:19:30.4;Vir;1.48;0.71;170;13.37;12.43;10.57;9.91;9.68;23.09;E;;;;;;;;2MASX J13521008+0219305,MCG +01-35-044,PGC 049248,SDSS J135210.09+021930.4,UGC 08771;;; -NGC5330;G;13:52:59.19;-28:28:14.4;Hya;1.14;0.93;165;14.86;;11.42;10.76;10.50;23.66;E;;;;;;;;2MASX J13525917-2828141,ESO 445-068,ESO-LV 445-0680,MCG -05-33-028a,PGC 049316;;; -NGC5331;GPair;13:52:16.30;+02:06:10.9;Vir;1.10;;;;;;;;;;;;;;;;;MCG +00-35-022,UGC 08774;;;Diameter of the group inferred by the author. -NGC5331 NED01;G;13:52:16.15;+02:06:03.3;Vir;1.07;0.58;132;15.99;;;;;25.02;SABb;;;;;5331S;;;IRAS13496+0221,MCG +00-35-022 NED01,PGC049264,SDSSJ135215.66+020608.9,SDSSJ135215.66+020608.8,SDSSJ135215.63+020609.8,UGC 08774 NED01;;Component 'a)' in UGC notes.;B-Mag taken from LEDA -NGC5331 NED02;G;13:52:16.42;+02:06:31.1;Vir;0.56;0.29;50;14.30;;12.07;11.38;10.96;22.59;Sb;;;;;5331N;;;2MASX J13521641+0206305,MCG +00-35-022 NED02,PGC 049266,UGC 08774 NED02;;Component 'b)' in UGC notes.; -NGC5332;G;13:52:07.92;+16:58:11.1;Boo;1.06;0.77;55;14.10;;10.77;10.07;9.84;22.81;E-S0;;;;;;;;2MASX J13520794+1658115,MCG +03-35-030,PGC 049243,SDSS J135207.92+165811.0,UGC 08773;;; -NGC5333;G;13:54:24.22;-48:30:45.1;Cen;2.18;1.09;51;12.82;;9.34;8.62;8.37;23.21;S0;;;;;;;;2MASX J13542423-4830454,ESO 221-017,ESO-LV 221-0170,PGC 049424;;; -NGC5334;G;13:52:54.46;-01:06:52.7;Vir;3.38;2.44;17;12.00;;10.82;10.16;9.94;24.15;Sc;;;;;;4338;;2MASX J13525447-0106531,IRAS 13502-0051,MCG +00-35-024,PGC 049308,SDSS J135254.45-010652.6,SDSS J135254.46-010652.6,SDSS J135254.46-010652.7,SDSS J135254.50-010653.3,UGC 08790;;; -NGC5335;G;13:52:56.56;+02:48:51.4;Vir;1.45;1.32;155;14.50;;10.96;10.26;10.09;23.82;Sb;;;;;;;;2MASX J13525653+0248516,MCG +01-35-046,PGC 049310,SDSS J135256.54+024902.3,SDSS J135256.55+024851.3,SDSS J135256.55+024851.4,UGC 08791;;; -NGC5336;G;13:52:09.80;+43:14:34.5;CVn;1.22;0.92;101;13.60;;11.67;11.07;10.81;22.76;SABc;;;;;;;;2MASX J13520974+4314340,IRAS 13500+4329,MCG +07-29-003,PGC 049250,SDSS J135209.79+431434.4,SDSS J135209.80+431434.4,SDSS J135209.80+431434.5,UGC 08785;;; -NGC5337;G;13:52:23.03;+39:41:14.1;CVn;1.66;0.80;22;13.40;;10.82;10.15;9.97;22.88;SBab;;;;;;;;2MASX J13522304+3941140,MCG +07-29-004,PGC 049275,UGC 08789;;; -NGC5338;G;13:53:26.55;+05:12:28.0;Vir;1.94;0.85;98;14.30;;11.22;10.58;10.38;24.16;S0;;;;;;;;2MASX J13532652+0512280,MCG +01-35-048,PGC 049353,SDSS J135326.54+051227.9,SDSS J135326.55+051227.9,SDSS J135326.55+051228.0,SDSS J135326.56+051228.0,UGC 08800;;; -NGC5339;G;13:54:00.27;-07:55:50.4;Vir;1.82;1.50;85;16.50;;10.57;9.95;9.70;22.77;Sa;;;;;;;;2MASX J13540027-0755502,MCG -01-35-018,PGC 049388;;; -NGC5340;G;13:48:59.91;+72:39:13.8;UMi;0.84;0.64;85;15.20;;11.44;10.72;10.38;;E;;;;;;;;2MASX J13485986+7239140,MCG +12-13-014,PGC 049021;;MCG declination is -10 arcmin in error.;Diameters and position angle taken from Simbad. -NGC5341;G;13:52:31.96;+37:49:02.7;CVn;1.07;0.58;159;14.10;;11.89;11.42;11.23;22.63;SBm;;;;;;;;2MASX J13523191+3749028,IRAS 13503+3803,MCG +06-31-002,PGC 049285,SDSS J135231.95+374902.7,SDSS J135231.96+374902.7,UGC 08792;;; -NGC5342;G;13:51:25.85;+59:51:50.2;UMa;0.92;0.30;154;14.40;;11.08;10.41;10.15;22.75;S0;;;;;;;;2MASX J13512589+5951468,MCG +10-20-041,PGC 049192,SDSS J135125.84+595150.2,UGC 08776;;; -NGC5343;G;13:54:11.71;-07:35:17.3;Vir;1.23;0.93;78;14.00;;10.20;9.51;9.27;23.44;E-S0;;;;;;;;2MASX J13541170-0735172,MCG -01-35-019,PGC 049412;;; -NGC5344;GPair;13:49:58.03;+73:57:10.4;UMi;0.54;0.47;100;15.40;;11.95;11.21;11.12;;E;;;;;;;;2MASX J13501205+7357108,PGC 049085;;; -NGC5345;G;13:54:14.25;-01:26:11.3;Vir;1.50;0.91;157;13.80;;10.53;9.72;9.52;23.15;Sa;;;;;;;;2MASX J13541422-0126111,IRAS 13516-0111,MCG +00-35-026,PGC 049415,SDSS J135414.24-012611.3,SDSS J135414.25-012611.3,UGC 08820;;; -NGC5346;G;13:53:01.89;+39:34:50.8;CVn;1.56;0.64;160;14.90;;12.39;11.54;11.18;23.71;SABc;;;;;;;;2MASX J13530191+3934498,MCG +07-29-007,PGC 049322,SDSS J135301.88+393450.8,SDSS J135301.89+393450.8,UGC 08804;;; -NGC5347;G;13:53:17.83;+33:29:27.0;CVn;1.62;1.19;122;13.46;12.70;10.62;9.98;9.65;23.03;Sab;;;;;;;;2MASX J13531785+3329267,IRAS 13510+3344,MCG +06-31-007,PGC 049342,SDSS J135317.78+332927.0,SDSS J135317.79+332927.0,UGC 08805;;Large position error in 1991ApJS...76.1043P.; -NGC5348;G;13:54:11.27;+05:13:38.8;Vir;3.88;0.73;175;14.50;;11.50;10.77;10.87;24.75;SBbc;;;;;;;;2MASX J13541125+0513379,MCG +01-35-051,PGC 049411,SDSS J135411.26+051338.7,UGC 08821;;; -NGC5349;G;13:53:13.13;+37:52:59.3;CVn;1.60;0.48;81;15.10;;11.71;10.98;10.63;23.88;SBb;;;;;;;;2MASX J13531316+3752592,IRAS 13510+3807,MCG +06-31-005,PGC 049336,SDSS J135313.12+375259.3,UGC 08803;;; -NGC5350;G;13:53:21.63;+40:21:50.2;CVn;2.69;1.66;35;12.40;;9.24;8.87;8.62;22.80;Sbc;;;;;;;;2MASX J13532158+4021502,IRAS 13512+4036,MCG +07-29-009,PGC 049347,SDSS J135321.62+402150.1,SDSS J135321.63+402150.2,UGC 08810;;; -NGC5351;G;13:53:27.71;+37:54:53.9;CVn;2.43;1.31;101;13.10;;10.40;9.71;9.45;23.30;SBb;;;;;;;;2MASX J13532769+3754542,IRAS 13513+3809,MCG +06-31-008,PGC 049359,SDSS J135327.71+375453.9,UGC 08809;;; -NGC5352;G;13:53:38.43;+36:08:02.6;CVn;1.42;1.24;92;14.40;;10.83;10.07;9.80;23.57;E-S0;;;;;;;;2MASX J13533847+3608031,MCG +06-31-011,PGC 049370,SDSS J135338.42+360802.5,SDSS J135338.43+360802.5,SDSS J135338.43+360802.6,UGC 08812;;; -NGC5353;G;13:53:26.69;+40:16:58.9;CVn;2.37;1.18;152;11.80;;8.52;7.73;7.63;22.57;S0;;;;;;;;2MASX J13532674+4016592,MCG +07-29-010,PGC 049356,SDSS J135326.72+401659.4,UGC 08813;;; -NGC5354;G;13:53:26.70;+40:18:09.9;CVn;3.03;1.15;174;12.30;;;;;23.42;S0;;;;;;;;MCG +07-29-011,PGC 049354,UGC 08814;;; -NGC5355;G;13:53:45.56;+40:20:19.2;CVn;1.15;0.72;30;14.00;;11.38;10.70;10.45;23.06;S0;;;;;;;;2MASX J13534556+4020196,MCG +07-29-012,PGC 049380,SDSS J135345.56+402019.2,UGC 08819;;; -NGC5356;G;13:54:58.46;+05:20:01.4;Vir;2.83;0.67;16;14.10;;10.66;9.97;9.64;23.60;Sbc;;;;;;;;2MASX J13545842+0520009,IRAS 13524+0534,MCG +01-35-052,PGC 049468,SDSS J135458.45+052001.4,SDSS J135458.46+052001.4,UGC 08831;;; -NGC5357;G;13:55:59.55;-30:20:29.2;Cen;2.18;1.87;24;13.09;13.51;9.94;9.21;8.93;23.54;E;;;;;;;;2MASX J13555954-3020291,ESO 445-078,ESO-LV 445-0780,MCG -05-33-032,PGC 049534;;; -NGC5358;G;13:54:00.41;+40:16:38.3;CVn;1.12;0.38;138;14.60;;11.66;10.96;10.90;23.40;S0-a;;;;;;;;2MASX J13540043+4016387,MCG +07-29-013,PGC 049389,SDSS J135400.41+401638.3,UGC 08826;;; -NGC5359;OCl;14:00:09.57;-70:23:32.3;Cir;5.40;;;;;;;;;;;;;;;;;MWSC 2194;;; -NGC5360;G;13:55:38.75;+04:59:06.2;Vir;1.10;0.62;63;14.90;;11.78;11.06;11.15;23.76;S0-a;;;;;;0958;;2MASX J13553867+0459050,MCG +01-36-001,PGC 049513,SDSS J135538.75+045906.2;;Identification as IC 0958 is not certain.; -NGC5361;G;13:54:35.23;+38:26:57.9;CVn;0.76;0.42;64;14.70;;12.26;11.55;11.24;23.00;S0-a;;;;;;;;2MASX J13543519+3826582,IRAS 13524+3841,MCG +07-29-015,PGC 049441,SDSS J135435.22+382657.8;;; -NGC5362;G;13:54:53.30;+41:18:48.7;CVn;1.89;0.78;87;13.20;;10.88;10.24;9.98;22.85;Sb;;;;;;;;2MASX J13545329+4118487,IRAS 13527+4133,MCG +07-29-016,PGC 049464,SDSS J135453.31+411848.6,UGC 08835;;; -NGC5363;G;13:56:07.21;+05:15:17.2;Vir;4.17;2.75;133;12.12;10.51;7.83;7.16;6.93;22.82;S0-a;;;;;;;;2MASX J13560724+0515169,IRAS 13536+0529,MCG +01-36-002,PGC 049547,UGC 08847;;; -NGC5364;G;13:56:12.00;+05:00:52.1;Vir;3.80;1.66;45;13.20;;8.67;8.08;7.80;22.19;Sbc;;;;;5317;;;2MASX J13561200+0500520,IRAS 13536+0515,MCG +01-36-003,PGC 049555,UGC 08853;;NGC 5348 may also contribute to the HIPASS detection.; -NGC5365;G;13:57:50.64;-43:55:52.7;Cen;3.88;2.14;174;12.20;11.14;8.83;8.18;7.92;24.03;S0;;;;;;;;2MASX J13575063-4355528,ESO 271-008,ESO-LV 271-0080,MCG -07-29-002,PGC 049673;;; -NGC5365A;G;13:56:39.53;-44:00:33.3;Cen;2.84;0.68;94;13.60;13.52;9.89;9.12;8.84;23.61;SBb;;;;;;;;2MASX J13563952-4400331,ESO 271-006,ESO-LV 271-0060,IRAS 13535-4345,MCG -07-29-001,PGC 049586;;; -NGC5365B;G;13:58:39.57;-43:57:49.4;Cen;1.79;0.42;51;14.14;;10.90;10.16;9.88;23.37;Sab;;;;;;;;2MASX J13583954-4357492,ESO 271-009,ESO-LV 271-0090,IRAS 13555-4343,MCG -07-29-003,PGC 049750;;; -NGC5366;G;13:56:24.86;-00:14:51.2;Vir;0.80;0.57;43;14.70;;12.18;11.39;10.73;22.78;S0-a;;;;;;;;2MASX J13562484-0014514,IRAS 13538-0000,MCG +00-36-002,PGC 049569;;; -NGC5367;RfN;13:57:43.87;-39:58:42.3;Cen;2.00;2.00;;;;;;;;;;;;;;4347;;IRAS 13547-3944;;Includes at least two Galactic stars.;Dimensions taken from LEDA -NGC5368;G;13:54:29.16;+54:19:50.4;UMa;0.99;0.75;19;13.80;;11.14;10.46;10.20;22.60;Sab;;;;;;;;2MASX J13542914+5419507,IRAS 13526+5434,MCG +09-23-014,PGC 049431,SDSS J135429.14+541950.6,SDSS J135429.15+541950.3,SDSS J135429.16+541950.3,SDSS J135429.16+541950.4,UGC 08834;;; -NGC5369;G;13:56:37.62;-05:28:11.6;Vir;1.08;0.87;110;14.49;;11.03;10.33;10.12;23.48;E;;;;;;;;2MASX J13563762-0528114,PGC 049583;;; -NGC5370;G;13:54:09.37;+60:40:41.0;UMa;1.37;1.29;65;14.30;;11.03;10.39;10.03;23.49;S0;;;;;;;;2MASX J13540935+6040406,MCG +10-20-044,PGC 049408,SDSS J135409.36+604040.9,SDSS J135409.37+604041.0,SDSS J135409.37+604041.2,UGC 08832;;; -NGC5371;G;13:55:39.94;+40:27:42.3;CVn;3.98;2.45;7;12.81;11.93;8.56;7.89;7.61;22.64;Sbc;;;;;5390;;;2MASX J13554002+4027423,IRAS 13535+4042,MCG +07-29-020,PGC 049514,SDSS J135539.94+402742.3,UGC 08846;;Identification as NGC 5390 is not certain.; -NGC5372;G;13:54:45.99;+58:40:00.7;UMa;0.69;0.37;137;13.70;;11.51;10.90;10.65;21.52;E?;;;;;;;;2MASX J13544600+5839590,IRAS 13530+5854,MCG +10-20-046,PGC 049451,SDSS J135445.99+584000.7,UGC 08843;;; -NGC5373;G;13:57:07.46;+05:15:06.8;Vir;0.60;0.52;45;15.30;;12.27;11.73;11.31;23.08;E-S0;;;;;;;;2MASX J13570745+0515068,PGC 049620,SDSS J135707.45+051506.7,SDSS J135707.46+051506.7,SDSS J135707.46+051506.8;;; -NGC5374;G;13:57:29.63;+06:05:49.2;Vir;1.62;1.32;45;13.70;;10.54;9.93;9.70;23.34;SBbc;;;;;;;;2MASX J13572962+0605487,IRAS 13549+0620,MCG +01-36-004,PGC 049650,SDSS J135729.62+060549.1,SDSS J135729.63+060549.1,SDSS J135729.63+060549.2,UGC 08874;;; -NGC5375;G;13:56:56.00;+29:09:51.7;CVn;2.34;1.73;179;12.78;12.08;10.19;9.39;9.24;23.20;SBab;;;;;5396;;;2MASX J13565598+2909514,MCG +05-33-027,PGC 049604,SDSS J135655.99+290951.7,SDSS J135656.00+290951.7,UGC 08865;;; -NGC5376;G;13:55:16.07;+59:30:23.8;UMa;1.48;0.92;66;12.90;;10.03;9.35;9.10;22.26;SABa;;;;;;;;2MASX J13551606+5930241,IRAS 13536+5945,MCG +10-20-047,PGC 049489,SDSS J135516.05+593023.7,SDSS J135516.06+593023.8,SDSS J135516.07+593023.8,UGC 08852;;; -NGC5377;G;13:56:16.67;+47:14:08.5;CVn;3.64;1.42;34;12.39;11.46;9.26;8.61;8.36;23.29;Sa;;;;;;;;2MASX J13561666+4714080,IRAS 13542+4729,MCG +08-25-052,PGC 049563,SDSS J135616.66+471408.5,SDSS J135616.67+471408.5,UGC 08863;;; -NGC5378;G;13:56:51.02;+37:47:50.1;CVn;2.03;1.57;73;13.80;;10.75;10.07;9.83;23.74;Sa;;;;;;;;2MASX J13565101+3747494,MCG +06-31-027,PGC 049598,SDSS J135651.01+374750.0,SDSS J135651.02+374750.1,UGC 08869;;; -NGC5379;G;13:55:34.32;+59:44:34.1;UMa;2.06;0.72;60;14.10;;11.25;10.56;10.31;24.29;S0;;;;;;;;2MASX J13553434+5944341,MCG +10-20-049,PGC 049508,SDSS J135534.32+594434.0,SDSS J135534.32+594434.1,UGC 08860;;; -NGC5380;G;13:56:56.69;+37:36:37.4;CVn;2.00;0.99;95;13.50;;10.30;9.61;9.35;23.49;E-S0;;;;;;;;2MASX J13565666+3736374,MCG +06-31-028,PGC 049605,SDSS J135656.68+373637.3,UGC 08870;;; -NGC5381;OCl;14:00:41.96;-59:35:12.5;Cen;6.30;;;;;;;;;;;;;;;;;MWSC 2196;;; -NGC5382;G;13:58:14.89;+06:15:31.3;Vir;1.45;1.08;24;14.00;;10.58;9.86;9.70;23.05;S0;;;;;;;;2MASX J13581486+0615318,MCG +01-36-007,PGC 049711,SDSS J135814.89+061531.2,UGC 08885;;; -NGC5383;G;13:57:04.97;+41:50:46.5;CVn;2.48;1.88;98;12.50;;9.52;8.84;8.54;22.73;Sb;;;;;;;;2MASX J13570498+4150456,IRAS 13550+4205,MCG +07-29-023,PGC 049618,SDSS J135704.97+415046.5,UGC 08875;;; -NGC5384;G;13:58:12.86;+06:31:05.5;Vir;1.80;0.74;56;14.00;;10.79;10.12;9.88;24.03;S0;;;;;;;;2MASX J13581285+0631048,MCG +01-36-008,PGC 049707,SDSS J135812.85+063105.4,SDSS J135812.86+063105.5,UGC 08886;;; -NGC5385;OCl;13:52:31.92;+76:09:46.0;UMi;;;;;;;;;;;;;;;;;;;;; -NGC5386;G;13:58:22.34;+06:20:20.8;Vir;0.98;0.45;47;13.70;;11.45;10.74;10.48;22.14;S0-a;;;;;;;;2MASX J13582234+0620213,IRAS 13558+0634,MCG +01-36-010,PGC 049719,SDSS J135822.33+062020.7,UGC 08890;;; -NGC5387;G;13:58:24.79;+06:04:16.6;Vir;1.17;0.37;24;14.80;;11.81;11.08;10.71;23.07;SBbc;;;;;;;;2MASX J13582480+0604166,IRAS 13559+0618,MCG +01-36-011,PGC 049724,SDSS J135824.78+060416.5,SDSS J135824.79+060416.5,UGC 08891;;; -NGC5388;Other;13:58:57.97;-14:09:03.2;Vir;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC5389;G;13:56:06.33;+59:44:31.4;UMa;3.27;0.71;4;13.20;;9.61;8.88;8.62;23.99;S0-a;;;;;;;;2MASX J13560636+5944311,IRAS 13544+5959,MCG +10-20-051,PGC 049548,SDSS J135606.32+594431.3,UGC 08866;;; -NGC5390;Dup;13:55:39.94;+40:27:42.3;CVn;;;;;;;;;;;;;;;5371;;;;;; -NGC5391;Other;13:57:37.53;+46:19:31.0;CVn;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC5392;G;13:59:24.77;-03:12:33.1;Vir;0.95;0.74;145;15.10;;11.14;10.43;10.12;23.12;S0-a;;;;;;;;2MASX J13592475-0312330,MCG +00-36-005,PGC 049792,SDSS J135924.77-031233.1;;; -NGC5393;G;14:00:32.04;-28:52:28.5;Hya;0.95;0.62;5;14.00;;10.88;10.17;9.90;22.58;SBa;;;;;;;;2MASX J14003201-2852283,ESO 445-087,ESO-LV 445-0870,IRAS 13576-2838,MCG -05-33-035,PGC 049863;;; -NGC5394;G;13:58:33.65;+37:27:12.5;CVn;2.63;1.07;60;13.70;13.12;11.14;10.39;10.07;23.78;SBb;;;;;;;;2MASX J13583365+3727124,MCG +06-31-033,PGC 049739,SDSS J135833.63+372712.7,SDSS J135834.11+372709.9,UGC 08898;;Multiple SDSS entries describe this object.; -NGC5395;G;13:58:37.98;+37:25:28.1;CVn;2.49;1.16;171;13.26;12.48;9.55;8.99;8.57;22.45;SABb;;;;;;;;2MASX J13583793+3725284,MCG +06-31-034,PGC 049747,SDSS J135837.97+372528.1,SDSS J135837.98+372528.1,UGC 08900;;The Bologna position is 9 arcsec west of the nucleus.; -NGC5396;Dup;13:56:56.00;+29:09:51.7;CVn;;;;;;;;;;;;;;;5375;;;;;; -NGC5397;G;14:01:10.46;-33:56:45.0;Cen;1.62;1.01;65;13.79;;10.26;9.44;9.27;23.66;E-S0;;;;;;;;2MASX J14011044-3356451,ESO 384-031,ESO-LV 384-0310,MCG -06-31-013,PGC 049908;;; -NGC5398;G;14:01:21.56;-33:03:49.6;Cen;2.76;1.65;174;12.87;12.39;11.10;10.87;10.34;24.57;Sd;;;;;;;;2MASX J14012155-3303496,ESO 384-032,ESO-LV 384-0320,IRAS 13584-3249,MCG -05-33-037,PGC 049923,UGCA 379;;; -NGC5399;G;13:59:31.42;+34:46:24.9;CVn;1.14;0.32;87;14.70;;11.09;10.34;10.01;22.53;Sbc;;;;;;;;2MASX J13593143+3446244,IRAS 13573+3500,MCG +06-31-039,PGC 049799,SDSS J135931.41+344624.8,SDSS J135931.42+344624.9,UGC 08912;;; -NGC5400;G;14:00:37.20;-02:51:28.1;Vir;1.40;1.25;104;14.50;;10.63;9.97;9.64;23.76;E-S0;;;;;;;;2MASX J14003719-0251281,MCG +00-36-008,PGC 049869,SDSS J140037.20-025128.1,SDSS J140037.21-025128.2;;; -NGC5401;G;13:59:43.43;+36:14:17.2;CVn;1.46;0.31;81;14.60;;11.18;10.54;10.31;23.34;SABa;;;;;;;;2MASX J13594345+3614176,MCG +06-31-040,PGC 049810,SDSS J135943.42+361417.2,SDSS J135943.43+361417.2,UGC 08916;;; -NGC5402;G;13:58:16.55;+59:48:52.4;UMa;1.13;0.28;166;14.60;;11.90;11.23;10.92;22.44;SBc;;;;;;;;2MASX J13581654+5948524,IRAS 13566+6003,MCG +10-20-054,PGC 049712,UGC 08903;;; -NGC5403;G;13:59:50.92;+38:10:57.1;CVn;2.75;0.89;143;14.90;;11.20;10.67;10.29;24.63;SBb;;;;;;;;IRAS 13577+3825,MCG +06-31-041,PGC 049820,SDSS J135950.75+381056.2,SDSS J135950.76+381056.2,UGC 08919;;The SDSS position refers to the bulge southwest of the dust lane.; -NGC5404;**;14:01:07.48;+00:05:09.2;Vir;;;;;;;;;;;;;;;;;;;;; -NGC5405;G;14:01:09.47;+07:42:08.2;Boo;0.83;0.76;145;14.50;;12.75;12.08;12.03;22.91;Sc;;;;;;;;2MASX J14010944+0742086,MCG +01-36-014,PGC 049906,SDSS J140109.47+074208.1,UGC 08928;;; -NGC5406;G;14:00:20.12;+38:54:55.5;CVn;1.69;1.22;115;13.10;;10.32;9.61;9.35;22.75;Sbc;;;;;;;;2MASX J14002009+3854553,IRAS 13582+3909,MCG +07-29-031,PGC 049847,SDSS J140020.11+385455.5,SDSS J140020.12+385455.5,UGC 08925;;; -NGC5407;G;14:00:50.10;+39:09:22.4;CVn;1.37;0.89;97;14.50;;11.27;10.58;10.34;23.84;E;;;;;;;;2MASX J14005010+3909220,MCG +07-29-033,PGC 049890,SDSS J140050.07+390922.4,SDSS J140050.09+390922.4,UGC 08930;;; -NGC5408;G;14:03:20.91;-41:22:39.7;Cen;2.84;1.53;66;12.59;;11.44;10.89;11.39;22.66;IB;;;;;;;;2MASX J14032090-4122397,ESO 325-046,ESO 325-047,ESO-LV 325-0470,IRAS 14002-4108,MCG -07-29-006,PGC 050073;;; -NGC5409;G;14:01:46.08;+09:29:25.0;Boo;1.56;1.00;51;14.40;;11.62;10.98;10.42;23.51;SABb;;;;;;;;2MASX J14014606+0929248,MCG +02-36-009,PGC 049952,SDSS J140146.08+092925.0,UGC 08938;;; -NGC5410;G;14:00:54.61;+40:59:19.0;CVn;1.15;0.65;63;14.10;;12.13;11.41;11.07;22.88;Sc;;;;;;;;2MASX J14005456+4059181,IRAS 13588+4113,MCG +07-29-034,PGC 049893,SDSS J140054.61+405918.9,SDSS J140054.61+405919.0,UGC 08931;;; -NGC5411;G;14:01:59.26;+08:56:15.7;Boo;1.51;0.79;138;14.60;;11.17;10.44;10.15;23.99;E-S0;;;;;;;;2MASX J14015923+0856158,MCG +02-36-011,PGC 049967,SDSS J140159.25+085615.6,SDSS J140159.25+085615.7,SDSS J140159.26+085615.7,UGC 08940;;; -NGC5412;G;13:57:13.53;+73:37:00.2;UMi;1.17;0.95;22;14.70;;11.32;10.66;10.41;23.86;E-S0;;;;;;;;2MASX J13571358+7336599,PGC 049644,UGC 08905;;; -NGC5413;G;13:57:53.53;+64:54:39.5;Dra;1.29;1.00;27;14.40;;10.90;10.23;9.98;23.73;E;;;;;;;;2MASX J13575347+6454394,MCG +11-17-012,PGC 049677,SDSS J135753.53+645439.5,SDSS J135753.53+645439.7,SDSS J135753.54+645439.5,UGC 08901;;; -NGC5414;G;14:02:03.52;+09:55:45.5;Boo;0.97;0.66;165;13.80;;11.97;11.37;11.20;22.57;E?;;;;;;;;2MASX J14020351+0955458,IRAS 13595+1010,MCG +02-36-013,PGC 049976,SDSS J140203.52+095545.5,SDSS J140203.52+095545.6,UGC 08942;;; -NGC5415;G;13:56:56.92;+70:45:15.8;UMi;0.87;0.63;126;15.00;;11.84;11.19;10.81;23.64;E;;;;;;;;2MASX J13565696+7045156,PGC 049610;;; -NGC5416;G;14:02:11.32;+09:26:24.4;Boo;1.29;0.73;105;13.60;;10.97;10.46;10.29;22.79;Sc;;;;;;;;2MASX J14021133+0926237,IRAS 13597+0940,MCG +02-36-014,PGC 049991,SDSS J140211.31+092624.3,SDSS J140211.31+092624.4,SDSS J140211.32+092624.4,UGC 08944;;; -NGC5417;G;14:02:13.04;+08:02:13.6;Boo;1.67;0.84;118;13.80;;10.30;9.63;9.37;23.13;Sa;;;;;;;;2MASX J14021302+0802127,MCG +01-36-015,PGC 049995,SDSS J140213.03+080213.5,UGC 08943;;; -NGC5418;G;14:02:17.59;+07:41:03.0;Boo;0.95;0.41;45;14.40;;11.21;10.41;10.26;22.49;SBb;;;;;;;;2MASX J14021756+0741027,IRAS 13597+0755,MCG +01-36-016,PGC 049997,SDSS J140217.58+074102.9,SDSS J140217.59+074103.0,UGC 08946;;; -NGC5419;G;14:03:38.73;-33:58:41.7;Cen;3.98;2.95;78;11.77;11.33;8.48;7.83;7.52;23.76;E;;;;;;;;2MASX J14033877-3358422,ESO 384-039,ESO-LV 384-0390,MCG -06-31-019,PGC 050100;;; -NGC5420;G;14:03:59.90;-14:37:00.7;Vir;1.90;0.70;135;13.00;;10.96;10.26;9.96;23.32;Sb;;;;;;;;2MASX J14035990-1437007,IRAS 14012-1422,MCG -02-36-006,PGC 050121;;; -NGC5421;GPair;14:01:41.88;+33:49:25.6;CVn;1.30;;;14.30;14.30;;;;;;;;;;;;;MCG +06-31-045,UGC 08941;;Holmberg 568 also includes a Galactic star.;Diameter of the group inferred by the author. -NGC5421 NED01;G;14:01:41.39;+33:49:36.6;CVn;1.17;0.68;156;14.02;;11.13;10.54;10.24;23.19;Sc;;;;;;;;2MASX J14014138+3349363,IRAS 13594+3404,MCG +06-31-045 NED01,PGC 049950,SDSS J140141.38+334936.5,SDSS J140141.39+334936.5,SDSS J140141.39+334936.6,UGC 08941 NED01;;HOLM 568C is a star.;B-Mag taken from LEDA -NGC5421 NED02;G;14:01:42.11;+33:49:17.4;CVn;1.00;0.55;168;15.00;;;;;23.88;S0;;;;;;;;MCG +06-31-045 NED02,PGC 049949,SDSS J140142.10+334917.4,UGC 08941 NED02;;Component 'b)' in UGC notes.; -NGC5422;G;14:00:42.04;+55:09:52.1;UMa;2.81;0.59;153;13.10;;9.64;8.93;8.76;23.67;S0-a;;;;;;;;2MASX J14004206+5509521,MCG +09-23-024,PGC 049874,SDSS J140042.02+550951.9,UGC 08935;;HOLM 567B is a star.; -NGC5423;G;14:02:48.62;+09:20:29.0;Boo;1.53;0.90;75;13.90;;10.63;9.96;9.72;23.46;E-S0;;;;;;;;2MASX J14024862+0920293,MCG +02-36-017,PGC 050028,SDSS J140248.62+092028.9,SDSS J140248.63+092029.0,UGC 08952;;; -NGC5424;G;14:02:55.70;+09:25:14.4;Boo;1.46;1.18;108;14.30;;10.81;10.18;9.89;23.65;S0;;;;;;;;2MASX J14025571+0925143,MCG +02-36-019,PGC 050035,SDSS J140255.70+092514.4,UGC 08956;;"Often incorrectly called ""NGC 5724"" in the literature."; -NGC5425;G;14:00:47.67;+48:26:37.9;UMa;1.58;0.44;127;14.30;;11.56;11.07;10.97;22.94;Sc;;;;;;;;2MASX J14004767+4826378,MCG +08-26-001,PGC 049889,UGC 08933;;; -NGC5426;G;14:03:24.85;-06:04:08.8;Vir;3.06;1.21;1;12.60;;10.34;9.69;9.50;23.12;Sc;;;;;;;;2MASX J14032485-0604087,MCG -01-36-004,PGC 050083,UGCA 380;;; -NGC5427;G;14:03:26.05;-06:01:50.9;Vir;3.61;3.27;178;14.67;13.96;9.48;8.82;8.59;23.40;SABc;;;;;;;;2MASX J14032604-0601509,IRAS 14008-0547,MCG -01-36-003,PGC 050084,UGCA 381;;The APM position is 11 arcsec northwest of the nucleus.; -NGC5428;**;14:03:28.03;-05:59:04.1;Vir;;;;;;;;;;;;;;;;;;;;; -NGC5429;**;14:03:33.36;-06:02:17.8;Vir;;;;;;;;;;;;;;;;;;;;; -NGC5430;G;14:00:45.74;+59:19:41.8;UMa;2.18;1.46;177;12.70;;10.01;9.31;8.98;23.13;SBb;;;;;;;;2MASX J14004582+5919431,IRAS 13591+5934,MCG +10-20-062,PGC 049881,SDSS J140045.72+591941.8,SDSS J140045.72+591942.1,SDSS J140045.73+591941.9,SDSS J140045.74+591941.8,SDSS J140045.75+591941.8,UGC 08937;;HOLM 569B is a part of NGC 5430.; -NGC5431;G;14:03:07.15;+09:21:47.0;Boo;0.90;0.38;83;14.80;;12.03;11.37;11.06;23.56;SBbc;;;;;;;;2MASX J14030713+0921473,MCG +02-36-020,PGC 050046,SDSS J140307.14+092146.9;;; -NGC5432;Other;14:03:40.65;-05:58:31.6;Vir;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC5433;G;14:02:36.08;+32:30:37.6;CVn;1.52;0.36;4;14.00;;11.06;10.33;9.93;22.51;SBcd;;;;;;;;2MASX J14023606+3230375,IRAS 14003+3245,MCG +06-31-050,PGC 050012,SDSS J140236.07+323037.6,SDSS J140236.08+323037.6,UGC 08954;;HOLM 574B is a star.; -NGC5434;G;14:03:23.14;+09:26:53.1;Boo;1.48;1.39;35;14.30;;11.56;10.94;10.63;23.48;Sc;;;;;;;;2MASX J14032314+0926531,MCG +02-36-022,PGC 050077,SDSS J140323.14+092653.1,SDSS J140323.15+092653.1,UGC 08965;;; -NGC5435;**;14:04:00.05;-05:55:54.0;Vir;;;;;;;;;;;;;;;;;;;;; -NGC5436;G;14:03:41.10;+09:34:24.6;Boo;1.24;0.53;124;14.90;;11.27;10.62;10.41;23.89;S0-a;;;;;;;;2MASX J14034112+0934241,MCG +02-36-025,PGC 050104,SDSS J140341.09+093424.6,SDSS J140341.10+093424.6,UGC 08971;;; -NGC5437;G;14:03:47.34;+09:31:25.3;Boo;1.07;0.54;1;15.10;;11.70;11.04;10.74;23.30;Sb;;;;;;4365;;2MASX J14034736+0931250,MCG +02-36-028,PGC 050113,SDSS J140347.34+093125.2,SDSS J140347.34+093125.3;;; -NGC5438;G;14:03:48.00;+09:36:38.1;Boo;1.18;1.11;70;14.70;;11.24;10.58;10.27;23.65;E;;;;;5446;;;2MASX J14034803+0936380,MCG +02-36-029,PGC 050112,SDSS J140348.00+093638.1;;; -NGC5439;G;14:01:57.67;+46:18:42.9;CVn;1.27;0.40;10;14.60;;11.88;11.22;11.02;23.38;Sa;;;;;;;;2MASX J14015766+4618425,IRAS 14000+4632,MCG +08-26-002,PGC 049965,SDSS J140157.67+461842.8,SDSS J140157.67+461842.9,UGC 08947;;The 2MASS position is 8 arcsec north of the nucleus.; -NGC5440;G;14:03:01.04;+34:45:28.3;CVn;2.84;1.45;48;13.40;;9.83;9.15;8.89;23.96;Sa;;;;;;;;2MASX J14030101+3445281,MCG +06-31-052,PGC 050042,SDSS J140301.03+344528.3,SDSS J140301.04+344528.3,UGC 08963;;; -NGC5441;G;14:03:12.00;+34:41:04.6;CVn;0.44;0.38;111;15.00;;13.75;13.65;13.30;22.46;Sbc;;;;;;;;2MASX J14031203+3441040,MCG +06-31-053,PGC 050057,SDSS J140311.99+344104.5,SDSS J140312.00+344104.5;;; -NGC5442;G;14:04:43.22;-09:42:49.2;Vir;1.19;0.56;162;14.50;;11.22;10.52;10.16;22.54;SBb;;;;;;;;2MASX J14044322-0942490,IRAS 14020-0928,MCG -01-36-006,PGC 050189,SDSS J140443.21-094249.2;;; -NGC5443;G;14:02:11.80;+55:48:50.5;UMa;1.68;0.57;31;13.20;;9.95;9.28;9.04;22.41;Sb;;;;;;;;2MASX J14021182+5548505,IRAS 14004+5603,MCG +09-23-026,PGC 049993,SDSS J140211.79+554850.5,SDSS J140211.80+554850.4,SDSS J140211.80+554850.5,UGC 08958;;HOLM 578B is a star.; -NGC5444;G;14:03:24.13;+35:07:55.6;CVn;2.48;1.94;87;12.80;;9.79;9.09;8.84;23.62;E;;;;;;;;2MASX J14032415+3507554,MCG +06-31-054,PGC 050080,SDSS J140324.12+350755.5,UGC 08974;;; -NGC5445;G;14:03:31.50;+35:01:31.1;CVn;1.56;0.56;26;14.10;;10.82;10.11;9.85;23.53;S0;;;;;;;;2MASX J14033149+3501304,MCG +06-31-055,PGC 050090,SDSS J140331.50+350131.1,UGC 08976;;; -NGC5446;Dup;14:03:48.00;+09:36:38.1;Boo;;;;;;;;;;;;;;;5438;;;;;; -NGC5447;HII;14:02:28.40;+54:16:36.9;UMa;;;;;;;;;;;;;;;;;;IRAS 14007+5430;;"HII region in MESSIER 101; NGC 5450 is 18 arcsec southeast."; -NGC5448;G;14:02:50.03;+49:10:21.7;UMa;3.77;1.95;109;12.70;;9.72;9.08;8.79;23.39;Sa;;;;;;;;2MASX J14025007+4910215,IRAS 14009+4924,MCG +08-26-003,PGC 050031,SDSS J140250.02+491021.5,SDSS J140250.03+491021.7,UGC 08969;;; -NGC5449;Other;14:02:27.27;+54:19:48.8;UMa;;;;;;;;;;;;;;;;;;;;HII region in MESSIER 101.; -NGC5450;HII;14:02:29.79;+54:16:15.7;UMa;;;;;;;;;;;;;;;5457S;;;;;"HII region in MESSIER 101; NGC 5447 is 18 arcsec northwest."; -NGC5451;HII;14:02:37.05;+54:21:45.1;UMa;0.52;0.31;58;16.70;;;;;;;;;;;;;;;;HII region in MESSIER 101.;Dimensions and B-Mag taken from LEDA -NGC5452;G;13:54:24.90;+78:13:14.0;UMi;1.25;0.80;110;14.20;;;;;23.19;SABc;;;;;;;;MCG +13-10-014,PGC 049426,UGC 08867;;; -NGC5453;HII;14:02:56.39;+54:18:28.7;UMa;;;;;;;;;;;;;;;;;;;;HII region in MESSIER 101.; -NGC5454;G;14:04:45.71;+14:22:55.4;Boo;1.34;0.79;113;14.40;;10.82;10.03;9.77;23.61;S0;;;;;;;;2MASX J14044572+1422557,MCG +03-36-042,PGC 050192,SDSS J140445.70+142255.3,SDSS J140445.71+142255.3,SDSS J140445.71+142255.4,UGC 08997;;; -NGC5455;HII;14:03:01.17;+54:14:29.3;UMa;0.63;0.49;178;15.22;;;;;;;;;;;;;;IRAS 14012+5428,SDSS J140301.17+541429.3,SDSS J140301.17+541429.4,SDSS J140301.19+541426.8;;HII region in MESSIER 101. Multiple SDSS entries describe this object.;Dimensions and B-Mag taken from LEDA -NGC5456;G;14:04:58.89;+11:52:17.9;Boo;1.36;1.10;174;14.20;;;;;23.39;S0;;;;;;;;MCG +02-36-036,PGC 050213,SDSS J140458.88+115217.8,SDSS J140458.89+115217.8,SDSS J140458.89+115217.9,UGC 09004;;; -NGC5457;G;14:03:12.54;+54:20:56.2;UMa;23.99;23.07;28;8.46;7.86;6.52;5.81;5.51;23.97;SABc;;;;101;;;;IRAS 14013+5435,MCG +09-23-028,PGC 050063,SDSS J140312.52+542056.2,UGC 08981;;"M102 may be a duplicate obs. of M101; see Sawyer, JRASC 41, Nos 7&8, 1947."; -NGC5458;HII;14:03:12.47;+54:17:54.0;UMa;;;;;;;;;;;;;;;;;;;;HII region in MESSIER 101.; -NGC5459;G;14:05:00.19;+13:07:54.8;Boo;1.27;1.11;7;14.50;;11.02;10.43;10.17;23.62;S0;;;;;;;;2MASX J14050018+1307546,MCG +02-36-037,PGC 050215,SDSS J140500.18+130754.8,SDSS J140500.19+130754.8,UGC 09005;;; -NGC5460;OCl;14:07:27.81;-48:20:33.1;Cen;13.20;;;5.85;5.60;;;;;;;;;;;;;MWSC 2202;;; -NGC5461;HII;14:03:41.41;+54:19:04.9;UMa;1.62;0.98;49;14.38;;;;;;;;;;;5457E;;;IRAS 14019+5433,IRAS 14019+5433;;HII region in MESSIER 101.;Dimensions and B-Mag taken from LEDA -NGC5462;HII;14:03:53.00;+54:21:56.1;UMa;0.13;0.11;80;18.17;;;;;;;;;;;;;;;;HII region in MESSIER 101.;Dimensions and B-Mag taken from LEDA -NGC5463;G;14:06:10.54;+09:21:12.4;Boo;1.25;0.45;48;14.10;;10.85;10.10;9.85;23.17;S0;;;;;;;;2MASX J14061051+0921122,MCG +02-36-040,PGC 050299,SDSS J140610.54+092112.4,UGC 09017;;; -NGC5464;G;14:07:04.40;-30:01:01.6;Cen;1.38;0.73;82;13.43;12.90;11.69;11.02;11.00;22.19;SBm;;;;;;;;2MASX J14070439-3001015,ESO 446-011,ESO-LV 446-0110,IRAS 14041-2946,MCG -05-33-045,PGC 050356;;; -NGC5465;*;14:06:27.28;-05:30:22.6;Vir;;;;15.01;14.47;13.34;12.96;12.96;;;;;;;;;;2MASS J14062734-0530232;;; -NGC5466;GCl;14:05:27.36;+28:32:04.2;Boo;6.60;;;10.50;9.70;;;;;;;;;;;;;MWSC 2198;;; -NGC5467;*;14:06:29.50;-05:28:53.3;Vir;;;;15.26;15.12;14.66;14.47;14.48;;;;;;;;0973;;2MASS J14062939-0528542;;; -NGC5468;G;14:06:34.89;-05:27:11.2;Vir;2.28;2.13;155;12.10;;10.93;10.34;10.40;23.41;SABc;;;;;;;;2MASX J14063487-0527113,IRAS 14039-0512,MCG -01-36-007,PGC 050323,UGCA 384;;The APM position is 8 arcsec northeast of the nucleus.; -NGC5469;G;14:12:29.90;+08:38:52.6;Boo;0.92;0.78;135;15.10;;11.77;11.12;10.86;23.50;S0;;;;;;;;2MASX J14122990+0838526,PGC 050740,SDSS J141229.89+083852.5,SDSS J141229.89+083852.6;;Identification as NGC 5469 is uncertain.; -NGC5470;G;14:06:31.91;+06:01:46.9;Vir;2.60;0.42;62;14.50;;11.02;10.28;9.97;23.78;Sb;;;;;;;;2MASX J14063199+0601458,IRAS 14040+0615,MCG +01-36-019,PGC 050317,SDSS J140631.91+060146.8,SDSS J140631.91+060146.9,UGC 09020;;; -NGC5471;HII;14:04:29.02;+54:23:48.9;UMa;0.82;0.61;;14.54;;;;;;;;;;;;;;2MASX J14042941+5423470,IRAS 14027+5438,MCG +09-23-030,SDSS J140429.48+542347.2;;HII region in MESSIER 101.;Dimensions and B-Mag taken from LEDA -NGC5472;G;14:06:55.02;-05:27:37.7;Vir;1.46;0.29;29;15.00;;11.66;10.91;10.65;23.45;Sab;;;;;;;;2MASX J14065503-0527379,IRAS 14042-0513,MCG -01-36-008,PGC 050345;;; -NGC5473;G;14:04:43.23;+54:53:33.5;UMa;1.99;1.54;156;12.50;;9.30;8.64;8.36;22.60;E-S0;;;;;;;;2MASX J14044324+5453334,MCG +09-23-031,PGC 050191,SDSS J140443.22+545333.4,UGC 09011;;; -NGC5474;G;14:05:01.61;+53:39:44.0;UMa;2.39;1.57;100;11.28;10.79;10.23;9.56;9.48;21.75;Sc;;;;;;;;2MASX J14050160+5339439,IRAS 14032+5353,MCG +09-23-032,PGC 050216,SDSS J140501.41+533944.4,UGC 09013;;Highly asymmetrical.; -NGC5475;G;14:05:12.41;+55:44:30.7;UMa;1.94;0.58;166;13.40;;10.30;9.64;9.40;23.07;Sa;;;;;;;;2MASX J14051234+5544304,MCG +09-23-033,PGC 050231,SDSS J140512.41+554430.6,SDSS J140512.41+554430.7,UGC 09016;;; -NGC5476;G;14:08:08.49;-06:05:31.4;Vir;1.41;1.31;130;13.20;;11.31;10.70;10.26;22.78;SABd;;;;;;;;2MASX J14080847-0605312,IRAS 14055-0551,MCG -01-36-009,PGC 050429;;; -NGC5477;G;14:05:33.30;+54:27:40.1;UMa;1.11;0.78;87;14.36;14.01;;;;23.02;Sm;;;;;;;;MCG +09-23-034,PGC 050262,SDSS J140533.29+542740.1,UGC 09018;;May be associated with MESSIER 101. Multiple SDSS entries describe this object.; -NGC5478;G;14:08:08.51;-01:42:08.3;Vir;0.97;0.66;22;14.70;;11.57;10.85;10.52;22.85;Sbc;;;;;;;;2MASX J14080854-0142081,IRAS 14055-0127,MCG +00-36-019,PGC 050430,SDSS J140808.50-014208.2,SDSS J140808.50-014208.3,SDSS J140808.51-014208.2,SDSS J140808.51-014208.3,UGC 09034;;; -NGC5479;G;14:05:57.37;+65:41:26.7;UMi;0.93;0.76;20;15.20;;11.68;10.99;10.70;23.66;E;;;;;;;;2MASX J14055741+6541264,MCG +11-17-019,PGC 050282,SDSS J140557.36+654126.6,SDSS J140557.36+654126.7,SDSS J140557.36+654126.9,SDSS J140557.37+654126.7;;; -NGC5480;G;14:06:21.58;+50:43:30.4;Boo;1.67;1.28;177;12.60;;10.37;9.74;9.46;22.49;Sc;;;;;;;;2MASX J14062152+5043299,IRAS 14045+5057,MCG +09-23-035,PGC 050312,SDSS J140621.57+504330.2,SDSS J140621.57+504330.3,SDSS J140621.58+504330.3,SDSS J140621.58+504330.4,UGC 09026;;UGC misprints dec as +50d39', as is evident in the UGC notes.; -NGC5481;G;14:06:41.27;+50:43:24.0;Boo;1.76;1.22;113;13.50;;10.30;9.60;9.38;23.39;E;;;;;;;;2MASX J14064121+5043239,MCG +09-23-036,PGC 050331,SDSS J140641.27+504323.9,UGC 09029;;; -NGC5482;G;14:08:30.70;+08:55:54.9;Boo;1.17;0.81;88;14.20;;10.70;10.02;9.73;23.03;S0;;;;;;;;2MASX J14083072+0855548,MCG +02-36-043,PGC 050459,SDSS J140830.69+085554.8,SDSS J140830.70+085554.9,UGC 09038;;; -NGC5483;G;14:10:25.03;-43:19:28.6;Cen;3.42;3.08;16;11.86;11.38;9.37;8.73;8.46;23.27;Sc;;;;;;;;2MASX J14102503-4319285,ESO 271-019,ESO-LV 271-0190,IRAS 14072-4305,MCG -07-29-008,PGC 050600;;Extended HIPASS source; -NGC5484;G;14:06:48.22;+55:01:47.7;UMa;0.47;0.46;5;15.60;;12.75;12.14;11.91;22.96;E;;;;;;;;2MASX J14064813+5501473,PGC 050338,SDSS J140648.22+550147.5,SDSS J140648.22+550147.7;;; -NGC5485;G;14:07:11.35;+55:00:06.1;UMa;2.51;1.75;170;13.82;12.22;9.32;8.64;8.40;23.13;S0;;;;;;;;2MASX J14071131+5500054,MCG +09-23-037,PGC 050369,SDSS J140711.33+550006.2,SDSS J140711.34+550005.9,SDSS J140711.34+550006.0,SDSS J140711.35+550006.1,UGC 09033;;; -NGC5486;G;14:07:24.96;+55:06:11.1;UMa;1.36;0.82;69;14.00;;12.79;12.15;11.95;23.14;SABm;;;;;;;;2MASX J14072502+5506105,IRAS 14056+5520,MCG +09-23-038,PGC 050383,SDSS J140724.96+550610.8,SDSS J140724.96+550611.0,SDSS J140724.97+550611.1,UGC 09036;;; -NGC5487;G;14:09:43.90;+08:04:08.9;Boo;1.05;0.52;67;14.60;;11.69;11.00;10.67;22.99;SABb;;;;;;;;2MASX J14094386+0804085,IRAS 14072+0818,MCG +01-36-021,PGC 050537,SDSS J140943.89+080408.8,SDSS J140943.89+080408.9;;; -NGC5488;G;14:08:03.11;-33:18:53.7;Cen;2.63;0.73;26;12.72;;11.19;10.43;10.11;23.22;SABb;;;;;;4375;;2MASX J14080312-3318537,ESO 384-058,ESO-LV 384-0580,MCG -05-33-048,PGC 050423;;; -NGC5489;G;14:12:00.72;-46:05:19.4;Cen;2.29;1.28;126;13.15;;9.97;9.26;9.04;23.44;Sa;;;;;;;;2MASX J14120072-4605192,ESO 271-021,ESO-LV 271-0210,PGC 050701;;; -NGC5490;G;14:09:57.29;+17:32:44.0;Boo;1.66;1.29;2;13.40;15.50;9.91;9.19;8.92;23.03;E;;;;;;;;2MASX J14095733+1732435,MCG +03-36-065,PGC 050558,SDSS J140957.29+173243.9,UGC 09058;;One of two 6cm sources associated with [WB92] 1407+1748; -NGC5490C;G;14:10:06.91;+17:36:56.7;Boo;0.75;0.61;34;15.20;;14.43;14.13;13.91;23.28;SBbc;;;;;;;;2MASX J14100691+1736565,MCG +03-36-069,PGC 050584,SDSS J141006.90+173656.7;;; -NGC5491;G;14:10:57.35;+06:21:53.5;Vir;1.32;0.75;78;13.90;;10.96;10.26;9.93;22.81;Sbc;;;;;;;;2MASX J14105735+0621533,IRAS 14084+0636,MCG +01-36-022,PGC 050630,SDSS J141057.35+062153.4,UGC 09072;;HOLM 596C is a star.; -NGC5492;G;14:10:35.20;+19:36:44.4;Boo;1.58;0.38;151;13.70;;11.17;10.41;10.18;22.57;Sb;;;;;;;;2MASX J14103518+1936444,IRAS 14082+1950,MCG +03-36-074,PGC 050613,SDSS J141035.23+193644.0,UGC 09065;;; -NGC5493;G;14:11:29.38;-05:02:37.0;Vir;2.17;1.92;125;13.50;;9.37;8.74;8.47;22.72;S0;;;;;;;;2MASX J14112938-0502371,MCG -01-36-013,PGC 050670,UGCA 386;;; -NGC5494;G;14:12:24.18;-30:38:38.7;Cen;2.33;2.18;50;12.64;12.02;9.96;9.29;8.97;23.82;Sc;;;;;;;;2MASX J14122417-3038387,ESO 446-025,ESO-LV 446-0250,IRAS 14094-3024,MCG -05-34-001,PGC 050732;;; -NGC5495;G;14:12:23.35;-27:06:28.9;Hya;1.52;1.26;44;13.53;13.50;10.76;9.85;9.56;23.02;Sc;;;;;;;;2MASX J14122335-2706287,ESO 511-010,ESO-LV 511-0100,IRAS 14095-2652,MCG -04-34-001,PGC 050729;;; -NGC5496;G;14:11:37.86;-01:09:32.8;Vir;2.69;0.58;176;13.40;;11.21;10.51;10.32;23.11;SBc;;;;;;;;2MASX J14113785-0109313,IRAS 14090-0055,MCG +00-36-026,PGC 050676,SDSS J141137.73-010929.9,SDSS J141137.86-010932.7,SDSS J141137.86-010932.8,UGC 09079;;; -NGC5497;G;14:10:31.64;+38:53:36.8;Boo;0.60;0.49;62;15.10;;12.54;11.72;11.62;22.77;SBb;;;;;;;;2MASX J14103162+3853368,MCG +07-29-048,PGC 050610,SDSS J141031.63+385336.7,SDSS J141031.64+385336.8,UGC 09069;;; -NGC5498;G;14:11:04.53;+25:41:52.7;Boo;1.23;0.84;118;15.00;;11.18;10.41;10.21;23.72;E-S0;;;;;;;;2MASX J14110448+2541522,MCG +04-33-043,PGC 050639,SDSS J141104.52+254152.7,SDSS J141104.53+254152.6,SDSS J141104.53+254152.7,UGC 09075;;; -NGC5499;G;14:10:47.65;+35:54:48.6;Boo;1.12;0.74;143;14.50;;10.95;10.23;9.92;23.21;S0-a;;;;;;;;2MASX J14104763+3554481,MCG +06-31-076,PGC 050623,SDSS J141047.64+355448.5,SDSS J141047.65+355448.5,SDSS J141047.65+355448.6,UGC 09074;;; -NGC5500;G;14:10:15.23;+48:32:46.0;Boo;0.92;0.76;136;14.50;;11.45;10.70;10.58;23.03;E;;;;;;;;2MASX J14101524+4832458,MCG +08-26-008,PGC 050588,SDSS J141015.23+483245.9,SDSS J141015.23+483246.0,SDSS J141015.24+483246.0,UGC 09070;;; -NGC5501;G;14:12:20.18;+01:16:21.1;Vir;0.89;0.65;65;15.10;;12.11;11.48;10.98;23.48;S0-a;;;;;;;;2MASX J14122017+0116206,MCG +00-36-027,PGC 050724,SDSS J141220.18+011621.1;;; -NGC5502;G;14:09:33.95;+60:24:34.5;UMa;0.63;0.34;81;16.00;;13.09;12.42;12.40;23.88;S0;;;;;5503;;;2MASX J14093397+6024346,MCG +10-20-077,PGC 050508,SDSS J140933.94+602434.2,SDSS J140933.94+602434.4,SDSS J140933.94+602434.6,SDSS J140933.95+602434.4;;; -NGC5503;Dup;14:09:33.95;+60:24:34.5;UMa;;;;;;;;;;;;;;;5502;;;;;; -NGC5504;G;14:12:15.81;+15:50:30.9;Boo;1.18;1.03;114;13.90;;11.47;10.99;10.40;23.03;Sbc;;;;;;;;2MASX J14121583+1550310,IRAS 14098+1604,MCG +03-36-081,PGC 050718,SDSS J141215.81+155030.8,UGC 09085;;; -NGC5504B;G;14:12:12.72;+15:52:08.0;Boo;0.56;0.38;112;15.40;;12.70;12.11;11.95;22.54;SBbc;;;;;;4383;;2MASX J14121274+1552077,MCG +03-36-079,PGC 050716,SDSS J141212.71+155207.9;;; -NGC5504C;G;14:12:15.79;+15:52:45.6;Boo;0.81;0.32;78;15.50;;;;;23.34;Sd;;;;;;;;MCG +03-36-082,PGC 050713,SDSS J141215.51+155245.8;;Multiple SDSS entries describe this source.; -NGC5505;G;14:12:31.71;+13:18:17.0;Boo;0.89;0.71;127;14.10;;11.68;11.00;10.77;21.50;SBa;;;;;;;;2MASX J14123202+1318160,IRAS 14101+1332,MCG +02-36-048,PGC 050745,SDSS J141231.71+131817.0,SDSS J141231.72+131817.1,UGC 09092;;; -NGC5506;G;14:13:14.89;-03:12:27.3;Vir;2.88;0.76;89;15.25;14.38;9.71;8.84;8.19;23.26;SABa;;;;;;;;2MASS J14131487-0312276,2MASX J14131490-0312272,IRAS 14106-0258,MCG +00-36-028,PGC 050782,SDSS J141314.87-031227.3,SDSS J141314.88-031227.3,SDSS J141314.88-031227.4,UGCA 387;;; -NGC5507;G;14:13:19.87;-03:08:56.0;Vir;1.60;0.79;80;13.30;12.46;10.05;9.34;9.11;23.15;S0;;;;;;;;2MASX J14131987-0308558,MCG +00-36-029,PGC 050786,SDSS J141319.86-030855.9,UGCA 388;;; -NGC5508;G;14:12:29.04;+24:38:07.8;Boo;0.98;0.65;135;15.20;;12.11;11.45;11.12;23.64;S0;;;;;;;;2MASX J14122906+2438082,MCG +04-34-002,PGC 050741,SDSS J141229.03+243807.8,SDSS J141229.04+243807.8,UGC 09094;;; -NGC5509;G;14:12:39.58;+20:23:13.2;Boo;1.19;0.74;92;15.20;;11.48;10.78;10.48;23.99;S0;;;;;;;;2MASX J14123959+2023133,MCG +04-34-003,PGC 050751,SDSS J141239.57+202313.1,SDSS J141239.57+202313.2;;; -NGC5510;G;14:13:37.22;-17:59:01.7;Vir;0.95;0.65;32;13.80;;11.81;11.41;11.07;22.77;SBm;;;;;;;;2MASX J14133725-1759006,ESO 579-003,IRAS 14108-1744,MCG -03-36-010,PGC 050807;;; -NGC5511;G;14:13:05.42;+08:37:54.8;Boo;0.68;0.24;166;15.50;;12.96;12.24;11.95;23.60;E?;;;;;;;;2MASX J14130540+0837549,MCG +02-36-050,PGC 050771,SDSS J141305.42+083754.7,SDSS J141305.42+083754.8;;"MCG implies the R.A. is 13h10.6m; corrected in MCG errata."; -NGC5512;G;14:12:41.13;+30:51:18.2;Boo;0.67;0.56;74;15.30;;12.24;11.61;11.38;23.28;E;;;;;;;;2MASX J14124111+3051183,PGC 050749,SDSS J141241.13+305118.1,SDSS J141241.13+305118.2;;; -NGC5513;G;14:13:08.63;+20:24:58.6;Boo;2.02;1.09;114;14.10;;10.31;9.60;9.38;24.02;S0;;;;;;;;2MASX J14130864+2024587,MCG +04-34-005,PGC 050776,SDSS J141308.62+202458.5,SDSS J141308.63+202458.5,UGC 09099;;; -NGC5514;GPair;14:13:38.78;+07:39:34.3;Boo;1.30;;;;;;;;;;;;;;;;;MCG +01-36-023,UGC 09102;;;Diameter of the group inferred by the author. -NGC5514 NED01;G;14:13:38.44;+07:39:37.9;Boo;1.15;0.65;97;14.50;;11.05;10.32;9.95;23.00;Sbc;;;;;;;;2MASX J14133869+0739373,IRAS 14111+0753,MCG +01-36-023 NED01,PGC 050809,UGC 09102 NED01;;; -NGC5514 NED02;G;14:13:39.38;+07:39:28.8;Boo;0.85;0.74;111;15.63;;;;;24.16;Sbc;;;;;;;;MCG +01-36-023 NED02,PGC 093124,UGC 09102 NED02;;;B-Mag taken from LEDA -NGC5515;G;14:12:38.17;+39:18:37.0;Boo;1.22;0.64;107;13.70;;11.06;10.28;9.93;22.78;Sab;;;;;;;;2MASX J14123812+3918369,IRAS 14105+3932,MCG +07-29-052,PGC 050750,SDSS J141238.13+391836.6,SDSS J141238.14+391836.5,SDSS J141238.14+391836.6,SDSS J141238.15+391836.6,UGC 09096;;; -NGC5516;G;14:15:54.69;-48:06:53.5;Cen;2.39;1.56;162;13.01;;9.29;8.54;8.31;23.62;E-S0;;;;;;;;2MASX J14155467-4806535,ESO 221-034,ESO-LV 221-0340,PGC 050960;;; -NGC5517;G;14:12:51.24;+35:42:39.2;Boo;1.01;0.71;123;15.00;;11.64;10.95;10.71;23.37;S0-a;;;;;;;;2MASX J14125126+3542386,MCG +06-31-079,PGC 050758,SDSS J141251.23+354239.2,SDSS J141251.24+354239.1,SDSS J141251.24+354239.2,UGC 09100;;; -NGC5518;G;14:13:47.68;+20:50:53.9;Boo;1.28;1.09;121;15.00;;11.07;10.42;10.11;23.75;E;;;;;;;;2MASX J14134764+2050535,MCG +04-34-006,PGC 050817,SDSS J141347.67+205053.8;;; -NGC5519;G;14:14:20.87;+07:30:57.3;Boo;1.77;1.08;76;14.60;;11.92;11.23;10.88;24.23;SBa;;;;;5570;;;2MASX J14142084+0730575,MCG +01-36-025,PGC 050865,SDSS J141420.86+073057.2,SDSS J141420.86+073057.3,UGC 09111;;Identification as NGC 5570 is uncertain.; -NGC5520;G;14:12:22.79;+50:20:54.3;Boo;1.61;0.80;66;13.30;;10.88;10.25;9.97;22.58;Sb;;;;;;;;2MASX J14122277+5020543,IRAS 14105+5034,MCG +08-26-013,PGC 050728,UGC 09097;;; -NGC5521;G;14:15:23.72;+04:24:30.7;Vir;0.61;0.49;40;14.30;;12.86;12.30;11.96;22.24;Sbc;;;;;;;;2MASX J14152371+0424304,MCG +01-36-030,PGC 050931,SDSS J141523.71+042430.6,SDSS J141523.71+042430.7,SDSS J141523.72+042430.6,SDSS J141523.72+042430.7,SDSS J141526.33+042429.9,UGC 09122;;; -NGC5522;G;14:14:50.37;+15:08:48.8;Boo;1.87;0.42;50;14.10;;10.99;10.26;9.91;23.16;SBb;;;;;;;;2MASX J14145036+1508480,IRAS 14124+1522,MCG +03-36-089,PGC 050889,SDSS J141450.36+150848.7,SDSS J141450.37+150848.8,UGC 09116;;; -NGC5523;G;14:14:52.32;+25:19:03.4;Boo;2.04;0.89;92;13.40;;10.68;10.26;9.74;22.67;SABc;;;;;;;;2MASX J14145230+2519034,IRAS 14125+2533,MCG +04-34-008,PGC 050895,UGC 09119;;; -NGC5524;**;14:13:48.81;+36:22:51.5;Boo;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC5525;G;14:15:39.23;+14:16:57.4;Boo;1.21;0.66;21;14.10;;10.51;9.77;9.44;22.92;S0;;;;;;;;2MASX J14153923+1416576,MCG +03-36-096,PGC 050946,SDSS J141539.22+141657.4,UGC 09124;;; -NGC5526;G;14:13:53.76;+57:46:16.8;UMa;1.10;0.30;135;14.20;;11.41;10.68;10.32;22.52;Sbc;;;;;;;;PGC 050832;;"Delta V > 1000 km/sec; probably an optical pair."; -NGC5527;G;14:14:27.23;+36:24:16.2;Boo;0.94;0.69;153;15.30;;11.77;11.10;10.87;23.19;Sb;;;;;;;;2MASX J14142717+3624159,MCG +06-31-081,PGC 050868,SDSS J141427.22+362416.1,SDSS J141427.23+362416.2;;NGC 5524 is a double star.; -NGC5528;G;14:16:19.92;+08:17:36.5;Boo;0.99;0.55;17;14.80;;11.39;10.71;10.47;22.95;Sbc;;;;;;;;2MASX J14161994+0817363,MCG +02-36-060,PGC 050981,SDSS J141619.92+081736.4,SDSS J141619.92+081736.5;;HOLM 620B is a star.; -NGC5529;G;14:15:34.07;+36:13:35.7;Boo;5.79;0.68;114;12.90;;9.67;8.85;8.52;23.68;SABc;;;;;;;;2MASX J14153422+3613371,IRAS 14134+3627,MCG +06-31-085,PGC 050942,SDSS J141534.07+361335.6,SDSS J141534.07+361335.7,UGC 09127;;; -NGC5530;G;14:18:27.15;-43:23:18.9;Lup;4.86;2.18;127;11.78;11.00;;;;23.36;SABb;;;;;;;;ESO 272-003,ESO-LV 272-0030,IRAS 14152-4309,MCG -07-29-013,PGC 051106;;; -NGC5531;GPair;14:16:43.30;+10:53:05.2;Boo;1.07;0.60;170;14.70;;11.34;10.64;10.36;23.29;S0;;;;;;;;2MASX J14164323+1053070,MCG +02-36-061,PGC 050999,SDSS J141643.21+105307.3,SDSS J141643.22+105307.4;;; -NGC5532;G;14:16:52.95;+10:48:26.6;Boo;2.34;1.94;144;13.30;;9.75;9.05;8.76;23.55;S0;;;;;;;;2MASX J14165292+1048264,MCG +02-36-062 NED01,PGC 051006,SDSS J141652.94+104826.7,SDSS J141652.95+104826.7,UGC 09137 NED01;;; -NGC5533;G;14:16:07.74;+35:20:37.8;Boo;2.86;1.58;28;13.00;;9.75;9.08;8.80;23.31;SABa;;;;;;;;2MASX J14160771+3520373,IRAS 14140+3534,MCG +06-31-089,PGC 050973,SDSS J141607.74+352037.7,UGC 09133;;; -NGC5534;G;14:17:40.26;-07:25:02.7;Vir;1.36;1.23;65;13.60;;10.53;9.94;9.63;22.50;Sab;;;;;;;;2MASX J14174025-0725030,IRAS 14150-0711,MCG -01-36-014,PGC 051055;;; -NGC5535;G;14:17:31.27;+08:12:30.2;Boo;0.66;0.42;15;;;12.80;12.09;11.91;23.75;E;;;;;;;;2MASX J14173129+0812298,PGC 097424,SDSS J141731.27+081230.1,SDSS J141731.27+081230.2;;; -NGC5536;G;14:16:23.86;+39:30:07.9;Boo;0.83;0.64;11;14.50;;11.52;10.86;10.59;22.73;Sa;;;;;;;;2MASX J14162391+3930084,IRAS 14143+3944,MCG +07-29-057,PGC 050986,SDSS J141623.85+393007.8,SDSS J141623.86+393007.8,SDSS J141623.86+393007.9,UGC 09136;;; -NGC5537;G;14:17:37.09;+07:03:18.0;Vir;0.94;0.40;32;15.10;;12.30;11.59;11.46;23.10;Sb;;;;;;;;2MASX J14173708+0703178,IRAS 14151+0717,MCG +01-36-032,PGC 051047,SDSS J141737.09+070317.9,SDSS J141737.09+070318.0;;; -NGC5538;G;14:17:42.49;+07:28:36.0;Vir;0.89;0.31;62;15.40;;12.52;11.78;11.52;23.22;Sbc;;;;;;;;2MASX J14174246+0728358,PGC 051056,SDSS J141742.49+072835.9,SDSS J141742.49+072836.0;;; -NGC5539;G;14:17:37.77;+08:10:46.6;Boo;1.15;0.75;35;14.92;;11.31;10.66;10.30;23.97;S0;;;;;;;;2MASX J14173775+0810468,MCG +01-36-033,PGC 051054,SDSS J141737.76+081046.5;;Called NGC 5535/5539 in CGCG and MCG.; -NGC5540;G;14:14:54.43;+60:00:40.0;UMa;1.10;0.88;17;14.90;;11.50;10.78;10.51;23.77;E;;;;;;;;2MASX J14145441+6000401,MCG +10-20-090,PGC 050883,SDSS J141454.42+600039.9,SDSS J141454.42+600040.0,SDSS J141454.43+600040.0,SDSS J141454.43+600040.1;;; -NGC5541;G;14:16:31.80;+39:35:20.6;Boo;0.92;0.59;31;13.40;;11.13;10.39;10.02;21.97;Sc;;;;;;;;2MASX J14163182+3935207,IRAS 14144+3949,MCG +07-29-059,PGC 050991,SDSS J141631.80+393520.5,SDSS J141631.80+393520.6,UGC 09139;;; -NGC5542;G;14:17:53.20;+07:33:31.6;Boo;0.60;0.35;164;15.00;;11.71;11.01;10.78;22.57;E;;;;;;;;2MASX J14175320+0733314,MCG +01-36-034,PGC 051066,SDSS J141753.19+073331.5,SDSS J141753.20+073331.5,SDSS J141753.20+073331.6;;; -NGC5543;G;14:18:04.07;+07:39:17.5;Boo;0.79;0.42;140;15.30;;11.98;11.29;10.93;23.11;Sab;;;;;;;;2MASX J14180403+0739174,PGC 051079,SDSS J141804.07+073917.4,SDSS J141804.07+073917.5;;; -NGC5544;G;14:17:02.52;+36:34:17.7;Boo;1.03;0.96;57;13.20;;;;;22.66;S0-a;;;;;;;;MCG +06-31-090,PGC 051018,SDSS J141702.51+363417.7,SDSS J141702.52+363417.6,SDSS J141702.52+363417.7,UGC 09142;;; -NGC5545;G;14:17:05.16;+36:34:30.4;Boo;0.97;0.33;59;13.20;;11.12;10.45;10.16;21.05;Sbc;;;;;;;;2MASX J14170522+3634308,MCG +06-31-091,PGC 051023,SDSS J141705.15+363430.3,UGC 09143;;Multiple SDSS entries describe this object.; -NGC5546;G;14:18:09.23;+07:33:52.4;Boo;1.57;1.29;22;14.10;;10.29;9.57;9.34;23.18;E;;;;;;;;2MASX J14180921+0733524,MCG +01-36-035,PGC 051084,SDSS J141809.22+073352.3,SDSS J141809.23+073352.4,UGC 09148;;; -NGC5547;G;14:09:45.20;+78:36:03.8;UMi;0.74;0.30;61;14.50;;12.45;11.86;11.32;22.91;;;;;;;;;2MASX J14094552+7836038,PGC 050543,UGC 09095 NED01;;; -NGC5548;G;14:17:59.53;+25:08:12.4;Boo;1.33;1.05;118;14.35;13.73;10.64;9.88;9.39;22.56;S0-a;;;;;;;;2MASX J14175951+2508124,IRAS 14156+2522,MCG +04-34-013,PGC 051074,SDSS J141759.54+250812.7,SDSS J141759.55+250812.7,UGC 09149;;; -NGC5549;G;14:18:38.81;+07:22:38.4;Vir;1.53;0.75;119;14.20;;10.35;9.68;9.40;23.59;S0;;;;;;;;2MASX J14183879+0722384,MCG +01-36-036,PGC 051118,SDSS J141838.81+072238.4,UGC 09156;;; -NGC5550;G;14:18:27.97;+12:52:59.1;Boo;1.10;0.81;98;14.20;;11.26;10.53;10.26;22.82;SBb;;;;;;;;2MASX J14182795+1252588,MCG +02-36-065,PGC 051108,SDSS J141827.97+125259.0,UGC 09154;;; -NGC5551;G;14:18:54.84;+05:27:05.3;Vir;0.81;0.59;116;15.10;;11.73;10.99;10.74;23.26;E;;;;;;;;2MASX J14185484+0527057,MCG +01-36-037,PGC 051139,SDSS J141854.83+052705.3;;; -NGC5552;G;14:19:03.85;+07:01:54.1;Vir;0.91;0.39;172;15.20;;12.06;11.33;11.01;23.07;Sbc;;;;;5558;;;2MASX J14190387+0701539,PGC 051140,SDSS J141903.85+070154.1;;; -NGC5553;G;14:18:29.73;+26:17:16.2;Boo;1.15;0.25;87;14.80;;11.34;10.62;10.37;23.03;Sa;;;;;;;;2MASX J14182972+2617165,MCG +05-34-017,PGC 051105,SDSS J141829.72+261716.2,SDSS J141829.73+261716.2,UGC 09160;;; -NGC5554;G;14:19:15.00;+07:01:16.1;Vir;0.65;0.45;38;15.20;;12.26;11.64;11.30;22.76;SBb;;;;;5564;;;2MASX J14191496+0701158,IRAS 14167+0715,PGC 051160,SDSS J141915.00+070116.1;;; -NGC5555;G;14:18:48.08;-19:08:20.1;Vir;0.61;0.37;113;15.53;;12.43;11.81;11.38;22.57;Sb;;;;;;;;2MASX J14184808-1908201,ESO 579-015,IRAS 14160-1854,MCG -03-36-011,PGC 051124;;; -NGC5556;G;14:20:34.09;-29:14:30.4;Hya;3.45;2.75;145;12.43;;;;;24.05;Scd;;;;;;;;ESO 446-050,ESO-LV 446-0500,IRAS 14176-2901,MCG -05-34-009,PGC 051245,UGCA 389;;; -NGC5557;G;14:18:25.72;+36:29:36.8;Boo;2.28;1.12;97;12.20;;9.03;8.34;8.08;22.54;E;;;;;;;;2MASX J14182570+3629372,MCG +06-31-093,PGC 051104,SDSS J141825.72+362936.8,UGC 09161;;; -NGC5558;Dup;14:19:03.85;+07:01:54.1;Vir;;;;;;;;;;;;;;;5552;;;;;; -NGC5559;G;14:19:12.78;+24:47:55.4;Boo;1.31;0.38;65;15.00;;11.35;10.62;10.27;23.14;Sb;;;;;;;;2MASX J14191279+2447550,IRAS 14169+2501,MCG +04-34-017,PGC 051155,SDSS J141912.78+244755.4,SDSS J141912.79+244755.4,UGC 09166;;; -NGC5560;G;14:20:04.49;+03:59:32.9;Vir;3.45;0.85;109;13.20;12.37;10.45;9.69;9.47;23.66;Sb;;;;;;;;2MASX J14200449+0359335,2MASX J14200543+0359285,IRAS 14175+0413,MCG +01-37-001,PGC 051223,SDSS J142005.38+035927.4,UGC 09172;;; -NGC5561;G;14:17:22.83;+58:45:01.8;UMa;0.65;0.52;161;16.00;;12.89;12.17;11.96;23.09;Sb;;;;;;;;2MASX J14172281+5845020,IRAS 14158+5858,PGC 2800986,SDSS J141722.82+584501.7,SDSS J141722.83+584501.7,SDSS J141722.83+584501.8,SDSS J141722.83+584502.0;;; -NGC5562;G;14:20:11.05;+10:15:46.2;Boo;0.80;0.74;10;14.50;;11.07;10.37;10.06;22.59;S0-a;;;;;;;;2MASX J14201108+1015462,MCG +02-37-002,PGC 051227,SDSS J142011.06+101546.5,UGC 09174;;; -NGC5563;G;14:20:13.09;+07:03:19.5;Vir;0.95;0.45;77;15.30;;11.81;10.97;10.92;23.96;E;;;;;;;;2MASX J14201307+0703192,PGC 051226,SDSS J142013.08+070319.5,SDSS J142013.09+070319.5;;; -NGC5564;Dup;14:19:15.00;+07:01:16.1;Vir;;;;;;;;;;;;;;;5554;;;;;; -NGC5565;*;14:19:18.50;+06:59:41.8;Vir;;;;;;;;;;;;;;;;;;SDSS J141918.49+065941.7;;Identification as NGC 5565 is uncertain.; -NGC5566;G;14:20:19.89;+03:56:01.5;Vir;5.36;2.08;35;11.46;10.55;8.35;7.64;7.39;23.30;SBab;;;;;;;;2MASX J14201994+0356009,IRAS 14178+0409,MCG +01-37-002,PGC 051233,SDSS J142019.88+035601.4,UGC 09175;;; -NGC5567;G;14:19:17.64;+35:08:16.6;Boo;1.06;0.92;53;15.00;;11.14;10.44;10.20;23.40;E-S0;;;;;;;;2MASX J14191759+3508168,MCG +06-31-096,PGC 051161,SDSS J141917.63+350816.6;;; -NGC5568;G;14:19:21.32;+35:05:31.8;Boo;0.74;0.57;117;15.70;;12.70;11.83;11.58;23.23;Sc;;;;;;;;2MASX J14192133+3505318,MCG +06-31-098,PGC 051168,SDSS J141921.31+350531.7,SDSS J141921.32+350531.8;;; -NGC5569;G;14:20:32.09;+03:58:59.6;Vir;1.11;0.87;56;13.90;;13.07;13.01;12.32;23.84;SABc;;;;;;;;2MASX J14203215+0358594,MCG +01-37-003,PGC 051241,SDSS J142032.09+035859.5,SDSS J142032.09+035859.6,UGC 09176;;; -NGC5570;Dup;14:14:20.87;+07:30:57.3;Boo;;;;;;;;;;;;;;;5519;;;;;; -NGC5571;Other;14:19:32.03;+35:09:03.4;Boo;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC5572;G;14:19:35.30;+36:08:26.4;Boo;0.89;0.72;178;15.20;;12.41;11.83;11.40;23.33;Sb;;;;;;;;IRAS 14174+3622,MCG +06-31-099,PGC 051196,SDSS J141935.30+360826.4,UGC 09173;;; -NGC5573;G;14:20:41.51;+06:54:26.3;Vir;1.24;0.37;106;15.00;;11.68;11.01;10.77;23.38;Sbc;;;;;;;;2MASX J14204147+0654261,MCG +01-37-005,PGC 051257,SDSS J142041.50+065426.6,SDSS J142041.51+065426.7;;; -NGC5574;G;14:20:55.97;+03:14:16.8;Vir;1.32;0.83;61;13.23;12.39;10.45;9.78;9.54;22.61;E-S0;;;;;;;;2MASX J14205594+0314167,MCG +01-37-006,PGC 051270,SDSS J142055.96+031416.8,UGC 09181;;; -NGC5575;G;14:20:59.41;+06:12:09.6;Vir;0.91;0.75;95;14.50;;11.00;10.31;10.00;23.01;S0;;;;;5578;;;2MASX J14205937+0612095,MCG +01-37-008,PGC 051272,SDSS J142059.40+061209.5,SDSS J142059.41+061209.5,SDSS J142059.41+061209.6,UGC 09184;;; -NGC5576;G;14:21:03.68;+03:16:15.6;Vir;2.83;1.87;91;11.85;10.96;8.74;7.97;7.83;22.90;E;;;;;;;;2MASX J14210369+0316157,MCG +01-37-007,PGC 051275,UGC 09183;;; -NGC5577;G;14:21:13.11;+03:26:08.8;Vir;2.86;0.73;61;13.05;;10.55;9.98;9.75;23.57;Sbc;;;;;;;;2MASX J14211311+0326087,IRAS 14187+0339,MCG +01-37-009,PGC 051286,UGC 09187;;; -NGC5578;Dup;14:20:59.41;+06:12:09.6;Vir;;;;;;;;;;;;;;;5575;;;;;; -NGC5579;G;14:20:26.48;+35:11:19.7;Boo;1.49;1.12;177;14.70;;12.86;12.43;12.16;23.87;Sc;;;;;;;;2MASX J14202656+3511188,MCG +06-32-002,PGC 051236,SDSS J142026.48+351119.6,SDSS J142026.48+351119.7,UGC 09180;;; -NGC5580;G;14:21:38.41;+35:12:17.5;Boo;1.54;1.38;137;13.60;;10.48;9.88;9.65;23.26;S0;;;;;5590;;;2MASX J14213841+3512178,MCG +06-32-006,PGC 051312,SDSS J142138.40+351217.5,UGC 09200;;Identification as NGC 5590 is not certain.; -NGC5581;G;14:21:16.31;+23:28:48.1;Boo;0.60;0.48;0;15.10;;11.68;10.98;10.80;;E;;;;;;;;2MASX J14211626+2328476,MCG +04-34-021,PGC 051282,SDSS J142116.30+232848.0,SDSS J142116.31+232848.1;;;Diameters and position angle taken from Simbad. -NGC5582;G;14:20:43.12;+39:41:36.9;Boo;2.20;1.40;24;13.00;;9.79;9.17;8.94;23.05;E;;;;;;;;2MASX J14204312+3941369,MCG +07-29-063,PGC 051251,UGC 09188;;; -NGC5583;G;14:21:40.50;+13:13:56.6;Boo;0.84;0.64;81;14.20;;11.41;10.78;10.47;22.68;E;;;;;;;;2MASX J14214048+1313562,MCG +02-37-004,PGC 051313,SDSS J142140.49+131356.6,UGC 09196;;; -NGC5584;G;14:22:23.77;-00:23:15.6;Vir;3.13;2.34;154;12.80;;10.84;10.05;9.95;23.71;SABc;;;;;;;;2MASX J14222381-0023148,IRAS 14198-0009,MCG +00-37-001,PGC 051344,SDSS J142223.59-002318.2,SDSS J142223.76-002315.5,SDSS J142223.76-002315.6,SDSS J142223.77-002315.6,UGC 09201;;The APM image refers to part of the galaxy east of the nucleus.; -NGC5585;G;14:19:48.20;+56:43:44.6;UMa;4.27;2.62;33;11.73;11.22;10.23;9.58;9.50;22.86;SABc;;;;;;;;2MASX J14194820+5643445,IRAS 14182+5657,MCG +10-20-094,PGC 051210,SDSS J141948.25+564342.2,UGC 09179;;; -NGC5586;Other;14:22:07.66;+13:11:03.4;Boo;;;;;;;;;;;;;;;;;;;;Nothing at this position on the POSS.; -NGC5587;G;14:22:10.71;+13:55:05.0;Boo;2.13;0.67;162;14.00;;10.66;9.95;9.68;23.84;S0-a;;;;;;;;2MASX J14221073+1355045,MCG +02-37-005,PGC 051332,SDSS J142210.71+135505.0,UGC 09202;;; -NGC5588;G;14:21:25.11;+35:16:14.3;Boo;0.95;0.80;58;14.30;;11.54;10.76;10.54;22.75;Sa;;;;;5589;;;2MASX J14212511+3516138,MCG +06-32-005,PGC 051300,SDSS J142125.11+351614.2,SDSS J142125.11+351614.3,UGC 09197;;Identification as NGC 5588 is not certain.; -NGC5589;Dup;14:21:25.11;+35:16:14.3;Boo;;;;;;;;;;;;;;;5588;;;;;; -NGC5590;Dup;14:21:38.41;+35:12:17.5;Boo;;;;;;;;;;;;;;;5580;;;;;; -NGC5591;GPair;14:22:34.00;+13:43:00.0;Boo;1.40;;;;;;;;;;;;;;;;;MCG +02-37-006,UGC 09207;;;Diameter of the group inferred by the author. -NGC5591 NED01;G;14:22:33.29;+13:43:01.9;Boo;0.85;0.48;79;14.50;;12.39;11.82;11.49;22.47;Sc;;;;;;;;2MASX J14223326+1343016,IRAS 14201+1356,MCG +02-37-006 NED01,PGC 051360,SDSS J142233.28+134301.8,SDSS J142233.29+134301.9,UGC 09207 NED01;;; -NGC5591 NED02;G;14:22:34.76;+13:43:02.5;Boo;1.02;0.25;64;16.50;;;;;23.62;Sc;;;;;;;;MCG +02-37-006 NED02,PGC 093125,SDSS J142234.75+134302.4,UGC 09207 NED02;;; -NGC5592;G;14:23:55.05;-28:41:17.0;Hya;1.63;0.75;88;13.62;12.71;10.44;9.74;9.39;22.70;Sbc;;;;;;;;2MASX J14235504-2841173,ESO 446-058,ESO-LV 446-0580,IRAS 14210-2827,MCG -05-34-011,PGC 051428;;; -NGC5593;OCl;14:25:39.18;-54:47:55.3;Lup;4.50;;;;;;;;;;;;;;;;;MWSC 2217;;; -NGC5594;G;14:23:10.31;+26:15:56.9;Boo;1.47;0.70;152;17.00;;11.30;10.70;10.30;24.45;E;;;;;;4412;;2MASX J14231031+2615567,MCG +04-34-024,PGC 051391,SDSS J142310.31+261556.8;;; -NGC5595;G;14:24:13.24;-16:43:22.8;Lib;2.12;1.01;54;12.00;;10.01;9.31;9.18;22.35;SABc;;;;;;;;2MASX J14241324-1643227,IRAS 14214-1629,MCG -03-37-001,PGC 051445;;; -NGC5596;G;14:22:28.74;+37:07:19.9;Boo;1.04;0.72;95;14.50;;11.33;10.65;10.41;23.26;S0;;;;;;;;2MASX J14222871+3707193,MCG +06-32-010,PGC 051355,SDSS J142228.73+370719.8,SDSS J142228.73+370719.9,SDSS J142228.74+370719.9,UGC 09208;;; -NGC5597;G;14:24:27.44;-16:45:45.9;Lib;2.00;1.55;65;14.75;14.18;10.71;10.20;9.92;22.63;Sc;;;;;;;;2MASX J14242744-1645457,IRAS 14216-1632,MCG -03-37-002,PGC 051456;;; -NGC5598;G;14:22:28.28;+40:19:11.3;Boo;1.55;0.99;51;14.30;;10.97;10.32;10.02;23.73;S0;;;;;;;;2MASX J14222828+4019113,MCG +07-30-004,PGC 051354,SDSS J142228.27+401911.3,SDSS J142228.28+401911.3,UGC 09209;;; -NGC5599;G;14:23:50.61;+06:34:34.0;Vir;1.34;0.51;158;14.70;;11.43;10.70;10.46;23.30;Sb;;;;;;;;2MASX J14235062+0634338,IRAS 14213+0647,MCG +01-37-010,PGC 051423,SDSS J142350.61+063433.9,UGC 09218;;; -NGC5600;G;14:23:49.52;+14:38:19.6;Boo;1.60;1.57;135;11.90;;10.37;9.75;9.41;22.65;SABc;;;;;;;;2MASX J14234954+1438194,IRAS 14214+1451,MCG +03-37-013,PGC 051422,SDSS J142349.51+143819.5,UGC 09220;;; -NGC5601;G;14:22:53.28;+40:18:34.5;Boo;0.83;0.33;4;15.60;;12.46;11.81;11.62;23.36;Sa;;;;;;;;2MASX J14225329+4018344,MCG +07-30-006,PGC 051370,SDSS J142253.28+401834.4,SDSS J142253.28+401834.5,SDSS J142253.29+401834.4;;Two MAPS entries for the same object.; -NGC5602;G;14:22:18.83;+50:30:05.0;Boo;1.31;0.68;167;13.50;;10.48;9.87;9.60;22.41;Sa;;;;;;;;2MASX J14221883+5030051,MCG +09-24-002,PGC 051340,SDSS J142218.83+503004.9,UGC 09210;;; -NGC5603;G;14:23:01.53;+40:22:38.7;Boo;1.11;1.04;90;14.00;;10.94;10.24;9.98;22.97;S0;;;;;;;;2MASX J14230151+4022382,MCG +07-30-008,PGC 051382,SDSS J142301.52+402238.7,SDSS J142301.53+402238.7,UGC 09217;;; -NGC5604;G;14:24:42.80;-03:12:43.8;Vir;1.80;0.92;6;13.70;;10.69;9.96;9.71;23.21;SABa;;;;;;;;2MASX J14244280-0312437,IRAS 14221-0259,MCG +00-37-003,PGC 051471;;; -NGC5605;G;14:25:07.57;-13:09:46.8;Lib;1.50;1.23;66;12.00;;10.30;9.58;9.42;22.59;SABc;;;;;;;;2MASX J14250757-1309467,IRAS 14223-1256,MCG -02-37-003,PGC 051492;;; -NGC5606;OCl;14:27:47.28;-59:37:56.1;Cen;3.60;;;7.95;7.70;;;;;;;;;;;;;ESO 134-003,MWSC 2218;;; -NGC5607;G;14:19:26.70;+71:35:17.6;UMi;0.87;0.73;71;13.90;;11.57;10.98;10.58;22.30;Sab;;;;;5620;1005;;2MASX J14192669+7135177,IRAS 14188+7148,MCG +12-14-001,PGC 051182,UGC 09189;;This is the most likely candidate for NGC 5620.; -NGC5608;G;14:23:17.89;+41:46:33.2;Boo;1.66;0.74;98;13.96;;;;;23.15;IB;;;;;;;;MCG +07-30-009,PGC 051396,UGC 09219;;; -NGC5609;G;14:23:48.30;+34:50:34.0;Boo;0.48;0.39;116;;;13.61;12.70;12.46;23.44;E;;;;;;;;2MASX J14234825+3450350,PGC 3088538,SDSS J142348.27+345034.3,SDSS J142348.27+345034.4,SDSS J142348.28+345034.4;;; -NGC5610;G;14:24:22.94;+24:36:50.9;Boo;1.73;0.60;105;14.50;;11.09;10.33;10.00;23.60;SBab;;;;;;;;2MASX J14242294+2436513,IRAS 14221+2450,MCG +04-34-025,PGC 051450,SDSS J142422.93+243650.8,SDSS J142422.94+243650.9,UGC 09230;;; -NGC5611;G;14:24:04.78;+33:02:50.6;Boo;1.36;0.59;65;13.50;;10.65;10.02;9.75;22.80;S0;;;;;;;;2MASX J14240477+3302510,MCG +06-32-020,PGC 051431,SDSS J142404.77+330250.6,UGC 09227;;; -NGC5612;G;14:34:01.25;-78:23:15.0;Aps;1.94;1.15;64;13.01;12.14;9.59;8.83;8.55;22.86;Sab;;;;;;;;2MASX J14335665-7823278,2MASX J14340127-7823148,ESO 022-001,ESO-LV 22-0010,IRAS 14281-7809,PGC 052057;;; -NGC5613;G;14:24:05.96;+34:53:31.6;Boo;0.56;0.37;30;16.00;;12.61;12.13;11.66;23.14;S0-a;;;;;;;;2MASX J14240596+3453310,MCG +06-32-021,PGC 051433,SDSS J142405.95+345331.5,SDSS J142405.96+345331.5,SDSS J142405.96+345331.6,UGC 09228;;; -NGC5614;G;14:24:07.59;+34:51:31.9;Boo;2.43;2.00;150;12.60;;9.50;8.79;8.53;23.12;Sab;;;;;;;;2MASX J14240759+3451320,IRAS 14220+3505,MCG +06-32-022,PGC 051439,SDSS J142407.58+345131.8,UGC 09226;;; -NGC5615;G;14:24:06.50;+34:51:54.0;Boo;0.16;0.16;162;15.00;;;;;21.21;;;;;;;;;MCG +06-32-023,PGC 051435,SDSS J142406.49+345153.9,SDSS J142406.50+345154.0,UGC 09226 NOTES01;;; -NGC5616;G;14:24:20.70;+36:27:41.1;Boo;2.13;0.41;158;14.80;;11.07;10.28;9.94;23.73;SBbc;;;;;;;;2MASX J14242075+3627410,IRAS 14222+3641,MCG +06-32-026,PGC 051448,SDSS J142420.69+362741.1,UGC 09231;;; -NGC5617;OCl;14:29:44.07;-60:42:39.0;Cen;5.10;;;7.00;6.30;;;;;;;;;;;;;MWSC 2223;;; -NGC5618;G;14:27:11.81;-02:15:44.7;Vir;1.45;0.78;4;13.60;;11.68;10.98;10.50;23.18;SBc;;;;;;;;2MASX J14271179-0215448,MCG +00-37-005,PGC 051603,SDSS J142711.81-021544.6,SDSS J142711.81-021544.7,UGC 09250;;; -NGC5619;G;14:27:18.23;+04:48:10.2;Vir;2.29;0.93;12;13.40;;10.18;9.47;9.36;23.80;Sb;;;;;;;;2MASX J14271827+0448103,IRAS 14248+0501,MCG +01-37-012,PGC 051610,SDSS J142718.22+044810.1,SDSS J142718.23+044810.1,SDSS J142718.23+044810.2,UGC 09255;;; -NGC5619B;G;14:27:32.37;+04:49:17.8;Vir;1.05;0.44;121;14.80;;11.79;11.11;10.80;22.96;Sbc;;;;;;1016,4424;;2MASX J14273238+0449173,IRAS F14250+0502,MCG +01-37-014,PGC 051624,SDSS J142732.37+044917.7,SDSS J142732.37+044917.8,SDSS J142732.38+044917.8;;; -NGC5620;Dup;14:19:26.70;+71:35:17.6;UMi;;;;;;;;;;;;;;;5607;;;;;; -NGC5621;Other;14:27:49.81;+08:14:24.9;Boo;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC5622;G;14:26:12.19;+48:33:50.4;Boo;1.34;0.76;86;14.11;13.44;11.42;10.82;10.56;23.12;Sb;;;;;;;;2MASX J14261219+4833503,MCG +08-26-032,PGC 051541,SDSS J142612.19+483350.3,SDSS J142612.19+483350.4,UGC 09248;;; -NGC5623;G;14:27:08.68;+33:15:09.2;Boo;1.65;1.08;17;13.53;12.53;;;;23.58;E;;;;;;;;MCG +06-32-035,PGC 051598,UGC 09260;;; -NGC5624;G;14:26:35.21;+51:35:07.3;Boo;1.02;0.68;7;14.10;;;;;22.54;I;;;;;;;;IRAS 14248+5148,MCG +09-24-006,PGC 051568,SDSS J142635.21+513507.3,UGC 09256;;; -NGC5625;GPair;14:27:01.50;+39:57:25.0;Boo;1.20;;;;;;;;;;;;;;;;;MCG +07-30-013;;;Diameter of the group inferred by the author. -NGC5625 NED01;G;14:27:00.60;+39:57:22.4;Boo;0.48;0.28;144;16.68;;;;;23.88;Sbc;;;;;;;;MCG +07-30-013 NED01,PGC 2158342,SDSS J142700.60+395722.4;;;B-Mag taken from LEDA -NGC5625 NED02;G;14:27:02.33;+39:57:26.2;Boo;1.00;0.78;67;14.80;;12.33;11.81;11.29;23.42;Sc;;;;;;;;2MASX J14270227+3957266,IRAS 14250+4010,MCG +07-30-013 NED02,PGC 051592,SDSS J142702.32+395726.1,SDSS J142702.33+395726.1,SDSS J142702.33+395726.2;;; -NGC5626;G;14:29:49.09;-29:44:54.5;Hya;1.37;1.05;102;14.01;;10.43;9.71;9.43;23.40;S0-a;;;;;;;;2MASX J14294908-2944544,ESO 447-008,ESO-LV 447-0080,MCG -05-34-015,PGC 051794;;; -NGC5627;G;14:28:34.28;+11:22:41.7;Boo;1.28;0.78;121;14.70;;11.18;10.44;10.27;23.81;S0;;;;;;;;2MASX J14283429+1122417,MCG +02-37-013,PGC 051705,SDSS J142834.28+112241.6,UGC 09280;;; -NGC5628;G;14:28:25.79;+17:55:27.7;Boo;0.97;0.63;173;14.50;;11.13;10.40;10.10;23.24;E;;;;;;;;2MASX J14282579+1755272,MCG +03-37-019,PGC 051699,SDSS J142825.79+175527.6,SDSS J142825.79+175527.7,UGC 09278;;; -NGC5629;G;14:28:16.37;+25:50:55.6;Boo;1.71;1.58;110;14.20;;10.17;9.45;9.22;23.08;S0;;;;;;;;2MASX J14281635+2550557,MCG +04-34-034,PGC 051681,SDSS J142816.37+255055.5,UGC 09281;;; -NGC5630;G;14:27:36.61;+41:15:27.9;Boo;1.48;0.52;96;13.60;;11.54;11.05;10.84;22.42;SBd;;;;;;;;2MASX J14273658+4115281,IRAS 14256+4128,MCG +07-30-014,PGC 051635,SDSS J142736.60+411527.9,SDSS J142736.61+411527.9,UGC 09270;;HOLM 649B is a star.; -NGC5631;G;14:26:33.30;+56:34:57.5;UMa;1.95;1.95;140;13.51;12.55;9.39;8.67;8.47;22.69;S0;;;;;;;;2MASX J14263328+5634575,MCG +10-21-002,PGC 051564,SDSS J142633.29+563457.4,UGC 09261;;; -NGC5632;*;14:29:19.55;-00:26:53.4;Vir;;;;;;;;;;;;;;;;;;SDSS J142919.54-002653.3;;; -NGC5633;G;14:27:28.38;+46:08:47.5;Boo;1.09;0.72;11;13.18;12.93;10.52;9.87;9.59;21.73;Sb;;;;;;;;2MASX J14272838+4608475,IRAS 14255+4622,MCG +08-26-034,PGC 051620,SDSS J142728.38+460847.5,SDSS J142728.38+460847.6,UGC 09271;;; -NGC5634;GCl;14:29:37.28;-05:58:35.1;Vir;4.50;;;10.69;10.05;;;;;;;;;;;;;MWSC 2222;;; -NGC5635;G;14:28:31.76;+27:24:32.2;Boo;2.62;1.00;64;13.90;;9.97;9.23;8.98;23.73;Sb;;;;;;;;2MASX J14283173+2724326,MCG +05-34-049,PGC 051706,SDSS J142831.74+272432.3,UGC 09283;;; -NGC5636;G;14:29:39.02;+03:15:58.7;Vir;1.36;0.89;56;13.70;;11.98;11.32;11.29;23.23;S0-a;;;;;;;;2MASX J14293905+0315583,MCG +01-37-017,PGC 051785,SDSS J142939.01+031558.6,SDSS J142939.02+031558.6,SDSS J142939.02+031558.7,UGC 09304;;; -NGC5637;G;14:28:59.60;+23:11:29.4;Boo;0.84;0.44;7;14.60;;11.60;10.94;10.59;22.57;Sb;;;;;;;;2MASX J14285963+2311294,IRAS 14267+2324,MCG +04-34-037,PGC 051736,SDSS J142859.59+231129.3,SDSS J142859.59+231129.4,SDSS J142859.60+231129.4,UGC 09293;;; -NGC5638;G;14:29:40.38;+03:13:59.9;Vir;1.94;1.71;154;12.14;11.20;9.16;8.50;8.25;22.46;E;;;;;;;;2MASX J14294038+0314003,MCG +01-37-018,PGC 051787,SDSS J142940.37+031359.9,UGC 09308;;; -NGC5639;G;14:28:46.55;+30:24:46.6;Boo;1.26;0.81;108;14.60;;11.83;10.96;10.81;23.33;Sc;;;;;;;;2MASX J14284654+3024467,MCG +05-34-051,PGC 051730,UGC 09290;;; -NGC5640;G;14:20:40.81;+80:07:23.2;Cam;0.78;0.47;22;15.40;;12.23;11.59;11.24;23.69;;;;;;;;;2MASX J14204091+8007234,PGC 051263;;; -NGC5641;G;14:29:16.62;+28:49:18.8;Boo;2.07;1.03;160;13.60;;10.13;9.46;9.19;23.18;Sab;;;;;;;;2MASX J14291660+2849189,MCG +05-34-055,PGC 051758,SDSS J142916.62+284918.7,SDSS J142916.62+284918.8,UGC 09300;;; -NGC5642;G;14:29:13.49;+30:01:35.2;Boo;1.77;1.13;126;14.30;;10.23;9.56;9.35;24.12;E;;;;;;;;2MASX J14291348+3001349,MCG +05-34-052,PGC 051751,SDSS J142913.48+300135.2,UGC 09301;;; -NGC5643;G;14:32:40.74;-44:10:27.9;Lup;5.27;4.60;88;11.03;13.60;8.07;7.46;7.17;23.02;Sc;;;;;;;;2MASX J14324077-4410285,ESO 272-016,ESO-LV 272-0160,IRAS 14294-4357,MCG -07-30-003,PGC 051969;;; -NGC5644;G;14:30:25.58;+11:55:40.8;Boo;1.24;1.14;150;14.10;;10.46;9.72;9.45;23.18;S0;;;;;;;;2MASX J14302556+1155408,MCG +02-37-016,PGC 051834,SDSS J143025.57+115540.7,SDSS J143025.58+115540.7,SDSS J143025.58+115540.8,UGC 09321;;; -NGC5645;G;14:30:39.35;+07:16:30.3;Vir;2.02;1.09;85;12.80;;10.46;9.91;9.69;22.64;SBcd;;;;;;;;2MASX J14303940+0716300,IRAS 14281+0729,MCG +01-37-019,PGC 051846,SDSS J143039.34+071630.3,SDSS J143039.35+071630.3,UGC 09328;;; -NGC5646;G;14:29:34.01;+35:27:43.0;Boo;1.19;0.45;79;14.99;;;;11.20;23.42;Sb;;;;;;;;MCG +06-32-045,PGC 051779,SDSS J142934.01+352743.0,UGC 09312;;; -NGC5647;G;14:30:36.10;+11:52:36.1;Boo;1.02;0.24;180;15.30;;11.87;11.25;10.99;23.66;SABa;;;;;;;;2MASX J14303611+1152360,MCG +02-37-017,PGC 051843,SDSS J143036.09+115236.0,UGC 09329;;; -NGC5648;G;14:30:32.60;+14:01:23.0;Boo;0.77;0.63;175;14.10;;12.39;11.67;11.45;22.53;Sb;;;;;5649;;;IRAS 14281+1414,MCG +02-37-019,PGC 051840,UGC 09330;;; -NGC5649;Dup;14:30:32.60;+14:01:23.0;Boo;;;;;;;;;;;;;;;5648;;;;;; -NGC5650;G;14:31:01.08;+05:58:42.3;Vir;1.05;0.24;114;13.80;;11.25;10.68;10.43;22.00;Sbc;;;;;5652;;;2MASX J14310109+0558424,IRAS 14285+0611,MCG +01-37-020,PGC 051865,UGC 09334;;HOLM 656B is a star.; -NGC5651;*;14:31:12.70;-00:19:22.7;Vir;;;;;;;;;;;;;;;;;;SDSS J143112.70-001922.6;;; -NGC5652;Dup;14:31:01.08;+05:58:42.3;Vir;;;;;;;;;;;;;;;5650;;;;;; -NGC5653;G;14:30:10.42;+31:12:55.8;Boo;1.60;1.33;120;12.70;;10.18;9.50;9.17;22.52;Sb;;;;;5653E;1026;;2MASX J14301041+3112558,IRAS 14280+3126,MCG +05-34-058,PGC 051814,UGC 09318;;; -NGC5654;G;14:30:01.33;+36:21:39.3;Boo;1.25;0.73;133;14.10;;10.57;9.88;9.60;23.29;S0-a;;;;;;;;2MASX J14300134+3621392,MCG +06-32-050,PGC 051807,SDSS J143001.32+362139.3,SDSS J143001.70+362129.6,UGC 09319;;; -NGC5655;G;14:30:50.93;+13:58:07.5;Boo;0.73;0.47;152;14.00;;11.98;11.38;10.92;22.06;SBc;;;;;;;;2MASX J14305092+1358077,IRAS 14284+1411,MCG +02-37-020,PGC 051857,UGC 09333;;Often mistakenly called NGC 5649.; -NGC5656;G;14:30:25.51;+35:19:15.7;Boo;1.26;0.89;57;12.73;12.43;10.33;9.64;9.35;22.16;Sab;;;;;;;;2MASX J14302551+3519159,IRAS 14283+3532,MCG +06-32-053,PGC 051831,SDSS J143025.50+351915.7,SDSS J143025.51+351915.6,SDSS J143025.51+351915.7,UGC 09332;;; -NGC5657;G;14:30:43.60;+29:10:51.0;Boo;1.75;0.71;168;14.40;;11.34;10.65;10.38;23.66;Sb;;;;;;;;2MASX J14304364+2910503,IRAS 14285+2924,MCG +05-34-060,PGC 051850,SDSS J143043.59+291050.9,UGC 09335;;; -NGC5658;*;14:31:55.29;-00:22:02.3;Vir;;;;;;;;;;;;;;;;;;SDSS J143155.28-002202.2;;; -NGC5659;G;14:31:06.14;+25:21:18.4;Boo;1.79;0.51;45;15.00;;11.36;10.69;10.39;23.65;SBb;;;;;;;;2MASX J14310611+2521183,MCG +04-34-044,PGC 051875,SDSS J143106.13+252118.4,UGC 09342;;; -NGC5660;G;14:29:49.81;+49:37:21.6;Boo;2.64;2.43;30;12.20;;10.26;9.54;9.39;23.15;SABc;;;;;;;;2MASX J14294980+4937214,IRAS 14280+4950,MCG +08-26-039,PGC 051795,SDSS J142949.81+493721.6,TYC 3475-83-1,UGC 09325;;; -NGC5661;G;14:31:57.39;+06:15:01.5;Vir;1.14;0.61;22;14.20;;12.22;11.52;11.21;22.93;Sb;;;;;;;;2MASX J14315739+0615016,IRAS 14294+0628,MCG +01-37-023,PGC 051921,SDSS J143157.38+061501.4,SDSS J143157.39+061501.5,UGC 09346;;; -NGC5662;OCl;14:35:37.58;-56:37:05.1;Cen;8.10;;;6.18;5.50;;;;;;;;;;;;;MWSC 2234;;; -NGC5663;G;14:33:56.30;-16:34:51.8;Lib;0.92;0.87;60;15.00;;11.19;10.55;10.24;23.62;E-S0;;;;;;;;2MASX J14335631-1634509,MCG -03-37-003,PGC 052049;;; -NGC5664;G;14:33:43.62;-14:37:10.9;Lib;0.85;0.39;27;15.00;;11.28;10.52;10.22;22.55;Sa;;;;;;4455;;2MASX J14334360-1437109,IRAS 14309-1424,MCG -02-37-008,PGC 052033;;; -NGC5665;G;14:32:25.74;+08:04:43.1;Boo;1.88;1.17;150;12.60;;10.36;9.68;9.48;22.45;Sc;;;;;;;;2MASX J14322579+0804424,IRAS 14299+0817,MCG +01-37-024,PGC 051953,SDSS J143225.74+080443.1,UGC 09352;;; -NGC5665A;Other;14:32:27.34;+08:04:43.4;Boo;;;;;;;;;;;;;;;;;;SDSS J143227.33+080443.3;;Part of galaxy NGC5665; -NGC5666;G;14:33:09.21;+10:30:38.9;Boo;0.97;0.75;150;13.50;;11.00;10.33;10.18;22.21;S0;;;;;;;;2MASX J14330917+1030388,IRAS 14307+1043,MCG +02-37-023,PGC 051995,SDSS J143309.21+103038.9,UGC 09360;;; -NGC5667;G;14:30:22.91;+59:28:11.2;Dra;1.62;0.82;170;13.10;;11.24;10.51;10.47;22.51;Sc;;;;;;;;2MASX J14302288+5928108,IRAS 14289+5941,MCG +10-21-004,PGC 051830,SDSS J143022.90+592811.1,UGC 09344;;; -NGC5668;G;14:33:24.34;+04:27:01.6;Vir;1.91;1.61;107;12.70;;;;;22.25;Scd;;;;;;;;2MASX J14332469+0427223,IRAS 14309+0440,MCG +01-37-028,PGC 052018,SDSS J143324.33+042701.6,SDSS J143324.33+042701.7,SDSS J143324.34+042701.7,UGC 09363;;2MASS position refers to a superposed star.; -NGC5669;G;14:32:43.49;+09:53:25.6;Boo;2.57;1.46;54;13.20;;11.18;10.53;10.35;23.31;Sc;;;;;;;;2MASX J14324347+0953254,IRAS 14302+1006,MCG +02-37-021,PGC 051973,UGC 09353;;; -NGC5670;G;14:35:36.03;-45:58:01.1;Lup;2.59;1.18;67;12.96;;9.57;8.84;8.61;23.71;S0;;;;;;;;2MASX J14353601-4558011,ESO 272-019,ESO-LV 272-0190,PGC 052161;;; -NGC5671;G;14:27:42.00;+69:41:39.0;UMi;1.41;1.02;62;14.40;;11.28;10.55;10.28;23.61;Sb;;;;;;;;2MASX J14274201+6941392,MCG +12-14-006,PGC 051641,UGC 09297;;; -NGC5672;G;14:32:38.34;+31:40:12.6;Boo;0.91;0.75;49;14.50;;12.03;11.28;11.09;22.52;Sb;;;;;;1030;;2MASX J14323834+3140127,IRAS 14305+3153,MCG +05-34-068,PGC 051964,SDSS J143238.34+314012.6,UGC 09354;;; -NGC5673;G;14:31:30.91;+49:57:31.4;Boo;2.33;0.45;134;14.00;;11.79;11.02;11.08;22.25;Sc;;;;;;;;2MASX J14313092+4957317,MCG +08-26-041,PGC 051901,SDSS J143130.90+495731.3,SDSS J143130.90+495731.4,UGC 09347;;; -NGC5674;G;14:33:52.24;+05:27:29.6;Vir;1.15;0.30;6;13.70;13.70;11.03;10.50;9.96;22.03;Sc;;;;;;;;2MASX J14335228+0527298,IRAS 14313+0540,MCG +01-37-031,PGC 052042,SDSS J143352.28+052730.1,UGC 09369;;; -NGC5675;G;14:32:39.83;+36:18:07.9;Boo;2.27;0.72;135;14.00;;10.36;9.56;9.42;23.73;SBab;;;;;;;;2MASX J14323987+3618083,IRAS 14305+3631,MCG +06-32-062,PGC 051965,SDSS J143239.83+361808.0,SDSS J143239.84+361808.0,UGC 09357;;; -NGC5676;G;14:32:46.85;+49:27:28.4;Boo;3.59;1.61;46;11.70;;8.97;8.20;7.91;22.74;Sc;;;;;;;;2MASX J14324685+4927281,IRAS 14310+4940,MCG +08-26-043,PGC 051978,SDSS J143246.84+492728.4,SDSS J143246.85+492728.4,UGC 09366;;; -NGC5677;G;14:34:12.74;+25:28:04.9;Boo;0.94;0.70;136;14.80;;11.44;10.88;10.56;23.05;SBbc;;;;;;;;2MASX J14341275+2528048,IRAS 14319+2541,MCG +04-34-046,PGC 052072,SDSS J143412.73+252804.9,UGC 09378;;; -NGC5678;G;14:32:05.61;+57:55:17.2;Dra;2.96;1.55;2;12.10;;9.25;8.55;8.28;22.92;SABb;;;;;;;;2MASX J14320558+5755171,IRAS 14306+5808,MCG +10-21-005,PGC 051932,SDSS J143205.60+575517.1,SDSS J143205.61+575517.1,SDSS J143205.61+575517.2,UGC 09358;;The 2MASS position is 6 arcsec northwest of the optical nucleus.; -NGC5679;GTrpl;14:35:08.70;+05:21:23.0;Vir;1.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC5679A;G;14:35:06.39;+05:21:24.6;Vir;0.78;0.47;133;14.50;;14.37;13.83;13.91;;Sc;;;;;;;;2MASX J14350635+0521244,MCG +01-37-034,PGC 052130,SDSS J143506.39+052124.5,UGC 09383 NOTES01;;; -NGC5679B;G;14:35:08.76;+05:21:32.2;Vir;1.08;0.62;124;14.50;;12.20;11.54;11.36;22.83;Sb;;;;;;;;2MASX J14350876+0521324,MCG +01-37-035,PGC 052132,SDSS J143508.75+052132.2,UGC 09383;;; -NGC5679C;G;14:35:10.99;+05:21:15.4;Vir;0.27;0.18;11;16.00;;;;;22.94;Scd;;;;;;;;MCG +01-37-036,PGC 052129,SDSS J143510.98+052115.3,UGC 09383 NOTES02;;; -NGC5680;G;14:35:44.53;-00:00:48.1;Vir;0.96;0.67;21;15.40;;11.51;10.87;10.70;23.83;E-S0;;;;;;;;2MASX J14354456-0000474,PGC 052173,SDSS J143544.53-000048.1;;"Stars superposed 17"" NE and 27"" north."; -NGC5681;G;14:35:42.87;+08:18:02.2;Boo;0.86;0.61;2;14.30;;11.94;11.31;11.00;22.55;Sbc;;;;;;;;2MASX J14354286+0818018,IRAS 14332+0831,MCG +02-37-025,PGC 052169,SDSS J143542.86+081802.1,UGC 09393;;; -NGC5682;G;14:34:44.98;+48:40:12.9;Boo;0.65;0.24;136;15.10;;13.27;12.48;12.25;21.89;Sb;;;;;;;;2MASX J14344551+4840039,IRAS 14329+4853,MCG +08-27-002,PGC 052107,SDSS J143444.97+484012.8,SDSS J143444.98+484012.9,UGC 09388;;; -NGC5683;G;14:34:52.45;+48:39:42.9;Boo;0.57;0.49;95;16.46;16.08;12.74;11.66;11.50;23.21;S0-a;;;;;;;;2MASX J14345248+4839429,MCG +08-27-003,PGC 052114,SDSS J143452.45+483942.7,SDSS J143452.45+483942.8,SDSS J143452.46+483942.7;;; -NGC5684;G;14:35:50.16;+36:32:35.6;Boo;1.41;1.12;101;14.20;;10.60;9.99;9.72;23.13;S0;;;;;;;;2MASX J14355015+3632352,MCG +06-32-073,PGC 052179,SDSS J143550.15+363235.6,SDSS J143550.16+363235.6,UGC 09402;;; -NGC5685;G;14:36:15.37;+29:54:30.2;Boo;1.05;0.94;20;;;;;;23.72;E;;;;;;;;2MASX J14361538+2954299,MCG +05-34-081,PGC 052192,SDSS J143615.36+295430.1,SDSS J143615.36+295430.2,SDSS J143615.37+295430.1,SDSS J143615.37+295430.2,UGC 09403;;; -NGC5686;G;14:36:02.59;+36:30:11.5;Boo;0.77;0.73;80;15.20;;12.08;11.43;11.20;23.08;SBa;;;;;;;;2MASX J14360260+3630113,MCG +06-32-075,PGC 052189,SDSS J143602.58+363011.5,SDSS J143602.59+363011.5;;; -NGC5687;G;14:34:52.40;+54:28:33.1;Boo;2.41;1.37;103;13.30;;9.89;9.14;8.95;23.21;E-S0;;;;;;;;2MASX J14345236+5428324,MCG +09-24-020,PGC 052116,SDSS J143452.39+542833.0,UGC 09395;;; -NGC5688;G;14:39:35.15;-45:01:08.4;Lup;4.13;1.91;86;12.62;;9.21;8.49;8.32;23.96;Sc;;;;;;;;2MASX J14393515-4501082,ESO 272-022,ESO-LV 272-0220,IRAS 14363-4448,MCG -07-30-004,PGC 052381;;; -NGC5689;G;14:35:29.69;+48:44:29.9;Boo;3.66;0.91;86;12.70;;9.38;8.68;8.40;23.88;S0-a;;;;;;;;2MASX J14352967+4844293,IRAS 14337+4857,MCG +08-27-004,PGC 052154,UGC 09399;;; -NGC5690;G;14:37:41.07;+02:17:27.0;Vir;3.20;0.99;145;13.10;;9.96;9.33;8.97;22.79;Sc;;;;;;;;2MASX J14374107+0217274,IRAS 14351+0230,MCG +00-37-019,PGC 052273,SDSS J143741.07+021726.9,UGC 09416;;; -NGC5691;G;14:37:53.34;-00:23:56.0;Vir;1.86;1.40;101;12.90;;10.84;10.14;9.97;22.84;Sa;;;;;;;;2MASX J14375333-0023559,IRAS 14353-0011,MCG +00-37-020,PGC 052291,SDSS J143752.54-002355.1,SDSS J143753.33-002355.9,SDSS J143753.52-002355.7,UGC 09420;;; -NGC5692;G;14:38:18.11;+03:24:37.2;Vir;0.95;0.60;36;13.30;;11.42;10.79;10.54;21.68;Sbc;;;;;;;;2MASX J14381814+0324368,IRAS 14357+0337,MCG +01-37-039,PGC 052317,SDSS J143818.11+032437.1,SDSS J143818.11+032437.2,UGC 09427;;; -NGC5693;G;14:36:11.19;+48:35:06.1;Boo;1.57;1.07;50;14.50;;11.84;11.26;11.08;23.59;Scd;;;;;;;;2MASX J14361115+4835043,MCG +08-27-006,PGC 052194,SDSS J143611.18+483506.1,SDSS J143611.19+483506.1,SDSS J143611.19+483506.2,UGC 09406;;; -NGC5694;GCl;14:39:36.51;-26:32:18.0;Hya;3.30;;;11.58;10.89;;;;;;;;;;;;;C 066,MWSC 2238;;; -NGC5695;G;14:37:22.12;+36:34:04.1;Boo;0.99;0.49;139;14.55;13.60;10.63;9.98;9.67;22.01;SBab;;;;;;;;2MASX J14372214+3634040,IRAS 14353+3647,MCG +06-32-077,PGC 052261,SDSS J143722.14+363404.2,SDSS J143722.14+363404.3,UGC 09421;;; -NGC5696;G;14:36:57.08;+41:49:41.2;Boo;1.21;0.84;42;14.10;;11.20;10.64;10.31;22.84;SBbc;;;;;;;;2MASX J14365708+4149409,IRAS 14350+4202,MCG +07-30-036,PGC 052235,SDSS J143657.08+414941.2,UGC 09415;;; -NGC5697;G;14:36:32.06;+41:41:09.2;Boo;1.00;0.64;26;14.60;;11.99;11.30;11.05;23.05;Sc;;;;;;4471;;2MASX J14363198+4141084,IRAS 14345+4154,MCG +07-30-031,PGC 052207,SDSS J143632.06+414109.1,SDSS J143632.06+414109.2,TYC 3039-465-1,UGC 09407;;; -NGC5698;G;14:37:14.70;+38:27:15.4;Boo;1.73;0.74;61;14.00;;11.24;10.58;10.29;23.26;Sb;;;;;;;;2MASX J14371464+3827150,IRAS 14352+3840,MCG +07-30-038,PGC 052251,SDSS J143714.69+382715.2,SDSS J143714.69+382715.3,SDSS J143714.69+382715.4,UGC 09419;;; -NGC5699;G;14:38:42.36;+30:27:57.3;Boo;0.61;0.56;40;15.70;;12.14;11.70;11.28;23.45;E;;;;;5706;;;2MASX J14384237+3027577,MCG +05-35-002,PGC 052334,SDSS J143842.35+302757.2,SDSS J143842.36+302757.3;;; -NGC5700;G;14:37:01.56;+48:32:41.4;Boo;0.99;0.55;37;15.20;;12.66;12.02;11.92;23.42;SBb;;;;;;;;2MASX J14370164+4832422,MCG +08-27-007,PGC 052237,SDSS J143701.54+483241.4,SDSS J143701.56+483241.3,SDSS J143701.56+483241.4,UGC 09423;;; -NGC5701;G;14:39:11.08;+05:21:48.5;Vir;2.00;1.60;4;11.76;10.88;9.06;8.36;8.14;22.28;S0-a;;;;;;;;2MASX J14391104+0521489,MCG +01-37-042,PGC 052365,SDSS J143911.07+052148.5,UGC 09436;;; -NGC5702;G;14:38:55.08;+20:30:24.2;Boo;1.19;0.91;137;14.50;;11.05;10.34;10.07;23.39;S0;;;;;;;;2MASX J14385510+2030240,MCG +04-35-002,PGC 052347,SDSS J143855.08+203024.1,UGC 09434;;; -NGC5703;G;14:38:50.02;+30:26:33.1;Boo;1.51;0.44;103;14.50;;11.41;10.74;10.51;23.47;Sa;;;;;5709;;;2MASX J14384995+3026338,IRAS 14366+3039,MCG +05-35-003,PGC 052343,SDSS J143850.01+302633.0,SDSS J143850.01+302633.1,UGC 09435;;; -NGC5704;G;14:38:16.28;+40:27:24.3;Boo;1.56;0.57;177;13.90;;11.64;11.00;10.74;22.65;Scd;;;;;5708;;;2MASX J14381625+4027243,IRAS 14363+4040,MCG +07-30-044,PGC 052315,SDSS J143816.28+402724.2,SDSS J143816.28+402724.3,UGC 09430;;Identification as NGC 5704 is not certain.; -NGC5705;G;14:39:49.69;-00:43:06.5;Vir;1.35;0.60;77;13.30;;12.28;11.65;11.31;22.92;SBcd;;;;;;;;2MASX J14394969-0043061,IRAS 14371-0029,MCG +00-37-021,PGC 052395,SDSS J143949.46-004309.5,SDSS J143949.68-004306.4,UGC 09447;;Confused HIPASS source; -NGC5706;Dup;14:38:42.36;+30:27:57.3;Boo;;;;;;;;;;;;;;;5699;;;;;; -NGC5707;G;14:37:30.77;+51:33:42.7;Boo;2.38;0.60;33;13.30;;10.36;9.67;9.44;23.18;Sab;;;;;;;;MCG +09-24-023,PGC 052266,SDSS J143730.76+513342.6,SDSS J143730.77+513342.7,UGC 09428;;; -NGC5708;Dup;14:38:16.28;+40:27:24.3;Boo;;;;;;;;;;;;;;;5704;;;;;; -NGC5709;Dup;14:38:50.02;+30:26:33.1;Boo;;;;;;;;;;;;;;;5703;;;;;; -NGC5710;G;14:39:16.19;+20:02:37.3;Boo;1.42;1.03;174;14.50;;11.01;10.31;10.02;23.64;E;;;;;;;;2MASX J14391621+2002376,MCG +03-37-032,PGC 052369,SDSS J143916.18+200237.3,UGC 09440;;; -NGC5711;G;14:39:22.56;+19:59:27.2;Boo;1.03;0.46;71;15.10;;12.01;11.28;10.93;23.59;SBa;;;;;;;;2MASX J14392238+1959266,IRAS 14370+2012,MCG +03-37-033,PGC 052376,SDSS J143922.55+195927.1,UGC 09445;;; -NGC5712;G;14:29:41.72;+78:51:51.3;UMi;0.72;0.68;110;15.30;;11.86;11.37;11.10;23.47;E;;;;;;;;2MASX J14294194+7851515,MCG +13-10-021,PGC 051799;;; -NGC5713;G;14:40:11.51;-00:17:20.3;Vir;2.47;1.70;11;11.84;11.20;9.22;8.61;8.33;22.03;SABb;;;;;;;;2MASX J14401152-0017211,IRAS 14376-0004,MCG +00-37-022,PGC 052412,SDSS J144010.75-001738.3,SDSS J144011.50-001720.3,UGC 09451;;; -NGC5714;G;14:38:11.52;+46:38:17.7;Boo;2.84;0.50;82;14.20;;11.00;10.23;9.97;23.77;SBc;;;;;;;;2MASX J14381154+4638180,IRAS 14363+4651,MCG +08-27-011,PGC 052307,SDSS J143811.51+463817.6,SDSS J143811.52+463817.7,UGC 09431;;; -NGC5715;OCl;14:43:29.69;-57:34:37.3;Cir;3.60;;;;9.80;;;;;;;;;;;;;MWSC 2245;;; -NGC5716;G;14:41:05.52;-17:28:37.1;Lib;1.57;1.19;89;13.00;;10.98;10.39;9.95;23.19;SBc;;;;;;;;2MASX J14410551-1728369,IRAS 14383-1715,MCG -03-37-004,PGC 052458;;; -NGC5717;G;14:38:37.69;+46:39:47.3;Boo;1.02;0.63;33;14.30;;11.46;10.73;10.48;23.87;S0-a;;;;;;;;2MASX J14383767+4639472,MCG +08-27-012,PGC 052332,SDSS J143837.69+463947.2;;; -NGC5718;G;14:40:42.84;+03:27:55.5;Vir;1.54;1.09;96;14.60;;10.55;9.86;9.51;23.65;E-S0;;;;;;;;2MASX J14404287+0327555,MCG +01-37-047,PGC 052441,SDSS J144042.83+032755.2,SDSS J144042.83+032755.5,SDSS J144042.83+032756.0,UGC 09459;;; -NGC5719;G;14:40:56.36;-00:19:05.6;Vir;3.08;1.29;99;13.10;;9.30;8.54;8.23;23.97;SABa;;;;;;;;2MASX J14405639-0019054,IRAS 14383-0006,MCG +00-37-024,PGC 052455,SDSS J144056.35-001905.5,SDSS J144056.36-001905.4,SDSS J144056.36-001905.5,SDSS J144056.36-001905.6,UGC 09462;;One APM position is on the eastern end of the bulge.; -NGC5720;G;14:38:33.29;+50:48:54.8;Boo;1.90;1.23;132;14.70;;11.25;10.51;10.27;24.27;SBb;;;;;;;;2MASX J14383328+5048552,MCG +09-24-025,PGC 052328,SDSS J143833.29+504854.7,UGC 09439;;; -NGC5721;G;14:38:52.96;+46:40:28.0;Boo;0.35;0.28;147;15.30;;13.26;12.79;12.36;22.25;E;;;;;;;;2MASX J14385293+4640282,MCG +08-27-013,PGC 052346,SDSS J143852.96+464027.9,SDSS J143852.96+464028.0;;; -NGC5722;G;14:38:54.41;+46:39:56.2;Boo;0.72;0.63;114;15.00;;12.04;11.24;11.01;23.51;E-S0;;;;;;;;2MASX J14385438+4639562,MCG +08-27-014,PGC 052355,SDSS J143854.40+463956.1,SDSS J143854.40+463956.2,SDSS J143854.41+463956.2;;; -NGC5723;G;14:38:57.92;+46:41:22.6;Boo;0.64;0.23;180;17.00;;13.26;12.51;12.25;24.43;E;;;;;;;;2MASX J14385789+4641221,MCG +08-27-015,PGC 052354,SDSS J143857.92+464122.5,SDSS J143857.92+464122.6;;; -NGC5724;*;14:39:02.13;+46:41:31.3;Boo;;;;18.00;;;;;;;;;;;;;;;;Most references to NGC 5724 are for NGC 5424, a member of the group MKW 12.; -NGC5725;G;14:40:58.32;+02:11:11.6;Vir;0.95;0.57;31;14.50;;12.55;11.89;11.58;22.73;SBcd;;;;;;;;2MASX J14405838+0211125,IRAS 14384+0224,MCG +00-37-025,PGC 052456,SDSS J144058.25+021112.1,SDSS J144058.31+021110.5,SDSS J144058.31+021111.5,UGC 09466;;; -NGC5726;G;14:42:56.05;-18:26:41.6;Lib;1.20;0.93;151;13.87;;10.62;9.99;9.72;23.11;E-S0;;;;;;;;2MASX J14425605-1826414,ESO 580-012,ESO-LV 580-0120,MCG -03-37-006,PGC 052563;;; -NGC5727;G;14:40:26.12;+33:59:20.8;Boo;0.78;0.31;141;14.20;;;;;22.09;SABd;;;;;;;;MCG +06-32-083,PGC 052424,SDSS J144026.11+335920.8,SDSS J144026.12+335920.8,UGC 09465;;; -NGC5728;G;14:42:23.90;-17:15:11.1;Lib;3.20;1.87;15;14.34;13.40;9.18;8.48;8.17;23.22;Sa;;;;;;;;2MASX J14422392-1715114,IRAS 14396-1702,MCG -03-37-005,PGC 052521;;; -NGC5729;G;14:42:06.88;-09:00:34.0;Lib;2.47;0.62;175;12.80;;10.39;9.89;9.49;22.74;Sb;;;;;;;;2MASX J14420688-0900339,IRAS 14394-0847,MCG -01-37-012,PGC 052507;;; -NGC5730;G;14:39:52.16;+42:44:32.5;Boo;2.01;0.38;89;14.70;;11.94;11.20;11.00;23.23;Sm;;;;;;;;2MASX J14395218+4244324,IRAS 14379+4257,MCG +07-30-046,PGC 052396,SDSS J143952.16+424432.4,SDSS J143952.16+424432.5,UGC 09456;;; -NGC5731;G;14:40:09.21;+42:46:46.4;Boo;1.50;0.37;115;14.00;;12.40;11.93;11.55;22.64;Sc;;;;;;1045;;2MASX J14400926+4246463,IRAS 14382+4259,MCG +07-30-047,PGC 052409,SDSS J144009.21+424646.3,SDSS J144009.21+424646.4,UGC 09460;;The IC identification is uncertain.; -NGC5732;G;14:40:38.95;+38:38:16.1;Boo;1.23;0.65;42;14.40;;11.93;11.34;11.10;23.03;Sbc;;;;;;;;2MASX J14403899+3838157,IRAS 14386+3851,MCG +07-30-048,PGC 052438,SDSS J144038.95+383816.1,UGC 09467;;; -NGC5733;G;14:42:45.93;-00:21:03.9;Vir;0.99;0.34;29;14.60;;12.85;12.16;11.64;22.58;Sc;;;;;;;;2MASX J14424590-0021049,MCG +00-38-001,PGC 052550,SDSS J144245.90-002104.1,SDSS J144245.90-002104.2,SDSS J144245.91-002103.8,SDSS J144245.91-002103.9,SDSS J144245.93-002103.9;;; -NGC5734;G;14:45:09.05;-20:52:13.7;Lib;1.40;0.92;45;13.75;;10.24;9.49;9.14;23.22;S0;;;;;5734N;;;2MASX J14450905-2052138,ESO 580-016,ESO-LV 580-0160,IRAS 14423-2039,MCG -03-38-003,PGC 052678;;; -NGC5735;G;14:42:33.24;+28:43:35.2;Boo;2.00;1.47;51;14.06;13.36;11.29;10.61;10.25;23.83;Sbc;;;;;;;;2MASX J14423324+2843347,IRAS 14403+2856,MCG +05-35-007,PGC 052535,SDSS J144233.24+284335.2,UGC 09481;;; -NGC5736;G;14:43:30.81;+11:12:09.7;Boo;0.96;0.62;97;14.90;;11.78;11.20;10.85;23.44;S0-a;;;;;;;;2MASX J14433082+1112099,MCG +02-38-001,PGC 052597,SDSS J144330.80+111209.6,SDSS J144330.80+111209.7;;; -NGC5737;G;14:43:11.82;+18:52:47.8;Boo;1.14;0.78;177;14.60;;11.66;10.97;10.65;23.39;Sb;;;;;;;;2MASX J14431179+1852479,MCG +03-37-039,PGC 052582,SDSS J144311.82+185247.8,UGC 09488;;; -NGC5738;G;14:43:56.37;+01:36:15.0;Vir;0.94;0.48;71;14.70;;11.71;11.05;10.80;23.30;S0;;;;;;;;2MASX J14435637+0136145,MCG +00-38-002,PGC 052614,SDSS J144356.37+013615.0,SDSS J144356.38+013615.0;;; -NGC5739;G;14:42:28.91;+41:50:32.4;Boo;1.75;1.26;44;13.70;;10.00;9.28;8.99;23.18;S0-a;;;;;;;;2MASX J14422885+4150321,MCG +07-30-052,PGC 052531,SDSS J144228.91+415032.4,UGC 09486;;; -NGC5740;G;14:44:24.45;+01:40:47.2;Vir;2.70;1.34;165;12.50;;9.82;9.07;8.88;23.00;Sb;;;;;;;;2MASX J14442442+0140468,IRAS 14418+0153,MCG +00-38-003,PGC 052641,SDSS J144424.44+014047.1,SDSS J144424.45+014047.2,SDSS J144424.50+014048.0,UGC 09493;;The APM position is northwest of the nucleus.; -NGC5741;G;14:45:51.72;-11:54:51.4;Lib;1.05;0.99;145;15.00;;10.89;10.22;9.93;23.61;E;;;;;;;;2MASX J14455173-1154507,MCG -02-38-008,PGC 052718;;; -NGC5742;G;14:45:36.88;-11:48:34.7;Lib;1.17;0.87;72;14.00;;10.38;9.65;9.35;23.05;S0;;;;;;;;2MASX J14453688-1148347,IRAS 14428-1135,MCG -02-38-007,PGC 052707;;; -NGC5743;G;14:45:10.99;-20:54:48.6;Lib;1.29;0.47;92;13.85;;10.88;10.15;9.81;22.50;Sb;;;;;5734S;;;2MASX J14451098-2054488,ESO 580-017,ESO-LV 580-0170,MCG -03-38-004,PGC 052680;;; -NGC5744;G;14:46:38.65;-18:30:47.8;Lib;1.05;0.69;97;14.21;;12.27;11.60;11.51;22.96;Sa;;;;;;;;2MASX J14463867-1830477,ESO 580-023,ESO-LV 580-0230,IRAS 14438-1818,MCG -03-38-007,PGC 052761;;NGC identification is not certain.; -NGC5745;GTrpl;14:45:02.16;-13:56:46.4;Lib;1.62;0.81;79;14.00;;;;;22.79;Sa;;;;;;;;2MASXJ14450189-1356477,IRAS14423-1344,MCG -02-38-004,PGC 052669;;Part of the GGroup VV 098.; -NGC5746;G;14:44:55.92;+01:57:18.0;Vir;7.24;1.08;172;12.30;;7.95;7.17;6.88;23.19;Sb;;;;;;;;2MASX J14445600+0157170,IRAS 14424+0209,MCG +00-38-005,PGC 052665,SDSS J144455.91+015717.8,SDSS J144455.91+015718.0,UGC 09499;;; -NGC5747;GPair;14:44:20.80;+12:07:47.0;Boo;1.30;;;;;;;;;;;;;;;4493;;;;;Diameter of the group inferred by the author. -NGC5747 NED01;G;14:44:20.80;+12:07:42.0;Boo;0.43;0.20;161;;;11.47;10.78;10.44;;SBa;;;;;;;;PGC 093126,UGC 09496 NOTES01;;; -NGC5747 NED02;G;14:44:20.80;+12:07:55.2;Boo;1.00;0.78;174;14.40;;11.30;10.52;9.89;22.98;SBbc;;;;;;;;2MASX J14442079+1207551,IRAS 14419+1220,MCG +02-38-002,PGC 052638,SDSS J144420.79+120755.2,UGC 09496;;; -NGC5748;G;14:45:05.11;+21:54:58.4;Boo;0.96;0.63;150;15.40;;12.09;11.34;11.12;23.56;Sb;;;;;;;;2MASX J14450508+2154583,PGC 052672,SDSS J144505.10+215458.3;;; -NGC5749;OCl;14:48:53.94;-54:29:51.7;Lup;7.20;;;;8.80;;;;;;;;;;;;;MWSC 2256;;; -NGC5750;G;14:46:11.12;-00:13:22.6;Vir;2.65;1.37;70;16.23;15.58;9.39;8.64;8.44;23.20;S0-a;;;;;;;;2MASX J14461110-0013229,IRAS 14436-0000,MCG +00-38-006,PGC 052735,SDSS J144611.12-001322.5,SDSS J144611.12-001322.6,SDSS J144611.12-001322.8,SDSS J144611.13-001322.7,UGC 09512;;The APM position is 6 arcsec northwest of the nucleus.; -NGC5751;G;14:43:49.18;+53:24:02.4;Boo;1.30;0.68;53;13.90;;11.26;10.63;10.51;22.62;SBc;;;;;;;;2MASX J14434921+5324030,IRAS 14422+5336,MCG +09-24-033,PGC 052607,SDSS J144349.18+532402.3,SDSS J144349.18+532402.6,SDSS J144349.19+532402.4,UGC 09498;;; -NGC5752;G;14:45:14.16;+38:43:43.9;Boo;0.77;0.24;122;;;12.71;12.06;11.86;22.82;SABb;;;;;;;;2MASX J14451411+3843436,MCG +07-30-060,PGC 052685,SDSS J144514.15+384343.8,SDSS J144514.16+384343.8,SDSS J144514.16+384343.9,UGC 09505 NOTES01;;Component 'a)' in UGC notes.; -NGC5753;G;14:45:18.88;+38:48:21.2;Boo;0.54;0.43;156;;;13.41;12.67;12.22;23.26;Sab;;;;;;;;2MASX J14451887+3848206,MCG +07-30-062,PGC 052695,SDSS J144518.87+384821.2,SDSS J144518.88+384821.2,UGC 09507 NOTES01;;; -NGC5754;G;14:45:19.65;+38:43:52.4;Boo;1.28;1.10;96;14.10;;10.95;10.26;10.03;23.12;SBb;;;;;;;;2MASX J14451966+3843526,IRAS 14432+3856,MCG +07-30-061,PGC 052686,SDSS J144519.64+384352.3,UGC 09505;;; -NGC5755;G;14:45:24.52;+38:46:47.6;Boo;0.46;0.31;103;15.10;;12.60;11.93;11.43;21.96;SBcd;;;;;;;;2MASX J14452452+3846477,IRAS 14434+3859,MCG +07-30-063,PGC 052690,SDSS J144524.58+384646.9,UGC 09507;;; -NGC5756;G;14:47:33.73;-14:51:12.9;Lib;2.95;1.13;52;13.00;;10.12;9.45;9.17;23.40;Sbc;;;;;;;;2MASX J14473370-1451128,IRAS 14448-1438,MCG -02-38-012,PGC 052825;;HOLM 676B does not exist (it is probably a plate defect).; -NGC5757;G;14:47:46.38;-19:04:42.8;Lib;2.09;1.39;178;12.77;13.73;9.86;9.19;8.89;23.32;Sb;;;;;;;;2MASX J14474636-1904427,ESO 580-033,ESO-LV 580-0330,IRAS 14449-1852,MCG -03-38-014,PGC 052839;;; -NGC5758;G;14:47:02.08;+13:40:06.2;Boo;1.11;0.81;84;15.00;;11.56;10.92;10.58;23.61;E-S0;;;;;;;;2MASX J14470210+1340056,MCG +02-38-011,PGC 052787,SDSS J144702.07+134006.1,SDSS J144702.08+134006.2,UGC 09524;;; -NGC5759;GPair;14:47:14.61;+13:27:28.6;Boo;1.10;0.51;138;14.90;;11.42;10.71;10.32;23.21;Scd;;;;;;;;IRAS 14448+1339,MCG +02-38-012,PGC 052797,UGC 09525;;; -NGC5760;G;14:47:42.26;+18:30:07.3;Boo;1.57;0.65;95;14.30;;11.20;10.48;10.30;23.46;Sa;;;;;;;;2MASX J14474224+1830074,MCG +03-38-015,PGC 052833,SDSS J144742.26+183007.2,UGC 09531;;; -NGC5761;G;14:49:08.48;-20:22:33.7;Lib;1.79;1.41;85;13.62;;10.25;9.50;9.28;23.45;S0;;;;;;;;2MASX J14490848-2022336,ESO 580-039,ESO-LV 580-0390,MCG -03-38-018,PGC 052916;;NGC identification is not certain.; -NGC5762;G;14:48:42.57;+12:27:26.0;Boo;1.34;0.97;141;14.30;;11.71;11.08;10.89;23.46;Sab;;;;;;;;2MASX J14484256+1227254,MCG +02-38-014,PGC 052887,SDSS J144842.57+122725.9,SDSS J144842.57+122726.0,UGC 09535;;; -NGC5763;G;14:48:58.72;+12:29:24.5;Boo;0.64;0.55;90;15.30;;12.19;11.46;10.99;;E;;;;;;;;PGC 052905,SDSS J144858.72+122924.4,SDSS J144858.72+122924.5;;;Diameters and position angle taken from Simbad. -NGC5764;OCl;14:53:32.24;-52:40:13.9;Lup;4.20;;;;12.60;;;;;;;;;;;;;MWSC 2259;;; -NGC5765A;G;14:50:50.70;+05:07:10.0;Vir;0.80;0.35;96;14.60;;;;;22.12;Sc;;;;;;;;MCG +01-38-004,PGC 053011,UGC 09554 NED01;;Component 'a)' in UGC notes.; -NGC5765B;G;14:50:51.51;+05:06:52.1;Vir;0.81;0.56;144;14.60;;11.68;10.52;10.46;22.52;SABb;;;;;;;;2MASX J14505151+0506522,MCG +01-38-005,PGC 053012,SDSS J145051.51+050652.1,UGC 09554 NED02;;Component 'b)' in UGC notes.; -NGC5766;G;14:53:09.56;-21:23:38.8;Lib;0.96;0.63;145;14.20;;11.28;10.54;10.31;22.53;Sbc;;;;;;;;2MASX J14530955-2123389,ESO 580-050,ESO-LV 580-0500,IRAS 14503-2111,MCG -03-38-024,PGC 053186;;; -NGC5767;G;14:49:34.43;+47:22:34.2;Boo;0.95;0.68;160;15.10;;11.33;10.63;10.37;23.17;Sab;;;;;;;;2MASX J14493438+4722342,PGC 052942,SDSS J144934.42+472234.2,SDSS J144934.43+472234.1,SDSS J144934.43+472234.2,UGC 09549;;HOLM 681B is a star.; -NGC5768;G;14:52:07.95;-02:31:47.1;Lib;1.28;0.97;111;14.20;;10.75;10.07;9.73;22.63;SABc;;;;;;;;2MASX J14520794-0231469,IRAS 14495-0219,MCG +00-38-009,PGC 053089,SDSS J145207.95-023147.0,SDSS J145207.96-023147.1,UGC 09564;;; -NGC5769;G;14:52:41.53;+07:55:54.5;Boo;0.98;0.79;102;14.90;;11.57;10.92;10.73;23.76;E;;;;;;;;2MASX J14524154+0755545,MCG +01-38-008,PGC 053145;;; -NGC5770;G;14:53:15.02;+03:57:35.0;Vir;1.10;0.90;105;13.15;12.26;10.14;9.46;9.19;22.14;S0;;;;;;;;2MASX J14531503+0357349,MCG +01-38-011,PGC 053201,SDSS J145315.01+035735.0,UGC 09575;;; -NGC5771;G;14:52:14.33;+29:50:43.5;Boo;0.86;0.75;168;14.60;;11.75;11.09;10.79;23.31;E;;;;;;;;2MASX J14521434+2950437,MCG +05-35-021,PGC 053088,SDSS J145214.32+295043.5;;; -NGC5772;G;14:51:38.88;+40:35:57.0;Boo;1.38;0.52;32;13.90;;10.49;9.72;9.52;22.60;Sb;;;;;;;;2MASX J14513884+4035572,IRAS 14497+4048,MCG +07-31-001,PGC 053067,SDSS J145138.88+403556.9,SDSS J145138.88+403557.0,SDSS J145138.89+403556.9,SDSS J145138.89+403557.1,UGC 09566;;; -NGC5773;G;14:52:30.42;+29:48:26.6;Boo;0.89;0.89;30;14.50;;11.33;10.52;10.32;23.09;Sa;;;;;;;;2MASX J14523041+2948259,MCG +05-35-022,PGC 053124,SDSS J145230.42+294826.6,UGC 09571;;; -NGC5774;G;14:53:42.46;+03:34:57.0;Vir;1.70;1.06;123;13.90;12.94;11.20;10.69;10.56;22.58;Scd;;;;;;;;2MASX J14534275+0334560,IRAS 14511+0347,MCG +01-38-013,PGC 053231,SDSS J145342.46+033456.9,SDSS J145342.46+033457.0,SDSS J145342.47+033457.0,UGC 09576;;The Kiso position is for a superposed star or knot.; -NGC5775;G;14:53:57.60;+03:32:40.0;Vir;3.70;0.85;148;13.00;11.34;8.94;8.12;7.76;22.62;SBc;;;;;;;;2MASX J14535765+0332401,IRAS 14514+0344,MCG +01-38-014,PGC 053247,SDSS J145357.59+033240.0,SDSS J145357.61+033240.0,SDSS J145357.62+033240.1,UGC 09579;;Multiple SDSS entries describe this object.; -NGC5776;G;14:54:32.75;+02:57:59.2;Vir;1.21;0.80;121;14.70;;11.03;10.39;10.05;23.82;E;;;;;;;;2MASX J14543275+0257596,MCG +01-38-018,PGC 053289,SDSS J145432.74+025759.1,SDSS J145432.75+025759.2;;; -NGC5777;G;14:51:17.85;+58:58:40.6;Dra;2.96;0.42;145;14.20;;10.44;9.65;9.31;23.96;Sb;;;;;;;;2MASX J14511779+5858401,IRAS 14499+5910,MCG +10-21-034,PGC 053043,SDSS J145117.84+585840.6,SDSS J145117.84+585840.9,SDSS J145117.91+585841.6,SDSS J145117.91+585841.7,UGC 09568;;; -NGC5778;G;14:54:31.49;+18:38:32.3;Boo;1.23;0.79;11;15.60;;11.76;11.04;10.77;24.39;E;;;;;5825;;;2MASX J14543146+1838325,MCG +03-38-050,PGC 053279,SDSS J145431.49+183832.3,UGC 09590;;; -NGC5779;G;14:52:09.56;+55:53:58.0;Dra;0.73;0.69;50;15.70;;12.19;11.47;11.22;23.60;S0;;;;;;;;2MASX J14520952+5553581,MCG +09-24-048,PGC 053090,SDSS J145209.55+555357.9,SDSS J145209.56+555358.0,SDSS J145209.57+555358.1;;; -NGC5780;G;14:54:22.67;+28:56:22.8;Boo;0.69;0.45;124;14.82;13.96;11.67;10.95;10.65;22.73;Sab;;;;;;;;2MASX J14542268+2856226,MCG +05-35-024,PGC 053275,SDSS J145422.66+285622.8;;; -NGC5781;G;14:56:41.22;-17:14:38.2;Lib;1.29;0.70;20;14.00;;10.97;10.31;9.98;22.68;SBb;;;;;;;;2MASX J14564121-1714382,IRAS 14539-1702,MCG -03-38-028,PGC 053417;;; -NGC5782;G;14:55:55.27;+11:51:41.5;Boo;0.95;0.84;153;14.90;;11.07;10.47;10.07;23.41;S0;;;;;;;;2MASX J14555524+1151407,MCG +02-38-022,PGC 053379,SDSS J145555.26+115141.5,SDSS J145555.27+115141.4,SDSS J145555.27+115141.5,UGC 09602;;; -NGC5783;G;14:53:28.31;+52:04:34.0;Boo;2.45;1.49;176;14.00;;;;;24.11;Sc;;;;;5785;;;IRAS 14519+5216,MCG +09-24-050,PGC 053217,UGC 09586;;; -NGC5784;G;14:54:16.45;+42:33:28.5;Boo;1.48;1.36;65;13.70;;10.26;9.56;9.28;23.30;S0;;;;;;;;2MASX J14541645+4233279,IRAS 14524+4245,MCG +07-31-006,PGC 053265,SDSS J145416.45+423328.4,UGC 09592;;; -NGC5785;Dup;14:53:28.31;+52:04:34.0;Boo;;;;;;;;;;;;;;;5783;;;;;; -NGC5786;G;14:58:56.26;-42:00:48.1;Cen;2.40;1.32;79;12.00;;9.65;8.88;8.56;;Sbc;;;;;;;;2MASX J14585625-4200482,ESO 327-037,IRAS 14556-4148,MCG -07-31-004,PGC 053527;;; -NGC5787;G;14:55:15.58;+42:30:24.7;Boo;1.15;1.04;85;14.10;;10.91;10.25;9.96;23.03;S0-a;;;;;;;;2MASX J14551561+4230246,MCG +07-31-008,PGC 053339,SDSS J145515.57+423024.7,UGC 09599;;; -NGC5788;G;14:53:16.99;+52:02:39.3;Boo;0.73;0.59;33;15.60;;12.53;12.00;11.59;23.52;SBab;;;;;;;;2MASX J14531693+5202391,MCG +09-24-049,PGC 053189,SDSS J145316.98+520239.3,SDSS J145316.99+520239.2,SDSS J145316.99+520239.3,SDSS J145316.99+520239.5;;; -NGC5789;G;14:56:35.52;+30:14:02.5;Boo;1.15;1.03;92;13.90;;;;;22.97;SBd;;;;;;;;IRAS 14545+3025,MCG +05-35-026,PGC 053414,SDSS J145635.29+301404.3,UGC 09615;;; -NGC5790;G;14:57:35.81;+08:17:07.0;Boo;1.18;0.78;73;15.10;;11.46;10.73;10.56;23.83;S0-a;;;;;;;;2MASX J14573582+0817068,MCG +01-38-022,PGC 053459,SDSS J145735.81+081706.9,SDSS J145735.81+081707.0,UGC 09624;;; -NGC5791;G;14:58:46.22;-19:16:00.7;Lib;2.71;1.43;172;12.89;;9.39;8.69;8.43;23.69;E;;;;;;;;2MASX J14584622-1916006,ESO 581-007,ESO-LV 581-0070,MCG -03-38-035,PGC 053516;;; -NGC5792;G;14:58:22.71;-01:05:27.9;Lib;3.55;1.38;88;11.80;;8.59;7.95;7.71;22.95;Sb;;;;;;;;2MASX J14582270-0105278,IRAS 14557-0053,MCG +00-38-012,PGC 053499,UGC 09631;;Extended HIPASS source; -NGC5793;G;14:59:24.76;-16:41:36.1;Lib;1.94;0.65;148;14.47;13.32;10.52;9.71;9.37;23.68;Sb;;;;;;;;2MASX J14592480-1641365,IRAS 14566-1629,MCG -03-38-038,PGC 053550;;; -NGC5794;G;14:55:53.63;+49:43:33.9;Boo;1.07;0.91;143;14.50;;11.13;10.41;10.25;23.16;S0-a;;;;;;;;2MASX J14555357+4943341,MCG +08-27-032,PGC 053378,SDSS J145553.63+494333.9,UGC 09610;;; -NGC5795;G;14:56:19.88;+49:24:00.2;Boo;0.78;0.33;63;15.01;;11.06;10.28;9.90;22.18;Sc;;;;;;;;2MASX J14561988+4924007,IRAS 14546+4935,MCG +08-27-035,PGC 053402,UGC 09617;;; -NGC5796;G;14:59:24.11;-16:37:25.9;Lib;2.65;2.18;90;13.00;;9.13;8.38;8.15;23.71;E;;;;;;;;2MASX J14592411-1637265,MCG -03-38-039,PGC 053549;;Confused HIPASS source; -NGC5797;G;14:56:24.05;+49:41:46.2;Boo;1.58;1.01;108;13.60;;10.53;9.86;9.62;23.29;S0-a;;;;;;;;2MASX J14562406+4941457,MCG +08-27-036,PGC 053408,SDSS J145624.05+494146.2,UGC 09619;;; -NGC5798;G;14:57:37.97;+29:58:06.6;Boo;1.24;0.83;46;13.50;;11.88;11.29;10.95;22.28;I;;;;;;;;2MASX J14573796+2958065,IRAS 14555+3009,MCG +05-35-028,PGC 053463,SDSS J145737.96+295808.1,UGC 09628;;Multiple SDSS entries describe this object.; -NGC5799;G;15:05:35.21;-72:25:58.2;Aps;1.20;1.09;135;13.50;;10.13;9.46;9.19;23.10;S0-a;;;;;;;;2MASX J15053518-7225583,ESO 067-006,PGC 053875;;; -NGC5800;OCl;15:01:47.87;-51:55:06.9;Lup;4.50;;;;;;;;;;;;;;;;;MWSC 2265;;; -NGC5801;G;15:00:25.94;-13:54:15.5;Lib;0.71;0.53;40;15.10;;12.42;11.77;11.34;23.32;Sb;;;;;;;;2MASX J15002593-1354155,PGC 053596;;; -NGC5802;G;15:00:30.00;-13:55:08.5;Lib;1.29;0.81;101;14.53;;11.32;10.60;10.26;24.39;S0;;;;;;;;2MASX J15002998-1355075,PGC 053601;;; -NGC5803;G;15:00:34.54;-13:53:40.3;Lib;0.67;0.50;111;15.40;;12.36;11.48;11.19;23.65;E-S0;;;;;;;;2MASX J15003451-1353395,PGC 053609;;; -NGC5804;G;14:57:06.80;+49:40:08.5;Boo;1.17;1.05;5;16.52;15.94;11.20;10.56;10.25;22.93;SBb;;;;;;;;2MASX J14570678+4940086,IRAS 14554+4952,MCG +08-27-038,PGC 053437,SDSS J145706.79+494008.4,SDSS J145706.80+494008.4,SDSS J145706.80+494008.5,UGC 09627;;; -NGC5805;GPair;14:57:11.90;+49:37:40.0;Boo;0.70;;;;;;;;;;;;;;;;;MCG +08-27-039;;Not noted as a pair in MCG.;Diameter of the group inferred by the author. -NGC5805 NED01;G;14:57:11.62;+49:37:44.4;Boo;0.66;0.41;148;15.00;;12.53;11.85;11.45;23.85;E;;;;;;;;2MASX J14571162+4937446,MCG +08-27-039 NED01,PGC 053435,SDSS J145711.61+493744.4;;; -NGC5805 NED02;G;14:57:12.13;+49:37:36.8;Boo;0.38;0.38;166;17.51;;;;;24.36;E;;;;;;;;2MASSJ14571214+4937366,MCG +08-27-039 NED02,SDSSJ145712.17+493736.7;;;B-Mag taken from LEDA -NGC5806;G;15:00:00.40;+01:53:28.7;Vir;3.03;1.63;172;12.40;11.70;9.42;8.76;8.45;23.05;Sb;;;;;;;;2MASX J15000043+0153285,IRAS 14574+0205,MCG +00-38-014,PGC 053578,SDSS J150000.26+015329.0,SDSS J150000.39+015328.7,SDSS J150000.40+015328.7,SDSS J150000.40+015328.8,UGC 09645;;; -NGC5807;G;14:55:48.67;+63:54:12.5;Dra;0.78;0.65;83;15.00;;11.65;10.82;10.65;23.54;E;;;;;;;;2MASX J14554868+6354122,MCG +11-18-016,PGC 053373;;; -NGC5808;G;14:54:02.81;+73:07:54.1;UMi;0.95;0.78;88;14.30;;11.60;10.96;10.66;22.82;Sbc;;;;;5819;;;2MASX J14540285+7307539,IRAS 14540+7319,PGC 053251,UGC 09609;;; -NGC5809;G;15:00:52.33;-14:09:54.7;Lib;1.65;0.60;150;14.10;;11.28;10.56;10.31;23.94;S0-a;;;;;;;;2MASX J15005234-1409546,IRAS 14581-1358,MCG -02-38-025,PGC 053624;;; -NGC5810;G;15:02:42.73;-17:52:04.8;Lib;0.98;0.52;17;14.01;;11.67;11.09;10.98;22.38;SBb;;;;;;;;2MASX J15024274-1752049,ESO 581-018,ESO-LV 581-0180,IRAS 14598-1740,MCG -03-38-046,PGC 053711;;; -NGC5811;GPair;15:00:26.90;+01:37:26.0;Vir;1.02;0.91;96;14.80;;12.41;11.86;11.73;23.38;SBm;;;;;;;;2MASX J15002729+0137242,MCG +00-38-015,PGC 053597;;; -NGC5812;G;15:00:55.70;-07:27:26.5;Lib;2.66;2.29;73;12.00;;8.95;8.20;7.96;23.18;E;;;;;;;;2MASX J15005570-0727263,MCG -01-38-016,PGC 053630,UGCA 398;;; -NGC5813;G;15:01:11.23;+01:42:07.1;Vir;4.13;2.70;143;11.45;10.46;8.34;7.63;7.41;23.45;E;;;;;;;;2MASX J15011126+0142070,MCG +00-38-016,PGC 053643,SDSS J150111.23+014207.1,UGC 09655;;; -NGC5814;G;15:01:21.15;+01:38:13.5;Vir;0.82;0.56;40;14.70;;11.51;10.78;10.43;22.70;Sab;;;;;;;;2MASX J15012118+0138134,IRAS 14588+0149,MCG +00-38-017,PGC 053653,SDSS J150121.14+013813.4,SDSS J150121.15+013813.5;;; -NGC5815;G;15:00:29.29;-16:50:03.5;Lib;0.78;0.26;5;14.50;;11.96;11.34;11.06;22.59;Sb;;;;;;;;2MASX J15002929-1650035,IRAS 14576-1638,MCG -03-38-044,PGC 053600;;Confused HIPASS source; -NGC5816;G;15:00:04.86;-16:05:37.1;Lib;0.95;0.66;103;15.44;;11.60;10.84;10.65;24.06;S0-a;;;;;;;;2MASX J15000484-1605367,PGC 902544;;NGC identification is not certain.; -NGC5817;G;14:59:40.85;-16:10:49.3;Lib;1.04;0.85;15;15.00;;11.46;10.69;10.47;23.95;S0;;;;;;;;2MASX J14594086-1610495,MCG -03-38-041,PGC 053567;;NGC identification is not certain.; -NGC5818;G;14:58:58.39;+49:49:17.1;Boo;0.99;0.77;152;15.00;;11.12;10.38;10.08;23.49;S0;;;;;;;;2MASX J14585835+4949169,MCG +08-27-046,PGC 053530,SDSS J145858.39+494917.0,UGC 09643;;; -NGC5819;Dup;14:54:02.81;+73:07:54.1;UMi;;;;;;;;;;;;;;;5808;;;;;; -NGC5820;G;14:58:39.82;+53:53:09.9;Boo;1.66;1.13;94;13.00;;10.12;9.42;9.14;23.03;S0;;;;;;;;2MASX J14583982+5353100,MCG +09-25-001,PGC 053511,SDSS J145839.78+535309.3,UGC 09642;;; -NGC5821;G;14:58:59.66;+53:55:23.8;Boo;1.49;0.79;146;14.90;;11.35;11.24;10.64;23.76;Sc;;;;;;;;2MASX J14585972+5355234,MCG +09-25-002,PGC 053532,SDSS J145859.65+535523.7,SDSS J145859.65+535523.8,SDSS J145859.65+535524.0,UGC 09648;;; -NGC5822;OCl;15:04:21.25;-54:23:47.1;Lup;18.00;;;;6.50;;;;;;;;;;;;;MWSC 2269;;; -NGC5823;OCl;15:05:30.63;-55:36:13.5;Cir;3.90;;;8.61;7.90;;;;;;;;;;;;;C 088,MWSC 2273;;; -NGC5824;GCl;15:03:58.64;-33:04:05.3;Lup;5.10;;;10.28;9.56;7.44;6.92;6.84;;;;;;;;;;2MASX J15035861-3304066,MWSC 2267;;; -NGC5825;Dup;14:54:31.49;+18:38:32.3;Boo;;;;;;;;;;;;;;;5778;;;;;; -NGC5826;G;15:06:33.84;+55:28:44.8;Dra;1.39;1.04;26;14.89;;;;;24.46;S0;;;;;5870;;;MCG +09-25-016,PGC 053949,SDSS J150633.82+552845.0,SDSS J150633.84+552844.7,SDSS J150633.84+552844.8,UGC 09725;;; -NGC5827;G;15:01:53.73;+25:57:52.3;Boo;1.04;0.75;131;13.70;;11.01;10.38;10.13;22.31;Sb;;;;;;;;2MASX J15015375+2557527,IRAS 14597+2609,MCG +04-35-024,PGC 053676,SDSS J150153.72+255752.3,UGC 09662;;; -NGC5828;G;15:00:46.11;+49:59:37.2;Boo;0.84;0.29;46;14.30;;11.72;11.07;10.81;22.11;SBc;;;;;;;;2MASX J15004607+4959379,MCG +08-27-051,PGC 053618,SDSS J150046.10+495937.1,SDSS J150046.11+495937.1,SDSS J150046.11+495937.2,UGC 09658;;; -NGC5829;G;15:02:42.01;+23:20:01.0;Boo;1.42;1.08;41;14.14;;11.95;11.59;11.26;23.24;Sc;;;;;;;;2MASX J15024196+2320009,MCG +04-35-027,PGC 053709,SDSS J150242.00+232001.0,SDSS J150242.01+232001.0,UGC 09673;;; -NGC5830;G;15:01:50.91;+47:52:31.4;Boo;0.90;0.48;172;15.20;;11.90;11.19;10.73;23.10;Sb;;;;;;;;2MASX J15015094+4752318,IRAS 15001+4804,MCG +08-27-056,PGC 053674,SDSS J150150.90+475231.4,SDSS J150150.91+475231.4,UGC 09670;;; -NGC5831;G;15:04:07.00;+01:13:11.7;Vir;2.24;1.98;130;13.10;;9.35;8.68;8.44;23.06;E;;;;;;;;2MASX J15040702+0113117,MCG +00-38-020,PGC 053770,SDSS J150406.99+011311.7,SDSS J150407.00+011311.7,UGC 09678;;; -NGC5832;G;14:57:45.71;+71:40:56.4;UMi;1.86;0.78;42;12.80;12.26;;;;23.03;Sb;;;;;;;;MCG +12-14-015,PGC 053469,UGC 09649;;; -NGC5833;G;15:11:53.65;-72:51:33.9;Aps;3.10;0.98;129;12.30;;9.52;8.76;8.43;23.19;SBbc;;;;;;;;2MASX J15115360-7251339,ESO 042-003,IRAS 15066-7240,PGC 054250;;Confused and extended HIPASS source; -NGC5834;Dup;15:03:58.64;-33:04:05.3;Lup;;;;;;;;;;;;;;;5824;;;;;; -NGC5835;G;15:02:25.37;+48:52:39.7;Boo;1.13;0.78;163;15.70;;11.99;11.40;11.25;24.12;SABa;;;;;;;;2MASX J15022536+4852393,MCG +08-27-057,PGC 053699,SDSS J150225.36+485239.6,SDSS J150225.37+485239.6,SDSS J150225.37+485239.7,UGC 09674;;; -NGC5836;G;14:59:30.99;+73:53:35.6;UMi;1.16;0.93;38;14.90;;11.51;10.80;10.43;23.67;Sb;;;;;;;;2MASX J14593099+7353358,MCG +12-14-016,PGC 053554,UGC 09664;;; -NGC5837;G;15:04:40.58;+12:38:00.4;Boo;1.00;0.62;23;14.50;;11.61;10.84;10.60;22.89;Sb;;;;;;;;2MASX J15044058+1238007,IRAS 15022+1249,MCG +02-38-036,PGC 053817,SDSS J150440.57+123800.4,SDSS J150440.58+123800.4,UGC 09686;;; -NGC5838;G;15:05:26.26;+02:05:57.6;Vir;3.86;1.29;40;12.10;;8.48;7.78;7.58;23.39;E-S0;;;;;;;;2MASX J15052627+0205576,IRAS 15029+0217,MCG +00-38-022,PGC 053862,UGC 09692;;; -NGC5839;G;15:05:27.49;+01:38:05.3;Vir;1.44;1.29;103;13.90;12.19;10.18;9.45;9.20;23.24;S0;;;;;;;;2MASX J15052747+0138046,MCG +00-38-023,PGC 053865,SDSS J150527.48+013805.3,UGC 09693;;; -NGC5840;Other;15:04:20.55;+29:30:21.7;Boo;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC5841;G;15:06:35.04;+02:00:17.3;Vir;1.19;0.49;150;14.80;;11.35;10.69;10.52;23.53;S0-a;;;;;5848;;;2MASX J15063505+0200172,MCG +00-39-001,PGC 053941,SDSS J150635.03+020017.3,SDSS J150635.04+020017.3;;; -NGC5842;G;15:04:51.99;+21:04:10.0;Boo;0.52;0.50;50;15.20;;12.84;12.22;11.85;22.60;Sbc;;;;;;;;2MASX J15045198+2104097,IRAS 15026+2115,MCG +04-36-003,PGC 053831,SDSS J150451.99+210410.0;;; -NGC5843;G;15:07:27.89;-36:19:38.7;Lup;1.96;1.24;68;13.12;;10.03;9.32;8.99;23.00;SBb;;;;;;;;2MASX J15072789-3619385,ESO 387-004,ESO-LV 387-0040,IRAS 15043-3608,MCG -06-33-013,PGC 053996;;; -NGC5844;PN;15:10:40.95;-64:40:25.2;TrA;0.88;;;13.20;;;;;;;;;;;;;;ESO 099-001,IRAS 15064-6429;;; -NGC5845;G;15:06:00.81;+01:38:01.7;Vir;1.00;0.71;152;13.80;11.20;10.08;9.36;9.11;22.30;E;;;;;;;;2MASX J15060078+0138017,MCG +00-38-024,PGC 053901,SDSS J150600.78+013801.6,UGC 09700;;; -NGC5846;G;15:06:29.28;+01:36:20.2;Vir;4.27;4.05;35;11.90;;7.88;7.20;6.94;23.12;E;;;;;;;;2MASX J15062925+0136202,MCG +00-38-025,PGC 053932,SDSS J150629.28+013620.2,UGC 09706;;Called 'NGC 5846a' in MCG.; -NGC5846A;G;15:06:29.20;+01:35:41.5;Vir;3.16;2.22;112;14.10;13.37;;;;24.08;E;;;;;;;;MCG +00-38-026,PGC 053930,SDSS J150629.19+013541.5,UGC 09706 NOTES01;;Called 'NGC 5846b' in MCG.; -NGC5847;G;15:06:22.27;+06:22:47.6;Vir;0.70;0.47;153;15.10;;12.59;11.96;11.74;22.94;Sb;;;;;;;;2MASX J15062227+0622476,MCG +01-38-030,PGC 053928,SDSS J150622.26+062247.5;;"Mistakenly called a ""double system"" in CGCG."; -NGC5848;Dup;15:06:35.04;+02:00:17.3;Vir;;;;;;;;;;;;;;;5841;;;;;; -NGC5849;G;15:06:50.69;-14:34:18.6;Lib;1.05;0.78;35;15.00;;11.49;10.75;10.28;24.29;S0;;;;;;;;2MASX J15065067-1434185,MCG -02-38-035,PGC 053962;;; -NGC5850;G;15:07:07.69;+01:32:39.3;Vir;3.35;2.37;119;11.50;;9.02;8.38;8.10;23.00;Sb;;;;;;;;2MASX J15070767+0132394,IRAS 15045+0144,MCG +00-39-002,PGC 053979,SDSS J150707.68+013239.2,SDSS J150707.68+013240.2,SDSS J150707.69+013239.3,UGC 09715;;; -NGC5851;G;15:06:53.42;+12:51:31.9;Boo;1.07;0.38;44;14.90;;12.00;11.24;11.08;22.97;Sc;;;;;;;;2MASX J15065340+1251315,IRAS 15044+1302,MCG +02-38-044,PGC 053965,SDSS J150653.38+125131.2,SDSS J150653.39+125131.2,UGC 09714;;; -NGC5852;G;15:06:56.41;+12:50:48.6;Boo;1.10;0.71;127;14.70;;11.01;10.29;10.10;23.48;S0-a;;;;;;;;2MASX J15065641+1250485,MCG +02-38-045,PGC 053974,SDSS J150656.41+125048.5,SDSS J150656.41+125048.6,SDSS J150656.42+125048.6;;; -NGC5853;G;15:05:53.29;+39:31:19.9;Boo;1.10;0.65;140;14.80;;11.38;10.62;10.45;23.12;SBbc;;;;;;;;2MASX J15055331+3931198,MCG +07-31-030,PGC 053894,SDSS J150553.28+393119.8,SDSS J150553.28+393119.9,SDSS J150553.29+393119.8,UGC 09707;;; -NGC5854;G;15:07:47.70;+02:34:07.1;Vir;3.02;0.71;55;13.10;;9.72;9.03;8.82;23.67;S0-a;;;;;;;;2MASX J15074772+0234068,MCG +01-39-001,PGC 054013,SDSS J150747.69+023407.0,UGC 09726;;; -NGC5855;G;15:07:49.04;+03:59:03.0;Vir;0.83;0.61;62;15.50;;11.70;10.93;10.69;23.80;E;;;;;;;;2MASX J15074903+0359028,PGC 054014,SDSS J150749.04+035902.9;;; -NGC5856;**;15:07:20.23;+18:26:32.8;Boo;;;;6.10;6.03;5.87;5.89;5.87;;;;;;;;;;2MASS J15072035+1826307,BD+19 2924,HD 134064,HIP 74000,IDS 15028+1850 B,SAO 101379,TYC 1489-23-1,WDS J15073+1827AB;;; -NGC5857;G;15:07:27.31;+19:35:51.5;Boo;1.14;0.57;137;13.99;13.11;10.83;10.12;9.84;22.42;SBab;;;;;;;;2MASX J15072731+1935512,MCG +03-39-004,PGC 053995,SDSS J150727.29+193551.9,UGC 09724;;; -NGC5858;G;15:08:49.14;-11:12:28.2;Lib;2.16;1.19;140;14.00;;10.06;9.38;9.15;24.45;E;;;;;;;;2MASX J15084914-1112280,MCG -02-39-002,PGC 054075;;; -NGC5859;G;15:07:34.74;+19:34:56.3;Boo;2.55;0.63;134;13.10;12.47;10.27;9.50;9.19;22.99;SBbc;;;;;;;;2MASX J15073474+1934562,IRAS 15052+1946,MCG +03-39-005,PGC 054001,SDSS J150734.75+193456.6,SDSS J150734.75+193456.7,UGC 09728;;; -NGC5860;GPair;15:06:33.80;+42:38:29.0;Boo;0.80;;;;;;;;;;;;;;;;;MCG +07-31-033,UGC 09717;;;Diameter of the group inferred by the author. -NGC5860 NED01;G;15:06:33.62;+42:38:25.3;Boo;1.07;0.95;79;14.20;;11.63;10.95;10.78;23.34;E;;;;;;;;2MASX J15063361+4238251,IRAS 15047+4249,MCG +07-31-033 NED01,PGC 053939,SDSS J150633.61+423825.2,SDSS J150633.61+423825.3,SDSS J150633.62+423825.3,UGC 09717 NED01;;; -NGC5860 NED02;G;15:06:33.80;+42:38:34.1;Boo;0.28;0.28;25;15.86;;;;;22.03;E-S0;;;;;;;;MCG +07-31-033 NED02,PGC 093127,SDSS J150633.79+423834.0,SDSS J150633.80+423834.1,UGC 09717 NED02;;;B-Mag taken from LEDA -NGC5861;G;15:09:16.09;-11:19:18.0;Lib;2.78;1.11;149;13.34;12.62;9.62;8.94;8.70;22.55;SABc;;;;;;;;2MASX J15091609-1119179,IRAS 15065-1107,MCG -02-39-003,PGC 054097;;; -NGC5862;G;15:06:03.31;+55:34:25.9;Dra;0.77;0.51;35;15.70;;12.20;11.62;11.40;23.80;E;;;;;;;;2MASX J15060333+5534265,PGC 053900,SDSS J150603.30+553426.1,SDSS J150603.31+553425.9,SDSS J150603.32+553426.1,SDSS J150603.33+553426.1;;; -NGC5863;G;15:10:48.36;-18:25:51.7;Lib;1.45;1.16;27;13.72;;10.70;9.98;9.75;22.66;SABa;;;;;;;;2MASX J15104835-1825515,ESO 581-022,ESO-LV 581-0220,MCG -03-39-001,PGC 054160;;; -NGC5864;G;15:09:33.56;+03:03:09.9;Vir;2.49;0.77;67;12.90;;9.61;8.93;8.71;23.37;S0;;;;;;;;2MASX J15093354+0303098,MCG +01-39-002,PGC 054111,UGC 09740;;; -NGC5865;G;15:09:49.18;+00:31:47.4;Vir;1.25;1.03;165;15.20;;11.06;10.36;10.07;23.98;E-S0;;;;;5868;;;2MASX J15094918+0031468,MCG +00-39-007,PGC 054118,SDSS J150949.18+003147.3,UGC 09743;;; -NGC5866;G;15:06:29.50;+55:45:47.6;Dra;6.31;2.72;126;10.74;9.89;7.83;7.13;6.87;23.40;S0-a;;;;;;;;2MASX J15062956+5545479,IRAS 15051+5557,MCG +09-25-017,PGC 053933,UGC 09723;;This may be M102; -NGC5866B;G;15:12:07.23;+55:47:06.3;Dra;2.33;1.66;16;15.70;;;;;25.56;SABd;;;;;;;;MCG +09-25-034,PGC 054267,SDSS J151207.19+554706.3,SDSS J151207.22+554706.2,SDSS J151207.23+554706.2,SDSS J151207.23+554706.3,UGC 09769;;; -NGC5867;G;15:06:24.32;+55:43:53.7;Dra;0.44;0.36;58;;;;;;23.65;Sb;;;;;;;;2MASX J15062441+5543543,PGC 2512461,SDSS J150624.32+554353.7,SDSS J150624.35+554353.9;;; -NGC5868;Dup;15:09:49.18;+00:31:47.4;Vir;;;;;;;;;;;;;;;5865;;;;;; -NGC5869;G;15:09:49.44;+00:28:12.1;Vir;2.17;1.39;114;13.50;;9.60;8.94;8.73;23.56;S0;;;;;;;;2MASX J15094945+0028118,MCG +00-39-006,PGC 054119,UGC 09742;;HOLM 699B,C are stars.; -NGC5870;Dup;15:06:33.84;+55:28:44.8;Dra;;;;;;;;;;;;;;;5826;;;;;; -NGC5871;*;15:10:04.79;+00:29:52.8;Vir;;;;;;;;;;;;;;;;;;SDSS J151004.79+002952.8;;NGC identification is not certain.; -NGC5872;G;15:10:55.66;-11:28:48.5;Lib;1.77;0.96;10;14.00;;10.11;9.42;9.10;24.16;S0;;;;;;;;2MASX J15105568-1128477,MCG -02-39-005,PGC 054169;;; -NGC5873;PN;15:12:50.80;-38:07:32.0;Lup;0.12;;;13.30;11.00;;;;;;;15.70;15.50;;;;HD 134743;ESO 328-034,IRAS 15096-3756,PN G331.3+16.8;;; -NGC5874;G;15:07:51.83;+54:45:10.0;Boo;2.38;1.56;51;14.10;;11.32;10.71;10.44;23.45;SABc;;;;;;;;2MASX J15075180+5445097,IRAS 15064+5456,MCG +09-25-024,PGC 054018,SDSS J150751.82+544510.0,SDSS J150751.83+544510.0,SDSS J150751.83+544510.1,UGC 09736;;; -NGC5875;G;15:09:13.16;+52:31:42.4;Boo;2.42;1.08;143;13.40;;10.47;9.70;9.43;23.47;Sb;;;;;;;;2MASX J15091320+5231418,IRAS 15077+5243,MCG +09-25-027,PGC 054095,SDSS J150913.16+523142.3,SDSS J150913.16+523142.4,SDSS J150913.16+523142.6,UGC 09745;;; -NGC5876;G;15:09:31.56;+54:30:23.4;Boo;2.46;1.16;48;13.90;;10.43;9.84;9.52;23.97;SBab;;;;;;1111;;2MASX J15093156+5430228,MCG +09-25-028,PGC 054110,SDSS J150931.56+543023.3,SDSS J150931.56+543023.4,SDSS J150931.57+543023.3,SDSS J150931.57+543023.4,UGC 09747;;; -NGC5877;**;15:12:53.07;-04:55:38.0;Lib;;;;;;;;;;;;;;;;;;;;; -NGC5878;G;15:13:45.71;-14:16:11.4;Lib;3.27;1.21;6;12.10;;9.14;8.47;8.18;22.94;Sb;;;;;;;;2MASX J15134569-1416112,IRAS 15109-1405,MCG -02-39-006,PGC 054364,UGCA 403;;Confused HIPASS source; -NGC5879;G;15:09:46.73;+57:00:00.7;Dra;3.79;1.42;1;11.90;;9.68;8.98;8.79;23.03;Sbc;;;;;;;;2MASX J15094675+5700007,IRAS 15084+5711,MCG +10-22-001,PGC 054117,SDSS J150946.76+570000.7,SDSS J150946.77+570000.7,UGC 09753;;; -NGC5880;G;15:15:01.14;-14:34:44.5;Lib;0.87;0.67;145;15.04;;11.47;10.72;10.44;23.62;E;;;;;;;;2MASX J15150115-1434437,MCG -02-39-012,PGC 054427;;; -NGC5881;G;15:06:20.82;+62:58:51.5;Dra;0.81;0.58;61;14.10;;11.39;10.76;10.53;22.22;Sbc;;;;;;1100;;2MASX J15062081+6258515,IRAS 15053+6310,MCG +11-18-025,PGC 053920,UGC 09729;;; -NGC5882;PN;15:16:50.00;-45:38:57.5;Lup;0.23;;;11.33;10.18;;;;;;;13.30;13.43;;;1108;HD 135456,TYC 8294-00398-1;ESO 274-007,IRAS 15134-4527,PN G327.8+10.0;;; -NGC5883;G;15:15:10.18;-14:37:01.4;Lib;1.29;0.85;122;15.00;;10.49;9.75;9.47;23.78;S0;;;;;;;;2MASX J15151018-1437007,MCG -02-39-014,PGC 054439;;; -NGC5884;**;15:13:09.13;+31:51:39.8;Boo;;;;;;;;;;;;;;;;;;;;; -NGC5885;G;15:15:04.16;-10:05:09.6;Lib;3.07;2.59;58;11.70;;10.35;9.86;9.01;23.37;SABc;;;;;;;;2MASX J15150414-1005101,IRAS 15123-0954,MCG -02-39-013,PGC 054429;;This is a part of the galaxy NGC 5885.; -NGC5886;G;15:12:45.44;+41:14:00.9;Boo;0.86;0.60;92;15.10;;11.43;10.71;10.46;23.29;E-S0;;;;;;;;2MASX J15124541+4114008,PGC 054298,SDSS J151245.44+411400.8,SDSS J151245.44+411400.9;;; -NGC5887;G;15:14:43.98;+01:09:15.3;Se1;1.38;1.08;166;15.20;;11.01;10.32;9.99;24.17;S0-a;;;;;;;;2MASX J15144398+0109151,MCG +00-39-012,PGC 054416,SDSS J151443.98+010915.3,SDSS J151443.98+010915.4,UGC 09779;;; -NGC5888;G;15:13:07.37;+41:15:52.7;Boo;1.33;0.81;157;14.30;;10.96;10.27;9.91;23.16;Sbc;;;;;;;;2MASX J15130737+4115526,MCG +07-31-038,PGC 054316,SDSS J151307.37+411552.6,SDSS J151307.37+411552.7,UGC 09771;;; -NGC5889;G;15:13:15.75;+41:19:40.7;Boo;0.70;0.27;40;16.01;;13.05;12.19;11.80;23.29;Sbc;;;;;;;;2MASX J15131571+4119406,PGC 054317,SDSS J151315.74+411940.7,SDSS J151315.75+411940.7;;; -NGC5890;G;15:17:51.17;-17:35:21.1;Lib;1.56;1.08;85;14.00;;10.74;10.07;9.78;23.72;S0-a;;;;;;;;2MASX J15175117-1735214,IRAS 15150-1724,MCG -03-39-004,PGC 054602;;; -NGC5891;G;15:16:13.40;-11:29:39.3;Lib;0.83;0.54;140;14.00;;12.00;11.36;11.09;22.58;Sbc;;;;;;;;2MASX J15161336-1129391,IRAS 15134-1118,MCG -02-39-015,PGC 054491;;; -NGC5892;G;15:13:48.21;-15:27:50.0;Lib;3.05;2.39;165;12.00;;10.90;10.25;10.05;24.21;SABc;;;;;;;;2MASX J15134821-1527492,IRAS 15109-1516,MCG -02-39-007,PGC 054365;;; -NGC5893;G;15:13:34.17;+41:57:31.7;Boo;1.05;0.97;20;14.10;;11.27;10.62;10.36;22.93;SBb;;;;;;;;2MASX J15133416+4157318,IRAS 15117+4208,MCG +07-31-042,PGC 054351,UGC 09774;;; -NGC5894;G;15:11:40.98;+59:48:32.2;Dra;2.98;0.47;14;13.40;;10.11;9.34;9.05;22.94;Scd;;;;;;;;2MASX J15114093+5948317,IRAS 15105+5959,MCG +10-22-004,PGC 054234,SDSS J151140.97+594832.1,SDSS J151140.98+594832.1,UGC 09768;;; -NGC5895;G;15:13:50.00;+42:00:29.1;Boo;0.87;0.23;23;15.50;;;;;22.58;Sc;;;;;;;;MCG +07-31-043,PGC 054366,SDSS J151349.99+420029.0,SDSS J151350.00+420029.0,SDSS J151350.01+420029.1,UGC 09774 NOTES01;;; -NGC5896;G;15:13:50.68;+42:01:27.4;Boo;0.29;0.26;65;16.00;;14.00;13.42;13.00;21.88;Sc;;;;;;;;2MASX J15135069+4201272,MCG +07-31-044,PGC 054367,SDSS J151350.67+420127.3,SDSS J151350.68+420127.3,SDSS J151350.68+420127.4,UGC 09774 NOTES02;;; -NGC5897;GCl;15:17:24.40;-21:00:36.4;Lib;9.90;;;10.16;8.52;;;;;;;;;;;;;MWSC 2285;;; -NGC5898;G;15:18:13.56;-24:05:52.6;Lib;2.66;2.37;51;12.37;11.52;9.03;8.31;8.07;23.43;E;;;;;;;;2MASX J15181355-2405526,ESO 514-002,ESO-LV 514-0020,MCG -04-36-006,PGC 054625,UGCA 404;;; -NGC5899;G;15:15:03.22;+42:02:59.4;Boo;2.10;0.85;21;14.19;13.21;9.62;8.99;8.59;22.16;Sc;;;;;;;;2MASX J15150325+4202594,IRAS 15132+4214,MCG +07-31-045,PGC 054428,SDSS J151503.22+420259.4,UGC 09789;;The position in 1988BoPos.M...0000V is 5.5 arcsec south of the nucleus.; -NGC5900;G;15:15:05.16;+42:12:33.9;Boo;1.49;0.54;130;14.43;13.39;10.81;9.91;9.43;23.52;Sb;;;;;;;;2MASX J15150501+4212354,IRAS 15132+4223,MCG +07-31-046,PGC 054431,SDSS J151505.16+421233.9,SDSS J151505.16+421234.0,UGC 09790;;HOLM 702B is a star.; -NGC5901;*;15:15:02.60;+42:13:41.0;Boo;;;;;;;;;;;;;;;;;;;;; -NGC5902;G;15:14:22.40;+50:19:46.8;Boo;1.26;1.11;100;15.40;;10.97;10.30;10.00;23.93;S0-a;;;;;;;;2MASX J15142238+5019465,MCG +08-28-011,PGC 054394,SDSS J151422.38+501946.6,SDSS J151422.39+501946.7,SDSS J151422.39+501946.8,SDSS J151422.40+501946.8;;; -NGC5903;G;15:18:36.53;-24:04:06.9;Lib;3.00;2.23;164;12.11;11.48;9.04;8.34;8.10;23.45;E;;;;;;;;2MASX J15183652-2404069,ESO 514-004,ESO-LV 514-0040,MCG -04-36-008,PGC 054646,UGCA 405;;; -NGC5904;GCl;15:18:33.75;+02:04:57.7;Se1;15.00;;;7.34;5.95;;;;;;;;;005;;;;MWSC 2286;;; -NGC5905;G;15:15:23.32;+55:31:02.5;Dra;3.22;2.60;131;13.60;;10.47;9.85;9.51;24.41;Sb;;;;;;;;2MASX J15152332+5531015,IRAS 15140+5541,MCG +09-25-038,PGC 054445,SDSS J151523.33+553102.2,UGC 09797;;; -NGC5906;Dup;15:15:53.77;+56:19:43.6;Dra;;;;;;;;;;;;;;;5907;;;;;; -NGC5907;G;15:15:53.77;+56:19:43.6;Dra;11.30;1.75;156;11.40;;7.94;7.09;6.76;23.60;SABc;;;;;5906;;;2MASX J15155368+5619438,IRAS 15146+5629,MCG +09-25-040,PGC 054470,SDSS J151553.77+561943.5,SDSS J151553.77+561943.6,UGC 09801;;NGC 5906 is the part of NGC 5907 west of the dust lane.; -NGC5908;G;15:16:43.22;+55:24:33.3;Dra;3.37;1.61;153;13.50;;9.43;8.61;8.25;23.67;SBb;;;;;;;;2MASX J15164322+5524332,IRAS 15153+5535,MCG +09-25-041,PGC 054522,UGC 09805;;; -NGC5909;G;15:11:28.03;+75:23:01.7;UMi;1.00;0.56;53;14.32;13.58;11.40;10.65;10.40;22.99;Sbc;;;;;;;;2MASX J15112837+7523018,MCG +13-11-010,PGC 054223,UGC 09778;;CGCG Dec (+75 20) is incorrect.; -NGC5910;GTrpl;15:19:25.10;+20:53:42.0;Se1;1.10;;;;;;;;;;;;;;;;;;;Part of the GGroup VV 139.;Diameter of the group inferred by the author. -NGC5910 NED01;G;15:19:24.26;+20:53:26.9;Se1;0.74;0.56;119;15.97;;;;;23.84;E;;;;;;;;MCG +04-36-036,PGC 054688,SDSS J151924.25+205326.7,SDSS J151924.26+205326.8,UGC 09813 NOTES02;;; -NGC5910 NED02;G;15:19:24.74;+20:53:46.9;Se1;1.15;0.47;110;14.96;;10.91;10.06;9.85;23.69;E;;;;;;;;2MASX J15192473+2053465,MCG +04-36-035,PGC 054689,SDSS J151924.74+205346.8,UGC 09813 NOTES01;;; -NGC5910 NED03;G;15:19:25.83;+20:53:58.3;Se1;0.55;0.36;121;17.00;;;;;23.98;E-S0;;;;;;;;MCG +04-36-035 NOTES01,PGC 054692,SDSS J151925.83+205358.3,UGC 09813 NOTES03;;; -NGC5911;G;15:20:18.22;+03:31:06.0;Se1;1.09;0.69;44;14.70;;11.00;10.27;9.97;23.54;E-S0;;;;;;;;2MASX J15201821+0331062,MCG +01-39-019,PGC 054731,SDSS J152018.21+033106.0;;; -NGC5912;G;15:11:40.90;+75:23:05.3;UMi;1.04;0.91;100;13.84;12.98;10.91;10.18;9.88;23.34;E-S0;;;;;;;;2MASX J15114105+7523057,MCG +13-11-011,PGC 054237;;HOLM 703C is a star.; -NGC5913;G;15:20:55.44;-02:34:40.6;Se1;1.85;0.75;173;14.60;;10.19;9.45;9.12;23.76;Sa;;;;;;;;2MASX J15205543-0234409,IRAS 15183-0223,MCG +00-39-021,PGC 054761,SDSS J152055.43-023440.5,SDSS J152055.43-023440.6,UGC 09818;;; -NGC5914;G;15:18:43.82;+41:51:55.7;Boo;0.92;0.36;156;14.90;;11.37;10.62;10.38;22.65;Sab;;;;;5914A;;;2MASX J15184386+4151555,MCG +07-31-055,PGC 054654,SDSS J151843.82+415155.6,SDSS J151843.82+415155.7;;; -NGC5914B;G;15:18:45.31;+41:53:26.9;Boo;0.50;0.43;26;17.00;;;;;22.96;Sbc;;;;;;;;MCG +07-31-056,PGC 054653,SDSS J151845.30+415326.8,SDSS J151845.31+415326.9;;; -NGC5915;G;15:21:33.08;-13:05:30.3;Lib;1.67;1.23;125;13.10;;10.60;9.99;9.67;22.31;SBb;;;;;;;;2MASX J15213307-1305302,IRAS 15187-1254,MCG -02-39-019,PGC 054816,UGCA 407;;; -NGC5916;G;15:21:37.92;-13:10:09.4;Lib;3.09;0.70;21;14.00;;10.49;9.89;9.68;24.10;SBa;;;;;;;;2MASX J15213793-1310092,IRAS 15188-1259,MCG -02-39-020,PGC 054825;;; -NGC5916A;G;15:21:13.84;-13:06:02.2;Lib;1.38;0.44;145;15.00;;12.01;11.51;11.34;23.20;SBc;;;;;;;;2MASX J15211384-1306022,MCG -02-39-018,PGC 054779;;; -NGC5917;G;15:21:32.57;-07:22:37.8;Lib;1.68;1.05;90;13.70;;11.59;10.92;10.77;23.33;Sb;;;;;;;;2MASX J15213256-0722376,IRAS 15188-0711,MCG -01-39-002,PGC 054809;;; -NGC5918;G;15:19:25.26;+45:52:48.9;Boo;2.01;0.84;85;14.00;;11.01;10.21;9.92;23.53;Sc;;;;;;;;2MASX J15192526+4552493,IRAS 15177+4603,MCG +08-28-017,PGC 054690,SDSS J151925.25+455248.9,SDSS J151925.25+455249.0,SDSS J151925.26+455248.9,UGC 09817;;; -NGC5919;G;15:21:36.88;+07:43:09.5;Se1;1.00;0.59;103;15.50;;12.11;11.70;10.94;24.43;E;;;;;;;;2MASX J15213686+0743099,MCG +01-39-020 NED05,PGC 054826,SDSS J152136.88+074309.4;;; -NGC5920;G;15:21:51.85;+07:42:31.7;Se1;1.28;0.70;100;15.50;;11.55;10.80;10.85;24.00;S0;;;;;;;;2MASX J15215187+0742319,PGC 054839,SDSS J152151.85+074231.7,UGC 09822;;; -NGC5921;G;15:21:56.56;+05:04:13.9;Se1;3.02;2.03;137;12.70;;8.99;8.32;8.10;22.51;Sbc;;;;;;;;2MASX J15215656+0504139,IRAS 15194+0514,MCG +01-39-021,PGC 054849,SDSS J152156.48+050414.2,UGC 09824;;; -NGC5922;**;15:21:09.10;+41:40:14.0;Boo;;;;;;;;;;;;;;;;;;;;; -NGC5923;G;15:21:14.24;+41:43:33.4;Boo;1.33;1.22;45;14.70;;11.46;10.95;10.63;23.08;SABb;;;;;;;;2MASX J15211425+4143334,MCG +07-32-001,PGC 054780,SDSS J152114.23+414333.3,SDSS J152114.24+414333.4,UGC 09823;;HOLM 707B is a double star.; -NGC5924;G;15:22:01.98;+31:13:59.1;CrB;0.65;0.33;16;15.30;;12.52;11.82;11.47;22.97;SBa;;;;;;;;2MASX J15220196+3113588,MCG +05-36-015,PGC 054850,SDSS J152201.98+311359.0,SDSS J152201.98+311359.1;;; -NGC5925;OCl;15:27:26.82;-54:31:43.6;Nor;4.80;;;;8.40;;;;;;;;;;;;;MWSC 2293;;; -NGC5926;G;15:23:24.90;+12:42:55.0;Se1;0.91;0.91;20;14.80;;12.39;11.97;11.49;23.22;Sbc;;;;;;;;IRAS 15210+1253,MCG +02-39-026,PGC 054950;;; -NGC5927;GCl;15:28:00.43;-50:40:22.0;Nor;6.60;;;10.13;8.86;;;;;;;;;;;;;MWSC 2295;;; -NGC5928;G;15:26:02.88;+18:04:25.1;Se1;1.64;1.08;103;13.80;;10.47;9.77;9.53;23.47;S0;;;;;;;;2MASX J15260290+1804253,MCG +03-39-027,PGC 055072,SDSS J152602.87+180425.0,SDSS J152602.87+180425.1,UGC 09847;;; -NGC5929;G;15:26:06.16;+41:40:14.4;Boo;0.90;0.83;45;13.00;14.00;;;;22.54;Sa;;;;;;;;MCG +07-32-006,PGC 055076,SDSS J152606.15+414014.3,SDSS J152606.16+414014.3,SDSS J152606.16+414014.4,UGC 09851;;; -NGC5930;G;15:26:07.94;+41:40:33.8;Boo;1.85;0.79;173;13.00;;9.96;9.22;8.94;22.71;SABa;;;;;;;;2MASX J15260798+4140339,IRAS 15243+4150,MCG +07-32-007,PGC 055080,SDSS J152607.95+414033.8,UGC 09852;;; -NGC5931;G;15:29:29.63;+07:34:23.7;Se1;1.58;0.93;40;15.00;;11.41;10.61;10.31;24.20;S0;;;;;;;;2MASX J15292960+0734239,MCG +01-39-023,PGC 055233,SDSS J152929.62+073423.6;;; -NGC5932;G;15:26:48.21;+48:36:53.9;Boo;1.10;1.06;160;15.20;;11.62;11.00;10.71;23.90;E;;;;;;;;2MASX J15264818+4836534,MCG +08-28-033,PGC 055109,SDSS J152648.20+483653.8,SDSS J152648.20+483653.9,SDSS J152648.21+483653.9;;; -NGC5933;G;15:27:01.57;+48:36:47.9;Boo;0.82;0.59;26;15.70;;12.54;11.95;11.50;24.03;E;;;;;;;;2MASX J15270149+4836474,MCG +08-28-034,PGC 055117,SDSS J152701.56+483647.9,SDSS J152701.57+483647.8,SDSS J152701.57+483647.9;;; -NGC5934;G;15:28:12.78;+42:55:47.7;Boo;0.61;0.29;5;14.50;;11.02;10.30;9.98;21.77;SBa;;;;;;;;2MASX J15281276+4255474,IRAS 15264+4306,MCG +07-32-011,PGC 055178,SDSS J152812.74+425547.6,SDSS J152812.75+425547.5,SDSS J152812.76+425547.6,SDSS J152812.77+425547.7,SDSS J152812.78+425547.7,UGC 09862;;; -NGC5935;G;15:28:16.71;+42:56:38.8;Boo;0.85;0.40;37;15.10;;11.40;10.72;10.44;23.07;SBa;;;;;;;;2MASX J15281667+4256384,MCG +07-32-013,PGC 055183,SDSS J152816.69+425638.7,SDSS J152816.70+425638.7,SDSS J152816.71+425638.8;;; -NGC5936;G;15:30:00.83;+12:59:21.6;Se1;1.18;1.12;60;13.00;;10.49;9.77;9.46;22.11;SBb;;;;;;;;2MASX J15300084+1259215,IRAS 15276+1309,MCG +02-39-030,PGC 055255,SDSS J153000.83+125921.5,UGC 09867;;; -NGC5937;G;15:30:46.13;-02:49:46.2;Se1;1.89;1.08;175;13.10;;10.11;9.37;9.04;22.79;SABb;;;;;;;;2MASX J15304613-0249463,IRAS 15281-0239,MCG +00-40-001,PGC 055281;;; -NGC5938;G;15:36:26.27;-66:51:35.1;TrA;2.31;1.59;15;11.90;;9.23;8.53;8.30;22.79;SBbc;;;;;;;;2MASX J15362626-6651350,ESO 099-007,IRAS 15317-6641,PGC 055582;;; -NGC5939;G;15:24:46.03;+68:43:50.3;UMi;0.82;0.43;33;13.70;;11.13;10.46;10.12;21.46;SABc;;;;;;;;2MASX J15244604+6843501,IRAS 15244+6854,MCG +12-15-007,PGC 055022,UGC 09854;;; -NGC5940;G;15:31:18.07;+07:27:27.9;Se1;0.78;0.74;170;15.56;14.90;11.79;11.15;10.80;22.69;Sab;;;;;;;;2MASX J15311810+0727276,IRAS 15288+0737,MCG +01-39-025,PGC 055295,SDSS J153118.07+072727.9,SDSS J153118.08+072727.9,UGC 09876;;; -NGC5941;G;15:31:40.24;+07:20:20.4;Se1;0.90;0.71;55;15.10;;11.87;11.18;11.08;23.55;E;;;;;;;;2MASX J15314024+0720207,MCG +01-40-003,PGC 055314,SDSS J153140.23+072020.3;;NGC identification is not certain.; -NGC5942;G;15:31:36.82;+07:18:44.7;Se1;0.71;0.67;80;15.20;;11.97;11.33;11.02;23.40;E;;;;;;;;2MASX J15313681+0718447,MCG +01-40-001,PGC 055309,SDSS J153136.82+071844.6;;Sometimes called NGC 5941.; -NGC5943;G;15:29:44.12;+42:46:40.7;Boo;1.24;1.11;170;14.60;;10.83;10.15;9.82;23.59;S0;;;;;;;;2MASX J15294409+4246404,MCG +07-32-016,PGC 055242,SDSS J152944.10+424640.7,SDSS J152944.11+424640.6,SDSS J152944.11+424640.7,SDSS J152944.12+424640.7,UGC 09870;;; -NGC5944;G;15:31:47.60;+07:18:29.3;Se1;0.86;0.21;112;15.20;;12.31;11.51;11.26;23.39;Sb;;;;;;;;2MASX J15314756+0718297,MCG +01-40-004,PGC 055321,SDSS J153147.60+071829.3;;; -NGC5945;G;15:29:45.02;+42:55:07.2;Boo;1.66;0.72;20;14.10;;10.41;9.76;9.48;23.52;Sab;;;;;;;;2MASX J15294500+4255073,IRAS 15280+4305,MCG +07-32-017,PGC 055243,SDSS J152944.99+425507.1,SDSS J152945.01+425507.2,SDSS J152945.02+425507.2,UGC 09871;;; -NGC5946;GCl;15:35:28.57;-50:39:35.0;Nor;3.60;;;11.98;10.72;;;;;;;;;;;4550;;MWSC 2306;;; -NGC5947;G;15:30:36.60;+42:43:01.7;Boo;1.17;0.82;45;14.80;;11.89;11.13;10.83;23.39;SBbc;;;;;;;;2MASX J15303656+4243018,IRAS 15288+4253,MCG +07-32-019,PGC 055274,SDSS J153036.58+424301.7,SDSS J153036.59+424301.7,SDSS J153036.60+424301.7,UGC 09877;;; -NGC5948;**;15:32:58.64;+03:58:58.2;Se1;;;;;;;;;;;;;;;;;;;;; -NGC5949;G;15:28:00.67;+64:45:47.5;Dra;1.84;0.76;148;12.70;;10.28;9.65;9.43;22.25;Sbc;;;;;;;;2MASX J15280067+6445473,IRAS 15273+6456,MCG +11-19-008,PGC 055165,SDSS J152800.67+644547.5,UGC 09866;;The 2MASS position is 5 arcsec northwest of the center of the optical bulge.; -NGC5950;G;15:31:30.79;+40:25:48.1;Boo;1.25;0.63;38;14.80;;11.62;11.20;11.02;23.34;SBb;;;;;;;;2MASX J15313082+4025485,IRAS 15296+4036,MCG +07-32-021,PGC 055305,SDSS J153130.79+402548.1,SDSS J153130.80+402548.1,UGC 09884;;; -NGC5951;G;15:33:43.06;+15:00:26.2;Se1;3.03;0.66;4;13.80;;10.89;10.27;10.05;23.61;SBc;;;;;;;;2MASX J15334307+1500262,IRAS 15313+1510,MCG +03-40-003,PGC 055435,SDSS J153343.07+150026.1,UGC 09895;;HOLM 713B is a star.; -NGC5952;G;15:34:56.44;+04:57:31.8;Se1;0.56;0.43;131;15.50;;12.53;11.81;11.50;23.45;E;;;;;;;;2MASX J15345642+0457317,PGC 055496,SDSS J153456.44+045731.8;;; -NGC5953;G;15:34:32.38;+15:11:37.6;Se1;1.47;1.12;50;13.23;12.45;9.92;9.20;9.16;22.50;S0-a;;;;;;;;2MASX J15343240+1511377,IRAS 15322+1521,MCG +03-40-005,PGC 055480,SDSS J153432.39+151137.5,SDSS J153432.52+151133.2,UGC 09903;;; -NGC5954;G;15:34:35.02;+15:12:00.2;Se1;1.02;0.48;19;13.70;;10.92;10.40;10.00;20.96;SABc;;;;;;;;2MASX J15343517+1511536,MCG +03-40-006,PGC 055482,SDSS J153435.02+151200.2,UGC 09904;;; -NGC5955;G;15:35:12.48;+05:03:46.8;Se1;0.72;0.50;31;15.00;;12.16;11.40;11.19;23.05;Sb;;;;;;;;2MASX J15351249+0503463,MCG +01-40-006,PGC 055510,SDSS J153512.47+050346.8;;; -NGC5956;G;15:34:58.54;+11:45:01.0;Se1;1.49;1.49;30;13.30;;10.76;10.09;9.87;22.88;SBc;;;;;;;;2MASX J15345850+1145012,IRAS 15326+1154,MCG +02-40-003,PGC 055501,SDSS J153458.53+114500.9,SDSS J153458.53+114501.0,UGC 09908;;; -NGC5957;G;15:35:23.21;+12:02:51.4;Se1;2.44;2.34;95;13.30;;10.40;9.77;9.50;24.18;Sb;;;;;;;;2MASX J15352323+1202510,IRAS 15330+1212,MCG +02-40-004,PGC 055520,SDSS J153523.21+120251.3,UGC 09915;;; -NGC5958;G;15:34:49.15;+28:39:18.9;CrB;1.07;1.00;175;13.20;;11.30;10.76;10.41;22.19;SABc;;;;;;;;2MASX J15344912+2839184,IRAS 15327+2849,MCG +05-37-003,PGC 055494,SDSS J153449.14+283918.9,SDSS J153449.15+283918.9,UGC 09909;;; -NGC5959;G;15:37:22.43;-16:35:44.8;Lib;2.09;1.44;1;14.00;;10.12;9.39;9.12;24.86;E;;;;;;;;2MASX J15372243-1635448,MCG -03-40-002,PGC 055625;;; -NGC5960;G;15:36:18.43;+05:39:55.3;Se1;0.88;0.71;99;15.10;;11.96;11.23;10.87;23.21;Sab;;;;;;;;2MASX J15361839+0539548,IRAS 15338+0549,MCG +01-40-007,PGC 055575,SDSS J153618.42+053955.3,SDSS J153618.43+053955.3;;; -NGC5961;G;15:35:16.32;+30:51:51.0;CrB;0.81;0.33;103;14.00;;11.73;11.03;10.72;22.17;Sb;;;;;;;;2MASX J15351646+3051507,IRAS 15332+3101,MCG +05-37-005,PGC 055515,SDSS J153516.32+305151.0,UGC 09918;;HOLM 715C is a star. Multiple SDSS entries describe this object.; -NGC5962;G;15:36:31.68;+16:36:28.0;Se1;2.48;1.61;108;11.98;11.34;9.50;8.81;8.53;22.45;Sc;;;;;;;;2MASX J15363164+1636284,IRAS 15342+1646,MCG +03-40-011,PGC 055588,SDSS J153631.68+163627.9,SDSS J153631.68+163628.0,UGC 09926;;HOLM 716B is a star.; -NGC5963;G;15:33:27.86;+56:33:34.9;Dra;3.14;2.47;58;13.34;13.65;10.74;10.14;9.92;24.07;SABb;;;;;;;;2MASX J15332779+5633345,IRAS 15322+5643,MCG +09-25-058,PGC 055419,SDSS J153327.85+563334.9,SDSS J153327.86+563334.9,TYC 3872-210-1,UGC 09906;;; -NGC5964;G;15:37:36.22;+05:58:26.5;Se1;3.42;2.56;147;12.45;11.82;;;;24.77;SBcd;;;;;;4551;;2MASX J15373722+0558068,IRAS 15351+0608,MCG +01-40-008,PGC 055637,SDSS J153736.21+055826.4,UGC 09935;;2MASS position is for a southern hot-spot.; -NGC5965;G;15:34:02.46;+56:41:08.2;Dra;5.08;0.78;52;13.40;;9.65;8.94;8.61;23.75;SABb;;;;;;;;2MASX J15340245+5641081,IRAS 15328+5651,MCG +10-22-020,PGC 055459,SDSS J153402.28+564108.5,SDSS J153402.29+564108.5,UGC 09914;;; -NGC5966;G;15:35:52.14;+39:46:08.2;Boo;1.53;0.98;88;13.90;;10.63;9.93;9.68;22.91;E;;;;;;;;2MASX J15355211+3946082,MCG +07-32-032,PGC 055552,SDSS J153552.10+394608.0,SDSS J153552.10+394608.1,SDSS J153552.11+394608.2,UGC 09923;;; -NGC5967;G;15:48:15.93;-75:40:22.6;Aps;2.37;1.55;90;14.20;;9.72;8.81;8.71;22.98;Sc;;;;;;;;2MASX J15481597-7540226,ESO 042-010,IRAS 15421-7531,PGC 056078;;Confused HIPASS source; -NGC5967A;G;15:46:58.72;-75:47:14.8;Aps;1.50;1.14;36;14.06;;12.22;11.16;11.17;23.54;Sc;;;;;;;;2MASX J15465869-7547149,ESO 042-009,PGC 056024;;; -NGC5968;G;15:39:57.17;-30:33:10.0;Lup;2.29;2.13;20;13.08;14.32;9.60;8.86;8.66;23.61;SABb;;;;;;;;2MASX J15395715-3033100,ESO 450-005,ESO-LV 450-0050,IRAS 15368-3023,MCG -05-37-001,PGC 055738;;; -NGC5969;G;15:34:51.02;+56:27:03.9;Dra;0.79;0.65;160;15.40;;11.77;11.20;10.80;23.57;E;;;;;;;;2MASX J15345108+5627040,MCG +09-25-059,PGC 055491,SDSS J153451.02+562703.8,SDSS J153451.02+562703.9,SDSS J153451.03+562703.8,SDSS J153451.04+562704.1;;; -NGC5970;G;15:38:29.97;+12:11:11.8;Se1;2.77;1.91;88;12.20;;9.70;9.07;8.82;22.64;SBc;;;;;;;;2MASX J15382998+1211117,IRAS 15361+1220,MCG +02-40-006,PGC 055665,UGC 09943;;; -NGC5971;G;15:35:36.89;+56:27:42.1;Dra;1.25;0.53;132;14.90;;11.65;11.08;11.00;23.53;Sa;;;;;;;;2MASX J15353688+5627424,MCG +09-26-002,PGC 055529,SDSS J153536.89+562742.0,SDSS J153536.89+562742.1,SDSS J153536.90+562742.3,UGC 09929;;; -NGC5972;G;15:38:54.17;+17:01:34.3;Se1;0.70;0.57;10;14.60;14.27;11.71;11.07;10.69;22.72;S0-a;;;;;;;;2MASX J15385414+1701344,MCG +03-40-016,PGC 055684,SDSS J153854.16+170134.2,SDSS J153854.16+170134.3,SDSS J153854.17+170134.2,UGC 09946;;; -NGC5973;G;15:40:15.47;-08:36:03.4;Lib;0.92;0.26;138;15.05;;11.40;10.65;10.26;23.61;S0-a;;;;;;;;2MASX J15401545-0836033,IRAS 15375-0826,PGC 055757;;; -NGC5974;G;15:39:02.42;+31:45:35.7;CrB;0.58;0.33;111;14.30;;12.13;11.47;11.16;21.74;Scd;;;;;;;;2MASX J15390238+3145349,IRAS 15370+3155,MCG +05-37-010,PGC 055694,SDSS J153902.41+314535.7,SDSS J153902.42+314535.7,UGC 09952;;; -NGC5975;G;15:39:57.97;+21:28:14.9;Se1;0.93;0.24;171;14.70;;11.03;10.31;9.95;22.16;Sbc;;;;;;;;2MASX J15395796+2128150,IRAS 15377+2137,MCG +04-37-019,PGC 055739,SDSS J153957.94+212814.2,SDSS J153957.94+212814.3,UGC 09963;;HOLM 718B does not exist (it is probably a plate defect).; -NGC5976;G;15:36:47.97;+59:23:51.9;Dra;0.98;0.33;125;15.90;;12.77;11.98;11.97;24.41;S0;;;;;;;;2MASX J15364801+5923522,MCG +10-22-025,PGC 055609,SDSS J153647.96+592351.8;;; -NGC5977;G;15:40:33.45;+17:07:40.7;Se1;0.91;0.82;80;15.10;;12.06;11.37;11.26;23.77;S0;;;;;;;;2MASX J15403347+1707409,MCG +03-40-023,PGC 055769,SDSS J154033.45+170740.6,UGC 09967;;; -NGC5978;G;15:42:27.22;-13:14:04.0;Lib;0.81;0.74;135;14.00;;11.69;10.89;10.50;23.60;Sa;;;;;;;;2MASX J15422724-1314035,MCG -02-40-002,PGC 055838;;; -NGC5979;PN;15:47:41.06;-61:13:04.3;TrA;0.13;;;11.80;11.50;12.41;12.11;11.53;;;;16.30;15.30;;;;HD 140586;2MASX J15474191-6113079,ESO 136-003,IRAS 15434-6103,PN G322.5-05.2;;The 2MASS position is southeast of the central star.; -NGC5980;G;15:41:30.40;+15:47:15.6;Se1;1.63;0.52;14;13.30;;10.52;9.74;9.44;22.32;Sbc;;;;;;;;2MASX J15413039+1547156,IRAS 15391+1556,MCG +03-40-026,PGC 055800,SDSS J154130.44+154715.6,UGC 09974;;HOLM 720B is a star.; -NGC5981;G;15:37:53.45;+59:23:30.3;Dra;2.73;0.37;139;14.20;;10.41;9.62;9.29;23.35;SBbc;;;;;;;;2MASX J15375266+5923382,2MASX J15375345+5923304,IRAS 15368+5933,MCG +10-22-027,PGC 055647,SDSS J153753.45+592330.3,UGC 09948;;; -NGC5982;G;15:38:39.83;+59:21:21.0;Dra;3.07;2.00;110;12.40;;9.08;8.36;8.15;23.26;E;;;;;;;;2MASX J15383977+5921212,MCG +10-22-029,PGC 055674,SDSS J153839.82+592121.0,UGC 09961;;; -NGC5983;G;15:42:45.63;+08:14:28.0;Se1;0.97;0.92;55;15.10;;11.39;10.75;10.46;23.83;E;;;;;;;;2MASX J15424560+0814279,MCG +01-40-012,PGC 055845,SDSS J154245.62+081427.9,SDSS J154245.63+081427.9,SDSS J154245.63+081428.0,UGC 09983;;; -NGC5984;G;15:42:53.17;+14:13:53.3;Se1;2.48;0.57;144;13.50;;11.06;10.40;10.17;22.76;Sc;;;;;;;;2MASX J15425319+1413531,IRAS 15405+1423,MCG +02-40-011,PGC 055853,SDSS J154253.16+141353.3,UGC 09987;;; -NGC5985;G;15:39:37.09;+59:19:55.0;Dra;3.98;2.01;15;15.24;14.22;9.06;8.32;8.15;23.20;Sb;;;;;;;;2MASX J15393708+5919550,IRAS 15385+5929,MCG +10-22-030,PGC 055725,UGC 09969;;; -NGC5986;GCl;15:46:03.44;-37:47:10.1;Lup;5.40;;;;6.92;;;;;;;;;;;;;ESO 329-018,MWSC 2317;;; -NGC5987;G;15:39:57.37;+58:04:46.3;Dra;3.84;1.32;60;13.30;;9.57;8.87;8.61;23.66;Sb;;;;;;;;2MASX J15395738+5804463,MCG +10-22-032,PGC 055740,UGC 09971;;; -NGC5988;G;15:44:33.86;+10:17:35.3;Se1;1.12;0.77;110;15.30;;11.92;11.19;10.89;23.64;Sc;;;;;;;;2MASX J15443383+1017356,MCG +02-40-012,PGC 055921,SDSS J154433.85+101735.3,UGC 09998;;; -NGC5989;G;15:41:32.80;+59:45:18.8;Dra;0.88;0.82;130;13.60;;11.48;10.94;10.62;21.96;Sc;;;;;;;;2MASX J15413284+5945191,IRAS 15405+5954,MCG +10-22-034,PGC 055802,SDSS J154132.79+594518.7,UGC 09985;;; -NGC5990;G;15:46:16.36;+02:24:55.5;Se1;1.59;0.95;107;13.10;;10.09;9.34;8.95;22.62;SABa;;;;;;;;2MASX J15461637+0224558,IRAS 15437+0234,MCG +01-40-014,PGC 055993,SDSS J154616.35+022455.5,UGC 10024;;; -NGC5991;G;15:45:16.78;+24:37:49.9;Se1;1.00;0.78;129;14.70;;11.29;10.62;10.30;23.39;E;;;;;;;;2MASX J15451680+2437494,MCG +04-37-028,PGC 055953,SDSS J154516.78+243749.8;;; -NGC5992;G;15:44:21.51;+41:05:10.9;Boo;0.69;0.47;156;14.20;;12.21;11.80;11.30;22.19;SBb;;;;;;;;2MASX J15442146+4105110,IRAS 15425+4114,MCG +07-32-049,PGC 055913,SDSS J154421.51+410510.9,UGC 10003;;; -NGC5993;G;15:44:27.62;+41:07:14.9;Boo;0.95;0.60;140;13.90;;11.65;10.90;10.61;22.45;Sb;;;;;;;;IRAS 15426+4116,MCG +07-32-050,PGC 055918,SDSS J154427.61+410714.9,UGC 10007;;Multiple SDSS entries describe this object.; -NGC5994;G;15:46:53.26;+17:52:21.4;Se1;0.60;0.30;93;13.20;;14.06;13.71;13.10;22.89;SBbc;;;;;;;;2MASX J15465326+1752217,MCG +03-40-038,PGC 056020,SDSS J154653.32+175221.6,UGC 10033 NED01;;Incorrectly called NGC 5996 in 1976ApJS...31..187D.; -NGC5995;G;15:48:24.95;-13:45:28.0;Lib;1.02;0.79;147;14.66;13.69;10.75;9.94;9.39;23.21;SABa;;;;;;;;2MASX J15482491-1345273,IRAS 15456-1336,MCG -02-40-004,PGC 056081;;; -NGC5996;G;15:46:58.88;+17:53:03.1;Se1;1.50;0.68;1;13.20;;11.50;10.81;10.42;22.21;SBbc;;;;;;;;2MASX J15465887+1753031,IRAS 15447+1802,MCG +03-40-039,PGC 056023,SDSS J154658.88+175303.0,SDSS J154658.88+175303.1,UGC 10033 NED02;;Incorrectly called NGC 5994 in 1976ApJS...31..187D.; -NGC5997;G;15:47:27.67;+08:19:16.3;Se1;0.68;0.30;87;15.50;;12.25;11.60;11.40;23.66;E;;;;;;;;2MASX J15472770+0819167,PGC 056044,SDSS J154727.66+081916.3,SDSS J154727.67+081916.2,SDSS J154727.67+081916.3;;; -NGC5998;OCl;15:49:38.21;-28:34:41.6;Sco;5.40;;;;;;;;;;;;;;;;;MWSC 2323;;; -NGC5999;OCl;15:52:08.63;-56:28:22.1;Nor;3.30;;;;9.00;;;;;;;;;;;;;MWSC 2326;;; -NGC6000;G;15:49:49.55;-29:23:12.6;Sco;1.91;1.66;159;13.02;;9.28;8.56;8.20;23.06;SBbc;;;;;;;;2MASX J15494955-2923124,ESO 450-020,ESO-LV 450-0200,IRAS 15467-2914,MCG -05-37-003,PGC 056145;;; -NGC6001;G;15:47:45.96;+28:38:30.1;CrB;1.06;0.95;163;14.40;;11.66;11.02;11.00;23.08;SABc;;;;;;;;2MASX J15474595+2838306,MCG +05-37-027,PGC 056056,SDSS J154745.95+283830.0,SDSS J154745.96+283830.0,SDSS J154745.96+283830.1,UGC 10036;;; -NGC6002;*;15:47:44.39;+28:36:34.9;CrB;;;;;;;;;;;;;;;;;;SDSS J154744.39+283634.8;;NGC identification is not certain.; -NGC6003;G;15:49:25.64;+19:01:55.5;Se1;0.97;0.87;101;14.40;;11.18;10.48;10.23;22.98;S0;;;;;;;;2MASX J15492562+1901551,MCG +03-40-048,PGC 056130,SDSS J154925.64+190155.4,UGC 10048;;; -NGC6004;G;15:50:22.72;+18:56:21.4;Se1;1.89;1.49;95;13.40;;10.48;9.79;9.55;23.41;Sc;;;;;;;;2MASX J15502269+1856207,IRAS 15481+1905,MCG +03-40-051,PGC 056166,SDSS J155022.71+185621.3,SDSS J155022.72+185621.3,UGC 10056;;; -NGC6005;OCl;15:55:48.70;-57:26:14.6;Nor;4.20;;;11.90;10.70;;;;;;;;;;;;;MWSC 2336;;; -NGC6006;G;15:53:02.57;+12:00:19.3;Se1;0.71;0.42;157;15.30;;12.63;11.98;11.59;23.44;S0-a;;;;;;;;2MASX J15530253+1200191,PGC 056295,SDSS J155302.56+120019.3;;; -NGC6007;G;15:53:23.18;+11:57:33.1;Se1;1.55;1.19;53;14.10;;11.33;10.75;10.54;23.33;SABc;;;;;;;;2MASX J15532317+1157327,IRAS 15510+1206,MCG +02-40-018,PGC 056309,SDSS J155323.17+115733.0,UGC 10079;;; -NGC6008;G;15:52:56.03;+21:06:01.8;Se1;1.16;0.89;94;14.20;;11.31;10.53;10.28;22.99;Sb;;;;;;;;2MASX J15525603+2106017,IRAS 15507+2114,MCG +04-37-052,PGC 056289,SDSS J155256.02+210601.8,SDSS J155256.03+210601.8,UGC 10076;;; -NGC6009;G;15:53:24.08;+12:03:31.2;Se1;0.66;0.26;167;15.40;;13.21;12.59;12.24;23.51;S0-a;;;;;;;;2MASX J15532407+1203311,PGC 056312,SDSS J155324.09+120330.8;;; -NGC6010;G;15:54:19.15;+00:32:35.0;Se1;1.82;0.40;100;13.30;;9.85;9.15;8.93;22.79;S0-a;;;;;;;;2MASX J15541914+0032349,MCG +00-40-013,PGC 056337,SDSS J155419.15+003234.9,UGC 10081;;; -NGC6011;G;15:46:32.89;+72:10:09.2;UMi;1.77;0.48;108;14.50;;11.03;10.41;10.09;23.49;Sb;;;;;;;;2MASX J15463291+7210090,MCG +12-15-016,PGC 056008,UGC 10047;;; -NGC6012;G;15:54:13.94;+14:36:04.5;Se1;1.77;1.27;164;13.21;12.42;10.45;9.79;9.54;22.65;SBab;;;;;;;;2MASX J15541394+1436044,IRAS 15519+1444,MCG +03-40-059,PGC 056334,UGC 10083;;; -NGC6013;G;15:52:52.84;+40:38:48.2;Her;1.44;0.76;174;14.16;13.63;11.54;10.97;10.60;23.49;SBb;;;;;;;;2MASX J15525286+4038484,MCG +07-33-004,PGC 056287,SDSS J155252.83+403848.2,SDSS J155252.84+403848.1,SDSS J155252.84+403848.2,UGC 10080;;; -NGC6014;G;15:55:57.40;+05:55:54.8;Se1;1.75;1.42;20;13.80;;10.73;10.13;9.80;23.67;S0;;;;;;4586;;2MASX J15555738+0555546,IRAS 15535+0604,MCG +01-41-002,PGC 056413,UGC 10091;;; -NGC6015;G;15:51:25.23;+62:18:36.1;Dra;5.81;2.57;28;11.69;11.14;9.31;8.71;8.47;23.48;Sc;;;;;;;;2MASX J15512523+6218361,IRAS 15506+6227,MCG +10-23-003,PGC 056219,UGC 10075;;; -NGC6016;G;15:55:54.87;+26:57:59.4;CrB;0.98;0.48;25;15.10;;12.18;11.60;11.41;23.07;SABc;;;;;;;;2MASX J15555482+2657587,MCG +05-38-001,PGC 056410,SDSS J155554.86+265759.4,SDSS J155554.87+265759.4,UGC 10096;;; -NGC6017;G;15:57:15.44;+05:59:54.2;Se1;0.80;0.75;140;13.80;;10.78;10.05;9.81;22.19;E;;;;;;;;2MASX J15571548+0559541,MCG +01-41-003,PGC 056475,SDSS J155715.44+055954.1,UGC 10098;;; -NGC6018;G;15:57:29.77;+15:52:21.4;Se1;1.32;0.62;67;14.60;;11.11;10.48;10.14;23.62;S0-a;;;;;;;;2MASX J15572978+1552213,IRAS 15551+1600,MCG +03-41-006,PGC 056481,SDSS J155729.77+155221.4,UGC 10101;;This may also be IC 1150.; -NGC6019;G;15:52:09.14;+64:50:26.4;Dra;0.43;0.39;135;15.70;;13.33;12.62;12.36;22.85;;;;;;;;;2MASX J15520910+6450264,PGC 056265;;; -NGC6020;G;15:57:08.14;+22:24:16.5;Se1;1.74;1.10;136;14.50;;10.68;10.01;9.76;23.81;E;;;;;;1148;;2MASX J15570811+2224163,MCG +04-38-002,PGC 056467,SDSS J155708.13+222416.4,SDSS J155708.13+222416.5,UGC 10100;;; -NGC6021;G;15:57:30.69;+15:57:21.8;Se1;1.55;0.91;158;14.10;;10.93;10.19;9.94;23.86;E;;;;;;;;2MASX J15573067+1557223,MCG +03-41-005,PGC 056482,SDSS J155730.68+155721.7,UGC 10102;;; -NGC6022;G;15:57:47.77;+16:16:56.3;Se1;0.80;0.57;62;15.20;;12.77;12.09;11.98;23.32;SBbc;;;;;;;;2MASX J15574774+1616563,MCG +03-41-009,PGC 056495,SDSS J155747.76+161656.3,SDSS J155747.77+161656.3;;; -NGC6023;G;15:57:49.62;+16:18:36.7;Se1;1.61;1.16;67;14.70;;10.99;10.33;10.00;24.13;E;;;;;;;;2MASX J15574962+1618363,MCG +03-41-010,PGC 056492,SDSS J155749.61+161836.6,SDSS J155749.62+161836.7,UGC 10106;;; -NGC6024;G;15:53:07.87;+64:55:05.0;Dra;0.98;0.73;130;15.10;;11.21;10.54;10.18;23.82;E;;;;;;;;2MASX J15530789+6455050,MCG +11-19-026,PGC 056294;;; -NGC6025;OCl;16:03:17.79;-60:25:52.9;TrA;11.40;;;5.26;5.10;;;;;;;;;;;;;C 095,MWSC 2347;;; -NGC6026;PN;16:01:20.91;-34:32:39.2;Lup;0.67;;;13.20;12.90;13.05;13.04;13.04;;;;13.35;13.29;;;;;ESO 389-007,IRAS 15581-3424,PN G341.6+13.7;;; -NGC6027;G;15:59:12.54;+20:45:48.1;Se1;1.64;1.02;18;13.40;;11.24;10.47;10.59;25.05;S0-a;;;;;;;;2MASX J15591254+2045483,MCG +04-38-008,PGC 056575,SDSS J155912.53+204548.0,UGC 10116 NED01;;"Called 'NGC 6027A' in MCG; VV has two (case sensitive) entries for VV 115A."; -NGC6027A;G;15:59:11.14;+20:45:17.5;Se1;1.79;1.73;75;13.40;;11.50;10.80;10.53;24.78;S0-a;;;;;;;;2MASX J15591112+2045163,MCG +04-38-006,PGC 056576,SDSS J155911.13+204517.4,UGC 10116 NED02;;VV has two (case sensitive) entries for VV 115a.; -NGC6027B;G;15:59:10.83;+20:45:43.9;Se1;0.91;0.41;;13.40;;;;;23.72;S0;;;;;;;;MCG +04-38-005,PGC 056584,SDSS J155910.83+204543.8,UGC 10116 NED03;;; -NGC6027C;G;15:59:11.87;+20:44:51.4;Se1;1.10;0.22;174;16.89;;;;;24.22;SBc;;;;;;;;MCG +04-38-007,PGC 056578,SDSS J155911.86+204451.4,SDSS J155911.87+204451.4,UGC 10116 NED04;;; -NGC6027D;G;15:59:12.90;+20:45:35.7;Se1;0.30;0.26;110;16.61;;13.51;14.57;12.70;22.46;Scd;;;;;;;;2MASX J15591290+2045353,MCG +04-38-009,PGC 056580,SDSS J155912.89+204535.7,UGC 10116 NED05;;; -NGC6027E;G;15:59:14.48;+20:45:57.3;Se1;2.28;1.29;81;16.50;;;;;24.87;S0-a;;;;;;;;MCG +04-38-010,PGC 056579,UGC 10116 NED06;;; -NGC6028;G;16:01:28.96;+19:21:35.6;Her;1.31;1.18;54;14.80;;11.72;11.02;10.77;23.68;S0-a;;;;;6046;;;2MASX J16012897+1921356,MCG +03-41-043,PGC 056716,SDSS J160128.95+192135.5,UGC 10135;;; -NGC6029;G;16:01:58.87;+12:34:26.4;Se1;0.80;0.45;14;;;12.24;11.62;11.36;23.98;S0-a;;;;;;;;PGC 056756,SDSS J160158.86+123426.4,SDSS J160158.87+123426.4;;"Star superposed 5"" to the north of the nucleus."; -NGC6030;G;16:01:51.42;+17:57:27.0;Her;1.29;0.94;43;14.50;;10.76;10.08;9.83;23.16;S0;;;;;;;;2MASX J16015137+1757266,MCG +03-41-044,PGC 056750,SDSS J160151.41+175726.9,SDSS J160151.42+175727.0,UGC 10139;;; -NGC6031;OCl;16:07:35.38;-54:00:53.8;Nor;4.80;;;8.92;8.50;;;;;;;;;;;;;MWSC 2352;;; -NGC6032;G;16:03:01.12;+20:57:21.4;Her;0.83;0.51;1;15.00;;11.29;10.99;10.47;22.33;Sb;;;;;;;;2MASX J16030112+2057215,IRAS 16008+2105,MCG +04-38-016,PGC 056842,SDSS J160301.12+205721.3,SDSS J160301.12+205721.4,UGC 10148;;; -NGC6033;G;16:04:27.98;-02:07:15.5;Se1;1.00;0.91;144;15.30;;10.82;10.05;9.69;23.55;Sbc;;;;;;;;2MASX J16042798-0207153,MCG +00-41-003,PGC 056941,UGC 10159;;; -NGC6034;G;16:03:32.08;+17:11:55.3;Her;1.15;0.83;64;15.20;;11.50;10.76;10.46;23.73;E;;;;;;;;2MASX J16033205+1711546,MCG +03-41-062,PGC 056877,SDSS J160332.08+171155.2,SDSS J160332.08+171155.3;;; -NGC6035;G;16:03:24.18;+20:53:28.5;Her;0.97;0.85;137;14.70;;11.54;10.90;10.60;22.77;Sc;;;;;;;;2MASX J16032417+2053285,MCG +04-38-018,PGC 056864,SDSS J160324.17+205328.4,SDSS J160324.17+205328.5,UGC 10154;;; -NGC6036;G;16:04:30.75;+03:52:06.5;Se1;1.04;0.39;146;14.40;;10.50;9.74;9.44;22.46;S0-a;;;;;;;;2MASX J16043073+0352069,MCG +01-41-010,PGC 056950,SDSS J160430.74+035206.5,UGC 10163;;; -NGC6037;G;16:04:29.90;+03:48:54.5;Se1;0.75;0.67;64;15.20;;12.08;11.38;11.14;23.43;S0-a;;;;;;;;2MASX J16042987+0348549,MCG +01-41-009,PGC 056947,SDSS J160429.89+034854.4,SDSS J160429.90+034854.4,SDSS J160429.90+034854.5;;; -NGC6038;G;16:02:40.55;+37:21:34.2;CrB;1.21;1.05;63;14.40;;11.29;10.55;10.21;23.30;Sc;;;;;;;;2MASX J16024055+3721338,IRAS 16008+3729,MCG +06-35-026,PGC 056812,SDSS J160240.54+372134.1,SDSS J160240.54+372134.2,SDSS J160240.55+372134.1,SDSS J160240.55+372134.2,UGC 10149;;; -NGC6039;G;16:04:39.57;+17:42:03.1;Her;1.00;0.81;46;15.60;;11.88;11.24;10.93;23.80;E-S0;;;;;6042;;;2MASX J16043953+1742032,MCG +03-41-079,PGC 056972,SDSS J160439.56+174203.0,SDSS J160439.57+174203.1;;; -NGC6040;GPair;16:04:26.63;+17:44:42.5;Her;1.41;0.44;47;14.60;;11.90;11.19;10.95;22.83;SABc;;;;;;;;IRAS 16021+1753,PGC 056932,UGC 10165;;Called 'NGC 6039' in VV and Arp. Called 'IC 1170' in MCG.; -NGC6041;GPair;16:04:35.28;+17:43:09.3;Her;1.48;1.17;44;14.90;;11.00;10.33;9.97;23.93;E-S0;;;;;;;;MCG +03-41-078,PGC 056962,UGC 10170;;Part of the GTrpl CGCG 1602.3+1751.; -NGC6042;Dup;16:04:39.57;+17:42:03.1;Her;;;;;;;;;;;;;;;6039;;;;;; -NGC6043;GPair;16:05:01.20;+17:46:26.0;Her;0.74;0.50;35;15.40;;;;;23.40;E-S0;;;;;;;;MCG +03-41-086,PGC 057019;;; -NGC6044;G;16:04:59.68;+17:52:13.3;Her;0.65;0.60;150;15.30;;12.15;11.49;11.17;23.12;S0;;;;;;1172;;2MASX J16045968+1752128,MCG +03-41-084,PGC 057015,SDSS J160459.67+175213.2,SDSS J160459.68+175213.3;;; -NGC6045;G;16:05:07.89;+17:45:27.6;Her;1.40;0.32;78;14.80;;11.65;10.88;10.54;23.23;Sc;;;;;;;;2MASX J16050788+1745278,IRAS 16028+1753,MCG +03-41-088,PGC 057031,SDSS J160507.88+174527.6,SDSS J160507.89+174527.6,UGC 10177;;; -NGC6046;Dup;16:01:28.96;+19:21:35.6;Her;;;;;;;;;;;;;;;6028;;;;;; -NGC6047;G;16:05:08.99;+17:43:47.6;Her;1.18;0.73;117;15.40;;11.50;10.84;10.61;23.71;E;;;;;;;;2MASX J16050900+1743478,MCG +03-41-087,PGC 057033,SDSS J160508.98+174347.6;;; -NGC6048;G;15:57:30.25;+70:41:20.8;UMi;1.95;1.32;137;13.60;;10.57;9.89;9.64;23.88;E;;;;;;;;2MASX J15573014+7041207,MCG +12-15-038,PGC 056484,UGC 10124;;; -NGC6049;*;16:05:37.93;+08:05:46.5;Se1;;;;6.36;6.27;6.08;6.08;5.99;;;;;;;;;;BD +08 3134,HD 144426,HIP 078840,TYC 945-1488-1;;; -NGC6050;G;16:05:23.37;+17:45:25.8;Her;0.86;0.57;114;14.90;;12.31;11.50;11.32;23.47;Sc;;;;;;;;2MASX J16052336+1745258,MCG +03-41-092,PGC 057058,SDSS J160523.36+174525.8,SDSS J160523.37+174525.8,UGC 10186 NED01;;Component 'b)' in UGC notes.; -NGC6050B;G;16:05:22.22;+17:45:15.1;Her;0.62;0.42;9;15.00;;;;;23.43;Sc;;;;;;1179;;MCG +03-41-093,PGC 057053,SDSS J160522.21+174515.0,SDSS J160522.22+174515.1,UGC 10186 NED02;;Component 'a)' in UGC notes.; -NGC6051;G;16:04:56.67;+23:55:57.7;Se1;2.69;0.79;166;14.90;;10.45;9.77;9.49;25.09;E;;;;;;;;2MASX J16045670+2355583,MCG +04-38-021,PGC 057006,SDSS J160456.66+235557.6,UGC 10178;;; -NGC6052;GPair;16:05:12.99;+20:32:32.5;Her;1.20;;;;;;;;;;;;;;6064;;;MCG +04-38-022,UGC 10182;;One of two 6cm sources associated with [WB92] 1603+2037;Diameter of the group inferred by the author. -NGC6052 NED01;G;16:05:12.87;+20:32:32.6;Her;0.83;0.65;5;13.44;13.00;11.58;10.87;10.68;21.57;;;;;;;;;2MASX J16051287+2032326,IRAS 16030+2040,MCG +04-38-022 NED01,PGC 057039,UGC 10182 NED01;;; -NGC6052 NED02;G;16:05:13.23;+20:32:32.7;Her;0.69;0.30;2;14.39;;;;;22.60;Scd;;;;;;;;MCG +04-38-022 NED02,PGC 200329,UGC 10182 NED02;;;B-Mag taken from LEDA -NGC6053;G;16:05:39.65;+18:09:51.7;Her;0.68;0.52;135;15.70;;12.41;11.51;11.41;23.63;E;;;;;6057;;;2MASX J16053963+1809518,MCG +03-41-106,PGC 057090,SDSS J160539.64+180951.6,SDSS J160539.65+180951.6,SDSS J160539.66+180951.7;;; -NGC6054;G;16:05:38.15;+17:46:04.4;Her;0.83;0.48;71;15.60;;12.00;11.31;10.99;23.66;E;;;;;;1183;;2MASX J16053813+1746048,MCG +03-41-103,PGC 057086,SDSS J160538.14+174604.4,SDSS J160538.15+174604.4,UGC 10192 NOTES01;;Misidentified as IC 1184 in CGCG and in several papers referring to it.; -NGC6055;G;16:05:32.56;+18:09:34.5;Her;1.22;0.69;41;15.40;;11.59;10.93;10.61;24.05;S0-a;;;;;;;;2MASX J16053254+1809348,MCG +03-41-101,PGC 057076,SDSS J160532.56+180934.4,SDSS J160532.56+180934.5,UGC 10191;;; -NGC6056;G;16:05:31.28;+17:57:49.1;Her;0.98;0.59;56;15.10;;11.64;10.91;10.59;23.58;S0-a;;;;;;1176;;2MASX J16053126+1757488,MCG +03-41-100,PGC 057075,SDSS J160531.28+175749.0,SDSS J160531.28+175749.1;;; -NGC6057;Dup;16:05:39.65;+18:09:51.7;Her;;;;;;;;;;;;;;;6053;;;;;; -NGC6058;PN;16:04:26.54;+40:40:59.0;Her;0.38;;;13.30;12.90;;;;;;12.37;13.55;13.91;;;;UCAC2 45993562;IRAS 16027+4049,PN G064.6+48.2,SDSS J160426.54+404058.9;;; -NGC6059;Other;16:07:13.31;-06:24:46.7;Oph;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6060;G;16:05:51.98;+21:29:05.9;Her;1.89;1.02;103;14.30;;10.29;9.57;9.22;23.70;SABc;;;;;;;;2MASX J16055197+2129059,IRAS 16036+2137,MCG +04-38-025,PGC 057110,SDSS J160551.99+212905.6,UGC 10196;;; -NGC6061;G;16:06:16.03;+18:14:59.8;Her;1.13;0.95;94;15.00;15.00;11.31;10.64;10.30;23.73;E-S0;;;;;;;;2MASX J16061598+1814592,MCG +03-41-118,PGC 057137,SDSS J160616.02+181459.8,SDSS J160616.03+181459.8,UGC 10199;;; -NGC6062;G;16:06:22.82;+19:46:40.7;Her;1.19;0.79;21;14.40;;11.98;11.40;11.13;23.08;Sbc;;;;;;;;2MASX J16062283+1946402,IRAS 16041+1954,MCG +03-41-125,PGC 057145,SDSS J160622.82+194640.6,SDSS J160622.82+194640.7,UGC 10202;;; -NGC6062B;G;16:06:18.97;+19:45:47.7;Her;0.54;0.49;150;16.00;;13.78;13.17;12.93;23.43;Sc;;;;;;;;2MASX J16061893+1945472,MCG +03-41-122,PGC 057146,SDSS J160618.97+194547.6;;; -NGC6063;G;16:07:12.99;+07:58:44.4;Se1;1.63;0.85;157;14.10;;11.39;10.72;10.55;23.24;Sc;;;;;;;;2MASX J16071296+0758444,MCG +01-41-012,PGC 057205,SDSS J160712.99+075844.3,SDSS J160713.00+075844.4,UGC 10210;;; -NGC6064;Dup;16:05:12.99;+20:32:32.5;Her;;;;;;;;;;;;;;;6052;;;;;; -NGC6065;G;16:07:22.96;+13:53:16.5;Se1;0.98;0.94;150;15.00;;11.44;10.74;10.54;23.53;E-S0;;;;;;;;2MASX J16072297+1353167,MCG +02-41-008,PGC 057215,SDSS J160722.95+135316.4,SDSS J160722.95+135316.5;;; -NGC6066;G;16:07:35.35;+13:56:37.4;Se1;1.00;0.77;112;15.20;;11.47;10.67;10.56;23.80;E;;;;;;;;2MASX J16073534+1356377,PGC 057230,SDSS J160735.34+135637.3;;; -NGC6067;OCl;16:13:11.05;-54:13:08.2;Nor;8.10;;;6.21;5.60;;;;;;;;;;;;;MWSC 2370;;; -NGC6068;G;15:55:25.99;+78:59:48.4;UMi;1.29;0.79;158;13.66;13.01;10.84;10.20;9.95;21.64;SBbc;;;;;;;;2MASX J15552594+7859485,MCG +13-11-019,PGC 056388,UGC 10126;;; -NGC6068A;G;15:54:47.51;+78:59:06.4;UMi;0.94;0.35;1;14.93;14.10;;;;23.26;S0;;;;;;;;2MASX J15544753+7859066,MCG +13-11-017,PGC 056363,UGC 10126 NOTES01;;; -NGC6069;G;16:07:41.64;+38:55:50.7;CrB;1.09;1.02;140;15.50;;11.59;10.91;10.74;24.12;E;;;;;;;;2MASX J16074160+3855507,MCG +07-33-043,PGC 057237,SDSS J160741.64+385550.6,SDSS J160741.64+385550.7,SDSS J160741.65+385550.7;;; -NGC6070;G;16:09:58.69;+00:42:33.5;Se1;3.49;1.84;63;12.10;;9.70;9.02;8.75;23.33;Sc;;;;;;;;2MASX J16095868+0042335,IRAS 16074+0050,MCG +00-41-004,PGC 057345,UGC 10230;;; -NGC6071;G;16:02:07.03;+70:25:01.3;UMi;0.75;0.56;105;14.90;;11.53;10.85;10.59;;E;;;;;;;;2MASX J16020708+7025018,MCG +12-15-047,PGC 056767;;;Diameters and position angle taken from Simbad. -NGC6072;PN;16:12:58.20;-36:13:48.0;Sco;1.17;;;14.10;11.70;;;;;;;19.31;;;;;;2MASX J16125713-3613263,ESO 389-015,IRAS 16097-3606,PN G342.1+10.8;;; -NGC6073;G;16:10:10.85;+16:41:58.6;Her;1.31;0.65;127;14.50;;11.34;10.91;10.51;23.05;Sc;;;;;;;;2MASX J16101083+1641582,IRAS 16078+1649,MCG +03-41-139,PGC 057353,SDSS J161010.84+164158.5,SDSS J161010.85+164158.6,UGC 10235;;HOLM 731B is a star.; -NGC6074;GPair;16:11:17.00;+14:15:25.0;Her;0.80;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC6074 NED01;G;16:11:16.76;+14:15:18.1;Her;0.46;0.36;45;15.30;;;;;22.77;E;;;;;;;;MCG +02-41-015,PGC 057419,SDSS J161116.76+141518.1;;; -NGC6074 NED02;G;16:11:17.22;+14:15:31.5;Her;0.85;0.71;0;15.30;;11.27;10.58;10.62;23.61;E;;;;;;;;2MASX J16111723+1415312,MCG +02-41-016,PGC 057418,SDSS J161117.22+141531.5;;; -NGC6075;G;16:11:22.59;+23:57:54.0;Her;1.03;0.80;93;15.30;;11.37;10.66;10.43;23.76;S0;;;;;;4594;;2MASX J16112256+2357545,MCG +04-38-038,PGC 057426,SDSS J161122.58+235754.0,SDSS J161122.59+235754.0;;; -NGC6076;GPair;16:11:13.40;+26:52:21.0;CrB;0.80;;;;;;;;;;;;;;;;;MCG +05-38-023,UGC 10253;;;Diameter of the group inferred by the author. -NGC6076 NED01;G;16:11:13.01;+26:52:19.3;CrB;1.00;0.46;62;15.40;;11.73;11.03;10.73;23.90;;;;;;6076SW;;;2MASX J16111299+2652195,MCG +05-38-023 NED01,PGC 057409,UGC 10253 NED01;;; -NGC6076 NED02;G;16:11:13.80;+26:52:24.0;CrB;;;;15.40;;;;;;;;;;;6076NE;;;MCG +05-38-023 NED02,PGC 200331,UGC 10253 NED02;;;No diameter data available in LEDA -NGC6077;G;16:11:14.12;+26:55:24.3;CrB;1.16;1.09;45;14.90;;11.32;10.59;10.29;23.96;E;;;;;;;;2MASX J16111411+2655245,MCG +05-38-024,PGC 057408,SDSS J161114.11+265524.2,SDSS J161114.11+265524.3,UGC 10254;;; -NGC6078;G;16:12:05.45;+14:12:31.6;Her;0.93;0.48;15;14.60;;10.92;10.29;10.10;23.62;E;;;;;;;;2MASX J16120546+1412317,MCG +02-41-017,PGC 057460,SDSS J161205.44+141231.6;;; -NGC6079;G;16:04:29.21;+69:39:56.8;Dra;1.37;0.94;150;13.90;;10.90;10.19;9.93;23.39;E;;;;;;1200;;2MASX J16042924+6939568,MCG +12-15-050,PGC 056946,UGC 10206;;; -NGC6080;GPair;16:12:59.00;+02:10:45.0;Se1;1.30;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC6080 NED01;G;16:12:58.64;+02:10:38.2;Se1;1.23;1.17;30;13.77;;;;;23.38;Sab;;;;;;;;2MASX J16125818+0210098,IRAS 16104+0218,MCG +00-41-007,PGC 057509,UGC 10268;;;B-Mag taken from LEDA -NGC6080 NED02;G;16:12:59.46;+02:10:51.8;Se1;1.20;0.66;179;14.10;;11.98;11.15;11.02;24.57;S0;;;;;;;;2MASX J16125951+0210528,MCG +00-41-007 NOTES01,PGC 093131,UGC 10268 NOTES01;;; -NGC6081;G;16:12:56.86;+09:52:01.6;Her;1.55;0.56;131;14.40;;10.72;9.98;9.74;23.95;S0;;;;;;1202;;2MASX J16125685+0952016,MCG +02-41-019,PGC 057506,SDSS J161256.85+095201.5,UGC 10272;;; -NGC6082;Other;16:15:27.56;-34:13:57.9;Sco;;;;;;;;;;;;;;;;;;;;"Five Galactic stars. Ident as N6082 is uncertain; N6082 may be IC 4597."; -NGC6083;G;16:13:12.66;+14:11:07.5;Her;0.79;0.56;33;15.20;;12.09;11.37;11.11;23.35;SBbc;;;;;;;;MCG +02-41-020,PGC 057520;;; -NGC6084;G;16:14:16.72;+17:45:26.8;Her;1.24;0.79;29;15.40;;11.51;10.83;10.56;23.90;Sa;;;;;;;;2MASX J16141669+1745262,MCG +03-41-143,PGC 057575,SDSS J161416.72+174526.7,UGC 10291;;; -NGC6085;G;16:12:35.22;+29:21:54.3;CrB;1.31;1.09;161;14.50;;10.99;10.26;10.03;23.55;Sa;;;;;;;;2MASX J16123523+2921536,MCG +05-38-034,PGC 057486,SDSS J161235.22+292154.2,SDSS J161235.23+292154.3,UGC 10269;;; -NGC6086;G;16:12:35.53;+29:29:05.2;CrB;1.90;1.23;2;14.80;;11.02;10.23;9.97;24.06;E;;;;;;;;2MASX J16123554+2929054,MCG +05-38-035,PGC 057482,SDSS J161235.53+292905.2,UGC 10270;;; -NGC6087;OCl;16:18:50.58;-57:56:04.5;Nor;10.20;;;5.85;5.40;;;;;;;;;;;;;C 089,MWSC 2382;S Nor Cluster;; -NGC6088;GPair;16:10:43.50;+57:27:51.0;Dra;1.10;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC6088 NED01;G;16:10:42.63;+57:27:59.5;Dra;1.07;0.62;170;14.70;;11.68;10.79;10.89;23.04;E?;;;;;;;;2MASX J16104265+5727593,MCG +10-23-029,PGC 057383,SDSS J161042.51+572759.8;;; -NGC6088 NED02;G;16:10:44.38;+57:27:43.7;Dra;0.78;0.72;96;14.10;;;;;22.32;E-S0;;;;;;;;MCG +10-23-030,PGC 057384;;; -NGC6089;GPair;16:12:40.70;+33:02:11.0;CrB;1.10;;;;;;;;;;;;;;;;;MCG +06-36-001;;Listed in CGCG special map in vol III, p 87 (SM1-002).;Diameter of the group inferred by the author. -NGC6089 NED01;G;16:12:40.15;+33:02:05.6;CrB;0.85;0.68;17;15.00;;11.27;10.59;10.34;23.18;S0;;;;;;;;2MASX J16124014+3302054,MCG +06-36-001 NED01,PGC 057491,SDSS J161240.14+330205.6,SDSS J161240.15+330205.6;;; -NGC6089 NED02;G;16:12:41.34;+33:02:15.8;CrB;1.41;0.71;45;16.50;;11.92;11.55;10.86;23.88;S?;;;;;;;;2MASX J16124129+3302158,MCG +06-36-001 NED02,SDSS J161241.33+330215.7,SDSS J161241.34+330215.7,SDSS J161241.34+330215.8;;; -NGC6090;GPair;16:11:40.70;+52:27:24.0;Dra;0.80;;;;;;;;;;;;;;;;;MCG +09-26-064,UGC 10267;;;Diameter of the group inferred by the author. -NGC6090 NED01;G;16:11:40.33;+52:27:23.7;Dra;0.85;0.74;96;14.44;;;;;23.02;Sa;;;;;;;;MCG +09-26-064 NED01,PGC 200335,SDSS J161140.31+522723.1,UGC 10267 NED01;;;B-Mag taken from LEDA -NGC6090 NED02;G;16:11:40.82;+52:27:26.9;Dra;0.44;0.19;;14.00;;;;;20.99;Sab;;;;;;;;2MASX J16114086+5227270,IRAS 16104+5235,MCG +09-26-064 NED02,PGC 057437,SDSS J161140.80+522727.0,SDSS J161140.81+522726.9,SDSS J161140.81+522727.0,SDSS J161140.81+522727.2,SDSS J161140.82+522726.9UGC 10267 NED02;;; -NGC6091;G;16:07:52.99;+69:54:17.2;UMi;0.93;0.66;113;14.70;;11.65;10.96;10.77;23.55;E;;;;;;;;2MASX J16075297+6954175,MCG +12-15-054,PGC 057242;;; -NGC6092;**;16:14:04.60;+28:07:32.2;CrB;;;;;;;;;;;;;;;;;;;;; -NGC6093;GCl;16:17:02.51;-22:58:30.4;Sco;5.70;;;;7.30;;;;;;;;;080;;;;MWSC 2376;;;V-mag taken from LEDA -NGC6094;G;16:06:33.90;+72:29:39.8;UMi;1.85;1.38;113;14.60;;11.10;10.48;10.13;24.49;S0;;;;;;;;2MASX J16063392+7229398,MCG +12-15-052,PGC 057167,UGC 10228;;; -NGC6095;G;16:11:10.97;+61:16:04.7;Dra;1.90;1.25;154;14.50;;10.81;10.17;9.95;23.77;E-S0;;;;;;;;2MASX J16111100+6116045,MCG +10-23-033,PGC 057411,SDSS J161110.97+611604.6,UGC 10265;;; -NGC6096;G;16:14:46.70;+26:33:31.8;Her;0.99;0.50;124;15.30;;12.19;11.44;11.30;23.65;Sb;;;;;;;;2MASX J16144671+2633313,MCG +05-38-044,PGC 057598,SDSS J161446.69+263331.8,SDSS J161446.70+263331.8;;HOLM 735B does not exist (it is probably a plate defect).; -NGC6097;G;16:14:26.17;+35:06:33.0;CrB;1.12;0.59;159;14.90;;11.26;10.53;10.25;23.64;S0-a;;;;;;;;2MASX J16142614+3506328,MCG +06-36-007,PGC 057583,SDSS J161426.16+350632.9,SDSS J161426.17+350632.9,SDSS J161426.17+350633.0;;; -NGC6098;G;16:15:34.18;+19:27:43.1;Her;1.56;1.10;154;14.60;;;;;24.20;E;;;;;;;;MCG +03-41-145,PGC 057634,SDSS J161534.18+192743.0,UGC 10299 NED01;;; -NGC6099;G;16:15:35.56;+19:27:12.2;Her;1.42;0.97;139;14.60;;11.17;10.45;10.22;24.73;E;;;;;;;;2MASX J16153554+1927123,MCG +03-41-146,PGC 057640,SDSS J161535.55+192712.1,SDSS J161535.55+192712.2,SDSS J161535.56+192712.1,UGC 10299 NED02;;; -NGC6100;G;16:16:52.37;+00:50:28.7;Se1;1.42;0.99;112;13.90;;11.64;10.95;10.84;24.04;S0-a;;;;;;;;2MASX J16165235+0050284,MCG +00-41-012,PGC 057706,UGC 10307;;; -NGC6101;GCl;16:25:48.57;-72:12:05.6;Aps;4.50;;;10.90;10.08;;;;;;;;;;;;;C 107,MWSC 2404;;; -NGC6102;G;16:15:36.92;+28:09:30.9;CrB;0.78;0.57;68;15.40;;12.70;12.07;11.87;23.23;Sbc;;;;;;;;2MASX J16153687+2809307,MCG +05-38-047,PGC 057639,SDSS J161536.91+280930.9,UGC 10300;;; -NGC6103;G;16:15:44.62;+31:57:50.2;CrB;0.72;0.45;77;14.40;;11.98;11.35;11.02;22.11;Sc;;;;;;;;2MASX J16154462+3157507,IRAS 16138+3205,MCG +05-38-049,PGC 057648,SDSS J161544.61+315750.2,SDSS J161544.62+315750.2,UGC 10302;;; -NGC6104;G;16:16:30.69;+35:42:29.0;CrB;0.87;0.69;62;18.17;17.35;11.60;10.97;10.68;22.52;SBb;;;;;;;;2MASX J16163069+3542291,IRAS 16146+3549,MCG +06-36-011,PGC 057684,SDSS J161630.67+354228.8,SDSS J161630.67+354228.9,SDSS J161630.68+354228.9,UGC 10309;;; -NGC6105;G;16:17:09.31;+34:52:44.0;CrB;0.71;0.57;110;15.30;;11.86;11.27;10.92;23.38;SBa;;;;;;;;2MASX J16170929+3452439,MCG +06-36-013,PGC 057716;;; -NGC6106;G;16:18:47.17;+07:24:39.2;Her;2.19;1.18;139;13.40;;10.51;9.83;9.62;22.73;Sc;;;;;;;;2MASX J16184720+0724396,IRAS 16163+0731,MCG +01-41-016,PGC 057799,SDSS J161847.16+072439.1,UGC 10328;;; -NGC6107;G;16:17:20.13;+34:54:07.0;CrB;1.59;1.02;36;14.70;;;;;24.69;E;;;;;;;;MCG +06-36-014,PGC 057728,UGC 10311;;; -NGC6108;G;16:17:25.63;+35:08:08.6;CrB;0.95;0.64;105;15.40;;11.81;11.16;10.86;23.44;SBab;;;;;;;;2MASX J16172560+3508084,MCG +06-36-015,PGC 057734,SDSS J161725.63+350808.5,SDSS J161725.63+350808.6,SDSS J161725.64+350808.7;;; -NGC6109;G;16:17:40.52;+35:00:15.4;CrB;1.02;0.97;85;14.90;;11.29;10.57;10.33;22.81;E;;;;;;;;2MASX J16174059+3500154,MCG +06-36-016,PGC 057748,SDSS J161740.53+350015.1,SDSS J161740.53+350015.2,SDSS J161740.54+350015.1,UGC 10316;;; -NGC6110;G;16:17:43.97;+35:05:13.1;CrB;0.69;0.33;105;15.60;;12.36;11.67;11.40;23.16;Sa;;;;;;;;2MASX J16174401+3505134,PGC 057751,SDSS J161743.96+350513.0,SDSS J161743.97+350513.0,SDSS J161743.97+350513.1,SDSS J161743.97+350513.2;;; -NGC6111;GPair;16:14:22.80;+63:15:40.0;Dra;0.85;0.72;12;15.20;;11.74;11.00;10.70;23.53;E;;;;;;;;2MASX J16142217+6315400,MCG +11-20-007,PGC 057579,SDSS J161422.23+631539.9;;; -NGC6112;G;16:18:00.56;+35:06:37.0;CrB;0.78;0.73;135;14.80;;11.64;11.01;10.71;23.20;E;;;;;;;;2MASX J16180057+3506367,MCG +06-36-017,PGC 057762,SDSS J161800.56+350637.0,SDSS J161800.57+350637.0;;; -NGC6113;G;16:19:10.54;+14:08:01.1;Her;1.23;0.58;153;14.80;;11.32;10.57;10.24;23.73;S0;;;;;;;;2MASX J16191057+1408010,IRAS 16168+1415,MCG +02-41-024 NED01,PGC 057807,SDSS J161910.53+140801.1,SDSS J161910.54+140801.1;;; -NGC6114;G;16:18:23.63;+35:10:27.5;CrB;0.93;0.53;112;15.30;;12.16;11.46;11.40;23.36;Sab;;;;;;;;2MASX J16182360+3510277,MCG +06-36-019,PGC 057784,SDSS J161823.62+351027.4,SDSS J161823.63+351027.4,SDSS J161823.63+351027.5;;; -NGC6115;OCl;16:24:26.38;-51:56:53.7;Nor;;;;10.29;9.80;;;;;;;;;;;;;MWSC 2402;;; -NGC6116;G;16:18:54.60;+35:09:14.3;CrB;0.94;0.58;15;15.30;;11.77;11.09;10.87;23.25;SABb;;;;;;;;2MASX J16185458+3509138,MCG +06-36-021,PGC 057800,SDSS J161854.59+350914.2,SDSS J161854.60+350914.1,SDSS J161854.60+350914.2,SDSS J161854.60+350914.3,UGC 10336;;; -NGC6117;G;16:19:18.16;+37:05:42.8;CrB;1.05;0.87;84;14.70;;12.30;11.59;11.25;23.31;Sc;;;;;;;;2MASX J16191819+3705430,MCG +06-36-022,PGC 057816,SDSS J161918.15+370542.7,SDSS J161918.16+370542.8,UGC 10338;;HOLM 737C,D are stars.; -NGC6118;G;16:21:48.62;-02:17:00.4;Oph;4.45;1.78;59;13.20;;9.72;9.02;8.70;23.65;Sc;;;;;;;;2MASX J16214862-0217003,IRAS 16192-0210,MCG +00-42-002,PGC 057924,SDSS J162148.62-021701.0,UGC 10350;;; -NGC6119;G;16:19:41.97;+37:48:22.7;CrB;0.60;0.46;73;15.40;;13.08;12.84;12.11;22.92;Sc;;;;;;;;2MASX J16194193+3748222,MCG +06-36-026,PGC 057837,SDSS J161941.96+374822.6,SDSS J161941.97+374822.6,SDSS J161941.97+374822.7;;; -NGC6120;G;16:19:48.10;+37:46:28.1;CrB;0.48;0.37;35;14.30;;11.48;10.79;10.47;21.26;Sb;;;;;;;;2MASX J16194809+3746282,IRAS 16180+3753,MCG +06-36-029,PGC 057842,UGC 10343;;HOLM 739B is a star.; -NGC6121;GCl;16:23:35.40;-26:31:31.9;Sco;28.20;;;;5.40;;;;;;;;;004;;;;MWSC 2396;;;V-mag taken from LEDA -NGC6122;G;16:20:09.53;+37:47:53.6;CrB;1.10;0.25;160;15.00;;11.68;10.88;10.58;23.54;Sb;;;;;;;;2MASX J16200955+3747535,MCG +06-36-032,PGC 057858,SDSS J162009.52+374753.5,SDSS J162009.53+374753.6;;; -NGC6123;G;16:17:19.74;+61:56:20.8;Dra;0.91;0.32;4;14.40;;11.43;10.76;10.52;22.66;S0-a;;;;;;;;2MASX J16171975+6156207,MCG +10-23-060,PGC 057729,UGC 10333;;; -NGC6124;OCl;16:25:20.06;-40:39:13.3;Sco;13.50;;;6.70;5.80;;;;;;;;;;;;;C 075,MWSC 2403;;; -NGC6125;G;16:19:11.55;+57:59:03.2;Dra;1.38;1.38;40;13.00;;10.07;9.41;9.13;22.57;E;;;;;6127,6128;;;2MASX J16191155+5759028,MCG +10-23-065,PGC 057812,SDSS J161911.53+575902.8,UGC 10345;;; -NGC6126;G;16:21:27.93;+36:22:35.9;CrB;0.93;0.77;22;14.50;;11.12;10.44;10.11;23.21;E-S0;;;;;;;;2MASX J16212794+3622354,MCG +06-36-035,PGC 057908,SDSS J162127.93+362235.8,UGC 10353;;; -NGC6127;Dup;16:19:11.55;+57:59:03.2;Dra;;;;;;;;;;;;;;;6125;;;;;; -NGC6128;Dup;16:19:11.55;+57:59:03.2;Dra;;;;;;;;;;;;;;;6125;;;;;; -NGC6129;G;16:21:43.27;+37:59:45.7;CrB;0.93;0.84;120;14.70;;11.32;10.65;10.34;23.38;E;;;;;;;;2MASX J16214329+3759454,MCG +06-36-037,PGC 057920,SDSS J162143.26+375945.7,SDSS J162143.27+375945.7;;HOLM 741C is a star.; -NGC6130;G;16:19:33.44;+57:36:53.9;Dra;1.22;0.78;32;14.20;;11.65;10.90;10.70;23.04;Sbc;;;;;;;;2MASX J16193345+5736539,IRAS 16185+5743,MCG +10-23-066,PGC 057828,SDSS J161933.43+573653.8,SDSS J161933.43+573653.9,UGC 10347;;; -NGC6131;G;16:21:52.25;+38:55:56.8;CrB;1.08;1.04;25;14.20;;11.55;10.82;10.66;22.67;SABc;;;;;;;;2MASX J16215222+3855566,IRAS 16201+3902,MCG +07-34-004,PGC 057927,SDSS J162152.24+385556.8,UGC 10356;;; -NGC6132;G;16:23:38.84;+11:47:10.5;Her;1.28;0.43;127;14.80;;11.86;11.18;10.95;23.39;Sab;;;;;;4602;;2MASX J16233880+1147109,IRAS 16213+1153,MCG +02-42-002,PGC 058002,SDSS J162338.83+114710.4,SDSS J162338.84+114710.4,SDSS J162338.84+114710.5,UGC 10363;;; -NGC6133;Other;16:20:17.21;+56:39:08.7;Dra;;;;;;;;;;;;;;;;;;;;"Triple star. Ident as N6133 is uncertain; N6133 may be CGCG 276-012."; -NGC6134;OCl;16:27:46.50;-49:09:04.2;Nor;6.90;;;7.89;7.20;;;;;;;;;;;;;MWSC 2412;;; -NGC6135;G;16:14:24.88;+64:58:57.9;Dra;1.01;0.35;45;14.80;;12.14;11.41;11.21;23.48;;;;;;;;;2MASX J16142487+6458581,IRAS 16139+6506,MCG +11-20-008,PGC 057580;;Identification as NGC 6135 is uncertain.; -NGC6136;G;16:20:59.42;+55:58:13.8;Dra;0.91;0.49;94;15.50;;12.41;11.81;11.56;23.42;Sc;;;;;;;;2MASX J16205942+5558137,MCG +09-27-019,PGC 057892;;; -NGC6137;G;16:23:03.10;+37:55:20.5;CrB;1.78;0.92;180;14.10;;10.51;9.81;9.55;23.51;E;;;;;;;;2MASX J16230308+3755204,MCG +06-36-039,PGC 057966,UGC 10364;;; -NGC6138;G;16:24:54.17;+41:03:02.8;Her;1.02;0.31;105;15.00;;12.47;11.68;11.42;23.56;Sb;;;;;6363;;;2MASX J16245415+4103028,MCG +07-34-020,PGC 058070,SDSS J162454.16+410302.7,SDSS J162454.16+410302.8,SDSS J162454.17+410302.8;;"Identification as N6138 is uncertain; N6138 may be CGCG 224-009."; -NGC6139;GCl;16:27:40.51;-38:50:59.1;Sco;4.50;;;11.03;9.68;6.45;5.75;5.56;;;;;;;;;;2MASX J16273998-3850570,MWSC 2411;;The 2MASS position is west of the cluster's core.; -NGC6140;G;16:20:58.16;+65:23:26.0;Dra;2.09;1.78;83;12.60;;10.47;9.85;9.74;22.46;Sc;;;;;;;;2MASX J16205816+6523259,IRAS 16206+6530,MCG +11-20-012,PGC 057886,UGC 10359;;; -NGC6141;G;16:23:06.41;+40:51:29.9;Her;0.43;0.35;150;15.45;;12.40;11.66;11.53;;SBa;;;;;;;;2MASX J16230639+4051295,SDSS J162306.41+405129.8,SDSS J162306.41+405129.9;;;Diameters and position angle taken from Simbad. -NGC6142;G;16:23:21.07;+37:15:30.2;CrB;1.49;0.48;165;14.80;;11.43;10.74;10.41;23.50;Sb;;;;;;;;2MASX J16232109+3715305,MCG +06-36-041,PGC 057984,SDSS J162321.06+371530.1,SDSS J162321.06+371530.2,SDSS J162321.07+371530.2,UGC 10366;;; -NGC6143;G;16:21:42.29;+55:05:09.8;Dra;1.10;0.99;175;13.90;;11.64;11.06;10.76;23.18;SABb;;;;;;;;2MASX J16214227+5505100,IRAS 16205+5512,MCG +09-27-024,PGC 057919,SDSS J162142.28+550509.7,UGC 10358;;; -NGC6144;GCl;16:27:14.14;-26:01:29.0;Sco;5.40;;;10.55;9.63;;;;;;;;;;;;;MWSC 2409;;This may also be IC 4606.; -NGC6145;G;16:25:02.36;+40:56:47.9;Her;0.98;0.51;2;15.10;;11.78;11.10;10.87;23.12;Sb;;;;;;;;2MASX J16250238+4056478,MCG +07-34-021,PGC 058074,SDSS J162502.36+405647.8,SDSS J162502.36+405647.9;;; -NGC6146;G;16:25:10.36;+40:53:34.3;Her;1.66;1.26;83;13.80;;10.45;9.75;9.49;23.47;E;;;;;;;;2MASX J16251032+4053338,MCG +07-34-024,PGC 058080,SDSS J162510.32+405334.3,UGC 10379;;; -NGC6147;G;16:25:05.84;+40:55:43.6;Her;0.57;0.48;50;16.00;;13.40;12.44;12.57;23.00;SABb;;;;;;;;2MASX J16250583+4055428,MCG +07-34-023,PGC 058077,SDSS J162505.83+405543.5,SDSS J162505.83+405543.6,SDSS J162505.84+405543.5;;; -NGC6148;G;16:27:04.03;+24:05:35.8;Her;0.42;0.24;54;16.48;;13.80;12.98;12.65;23.28;Sb;;;;;;;;2MASX J16270405+2405357,PGC 058162,SDSS J162704.03+240535.7,SDSS J162704.03+240535.8;;; -NGC6149;G;16:27:24.23;+19:35:49.9;Her;1.24;0.43;18;14.80;;11.19;10.52;10.28;23.59;S0;;;;;;;;2MASX J16272427+1935502,MCG +03-42-011,PGC 058183,SDSS J162724.23+193549.8,SDSS J162724.23+193549.9,UGC 10391;;; -NGC6150;G;16:25:50.03;+40:29:18.8;Her;1.61;0.85;74;14.90;;11.12;10.41;10.11;24.27;E;;;;;;;;2MASX J16255000+4029194,MCG +07-34-029,PGC 058105,SDSS J162549.96+402919.3,SDSS J162549.96+402919.4,SDSS J162549.97+402919.3;;; -NGC6151;Other;16:38:24.22;-73:15:08.8;Aps;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC6152;OCl;16:32:45.62;-52:38:38.4;Nor;6.60;;;;8.10;;;;;;;;;;;;;MWSC 2423;;; -NGC6153;PN;16:31:30.64;-40:15:12.4;Sco;0.40;;;11.50;10.90;9.94;9.93;9.06;;;;16.14;;;;;HD 148687;2MASX J16313062-4015123,ESO 331-006,IRAS 16280-4008,PN G341.8+05.4;;; -NGC6154;G;16:25:30.48;+49:50:24.9;Her;1.40;1.00;150;13.60;;11.10;10.40;10.19;23.28;Sa;;;;;;;;2MASX J16253049+4950244,MCG +08-30-012,PGC 058095,SDSS J162530.48+495024.9,SDSS J162530.48+495025.1,UGC 10382;;; -NGC6155;G;16:26:08.34;+48:22:00.5;Her;1.33;0.85;147;13.20;;10.76;10.20;9.97;22.32;SBbc;;;;;;;;2MASX J16260830+4822009,IRAS 16247+4828,MCG +08-30-013,PGC 058115,SDSS J162608.33+482200.4,SDSS J162608.33+482200.5,UGC 10385;;; -NGC6156;G;16:34:52.55;-60:37:07.7;Ara;1.87;1.60;149;12.30;;9.76;9.03;8.70;22.28;Sc;;;;;;;;2MASX J16345255-6037075,ESO 137-033,ESO-LV 137-0330,IRAS 16304-6030,PGC 058536;;Confused HIPASS source; -NGC6157;G;16:25:48.39;+55:21:38.1;Dra;0.90;0.74;19;15.50;;12.07;11.39;11.31;23.99;E;;;;;;;;2MASX J16254836+5521385,MCG +09-27-039,PGC 058101,SDSS J162548.39+552138.1;;; -NGC6158;G;16:27:40.89;+39:22:58.8;Her;1.22;0.99;81;15.50;;11.50;10.83;10.58;23.98;E;;;;;;;;2MASX J16274088+3922588,MCG +07-34-041,PGC 058198,SDSS J162740.88+392258.8;;; -NGC6159;G;16:27:25.23;+42:40:47.0;Her;1.50;1.02;126;15.20;;11.22;10.57;10.23;24.25;E-S0;;;;;;;;2MASX J16272524+4240468,MCG +07-34-038,PGC 058185,SDSS J162725.22+424047.0,SDSS J162725.23+424046.9,SDSS J162725.23+424047.0,UGC 10397;;; -NGC6160;G;16:27:41.13;+40:55:37.2;Her;1.79;1.22;72;14.80;;10.76;10.01;9.78;24.29;E;;;;;;;;2MASX J16274107+4055368,MCG +07-34-042,PGC 058191,PGC 058199,SDSS J162741.12+405537.0,SDSS J162741.12+405537.1,SDSS J162741.13+405537.0,SDSS J162741.13+405537.2,UGC 10400;;; -NGC6161;G;16:28:20.63;+32:48:38.3;Her;0.72;0.26;153;15.74;;12.93;12.15;11.78;22.88;S?;;;;;;;;2MASX J16282062+3248380,IRAS 16264+3255,MCG +06-36-046,PGC 058235,SDSS J162820.56+324834.8;;Multiple SDSS entries describe this object.; -NGC6162;G;16:28:22.37;+32:50:57.6;Her;1.11;0.72;49;15.20;;11.43;10.72;10.43;23.58;S0;;;;;;;;2MASX J16282237+3250580,MCG +06-36-047,PGC 058238,SDSS J162822.37+325057.5,UGC 10403;;; -NGC6163;G;16:28:27.91;+32:50:47.0;Her;0.90;0.61;24;15.40;;11.98;11.22;10.82;23.75;S0;;;;;;;;2MASX J16282791+3250466,MCG +06-36-048,PGC 058250,SDSS J162827.90+325046.9,SDSS J162827.90+325047.0,SDSS J162827.91+325047.0;;; -NGC6164;Neb;16:33:41.84;-48:04:48.2;Ara;1.41;0.60;;7.12;6.71;5.87;5.74;5.64;;;;;;;;;;ESO 226-013,TYC 8329-3343-1;;Part of the bipolar nebula associated with HD 148937 (1995ApJ...450..196S).; -NGC6165;Neb;16:34:03.45;-48:09:01.8;Ara;2.50;0.50;;7.12;6.71;5.87;5.74;5.64;;;;;;;;;;;;Part of the bipolar nebula associated with HD 148937 (1995ApJ...450..196S).; -NGC6166;G;16:28:38.48;+39:33:05.6;Her;2.14;1.54;35;12.78;11.78;10.20;9.49;9.17;23.41;E;;;;;;;;MCG +07-34-060,PGC 058265,UGC 10409;;; -NGC6166B;G;16:28:53.21;+39:33:36.0;Her;0.43;0.35;176;15.70;;13.92;13.27;12.93;22.66;Sc;;;;;;;;2MASX J16285323+3933359,MCG +07-34-076,PGC 058299,SDSS J162853.13+393338.4,SDSS J162853.13+393338.5,SDSS J162853.21+393336.0;;; -NGC6166C;G;16:28:23.31;+39:34:13.1;Her;0.74;0.71;90;16.50;;12.47;11.58;11.46;23.45;E;;;;;;;;2MASX J16282330+3934128,MCG +07-34-048,PGC 058233,PGC 058244,SDSS J162823.30+393413.0,SDSS J162823.30+393413.1,SDSS J162823.31+393413.1;;; -NGC6167;OCl;16:34:34.98;-49:46:18.8;Ara;7.20;;;7.58;6.70;;;;;;;;;;;;;MWSC 2425;;; -NGC6168;G;16:31:21.30;+20:11:05.8;Her;1.65;0.48;111;15.22;;11.70;11.03;10.64;23.31;Sd;;;;;;;;2MASX J16312081+2011077,IRAS 16291+2017,MCG +03-42-016,PGC 058423,SDSS J163120.83+201108.3,SDSS J163121.30+201105.8,UGC 10434;;Position is for SDSS J163121.30+201105.8.; -NGC6169;OCl;16:34:04.63;-44:02:44.3;Sco;4.20;;;;6.60;;;;;;;;;;;;;MWSC 2424;;; -NGC6170;G;16:27:36.50;+59:33:45.0;Dra;0.80;0.67;85;14.80;;11.72;11.08;10.68;;E;;;;;6176;;;2MASX J16273651+5933446,MCG +10-23-076,PGC 058188;;;Diameters and position angle taken from Simbad. -NGC6171;GCl;16:32:31.92;-13:03:13.1;Oph;7.80;;;9.96;8.85;;;;;;;;;107;;;;MWSC 2422;;; -NGC6172;G;16:22:10.30;-01:30:53.5;Oph;0.90;0.89;80;14.28;;10.81;10.12;9.80;22.85;E;;;;;;1213;;2MASX J16221032-0130531,MCG +00-42-003,PGC 057937,UGC 10352;;; -NGC6173;G;16:29:44.90;+40:48:41.8;Her;2.03;1.40;145;14.00;;10.26;9.61;9.36;23.53;E;;;;;;;;2MASX J16294485+4048421,MCG +07-34-083,PGC 058348,SDSS J162944.87+404841.9,SDSS J162944.88+404841.9,SDSS J162944.99+404841.7,UGC 10421;;HOLM 753B is a double star.; -NGC6174;GPair;16:29:47.68;+40:52:19.1;Her;0.90;;;;;;;;;;;;;;;;;;;Identification as NGC 6174 is very uncertain.;Diameter of the group inferred by the author. -NGC6174 NED01;G;16:29:46.50;+40:52:29.5;Her;0.41;0.29;150;16.50;;13.46;14.97;12.63;23.60;E;;;;;;;;2MASX J16294651+4052291,MCG +07-34-085 NOTES01,PGC 058350,SDSS J162946.50+405229.4,SDSS J162946.50+405229.5;;Identification as NGC 6174 is very uncertain. Is this component a star?; -NGC6174 NED02;G;16:29:47.32;+40:52:21.8;Her;0.72;0.65;123;15.00;;12.73;11.98;11.98;23.70;S0;;;;;;;;2MASX J16294765+4052191,MCG +07-34-085,PGC 058351,SDSS J162947.67+405219.1,SDSS J162947.68+405219.1;;; -NGC6175;GPair;16:29:57.90;+40:37:45.0;Her;1.50;;;;;;;;;;;;;;;;;MCG +07-34-087,UGC 10422;;;Diameter of the group inferred by the author. -NGC6175 NED01;G;16:29:57.53;+40:37:50.6;Her;1.45;0.85;97;15.00;;;;;23.86;Sbc;;;;;6175N;;;MCG +07-34-087 NED01,PGC 058362,SDSS J162957.52+403750.4,SDSS J162957.52+403750.5,UGC 10422 NED01;;; -NGC6175 NED02;G;16:29:58.06;+40:37:42.8;Her;1.32;1.05;121;15.00;;10.65;9.88;9.59;24.04;I;;;;;;;;2MASX J16295808+4037432,MCG +07-34-087 NED02,PGC 200339,SDSS J162958.06+403742.6,SDSS J162958.06+403742.7,SDSS J162958.06+403742.8,UGC 10422 NED02;;; -NGC6176;Dup;16:27:36.50;+59:33:45.0;Dra;;;;;;;;;;;;;;;6170;;;;;; -NGC6177;G;16:30:38.88;+35:03:23.2;Her;1.62;1.09;19;14.80;;11.42;10.82;10.52;24.14;SBb;;;;;;;;2MASX J16303889+3503234,MCG +06-36-049,PGC 058390,SDSS J163038.87+350323.0,SDSS J163038.87+350323.1,SDSS J163038.88+350323.2,UGC 10428;;; -NGC6178;OCl;16:35:47.25;-45:38:37.5;Sco;6.90;;;7.28;7.20;;;;;;;;;;;;;MWSC 2428;;; -NGC6179;G;16:30:47.05;+35:06:08.1;Her;0.36;0.31;24;15.70;;13.10;12.42;12.24;22.56;S0-a;;;;;;;;2MASX J16304703+3506075,PGC 058401,SDSS J163047.04+350608.0,SDSS J163047.04+350608.1;;; -NGC6180;G;16:30:33.92;+40:32:22.0;Her;1.09;0.85;22;15.20;;11.59;10.85;10.60;23.77;E;;;;;;;;2MASX J16303388+4032221,MCG +07-34-095,PGC 058386,SDSS J163033.91+403221.9,SDSS J163033.92+403222.0;;; -NGC6181;G;16:32:20.96;+19:49:35.6;Her;2.39;0.99;177;12.70;;9.65;8.97;8.67;22.14;SABc;;;;;;;;2MASX J16322096+1949357,IRAS 16301+1955,MCG +03-42-020,PGC 058470,SDSS J163220.95+194935.0,UGC 10439;;; -NGC6182;G;16:29:34.00;+55:31:04.0;Dra;1.51;0.56;144;14.60;;11.28;10.63;10.29;23.74;Sa;;;;;;;;2MASX J16293398+5531036,MCG +09-27-048,PGC 058338,SDSS J162934.00+553104.0,UGC 10424;;; -NGC6183;G;16:41:41.90;-69:22:19.8;TrA;2.36;0.80;37;14.09;;9.80;9.07;8.76;;Sa;;;;;;;;2MASX J16414191-6922196,ESO 069-008,PGC 058785;;; -NGC6184;G;16:31:34.53;+40:33:56.2;Her;0.93;0.56;121;15.10;;11.87;11.21;10.86;23.09;SABb;;;;;;;;2MASX J16313454+4033560,IRAS 16298+4040,MCG +07-34-109,PGC 058432,SDSS J163134.52+403356.1,SDSS J163134.53+403356.1,SDSS J163134.53+403356.2;;; -NGC6185;G;16:33:17.83;+35:20:32.4;Her;1.47;0.80;3;14.50;;10.86;10.16;9.86;23.64;Sa;;;;;;;;2MASX J16331778+3520329,MCG +06-36-052,PGC 058493,SDSS J163317.84+352032.3,UGC 10444;;; -NGC6186;G;16:34:25.48;+21:32:27.2;Her;1.57;0.70;59;14.20;;10.63;9.87;9.60;23.53;Sa;;;;;;;;2MASX J16342548+2132270,IRAS 16322+2138,MCG +04-39-015,PGC 058523,SDSS J163425.48+213227.2,UGC 10448;;; -NGC6187;G;16:31:36.70;+57:42:24.0;Dra;0.75;0.62;140;15.10;;11.99;11.23;11.00;23.42;S0-a;;;;;;;;2MASX J16313682+5742241,MCG +10-23-079,PGC 058429;;; -NGC6188;Neb;16:40:05.84;-48:39:44.2;Ara;20.00;12.00;;;;;;;;;;;;;;;;;Rim Nebula;;Dimensions taken from LEDA -NGC6189;G;16:31:40.90;+59:37:34.0;Dra;1.49;0.75;27;13.30;;;;;22.41;SABc;;;;;;;;IRAS 16307+5944,MCG +10-23-081,PGC 058440,UGC 10442;;; -NGC6190;G;16:32:06.70;+58:26:20.3;Dra;1.42;1.04;77;13.20;;11.11;10.52;10.21;22.63;Sc;;;;;;;;2MASX J16320669+5826202,IRAS 16312+5832,MCG +10-23-082,PGC 058458,UGC 10443;;; -NGC6191;G;16:11:30.49;+58:47:09.0;Dra;1.30;0.49;180;15.00;;11.46;10.75;10.46;23.34;SBbc;;;;;;;;2MASX J16113038+5847085,MCG +10-23-034,PGC 057427,SDSS J161130.48+584708.9,UGC 10271;;"NGC identification is very uncertain; N6191 could by N6187, N6189, or N6190."; -NGC6192;OCl;16:40:23.87;-43:22:00.5;Sco;7.50;;;;8.50;;;;;;;;;;;;;MWSC 2440;;; -NGC6193;OCl;16:41:20.23;-48:45:45.1;Ara;8.10;;;;;;;;;;;;;;;;;C 082,MWSC 2444;;Involved in NGC 6188.; -NGC6194;G;16:36:37.15;+36:12:01.6;Her;0.90;0.70;112;14.60;;11.22;10.54;10.21;23.10;E;;;;;;;;2MASX J16363717+3612018,MCG +06-36-054,PGC 058598,SDSS J163637.15+361201.5,SDSS J163637.15+361201.6,SDSS J163637.16+361201.5;;; -NGC6195;G;16:36:32.57;+39:01:40.4;Her;1.44;0.97;41;14.70;;11.18;10.40;10.18;23.22;Sb;;;;;;;;2MASX J16363253+3901408,MCG +07-34-118,PGC 058596,SDSS J163632.56+390140.3,SDSS J163632.57+390140.4,UGC 10469;;; -NGC6196;G;16:37:53.92;+36:04:23.0;Her;1.14;0.82;140;14.20;;10.75;10.12;9.80;22.96;E-S0;;;;;;4615;;2MASX J16375395+3604233,MCG +06-36-058,PGC 058644,SDSS J163753.91+360422.9,SDSS J163753.91+360423.0,SDSS J163753.92+360422.9,SDSS J163753.92+360423.0,UGC 10482;;; -NGC6197;G;16:37:59.88;+35:59:43.8;Her;0.75;0.38;38;15.40;;11.92;11.30;11.03;22.93;SBab;;;;;;4616;;2MASX J16375990+3559438,MCG +06-36-059,PGC 058655,SDSS J163759.87+355943.8,SDSS J163759.88+355943.7,SDSS J163759.88+355943.8;;; -NGC6198;G;16:35:30.65;+57:29:12.4;Dra;0.88;0.60;92;14.80;;11.87;11.05;11.01;23.60;E;;;;;;;;2MASX J16353065+5729126,MCG +10-24-003,PGC 058554,UGC 10467;;; -NGC6199;*;16:39:28.97;+36:03:32.3;Her;;;;15.00;;14.50;14.03;14.08;;;;;;;;;;2MASS J16392895+3603321,SDSS J163928.97+360332.3;;; -NGC6200;OCl;16:44:07.35;-47:27:45.6;Ara;8.10;;;7.74;7.40;;;;;;;;;;;;;MWSC 2450;;; -NGC6201;G;16:40:14.41;+23:45:55.2;Her;0.56;0.48;50;15.50;;12.05;11.12;10.98;;;;;;;;;;2MASX J16401441+2345550,PGC 058727,SDSS J164014.41+234555.2;;;Diameters and position angle taken from Simbad. -NGC6202;G;16:43:23.23;+61:59:02.2;Dra;0.72;0.40;69;13.80;;11.35;10.59;10.31;21.43;Sab;;;;;6226;;;2MASX J16432324+6159020,IRAS 16428+6204,MCG +10-24-043,PGC 058847,UGC 10532;;Identification as NGC 6202 is very uncertain.; -NGC6203;G;16:40:27.41;+23:46:29.4;Her;1.07;1.07;0;15.30;;11.53;10.83;10.50;24.32;E;;;;;;;;2MASX J16402738+2346291,MCG +04-39-019,PGC 058729;;; -NGC6204;OCl;16:46:09.50;-47:01:01.1;Ara;4.50;;;8.51;8.20;;;;;;;;;;;;;MWSC 2457;;; -NGC6205;GCl;16:41:41.63;+36:27:40.7;Her;16.50;;;;5.80;4.45;3.94;3.85;;;;;;013;;;;2MASX J16414163+3627407,MWSC 2445;Hercules Globular Cluster;; -NGC6206;G;16:40:07.90;+58:37:02.5;Dra;0.72;0.63;94;14.50;;11.46;10.71;10.44;22.63;S0;;;;;;1227;;2MASX J16400791+5837025,MCG +10-24-018,PGC 058723,UGC 10506;;Misidentified in UGC as MCG +10-24-019.; -NGC6207;G;16:43:03.75;+36:49:56.7;Her;3.46;1.61;17;12.19;11.65;10.08;9.42;9.12;22.66;Sc;;;;;;;;2MASX J16430375+3649567,IRAS 16412+3655,MCG +06-37-007,PGC 058827,SDSS J164303.66+364955.7,UGC 10521;;; -NGC6208;OCl;16:49:28.19;-53:43:42.0;Ara;8.40;;;8.06;7.20;;;;;;;;;;;;;MWSC 2470;;; -NGC6209;G;16:54:57.66;-72:35:11.9;Aps;2.11;1.54;14;13.16;;10.30;9.61;9.17;23.20;SABb;;;;;;;;2MASX J16545747-7235136,ESO 043-008,IRAS 16489-7230,PGC 059252;;; -NGC6210;PN;16:44:29.52;+23:47:59.4;Her;0.35;;;10.50;9.65;10.13;10.20;9.50;;;;12.44;12.66;;;;BD +24 3048,HD 151121,TYC 2045-00022-1;2MASX J16442953+2348003,IRAS 16423+2353,PN G043.1+37.7,SDSS J164429.51+234759.3;;;Dimensions taken from LEDA -NGC6211;G;16:41:27.64;+57:47:01.1;Dra;1.30;0.95;95;13.80;;10.57;9.94;9.69;23.13;S0;;;;;;;;2MASX J16412760+5747011,MCG +10-24-027,PGC 058775,UGC 10516;;; -NGC6212;G;16:43:23.14;+39:48:23.2;Her;0.91;0.81;84;15.00;;11.83;11.14;10.90;23.54;E;;;;;;;;2MASX J16432319+3948234,MCG +07-34-142,PGC 058840,SDSS J164323.13+394823.1,SDSS J164323.13+394823.2,SDSS J164323.14+394823.2;;; -NGC6213;G;16:41:37.19;+57:48:53.5;Dra;0.69;0.31;62;15.20;;12.18;11.48;11.19;23.58;;;;;;;;;2MASX J16413722+5748533,MCG +10-24-030,PGC 058778,UGC 10516 NOTES01;;; -NGC6214;G;16:39:31.93;+66:02:22.3;Dra;0.96;0.82;156;14.30;;11.28;10.60;10.30;22.78;Sb;;;;;;;;2MASX J16393189+6602221,IRAS 16393+6608,MCG +11-20-024,PGC 058709,UGC 10507;;; -NGC6215;G;16:51:06.81;-58:59:36.5;Ara;2.64;2.34;83;11.63;11.28;9.21;8.50;8.28;22.64;Sc;;;;;;;;2MASX J16510681-5859364,ESO 137-046,ESO-LV 137-0460,IRAS 16467-5854,PGC 059112;;Confused HIPASS source; -NGC6215A;G;16:52:59.45;-58:56:52.8;Ara;1.96;0.64;11;14.23;;11.38;10.63;10.24;23.66;Sb;;;;;;;;2MASX J16524840-5856461,ESO 138-004,ESO-LV 138-0040,PGC 059180;;; -NGC6216;OCl;16:49:23.61;-44:43:53.5;Sco;4.20;;;;10.10;;;;;;;;;;6222;;;MWSC 2469;;; -NGC6217;G;16:32:39.20;+78:11:53.4;UMi;2.24;1.63;155;14.37;13.88;9.68;8.99;8.68;22.12;Sbc;;;;;;;;2MASX J16323921+7811535,IRAS 16350+7818,MCG +13-12-008,PGC 058477,UGC 10470;;; -NGC6218;GCl;16:47:14.52;-01:56:52.2;Oph;11.10;;;8.52;6.07;;;;;;;;;012;;;;MWSC 2464;;; -NGC6219;G;16:46:22.51;+09:02:16.3;Her;0.80;0.65;158;15.20;;11.97;11.35;11.03;23.40;S0;;;;;;;;2MASX J16462248+0902154,MCG +02-43-001,PGC 058944;;; -NGC6220;G;16:47:13.28;-00:16:31.7;Oph;1.53;0.97;134;15.50;;10.80;10.06;9.80;24.38;Sab;;;;;;;;2MASX J16471330-0016310,PGC 058979,UGC 10541;;; -NGC6221;G;16:52:46.08;-59:13:07.0;Ara;4.84;3.15;1;10.90;13.45;8.10;7.36;7.12;22.54;Sc;;;;;;;;2MASX J16524632-5913009,ESO 138-003,ESO-LV 138-0030,IRAS 16484-5908,PGC 059175;;Confused HIPASS source; -NGC6222;Dup;16:49:23.61;-44:43:53.5;Sco;;;;;;;;;;;;;;;6216;;;;;; -NGC6223;G;16:43:04.31;+61:34:44.1;Dra;3.16;2.33;90;13.10;;10.09;9.34;9.11;24.18;E-S0;;;;;;;;2MASX J16430433+6134441,MCG +10-24-040,PGC 058828,UGC 10527;;; -NGC6224;G;16:48:18.54;+06:18:44.0;Her;1.10;1.01;140;15.00;;11.09;10.31;10.06;23.84;E-S0;;;;;;;;2MASX J16481855+0618439,MCG +01-43-002,PGC 059017,UGC 10555;;; -NGC6225;G;16:48:21.58;+06:13:22.0;Her;1.18;0.79;149;15.00;;11.13;10.45;10.20;23.99;E-S0;;;;;;;;2MASX J16482157+0613219,MCG +01-43-003,PGC 059024,UGC 10556;;; -NGC6226;Dup;16:43:23.23;+61:59:02.2;Dra;;;;;;;;;;;;;;;6202;;;;;; -NGC6227;*;16:51:33.72;-41:13:49.9;Sco;;;;5.29;5.22;4.94;4.95;4.80;;;;;;;;;;HD 151804,HIP 082493,TYC 7872-2284-1;;Part of the Milky Way.; -NGC6228;G;16:48:02.66;+26:12:48.8;Her;0.93;0.39;133;15.30;;12.56;11.81;11.73;23.39;Sb;;;;;;;;2MASX J16480266+2612485,IRAS 16460+2617,MCG +04-40-001,PGC 059007,SDSS J164802.65+261248.8,UGC 10558;;; -NGC6229;GCl;16:46:58.86;+47:31:40.1;Her;4.80;;;9.38;9.86;7.98;7.43;7.33;;;;;;;;;;MWSC 2460;;; -NGC6230;GPair;16:50:44.70;+04:36:18.0;Oph;1.70;;;;;;;;;;;;;;;;;MCG +01-43-005;;;Diameter of the group inferred by the author. -NGC6230 NED01;G;16:50:42.73;+04:36:18.0;Oph;0.58;0.35;124;15.50;;12.44;11.74;11.40;23.82;E;;;;;;;;2MASX J16504275+0436180,MCG +01-43-005 NED01,PGC 214543,UGC 10575 NOTES01;;Component 'a)' in UGC notes.; -NGC6230 NED02;G;16:50:46.70;+04:36:16.7;Oph;0.72;0.52;60;15.50;;11.83;11.11;10.84;23.60;E;;;;;;;;2MASX J16504669+0436170,MCG +01-43-005 NED02,PGC 059106,UGC 10575;;Called 'NGC 6230B' in UGC.; -NGC6231;OCl;16:54:10.92;-41:49:27.3;Sco;13.80;;;2.83;2.60;;;;;;;;;;;;;C 076,MWSC 2481;;; -NGC6232;G;16:43:20.24;+70:37:57.1;Dra;1.47;1.16;176;15.80;;11.32;10.66;10.33;23.15;Sa;;;;;;;;2MASX J16432023+7037571,MCG +12-16-007,PGC 058841,UGC 10537;;"MCG misprints name as 'NGC 6237'; corrected in MCG errata."; -NGC6233;G;16:50:15.70;+23:34:47.4;Her;1.46;0.73;28;14.90;;11.07;10.32;10.12;24.11;S0;;;;;;;;2MASX J16501572+2334474,MCG +04-40-002,PGC 059086,SDSS J165015.69+233447.3,SDSS J165015.69+233447.4,SDSS J165015.70+233447.3,SDSS J165015.70+233447.4,UGC 10573;;; -NGC6234;G;16:51:57.34;+04:23:00.7;Oph;0.74;0.67;39;15.30;;11.52;10.80;10.55;23.51;E;;;;;;;;2MASX J16515734+0423008,MCG +01-43-007,PGC 059144;;; -NGC6235;GCl;16:53:25.36;-22:10:38.8;Oph;4.20;;;11.99;7.20;;;;;;;;;;;;;MWSC 2479;;; -NGC6236;G;16:44:34.65;+70:46:48.8;Dra;1.82;1.07;12;12.70;;12.00;11.50;11.34;22.62;SABc;;;;;;;;2MASX J16443469+7046489,IRAS 16450+7052,MCG +12-16-008,PGC 058891,UGC 10546;;; -NGC6237;Other;16:44:07.54;+70:38:05.3;Dra;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6238;G;16:47:16.63;+62:08:49.3;Dra;0.68;0.41;16;14.50;;13.01;12.05;12.20;21.99;Sc;;;;;;;;2MASX J16471664+6208491,IRAS 16467+6213,MCG +10-24-057,PGC 058980,UGC 10563;;HOLM 756B is a superposed star.; -NGC6239;G;16:50:04.98;+42:44:22.9;Her;2.30;1.07;113;12.94;12.45;10.94;10.35;10.05;22.88;SBb;;;;;;;;2MASX J16500502+4244234,IRAS 16484+4249,MCG +07-35-001,PGC 059083,SDSS J165004.83+424422.9,SDSS J165004.96+424422.5,SDSS J165004.98+424422.8,UGC 10577;;; -NGC6240;G;16:52:58.87;+02:24:03.3;Oph;2.20;1.03;12;14.31;13.37;10.30;9.46;9.11;24.08;S0-a;;;;;;4625;;2MASX J16525886+0224035,IRAS 16504+0228,MCG +00-43-004,PGC 059186,SDSS J165258.89+022402.8,UGC 10592;;; -NGC6241;G;16:50:10.95;+45:25:14.2;Her;0.52;0.36;80;14.80;;11.71;11.08;10.75;22.69;Sbc;;;;;;;;2MASX J16501092+4525144,IRAS 16486+4530,MCG +08-31-007,PGC 059085,SDSS J165010.94+452514.2,UGC 10586 NOTES02;;; -NGC6242;OCl;16:55:33.44;-39:27:39.4;Sco;6.60;;;7.09;6.40;;;;;;;;;;;;;MWSC 2488;;; -NGC6243;G;16:52:26.29;+23:19:57.3;Her;1.21;0.60;152;15.10;;11.43;10.65;10.33;23.66;Sa;;;;;;;;2MASX J16522624+2319575,MCG +04-40-004,PGC 059161,SDSS J165226.28+231957.2,SDSS J165226.28+231957.3,SDSS J165226.29+231957.2,SDSS J165226.29+231957.3,UGC 10591;;; -NGC6244;G;16:48:03.91;+62:12:01.6;Dra;1.54;0.34;139;14.30;;11.03;10.22;10.06;23.26;Sa;;;;;;;;2MASX J16480389+6212017,IRAS 16475+6217,MCG +10-24-059,PGC 059009,UGC 10568;;; -NGC6245;Other;16:45:22.48;+70:48:16.5;Dra;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6246;G;16:49:52.72;+55:32:31.4;Dra;1.38;0.73;46;14.20;;11.71;11.02;10.76;23.35;Sb;;;;;;;;2MASX J16495269+5532308,IRAS 16488+5537,MCG +09-27-098,PGC 059077,UGC 10580;;; -NGC6246A;G;16:50:13.98;+55:23:04.6;Dra;2.17;1.28;164;14.70;;11.28;10.82;10.44;24.29;Sc;;;;;;;;2MASX J16501398+5523048,IRAS 16492+5528,MCG +09-27-101,PGC 059090,UGC 10584;;; -NGC6247;G;16:48:20.24;+62:58:35.1;Dra;0.89;0.28;56;15.30;;11.30;10.62;10.32;21.49;Sb;;;;;;1233;;2MASX J16482023+6258348,IRAS 16478+6303,PGC 059023,SDSS J164820.24+625835.1,SDSS J164820.24+625835.4,SDSS J164820.25+625835.1,SDSS J164820.25+625835.2,UGC 10572;;; -NGC6248;G;16:46:21.99;+70:21:31.7;Dra;1.23;0.76;157;14.10;;;;;23.07;SBc;;;;;;;;2MASX J16462197+7021319,MCG +12-16-009,PGC 058864,PGC 058946,UGC 10564;;; -NGC6249;OCl;16:57:41.50;-44:48:42.8;Sco;7.60;;;8.72;8.20;;;;;;;;;;;;;MWSC 2499;;; -NGC6250;Cl+N;16:57:56.07;-45:56:11.9;Ara;9.60;;;6.14;5.90;;;;;;;;;;;;;MWSC 2500;;; -NGC6251;G;16:32:31.97;+82:32:16.4;UMi;1.67;1.44;20;14.66;12.89;10.06;9.31;9.03;23.90;E;;;;;;;;2MASX J16323175+8232165,MCG +14-08-010,PGC 058472,UGC 10501;;; -NGC6252;G;16:32:40.57;+82:34:36.4;UMi;0.76;0.36;63;15.10;;11.43;10.65;10.42;22.96;Sab;;;;;;;;2MASX J16324053+8234365,MCG +14-08-011,PGC 058456;;; -NGC6253;OCl;16:59:05.13;-52:42:31.7;Ara;6.00;;;;10.20;;;;;;;;;;;;;MWSC 2502;;; -NGC6254;GCl;16:57:08.99;-04:05:57.6;Oph;9.30;;;;4.98;;;;;;;;;010;;;;MWSC 2498;;; -NGC6255;G;16:54:47.95;+36:30:04.0;Her;3.10;1.37;95;13.40;;13.23;12.64;12.85;24.17;SBc;;;;;;;;2MASX J16544796+3630031,MCG +06-37-014,PGC 059244,UGC 10606;;; -NGC6256;GCl;16:59:32.69;-37:07:17.1;Sco;4.20;;;;;;;;;;;;;;;;;ESO 391-006,MWSC 2506;;; -NGC6257;G;16:56:03.51;+39:38:43.8;Her;0.87;0.27;122;15.60;;12.92;12.27;12.03;23.24;SBc;;;;;;;;2MASX J16560347+3938442,PGC 059274,SDSS J165603.51+393843.8;;; -NGC6258;G;16:52:29.79;+60:30:52.3;Dra;0.87;0.67;65;14.50;;11.69;11.26;10.69;23.03;E;;;;;;;;2MASX J16522982+6030524,MCG +10-24-073,PGC 059165,UGC 10595;;; -NGC6259;OCl;17:00:45.40;-44:39:17.9;Sco;6.00;;;8.85;8.00;;;;;;;;;;;;;MWSC 2511;;; -NGC6260;G;16:51:50.61;+63:42:52.5;Dra;0.93;0.77;130;15.80;;11.79;11.02;10.94;23.10;Sbc;;;;;;;;2MASX J16515061+6342523,IRAS 16514+6347,MCG +11-20-029,PGC 059142,SDSS J165150.60+634252.4,SDSS J165150.60+634252.5,SDSS J165150.60+634252.6,SDSS J165150.61+634252.4;;; -NGC6261;G;16:56:30.52;+27:58:39.0;Her;1.09;0.44;85;15.20;;11.31;10.54;10.32;23.80;S0-a;;;;;;;;2MASX J16563054+2758392,MCG +05-40-006,PGC 059286,SDSS J165630.51+275839.0,SDSS J165630.51+275839.1,SDSS J165630.52+275839.1,UGC 10617;;; -NGC6262;G;16:58:42.80;+57:05:54.2;Dra;0.78;0.32;77;14.60;;;;;23.16;E-S0;;;;;;;;2MASX J16584281+5705541,IRAS 16578+5710,MCG +10-24-080,PGC 059363;;"NGC identification is very uncertain; N6262 could be CGCG 277-010."; -NGC6263;G;16:56:43.20;+27:49:19.5;Her;1.05;0.31;109;15.10;;11.24;10.54;10.25;23.69;E;;;;;;;;2MASX J16564323+2749199,MCG +05-40-008,PGC 059292,SDSS J165643.20+274919.5,UGC 10618;;; -NGC6264;G;16:57:16.13;+27:50:58.6;Her;0.82;0.52;24;15.50;;12.39;11.59;11.41;23.37;SBb;;;;;;;;2MASX J16571610+2750587,MCG +05-40-009,PGC 059306,SDSS J165716.12+275058.5,SDSS J165716.13+275058.5,SDSS J165716.13+275058.6;;HOLM 763B is a star.; -NGC6265;G;16:57:29.10;+27:50:39.2;Her;0.88;0.57;35;15.40;;11.72;11.06;10.75;23.65;S0;;;;;;;;2MASX J16572915+2750397,MCG +05-40-011,PGC 059315,UGC 10624;;; -NGC6266;GCl;17:01:12.60;-30:06:44.5;Oph;7.80;;;8.55;7.39;;;;;;;;;062;;;;MWSC 2512;;; -NGC6267;G;16:58:08.66;+22:59:06.4;Her;1.30;0.99;33;14.00;;11.35;10.64;10.22;22.95;Sc;;;;;;;;2MASX J16580867+2259062,IRAS 16560+2303,MCG +04-40-009,PGC 059340,SDSS J165808.65+225906.3,UGC 10628;;HOLM 764B is a star.; -NGC6268;OCl;17:02:10.39;-39:43:41.6;Sco;6.00;;;;9.50;;;;;;;;;;;;;MWSC 2516;;; -NGC6269;G;16:57:58.09;+27:51:15.6;Her;1.84;1.32;80;14.40;13.73;10.40;9.71;9.40;23.61;E;;;;;;;;2MASX J16575809+2751157,MCG +05-40-012,PGC 059332,UGC 10629;;; -NGC6270;G;16:58:44.05;+27:51:32.8;Her;0.72;0.47;93;15.65;;12.46;11.54;11.35;23.64;;;;;;;;;2MASX J16584409+2751331,PGC 095562;;; -NGC6271;G;16:58:50.77;+27:57:52.7;Her;0.67;0.54;20;15.50;;12.03;11.38;11.00;23.51;E-S0;;;;;;;;2MASX J16585070+2757542,MCG +05-40-016,PGC 059365;;; -NGC6272;G;16:58:58.26;+27:55:51.3;Her;0.56;0.29;159;15.50;;12.79;12.08;11.75;22.79;Sa;;;;;;;;2MASX J16585825+2755512,PGC 059367;;; -NGC6273;GCl;17:02:37.68;-26:16:04.6;Oph;7.50;;;8.45;5.57;;;;;;;;;019;;;;MWSC 2519;;; -NGC6274;GPair;16:59:20.92;+29:56:37.8;Her;1.20;;;;;;;;;;;;;;;;;UGC 10643;;;Diameter of the group inferred by the author. -NGC6274 NED01;G;16:59:20.50;+29:56:47.1;Her;0.60;0.43;16;14.50;14.33;12.27;11.47;11.14;22.10;SBb;;;;;;;;2MASX J16592044+2956459,IRAS 16574+3001,MCG +05-40-019,PGC 059383,UGC 10643 NED01;;;Called 'UGC 10643 NED01' in NED -NGC6274 NED02;G;16:59:21.43;+29:56:26.0;Her;0.83;0.17;117;16.00;;13.65;13.02;12.62;23.94;SBab;;;;;;;;2MASX J16592144+2956259,MCG +05-40-020,PGC 059381,UGC 10643 NED02;;;Called 'UGC 10643 NED02' in NED -NGC6275;G;16:55:33.37;+63:14:31.9;Dra;0.76;0.47;146;17.61;17.37;13.41;13.10;12.74;23.09;SBd;;;;;;;;2MASX J16553323+6314338,PGC 059262,SDSS J165533.34+631432.1,SDSS J165533.35+631431.9,SDSS J165533.35+631432.0,SDSS J165533.36+631431.8,SDSS J165533.36+631431.9,SDSS J165533.38+631431.6,SDSS J165533.39+631431.7;;; -NGC6276;G;17:00:45.09;+23:02:38.4;Her;0.64;0.55;130;15.20;;12.69;12.04;11.78;22.87;Sa;;;;;;1239;;2MASX J17004498+2302384,MCG +04-40-010,PGC 059419,SDSS J170045.08+230238.3,SDSS J170045.08+230238.4,SDSS J170045.09+230238.4,UGC 10656 NOTES01;;NGC 6277 is a star.; -NGC6277;*;17:00:48.89;+23:02:21.7;Her;;;;;;;;;;;;;;;;;;;;; -NGC6278;G;17:00:50.33;+23:00:39.7;Her;1.73;0.86;128;13.80;;9.96;9.21;8.99;23.63;S0;;;;;;;;2MASX J17005034+2300394,MCG +04-40-011,PGC 059426,SDSS J170050.32+230039.7,UGC 10656;;HOLM 765C is a double star.; -NGC6279;G;16:59:01.43;+47:14:13.8;Her;1.04;0.87;34;14.90;;11.25;10.52;10.19;23.63;S0;;;;;;;;2MASX J16590146+4714138,MCG +08-31-017,PGC 059370,SDSS J165901.42+471413.7,UGC 10645;;; -NGC6280;GPair;17:01:57.49;+06:39:56.7;Oph;0.71;0.62;137;15.50;;11.81;11.17;10.89;23.59;E;;;;;;;;2MASX J17015742+0639573,MCG +01-43-008,PGC 059464;;; -NGC6281;OCl;17:04:41.30;-37:59:06.8;Sco;10.20;;;5.78;5.40;;;;;;;;;;;;;MWSC 2530;;; -NGC6282;G;17:00:47.11;+29:49:14.2;Her;0.73;0.54;45;15.20;;12.48;11.75;11.52;22.98;SBbc;;;;;;;;2MASX J17004708+2949140,PGC 059418,SDSS J170047.11+294914.1;;; -NGC6283;G;16:59:26.57;+49:55:19.1;Her;1.11;0.98;56;13.70;;11.73;11.16;10.83;22.68;Sc;;;;;;;;2MASX J16592655+4955191,IRAS 16581+4959,MCG +08-31-018,PGC 059386,UGC 10652;;; -NGC6284;GCl;17:04:28.75;-24:45:51.6;Oph;6.60;;;10.72;7.43;7.52;6.97;6.82;;;;;;;;;;2MASX J17042874-2445512,MWSC 2528;;; -NGC6285;G;16:58:24.01;+58:57:21.5;Dra;1.08;0.57;110;15.30;;12.06;11.36;11.05;23.60;S0-a;;;;;6286N;;;2MASX J16582401+5857212,MCG +10-24-081,PGC 059344;;; -NGC6286;G;16:58:31.38;+58:56:10.5;Dra;1.22;1.12;35;14.20;;11.12;10.24;9.76;23.24;Sb;;;;;6286S;;;2MASX J16583138+5856102,IRAS 16577+5900,MCG +10-24-084,PGC 059352,UGC 10647;;; -NGC6287;GCl;17:05:09.34;-22:42:28.8;Oph;5.40;;;11.49;10.30;7.60;7.15;6.73;;;;;;;;;;MWSC 2533;;; -NGC6288;G;16:57:24.45;+68:27:25.3;Dra;0.72;0.52;110;15.30;;11.60;10.85;10.59;;E-S0;;;;;;;;2MASX J16572452+6827258,MCG +11-21-006,PGC 059312;;;Diameters and position angle taken from Simbad. -NGC6289;G;16:57:44.99;+68:30:53.0;Dra;1.10;0.76;14;15.50;;11.60;10.87;10.62;24.20;E;;;;;;;;2MASX J16574502+6830529,MCG +11-21-007,PGC 059322;;; -NGC6290;G;17:00:56.43;+58:58:13.8;Dra;0.99;0.90;135;14.30;;11.24;10.52;10.21;23.21;Sa;;;;;;;;2MASX J17005643+5858140,MCG +10-24-088,PGC 059428,UGC 10665;;; -NGC6291;G;17:00:55.92;+58:56:15.2;Dra;0.62;0.50;176;15.00;;11.81;11.21;10.90;22.90;E;;;;;;;;2MASX J17005591+5856150,MCG +10-24-086,PGC 059435;;; -NGC6292;G;17:03:03.47;+61:02:38.0;Dra;1.32;0.63;102;14.40;;11.87;11.21;11.10;23.20;SABb;;;;;;;;2MASX J17030344+6102381,IRAS 17024+6106,MCG +10-24-093,PGC 059498,SDSS J170303.47+610237.9,SDSS J170303.47+610238.0,SDSS J170303.47+610238.1,UGC 10684;;; -NGC6293;GCl;17:10:10.41;-26:34:54.3;Oph;4.50;;;9.96;9.02;;;;;;;;;;;;;MWSC 2539;;; -NGC6294;**;17:10:16.23;-26:34:28.4;Oph;;;;;;;;;;;;;;;;;;;;; -NGC6295;G;17:03:15.35;+60:20:15.9;Dra;0.98;0.42;77;16.00;;12.03;11.18;10.76;23.51;Sb;;;;;;;;2MASX J17031526+6020160,IRAS 17025+6024,MCG +10-24-092,PGC 059510,SDSS J170315.33+602015.9,SDSS J170315.34+602015.8,SDSS J170315.34+602015.9,SDSS J170315.35+602015.9,UGC 10682;;; -NGC6296;G;17:08:44.47;+03:53:38.7;Oph;0.89;0.70;124;14.20;;11.37;10.58;10.27;22.46;SABb;;;;;;;;2MASX J17084446+0353386,IRAS 17062+0357,MCG +01-44-002,PGC 059690,UGC 10719;;; -NGC6297;G;17:03:36.55;+62:01:32.2;Dra;0.64;0.45;84;14.40;;11.48;10.75;10.56;22.16;S0;;;;;6298;;;2MASX J17033657+6201323,PGC 059525,SDSS J170336.54+620132.2,SDSS J170336.55+620132.2,SDSS J170336.55+620132.4,UGC 10690;;; -NGC6298;Dup;17:03:36.55;+62:01:32.2;Dra;;;;;;;;;;;;;;;6297;;;;;; -NGC6299;G;17:05:04.41;+62:27:28.2;Dra;0.95;0.59;50;15.00;;11.71;11.00;10.76;23.64;E;;;;;;;;2MASX J17050435+6227276,MCG +10-24-097,PGC 059561,SDSS J170504.41+622728.2;;; -NGC6300;G;17:16:59.47;-62:49:14.0;Ara;5.33;3.37;119;10.88;13.08;7.86;7.20;6.93;23.00;SBb;;;;;;;;2MASX J17165947-6249139,ESO 101-025,ESO-LV 101-0250,IRAS 17123-6245,PGC 060001;;Extended HIPASS source; -NGC6301;G;17:08:32.74;+42:20:20.8;Her;1.77;1.00;113;14.60;;11.37;10.74;10.51;23.88;Sc;;;;;;4643;;2MASX J17083273+4220208,IRAS 17069+4224,MCG +07-35-034,PGC 059681,SDSS J170832.74+422020.8,UGC 10723;;; -NGC6302;PN;17:13:44.63;-37:06:11.3;Sco;0.74;;;12.80;9.60;;;;;;;21.10;;;;;HD 155520;2MASX J17134463-3706111,C 069,ESO 392-005,IRAS 17103-3702,PN G349.5+01.0;Bug Nebula;; -NGC6303;G;17:05:02.77;+68:49:39.3;Dra;1.47;0.67;61;15.10;;11.32;10.46;10.23;24.57;E;;;;;;;;2MASX J17050269+6849389,MCG +12-16-017,PGC 059573,UGC 10711;;; -NGC6304;GCl;17:14:32.51;-29:27:44.2;Oph;3.60;;;10.33;9.03;;;;;;;;;;;;;ESO 454-002,MWSC 2550;;; -NGC6305;G;17:18:00.92;-59:10:19.5;Ara;1.69;1.32;137;13.02;12.61;9.84;9.14;8.89;23.10;E-S0;;;;;;;;2MASX J17180092-5910193,ESO 138-019,ESO-LV 138-0190,PGC 060029,TYC 8739-2283-1;;; -NGC6306;G;17:07:36.98;+60:43:44.0;Dra;1.32;0.49;161;14.40;13.74;11.75;11.02;10.85;23.27;SBab;;;;;;;;2MASX J17073690+6043431,IRAS 17069+6047,MCG +10-24-098,PGC 059654,UGC 10724;;; -NGC6307;G;17:07:40.47;+60:45:02.8;Dra;1.36;1.03;153;13.95;;10.40;9.72;9.48;22.94;S0-a;;;;;;;;2MASX J17074044+6045032,MCG +10-24-099,PGC 059655,UGC 10727;;; -NGC6308;G;17:11:59.71;+23:22:47.8;Her;1.19;0.95;156;14.40;;10.99;10.32;10.04;23.13;SABc;;;;;;;;2MASX J17115972+2322483,IRAS 17099+2326,MCG +04-40-021,PGC 059807,SDSS J171159.70+232247.8,SDSS J171159.71+232247.7,SDSS J171159.71+232247.8,UGC 10747;;; -NGC6309;PN;17:14:04.30;-12:54:38.0;Oph;0.26;;;10.80;11.50;11.60;11.54;10.93;;;;16.58;;;;;HD 155752;IRAS 17112-1251,PN G009.6+14.8;Box Nebula;; -NGC6310;G;17:07:57.47;+60:59:24.6;Dra;1.68;0.35;70;13.80;;10.82;10.15;9.77;22.73;Sb;;;;;;;;2MASX J17075743+6059241,MCG +10-24-100,PGC 059662,SDSS J170757.46+605924.6,SDSS J170757.47+605924.6,SDSS J170757.48+605924.5,UGC 10730;;; -NGC6311;G;17:10:43.57;+41:39:04.0;Her;1.23;1.17;5;14.90;;10.85;10.17;9.84;23.90;E;;;;;;;;2MASX J17104357+4139037,MCG +07-35-039,PGC 059750,SDSS J171043.57+413903.9,UGC 10741;;; -NGC6312;G;17:10:48.16;+42:17:15.7;Her;0.87;0.74;5;15.30;;11.45;10.76;10.46;23.57;E;;;;;;;;2MASX J17104818+4217151,MCG +07-35-040,PGC 059751,SDSS J171048.15+421715.7;;; -NGC6313;G;17:10:20.80;+48:19:54.3;Her;1.45;0.52;156;14.80;;11.29;10.58;10.29;23.66;Sab;;;;;;;;2MASX J17102078+4819542,MCG +08-31-025,PGC 059739,UGC 10742;;; -NGC6314;G;17:12:38.71;+23:16:12.2;Her;1.37;0.70;174;15.56;14.62;10.85;10.10;9.81;23.02;Sa;;;;;;;;2MASX J17123873+2316125,IRAS 17105+2319,MCG +04-40-022,PGC 059838,SDSS J171238.71+231612.2,SDSS J171238.71+231612.3,SDSS J171238.72+231612.3,UGC 10752;;; -NGC6315;G;17:12:46.15;+23:13:24.8;Her;0.76;0.59;5;15.40;;12.91;12.29;11.86;22.20;Sc;;;;;;;;2MASX J17124612+2313245,MCG +04-40-023,PGC 059843,SDSS J171246.14+231324.8;;The position in 1999ApJS..122..415A is 4.1 arcsec northwest of the nucleus.; -NGC6316;GCl;17:16:37.41;-28:08:24.1;Oph;4.80;;;10.33;9.03;;;;;;;;;;;;;MWSC 2554;;; -NGC6317;G;17:08:59.51;+62:53:52.8;Dra;0.96;0.61;44;16.00;;12.59;11.87;11.44;23.45;SBc;;;;;;;;2MASX J17085946+6253523,MCG +11-21-009,PGC 059708,SDSS J170859.47+625353.0,SDSS J170859.49+625352.7,SDSS J170859.49+625352.8,SDSS J170859.50+625352.8,SDSS J170859.51+625352.8,SDSS J170859.52+625352.8;;; -NGC6318;OCl;17:16:11.59;-39:25:29.9;Sco;3.30;;;;11.80;;;;;;;;;;;;;MWSC 2552;;; -NGC6319;G;17:09:44.08;+62:58:23.0;Dra;1.17;1.14;170;14.40;;11.28;10.49;10.31;23.54;E;;;;;;;;2MASX J17094401+6258232,IRAS 17092+6302,MCG +11-21-010,PGC 059717,SDSS J170944.06+625823.1,SDSS J170944.07+625823.0,SDSS J170944.08+625823.0,UGC 10744;;; -NGC6320;G;17:12:55.74;+40:15:59.4;Her;1.26;0.82;98;14.90;;11.67;10.89;10.64;23.68;Sbc;;;;;;;;2MASX J17125575+4015595,MCG +07-35-044,PGC 059852,SDSS J171255.73+401559.4,UGC 10761;;; -NGC6321;G;17:14:24.22;+20:18:50.1;Her;1.00;0.91;95;14.50;;11.84;11.20;10.71;23.18;Sbc;;;;;;;;2MASX J17142422+2018498,IRAS 17122+2022,MCG +03-44-002,PGC 059900,UGC 10768;;; -NGC6322;OCl;17:18:25.79;-42:56:02.5;Sco;6.30;;;6.32;6.00;;;;;;;;;;;;;MWSC 2562;;; -NGC6323;G;17:13:18.08;+43:46:56.8;Her;1.20;0.55;175;14.80;;11.55;10.85;10.53;23.39;SBab;;;;;;;;2MASX J17131806+4346563,MCG +07-35-048,PGC 059868,SDSS J171318.07+434656.8,UGC 10764;;; -NGC6324;G;17:05:25.32;+75:24:25.3;UMi;0.98;0.52;74;13.50;;11.58;10.95;10.62;22.00;Sbc;;;;;;;;2MASX J17052594+7524267,IRAS 17070+7528,MCG +13-12-016,PGC 059583,SDSS J170525.30+752425.2,SDSS J170525.31+752425.3,UGC 10725;;; -NGC6325;GCl;17:17:59.27;-23:45:57.7;Oph;4.02;;;11.49;;;;;;;;;;;;;;ESO 519-011,MWSC 2560;;; -NGC6326;PN;17:20:46.36;-51:45:15.8;Ara;0.21;;;12.20;;14.55;;;;;;16.75;;;;;HD 156531;ESO 228-001,IRAS 17168-5142,PN G338.1-08.3;;; -NGC6327;G;17:14:02.29;+43:38:58.1;Her;0.58;0.56;120;15.70;;12.64;11.95;11.70;23.42;E;;;;;;;;2MASX J17140227+4338580,PGC 059889;;; -NGC6328;G;17:23:41.03;-65:00:36.6;Ara;1.61;1.56;160;13.17;13.20;10.15;9.44;9.18;23.02;SABa;;;;;;;;2MASX J17234103-6500371,ESO 102-003,ESO-LV 102-0030,PGC 060198;;Confused HIPASS source; -NGC6329;G;17:14:15.03;+43:41:04.9;Her;1.18;1.15;75;14.30;;10.88;10.19;9.84;23.46;E;;;;;;;;2MASX J17141500+4341050,MCG +07-35-051,PGC 059894,SDSS J171415.02+434104.9,UGC 10771;;; -NGC6330;G;17:15:44.42;+29:24:15.5;Her;1.19;0.55;165;14.80;;11.90;11.19;10.87;23.61;SBb;;;;;;;;2MASX J17154439+2924150,IRAS 17138+2927,MCG +05-41-005,PGC 059961,SDSS J171544.41+292415.4,SDSS J171544.41+292415.5,SDSS J171544.42+292415.4,UGC 10776;;; -NGC6331;G;17:03:35.97;+78:37:44.4;UMi;1.04;1.00;30;14.00;;11.69;10.97;10.60;;E;;;;;;;;2MASX J17033591+7837435,MCG +13-12-015 NED02,PGC 084830;;;Diameters and position angle taken from Simbad. -NGC6332;G;17:15:02.90;+43:39:36.7;Her;1.74;0.89;45;14.60;;10.80;10.12;9.81;23.98;Sa;;;;;;;;2MASX J17150290+4339368,MCG +07-35-054,PGC 059927,UGC 10773;;; -NGC6333;GCl;17:19:11.78;-18:30:58.5;Oph;6.90;;;9.36;8.42;;;;;;;;;009;;;;MWSC 2567;;; -NGC6334;SNR;17:20:49.70;-36:06:09.8;Sco;8.40;;;;;;;;;;;;;;;;;MWSC 2577;;; -NGC6335;*Ass;17:19:31.92;-30:09:51.0;Sco;;;;;;;;;;;;;;;;;;;;; -NGC6336;G;17:16:16.57;+43:49:13.7;Her;1.05;0.73;167;14.50;;11.80;11.12;10.74;23.20;Sa;;;;;;;;2MASX J17161657+4349135,MCG +07-35-057,PGC 059976,UGC 10786;;; -NGC6337;PN;17:22:15.61;-38:29:01.4;Sco;0.85;;;11.90;12.30;;;;;;;15.50;14.90;;;;;ESO 333-005,IRAS 17188-3826,PN G349.3-01.1;;; -NGC6338;G;17:15:22.99;+57:24:40.3;Dra;1.73;1.04;16;14.20;;10.39;9.70;9.40;23.38;S0;;;;;;;;2MASX J17152291+5724404,MCG +10-24-116,PGC 059947,SDSS J171522.96+572440.5,SDSS J171522.97+572440.2,SDSS J171522.98+572440.2,SDSS J171522.99+572440.2,SDSS J171522.99+572440.3,UGC 10784;;; -NGC6339;G;17:17:06.50;+40:50:41.9;Her;1.86;1.17;170;13.70;;11.63;11.01;10.97;23.50;Sc;;;;;;;;2MASX J17170650+4050418,IRAS 17155+4053,MCG +07-35-059,PGC 060003,UGC 10790;;; -NGC6340;G;17:10:24.85;+72:18:16.0;Dra;3.04;2.88;155;11.87;11.01;9.25;8.55;8.39;23.10;S0-a;;;;;;;;2MASX J17102496+7218156,MCG +12-16-023,PGC 059742,SDSS J171024.84+721815.9,UGC 10762;;; -NGC6341;GCl;17:17:07.27;+43:08:11.5;Her;14.40;;;;6.52;;;;;;;;;092;;;;MWSC 2557;;; -NGC6342;GCl;17:21:10.14;-19:35:14.7;Oph;6.60;;;11.25;10.01;;;;;;;;;;;;;MWSC 2580;;; -NGC6343;G;17:17:16.27;+41:03:09.8;Her;1.24;0.94;130;14.70;;11.22;10.53;10.23;23.90;E;;;;;;;;2MASX J17171627+4103099,MCG +07-35-060,PGC 060010,SDSS J171716.27+410309.8,TYC 3077-777-1;;; -NGC6344;**;17:17:18.15;+42:26:03.1;Her;;;;;;;;;;;;;;;;;;;;; -NGC6345;G;17:15:24.28;+57:21:01.1;Dra;0.95;0.39;35;15.40;;11.88;11.20;10.90;23.32;SBa;;;;;;;;2MASX J17152430+5721015,MCG +10-24-115,PGC 059945,SDSS J171524.26+572101.3,SDSS J171524.27+572101.0,SDSS J171524.28+572101.0,SDSS J171524.28+572101.1;;; -NGC6346;G;17:15:24.49;+57:19:21.1;Dra;0.91;0.58;94;15.30;;11.52;10.87;10.66;23.52;E-S0;;;;;;;;2MASX J17152444+5719215,MCG +10-24-114,PGC 059946,SDSS J171524.47+571921.0,SDSS J171524.47+571921.3,SDSS J171524.48+571921.0,SDSS J171524.49+571921.0,SDSS J171524.49+571921.1;;; -NGC6347;G;17:19:54.67;+16:39:38.5;Her;1.22;0.57;98;14.26;13.45;11.41;10.73;10.50;23.16;SBb;;;;;;1253;;2MASX J17195466+1639384,IRAS 17176+1642,MCG +03-44-004,PGC 060086,UGC 10807;;; -NGC6348;G;17:18:21.19;+41:38:51.4;Her;0.85;0.57;118;15.60;;12.02;11.30;10.97;23.60;S0-a;;;;;;;;2MASX J17182124+4138512,MCG +07-35-063,PGC 060036,SDSS J171821.18+413851.3;;; -NGC6349;G;17:19:06.55;+36:03:39.3;Her;1.07;0.25;80;15.10;;11.70;11.05;10.69;23.96;S0-a;;;;;;;;2MASX J17190654+3603389,MCG +06-38-016,PGC 060060,SDSS J171906.54+360339.3;;; -NGC6350;G;17:18:42.25;+41:41:39.6;Her;1.24;1.04;89;14.30;;10.81;10.08;9.76;23.44;S0;;;;;;;;2MASX J17184230+4141392,MCG +07-35-064,PGC 060046,SDSS J171842.25+414139.5,SDSS J171842.25+414139.7,UGC 10800;;; -NGC6351;GPair;17:19:11.40;+36:03:38.0;Her;0.40;;;;;;;;;;;;;;;;;MCG +06-38-017;;;Diameter of the group inferred by the author. -NGC6351 NED01;G;17:19:11.08;+36:03:37.5;Her;0.31;0.27;110;16.00;;12.57;11.72;11.52;;SBab;;;;;;;;MCG +06-38-017 NED01,PGC 060063;;; -NGC6351 NED02;G;17:19:11.67;+36:03:39.8;Her;0.08;0.07;43;16.92;;;;;;E;;;;;;;;MCG +06-38-017 NED02,SDSS J171911.66+360339.7;;;B-Mag taken from LEDA -NGC6352;GCl;17:25:29.16;-48:25:21.7;Ara;7.20;;;9.95;8.87;;;;;;;;;;;;;C 081,MWSC 2592;;; -NGC6353;Other;17:21:12.47;+15:41:18.8;Her;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC6354;Other;17:24:34.28;-38:32:29.8;Sco;;;;;;;;;;;;;;;;;;;;Asterism of six Galactic stars.; -NGC6355;GCl;17:23:58.65;-26:21:12.3;Oph;2.70;;;12.46;11.05;;;;;;;;;;;;;2MASX J17235817-2621060,ESO 519-015,MWSC 2586;;The 2MASS position is for a star northwest of the cluster's core.; -NGC6356;GCl;17:23:34.99;-17:48:46.9;Oph;5.40;;;10.01;7.42;;;;;;;;;;;;;MWSC 2585;;; -NGC6357;Cl+N;17:24:43.57;-34:12:04.8;Sco;3.90;;;;;;;;;;;;;;;;;MWSC 2588;the War and Peace Nebula;Involved in emission nebulosity; -NGC6358;G;17:18:53.01;+52:36:55.0;Dra;1.00;0.40;110;15.10;;11.68;10.95;10.67;23.56;S0-a;;;;;;;;2MASX J17185307+5236552,MCG +09-28-033,PGC 060054,SDSS J171853.03+523655.2,UGC 10810;;; -NGC6359;G;17:17:52.99;+61:46:50.9;Dra;1.06;0.75;141;13.56;12.64;10.44;9.77;9.51;22.41;E-S0;;;;;;;;2MASX J17175302+6146505,MCG +10-25-001,PGC 060025,SDSS J171752.98+614650.9,UGC 10804;;; -NGC6360;*Ass;17:24:27.62;-29:52:17.7;Oph;5.10;;;;;;;;;;;;;;;;;MWSC 2591;;; -NGC6361;G;17:18:41.09;+60:36:29.4;Dra;2.06;0.56;52;13.87;;10.32;9.54;9.10;23.27;Sb;;;;;;;;2MASX J17184108+6036292,IRAS 17180+6039,MCG +10-25-004,PGC 060045,SDSS J171841.08+603629.3,SDSS J171841.08+603629.4,SDSS J171841.08+603629.5,SDSS J171841.10+603629.2,UGC 10815;;; -NGC6362;GCl;17:31:54.84;-67:02:52.3;Ara;8.40;;;9.72;8.86;;;;;;;;;;;;;MWSC 2619;;; -NGC6363;G;17:22:40.02;+41:06:06.1;Her;1.02;0.84;145;14.50;;11.15;10.49;10.22;23.51;E;;;;;;;;2MASX J17223999+4106060,MCG +07-36-005,PGC 060164,UGC 10827;;; -NGC6364;G;17:24:27.33;+29:23:24.6;Her;1.38;1.08;7;13.87;;10.69;9.98;9.74;23.72;S0;;;;;;;;2MASX J17242732+2923243,MCG +05-41-013,PGC 060228,UGC 10835;;; -NGC6365A;G;17:22:43.81;+62:09:57.9;Dra;0.98;0.78;150;18.65;17.98;12.04;11.36;10.91;23.42;SBc;;;;;;;;2MASX J17224380+6209581,MCG +10-25-019,PGC 060138,PGC 060174,SDSS J172243.80+620958.0,SDSS J172243.81+620957.8,SDSS J172243.81+620957.9,SDSS J172243.82+620957.9,UGC 10832;;NED does NOT follow RC3 in assigning lower velocity to UGC 10832.; -NGC6365B;G;17:22:43.53;+62:10:25.4;Dra;1.13;0.24;32;14.60;;;;;23.93;Sd;;;;;;;;MCG +10-25-018,PGC 060171,SDSS J172243.51+621025.1,SDSS J172243.51+621025.2,SDSS J172243.52+621025.4,SDSS J172243.53+621025.4,UGC 10833;;NED does NOT follow RC3 in assigning higher velocity to UGC 10833.; -NGC6366;GCl;17:27:44.33;-05:04:35.9;Oph;13.80;;;;;;;;;;;;;;;;;MWSC 2601;;; -NGC6367;G;17:25:09.01;+37:45:35.6;Her;0.99;0.79;161;15.00;;11.56;10.84;10.59;23.48;Sab;;;;;;;;2MASX J17250905+3745356,MCG +06-38-020,PGC 060251,SDSS J172509.01+374535.6;;; -NGC6368;G;17:27:11.54;+11:32:37.0;Oph;3.44;0.80;43;13.70;;10.16;9.48;9.19;24.00;Sb;;;;;;;;2MASX J17271154+1132370,IRAS 17248+1135,MCG +02-44-004,PGC 060315,UGC 10856;;; -NGC6369;PN;17:29:20.50;-23:45:34.0;Oph;0.63;;;12.90;11.40;12.45;11.87;11.48;;;;16.99;15.94;;;;HD 158269;ESO 520-003,IRAS 17262-2343,PN G002.4+05.8;Little Ghost Nebula;; -NGC6370;G;17:23:25.18;+56:58:28.3;Dra;1.31;1.08;112;14.20;;10.86;10.16;9.85;23.62;E;;;;;;;;2MASX J17232515+5658281,MCG +10-25-020,PGC 060192,UGC 10836;;; -NGC6371;G;17:27:20.59;+26:30:18.2;Her;0.72;0.55;165;15.20;;12.00;11.32;11.04;23.09;S0-a;;;;;;;;2MASX J17272065+2630185,MCG +04-41-012,PGC 060322;;; -NGC6372;G;17:27:31.85;+26:28:30.5;Her;1.61;0.94;75;14.10;;11.05;10.38;10.16;23.04;Sbc;;;;;;;;2MASX J17273183+2628304,IRAS 17255+2630,MCG +04-41-013,PGC 060330,SDSS J172731.85+262830.5,UGC 10861;;; -NGC6373;G;17:24:08.09;+58:59:42.3;Dra;1.04;0.70;84;14.33;;13.33;12.68;12.53;23.29;Sc;;;;;;;;2MASX J17240804+5859425,MCG +10-25-023,PGC 060220,SDSS J172408.07+585942.6,SDSS J172408.08+585942.2,SDSS J172408.09+585942.2,SDSS J172408.09+585942.3,SDSS J172408.09+585942.5,SDSS J172408.10+585942.3,UGC 10850;;; -NGC6374;OCl;17:34:42.54;-32:34:52.9;Sco;6.90;;;5.56;5.50;;;;;;;;;;6383;;;MWSC 2631;;Bright star superposed.; -NGC6375;G;17:29:21.89;+16:12:24.0;Her;1.53;1.48;145;14.50;;10.50;9.79;9.41;24.34;E;;;;;;;;2MASX J17292187+1612244,MCG +03-44-009,PGC 060384,UGC 10875;;; -NGC6376;G;17:25:19.18;+58:49:02.8;Dra;0.52;0.29;172;18.95;18.97;13.35;12.58;12.39;21.79;Sc;;;;;;;;2MASX J17251918+5849023,MCG +10-25-026,PGC 060258,SDSS J172519.06+584900.3,SDSS J172519.07+584900.3,SDSS J172519.07+584900.5,SDSS J172519.09+584900.5,SDSS J172519.18+584902.7,UGC 10855 NED01;;Southern of close pair comprising NGC 6376.; -NGC6377;G;17:25:23.21;+58:49:21.9;Dra;0.64;0.27;64;15.50;;11.69;10.94;10.64;22.50;Sab;;;;;;;;2MASX J17252239+5849193,MCG +10-25-025,PGC 060264,SDSS J172523.21+584921.8,SDSS J172523.21+584921.9,UGC 10855 NED02;;; -NGC6378;G;17:30:41.98;+06:16:56.2;Oph;1.13;0.77;2;15.10;;11.23;10.52;10.20;23.58;Sb;;;;;;;;2MASX J17304198+0616564,MCG +01-44-009,PGC 060418,UGC 10884;;; -NGC6379;G;17:30:34.91;+16:17:19.5;Her;1.04;0.85;36;14.60;;11.62;10.97;10.92;22.36;Sc;;;;;;;;2MASX J17303492+1617193,IRAS 17283+1619,MCG +03-44-010,PGC 060421,UGC 10886;;; -NGC6380;GCl;17:34:28.42;-39:04:10.8;Sco;3.90;;;;;;;;;;;;;;;;;ESO 333-014,MWSC 2629;;; -NGC6381;G;17:27:16.85;+60:00:50.6;Dra;1.22;0.85;34;13.60;;12.26;11.68;11.69;22.73;Sc;;;;;;;;2MASX J17271691+6000506,IRAS 17266+6003,MCG +10-25-038,PGC 060321,UGC 10871;;; -NGC6382;G;17:27:55.18;+56:52:07.4;Dra;1.16;0.71;95;15.20;;11.27;10.55;10.28;24.03;E;;;;;;;;2MASX J17275520+5652078,MCG +09-29-001,PGC 060342,SDSS J172755.17+565207.4;;; -NGC6383;Dup;17:34:42.54;-32:34:52.9;Sco;;;;;;;;;;;;;;;6374;;;;;; -NGC6384;G;17:32:24.30;+07:03:37.0;Oph;2.45;1.11;20;13.20;;8.40;7.60;7.53;21.72;Sbc;;;;;;;;2MASX J17322430+0703369,IRAS 17299+0705,MCG +01-45-001,PGC 060459,SDSS J173224.27+070337.4,UGC 10891;;; -NGC6385;G;17:28:01.41;+57:31:18.5;Dra;1.14;1.08;70;14.20;;11.26;10.61;10.26;23.22;SBa;;;;;;;;2MASX J17280141+5731188,MCG +10-25-044,PGC 060343,SDSS J172801.40+573118.5,SDSS J172801.41+573118.8,SDSS J172801.42+573118.5,SDSS J172801.42+573118.6,UGC 10877;;; -NGC6386;G;17:28:51.78;+52:43:24.1;Dra;0.97;0.97;75;14.90;;11.73;11.05;10.84;23.91;Sb;;;;;;;;2MASX J17285175+5243245,MCG +09-29-004,PGC 060367;;; -NGC6387;G;17:28:23.83;+57:32:43.4;Dra;0.31;0.15;63;15.00;16.81;;;;21.51;SBb;;;;;;;;2MASX J17282376+5732428,IRAS 17275+5735,PGC 060355,SDSS J172823.82+573243.4,SDSS J172823.83+573243.7,SDSS J172823.84+573243.4,SDSS J172823.84+573243.5;;; -NGC6388;GCl;17:36:17.43;-44:44:08.2;Sco;8.40;;;7.40;;4.57;3.99;3.63;;;;;;;;;;2MASX J17361746-4444083,MWSC 2638;;; -NGC6389;G;17:32:39.77;+16:24:06.4;Her;1.20;0.92;135;13.11;12.39;10.15;9.55;9.28;21.79;Sbc;;;;;;;;2MASX J17323978+1624062,IRAS 17304+1626,MCG +03-45-001,PGC 060466,UGC 10893;;; -NGC6390;G;17:28:28.09;+60:05:39.0;Dra;0.88;0.45;11;14.50;;11.99;11.43;11.23;22.87;SBbc;;;;;;;;2MASX J17282804+6005398,MCG +10-25-047,PGC 060356,SDSS J172828.08+600539.1,SDSS J172828.09+600539.0,SDSS J172828.09+600539.2,UGC 10881;;The 2MASXi position is 9 arcsec south-southwest of the nucleus.; -NGC6391;G;17:28:48.99;+58:51:03.2;Dra;0.75;0.52;87;15.00;;11.70;11.01;10.74;23.18;E;;;;;;;;2MASX J17284891+5851032,MCG +10-25-049,PGC 060358,SDSS J172848.98+585103.1,SDSS J172848.98+585103.2,SDSS J172848.98+585103.4,SDSS J172848.99+585103.2,SDSS J172848.99+585103.3;;; -NGC6392;G;17:43:30.37;-69:47:06.7;Aps;1.94;1.71;60;12.98;;10.24;9.63;9.32;;SABa;;;;;;;;2MASX J17433040-6947066,ESO 070-012,PGC 060753;;; -NGC6393;G;17:30:08.45;+59:31:54.5;Dra;0.43;0.40;126;15.90;;16.21;;;22.90;Sbc;;;;;;;;2MASX J17300849+5931541,MCG +10-25-054,PGC 060405,SDSS J173008.44+593154.8,SDSS J173008.45+593154.5,SDSS J173008.45+593154.6,SDSS J173008.45+593154.8;;"NGC identification is uncertain; often called NGC 6394."; -NGC6394;G;17:30:21.42;+59:38:23.6;Dra;1.14;0.43;40;15.27;;11.87;11.15;10.76;23.43;SBb;;;;;;;;2MASX J17302140+5938235,IRAS 17296+5940,MCG +10-25-055,PGC 060410,SDSS J173021.42+593823.5,SDSS J173021.42+593823.6,SDSS J173021.42+593823.8,SDSS J173021.43+593823.6,SDSS J173021.43+593823.7,UGC 10889;;Misidentified as NGC 6393 by VCV (2006).; -NGC6395;G;17:26:31.27;+71:05:46.6;Dra;2.25;0.73;17;12.80;;11.24;10.88;10.58;22.56;SBc;;;;;;;;2MASX J17263128+7105465,IRAS 17272+7108,MCG +12-16-039,PGC 060291,UGC 10876;;; -NGC6396;OCl;17:37:36.34;-35:01:33.1;Sco;3.30;;;9.41;8.50;;;;;;;;;;;;;MWSC 2644;;; -NGC6397;GCl;17:40:41.36;-53:40:25.3;Ara;15.30;;;7.39;5.17;;;3.29;;;;;;;;;;C 086,MWSC 2662;;; -NGC6398;G;17:42:43.74;-61:41:39.4;Pav;2.44;0.85;161;13.45;;10.42;9.75;9.37;23.72;SBa;;;;;;;;2MASX J17424370-6141395,ESO 139-018,ESO-LV 139-0180,PGC 060735;;; -NGC6399;G;17:31:50.30;+59:36:55.9;Dra;1.21;0.58;13;14.80;;11.24;10.53;10.34;23.70;S0-a;;;;;;;;2MASX J17315029+5936555,MCG +10-25-059,PGC 060442,SDSS J173150.28+593656.0,SDSS J173150.29+593655.9,SDSS J173150.29+593656.0,SDSS J173150.30+593655.7,SDSS J173150.30+593655.8,SDSS J173150.30+593655.9,UGC 10896;;; -NGC6400;OCl;17:40:12.80;-36:56:51.8;Sco;6.00;;;;8.80;;;;;;;;;;;;;MWSC 2660;;; -NGC6401;GCl;17:38:36.93;-23:54:31.6;Oph;4.50;;;11.31;10.71;;;;;;;;;;;;;ESO 520-011,MWSC 2653;;; -NGC6402;GCl;17:37:36.16;-03:14:45.3;Oph;;;;9.55;5.73;;;;;;;;;014;;;;MWSC 2643;;; -NGC6403;G;17:43:23.56;-61:40:55.6;Pav;1.15;0.89;19;14.33;;10.92;10.31;9.98;23.38;S0;;;;;;;;2MASX J17432300-6141175,2MASX J17432356-6140555,ESO 139-019,ESO-LV 139-0190,PGC 060750;;; -NGC6404;OCl;17:39:37.36;-33:14:48.2;Sco;4.20;;;;10.60;;;;;;;;;;;;;MWSC 2658;;; -NGC6405;OCl;17:40:20.75;-32:15:15.0;Sco;15.60;;;4.48;4.20;;;;;;;;;006;;;;MWSC 2661;Butterfly Cluster;; -NGC6406;**;17:38:19.05;+18:49:59.0;Her;;;;;;;;;;;;;;;;;;;;; -NGC6407;G;17:44:57.69;-60:44:23.3;Pav;2.47;1.93;56;12.88;;9.59;8.85;8.66;23.69;S0;;;;;;;;2MASX J17445766-6044232,ESO 139-022,ESO-LV 139-0220,PGC 060796;;; -NGC6408;G;17:38:47.36;+18:52:40.3;Her;1.55;1.26;155;14.00;;10.94;10.16;9.92;23.77;Sa;;;;;;;;2MASX J17384732+1852403,IRAS 17366+1854,MCG +03-45-007,PGC 060637,UGC 10930;;; -NGC6409;G;17:36:35.40;+50:45:57.2;Dra;0.72;0.61;55;14.80;;12.24;11.60;11.23;;Sbc;;;;;;;;2MASX J17363538+5045571,IRAS 17353+5047,PGC 060565;;;Diameters and position angle taken from Simbad. -NGC6410;**;17:35:20.48;+60:47:35.0;Dra;;;;;;;;;;;;;;;;;;;;; -NGC6411;G;17:35:32.85;+60:48:48.2;Dra;1.76;1.15;69;13.20;;10.02;9.36;9.13;22.88;E;;;;;;;;2MASX J17353281+6048481,MCG +10-25-068,PGC 060536,SDSS J173532.84+604848.2,SDSS J173532.85+604848.2,UGC 10916;;"MCG misprints dec as +60d20; corrected in MCG errata."; -NGC6412;G;17:29:37.51;+75:42:15.9;Dra;2.13;1.84;142;12.40;;10.15;9.50;9.40;22.63;SABc;;;;;;;;2MASX J17293752+7542155,IRAS 17313+7544,MCG +13-12-026,PGC 060393,UGC 10897;;; -NGC6413;Other;17:40:40.72;+12:37:26.2;Oph;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC6414;G;17:30:36.86;+74:22:34.1;Dra;1.00;0.47;141;15.60;;11.66;10.90;10.70;24.38;S0-a;;;;;;;;2MASX J17303681+7422340,MCG +12-16-041,PGC 060416,UGC 10906;;; -NGC6415;*Ass;17:44:20.55;-35:04:15.7;Sco;;;;;;;;;;;;;;;;;;;;Milky Way star cloud.; -NGC6416;OCl;17:44:19.99;-32:21:39.6;Sco;6.90;;;;;;;;;;;;;;;;;MWSC 2673;;; -NGC6417;G;17:41:47.82;+23:40:19.9;Her;1.42;1.17;27;14.40;;11.13;10.34;10.09;23.52;SBb;;;;;;;;2MASX J17414781+2340201,IRAS 17397+2341,MCG +04-42-001,PGC 060709,UGC 10945;;; -NGC6418;G;17:38:09.32;+58:42:53.7;Dra;0.65;0.52;171;17.83;16.84;13.77;13.28;12.96;22.59;SBab;;;;;;;;2MASX J17380933+5842537,MCG +10-25-074,PGC 060610,SDSS J173809.28+584253.8,SDSS J173809.30+584253.6,SDSS J173809.30+584253.7,SDSS J173809.32+584253.7;;; -NGC6419;G;17:36:05.90;+68:09:20.8;Dra;0.97;0.25;131;15.50;;11.23;10.51;10.23;23.37;Sa;;;;;;;;2MASX J17360571+6809213,MCG +11-21-012,PGC 060543,SDSS J173605.89+680920.8,UGC 10924;;; -NGC6420;G;17:36:16.30;+68:03:08.5;Dra;1.02;0.56;62;15.50;;12.21;11.36;11.06;24.27;E;;;;;;;;2MASX J17361625+6803083,MCG +11-21-013,PGC 060532,SDSS J173616.29+680308.4;;; -NGC6421;*Ass;17:45:44.21;-33:41:33.5;Sco;;;;;;;;;;;;;;;;;;;;Milky Way star cloud.; -NGC6422;G;17:36:30.01;+68:03:31.0;Dra;1.17;0.93;58;15.10;;11.26;10.62;10.41;24.01;E;;;;;;;;2MASX J17363000+6803312,MCG +11-21-015,PGC 060558,SDSS J173630.00+680330.9;;; -NGC6423;G;17:36:53.33;+68:10:17.3;Dra;0.63;0.59;170;15.60;;12.40;11.83;11.33;23.28;SBb;;;;;;;;2MASX J17365333+6810172,MCG +11-21-016,PGC 060576,SDSS J173653.32+681017.3;;; -NGC6424;G;17:36:12.07;+69:59:20.0;Dra;0.81;0.78;75;14.50;;11.51;10.90;10.60;23.09;E;;;;;;;;2MASX J17361210+6959203,MCG +12-17-001,PGC 060552,SDSS J173612.07+695920.0,UGC 10932;;; -NGC6425;OCl;17:47:01.68;-31:31:45.8;Sco;4.80;;;7.90;7.20;;;;;;;;;;;;;MWSC 2691;;; -NGC6426;GCl;17:44:54.71;+03:10:12.5;Oph;5.70;;;;;;;;;;;;;;;;;MWSC 2676;;; -NGC6427;G;17:43:38.59;+25:29:38.1;Her;1.55;0.52;36;14.60;;10.51;9.77;9.57;24.13;E-S0;;;;;6431;;;2MASX J17433859+2529380,MCG +04-42-003,PGC 060758,UGC 10957;;; -NGC6428;**;17:43:52.81;+25:33:17.2;Her;;;;;;;;;;;;;;;;;;;;; -NGC6429;G;17:44:05.35;+25:21:02.6;Her;1.82;0.70;32;14.30;;10.87;10.18;9.93;23.81;SBa;;;;;;;;2MASX J17440533+2521025,IRAS 17420+2522,MCG +04-42-004,PGC 060770,UGC 10960;;; -NGC6430;G;17:45:14.27;+18:08:20.2;Her;1.68;0.58;96;14.80;;11.38;10.56;10.26;23.96;Sab;;;;;;;;2MASX J17451426+1808199,IRAS 17430+1809,MCG +03-45-019,PGC 060805,UGC 10966;;; -NGC6431;Dup;17:43:38.59;+25:29:38.1;Her;;;;;;;;;;;;;;;6427;;;;;; -NGC6432;Other;17:47:22.41;-24:53:14.9;Sgr;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC6433;G;17:43:56.21;+36:48:00.4;Her;1.91;0.50;162;14.10;;10.90;9.94;9.75;23.23;Sb;;;;;;;;2MASX J17435621+3648005,IRAS 17422+3649,MCG +06-39-015,PGC 060766,UGC 10962;;; -NGC6434;G;17:36:48.82;+72:05:20.3;Dra;2.09;0.86;95;13.20;;10.99;10.31;9.97;22.75;Sbc;;;;;;;;2MASX J17364883+7205202,IRAS 17376+7207,MCG +12-17-002,PGC 060573,UGC 10934;;; -NGC6435;G;17:40:11.08;+62:38:30.3;Dra;0.87;0.58;7;14.90;;11.57;10.89;10.52;23.52;E;;;;;;;;2MASX J17401107+6238306,MCG +10-25-080,PGC 060667,SDSS J174011.08+623830.2,UGC 10947;;; -NGC6436;G;17:41:13.24;+60:26:58.9;Dra;1.04;0.60;168;14.90;;12.11;11.55;11.16;23.31;Sc;;;;;;;;2MASX J17411324+6026592,MCG +10-25-082,PGC 060695,SDSS J174113.23+602658.9,UGC 10951;;; -NGC6437;*Ass;17:48:21.12;-35:21:58.3;Sco;;;;;;;;;;;;;;;;;;;;Milky Way star cloud.; -NGC6438;G;18:22:17.48;-85:24:07.4;Oct;1.76;1.49;131;13.37;11.61;9.25;8.51;8.28;22.11;S0;;;;;;;;2MASX J18221738-8524074,ESO 010-001,ESO-LV 10-0010,PGC 061787;;; -NGC6438A;G;18:22:35.49;-85:24:22.8;Oct;3.44;1.36;48;12.57;;;;;23.17;I;;;;;;;;ESO 010-002,ESO-LV 10-0020,IRAS 18061-8525,PGC 061793;;; -NGC6439;PN;17:48:19.80;-16:28:44.0;Sgr;0.08;;;13.80;12.60;12.62;12.65;11.76;;;;20.20;;;;;HD 161801,UCAC2 25817696;IRAS 17454-1627,PN G011.0+05.8;;Within 10 degrees of the galactic plane.; -NGC6440;GCl;17:48:52.67;-20:21:34.5;Sgr;5.10;;;12.01;10.10;;;;;;;;;;;;;MWSC 2701;;; -NGC6441;GCl;17:50:12.84;-37:03:03.9;Sco;4.80;;;9.26;8.00;;;;;;;;;;;;;MWSC 2713;;; -NGC6442;G;17:46:51.34;+20:45:39.9;Her;1.42;0.97;135;14.50;;10.60;9.92;9.59;23.97;E;;;;;;;;2MASX J17465074+2045440,2MASX J17465132+2045400,MCG +03-45-021,PGC 060844,UGC 10978;;; -NGC6443;G;17:44:33.85;+48:06:50.6;Her;1.13;0.50;127;14.80;;11.43;10.74;10.42;23.25;Sab;;;;;;;;2MASX J17443385+4806507,MCG +08-32-018,PGC 060783,UGC 10967;;; -NGC6444;OCl;17:49:35.18;-34:49:10.8;Sco;6.90;;;;;;;;;;;;;;;;;MWSC 2709;;; -NGC6445;PN;17:49:15.06;-20:00:34.2;Sgr;0.55;;;13.20;11.20;;;;;;;19.04;19.00;;;;HD 161944;ESO 589-009,PN G008.0+03.9;Little Gem;; -NGC6446;G;17:46:07.51;+35:34:09.8;Her;0.58;0.42;29;15.50;;12.45;11.75;11.50;22.91;Sab;;;;;;;;2MASX J17460751+3534100,MCG +06-39-018,PGC 060825;;; -NGC6447;G;17:46:17.23;+35:34:19.1;Her;1.35;0.73;150;13.80;;11.51;10.84;10.57;22.64;SABb;;;;;;;;2MASX J17461724+3534189,IRAS 17445+3535,MCG +06-39-019,PGC 060829,UGC 10975;;; -NGC6448;Other;17:44:20.56;+53:32:25.4;Dra;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6449;G;17:43:46.34;+56:48:14.9;Dra;0.90;0.75;136;14.60;;12.01;11.41;11.11;22.99;Sc;;;;;;;;2MASX J17434635+5648148,IRAS 17429+5649,MCG +09-29-020,PGC 060762,SDSS J174346.33+564814.8,UGC 10965;;; -NGC6450;Other;17:47:32.36;+18:34:30.8;Her;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6451;OCl;17:50:40.64;-30:12:41.8;Sco;7.20;;;;8.20;;;;;;;;;;;;;MWSC 2718;;; -NGC6452;G;17:47:58.53;+20:50:16.1;Her;0.70;0.55;10;15.30;;12.75;12.26;11.87;;;;;;;;;;2MASX J17475841+2050163,PGC 060876;;;Diameters and position angle taken from Simbad. -NGC6453;GCl;17:50:51.71;-34:35:59.6;Sco;5.40;;;10.49;;;;;;;;;;;;;;2MASX J17505167-3435596,MWSC 2722;;; -NGC6454;G;17:44:56.61;+55:42:17.2;Dra;1.41;1.07;180;13.00;13.50;10.96;10.27;10.01;23.98;E;;;;;;;;2MASX J17445666+5542166,MCG +09-29-026,PGC 060795,SDSS J174456.60+554217.0;;; -NGC6455;*Ass;17:51:08.10;-35:20:16.1;Sco;7.80;;;;;;;;;;;;;;;;;MWSC 2725;;NGC identification is not certain.; -NGC6456;G;17:42:31.85;+67:35:32.3;Dra;0.51;0.41;145;15.70;;12.30;11.63;11.48;;E;;;;;;;;2MASX J17423174+6735320,PGC 060729,SDSS J174231.84+673532.3;;;Diameters and position angle taken from Simbad. -NGC6457;G;17:42:52.84;+66:28:33.6;Dra;1.08;0.72;131;14.70;;10.96;10.26;9.97;23.97;E-S0;;;;;;;;2MASX J17425289+6628338,MCG +11-21-021,PGC 060738,SDSS J174252.84+662833.6,UGC 10964;;; -NGC6458;G;17:49:11.01;+20:48:15.4;Her;1.08;0.72;147;14.90;;11.21;10.52;10.31;23.81;S0;;;;;;;;2MASX J17491102+2048157,MCG +03-45-029,PGC 060911,UGC 10994;;; -NGC6459;G;17:45:47.19;+55:46:36.3;Dra;0.86;0.46;75;15.30;;11.98;11.21;10.96;23.73;S0;;;;;;;;2MASX J17454712+5546360,MCG +09-29-029,PGC 060817,SDSS J174547.19+554636.2;;; -NGC6460;G;17:49:30.36;+20:45:49.2;Her;1.72;0.98;154;14.40;;11.24;10.58;10.56;24.10;Sc;;;;;;;;2MASX J17493034+2045497,IRAS 17473+2046,MCG +03-45-031,PGC 060925,UGC 10997;;; -NGC6461;G;17:39:56.51;+74:02:03.2;Dra;0.82;0.47;21;15.60;;12.43;11.61;11.40;23.52;Sab;;;;;;;;2MASX J17395652+7402032,MCG +12-17-004,PGC 060659,UGC 10954;;; -NGC6462;G;17:44:48.86;+61:54:38.1;Dra;0.55;0.52;85;14.70;;12.06;11.35;11.03;22.48;E;;;;;;;;2MASX J17444885+6154378,IRAS 17443+6155,MCG +10-25-085,PGC 060790,SDSS J174448.85+615438.1,SDSS J174448.86+615438.2;;; -NGC6463;G;17:43:34.32;+67:36:12.6;Dra;0.95;0.81;161;15.20;;11.58;10.97;10.64;23.86;E;;;;;;;;2MASX J17433438+6736129,MCG +11-21-022,PGC 060755;;; -NGC6464;G;17:45:47.53;+60:53:50.9;Dra;0.56;0.53;175;15.30;;12.62;11.91;11.49;22.82;SBc;;;;;;;;2MASX J17454760+6053507,IRAS 17452+6054,MCG +10-25-087,PGC 060818,SDSS J174547.52+605350.8;;; -NGC6465;Other;17:52:55.58;-25:23:51.7;Sgr;;;;;;;;;;;;;;;;;;;;Asterism of two Galactic double stars.; -NGC6466;G;17:48:08.10;+51:23:57.2;Dra;0.70;0.41;120;15.00;;11.66;10.95;10.67;;E-S0;;;;;;;;2MASX J17480808+5123570,PGC 060883;;;Diameters and position angle taken from Simbad. -NGC6467;G;17:50:40.16;+17:32:16.0;Her;1.41;0.75;76;14.50;;11.46;10.89;10.58;23.79;Sab;;;;;6468;;;2MASX J17504017+1732163,MCG +03-45-035,PGC 060972,UGC 11004;;HOLM 772B does not exist (it is probably a plate defect).; -NGC6468;Dup;17:50:40.16;+17:32:16.0;Her;;;;;;;;;;;;;;;6467;;;;;; -NGC6469;OCl;17:53:12.13;-22:16:30.4;Sgr;9.00;;;;8.20;;;;;;;;;;;;;MWSC 2735;;; -NGC6470;G;17:44:14.87;+67:37:09.8;Dra;1.08;0.69;157;15.20;;12.07;11.38;11.14;23.73;SBb;;;;;;;;2MASX J17441483+6737100,MCG +11-21-025,PGC 060778,UGC 10974;;Often incorrectly called NGC 6472.; -NGC6471;GPair;17:44:15.60;+67:35:31.0;Dra;1.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC6471 NED01;G;17:44:13.04;+67:35:35.0;Dra;0.93;0.31;172;15.40;;12.85;12.03;11.90;23.15;Sc;;;;;6471W;;;2MASX J17441310+6735350,MCG +11-21-023,PGC 060773,SDSS J174413.04+673535.6,UGC 10973;;; -NGC6471 NED02;G;17:44:18.16;+67:35:27.9;Dra;0.52;0.47;70;16.00;;12.95;12.19;12.10;23.38;E-S0;;;;;6471E;;;2MASX J17441817+6735280,MCG +11-21-024,PGC 060779,UGC 10973 NOTES01;;Component 'b)' in UGC notes.; -NGC6472;G;17:44:03.10;+67:37:49.2;Dra;0.65;0.45;10;;;12.77;12.02;11.92;23.89;;;;;;;;;2MASX J17440309+6737489,PGC 2703230;;; -NGC6473;*;17:47:05.91;+57:18:35.7;Dra;;;;;;;;;;;;;;;;;;;;Identification as NGC 6473 is uncertain.; -NGC6474;G;17:47:05.56;+57:18:04.2;Dra;0.87;0.42;72;15.00;;11.81;11.17;10.95;22.92;Sb;;;;;;;;2MASX J17470549+5718036,MCG +10-25-092,PGC 060850,SDSS J174705.55+571804.2,SDSS J174705.55+571804.4,UGC 10989;;This is not NGC 6373 (which may be a star).; -NGC6475;OCl;17:53:51.18;-34:47:34.2;Sco;22.20;;;3.45;3.30;;;;;;;;;007;;;;MWSC 2739;Ptolemy's Cluster;; -NGC6476;*Ass;17:54:02.01;-29:08:39.0;Sgr;;;;;;;;;;;;;;;;;;ESO 456-008;;Milky Way star cloud.; -NGC6477;G;17:44:30.02;+67:36:38.1;Dra;0.55;0.35;126;;;13.44;12.66;12.50;24.09;;;;;;;;;2MASX J17443006+6736380,PGC 2702901;;; -NGC6478;G;17:48:38.35;+51:09:26.1;Dra;1.45;0.44;35;14.10;;10.71;9.97;9.69;22.61;Sc;;;;;;;;2MASX J17483834+5109260,IRAS 17474+5110,MCG +09-29-032,PGC 060896,UGC 10998;;; -NGC6479;G;17:48:21.59;+54:08:56.4;Dra;0.94;0.83;151;14.50;;11.72;11.08;10.87;23.01;Sc;;;;;;;;2MASX J17482155+5408565,IRAS 17473+5409,PGC 060890,SDSS J174821.58+540856.4,UGC 10996;;; -NGC6480;*Ass;17:54:26.04;-30:27:07.4;Sco;2.70;;;;;;;;;;;;;;;;;MWSC 2746;;Milky Way star cloud.; -NGC6481;Other;17:52:48.91;+04:10:04.2;Oph;3.90;;;;;;;;;;;;;;;;;;;Line of four Galactic stars.; -NGC6482;G;17:51:48.81;+23:04:19.0;Her;2.03;1.71;68;12.35;11.45;9.35;8.61;8.37;22.64;E;;;;;;;;2MASX J17514880+2304190,MCG +04-42-008,PGC 061009,UGC 11009;;; -NGC6483;G;17:59:30.81;-63:40:07.4;Pav;1.83;1.49;117;13.22;;10.13;9.47;9.20;23.18;E;;;;;;;;2MASX J17593083-6340071,ESO 102-020,ESO-LV 102-0200,PGC 061233;;; -NGC6484;G;17:51:46.98;+24:29:00.5;Her;1.74;0.91;77;13.50;;10.58;9.89;9.65;22.97;Sb;;;;;;;;2MASX J17514697+2429001,IRAS 17497+2429,MCG +04-42-007,PGC 061008,UGC 11010;;; -NGC6485;G;17:51:52.74;+31:27:42.4;Her;1.23;1.16;15;14.20;;11.67;10.98;10.74;23.28;Sbc;;;;;;;;2MASX J17515274+3127422,IRAS 17500+3128,MCG +05-42-004,PGC 061013,UGC 11014;;; -NGC6486;G;17:52:35.30;+29:49:04.8;Her;0.61;0.56;70;15.00;;11.68;10.98;10.62;22.97;E;;;;;;;;2MASX J17523529+2949053,MCG +05-42-006,PGC 061033;;; -NGC6487;G;17:52:41.85;+29:50:19.1;Her;1.80;1.57;20;14.00;;10.28;9.54;9.26;23.15;E;;;;;;;;2MASX J17524182+2950193,MCG +05-42-008,PGC 061039,UGC 11022;;; -NGC6488;G;17:49:20.97;+62:13:22.5;Dra;0.65;0.25;82;14.60;;11.49;10.82;10.55;22.83;E;;;;;;;;2MASX J17492094+6213221,MCG +10-25-098,PGC 060918,SDSS J174920.97+621322.5;;; -NGC6489;G;17:50:01.31;+60:05:32.0;Dra;0.51;0.40;32;15.20;;12.24;11.50;11.16;24.47;E-S0;;;;;;;;2MASX J17500138+6005322,MCG +10-25-099,PGC 060928,SDSS J175001.30+600532.0;;; -NGC6490;G;17:54:30.47;+18:22:33.0;Her;1.01;0.78;112;14.70;;10.90;10.17;10.00;23.48;E-S0;;;;;;;;2MASX J17543046+1822333,MCG +03-45-038,PGC 061079,UGC 11033;;; -NGC6491;G;17:50:00.70;+61:31:54.4;Dra;1.25;0.46;37;14.50;;11.29;10.58;10.24;23.26;Sab;;;;;6493A;;;2MASX J17500071+6131542,IRAS 17494+6132,MCG +10-25-103,PGC 060948,PGC 060949,UGC 11008;;; -NGC6492;G;18:02:48.35;-66:25:50.3;Pav;2.38;1.38;79;12.90;;9.66;8.96;8.85;22.56;Sbc;;;;;;;;2MASX J18024831-6625503,ESO 102-022,ESO-LV 102-0220,IRAS 17576-6625,PGC 061315;;; -NGC6493;G;17:50:22.66;+61:33:33.9;Dra;1.07;1.02;25;15.50;;14.51;13.90;13.91;24.29;SABc;;;;;;;;2MASX J17502266+6133334,MCG +10-25-105,PGC 060961,SDSS J175022.66+613333.8,UGC 11011;;; -NGC6494;OCl;17:57:04.77;-18:59:07.2;Sgr;16.80;;;6.03;5.50;;;;;;;;;023;;;;MWSC 2757;;; -NGC6495;G;17:54:50.76;+18:19:36.9;Her;1.44;1.07;75;13.80;;10.42;9.70;9.48;23.50;E;;;;;;;;2MASX J17545074+1819367,MCG +03-45-039,PGC 061091,UGC 11034;;; -NGC6496;GCl;17:59:03.70;-44:15:58.7;CrA;4.62;;;9.96;;;;;;;;;;;;;;MWSC 2764;;; -NGC6497;G;17:51:17.97;+59:28:15.2;Dra;1.45;0.66;110;14.30;;10.95;10.33;10.01;23.27;Sb;;;;;6498;;;2MASX J17511801+5928149,MCG +10-25-109,PGC 060999,SDSS J175117.97+592815.1,UGC 11020;;; -NGC6498;Dup;17:51:17.97;+59:28:15.2;Dra;;;;;;;;;;;;;;;6497;;;;;; -NGC6499;**;17:55:20.01;+18:21:35.1;Her;;;;;;;;;;;;;;;;;;;;; -NGC6500;G;17:55:59.78;+18:20:17.7;Her;2.08;1.65;45;13.43;12.54;10.13;9.42;9.15;23.22;Sab;;;;;;;;2MASX J17555979+1820178,IRAS 17537+1820,MCG +03-46-003,PGC 061123,UGC 11048;;; -NGC6501;G;17:56:03.74;+18:22:23.1;Her;1.73;1.52;15;13.40;;10.08;9.38;9.11;23.02;S0-a;;;;;;;;2MASX J17560372+1822228,MCG +03-46-004,PGC 061128,UGC 11049;;; -NGC6502;G;18:04:13.72;-65:24:35.8;Pav;1.40;1.23;45;13.59;;10.14;9.45;9.20;23.23;E;;;;;;;;2MASX J18041368-6524357,ESO 103-002,ESO-LV 103-0020,PGC 061352;;; -NGC6503;G;17:49:26.43;+70:08:39.7;Dra;5.94;1.98;123;10.95;10.28;8.20;7.52;7.30;22.55;Sc;;;;;;;;2MASX J17492651+7008396,IRAS 17499+7009,MCG +12-17-009,PGC 060921,UGC 11012;;; -NGC6504;G;17:56:05.71;+33:12:30.2;Her;1.94;0.41;95;13.40;;10.21;9.51;9.22;22.86;Sa;;;;;;;;2MASX J17560570+3312300,MCG +06-39-027,PGC 061129,UGC 11053;;; -NGC6505;G;17:51:07.44;+65:31:50.8;Dra;1.15;0.84;149;15.40;;11.29;10.66;10.29;24.33;E;;;;;;;;2MASX J17510740+6531507,MCG +11-22-007,PGC 060995,UGC 11026;;; -NGC6506;OCl;17:59:53.49;-24:41:07.2;Sgr;;;;;;;;;;;;;;;;;;;;; -NGC6507;OCl;17:59:50.79;-17:27:01.0;Sgr;4.80;;;;9.60;;;;;;;;;;;;;MWSC 2770;;; -NGC6508;G;17:49:46.44;+72:01:16.0;Dra;1.29;1.09;23;14.00;;10.72;10.03;9.69;23.52;E;;;;;;;;2MASX J17494650+7201162,MCG +12-17-010,PGC 060938,UGC 11023;;; -NGC6509;G;17:59:25.27;+06:17:13.3;Oph;1.45;1.24;104;13.40;;10.46;9.81;9.73;22.75;SABc;;;;;;;;2MASX J17592526+0617134,IRAS 17569+0617,MCG +01-46-002,PGC 061230,UGC 11075;;; -NGC6510;G;17:54:39.30;+60:49:04.5;Dra;0.83;0.48;15;15.50;;12.24;11.57;11.18;22.39;SBbc;;;;;6511;;;2MASX J17543929+6049043,IRAS 17540+6049,MCG +10-25-114,PGC 061086,UGC 11051;;; -NGC6511;Dup;17:54:39.30;+60:49:04.5;Dra;;;;;;;;;;;;;;;6510;;;;;; -NGC6512;G;17:54:50.31;+62:38:42.3;Dra;0.81;0.66;36;14.80;;11.29;10.59;10.34;23.21;E;;;;;;;;2MASX J17545032+6238422,MCG +10-25-115,PGC 061089;;; -NGC6513;G;17:59:34.53;+24:52:49.9;Her;1.08;0.77;32;14.70;;11.02;10.30;10.03;23.50;S0;;;;;;;;2MASX J17593425+2453128,2MASX J17593454+2452498,MCG +04-42-018,PGC 061235,UGC 11078;;; -NGC6514;Neb;18:02:42.11;-22:58:18.8;Sgr;28.00;28.00;;6.30;8.50;;;;;;;;;020;;;;LBN 27,MWSC 2789;Trifid Nebula;;B-Mag taken from LEDA, V-mag taken from HEASARC's messier table -NGC6515;G;17:57:25.19;+50:43:41.2;Dra;1.53;1.14;17;14.30;;10.82;10.14;9.85;23.97;E;;;;;;;;2MASX J17572518+5043407,MCG +08-33-003,PGC 061167,SDSS J175725.19+504341.1,UGC 11071;;; -NGC6516;G;17:55:16.78;+62:40:11.5;Dra;0.74;0.32;146;15.70;;12.03;11.30;11.04;23.68;S0-a;;;;;;;;2MASX J17551683+6240116,MCG +10-25-118,PGC 061109;;Position in 1995ApJ...449..422H is incorrect.; -NGC6517;GCl;18:01:50.39;-08:57:34.2;Oph;4.80;;;11.08;;7.02;6.21;6.00;;;;;;;;;;2MASX J18015037-0857343,MWSC 2780;;; -NGC6518;G;17:59:43.74;+28:52:00.0;Her;0.80;0.64;53;15.10;;11.23;10.51;10.26;23.29;E;;;;;;;;2MASX J17594376+2851598,MCG +05-42-024,PGC 061238;;; -NGC6519;**;18:03:20.13;-29:48:15.3;Sgr;;;;;;;;;;;;;;;;;;;;; -NGC6520;OCl;18:03:24.14;-27:53:10.0;Sgr;5.40;;;;7.60;;;;;;;;;;;;;MWSC 2790;;; -NGC6521;G;17:55:48.44;+62:36:44.1;Dra;1.55;1.01;157;14.30;;10.54;9.86;9.58;23.76;E;;;;;;;;2MASX J17554844+6236435,MCG +10-25-119,PGC 061121,UGC 11061;;; -NGC6522;GCl;18:03:34.07;-30:02:02.3;Sgr;3.90;;;10.68;9.48;;;;;;;;;;;;;MWSC 2792;;; -NGC6523;Neb;18:03:41.27;-24:22:48.6;Sgr;45.00;30.00;;5.00;5.80;;;;;;;;;008;6533;;;LBN 25;Lagoon Nebula;Nominal position for NGC 6533 is -30 arcmin in error.;B-Mag taken from LEDA, V-mag taken from HEASARC's messier table -NGC6524;G;17:59:14.71;+45:53:13.5;Her;1.63;0.99;156;14.00;;10.70;10.00;9.70;23.65;E-S0;;;;;;;;2MASX J17591469+4553134,IRAS 17578+4553,MCG +08-33-005,PGC 061221,SDSS J175914.73+455314.6,UGC 11079;;; -NGC6525;OCl;18:02:04.75;+11:02:18.0;Oph;5.40;;;;;;;;;;;;;;;;;MWSC 2784;;; -NGC6526;Neb;18:04:06.15;-24:26:30.8;Sgr;40.00;40.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC6527;G;18:01:46.33;+19:43:43.4;Her;1.48;1.13;146;14.90;;10.66;9.86;9.54;24.22;Sa;;;;;;;;2MASX J18014639+1943444,MCG +03-46-009,PGC 061297,UGC 11094;;; -NGC6528;GCl;18:04:49.61;-30:03:20.8;Sgr;3.60;;;12.12;10.65;;;;;;;;;;;;;ESO 456-048,MWSC 2800;;; -NGC6529;*Ass;18:05:28.86;-36:17:43.4;Sgr;;;;;;;;;;;;;;;;;;;;Rich Milky Way star field.; -NGC6530;Cl+N;18:04:31.03;-24:21:29.0;Sgr;6.00;;;4.74;4.60;;;;;;;;;;;;;MWSC 2798;;; -NGC6531;OCl;18:04:13.45;-22:29:24.2;Sgr;6.00;;;;5.90;;;;;;;;;021;;;;MWSC 2796;;;V-mag taken from LEDA -NGC6532;G;17:59:13.95;+56:13:54.4;Dra;1.69;0.66;120;15.00;;12.13;11.43;11.44;23.97;Sc;;;;;;;;2MASX J17591393+5613542,MCG +09-29-045,PGC 061220,UGC 11085;;; -NGC6533;Dup;18:03:41.27;-24:22:48.6;Sgr;;;;;;;;;;;;;;;6523;;;;;; -NGC6534;G;17:56:08.56;+64:17:01.3;Dra;0.93;0.49;17;15.50;;12.63;11.72;11.52;24.16;;;;;;;;;2MASX J17560856+6417009,MCG +11-22-013,PGC 061126;;Identification as NGC 6534 is very uncertain.; -NGC6535;GCl;18:03:50.69;-00:17:48.9;Se2;3.60;;;11.35;9.85;;;;;;;;;;;;;MWSC 2795;;; -NGC6536;G;17:57:16.35;+64:56:17.1;Dra;1.14;0.92;125;14.30;;11.59;10.92;10.64;23.18;SBb;;;;;;;;2MASX J17571633+6456170,IRAS 17571+6456,MCG +11-22-016,PGC 061166,UGC 11077;;; -NGC6537;PN;18:05:13.10;-19:50:34.7;Sgr;0.17;;;12.50;11.60;10.55;10.18;9.17;;;;19.80;18.80;;;;HD 312582,UCAC2 24178895;2MASX J18051311-1950348,ESO 590-001,PN G010.1+00.7;Red Spider Nebula;; -NGC6538;G;17:54:16.61;+73:25:26.2;Dra;0.94;0.52;50;14.10;;12.34;11.74;11.54;22.20;Sbc;;;;;;;;2MASX J17541656+7325262,IRAS 17554+7325,MCG +12-17-012,PGC 061072,UGC 11062;;; -NGC6539;GCl;18:04:49.75;-07:35:09.1;Se2;6.00;;;;;;;;;;;;;;;;;MWSC 2801;;; -NGC6540;GCl;18:06:07.95;-27:45:46.1;Sgr;4.08;;;;;;;;;;;;;;;;;MWSC 2804;;; -NGC6541;GCl;18:08:02.33;-43:42:57.2;CrA;7.50;;;8.06;7.32;;;;;;;;;;;;;C 078,MWSC 2813;;; -NGC6542;G;17:59:38.62;+61:21:33.8;Dra;1.38;0.40;97;14.00;;11.79;11.40;11.04;23.31;S0-a;;;;;;;;2MASX J17593860+6121339,IRAS 17591+6121,MCG +10-25-126,PGC 061239,UGC 11092;;; -NGC6543;PN;17:58:33.39;+66:37:59.5;Dra;0.33;;;9.79;9.01;8.95;9.08;8.34;;;;11.23;11.14;;;;BD +66 1066,HD 164963;2MASX J17583335+6637591,C 006,IRAS 17584+6638,PN G096.4+29.9;Cat's Eye Nebula;Additional radio sources may contribute to the WMAP flux.;Dimensions taken from LEDA -NGC6544;GCl;18:07:20.00;-24:59:54.1;Sgr;6.00;;;11.36;9.90;6.24;5.54;5.37;;;;;;;;;;2MASX J18071996-2459542,MWSC 2810;;; -NGC6545;G;18:12:14.77;-63:46:34.1;Pav;1.11;0.97;151;14.19;;10.90;10.12;9.89;23.31;E;;;;;;;;2MASX J18121473-6346339,ESO 103-006,ESO-LV 103-0060,PGC 061551;;; -NGC6546;OCl;18:07:22.55;-23:17:46.4;Sgr;6.90;;;8.65;8.00;;;;;;;;;;;;;MWSC 2812;;; -NGC6547;G;18:05:10.02;+25:13:57.4;Her;1.63;0.58;134;14.30;;10.44;9.74;9.49;23.94;S0-a;;;;;;;;2MASX J18051001+2513575,MCG +04-43-001,PGC 061378,UGC 11110;;; -NGC6548;G;18:05:49.50;+18:32:16.9;Her;1.22;0.30;52;14.80;;11.26;10.47;10.07;22.93;Sb;;;;;6549;;;2MASX J18054951+1832167,IRAS 18036+1831,MCG +03-46-012,PGC 061399,UGC 11114;;; -NGC6549;Dup;18:05:49.50;+18:32:16.9;Her;;;;;;;;;;;;;;;6548;;;;;; -NGC6550;G;18:05:59.24;+18:35:14.1;Her;2.65;2.37;155;13.10;;9.59;8.89;8.59;23.61;S0;;;;;;;;2MASX J18055923+1835139,MCG +03-46-013,PGC 061404,UGC 11115;;; -NGC6551;Other;18:08:59.66;-29:33:27.6;Sgr;;;;;;;;;;;;;;;;;;;;Nothing in this position. Is NGC 6551 = NGC 6522?; -NGC6552;G;18:00:07.23;+66:36:54.4;Dra;1.06;0.73;103;14.60;;11.44;10.73;10.32;23.16;SBab;;;;;;;;2MASX J18000730+6636543,IRAS 18001+6638,MCG +11-22-018,PGC 061252,UGC 11096;;; -NGC6553;GCl;18:09:17.48;-25:54:28.3;Sgr;5.40;;;9.08;;;;;;;;;;;;;;MWSC 2824;;; -NGC6554;OCl;18:09:23.98;-18:22:43.3;Sgr;8.70;;;;;;;;;;;;;;;;;MWSC 2821;;; -NGC6555;G;18:07:49.17;+17:36:17.6;Her;1.96;1.61;115;12.70;;10.71;10.05;9.84;23.03;SABc;;;;;;;;2MASX J18074916+1736176,IRAS 18056+1735,MCG +03-46-015,PGC 061432,UGC 11121;;HOLM 774B is a clump of stars.; -NGC6556;*Ass;18:09:57.59;-27:31:29.3;Sgr;;;;;;;;;;;;;;;;;;;;; -NGC6557;G;18:21:24.82;-76:34:58.7;Oct;1.38;0.92;77;13.99;;10.28;9.57;9.25;23.35;S0;;;;;;;;2MASX J18212466-7634598,ESO 045-001,PGC 061770;;; -NGC6558;GCl;18:10:18.38;-31:45:48.5;Sgr;5.40;;;12.39;11.29;;;;;;;;;;;;;ESO 456-062,MWSC 2831;;; -NGC6559;Neb;18:09:56.85;-24:06:23.0;Sgr;15.00;10.00;;;;;;;;;;;;;;;;ESO 521-040,LBN 28;;; -NGC6560;G;18:05:13.98;+46:52:53.7;Her;1.12;0.61;62;14.20;;11.93;11.32;10.84;22.78;SABa;;;;;;;;2MASX J18051398+4652535,IRAS 18038+4652,MCG +08-33-019,PGC 061381,UGC 11117;;; -NGC6561;OCl;18:10:30.86;-16:43:32.4;Sgr;6.00;;;;;;;;;;;;;;;;;MWSC 2834;;; -NGC6562;G;18:05:00.91;+56:15:47.2;Dra;1.00;0.95;60;14.70;;11.22;10.51;10.26;23.59;E;;;;;;;;2MASX J18050098+5615465,MCG +09-29-051,PGC 061376;;; -NGC6563;PN;18:12:02.50;-33:52:06.0;Sgr;0.79;;;13.80;11.00;;;;;;;17.33;;;;;HD 166449;ESO 394-033,PN G358.5-07.3;;; -NGC6564;Other;18:09:02.37;+17:23:40.7;Her;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC6565;PN;18:11:52.60;-28:10:42.0;Sgr;0.23;;;13.20;11.60;;;;;;;;18.50;;;;HD 166468,UCAC3 124-398661;ESO 456-070,PN G003.5-04.6;;; -NGC6566;G;18:07:00.67;+52:15:36.4;Dra;0.67;0.60;21;15.50;;11.88;11.18;10.92;23.50;E;;;;;;;;2MASX J18070070+5215363,MCG +09-30-001,PGC 061418;;Star superposed northwest side.; -NGC6567;PN;18:13:45.20;-19:04:33.0;Sgr;0.13;;;11.70;11.00;11.76;11.56;10.30;;;;14.42;14.36;;;;BD -19 18107,HD 166935;ESO 590-008,PN G011.7-00.6;;; -NGC6568;OCl;18:12:44.25;-21:37:40.9;Sgr;7.80;;;;8.60;;;;;;;;;;;;;MWSC 2841;;; -NGC6569;GCl;18:13:38.67;-31:49:39.6;Sgr;4.50;;;10.78;9.47;;;;;;;;;;;;;2MASX J18133867-3149395,ESO 456-077,MWSC 2844;;; -NGC6570;G;18:11:07.30;+14:05:35.1;Oph;1.59;0.86;24;13.20;;10.77;10.13;9.87;22.49;SBm;;;;;;;;2MASX J18110729+1405352,IRAS 18088+1404,MCG +02-46-008,PGC 061512,UGC 11137;;; -NGC6571;G;18:10:49.36;+21:14:18.6;Her;0.79;0.58;50;15.40;;11.58;10.86;10.70;;E;;;;;;;;2MASX J18104931+2114193,MCG +04-43-006,PGC 061504;;Star superposed southeast side of core.;Diameters and position angle taken from Simbad. -NGC6572;PN;18:12:06.21;+06:51:13.4;Oph;0.18;;;9.00;8.10;8.59;8.82;7.99;;;;13.10;;;;;BD +06 3649,HD 166802;2MASX J18120627+0651129,IRAS 18096+0650,PN G034.6+11.8;;; -NGC6573;*Ass;18:14:22.98;-22:10:27.7;Sgr;3.18;;;;;;;;;;;;;;;;;MWSC 2845;;NGC identification is very uncertain.; -NGC6574;G;18:11:51.23;+14:58:54.4;Her;1.57;1.20;160;12.50;;9.50;8.73;8.41;22.30;SABb;;;;;6610;;;2MASX J18115122+1458542,IRAS 18095+1458,MCG +02-46-010,PGC 061536,UGC 11144;;; -NGC6575;G;18:10:57.49;+31:06:58.3;Her;1.50;1.08;64;14.40;;10.52;9.86;9.56;24.04;E;;;;;;;;2MASX J18105749+3106584,MCG +05-43-006,PGC 061506,UGC 11138;;; -NGC6576;G;18:11:48.02;+21:25:41.7;Her;0.76;0.65;139;15.50;;11.94;11.12;10.89;23.82;S0;;;;;;;;2MASX J18114802+2125414,PGC 061530;;; -NGC6577;G;18:12:01.23;+21:27:48.2;Her;1.23;1.06;179;14.70;;10.64;9.95;9.74;23.06;E;;;;;;;;2MASX J18120123+2127486,MCG +04-43-009,PGC 061543,UGC 11148;;; -NGC6578;PN;18:16:16.50;-20:27:03.3;Sgr;0.14;;;13.10;12.90;;;;;;;16.30;15.82;;;;;ESO 590-012,IRAS 18132-2028,PN G010.8-01.8;;; -NGC6579;G;18:12:31.81;+21:25:14.5;Her;1.15;0.78;33;;;;;;23.43;;;;;;;;;MCG +04-43-011,PGC 061562,UGC 11153 NED01;;Component 'a)' in UGC notes.; -NGC6580;G;18:12:33.70;+21:25:34.1;Her;1.39;0.82;98;14.50;;10.52;9.77;9.54;23.12;Sbc;;;;;;;;2MASX J18123372+2125338,MCG +04-43-012,PGC 061566,UGC 11153 NED02;;Component 'c)' in UGC notes.; -NGC6581;G;18:12:18.42;+25:39:44.5;Her;0.60;0.44;5;15.40;;11.43;10.73;10.47;23.10;E;;;;;;1280;;2MASX J18121844+2539443,MCG +04-43-010,PGC 061549;;; -NGC6582;GPair;18:11:03.50;+49:54:38.0;Her;1.40;;;;;;;;;;;;;;;;;UGC 11146;;MCG misidentifies 'NGC 6582' as 'MCG+08-33-026'.;Diameter of the group inferred by the author. -NGC6582 NED01;G;18:11:01.87;+49:54:42.8;Her;0.76;0.76;113;14.80;;;;;23.70;E-S0;;;;;;;;MCG +08-33-029,PGC 061510,UGC 11146 NED01;;; -NGC6582 NED02;G;18:11:05.16;+49:54:33.2;Her;1.45;1.00;146;16.00;;11.11;10.34;10.06;24.35;E;;;;;;;;2MASX J18110514+4954328,MCG +08-33-030,PGC 061513,UGC 11146 NED02;;; -NGC6583;OCl;18:15:48.93;-22:08:15.5;Sgr;3.60;;;;10.00;;;;;;;;;;;;;MWSC 2860;;; -NGC6584;GCl;18:18:37.65;-52:12:54.6;Tel;5.10;;;10.32;8.17;;;;;;;;;;;;;MWSC 2885;;; -NGC6585;G;18:12:21.79;+39:37:58.8;Her;2.01;0.45;50;13.60;;11.14;10.49;10.27;22.86;Sbc;;;;;;;;2MASX J18122179+3937588,IRAS 18107+3937,MCG +07-37-024,PGC 061553,UGC 11159;;; -NGC6586;G;18:13:38.50;+21:05:24.3;Her;1.15;0.59;104;14.60;;11.30;10.64;10.32;23.16;Sab;;;;;;;;2MASX J18133850+2105241,IRAS 18114+2104,MCG +04-43-016,PGC 061600,UGC 11164;;; -NGC6587;G;18:13:50.89;+18:49:30.7;Her;1.82;1.82;20;14.30;;10.13;9.38;9.15;23.80;E-S0;;;;;;;;2MASX J18135090+1849312,MCG +03-46-020,PGC 061607,UGC 11166;;; -NGC6588;Other;18:20:58.86;-63:48:35.9;Pav;5.40;;;;;;;;;;;;;;;;;;;3-4 stars including a close double star 30 seconds preceding nominal pos.; -NGC6589;Neb;18:16:55.37;-19:46:37.5;Sgr;4.00;3.00;;10.50;;;;;;;;;;;;4690;;LBN 43;;"The IC identification as IC 4690 is not certain; this is not IC 1283."; -NGC6590;RfN;18:17:04.99;-19:51:57.8;Sgr;4.00;3.00;;9.80;;;;;;;;;;;6595;4700;;LBN 46;;; -NGC6591;G;18:14:03.90;+21:03:50.0;Her;0.54;0.21;54;;;;;;23.78;;;;;;;;;2MASX J18140377+2103505,PGC 061610;;Two Galactic stars superposed. NGC identification is not certain.; -NGC6592;G;18:09:50.68;+61:25:19.1;Dra;0.81;0.65;116;15.50;;11.72;11.10;10.81;23.61;E;;;;;;;;2MASX J18095070+6125186,MCG +10-26-018,PGC 061477;;; -NGC6593;G;18:14:03.55;+22:17:02.1;Her;0.81;0.67;0;15.30;;11.03;10.32;10.10;;E-S0;;;;;;;;2MASX J18140351+2217015,MCG +04-43-018,PGC 061617;;;Diameters and position angle taken from Simbad. -NGC6594;G;18:10:05.52;+61:08:00.5;Dra;0.86;0.50;93;15.40;;12.10;11.41;11.06;23.44;Sab;;;;;;;;2MASX J18100555+6108006,MCG +10-26-019,PGC 061482;;; -NGC6595;Dup;18:17:04.99;-19:51:57.8;Sgr;;;;;;;;;;;;;;;6590;;;;;; -NGC6596;OCl;18:17:33.73;-16:39:01.6;Sgr;6.60;;;;;;;;;;;;;;;;;MWSC 2874;;; -NGC6597;G;18:11:13.45;+61:10:50.4;Dra;0.89;0.50;87;15.70;;12.07;11.46;11.20;23.99;E-S0;;;;;;;;2MASX J18111349+6110502,MCG +10-26-020,PGC 061520;;; -NGC6598;G;18:08:56.00;+69:04:04.4;Dra;1.18;0.87;35;14.20;;10.95;10.21;9.96;23.18;Sa;;;;;;;;2MASX J18085598+6904042,MCG +12-17-018,PGC 061462,UGC 11139;;; -NGC6599;G;18:15:42.98;+24:54:44.6;Her;1.23;1.14;35;13.71;12.82;10.27;9.56;9.33;22.92;S0;;;;;6600;;;2MASX J18154299+2454448,MCG +04-43-019,PGC 061655,UGC 11178;;Identification as NGC 6600 is not certain.; -NGC6600;Dup;18:15:42.98;+24:54:44.6;Her;;;;;;;;;;;;;;;6599;;;;;; -NGC6601;G;18:11:44.35;+61:27:11.9;Dra;0.79;0.49;45;15.60;;12.05;11.43;11.06;23.83;E-S0;;;;;;;;2MASX J18114437+6127121,MCG +10-26-022,PGC 061533;;; -NGC6602;G;18:16:34.29;+25:02:38.5;Her;0.77;0.57;178;14.60;;10.86;10.11;9.83;22.52;SABb;;;;;;;;2MASX J18163429+2502386,IRAS 18145+2501,MCG +04-43-021,PGC 061674,UGC 11184;;; -NGC6603;OCl;18:18:26.97;-18:24:21.8;Sgr;4.20;;;;11.10;;;;;;;;;;;;;ESO 590-017,MWSC 2883;;Included in the Milky Way starcloud MESSIER 024.; -NGC6604;OCl;18:18:02.96;-12:14:35.2;Se2;9.60;;;7.06;6.50;;;;;;;;;;;;;MWSC 2878;;; -NGC6605;OCl;18:16:21.68;-15:00:54.7;Se2;6.30;;;;6.00;;;;;;;;;;;;;MWSC 2882;;; -NGC6606;G;18:14:41.59;+43:16:07.1;Lyr;0.91;0.71;87;14.40;;11.04;10.28;10.02;22.86;Sa;;;;;;;;2MASX J18144160+4316068,MCG +07-37-025,PGC 061633,UGC 11174;;; -NGC6607;G;18:12:14.74;+61:19:58.5;Dra;0.55;0.48;54;15.00;;13.68;13.16;12.99;23.18;Sbc;;;;;;;;2MASX J18121472+6119581,MCG +10-26-023,PGC 061550;;; -NGC6608;G;18:12:28.88;+61:17:53.4;Dra;0.86;0.19;43;16.00;;13.52;12.75;12.12;23.73;Scd;;;;;;;;2MASX J18122885+6117531,MCG +10-26-024,PGC 061556;;MCG misidentifies this object as NGC 6609.; -NGC6609;G;18:12:33.57;+61:19:54.9;Dra;0.83;0.72;81;15.60;;11.78;11.05;10.74;23.74;E;;;;;;;;2MASX J18123354+6119551,MCG +10-26-025,PGC 061559;;MCG misidentifies this object as NGC 6608.; -NGC6610;Dup;18:11:51.23;+14:58:54.4;Her;;;;;;;;;;;;;;;6574;;;;;; -NGC6611;Neb;18:18:48.17;-13:48:26.0;Se2;120.00;25.00;;6.58;6.00;;;;;;;;;016;;;;LBN 67,MWSC 2886;Eagle Nebula;; -NGC6612;G;18:16:10.85;+36:04:42.8;Lyr;1.02;0.66;170;15.60;;11.93;11.31;11.08;24.14;;;;;;;;;2MASX J18161083+3604430,MCG +06-40-011,PGC 061665;;; -NGC6613;OCl;18:19:58.49;-17:06:07.1;Sgr;6.00;;;7.24;6.90;;;;;;;;;018;;;;MWSC 2892;;; -NGC6614;G;18:25:07.21;-63:14:54.1;Pav;1.64;1.26;69;13.80;;10.15;9.48;9.22;23.59;E-S0;;;;;;;;2MASX J18250719-6314539,ESO 103-018,ESO-LV 103-0180,PGC 061852;;; -NGC6615;G;18:18:33.47;+13:15:54.1;Oph;1.37;0.87;170;14.80;;10.23;9.54;9.25;23.73;S0-a;;;;;;;;2MASX J18183348+1315541,MCG +02-46-013,PGC 061713,UGC 11196;;; -NGC6616;G;18:17:41.08;+22:14:18.4;Her;1.35;0.57;55;15.20;;10.50;9.70;9.40;23.86;Sab;;;;;;;;2MASX J18174109+2214185,MCG +04-43-022,PGC 061693,SDSS J181741.06+221418.1,UGC 11192;;; -NGC6617;G;18:14:02.52;+61:19:10.4;Dra;0.90;0.52;73;15.60;;13.88;13.34;13.06;23.70;Sc;;;;;;;;2MASX J18140251+6119102,MCG +10-26-029,PGC 061613,UGC 11176;;; -NGC6618;Neb;18:20:47.11;-16:10:17.5;Sgr;12.60;;;6.00;7.00;;;;;;;;;017;;;;LBN 60,MWSC 2896;Checkmark Nebula,Lobster Nebula,Swan Nebula,omega Nebula;;B-Mag taken from LEDA, V-mag taken from HEASARC's messier table -NGC6619;G;18:18:55.54;+23:39:20.2;Her;1.38;0.89;104;14.30;;10.10;9.41;9.10;23.75;E;;;;;;;;2MASX J18185554+2339201,MCG +04-43-025,PGC 061721,UGC 11200;;UZC position applies to a superposed star.; -NGC6620;PN;18:22:54.15;-26:49:18.1;Sgr;0.13;;;15.00;12.70;13.63;13.73;12.80;;;;;19.60;;;;UCAC3 127-407067;ESO 522-022,PN G005.8-06.1;;; -NGC6621;G;18:12:55.31;+68:21:48.4;Dra;2.15;0.87;143;13.60;;11.03;10.27;9.87;23.18;Sb;;;;;6621N;;;2MASX J18125527+6821484,IRAS 18131+6820,MCG +11-22-030,PGC 061582,UGC 11175 NED01;;; -NGC6622;G;18:12:59.80;+68:21:14.0;Dra;0.97;0.87;117;16.00;;;;;23.18;Sab;;;;;6621S;;;MCG +11-22-031,PGC 061579,UGC 11175 NED02;;; -NGC6623;GPair;18:19:42.90;+23:42:20.0;Her;1.30;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC6623 NED01;G;18:19:42.82;+23:42:06.4;Her;0.15;0.15;;14.40;;;;;;;;;;;;;;MCG +04-43-027,PGC 061744,UGC 11203 NOTES01;;A star is superposed.; -NGC6623 NED02;G;18:19:42.86;+23:42:34.4;Her;1.35;1.20;140;14.40;;10.16;9.42;9.22;23.84;E;;;;;;;;2MASX J18194285+2342346,MCG +04-43-026,PGC 061739,UGC 11203;;; -NGC6624;GCl;18:23:40.57;-30:21:40.6;Sgr;3.30;;;;;;;;;;;;;;;;;ESO 457-011,MWSC 2906;;; -NGC6625;OCl;18:23:01.97;-12:01:25.5;Sct;6.00;;;;9.00;;;;;;;;;;;;;MWSC 2903;;NGC identification is not certain.; -NGC6626;GCl;18:24:32.89;-24:52:11.4;Sgr;5.10;;;;6.90;;;;;;;;;028;;;;MWSC 2908;;;V-mag taken from LEDA -NGC6627;G;18:22:38.92;+15:41:52.8;Her;1.07;0.96;75;14.50;;10.84;10.11;9.80;23.16;SBb;;;;;;;;2MASX J18223892+1541527,IRAS 18203+1540,MCG +03-47-001,PGC 061792,UGC 11212;;; -NGC6628;G;18:22:21.91;+23:28:42.8;Her;1.52;0.91;89;14.80;;10.39;9.64;9.31;24.16;S0;;;;;;;;2MASX J18222191+2328425,IRAS 18202+2327,MCG +04-43-029,PGC 061790,UGC 11211;;; -NGC6629;PN;18:25:42.46;-23:12:10.4;Sgr;0.26;;;11.60;11.30;10.42;10.15;9.60;;;;13.26;12.93;;;;HD 169460;2MASX J18254245-2312102,ESO 522-026,IRAS 18226-2313,PN G009.4-05.0;;; -NGC6630;G;18:32:35.14;-63:17:35.7;Pav;0.81;0.68;102;14.61;13.97;12.01;11.31;11.09;22.88;E-S0;;;;;;;;2MASX J18323520-6317362,ESO 103-026,ESO-LV 103-0260,IRAS 18278-6319,PGC 062008;;; -NGC6631;OCl;18:27:11.36;-12:01:52.4;Sct;5.70;;;;11.70;;;;;;;;;;;;;MWSC 2916;;; -NGC6632;G;18:25:03.09;+27:32:07.1;Her;2.40;1.16;156;13.20;;9.80;9.25;8.94;23.06;Sbc;;;;;;;;2MASX J18250309+2732073,IRAS 18230+2730,MCG +05-43-018,PGC 061849,UGC 11226;;; -NGC6633;OCl;18:27:15.23;+06:30:29.6;Oph;12.00;;;5.01;4.60;;;;;;;;;;;;;MWSC 2917;;; -NGC6634;Dup;18:31:23.23;-32:20:52.7;Sgr;;;;;;;;;;;;;;;6637;;;;;; -NGC6635;G;18:27:37.11;+14:49:08.6;Her;1.14;1.03;5;14.50;;10.36;9.62;9.33;23.44;S0;;;;;;;;2MASX J18273712+1449085,MCG +02-47-003,PGC 061900,UGC 11239;;; -NGC6636;GPair;18:22:03.50;+66:37:12.8;Dra;2.20;;;;;;;;;;;;;;;;;UGC 11221;;;Diameter of the group inferred by the author. -NGC6636 NED01;G;18:22:02.87;+66:36:59.6;Dra;1.91;0.46;6;14.20;;11.29;10.76;10.55;23.22;Sc;;;;;;;;2MASX J18220220+6636375,2MASX J18220287+6636596,MCG +11-22-046,PGC 061782,UGC 11221 NED01;;; -NGC6636 NED02;G;18:22:05.11;+66:37:19.2;Dra;0.72;0.39;8;16.00;;;;;23.64;Sab;;;;;;;;MCG +11-22-047,PGC 061780,UGC 11221 NED02;;Component 'b)' in UGC notes.; -NGC6637;GCl;18:31:23.23;-32:20:52.7;Sgr;5.70;;;9.32;8.31;;;;;;;;;069;6634;;;MWSC 2936;;; -NGC6638;GCl;18:30:56.25;-25:29:47.1;Sgr;4.20;;;10.81;9.68;;;;;;;;;;;;;MWSC 2933;;; -NGC6639;OCl;18:30:59.30;-13:09:21.0;Sct;6.00;;;;;;;;;;;;;;;;;MWSC 2934;;; -NGC6640;G;18:28:08.27;+34:18:09.6;Lyr;0.83;0.18;146;14.20;;11.31;10.59;10.33;21.63;Sc;;;;;;;;2MASX J18280824+3418096,IRAS 18263+3416,MCG +06-40-018,PGC 061913,UGC 11247;;; -NGC6641;G;18:28:57.37;+22:54:10.8;Her;0.93;0.81;100;14.30;;10.93;10.24;9.97;22.71;Sc;;;;;;;;2MASX J18285738+2254106,IRAS 18268+2252,MCG +04-43-035,PGC 061935,UGC 11250;;; -NGC6642;GCl;18:31:54.22;-23:28:34.1;Sgr;3.90;;;11.30;10.24;;;;;;;;;;;;;ESO 522-032,MWSC 2941;;; -NGC6643;G;18:19:46.41;+74:34:06.1;Dra;3.32;1.63;37;11.80;;9.25;8.56;8.29;22.51;Sc;;;;;;;;2MASX J18194636+7434062,IRAS 18212+7432,MCG +12-17-021,PGC 061742,UGC 11218;;; -NGC6644;PN;18:32:34.73;-25:07:45.7;Sgr;0.04;;;12.20;10.70;11.56;11.60;10.63;;;;16.60;15.60;;;;HD 170839;ESO 522-033,IRAS 18295-2510,PN G008.3-07.3;;; -NGC6645;OCl;18:32:37.90;-16:53:02.0;Sgr;5.40;;;;8.50;;;;;;;;;;;;;MWSC 2946;;; -NGC6646;G;18:29:38.74;+39:51:54.5;Lyr;1.49;1.25;67;13.70;;10.18;9.48;9.20;23.11;Sa;;;;;;;;2MASX J18293874+3951544,MCG +07-38-008,PGC 061944,UGC 11258;;; -NGC6647;OCl;18:32:49.34;-17:13:43.2;Sgr;3.60;;;;8.00;;;;;;;;;;;;;MWSC 2939;;; -NGC6648;Other;18:25:37.80;+64:58:34.2;Dra;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC6649;OCl;18:33:27.96;-10:24:10.1;Sct;5.58;;;10.35;8.90;;;;;;;;;;;;;MWSC 2949;;; -NGC6650;G;18:25:27.99;+68:00:21.0;Dra;0.73;0.66;40;14.80;;11.11;10.42;10.24;;E;;;;;;;;2MASX J18252791+6800208,PGC 061857;;;Diameters and position angle taken from Simbad. -NGC6651;G;18:24:19.71;+71:36:06.9;Dra;1.34;0.71;32;13.70;;11.26;10.58;10.25;22.75;Sbc;;;;;;;;2MASX J18241969+7136067,IRAS 18250+7134,MCG +12-17-022,PGC 061836,UGC 11236;;NGC 6651 is misidentified in CGCG and UGC. NED follows MCG and RC2.; -NGC6652;GCl;18:35:45.75;-32:59:25.1;Sgr;5.10;;;10.64;9.75;;;;;;;;;;;;;MWSC 2960;;; -NGC6653;G;18:44:38.37;-73:15:48.3;Pav;1.64;1.41;56;13.47;;9.97;9.18;8.96;23.31;E;;;;;;;;2MASX J18443832-7315485,ESO 045-013,PGC 062342;;; -NGC6654;G;18:24:07.57;+73:10:59.6;Dra;2.91;2.23;5;12.70;;9.55;8.86;8.59;23.84;S0-a;;;;;;;;2MASX J18240752+7310597,MCG +12-17-023,PGC 061833,UGC 11238;;; -NGC6654A;G;18:39:24.94;+73:34:47.1;Dra;2.11;0.44;59;13.60;;;;;22.86;SBcd;;;;;;;;2MASX J18392710+7334419,IRAS 18406+7331,MCG +12-17-029,PGC 062207,UGC 11332;;; -NGC6655;**;18:34:30.90;-05:55:15.1;Sct;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC6656;GCl;18:36:24.20;-23:54:12.3;Sgr;12.60;;;7.16;6.17;;;;;;;;;022;;;;MWSC 2961;;; -NGC6657;G;18:33:01.46;+34:03:37.7;Lyr;0.77;0.44;135;14.20;;11.17;10.42;10.13;21.87;SBc;;;;;;;;2MASX J18330147+3403376,IRAS 18312+3401,MCG +06-41-003,PGC 062019,UGC 11271;;; -NGC6658;G;18:33:55.65;+22:53:17.8;Her;1.50;0.25;5;15.00;;10.60;9.78;9.51;22.31;S0-a;;;;;;;;2MASX J18335567+2253178,MCG +04-44-002,PGC 062052,UGC 11274;;; -NGC6659;OCl;18:33:59.93;+23:35:41.6;Her;5.40;;;;;;;;;;;;;;;;;MWSC 2952;;; -NGC6660;G;18:34:36.67;+22:54:34.8;Her;1.95;1.13;143;14.10;;9.54;8.81;8.52;23.49;S0-a;;;;;6661;;;2MASX J18343666+2254347,MCG +04-44-003,PGC 062072,UGC 11282;;; -NGC6661;Dup;18:34:36.67;+22:54:34.8;Her;;;;;;;;;;;;;;;6660;;;;;; -NGC6662;G;18:34:11.18;+32:03:52.5;Lyr;1.65;0.51;18;14.90;;11.10;10.35;10.03;23.86;Sab;;;;;;;;2MASX J18341120+3203525,IRAS 18323+3201,MCG +05-44-003,PGC 062059,UGC 11280;;; -NGC6663;G;18:33:33.68;+40:02:56.2;Lyr;0.86;0.74;147;14.80;;12.18;11.55;11.22;23.25;SABc;;;;;;;;2MASX J18333369+4002561,MCG +07-38-011,PGC 062032,UGC 11276;;; -NGC6664;OCl;18:36:33.35;-08:13:14.7;Sct;6.00;;;8.81;7.80;;;;;;;;;;;;;MWSC 2962;;; -NGC6665;G;18:34:30.01;+30:43:14.0;Lyr;0.95;0.47;25;14.60;;11.41;10.70;10.38;22.69;Sab;;;;;;;;2MASX J18343000+3043139,IRAS 18325+3040,MCG +05-44-004,PGC 062065;;; -NGC6666;Other;18:34:44.93;+33:35:15.5;Lyr;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6667;G;18:30:39.79;+67:59:13.3;Dra;1.88;1.05;99;13.70;;10.35;9.67;9.30;23.33;SABa;;;;;6668,6678;;;2MASX J18303981+6759133,IRAS 18308+6756,MCG +11-22-053,PGC 061972,UGC 11269;;; -NGC6668;Dup;18:30:39.79;+67:59:13.3;Dra;;;;;;;;;;;;;;;6667;;;;;; -NGC6669;Other;18:37:15.09;+22:11:44.6;Her;;;;;;;;;;;;;;;;;;;;Six Galactic stars.; -NGC6670;GTrpl;18:33:35.45;+59:53:19.7;Dra;1.20;;;;;;;;;;;;;;;;;MCG +10-26-044,UGC 11284;;;Diameter of the group inferred by the author. -NGC6670A;G;18:33:37.72;+59:53:22.8;Dra;0.68;0.32;116;15.26;;12.49;11.80;11.33;23.45;;;;;;6670N;;;2MASX J18333768+5953227,MCG +10-26-044 NED01,PGC 062033,UGC 11284 NED01;;;B-Mag taken from LEDA -NGC6670B;G;18:33:34.09;+59:53:17.6;Dra;0.78;0.25;69;14.93;;11.93;11.15;10.63;23.27;Sc;;;;;6670W;;;2MASX J18333409+5953177,MCG +10-26-044 NED02,PGC200358,UGC 11284 NED02;;;B-Mag taken from LEDA -NGC6670 NED03;G;18:33:39.03;+59:53:17.3;Dra;;;;;;;;;;;;;;;6670E;;;PGC 200359,UGC 11284 NED03;;;Called 'UGC 11284 NED03' in NED -NGC6671;G;18:37:26.16;+26:25:01.9;Lyr;1.39;1.39;5;13.80;;10.23;9.49;9.22;23.18;Sb;;;;;;;;2MASX J18372616+2625018,IRAS 18354+2622,MCG +04-44-006,PGC 062148,UGC 11299;;; -NGC6672;**;18:36:14.39;+42:56:51.5;Lyr;;;;;;;;;;;;;;;;;;;;; -NGC6673;G;18:45:06.32;-62:17:50.0;Pav;2.60;1.44;27;12.69;;9.19;8.47;8.22;23.43;E;;;;;;;;2MASX J18450633-6217502,ESO 140-044,ESO-LV 140-0440,PGC 062351;;; -NGC6674;G;18:38:33.87;+25:22:30.5;Her;4.01;2.04;144;13.70;;9.95;9.15;9.03;24.18;Sb;;;;;;;;2MASX J18383388+2522303,IRAS 18365+2519,MCG +04-44-007,PGC 062178,UGC 11308;;; -NGC6675;G;18:37:26.48;+40:03:27.8;Lyr;1.31;0.94;131;13.30;;10.46;9.75;9.51;22.52;Sbc;;;;;;;;2MASX J18372647+4003277,IRAS 18357+4000,MCG +07-38-013,PGC 062149,UGC 11305;;; -NGC6676;G;18:33:09.96;+66:57:32.6;Dra;1.50;0.37;141;15.30;;11.78;11.00;10.75;23.68;Sbc;;;;;;;;2MASX J18331000+6657324,IRAS 18331+6655,MCG +11-22-054,PGC 062021,UGC 11286;;; -NGC6677;G;18:33:36.13;+67:06:38.7;Dra;0.84;0.35;103;13.60;;;;;21.53;Sbc;;;;;;;;2MASX J18333612+6706384,MCG +11-22-057,PGC 062035,UGC 11290;;May be a resolved component of WN B1833+6704.; -NGC6678;Dup;18:30:39.79;+67:59:13.3;Dra;;;;;;;;;;;;;;;6667;;;;;; -NGC6679;G;18:33:30.50;+67:08:14.3;Dra;0.60;0.35;99;;;11.79;11.06;10.88;;E;;;;;;4763;;2MASX J18333046+6708144,MCG +11-22-055,PGC 062026,UGC 11288 NED01;;May be a resolved component of WN B1833+6704.; -NGC6680;G;18:39:43.97;+22:18:59.1;Her;0.63;0.41;60;15.40;;12.20;11.51;11.13;23.15;;;;;;;;;2MASX J18394397+2218592,IRAS 18375+2216,PGC 062210;;; -NGC6681;GCl;18:43:12.64;-32:17:30.8;Sgr;6.60;;;9.76;9.06;;;;;;;;;070;;;;MWSC 2981;;; -NGC6682;OCl;18:39:37.36;-04:48:49.3;Sct;4.50;;;;;;;;;;;;;;;;;MWSC 2968;;; -NGC6683;OCl;18:42:13.97;-06:12:44.1;Sct;3.00;;;9.93;9.40;;;;;;;;;;;;;MWSC 2977;;; -NGC6684;G;18:48:57.88;-65:10:24.4;Pav;4.19;2.96;29;11.34;10.45;8.06;7.14;7.05;23.15;S0;;;;;;;;2MASX J18485789-6510244,ESO 104-016,ESO-LV 104-0160,PGC 062453;;; -NGC6684A;G;18:52:22.81;-64:49:53.3;Pav;1.95;1.34;140;13.21;;;;;23.26;IB;;;;;;;;ESO 104-019,ESO-LV 104-0190,PGC 062517;;; -NGC6685;G;18:39:58.64;+39:58:54.4;Lyr;0.95;0.70;38;14.70;;11.17;10.45;10.27;23.34;E-S0;;;;;;;;2MASX J18395865+3958541,MCG +07-38-015,PGC 062220,SDSS J183958.62+395854.5,UGC 11317;;; -NGC6686;G;18:40:07.02;+40:08:15.5;Lyr;0.63;0.56;153;14.90;;11.55;10.87;10.65;23.04;E;;;;;;;;2MASX J18400701+4008151,MCG +07-38-017,PGC 062224,SDSS J184007.01+400815.4;;; -NGC6687;G;18:37:22.11;+59:38:34.7;Dra;1.25;0.94;46;14.90;;11.99;11.35;10.92;23.92;Scd;;;;;;;;2MASX J18372211+5938348,MCG +10-26-046,PGC 062144,UGC 11309;;; -NGC6688;G;18:40:40.13;+36:17:22.7;Lyr;1.64;1.59;40;13.90;;10.04;9.29;9.05;23.66;S0-a;;;;;;;;2MASX J18404012+3617226,MCG +06-41-015,PGC 062242,UGC 11324;;; -NGC6689;G;18:34:50.25;+70:31:26.1;Dra;3.29;0.91;171;12.60;;10.79;10.07;10.14;23.29;SABc;;;;;6690;;;2MASX J18345024+7031259,IRAS 18354+7028,MCG +12-17-026,PGC 062077,UGC 11300;;; -NGC6690;Dup;18:34:50.25;+70:31:26.1;Dra;;;;;;;;;;;;;;;6689;;;;;; -NGC6691;G;18:39:12.25;+55:38:30.5;Dra;1.47;1.37;35;14.10;;11.06;10.42;10.07;23.09;Sbc;;;;;;;;2MASX J18391226+5538305,IRAS 18382+5535,MCG +09-30-031,PGC 062202,UGC 11318;;; -NGC6692;GPair;18:41:41.50;+34:50:37.0;Lyr;1.05;0.55;119;14.30;;10.81;10.09;9.82;23.43;E-S0;;;;;;;;2MASX J18414185+3450377,MCG +06-41-018,PGC 062268,UGC 11330;;; -NGC6693;Other;18:41:32.43;+36:54:57.0;Lyr;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6694;OCl;18:45:18.66;-09:23:01.0;Sct;6.00;;;8.00;8.87;;;;;;;;;026;;;;MWSC 2987;;; -NGC6695;G;18:42:42.74;+40:22:00.8;Lyr;1.21;0.67;13;14.37;13.49;11.38;10.65;10.37;23.12;SBb;;;;;;;;2MASX J18424272+4022006,IRAS 18410+4018,MCG +07-38-018,PGC 062296,UGC 11340;;; -NGC6696;G;18:40:05.04;+59:20:02.3;Dra;0.91;0.23;1;16.00;;12.45;11.69;11.44;24.54;;;;;;;;;2MASX J18400502+5920022,MCG +10-26-047,PGC 062215;;; -NGC6697;G;18:45:14.96;+25:30:45.3;Her;1.19;0.95;65;14.50;;10.40;9.68;9.44;23.70;E;;;;;;;;2MASX J18451494+2530451,MCG +04-44-014,PGC 062354,UGC 11349;;; -NGC6698;OCl;18:48:05.01;-25:28:37.8;Sgr;4.98;;;;;;;;;;;;;;;;;MWSC 2995;;"NGC ident. uncertain; nominal position for NGC 6698 is 25 arcmin south."; -NGC6699;G;18:52:02.04;-57:19:14.7;Pav;1.74;1.71;95;12.86;12.00;9.86;9.18;8.89;22.74;SABb;;;;;;;;2MASX J18520202-5719149,ESO 183-021,ESO-LV 183-0210,IRAS 18477-5722,PGC 062512;;; -NGC6700;G;18:46:04.39;+32:16:46.6;Lyr;1.52;1.01;114;14.20;;10.73;10.02;9.80;23.42;SBc;;;;;;;;2MASX J18460440+3216465,IRAS 18441+3213,MCG +05-44-010,PGC 062376,UGC 11351;;; -NGC6701;G;18:43:12.46;+60:39:12.0;Dra;1.42;1.36;120;12.90;;10.29;9.61;9.30;22.54;Sa;;;;;;;;2MASX J18431242+6039121,IRAS 18425+6036,MCG +10-26-050,PGC 062314,UGC 11348;;; -NGC6702;G;18:46:57.58;+45:42:20.4;Lyr;1.64;1.42;58;14.73;13.05;10.16;9.41;9.18;23.19;E;;;;;;;;2MASX J18465757+4542205,MCG +08-34-019,PGC 062395,UGC 11354;;; -NGC6703;G;18:47:18.83;+45:33:02.3;Lyr;2.43;2.38;85;12.29;11.34;9.17;8.51;8.25;23.07;E-S0;;;;;;;;2MASX J18471884+4533023,MCG +08-34-020,PGC 062409,UGC 11356;;; -NGC6704;OCl;18:50:45.77;-05:12:19.5;Sct;3.30;;;10.00;9.20;;;;;;;;;;;;;MWSC 3007;;; -NGC6705;OCl;18:51:05.99;-06:16:12.1;Sct;9.00;;;6.32;5.80;;;;;;;;;011;;;;MWSC 3008;Amas de l'Ecu de Sobieski,Wild Duck Cluster;; -NGC6706;G;18:56:51.04;-63:09:58.4;Pav;1.70;0.77;124;13.88;;10.62;9.91;9.67;23.87;E-S0;;;;;;;;2MASX J18565104-6309582,ESO 104-024,ESO-LV 104-0240,PGC 062596;;; -NGC6707;G;18:55:22.06;-53:49:06.4;Tel;2.62;1.05;143;13.25;13.64;10.55;9.94;9.65;23.38;SBc;;;;;;;;2MASX J18552204-5349065,ESO 183-025,ESO-LV 183-0250,IRAS 18512-5352,PGC 062563;;Confused HIPASS source; -NGC6708;G;18:55:35.64;-53:43:24.4;Tel;1.16;0.86;163;13.36;12.93;10.93;10.32;10.04;22.26;Sb;;;;;;;;2MASX J18553565-5343242,ESO 183-027,ESO-LV 183-0270,IRAS 18515-5347,PGC 062569;;; -NGC6709;OCl;18:51:18.94;+10:19:07.5;Aql;8.70;;;7.18;6.70;;;;;;;;;;;;;MWSC 3009;;; -NGC6710;G;18:50:34.15;+26:50:18.2;Lyr;1.68;0.93;38;14.60;;10.40;9.65;9.35;23.92;S0-a;;;;;;;;2MASX J18503415+2650180,MCG +04-44-019,PGC 062482,UGC 11364;;; -NGC6711;G;18:49:00.88;+47:39:29.2;Dra;1.03;0.94;70;13.98;13.27;11.16;10.59;10.02;22.45;Sbc;;;;;;;;2MASX J18490084+4739293,IRAS 18476+4735,MCG +08-34-025,PGC 062456,UGC 11361;;; -NGC6712;GCl;18:53:04.89;-08:42:19.7;Sct;5.70;;;9.85;8.69;;;;;;;;;;;;;MWSC 3014;;; -NGC6713;G;18:50:44.56;+33:57:35.2;Lyr;0.48;0.44;110;14.20;;12.37;11.74;11.55;21.37;;;;;;;;;2MASX J18504456+3357353,IRAS 18489+3353,PGC 062487,UGC 11365;;; -NGC6714;Other;18:45:49.78;+66:43:31.0;Dra;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6715;GCl;18:55:03.27;-30:28:42.6;Sgr;5.10;;;;7.70;;;;;;;;;054;;;;MWSC 3023;;Likely associated with the Sagittarius Dwarf Spheroidal.;V-mag taken from LEDA -NGC6716;OCl;18:54:34.37;-19:54:03.9;Sgr;7.20;;;7.70;7.50;;;;;;;;;;;;;MWSC 3020;;; -NGC6717;GCl;18:55:06.04;-22:42:05.8;Sgr;3.90;;;11.29;10.35;;;;;;;;;;;;;ESO 523-014,MWSC 3024;;; -NGC6718;G;19:01:28.63;-66:06:36.7;Pav;1.48;0.74;171;14.16;;10.94;10.04;9.86;23.23;SBb;;;;;;;;2MASX J19012865-6606366,ESO 104-029,ESO-LV 104-0290,PGC 062688;;; -NGC6719;G;19:03:07.49;-68:35:18.1;Pav;1.66;0.84;109;13.49;;11.36;10.90;10.55;22.74;SBc;;;;;;;;2MASX J19030748-6835181,ESO 072-008,ESO-LV 72-0080,IRAS 18578-6839,PGC 062710;;; -NGC6720;PN;18:53:35.01;+33:01:42.9;Lyr;1.27;;;9.70;8.80;16.40;;;;;;15.03;15.29;057;;;HD 175353;IRAS 18517+3257,PN G063.1+13.9;Ring Nebula;; -NGC6721;G;19:00:50.81;-57:45:34.0;Pav;1.90;1.58;155;13.23;12.04;9.90;9.18;8.89;23.33;E;;;;;;;;2MASX J19005081-5745337,ESO 141-019,ESO-LV 141-0190,PGC 062680;;; -NGC6722;G;19:03:40.37;-64:53:40.1;Pav;2.93;0.51;164;13.56;;9.96;9.25;8.91;23.56;Sb;;;;;;;;2MASX J19034037-6453401,ESO 104-033,ESO-LV 104-0330,PGC 062722;;; -NGC6723;GCl;18:59:33.15;-36:37:53.3;Sgr;9.30;;;;;;;;;;;;;;;;;MWSC 3033;;; -NGC6724;OCl;18:56:46.88;+10:25:42.8;Aql;3.18;;;;;;;;;;;;;;;;;MWSC 3029;;NGC identification is not certain.; -NGC6725;G;19:01:56.62;-53:51:47.1;Tel;2.65;0.52;40;13.41;;9.98;9.28;9.03;24.08;S0;;;;;;;;2MASX J19015663-5351471,ESO 183-036,ESO-LV 183-0360,PGC 062692;;; -NGC6726;RfN;19:01:39.30;-36:53:28.7;CrA;9.00;7.00;;;;;;;;;;;;;;;;IRAS 18583-3657;;;Dimensions taken from LEDA -NGC6727;RfN;19:01:42.27;-36:52:34.5;CrA;80.00;80.00;;;;;;;;;;;;;;;;IRAS 18583-3657;;;Dimensions taken from LEDA -NGC6728;OCl;18:58:45.04;-08:57:57.6;Aql;4.50;;;;;;;;;;;;;;;;;MWSC 3032;;NGC identification is not certain.; -NGC6729;Neb;19:01:55.40;-36:57:27.5;CrA;25.00;20.00;;;;;;;;;;;;;;;;C 068,IRAS 18585-3701;;;Dimensions taken from LEDA -NGC6730;G;19:07:33.65;-68:54:46.1;Pav;2.20;1.83;31;13.07;;9.97;9.27;8.99;23.62;E;;;;;;;;2MASX J19073369-6854462,ESO 072-009,ESO-LV 72-0090,PGC 062796;;; -NGC6731;**;18:57:13.47;+43:04:36.4;Lyr;;;;;;;;;;;;;;;;;;;;; -NGC6732;G;18:56:24.02;+52:22:39.4;Dra;0.94;0.68;103;14.40;;10.93;10.25;9.94;23.18;E;;;;;;;;2MASX J18562403+5222394,MCG +09-31-011,PGC 062586,UGC 11381;;; -NGC6733;G;19:06:10.63;-62:11:48.9;Pav;1.96;1.39;109;13.41;;10.20;9.51;9.27;23.63;E-S0;;;;;;;;2MASX J19061060-6211491,ESO 141-025,ESO-LV 141-0250,PGC 062770;;; -NGC6734;G;19:07:14.33;-65:27:42.7;Pav;1.38;0.90;14;13.75;;10.62;9.89;9.63;23.20;E-S0;;;;;;;;2MASX J19071434-6527428,ESO 104-036,ESO-LV 104-0360,PGC 062786;;; -NGC6735;OCl;19:00:37.36;-00:28:31.4;Aql;5.10;;;;;;;;;;;;;;;;;MWSC 3034;;; -NGC6736;G;19:07:29.25;-65:25:43.0;Pav;1.11;0.88;67;14.31;;11.35;10.80;10.45;23.41;E;;;;;;;;2MASX J19072926-6525427,ESO 104-037,ESO-LV 104-0370,PGC 062792;;; -NGC6737;OCl;19:02:17.47;-18:32:49.1;Sgr;6.60;;;;;;;;;;;;;;;;;MWSC 3042;;; -NGC6738;*Ass;19:01:21.56;+11:36:56.2;Aql;5.40;;;;8.30;;;;;;;;;;;;;MWSC 3035;;Not a physical cluster. See Boeche et al (2003A&A...406..893B).; -NGC6739;G;19:07:48.76;-61:22:05.2;Pav;2.65;0.89;173;13.09;;9.80;9.10;8.87;23.90;S0;;;;;;;;2MASX J19074878-6122051,ESO 141-028,ESO-LV 141-0280,PGC 062799;;; -NGC6740;G;19:00:50.51;+28:46:16.4;Lyr;1.09;0.76;31;15.50;;11.33;10.62;10.23;23.65;Sc;;;;;;;;2MASX J19005048+2846164,IRAS 18587+2841,MCG +05-45-001,PGC 062675,UGC 11388;;; -NGC6741;PN;19:02:37.00;-00:26:57.8;Aql;0.13;;;10.80;11.50;12.54;12.48;11.19;;;;20.30;;;;;BD-00 3630,HD 176946;IRAS 19000-0031,PN G033.8-02.6;Phantom Streak Nebula;; -NGC6742;PN;18:59:19.90;+48:27:55.0;Dra;0.45;;;15.00;13.40;;;;;;;;;;;;;PN G078.5+18.7;;; -NGC6743;OCl;19:01:20.67;+29:16:38.9;Lyr;6.90;;;8.20;;;;;;;;;;;;;;MWSC 3036;;; -NGC6744;G;19:09:46.10;-63:51:27.1;Pav;15.67;9.75;15;9.28;8.25;6.73;6.20;5.94;23.47;Sbc;;;;;;;;2MASX J19094609-6351271,C 101,ESO 104-042,ESO-LV 104-0420,IRAS 19051-6357,PGC 062836;;Extended HIPASS source; -NGC6744A;G;19:08:43.76;-63:43:49.8;Pav;1.64;0.60;106;15.15;;;;;24.07;IB;;;;;;;;ESO 104-038,ESO-LV 104-0380,PGC 062815;;; -NGC6745;GTrpl;19:01:41.70;+40:45:11.0;Lyr;2.30;;;;;;;;;;;;;;;;;UGC 11391;;;Diameter of the group inferred by the author. -NGC6745 NED01;G;19:01:41.44;+40:44:52.3;Lyr;0.95;0.46;32;13.30;;11.34;10.66;10.29;22.95;;;;;;;;;IRAS 19000+4040,PGC 062691,UGC 11391 NED01;;; -NGC6745 NED02;G;19:01:41.73;+40:45:35.9;Lyr;0.69;0.22;174;16.34;;14.51;14.55;13.96;24.87;;;;;;;;;2MASX J19014170+4045361,PGC 200361,UGC 11391 NED02;;;B-Mag taken from LEDA -NGC6745 NED03;G;19:01:41.98;+40:45:04.9;Lyr;;;;;;;;;;;;;;;;;;PGC 200362,UGC 11391 NED03;;; -NGC6746;G;19:10:22.01;-61:58:12.6;Pav;1.56;1.09;170;13.69;;;;;23.50;E;;;;;;;;ESO 141-029,ESO-LV 141-0290,PGC 062852;;; -NGC6747;G;18:55:21.65;+72:46:17.5;Dra;0.65;0.50;126;15.00;;11.69;10.82;10.66;23.10;E;;;;;;;;2MASX J18552182+7246171,PGC 062564;;; -NGC6748;Other;19:03:50.05;+21:36:32.1;Vul;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6749;GCl;19:05:15.60;+01:54:02.2;Aql;5.10;;;;12.40;;;;;;;;;;;;;MWSC 3046;;; -NGC6750;G;19:00:36.11;+59:10:00.3;Dra;1.08;0.69;2;13.70;;11.18;10.43;10.22;22.41;Sc;;;;;;;;2MASX J19003607+5910001,IRAS 18598+5905,MCG +10-27-006,PGC 062671,UGC 11389;;; -NGC6751;PN;19:05:55.55;-05:59:32.3;Aql;0.34;;;12.50;11.90;11.94;11.75;10.83;;;;15.78;15.45;;;;HD 177656,UCAC2 29903231;2MASX J19055556-0559327,IRAS 19032-0604,PN G029.2-05.9;;; -NGC6752;GCl;19:10:51.78;-59:58:54.7;Pav;13.20;;;6.96;6.28;;;;;;;;;;6777;;;C 093,MWSC 3062;;Identity as NGC 6777 is uncertain.; -NGC6753;G;19:11:23.64;-57:02:58.4;Pav;2.97;2.60;25;11.84;11.04;8.50;7.80;7.52;22.92;Sb;;;;;;;;2MASX J19112363-5702584,ESO 184-022,ESO-LV 184-0220,IRAS 19071-5707,PGC 062870;;; -NGC6754;G;19:11:25.72;-50:38:30.5;Tel;2.02;1.08;77;12.86;;9.99;9.25;8.86;22.71;Sb;;;;;;;;2MASX J19112359-5038309,2MASX J19112575-5038319,ESO 231-025,ESO-LV 231-0250,IRAS 19075-5043,PGC 062871;;; -NGC6755;OCl;19:07:49.05;+04:15:59.1;Aql;6.00;;;8.60;7.50;;;;;;;;;;;;;MWSC 3051;;; -NGC6756;OCl;19:08:42.57;+04:42:20.8;Aql;3.60;;;;10.60;;;;;;;;;;;;;MWSC 3052;;; -NGC6757;G;19:05:03.38;+55:42:54.6;Dra;1.71;1.15;92;14.00;;;;;23.67;S0-a;;;;;;;;2MASX J19050335+5542544,MCG +09-31-019,PGC 062752,UGC 11401;;; -NGC6758;G;19:13:52.34;-56:18:35.8;Tel;2.75;2.14;111;12.53;11.56;9.31;8.57;8.35;23.66;E;;;;;;;;2MASX J19135231-5618356,ESO 184-037,ESO-LV 184-0370,PGC 062935;;; -NGC6759;G;19:06:56.84;+50:20:39.2;Dra;0.97;0.67;40;15.20;;11.21;10.49;10.25;23.62;Sa;;;;;;;;2MASX J19065686+5020387,2MASX J19065707+5020524,MCG +08-35-002,PGC 062779;;; -NGC6760;GCl;19:11:12.06;+01:01:49.7;Aql;5.40;;;11.37;9.78;;;;;;;;;;;;;MWSC 3064;;; -NGC6761;G;19:15:04.80;-50:39:24.6;Tel;1.63;1.42;22;13.81;13.67;10.79;10.11;9.79;24.00;SBab;;;;;;;;2MASX J19150481-5039246,ESO 231-028,ESO-LV 231-0280,PGC 062957;;; -NGC6762;G;19:05:37.08;+63:56:02.5;Dra;1.55;0.34;119;14.20;;11.16;10.38;10.21;23.47;S0-a;;;;;6763;;;2MASX J19053708+6356023,PGC 062757,UGC 11405;;UGC misprints dec as +63d68'. UGC galactic coordinates are correct.; -NGC6763;Dup;19:05:37.08;+63:56:02.5;Dra;;;;;;;;;;;;;;;6762;;;;;; -NGC6764;G;19:08:16.37;+50:55:59.6;Cyg;2.49;1.22;64;15.00;14.32;10.56;9.87;9.35;22.97;SBbc;;;;;;;;2MASX J19081634+5055591,IRAS 19070+5051,MCG +08-35-003,PGC 062806,UGC 11407;;; -NGC6765;PN;19:11:06.50;+30:32:44.0;Lyr;0.67;;;13.10;12.90;;;;;;;;16.00;;;;;IRAS 19091+3027,PN G062.4+09.5;;; -NGC6766;Other;19:10:03.07;+46:19:58.5;Lyr;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC6767;**;19:11:33.91;+37:43:31.6;Lyr;;;;;;;;;;;;;;;;;;;;; -NGC6768;G;19:16:32.60;-40:12:33.0;CrA;1.26;1.00;36;13.50;;9.83;9.11;8.82;23.06;E;;;;;;;;2MASX J19163258-4012332,ESO 337-018,MCG -07-39-010,PGC 062997;;; -NGC6769;G;19:18:22.68;-60:30:03.9;Pav;2.86;2.19;120;12.33;11.75;9.43;8.75;8.49;23.40;SABb;;;;;;;;2MASX J19182267-6030039,ESO 141-048,ESO-LV 141-0480,PGC 063042;;; -NGC6770;G;19:18:37.32;-60:29:47.3;Pav;2.39;1.72;33;12.44;11.94;9.75;9.12;8.87;23.14;Sb;;;;;;;;2MASX J19183732-6029472,ESO 141-049,ESO-LV 141-0490,PGC 063048;;Confused HIPASS source; -NGC6771;G;19:18:39.51;-60:32:45.6;Pav;2.38;0.54;121;13.41;12.52;9.98;9.28;9.00;24.06;S0-a;;;;;;;;2MASX J19183951-6032456,ESO 141-050,ESO-LV 141-0500,PGC 063049;;; -NGC6772;PN;19:14:36.30;-02:42:24.5;Aql;1.07;;;14.20;12.70;;;;;;;19.02;18.68;;;;;PN G033.1-06.3;;; -NGC6773;OCl;19:15:08.45;+04:51:23.6;Aql;;;;;;;;;;;;;;;;;;;;; -NGC6774;OCl;19:16:16.30;-16:15:38.5;Sgr;30.00;;;;;;;;;;;;;;;;;MWSC 3078;;; -NGC6775;OCl;19:16:42.86;-00:56:00.1;Aql;4.80;;;;;;;;;;;;;;;;;MWSC 3079;;; -NGC6776;G;19:25:19.15;-63:51:36.6;Pav;2.00;1.62;14;13.19;11.99;9.97;9.40;9.04;23.41;E;;;;;;;;2MASX J19251913-6351366,ESO 104-053,ESO-LV 104-0530,PGC 063185;;; -NGC6776A;G;19:25:05.38;-63:41:00.4;Pav;1.44;0.36;83;14.85;;11.88;11.04;11.11;23.25;SBc;;;;;;;;2MASX J19250536-6341005,ESO 104-052,ESO-LV 104-0520,IRAS 19204-6346,PGC 063181;;; -NGC6777;Dup;19:10:51.78;-59:58:54.7;Pav;;;;;;;;;;;;;;;6752;;;;;; -NGC6778;PN;19:18:24.85;-01:35:46.9;Aql;0.26;;;13.30;12.30;;;;;;;16.91;;;6785;;HD 180871;IRAS 19158-0141,PN G034.5-06.7;;; -NGC6779;GCl;19:16:35.51;+30:11:04.2;Lyr;5.80;;;8.90;8.40;;;;;;;;;056;;;;MWSC 3077;;;V-mag taken from LEDA -NGC6780;G;19:22:50.88;-55:46:33.0;Tel;2.01;1.55;4;13.48;;11.23;11.12;10.55;23.39;SABc;;;;;;;;2MASX J19225085-5546329,ESO 184-062,ESO-LV 184-0620,IRAS 19187-5552,PGC 063151;;; -NGC6781;PN;19:18:28.26;+06:32:23.0;Aql;1.80;;;11.80;11.40;;;;;;;17.10;16.78;;;;;PN G041.8-02.9;;; -NGC6782;G;19:23:57.90;-59:55:20.9;Pav;2.45;1.49;18;12.70;11.84;9.82;9.12;8.87;23.13;Sa;;;;;;;;2MASX J19235793-5955210,ESO 142-001,ESO-LV 142-0010,IRAS 19195-6001,PGC 063168;;; -NGC6783;G;19:16:47.62;+46:01:02.0;Cyg;0.66;0.62;135;15.40;;11.70;11.12;10.77;;E;;;;;;;;2MASX J19164762+4601018,MCG +08-35-007,PGC 063003;;;Diameters and position angle taken from Simbad. -NGC6784;G;19:26:35.99;-65:37:03.7;Pav;1.04;0.56;46;15.02;;;;;23.63;E-S0;;;;;;;;2MASX J19263098-6537507,ESO-LV 104-0550,PGC 063210;;; -NGC6784A;G;19:26:31.18;-65:37:34.0;Pav;0.95;0.54;167;14.68;;;;;23.61;E-S0;;;;;;;;2MASX J19263599-6537037,ESO-LV 104-0551,PGC 063209;;;B-Mag taken from LEDA -NGC6785;Dup;19:18:24.85;-01:35:46.9;Aql;;;;;;;;;;;;;;;6778;;;;;; -NGC6786;G;19:10:53.91;+73:24:36.6;Dra;0.81;0.48;20;13.70;;11.37;10.69;10.27;21.98;SABb;;;;;;;;2MASX J19105392+7324362,PGC 062864,UGC 11414;;; -NGC6787;G;19:16:10.58;+60:25:03.1;Dra;0.80;0.74;70;14.90;;11.74;10.98;10.61;23.14;SABb;;;;;;;;2MASX J19161057+6025028,IRAS 19154+6019,MCG +10-27-009,PGC 062987,UGC 11424;;; -NGC6788;G;19:26:49.75;-54:57:04.7;Tel;3.20;1.05;69;12.87;;9.51;8.81;8.52;23.48;Sab;;;;;;;;2MASX J19264973-5457045,ESO 184-067,ESO-LV 184-0670,IRAS 19227-5503,PGC 063214;;; -NGC6789;G;19:16:42.16;+63:58:17.3;Dra;0.97;0.84;145;13.76;;12.87;12.29;12.24;22.37;I;;;;;;;;2MASX J19164116+6358238,MCG +11-23-001,PGC 063000,UGC 11425;;; -NGC6790;PN;19:22:56.90;+01:30:48.0;Aql;0.12;;;10.20;10.50;10.61;10.45;9.47;;;;11.10;;;;;HD 182083,BD +01 3979,TYC 465-00361-1;PN G037.8-06.3;;; -NGC6791;OCl;19:20:53.22;+37:46:18.8;Lyr;6.30;;;10.52;9.50;;;;;;;;;;;;;MWSC 3088;;; -NGC6792;G;19:20:57.41;+43:07:57.0;Lyr;2.08;1.11;24;13.40;;10.06;9.43;9.10;23.14;SBb;;;;;;;;2MASX J19205740+4307572,IRAS 19193+4302,MCG +07-40-002,PGC 063096,UGC 11429;;; -NGC6793;OCl;19:23:14.39;+22:08:27.7;Vul;8.10;;;;;;;;;;;;;;;;;MWSC 3098;;; -NGC6794;G;19:28:03.88;-38:55:07.5;Sgr;1.51;1.26;85;13.88;;10.54;9.83;9.62;23.43;Sab;;;;;;;;2MASX J19280388-3855077,ESO 338-005,ESO-LV 338-0050,MCG -07-40-001,PGC 063241;;; -NGC6795;OCl;19:26:22.02;+03:30:51.7;Aql;;;;;;;;;;;;;;;;;;;;; -NGC6796;G;19:21:30.87;+61:08:41.6;Dra;1.73;0.40;1;13.50;;10.29;9.52;9.19;22.33;Sbc;;;;;;;;2MASX J19213081+6108413,IRAS 19208+6102,MCG +10-27-010,PGC 063121,UGC 11432;;Misidentified as NGC 6797 in CGCG.; -NGC6797;Other;19:29:00.75;-25:39:59.6;Sgr;;;;;;;;;;;;;;;;;;;;Galactic triple star; -NGC6798;G;19:24:03.17;+53:37:29.2;Cyg;1.78;0.80;147;14.50;;10.40;9.69;9.40;24.30;S0;;;;;;1300;;2MASX J19240319+5337291,MCG +09-32-002,PGC 063171,UGC 11434;;; -NGC6799;G;19:32:16.53;-55:54:28.5;Tel;1.83;1.36;107;13.41;;10.34;9.69;9.46;23.55;E-S0;;;;;;;;2MASX J19321651-5554287,ESO 184-078,ESO-LV 184-0780,PGC 063339;;; -NGC6800;OCl;19:27:07.68;+25:08:25.7;Vul;6.00;;;;;;;;;;;;;;;;;MWSC 3124;;; -NGC6801;G;19:27:35.81;+54:22:22.4;Cyg;1.36;0.71;38;14.80;;11.20;10.50;10.39;23.44;Sc;;;;;;;;2MASX J19273579+5422224,IRAS 19264+5416,MCG +09-32-005,PGC 063229,UGC 11443;;; -NGC6802;OCl;19:30:35.04;+20:15:39.5;Vul;4.50;;;10.07;8.80;;;;;;;;;;;;;MWSC 3134;;; -NGC6803;PN;19:31:16.45;+10:03:21.7;Aql;0.09;;;11.30;11.40;11.91;12.03;11.15;;;;;15.20;;;;HD 183889;IRAS 19289+0956,PN G046.4-04.1;;; -NGC6804;PN;19:31:35.39;+09:13:30.6;Aql;0.58;;;12.20;12.00;13.23;12.45;11.28;;;;14.47;14.37;;;;HD 183932;IRAS 19291+0907,PN G045.7-04.5;;; -NGC6805;G;19:36:45.71;-37:33:15.7;Sgr;1.16;1.03;159;14.34;;10.53;9.84;9.48;23.49;E;;;;;;;;2MASX J19364571-3733155,ESO 338-014,ESO-LV 338-0140,MCG -06-43-002,PGC 063413;;; -NGC6806;G;19:37:05.05;-42:17:46.6;Sgr;1.22;0.96;52;13.83;;11.65;11.05;10.79;22.68;Sc;;;;;;;;2MASX J19370506-4217475,ESO 338-015,ESO-LV 338-0150,IRAS 19336-4224,MCG -07-40-003,PGC 063416;;; -NGC6807;PN;19:34:33.50;+05:41:03.0;Aql;0.03;;;13.80;12.00;12.75;12.83;12.07;;;;16.30;;;;;BD +05 4196,HD 184488;IRAS 19320+0534,PN G042.9-06.9;;; -NGC6808;G;19:43:54.00;-70:38:00.2;Pav;0.80;0.25;42;13.15;12.59;10.13;9.38;9.04;21.33;Sa;;;;;;;;2MASX J19435402-7038002,ESO 073-003,ESO-LV 73-0030,IRAS 19385-7045,PGC 063578;;Marginal HIPASS detection.; -NGC6809;GCl;19:39:59.40;-30:57:43.5;Sgr;12.00;;;;6.49;;;;;;;;;055;;;;MWSC 3150;;; -NGC6810;G;19:43:34.25;-58:39:20.1;Pav;3.79;1.05;175;12.34;11.22;8.81;7.98;7.68;23.18;Sab;;;;;;;;2MASX J19433370-5839027,2MASX J19433447-5839207,ESO 142-035,ESO-LV 142-0350,IRAS 19393-5846,PGC 063571;;; -NGC6811;OCl;19:37:17.91;+46:23:19.8;Cyg;7.20;;;7.47;6.80;;;;;;;;;;;;;MWSC 3143;;; -NGC6812;G;19:45:24.22;-55:20:48.5;Tel;1.75;1.12;87;13.58;;9.95;9.29;9.00;23.50;S0;;;;;;;;2MASX J19452422-5520488,ESO 185-015,ESO-LV 185-0150,PGC 063625;;; -NGC6813;PN;19:40:22.44;+27:18:34.4;Vul;3.00;;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC6814;G;19:42:40.64;-10:19:24.6;Aql;3.08;0.74;110;15.33;14.21;8.66;7.95;7.66;22.23;SABb;;;;;;;;2MASX J19424057-1019255,IRAS 19399-1026,MCG -02-50-001,PGC 063545;;; -NGC6815;*Ass;19:40:44.31;+26:45:32.4;Vul;;;;;;;;;;;;;;;;;;;;; -NGC6816;G;19:44:02.23;-28:24:03.0;Sgr;1.72;1.40;80;13.59;;10.00;9.33;8.91;23.97;E-S0;;;;;;;;2MASX J19440229-2824023,ESO 460-030,ESO-LV 460-0300,MCG -05-46-006,PGC 063587;;; -NGC6817;GPair;19:37:22.40;+62:22:59.0;Dra;0.90;;;;;;;;;;;;;;;;;MCG +10-28-005;;;Diameter of the group inferred by the author. -NGC6817 NED01;G;19:37:21.24;+62:22:57.7;Dra;;;;16.05;;;;;;;;;;;;;;MCG +10-28-005 NED01,PGC 3086688;;;B-Mag taken from LEDA -NGC6817 NED02;G;19:37:23.38;+62:23:01.1;Dra;0.66;0.55;115;15.60;;12.09;11.31;11.10;23.26;Sbc;;;;;;;;2MASX J19372334+6223010,MCG +10-28-005 NED02,PGC 063431;;; -NGC6818;PN;19:43:57.73;-14:09:11.4;Sgr;0.77;;;9.90;9.30;10.66;10.60;9.91;;;;16.90;;;;;BD-14 5523,HD 186282;IRAS 19411-1416,PN G025.8-17.9;Little Gem Nebula;;Dimensions taken from LEDA -NGC6819;OCl;19:41:18.09;+40:11:12.3;Cyg;6.90;;;8.21;7.30;;;;;;;;;;;;;MWSC 3155;Foxhead Cluster;; -NGC6820;Neb;19:42:28.02;+23:05:17.1;Vul;0.50;0.50;;15.00;;10.71;10.06;9.62;;;;;;;;;;2MASX J19422860+2305059;;;Dimensions and B-Mag taken from LEDA -NGC6821;G;19:44:24.06;-06:50:00.4;Aql;1.03;0.93;130;14.00;;11.17;10.53;10.15;22.33;Scd;;;;;;;;2MASX J19442405-0650002,IRAS 19417-0657,MCG -01-50-002,PGC 063594;;Confused HIPASS source; -NGC6822;G;19:44:57.74;-14:48:12.4;Sgr;17.38;16.75;27;18.00;8.10;7.48;6.92;6.72;24.25;IB;;;;;;4895;;2MASX J19445619-1447512,C 057,IRAS 19420-1450,MCG -02-50-006,PGC 063616;Barnard's Galaxy;The position is the approximate center of the bar.; -NGC6823;Cl+N;19:43:09.89;+23:17:59.8;Vul;6.00;;;7.71;7.10;;;;;;;;;;;;;LBN 135,MWSC 3163;;; -NGC6824;G;19:43:40.70;+56:06:34.1;Cyg;1.91;1.39;53;13.10;;9.23;8.46;8.19;22.88;Sab;;;;;;;;2MASX J19434067+5606339,IRAS 19426+5559,MCG +09-32-012,PGC 063575,UGC 11470;;; -NGC6825;GPair;19:41:54.80;+64:04:23.0;Dra;0.72;0.32;170;15.30;;12.10;11.49;11.36;;;;;;;;;;PGC 063535;;; -NGC6826;PN;19:44:48.11;+50:31:30.1;Cyg;0.42;;;10.02;9.44;9.57;9.60;8.90;;;;10.33;10.41;;;;BD +50 2869,HD 186924,SAO 31951,TYC 3565-00205-1;2MASX J19444814+5031304,C 015,IRAS 19434+5024,PN G083.5+12.7;Blinking Planetary;; -NGC6827;OCl;19:48:53.44;+21:12:54.2;Vul;2.10;;;;;;;;;;;;;;;;;MWSC 3186;;; -NGC6828;OCl;19:50:17.61;+07:54:09.2;Aql;6.00;;;;;;;;;;;;;;;;;MWSC 3190;;; -NGC6829;G;19:47:07.56;+59:54:25.5;Dra;1.49;0.35;31;15.00;;10.62;9.88;9.59;23.56;Sb;;;;;;;;2MASX J19470756+5954255,MCG +10-28-010,PGC 063667,UGC 11478;;; -NGC6830;OCl;19:50:59.58;+23:06:00.5;Vul;4.20;;;8.41;7.90;;;;;;;;;;;;;MWSC 3191;;; -NGC6831;G;19:47:57.30;+59:53:33.1;Dra;1.29;1.17;115;14.70;;10.84;10.13;9.90;23.81;S0;;;;;;;;2MASX J19475733+5953332,MCG +10-28-011,PGC 063674,UGC 11483;;; -NGC6832;OCl;19:48:15.26;+59:25:16.2;Cyg;3.30;;;;;;;;;;;;;;;;;MWSC 3183;;; -NGC6833;PN;19:49:46.60;+48:57:40.0;Cyg;0.03;;;13.80;12.10;12.71;12.85;12.19;;;;14.60;14.50;;;;HD 187836;PN G082.5+11.3;;; -NGC6834;OCl;19:52:12.56;+29:24:29.4;Cyg;4.50;;;8.46;7.80;;;;;;;;;;;;;MWSC 3197;;; -NGC6835;G;19:54:32.95;-12:34:03.3;Sgr;2.74;0.61;70;13.30;;;;;23.63;SBa;;;;;;;;IRAS 19517-1241,MCG -02-50-009,PGC 063800;;; -NGC6836;G;19:54:40.06;-12:41:16.6;Sgr;1.42;1.11;119;13.00;;;;;22.77;SABm;;;;;;;;2MASX J19544001-1241168,IRAS 19518-1249,MCG -02-50-010,PGC 063803;;; -NGC6837;OCl;19:53:08.63;+11:41:56.4;Aql;3.00;;;;;;;;;;;;;;;;;MWSC 3199;;; -NGC6838;GCl;19:53:46.11;+18:46:42.2;Sge;6.90;;;7.91;6.10;;;;;;;;;071;6839;;;MWSC 3200;;Identification as NGC 6839 is very uncertain.; -NGC6839;Dup;19:53:46.11;+18:46:42.2;Sge;;;;;;;;;;;;;;;6838;;;;;; -NGC6840;OCl;19:55:16.25;+12:06:52.6;Aql;4.50;;;;;;;;;;;;;;;;;MWSC 3205;;; -NGC6841;G;19:57:49.06;-31:48:38.5;Sgr;1.63;1.46;162;13.44;;9.92;9.17;8.89;23.66;E;;;;;;;;2MASX J19574905-3148384,ESO 461-023,ESO-LV 461-0230,MCG -05-47-011,PGC 063881;;; -NGC6842;PN;19:55:02.26;+29:17:21.0;Cyg;0.95;;;13.60;13.10;;;;;;14.75;15.65;15.98;;;;;IRAS 19530+2909,PN G065.9+00.5;;; -NGC6843;OCl;19:56:06.22;+12:09:49.8;Aql;3.60;;;;;;;;;;;;;;;;;MWSC 3206;;; -NGC6844;G;20:02:50.13;-65:13:47.5;Pav;1.26;0.97;5;13.53;;10.37;9.58;9.37;22.70;Sb;;;;;;;;2MASX J20025015-6513473,ESO 105-021,ESO-LV 105-0210,IRAS 19581-6522,PGC 064025;;; -NGC6845;GGroup;20:00:58.28;-47:04:11.9;Tel;4.10;;;;;;;;;;;;;;;;;ESO 284-008;;;Diameter of the group inferred by the author. -NGC6845A;G;20:00:58.42;-47:04:12.9;Tel;1.08;0.61;47;15.81;12.16;11.00;10.27;9.92;22.28;SBbc;;;;;;;;2MASX J20005841-4704130,ESO-LV 284-0080,PGC 063985;;; -NGC6845B;G;20:01:05.30;-47:03:32.7;Tel;0.78;0.60;24;17.18;14.28;12.33;11.44;11.56;22.91;SBb;;;;;;;;2MASX J20010526-4703340,ESO-LV 284-0082,PGC 063986;;; -NGC6845C;G;20:00:56.81;-47:05:03.2;Tel;0.94;0.31;138;14.52;;11.30;10.39;10.42;24.85;S0-a;;;;;;;;2MASX J20005684-4705040,ESO-LV 284-0081,PGC 063979;;; -NGC6845D;G;20:00:53.59;-47:05:42.8;Tel;0.79;0.22;157;15.50;;13.05;12.29;11.87;23.57;S0;;;;;;;;2MASX J20005354-4705424,PGC 063978;;; -NGC6846;OCl;19:56:28.12;+32:20:58.9;Cyg;2.40;;;;14.20;;;;;;;;;;;;;MWSC 3207;;; -NGC6847;Cl+N;19:56:37.82;+30:12:46.5;Cyg;10.00;10.00;;;;;;;;;;;;;;;;LBN 151;;Identification as NGC 6847 is very uncertain.; -NGC6848;G;20:02:47.25;-56:05:25.1;Tel;2.34;1.38;158;13.40;;9.78;8.99;8.72;23.67;Sa;;;;;;;;2MASX J20024726-5605250,ESO 185-052,ESO-LV 185-0520,PGC 064023;;; -NGC6849;G;20:06:15.62;-40:11:53.9;Sgr;2.15;1.42;19;12.90;;10.30;9.61;9.41;23.42;E-S0;;;;;;;;2MASX J20061560-4011539,ESO 339-032,ESO-LV 339-0320,MCG -07-41-007,PGC 064097;;; -NGC6850;G;20:03:30.10;-54:50:41.2;Tel;2.03;1.09;146;13.52;13.07;10.17;9.50;9.21;23.89;S0-a;;;;;;;;2MASX J20033008-5450408,ESO 185-056,ESO-LV 185-0560,PGC 064043;;; -NGC6851;G;20:03:34.37;-48:17:04.2;Tel;2.18;1.70;161;12.83;11.67;9.69;9.00;8.77;23.23;E;;;;;6861A;;;2MASX J20033440-4817042,2MASX J20033564-4817211,ESO 233-021,ESO-LV 233-0210,PGC 064044;;; -NGC6851A;G;20:05:48.51;-47:58:41.7;Tel;1.35;0.70;50;14.88;;;;;23.71;Sbc;;;;;;;;ESO 233-025,ESO-LV 233-0250,PGC 064086;;; -NGC6851B;G;20:05:39.94;-47:58:44.6;Tel;1.12;0.18;67;16.76;14.81;13.27;12.56;12.29;24.08;SBcd;;;;;;;;2MASX J20053994-4758446,ESO 233-023,ESO-LV 233-0230,PGC 064082;;; -NGC6852;PN;20:00:39.16;+01:43:41.2;Aql;0.47;;;12.80;12.60;;;;;;;17.70;17.90;;;;;IRAS 19581+0135,PN G042.5-14.5;;; -NGC6853;PN;19:59:36.38;+22:43:15.7;Vul;6.70;;;7.60;7.40;11.79;10.61;;;;12.43;13.66;13.94;027;;;BD+22 3878;2MASX J19593637+2243157,PN G060.8-03.6;Dumbbell Nebula;; -NGC6854;G;20:05:38.80;-54:22:32.2;Tel;2.28;1.62;166;13.52;12.30;;;;23.83;E-S0;;;;;;;;2MASX J20053878-5422319,ESO 185-061,ESO-LV 185-0610,PGC 064081;;; -NGC6855;G;20:06:49.91;-56:23:23.7;Tel;1.27;0.95;95;13.84;;10.51;9.77;9.42;23.12;S0-a;;;;;;;;2MASX J20064991-5623236,ESO 185-063,ESO-LV 185-0630,PGC 064116;;; -NGC6856;OCl;19:59:17.13;+56:07:51.2;Cyg;3.00;;;;;;;;;;;;;;;;;MWSC 3215;;; -NGC6857;HII;20:01:48.13;+33:31:33.3;Cyg;0.63;0.63;;11.40;;;;;;;;;;;;;;;;;Dimensions and B-Mag taken from LEDA -NGC6858;OCl;20:02:59.39;+11:15:33.9;Aql;4.20;;;;;;;;;;;;;;;;;MWSC 3233;;; -NGC6859;Other;20:03:49.51;+00:26:40.7;Aql;;;;;;;;;;;;;;;;;;;;Three Galactic stars.; -NGC6860;G;20:08:46.89;-61:06:00.7;Pav;1.31;0.75;32;13.70;13.53;10.60;9.84;9.39;22.68;SBb;;;;;;;;2MASX J20084680-6105595,ESO 143-009,ESO-LV 143-0090,IRAS 20044-6114,PGC 064166;;; -NGC6861;G;20:07:19.48;-48:22:12.8;Tel;3.18;2.36;133;12.01;11.10;8.66;7.97;7.71;23.32;E-S0;;;;;;4949;;2MASX J20071948-4822129,ESO 233-032,ESO-LV 233-0320,IRAS 20037-4830,PGC 064136;;; -NGC6861B;G;20:06:05.43;-48:28:28.0;Tel;1.21;0.40;100;15.11;;12.68;12.01;12.14;24.18;S0;;;;;;;;2MASX J20060542-4828280,ESO 233-026,ESO-LV 233-0260,PGC 064094;;; -NGC6861C;G;20:06:41.08;-48:38:59.2;Tel;1.11;0.42;34;15.07;;13.20;12.49;12.30;23.98;S0;;;;;;;;2MASX J20064105-4838594,ESO 233-031,ESO-LV 233-0310,PGC 064107;;; -NGC6861D;G;20:08:19.48;-48:12:41.1;Tel;2.36;0.85;157;13.53;11.20;10.15;9.45;9.20;23.93;E-S0;;;;;;;;2MASX J20081948-4812407,ESO 233-034,ESO-LV 233-0340,PGC 064153;;; -NGC6861E;G;20:11:01.52;-48:41:26.1;Tel;1.48;0.31;37;15.11;;12.54;11.89;11.61;23.84;Sab;;;;;;;;2MASX J20110150-4841266,ESO 233-042,ESO-LV 233-0420,PGC 064216;;; -NGC6861F;G;20:11:11.80;-48:16:33.0;Tel;1.82;0.35;85;15.25;;;;;23.79;SBd;;;;;;;;ESO 233-043,ESO-LV 233-0430,PGC 064219;;; -NGC6862;G;20:08:54.58;-56:23:30.3;Tel;1.43;1.32;125;13.50;;10.88;10.19;9.84;22.90;SBbc;;;;;;;;2MASX J20085482-5623318,ESO 186-002,ESO-LV 186-0020,IRAS 20049-5632,PGC 064168;;; -NGC6863;Other;20:05:07.32;-03:33:18.5;Aql;;;;;;;;;;;;;;;;;;;;Eight Galactic stars.; -NGC6864;GCl;20:06:04.84;-21:55:20.0;Sgr;3.60;;;;8.26;6.93;6.43;6.28;;;;;;075;;;;2MASX J20060484-2155201,MWSC 3254;;; -NGC6865;G;20:05:56.48;-09:02:27.3;Cap;0.63;0.48;135;14.74;;11.00;10.23;10.07;23.24;S0;;;;;;;;2MASX J20055647-0902272,PGC 064089;;; -NGC6866;OCl;20:03:55.18;+44:09:32.8;Cyg;5.10;;;8.04;7.60;;;;;;;;;;;;;MWSC 3239;;; -NGC6867;G;20:10:29.66;-54:46:59.7;Tel;1.61;0.55;156;13.92;;11.14;10.39;10.05;22.98;SBbc;;;;;;;;2MASX J20102965-5446596,ESO 186-006,ESO-LV 186-0060,IRAS 20065-5455,PGC 064203;;; -NGC6868;G;20:09:54.07;-48:22:46.4;Tel;3.58;3.13;81;11.58;9.22;8.29;7.56;7.32;23.31;E;;;;;;;;2MASX J20095408-4822462,ESO 233-039,ESO-LV 233-0390,PGC 064192;;; -NGC6869;G;20:00:42.41;+66:13:39.1;Dra;1.44;1.44;100;12.80;;9.68;8.96;8.71;22.88;S0;;;;;;;;2MASX J20004241+6613392,MCG +11-24-004,PGC 063972,UGC 11506;;; -NGC6870;G;20:10:10.86;-48:17:13.5;Tel;2.56;1.08;86;13.17;11.76;9.88;9.19;8.95;23.41;SABa;;;;;;;;2MASX J20101083-4817135,ESO 233-041,ESO-LV 233-0410,IRAS 20065-4826,PGC 064197;;; -NGC6871;OCl;20:05:59.44;+35:46:38.1;Cyg;9.30;;;5.43;5.20;;;;;;;;;;;;;MWSC 3253;;; -NGC6872;G;20:16:56.56;-70:46:04.6;Pav;4.70;1.80;45;11.97;11.59;9.21;8.64;8.27;24.03;SBb;;;;;;;;2MASX J20165648-7046057,ESO 073-032,ESO-LV 73-0320,IRAS 20115-7055,PGC 064413;;; -NGC6873;OCl;20:07:13.89;+21:06:08.1;Sge;3.00;;;;;;;;;;;;;;;;;MWSC 3263;;; -NGC6874;*Ass;20:07:33.08;+38:14:46.0;Cyg;;;;;;;;;;;;;;;;;;;;; -NGC6875;G;20:13:12.47;-46:09:41.9;Tel;2.15;1.30;22;12.90;11.78;9.86;9.16;8.91;23.36;E-S0;;;;;;;;2MASX J20131249-4609417,ESO 284-028,ESO-LV 284-0280,IRAS 20096-4618,PGC 064296;;; -NGC6875A;G;20:11:55.86;-46:08:38.7;Tel;2.97;0.61;74;13.96;;11.10;10.26;9.97;23.82;SBbc;;;;;;;;2MASX J20115586-4608387,ESO 284-024,ESO-LV 284-0240,PGC 064240;;; -NGC6876;G;20:18:19.15;-70:51:31.7;Pav;3.46;3.00;110;11.76;11.54;8.70;7.97;7.70;23.51;E;;;;;;;;2MASX J20181914-7051317,ESO 073-035,ESO-LV 73-0350,PGC 064447;;; -NGC6876A;G;20:11:16.85;-71:00:46.6;Pav;1.38;0.46;178;14.84;;11.94;11.22;10.93;23.50;SBb;;;;;;4945;;2MASX J20111682-7100466,ESO-LV 0730250,PGC 064222;;; -NGC6877;G;20:18:36.20;-70:51:11.0;Pav;2.38;1.14;163;13.17;12.61;;;;23.87;E;;;;;;;;ESO 073-036,ESO-LV 73-0360,PGC 064457,TYC 9311-35-1;;; -NGC6878;G;20:13:53.24;-44:31:36.3;Sgr;1.61;1.26;98;13.65;12.42;10.77;9.74;9.76;23.23;SABb;;;;;;;;2MASX J20135321-4431361,ESO 284-031,ESO-LV 284-0310,IRAS 20104-4440,MCG -07-41-015,PGC 064317;;; -NGC6878A;G;20:13:36.00;-44:48:58.2;Sgr;1.87;0.86;69;13.99;;12.69;11.99;11.90;23.37;SABb;;;;;;;;2MASX J20133598-4448581,ESO 284-029,ESO-LV 284-0290,MCG -07-41-013,PGC 064314;;; -NGC6879;PN;20:10:26.60;+16:55:22.1;Sge;0.08;;;13.00;12.50;12.80;12.53;12.18;;;;14.90;14.80;;;;;IRAS 20081+1646,PN G057.2-08.9;;; -NGC6880;G;20:19:29.63;-70:51:35.5;Pav;2.46;1.06;25;13.18;13.35;10.19;9.46;9.16;23.90;S0-a;;;;;;;;2MASX J20192966-7051356,ESO 073-037,ESO-LV 73-0370,IRAS 20142-7100,PGC 064479;;; -NGC6881;PN;20:10:52.50;+37:24:41.0;Cyg;0.07;;;14.30;13.90;12.34;11.89;11.00;;;;;18.36;;;;;IRAS 20090+3715,PN G074.5+02.1;;; -NGC6882;OCl;20:11:55.86;+26:29:19.7;Vul;7.50;;;;14.10;;;;;;;;;;6885;;;C 037,MWSC 3278;;Identification as NGC 6682 is not certain.; -NGC6883;OCl;20:11:19.75;+35:49:55.9;Cyg;4.50;;;;8.00;;;;;;;;;;;;;MWSC 3275;;; -NGC6884;PN;20:10:23.70;+46:27:39.0;Cyg;0.10;;;12.60;10.90;11.16;11.19;10.37;;;;16.10;15.60;;;;HD 191916;IRAS 20088+4618,PN G082.1+07.0;;; -NGC6885;Dup;20:11:55.86;+26:29:19.7;Vul;;;;;;;;;;;;;;;6882;;;;;; -NGC6886;PN;20:12:42.90;+19:59:23.0;Sge;0.09;;;12.20;11.40;12.22;12.24;11.49;;;;;18.00;;;;;IRAS 20104+1950,PN G060.1-07.7;;; -NGC6887;G;20:17:17.29;-52:47:48.3;Tel;3.44;1.18;103;12.77;11.76;9.85;9.09;8.87;23.44;Sbc;;;;;;;;2MASX J20171727-5247484,ESO 186-027,ESO-LV 186-0270,IRAS 20135-5257,PGC 064427;;; -NGC6888;HII;20:12:06.55;+38:21:17.8;Cyg;20.00;10.00;;7.44;;;;;;;;;;;;;;BD +37 3821,C 027,HD 192163,HIP 099546,LBN 203;Crescent Nebula;; -NGC6889;G;20:18:53.23;-53:57:25.5;Tel;1.71;1.08;60;13.70;;11.26;10.73;10.39;23.26;SBbc;;;;;;;;2MASX J20185325-5357254,ESO 186-029,ESO-LV 186-0290,IRAS 20151-5406,PGC 064464;;; -NGC6890;G;20:18:18.10;-44:48:24.2;Sgr;1.59;1.27;155;13.06;14.02;9.99;9.31;9.03;22.54;SBb;;;;;;;;2MASX J20181815-4448252,ESO 284-054,ESO-LV 284-0540,IRAS 20148-4457,MCG -07-41-023,PGC 064446;;; -NGC6891;PN;20:15:08.84;+12:42:15.7;Del;0.25;;;11.70;10.50;11.10;11.16;10.55;;;;12.30;12.42;;;;BD +12 4266,HD 192563,TYC 1081-00805-1;2MASX J20150883+1242159,IRAS 20127+1233,PN G054.1-12.1;;; -NGC6892;Other;20:16:57.24;+18:01:10.8;Sge;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC6893;G;20:20:49.64;-48:14:20.7;Tel;2.87;1.78;9;12.73;11.45;8.95;8.26;7.95;23.75;S0;;;;;;;;2MASX J20204964-4814206,ESO 234-006,ESO-LV 234-0060,IRAS 20172-4824,PGC 064507;;Mislabeled as NGC 6873 in de Vaucouleours, 1957HPh....53..275d.; -NGC6894;PN;20:16:24.05;+30:33:54.3;Cyg;0.67;;;14.40;12.30;;;;;;;18.10;;;;;;PN G069.4-02.6;;; -NGC6895;OCl;20:16:32.36;+50:14:25.7;Cyg;5.10;;;;;;;;;;;;;;;;;MWSC 3296;;; -NGC6896;**;20:18:03.58;+30:38:24.2;Cyg;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC6897;G;20:21:01.27;-12:15:16.9;Cap;0.94;0.60;39;15.00;;11.59;10.81;10.53;22.82;Sbc;;;;;;;;2MASX J20210126-1215171,IRAS 20182-1224,MCG -02-52-001,PGC 064513;;; -NGC6898;G;20:21:08.03;-12:21:32.0;Cap;1.03;0.94;145;14.00;;11.01;10.32;10.02;22.80;Sa;;;;;;;;2MASX J20210802-1221320,IRAS 20183-1231,MCG -02-52-002,PGC 064517;;; -NGC6899;G;20:24:22.24;-50:26:02.2;Tel;1.79;0.89;112;13.47;;10.78;10.11;9.88;22.87;Sbc;;;;;;;;2MASX J20242223-5026023,ESO 234-022,ESO-LV 234-0220,IRAS 20207-5035,PGC 064630;;; -NGC6900;G;20:21:35.11;-02:34:09.2;Aql;0.94;0.74;100;14.20;;12.06;11.38;11.02;22.93;Sb;;;;;;;;2MASX J20213512-0234092,IRAS 20189-0243,MCG +00-52-001,PGC 064530;;Two MCG entries for one object.; -NGC6901;G;20:22:21.51;+06:25:47.5;Aql;1.25;0.49;62;14.90;;11.55;10.82;10.48;23.37;SBab;;;;;;5000;;2MASX J20222151+0625475,IRAS 20199+0616,MCG +01-52-002,PGC 064552,SDSS J202221.52+062547.5,UGC 11542;;Called IC 1316 in RC2 by mistake (IC 1316 is non-existent).; -NGC6902;G;20:24:28.14;-43:39:12.7;Sgr;2.69;2.11;158;11.82;10.93;9.41;8.89;8.61;22.70;SBab;;;;;;4948;;2MASX J20242813-4339127,ESO 285-008,ESO-LV 285-0080,IRAS 20210-4348,MCG -07-42-002,PGC 064632;;The IC identification is not certain.; -NGC6902A;G;20:22:59.76;-44:16:17.5;Sgr;0.98;0.74;57;14.42;;11.60;10.89;10.88;23.07;SBm;;;;;;;;ESO 285-004,ESO-LV 285-0040,MCG -07-41-032,PGC 064575;;; -NGC6902B;G;20:23:07.05;-43:52:07.0;Sgr;1.32;1.20;160;14.19;13.63;12.89;12.28;11.95;23.52;SABc;;;;;;;;2MASX J20230706-4352067,ESO 285-005,ESO-LV 285-0050,MCG -07-41-033,PGC 064580;;Confused HIPASS source; -NGC6903;G;20:23:44.86;-19:19:31.5;Cap;2.24;2.04;145;12.91;;9.24;8.60;8.33;23.40;E-S0;;;;;;;;2MASX J20234488-1919315,ESO 596-029,ESO-LV 596-0290,MCG -03-52-003,PGC 064607;;; -NGC6904;OCl;20:21:48.15;+25:44:29.4;Vul;4.20;;;;;;;;;;;;;;;;;MWSC 3326;;; -NGC6905;PN;20:22:22.99;+20:06:16.3;Del;0.67;;;11.90;11.10;12.95;12.85;12.10;;;;16.30;15.70;;;;HD 193949;2MASX J20222299+2006162,IRAS 20201+1956,PN G061.4-09.5;Blue Flash Nebula;; -NGC6906;G;20:23:33.91;+06:26:37.2;Del;1.12;0.48;45;13.70;;10.24;9.58;9.33;21.74;SBbc;;;;;;;;2MASX J20233389+0626372,IRAS 20211+0616,MCG +01-52-003,PGC 064601,SDSS J202333.93+062637.1,UGC 11548;;; -NGC6907;G;20:25:06.63;-24:48:33.0;Cap;3.33;2.68;67;11.91;11.30;;;;23.09;Sbc;;;;;;;;2MASX J20250664-2448335,ESO 528-003,ESO-LV 528-0030,IRAS 20221-2458,MCG -04-48-006,PGC 064650,UGCA 418;;; -NGC6908;G;20:25:08.97;-24:48:04.1;Cap;2.63;1.16;80;12.31;;9.34;8.69;8.37;;S0;;;;;;;;PGC 4581797;;Superposed on the northeastern arm of NGC 6907.;Diameters and position angle taken from Simbad. -NGC6909;G;20:27:38.89;-47:01:37.3;Ind;2.36;1.29;69;12.76;11.88;10.04;9.37;9.22;23.33;E;;;;;;;;2MASX J20273886-4701373,ESO 285-012,ESO-LV 285-0120,PGC 064725;;; -NGC6910;OCl;20:23:12.05;+40:46:43.0;Cyg;6.30;;;7.13;7.40;;;;;;;;;;;;;MWSC 3327;;; -NGC6911;G;20:19:38.33;+66:43:42.0;Dra;1.84;1.01;122;15.70;;10.01;9.26;8.76;24.78;SBb;;;;;;;;2MASX J20193834+6643421,IRAS 20191+6634,MCG +11-24-006,PGC 064485,UGC 11540;;; -NGC6912;G;20:26:52.08;-18:37:02.2;Cap;1.30;1.03;77;14.34;;11.23;10.56;10.17;22.98;SBc;;;;;;;;2MASX J20265207-1837022,ESO 596-038,ESO-LV 596-0380,IRAS 20240-1846,MCG -03-52-008,PGC 064700;;; -NGC6913;OCl;20:23:57.77;+38:30:27.6;Cyg;3.60;;;7.30;6.60;;;;;;;;;029;;;;MWSC 3329;;; -NGC6914;RfN;20:24:43.30;+42:28:57.5;Cyg;3.00;3.00;;;;;;;;;;;;;;;;LBN 274;;; -NGC6915;G;20:27:46.06;-03:04:37.4;Aql;1.65;1.15;85;13.77;;10.21;9.55;9.24;23.39;Sab;;;;;;;;2MASX J20274605-0304375,IRAS 20251-0314,PGC 064729;;; -NGC6916;G;20:23:33.08;+58:20:38.6;Cyg;1.64;1.11;89;15.30;;10.33;9.55;9.29;24.72;SBbc;;;;;;;;2MASX J20233306+5820385,IRAS 20224+5810,MCG +10-29-004,PGC 064600,SDSS J202333.10+582038.5,UGC 11554;;; -NGC6917;G;20:27:28.36;+08:05:53.1;Del;1.11;0.45;48;14.30;;10.68;10.00;9.63;22.66;Sbc;;;;;;;;2MASX J20272835+0805531,MCG +01-52-007,PGC 064715,UGC 11563;;; -NGC6918;G;20:30:47.12;-47:28:25.4;Ind;0.99;0.76;5;14.46;;11.33;10.60;10.18;23.10;S0-a;;;;;;;;2MASX J20304713-4728256,ESO 234-040,ESO-LV 234-0400,IRAS 20272-4738,PGC 064851;;; -NGC6919;G;20:31:38.12;-44:12:59.1;Mic;1.39;1.11;132;13.75;;11.22;10.45;10.21;22.94;SABc;;;;;;;;2MASX J20313813-4412592,ESO 285-027,ESO-LV 285-0270,IRAS 20282-4423,MCG -07-42-011,PGC 064883;;; -NGC6920;G;20:43:57.40;-80:00:03.0;Oct;2.30;1.86;132;13.08;;9.39;8.67;8.37;23.75;S0;;;;;;;;2MASX J20435731-8000029,ESO 026-004,ESO-LV 26-0040,PGC 065273;;; -NGC6921;G;20:28:28.86;+25:43:24.3;Vul;1.08;0.35;141;15.00;;10.01;9.18;8.84;23.01;S0-a;;;;;;;;2MASX J20282884+2543241,MCG +04-48-001,PGC 064768,UGC 11570;;; -NGC6922;G;20:29:52.90;-02:11:28.3;Aql;1.17;0.92;139;14.00;;11.95;11.37;10.95;22.98;Sc;;;;;;;;2MASX J20295290-0211283,IRAS 20272-0221,MCG +00-52-018,PGC 064814,UGC 11574;;; -NGC6923;G;20:31:39.07;-30:49:54.8;Mic;2.54;1.24;76;12.80;12.09;9.65;8.87;8.81;22.99;SBb;;;;;;5004;;2MASX J20313906-3049549,ESO 462-029,ESO-LV 462-0290,IRAS 20285-3100,MCG -05-48-017,PGC 064884;;; -NGC6924;G;20:33:19.23;-25:28:28.0;Cap;1.70;1.45;140;13.47;;10.42;9.68;9.42;23.77;E-S0;;;;;;;;2MASX J20331925-2528281,ESO 528-016,ESO-LV 528-0160,MCG -04-48-014,PGC 064945;;; -NGC6925;G;20:34:20.57;-31:58:51.2;Mic;4.68;1.16;4;12.09;11.30;8.97;8.26;7.99;23.06;Sbc;;;;;;5015;;2MASX J20342056-3158512,ESO 463-004,ESO-LV 463-0040,IRAS 20312-3209,MCG -05-48-022,PGC 064980;;Identification as IC 5015 is not certain.; -NGC6926;G;20:33:06.11;-02:01:39.0;Aql;1.33;0.37;178;14.87;13.87;10.25;9.67;9.35;21.61;Sc;;;;;;;;2MASX J20330610-0201390,IRAS 20305-0211,MCG +00-52-033,PGC 064939,UGC 11588;;; -NGC6927;G;20:32:38.21;+09:54:59.0;Del;0.60;0.20;5;15.60;;12.28;11.63;11.39;23.01;S0;;;;;;;;2MASX J20323818+0954590,MCG +02-52-016,PGC 064925,UGC 11589 NOTES01;;; -NGC6927A;G;20:32:36.69;+09:53:02.1;Del;0.38;0.13;20;17.00;;13.52;13.01;12.59;;E;;;;;;;;2MASX J20323669+0953020,MCG +02-52-015,PGC 064924;;; -NGC6928;G;20:32:50.22;+09:55:35.1;Del;2.08;0.51;106;13.70;;9.81;9.07;8.74;23.11;SBab;;;;;;1325;;2MASX J20325022+0955351,IRAS 20304+0945,MCG +02-52-017,PGC 064932,UGC 11589;;; -NGC6929;G;20:33:21.68;-02:02:13.9;Aql;0.43;0.33;81;14.90;;11.05;10.31;10.05;21.63;S0-a;;;;;;;;2MASX J20332170-0202135,MCG +00-52-035,PGC 064949;;; -NGC6930;G;20:32:58.80;+09:52:28.0;Del;1.43;0.46;9;14.30;;;;;22.62;SBab;;;;;;;;IRAS 20305+0942,MCG +02-52-018,PGC 064935,UGC 11590;;; -NGC6931;G;20:33:41.35;-11:22:07.9;Cap;1.27;0.46;125;14.00;;11.22;10.52;10.16;;Sb;;;;;;;;2MASX J20334133-1122080,IRAS 20309-1132,MCG -02-52-016,PGC 064963;;; -NGC6932;G;20:42:08.58;-73:37:09.7;Pav;2.45;1.44;105;13.29;;10.20;9.52;9.22;23.94;S0-a;;;;;;;;2MASX J20420855-7337097,ESO 047-008,ESO-LV 47-0080,PGC 065219;;; -NGC6933;*;20:33:38.18;+07:23:14.4;Del;;;;12.54;11.61;11.10;10.86;10.77;;;;;;;;;;2MASS J20333810+0723127,TYC 522-63-1;;; -NGC6934;GCl;20:34:11.49;+07:24:14.8;Del;5.40;;;10.48;9.75;;;;;;;;;;;;;C 047,MWSC 3369;;; -NGC6935;G;20:38:20.22;-52:06:37.6;Ind;2.18;1.91;14;12.77;12.10;9.81;9.07;8.88;23.19;SABa;;;;;;;;2MASX J20382024-5206374,ESO 234-059,ESO-LV 234-0590,IRAS 20346-5217,PGC 065112;;; -NGC6936;G;20:35:56.30;-25:16:47.9;Cap;1.82;0.91;5;13.83;;10.62;9.96;9.66;23.95;E-S0;;;;;;;;2MASX J20355629-2516480,ESO 528-022,ESO-LV 528-0220,MCG -04-48-021,PGC 065033;;; -NGC6937;G;20:38:45.83;-52:08:35.7;Ind;2.55;1.69;155;13.37;13.81;11.06;10.38;10.04;23.95;Sbc;;;;;;;;2MASX J20384579-5208355,ESO 234-060,ESO-LV 234-0600,IRAS 20350-5219,PGC 065125;;; -NGC6938;OCl;20:34:42.49;+22:12:52.5;Vul;5.40;;;;;;;;;;;;;;;;;MWSC 3372;;; -NGC6939;OCl;20:31:30.13;+60:39:43.5;Cep;12.00;;;8.85;7.80;;;;;;;;;;;;;MWSC 3357;;; -NGC6940;OCl;20:34:26.69;+28:16:57.8;Vul;10.80;;;6.98;6.30;;;;;;;;;;;;;MWSC 3370;;; -NGC6941;G;20:36:23.47;-04:37:07.5;Aql;1.73;1.20;126;13.30;;10.67;9.98;9.73;23.73;Sb;;;;;;;;2MASX J20362345-0437078,IRAS 20337-0447,MCG -01-52-010,PGC 065054,SDSS J203623.33-043709.5,SDSS J203623.47-043707.4,SDSS J203623.47-043707.5;;; -NGC6942;G;20:40:37.85;-54:18:11.0;Ind;2.24;1.71;134;12.87;12.10;9.67;8.99;8.72;23.41;S0-a;;;;;;;;2MASX J20403786-5418110,ESO 186-073,ESO-LV 186-0730,PGC 065172;;; -NGC6943;G;20:44:33.74;-68:44:51.8;Pav;3.75;2.22;125;11.87;11.25;9.40;9.01;8.52;23.24;Sc;;;;;;;;2MASX J20443374-6844519,ESO 074-006,ESO-LV 74-0060,IRAS 20398-6855,PGC 065295;;; -NGC6944;G;20:38:23.86;+06:59:47.2;Del;1.12;0.79;48;14.60;;10.79;10.11;9.81;23.67;E-S0;;;;;;;;2MASX J20382387+0659476,MCG +01-52-017,PGC 065117;;; -NGC6944A;G;20:38:11.31;+06:54:09.6;Del;0.97;0.69;67;15.00;;12.09;11.60;11.15;23.30;Scd;;;;;;;;2MASX J20381131+0654097,MCG +01-52-016,PGC 065108;;; -NGC6945;G;20:39:00.62;-04:58:21.3;Aqr;1.58;1.01;121;13.50;;10.48;9.81;9.48;24.23;E-S0;;;;;;;;2MASX J20390064-0458215,MCG -01-52-015,PGC 065132;;; -NGC6946;G;20:34:52.32;+60:09:14.1;Cyg;11.40;10.84;52;10.50;;6.27;5.91;5.37;23.73;SABc;;;;;;;;2MASX J20345233+6009132,C 012,IRAS 20338+5958,MCG +10-29-006,PGC 065001,UGC 11597;Fireworks Galaxy;; -NGC6947;G;20:41:15.12;-32:29:11.1;Mic;1.74;0.69;41;14.84;;11.08;10.40;10.00;22.96;Sb;;;;;;;;2MASX J20411513-3229110,ESO 401-003,MCG -05-48-028,PGC 065193;;; -NGC6948;G;20:43:29.14;-53:21:24.2;Ind;2.00;0.95;113;13.79;;10.66;9.91;9.54;23.68;Sa;;;;;;;;2MASX J20432911-5321244,ESO 187-009,ESO-LV 187-0090,IRAS 20397-5332,PGC 065256;;; -NGC6949;G;20:35:06.92;+64:48:10.1;Cep;1.31;1.05;95;15.00;;10.34;9.55;9.22;23.87;Sc;;;;;;;;2MASX J20350692+6448100,IRAS 20343+6437,MCG +11-25-001,PGC 065010,UGC 11600;;; -NGC6950;OCl;20:41:05.58;+16:37:20.0;Del;4.50;;;;;;;;;;;;;;;;;MWSC 3394;;; -NGC6951;G;20:37:14.09;+66:06:20.3;Cep;3.19;2.09;149;11.64;10.65;8.31;7.47;7.22;22.89;SABb;;;;;6952;;;2MASX J20371407+6606203,IRAS 20366+6555,MCG +11-25-002,PGC 065086,UGC 11604;;; -NGC6952;Dup;20:37:14.09;+66:06:20.3;Cep;;;;;;;;;;;;;;;6951;;;;;; -NGC6953;Other;20:37:46.22;+65:45:53.5;Cep;;;;;;;;;;;;;;;;;;;;Group of Galactic stars. NGC identification is not certain.; -NGC6954;G;20:44:03.18;+03:12:34.0;Del;1.27;0.80;84;14.20;;10.61;9.83;9.59;23.27;S0-a;;;;;;;;2MASX J20440318+0312340,MCG +00-53-001,PGC 065279,UGC 11618;;; -NGC6955;G;20:44:17.98;+02:35:41.4;Del;1.27;0.98;115;14.90;;11.88;11.06;10.80;24.16;SABb;;;;;;;;2MASX J20441797+0235414,PGC 065287,UGC 11621;;; -NGC6956;G;20:43:53.71;+12:30:42.9;Del;1.75;1.37;112;13.50;;10.18;9.51;9.18;23.10;Sb;;;;;;;;2MASX J20435368+1230429,IRAS 20415+1219,MCG +02-53-001,PGC 065269,UGC 11619;;; -NGC6957;G;20:44:47.56;+02:34:52.4;Del;0.62;0.57;150;15.30;;12.70;11.92;11.67;22.98;Sc;;;;;;;;2MASX J20444757+0234523,PGC 065302;;; -NGC6958;G;20:48:42.59;-37:59:50.7;Mic;2.44;1.88;97;12.27;11.42;9.34;8.66;8.40;23.08;E;;;;;;;;2MASX J20484256-3759505,ESO 341-015,ESO-LV 341-0150,IRAS 20455-3810,MCG -06-45-017,PGC 065436;;+4m 16s, +0.6m error in A-M position.; -NGC6959;G;20:47:07.24;+00:25:48.7;Aqr;0.50;0.34;63;14.60;;11.58;10.97;10.61;22.32;S0;;;;;;;;2MASX J20470724+0025486,PGC 065369,SDSS J204707.24+002548.6,SDSS J204707.24+002548.7;;; -NGC6960;SNR;20:45:58.18;+30:35:42.5;Cyg;210.00;160.00;;7.00;;;;;;;;;;;;;;C 034,LBN 191;Veil Nebula;;B-Mag taken from LEDA -NGC6961;G;20:47:10.51;+00:21:47.8;Aqr;0.76;0.73;150;14.80;;12.02;11.30;11.07;23.44;E;;;;;;;;2MASX J20471048+0021479,PGC 065372,SDSS J204710.50+002147.8;;; -NGC6962;G;20:47:19.06;+00:19:14.9;Aqr;2.70;2.00;68;13.00;12.14;9.78;9.06;8.79;23.73;SABa;;;;;;;;2MASX J20471908+0019150,MCG +00-53-003,PGC 065375,SDSS J204719.06+001914.8,SDSS J204719.07+001914.9,UGC 11628;;; -NGC6963;**;20:47:19.47;+00:30:38.3;Aqr;;;;15.20;;12.66;12.16;12.04;;;;;;;;;;2MASS J20471928+0030335,SDSS J204719.47+003038.3;;; -NGC6964;G;20:47:24.30;+00:18:03.0;Aqr;1.68;1.26;165;14.00;12.99;10.47;9.86;9.55;23.93;E;;;;;;;;2MASX J20472428+0018030,MCG +00-53-005,PGC 065379,SDSS J204724.30+001802.9,SDSS J204724.30+001803.0,UGC 11629;;; -NGC6965;G;20:47:20.37;+00:29:02.6;Aqr;0.73;0.63;68;15.20;;12.14;11.50;11.18;22.74;S0;;;;;;5058;;2MASX J20472035+0029020,MCG +00-53-004,PGC 065376,SDSS J204720.36+002902.5,SDSS J204720.36+002902.6,SDSS J204720.37+002902.5,SDSS J204720.37+002902.6;;NGC 6963 is a double star.; -NGC6966;**;20:47:26.76;+00:22:03.7;Aqr;;;;;;;;;;;;;;;;;;;;; -NGC6967;G;20:47:34.10;+00:24:41.8;Aqr;1.19;0.71;95;14.30;12.80;10.84;10.15;9.92;23.09;S0-a;;;;;;;;2MASX J20473408+0024420,IRAS 20450+0013,MCG +00-53-006,PGC 065385,SDSS J204734.09+002441.7,UGC 11630;;CGCG misidentifies this with NGC 6965. NED follows MCG and UGC.; -NGC6968;G;20:48:32.48;-08:21:37.1;Aqr;1.97;1.18;135;13.32;;10.30;9.61;9.31;24.16;E-S0;;;;;;;;2MASX J20483244-0821366,MCG -02-53-006,PGC 065428;;; -NGC6969;G;20:48:27.63;+07:44:23.9;Del;1.21;0.37;15;14.47;13.52;11.09;10.38;10.12;23.59;Sa;;;;;;;;2MASX J20482762+0744238,MCG +01-53-001,PGC 065425,UGC 11633;;; -NGC6970;G;20:52:09.46;-48:46:40.0;Ind;1.54;0.87;115;13.16;12.68;10.60;9.92;9.59;22.49;SBa;;;;;;;;2MASX J20520946-4846398,ESO 235-008,ESO-LV 235-0080,IRAS 20486-4857,PGC 065608;;; -NGC6971;G;20:49:23.76;+05:59:44.1;Del;1.05;0.87;60;14.80;;11.60;10.90;10.67;23.43;Sb;;;;;;;;2MASX J20492375+0559440,MCG +01-53-002,PGC 065462,UGC 11637;;; -NGC6972;G;20:49:58.94;+09:53:56.9;Del;1.23;0.49;142;14.30;;10.89;10.17;9.97;23.00;S0-a;;;;;;;;2MASX J20495898+0953565,MCG +02-53-004,PGC 065485,UGC 11640;;UGC misprints name as 'MCG +02-43-004'.; -NGC6973;*;20:52:05.92;-05:53:42.7;Aqr;;;;;;;;;;;;;;;;;;SDSS J205205.92-055342.7;;; -NGC6974;SNR;20:51:04.32;+31:49:41.2;Cyg;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.; -NGC6975;G;20:52:26.03;-05:46:20.3;Aqr;1.02;0.92;165;14.95;;12.44;11.77;11.89;23.50;SABb;;;;;6976;;;2MASX J20522602-0546198,MCG -01-53-015,PGC 065620,SDSS J205226.03-054620.2,SDSS J205226.03-054620.3;;; -NGC6976;Dup;20:52:26.03;-05:46:20.3;Aqr;;;;;;;;;;;;;;;6975;;;;;; -NGC6977;G;20:52:29.71;-05:44:46.0;Aqr;1.25;0.93;168;14.28;;11.04;10.38;10.02;23.20;Sa;;;;;;;;2MASX J20522971-0544459,MCG -01-53-016,PGC 065625,SDSS J205229.70-054445.9,SDSS J205229.70-054446.0,SDSS J205229.71-054445.9;;; -NGC6978;G;20:52:35.43;-05:42:40.1;Aqr;1.51;0.57;126;14.22;;10.74;10.01;9.77;23.07;Sb;;;;;;;;2MASX J20523547-0542399,MCG -01-53-017,PGC 065631,SDSS J205235.43-054240.0,SDSS J205235.43-054240.1;;; -NGC6979;SNR;20:50:28.01;+32:01:33.2;Cyg;7.00;3.00;;;;;;;;;;;;;;;;;;;Dimensions taken from LEDA -NGC6980;*;20:52:48.94;-05:50:16.4;Aqr;;;;;;;;;;;;;;;;;;;;; -NGC6981;GCl;20:53:27.91;-12:32:13.4;Aqr;4.50;;;9.95;8.96;;;;;;;;;072;;;;MWSC 3419;;; -NGC6982;G;20:57:18.38;-51:51:44.2;Ind;1.00;0.49;66;14.25;13.92;11.73;10.98;10.77;22.86;SBa;;;;;;;;2MASX J20571835-5151442,ESO 235-019,ESO-LV 235-0190,IRAS 20537-5203,PGC 065776;;; -NGC6983;G;20:56:43.43;-43:59:09.7;Mic;0.85;0.66;151;14.24;;11.63;11.00;10.63;22.47;Sab;;;;;;;;2MASX J20564341-4359095,ESO 286-014,ESO-LV 286-0140,IRAS 20533-4410,MCG -07-43-004,PGC 065759;;; -NGC6984;G;20:57:53.98;-51:52:15.0;Ind;1.80;1.16;101;13.19;12.65;10.94;10.25;9.99;22.82;Sc;;;;;;;;2MASX J20575398-5152151,ESO 235-020,ESO-LV 235-0200,IRAS 20543-5203,PGC 065798;;; -NGC6985;G;20:45:02.98;-11:06:15.1;Aqr;1.25;0.51;106;14.39;;11.00;10.31;10.06;23.59;SBa;;;;;;;;2MASX J20450296-1106146,MCG -02-53-001 NED01,PGC 065306;;10 minute error in NGC RA.; -NGC6985A;G;20:45:01.27;-11:06:27.6;Aqr;1.02;0.44;160;18.42;;13.57;12.76;12.88;24.25;;;;;;;;;2MASX J20450126-1106276,MCG -02-53-001 NED02,PGC 969910;;; -NGC6986;G;20:56:30.66;-18:33:59.6;Cap;0.98;0.64;6;14.59;;11.21;10.42;10.14;23.38;E-S0;;;;;;;;2MASX J20563063-1833596,ESO 598-007,ESO-LV 598-0070,MCG -03-53-011,PGC 065750;;; -NGC6987;G;20:58:10.36;-48:37:49.1;Ind;2.03;1.63;125;13.57;;10.30;9.59;9.28;23.85;E;;;;;;;;2MASX J20581033-4837491,ESO 235-021,ESO-LV 235-0210,IRAS 20546-4849,PGC 065807;;; -NGC6988;G;20:55:48.96;+10:30:28.3;Del;0.68;0.59;21;15.00;;12.09;11.38;11.18;23.04;E;;;;;;;;2MASX J20554892+1030282,PGC 065732;;; -NGC6989;OCl;20:54:06.92;+45:14:21.4;Cyg;5.40;;;;;;;;;;;;;;;;;MWSC 3424;;; -NGC6990;G;20:59:56.92;-55:33:43.1;Ind;1.24;0.56;179;13.99;;11.78;11.14;10.94;22.85;Sa;;;;;;;;2MASX J20595692-5533431,ESO 187-043,ESO-LV 187-0430,IRAS 20562-5545,PGC 065862;;; -NGC6992;SNR;20:56:19.07;+31:44:33.9;Cyg;60.00;8.00;;7.00;;;;;;;;;;;;;;C 033;;;Dimensions and B-Mag taken from LEDA -NGC6993;G;20:53:54.05;-25:28:21.1;Cap;1.47;1.17;98;13.82;;12.07;11.45;10.83;23.11;SBc;;;;;;;;2MASX J20535406-2528210,ESO 529-011,IRAS 20509-2539,MCG -04-49-007,PGC 065671;;"NGC identification is not certain; ESO 529- ? 015 applies to nominal pos."; -NGC6994;Other;20:58:55.97;-12:38:07.8;Aqr;;;;;8.90;;;;;;;;;073;;;;;;Four Galactic stars.;V-mag taken from LEDA -NGC6995;SNR;20:57:10.76;+31:14:06.6;Cyg;12.00;12.00;;7.00;;;;;;;;;;;;;;;;;Dimensions and B-Mag taken from LEDA -NGC6996;*Ass;20:56:30.01;+45:28:22.9;Cyg;;;;;;;;;;;;;;;;;;;;; -NGC6997;Cl+N;20:56:39.45;+44:37:53.4;Cyg;6.90;;;;10.00;;;;;;;;;;;;;MWSC 3432;;; -NGC6998;G;21:01:37.68;-28:01:54.9;Mic;0.94;0.89;135;15.21;15.60;11.43;10.67;10.35;23.93;E;;;;;;;;2MASX J21013771-2801543,ESO 464-014,ESO-LV 464-0140,PGC 065925;;; -NGC6999;G;21:01:59.54;-28:03:32.1;Mic;1.21;0.99;1;15.02;;11.51;10.74;10.44;24.04;S0;;;;;;;;2MASX J21015953-2803313,ESO 464-015,ESO-LV 464-0150,PGC 065940;;; -NGC7000;HII;20:59:17.14;+44:31:43.6;Cyg;120.00;30.00;;4.00;;;;;;;;;;;;;;C 020,LBN 373;North America Nebula;;B-Mag taken from LEDA -NGC7001;G;21:01:07.75;-00:11:42.6;Aqr;1.38;1.03;169;14.00;;10.76;9.99;9.73;23.03;SABa;;;;;;;;2MASX J21010774-0011426,MCG +00-53-016,PGC 065905,SDSS J210107.74-001142.6,SDSS J210107.75-001142.6,UGC 11663;;; -NGC7002;G;21:03:44.80;-49:01:47.1;Ind;2.10;1.66;12;13.36;;10.45;9.81;9.48;23.92;E;;;;;;;;2MASX J21034478-4901471,ESO 235-043,ESO-LV 235-0430,PGC 066009;;; -NGC7003;G;21:00:42.42;+17:48:17.6;Del;0.99;0.66;116;13.80;;11.45;11.03;10.57;22.15;Sbc;;;;;;;;2MASX J21004241+1748174,IRAS 20584+1736,MCG +03-53-008,PGC 065887,UGC 11662;;; -NGC7004;G;21:04:02.18;-49:06:51.3;Ind;1.26;0.48;70;14.61;;11.59;10.88;10.50;23.70;S0-a;;;;;;;;2MASX J21040216-4906512,ESO 235-046,ESO-LV 235-0460,PGC 066019;;; -NGC7005;Other;21:01:57.65;-12:52:57.4;Aqr;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC7006;GCl;21:01:29.25;+16:11:15.1;Del;4.20;;;;10.46;9.56;9.02;9.00;;;;;;;;;;2MASX J21012946+1611164,C 042,MWSC 3446;;; -NGC7007;G;21:05:27.92;-52:33:07.1;Ind;3.39;1.23;1;12.89;12.04;9.91;9.19;8.96;24.22;E-S0;;;;;;;;2MASX J21052792-5233069,ESO 187-048,ESO-LV 187-0480,PGC 066069;;; -NGC7008;PN;21:00:32.80;+54:32:35.5;Cyg;1.43;;;13.30;10.70;11.87;11.52;11.41;;;12.99;13.75;13.23;;;;BD +53 2533C;IRAS 20590+5420,PN G093.4+05.4;;; -NGC7009;PN;21:04:10.79;-11:21:47.7;Aqr;;;;8.30;8.00;9.33;9.46;8.75;;;;12.66;12.78;;;;BD -11 5511,HD 200516,HIP 103992,TYC 5779-01804-1;2MASX J21041082-1121481,C 055,IRAS 21014-1133,PN G037.7-34.5;Saturn Nebula;; -NGC7010;G;21:04:39.50;-12:20:18.2;Aqr;2.18;1.12;47;13.25;;10.79;10.08;9.78;24.96;E;;;;;;5082;;2MASX J21043947-1220180,MCG -02-53-024,PGC 066039;;; -NGC7011;OCl;21:01:49.38;+47:21:15.5;Cyg;;;;;;;;;;;;;;;;;;;;; -NGC7012;G;21:06:45.52;-44:48:53.0;Mic;1.65;0.81;98;13.67;;10.41;9.74;9.45;23.59;E;;;;;;;;2MASX J21064552-4448531,ESO 286-051,ESO-LV 286-0510,PGC 066116;;; -NGC7013;G;21:03:33.58;+29:53:50.9;Cyg;4.16;1.33;158;12.90;;8.70;8.02;7.72;23.81;Sa;;;;;;;;2MASX J21033361+2953504,IRAS 21014+2941,MCG +05-49-001,PGC 066003,UGC 11670;;; -NGC7014;G;21:07:52.17;-47:10:44.4;Ind;2.03;1.77;130;12.93;12.25;10.13;9.41;9.15;23.71;E;;;;;;;;2MASX J21075218-4710445,ESO 286-057,ESO-LV 286-0570,PGC 066153;;; -NGC7015;G;21:05:37.38;+11:24:51.0;Equ;1.70;1.51;170;13.20;;10.63;9.99;9.69;23.05;Sbc;;;;;;;;2MASX J21053739+1124511,IRAS 21032+1112,MCG +02-53-012,PGC 066076,UGC 11674;;; -NGC7016;G;21:07:16.28;-25:28:08.2;Cap;1.02;0.86;90;14.87;;11.32;10.63;10.33;23.64;E;;;;;;;;2MASX J21071628-2528080,ESO 529-025,MCG -04-49-013,PGC 066136;;; -NGC7017;GPair;21:07:20.53;-25:29:12.7;Cap;0.85;0.60;85;14.93;;11.43;10.69;10.43;23.20;S0;;;;;;;;2MASX J21072021-2529150,ESO 529-026,MCG -04-49-014,PGC 066137;;; -NGC7018;GTrpl;21:07:25.35;-25:25:39.9;Cap;0.93;0.59;93;14.37;16.80;;;;;E;;;;;;;;MCG -04-49-015,PGC 066141;;; -NGC7019;G;21:06:25.73;-24:24:45.6;Cap;0.74;0.39;127;15.09;;12.46;11.81;11.47;22.71;SBb;;;;;;;;2MASX J21062571-2424456,ESO 529-022,IRAS 21035-2436,PGC 066107;;; -NGC7020;G;21:11:20.09;-64:01:31.2;Pav;4.10;1.67;165;12.81;11.48;9.77;9.11;8.89;24.42;S0-a;;;;;7021;;;2MASX J21112011-6401313,ESO 107-013,ESO-LV 107-0130,PGC 066291;;; -NGC7021;Dup;21:11:20.09;-64:01:31.2;Pav;;;;;;;;;;;;;;;7020;;;;;; -NGC7022;G;21:09:35.24;-49:18:13.2;Ind;1.52;1.08;7;14.04;;11.15;10.51;10.23;23.68;S0;;;;;;;;2MASX J21093522-4918132,ESO 235-065,ESO-LV 235-0650,PGC 066224;;; -NGC7023;Neb;21:01:35.62;+68:10:10.4;Cep;10.00;8.00;;7.20;;;;;;;;;;;;;;C 004,IRAS 21009+6758,LBN 487;Iris Nebula;Identified as IR cirrus by Strauss, et al (1992, ApJS, 83, 29).; -NGC7024;OCl;21:06:08.11;+41:29:04.5;Cyg;4.92;;;;;;;;;;;;;;;;;MWSC 3465;;; -NGC7025;G;21:07:47.34;+16:20:09.1;Del;2.02;1.32;45;14.10;;9.60;8.95;8.78;23.86;Sa;;;;;;;;2MASX J21074732+1620090,MCG +03-54-001,PGC 066151,UGC 11681;;; -NGC7026;PN;21:06:18.48;+47:51:07.9;Cyg;0.33;;;12.70;10.90;10.43;10.81;10.05;;;;15.33;14.20;;;;HD 201192;IRAS 21046+4739,PN G089.0+00.3;;; -NGC7027;PN;21:07:01.53;+42:14:11.5;Cyg;0.23;;;10.40;8.50;;;;;;;;16.25;;;;BD +41 4004,HD 201272,SAO 50463;2MASX J21070267+4214098,PN G084.9-03.4;;The 2MASX position refers to a star just east of the nebula.; -NGC7028;G;21:05:50.04;+18:28:05.5;Del;0.64;0.27;5;14.80;;12.62;11.91;11.91;21.82;Sc;;;;;;;;2MASX J21055003+1828056,IRAS 21035+1816,MCG +03-53-015,PGC 066087,UGC 11676;;Identification as NGC 7028 is very uncertain.; -NGC7029;G;21:11:52.05;-49:17:01.4;Ind;2.75;1.57;68;12.54;11.81;9.42;8.73;8.54;23.42;E;;;;;;;;2MASX J21115206-4917013,ESO 235-072,ESO-LV 235-0720,PGC 066318;;The APM position is southwest of the nucleus.; -NGC7030;G;21:11:13.33;-20:29:09.1;Cap;0.86;0.65;36;14.54;;11.55;10.89;10.72;22.81;SBab;;;;;;;;2MASX J21111331-2029084,ESO 598-028,ESO-LV 598-0280,IRAS 21083-2041,MCG -04-50-003,PGC 066283;;; -NGC7031;OCl;21:07:12.55;+50:52:32.0;Cyg;3.90;;;10.01;9.10;;;;;;;;;;;;;MWSC 3466;;; -NGC7032;G;21:15:22.88;-68:17:16.4;Pav;1.17;0.99;20;13.62;;11.56;11.03;10.73;22.57;Sc;;;;;;;;2MASX J21152288-6817164,ESO 074-026,ESO-LV 74-0260,IRAS 21109-6829,PGC 066427;;; -NGC7033;G;21:09:36.26;+15:07:29.6;Peg;0.88;0.60;4;15.20;;11.75;10.99;10.77;23.62;S0-a;;;;;;;;2MASX J21093624+1507299,MCG +02-54-002,PGC 066228;;; -NGC7034;G;21:09:38.18;+15:09:02.4;Peg;0.96;0.70;122;15.30;;11.26;10.54;10.22;23.90;E;;;;;;;;2MASX J21093817+1509019,MCG +02-54-003,PGC 066227,UGC 11687;;; -NGC7035;GPair;21:10:46.40;-23:08:09.0;Cap;1.20;;;15.41;;;;;;;;;;;;;;ESO 530-015;;;Diameter of the group inferred by the author. -NGC7035A;G;21:10:45.46;-23:08:06.5;Cap;0.89;0.65;110;15.37;;11.78;11.12;10.93;23.98;S0;;;;;;;;2MASX J21104545-2308066,ESO-LV 530-0151,PGC 066257;;; -NGC7035B;G;21:10:47.30;-23:08:13.5;Cap;1.23;0.91;88;15.63;;;;;24.57;S0;;;;;;;;ESO-LV 530-0150,PGC 066258;;; -NGC7036;OCl;21:10:12.39;+15:22:34.0;Peg;4.50;;;;;;;;;;;;;;;;;MWSC 3470;;; -NGC7037;OCl;21:10:45.72;+33:43:42.0;Cyg;6.00;;;;;;;;;;;;;;;;;MWSC 3477;;; -NGC7038;G;21:15:07.51;-47:13:13.8;Ind;3.22;1.69;127;12.69;;9.78;9.13;8.81;23.34;SABc;;;;;;;;2MASX J21150752-4713139,ESO 286-079,ESO-LV 286-0790,IRAS 21117-4725,PGC 066414;;; -NGC7039;OCl;21:10:47.80;+45:37:18.5;Cyg;7.80;;;8.06;7.60;;;;;;;;;;;;;MWSC 3474;;; -NGC7040;G;21:13:16.50;+08:51:53.9;Equ;1.04;0.74;155;14.90;;11.95;11.28;11.22;23.39;Sbc;;;;;;;;2MASX J21131651+0851541,MCG +01-54-004,PGC 066366,UGC 11701;;The companion noted in CGCG and UGC may be a line of three stars.; -NGC7041;G;21:16:32.38;-48:21:48.8;Ind;3.46;1.47;84;12.16;11.11;9.07;8.47;8.21;23.48;E-S0;;;;;;;;2MASX J21163238-4821490,ESO 235-082,ESO-LV 235-0820,PGC 066463;;; -NGC7042;G;21:13:45.86;+13:34:29.7;Peg;1.78;1.56;138;13.00;;10.34;9.60;9.37;22.80;Sb;;;;;;;;2MASX J21134584+1334295,IRAS 21113+1321,MCG +02-54-013,PGC 066378,UGC 11702;;; -NGC7043;G;21:14:04.17;+13:37:33.7;Peg;0.82;0.64;129;14.90;;11.93;11.29;11.11;23.11;Sa;;;;;;;;2MASX J21140417+1337337,MCG +02-54-014,PGC 066385,UGC 11704;;; -NGC7044;OCl;21:13:09.41;+42:29:46.3;Cyg;6.00;;;;12.00;;;;;;;;;;;;;MWSC 3485;;; -NGC7045;**;21:14:50.06;+04:30:24.4;Equ;;;;;;;;;;;;;;;;;;;;; -NGC7046;G;21:14:56.04;+02:50:05.4;Equ;1.10;0.77;113;14.20;;10.93;10.19;9.99;22.81;Sc;;;;;;;;2MASX J21145603+0250053,IRAS 21123+0237,MCG +00-54-009,PGC 066407,UGC 11708;;; -NGC7047;G;21:16:27.65;-00:49:35.4;Aqr;1.34;0.65;104;14.30;;11.13;10.47;10.20;23.52;Sb;;;;;;;;2MASX J21162763-0049353,IRAS 21138-0102,MCG +00-54-010,PGC 066461,SDSS J211627.64-004935.3,SDSS J211627.64-004935.4,UGC 11712;;; -NGC7048;PN;21:14:15.20;+46:17:19.0;Cyg;1.02;;;11.30;12.10;;;;;;;;19.12;;;;;IRAS 21124+4604,PN G088.7-01.6;;; -NGC7049;G;21:19:00.30;-48:33:43.8;Ind;3.94;2.69;64;11.28;10.74;8.14;7.59;7.25;23.38;S0;;;;;;;;2MASX J21190024-4833432,ESO 236-001,ESO-LV 236-0010,IRAS 21156-4846,PGC 066549;;; -NGC7050;OCl;21:15:08.55;+36:10:30.9;Cyg;3.60;;;;;;;;;;;;;;;;;MWSC 3487;;; -NGC7051;G;21:19:51.33;-08:46:58.6;Aqr;1.25;0.92;75;14.00;;10.50;9.74;9.47;22.89;Sa;;;;;;;;2MASX J21195132-0846584,IRAS 21171-0859,MCG -02-54-004,PGC 066566;;; -NGC7052;G;21:18:33.05;+26:26:49.3;Vul;1.82;0.90;66;14.85;13.09;9.54;8.86;8.57;24.04;E;;;;;;;;2MASX J21183304+2626486,IRAS 21163+2613,MCG +04-50-006,PGC 066537,UGC 11718;;; -NGC7053;G;21:21:07.61;+23:05:05.3;Peg;1.57;1.47;25;14.30;;10.18;9.48;9.20;23.87;S0-a;;;;;;;;2MASX J21210763+2305059,IRAS 21188+2252,MCG +04-50-009,PGC 066610,SDSS J212107.62+230505.7,UGC 11727;;; -NGC7054;Other;21:20:43.47;+39:10:19.9;Cyg;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7055;OCl;21:19:30.11;+57:32:44.2;Cep;3.00;;;;;;;;;;;;;;;;;MWSC 3494;;; -NGC7056;G;21:22:07.56;+18:39:56.4;Peg;1.10;1.03;60;13.86;13.09;10.80;10.12;9.73;22.68;SBbc;;;;;;1382;;2MASX J21220675+1840003,2MASX J21220752+1839563,IRAS 21198+1827,MCG +03-54-008,PGC 066641,UGC 11734;;; -NGC7057;G;21:24:58.70;-42:27:37.6;Mic;1.36;0.81;107;13.65;;10.59;9.90;9.69;23.21;E-S0;;;;;;;;2MASX J21245868-4227376,ESO 287-017,ESO-LV 287-0170,MCG -07-44-004,PGC 066708;;; -NGC7058;OCl;21:21:53.58;+50:49:08.5;Cyg;5.10;;;;;;;;;;;;;;;;;MWSC 3501;;NGC identification is not certain.; -NGC7059;G;21:27:21.47;-60:00:52.5;Pav;3.69;1.31;101;12.51;12.30;10.40;9.90;9.61;23.20;SABc;;;;;;;;2MASX J21272147-6000524,ESO 145-005,ESO-LV 145-0050,IRAS 21236-6013,PGC 066784;;; -NGC7060;G;21:25:53.58;-42:24:40.6;Mic;2.02;1.09;153;13.58;;10.63;9.93;9.64;23.63;SABa;;;;;;;;2MASX J21255357-4224408,ESO 287-022,ESO-LV 287-0220,IRAS 21226-4237,MCG -07-44-006,PGC 066732;;; -NGC7061;G;21:27:26.85;-49:03:48.6;Gru;1.63;0.94;138;14.15;;11.45;10.78;10.50;24.04;E;;;;;;;;2MASX J21272683-4903486,ESO 236-013,ESO-LV 236-0130,PGC 066785;;; -NGC7062;OCl;21:23:27.48;+46:22:42.7;Cyg;3.60;;;8.99;8.30;;;;;;;;;;;;;MWSC 3505;;; -NGC7063;OCl;21:24:21.70;+36:29:15.0;Cyg;6.30;;;7.32;7.00;;;;;;;;;;;;;MWSC 3507;;; -NGC7064;G;21:29:02.98;-52:46:03.4;Ind;3.74;0.70;92;13.04;12.69;;;;22.99;SBc;;;;;;;;ESO 188-009,ESO-LV 188-0090,IRAS 21255-5259,PGC 066836;;; -NGC7065;G;21:26:42.51;-06:59:41.7;Aqr;1.00;0.79;29;15.00;;11.19;10.54;10.20;22.90;SBab;;;;;;;;2MASX J21264253-0659418,MCG -01-54-017,PGC 066766,SDSS J212642.51-065941.6;;Star superposed 5.0 arcsec southwest of the nucleus.; -NGC7065A;G;21:26:57.85;-07:01:17.5;Aqr;1.10;1.04;130;14.41;;11.66;10.57;10.60;23.84;Sc;;;;;;;;2MASX J21265783-0701179,IRAS 21242-0714,MCG -01-54-018,PGC 066774,SDSS J212657.85-070117.5;;; -NGC7066;GPair;21:26:14.00;+14:10:55.0;Peg;0.83;0.81;160;15.20;;11.19;10.41;10.34;23.47;Sa;;;;;;;;2MASXJ21261376+1410589,MCG +02-54-025,PGC 066747,UGC11741;;; -NGC7067;OCl;21:24:23.12;+48:00:33.3;Cyg;2.40;;;10.64;9.70;;;;;;;;;;;;;MWSC 3508;;; -NGC7068;G;21:26:32.37;+12:11:03.5;Peg;0.76;0.33;175;14.50;;11.66;10.88;10.61;22.52;Sa;;;;;;;;2MASX J21263233+1211036,IRAS 21241+1158,MCG +02-54-027,PGC 066765,SDSS J212632.33+121103.7,SDSS J212632.34+121103.7;;; -NGC7069;G;21:28:05.87;-01:38:48.7;Aqr;1.15;0.70;17;14.80;;10.98;10.26;10.01;23.66;E-S0;;;;;;;;2MASX J21280588-0138487,MCG +00-54-019,PGC 066807,UGC 11747;;; -NGC7070;G;21:30:25.35;-43:05:13.6;Gru;2.50;2.16;178;12.70;12.29;11.23;10.31;10.02;23.40;Sc;;;;;;;;2MASX J21302534-4305135,ESO 287-028,ESO-LV 287-0280,IRAS 21272-4318,MCG -07-44-016,PGC 066869;;; -NGC7070A;G;21:31:47.29;-42:50:51.6;Gru;2.21;1.70;6;13.01;12.39;10.25;9.58;9.31;23.72;S0-a;;;;;;;;2MASX J21314729-4250515,ESO 287-034,ESO-LV 287-0340,MCG -07-44-021,PGC 066909;;; -NGC7071;*Ass;21:26:39.33;+47:55:10.5;Cyg;;;;;;;;;;;;;;;;;;;;; -NGC7072;G;21:30:36.92;-43:09:12.7;Gru;0.82;0.63;81;14.31;12.81;12.42;11.96;11.63;21.95;SABc;;;;;;;;2MASX J21303692-4309126,ESO 287-031,ESO-LV 287-0310,IRAS 21273-4322,MCG -07-44-018,PGC 066874;;; -NGC7072A;G;21:30:25.68;-43:12:09.4;Gru;0.80;0.61;108;15.23;;13.85;13.20;13.18;22.36;SABc;;;;;;;;2MASX J21302566-4312095,ESO 287-029,ESO-LV 287-0290,MCG -07-44-017,PGC 066870;;; -NGC7073;G;21:29:26.02;-11:29:17.3;Cap;0.92;0.81;170;16.00;;12.21;11.47;11.28;22.82;Sb;;;;;;;;2MASX J21292601-1129170,IRAS 21267-1142,MCG -02-54-010,PGC 066847;;; -NGC7074;G;21:29:38.84;+06:40:57.2;Peg;0.83;0.48;120;15.00;;11.87;11.04;10.71;23.77;S0;;;;;;;;2MASX J21293884+0640572,IRAS 21271+0627,PGC 066850;;; -NGC7075;G;21:31:32.98;-38:37:04.5;Gru;1.45;1.09;114;13.80;;10.54;9.80;9.56;23.43;E;;;;;;;;2MASX J21313299-3837046,ESO 343-004,ESO-LV 343-0040,MCG -07-44-020,PGC 066895;;; -NGC7076;PN;21:26:23.50;+62:53:33.0;Cep;0.93;;;14.50;13.50;;;;;;;18.00;;;;;;IRAS 21251+6240,PN G101.8+08.7;;; -NGC7077;G;21:29:59.61;+02:24:51.0;Aqr;0.90;0.56;12;14.25;13.67;12.31;11.82;11.38;23.09;E;;;;;;;;2MASX J21295963+0224517,MCG +00-54-028,PGC 066860,UGC 11755;;; -NGC7078;GCl;21:29:58.38;+12:10:00.6;Peg;11.10;;;3.00;6.30;;;;;;;;;015;;;;IRAS 21274+1156,MWSC 3518,PN G065.0-27.3;;;V-mag taken from LEDA -NGC7079;G;21:32:35.25;-44:04:03.2;Gru;2.30;1.44;77;12.63;11.61;9.48;8.82;8.58;23.02;S0;;;;;;;;2MASX J21323526-4404029,ESO 287-036,ESO-LV 287-0360,MCG -07-44-022,PGC 066934;;; -NGC7080;G;21:30:01.95;+26:43:04.1;Peg;1.63;1.54;100;13.13;12.33;10.54;9.79;9.40;22.94;Sb;;;;;;;;2MASX J21300195+2643044,IRAS 21278+2629,MCG +04-50-012,PGC 066861,SDSS J213001.92+264304.4,UGC 11756;;; -NGC7081;G;21:31:24.12;+02:29:28.6;Peg;0.77;0.65;155;13.70;;11.74;11.16;11.02;22.03;Sb;;;;;;;;2MASX J21312413+0229285,IRAS 21288+0216,MCG +00-54-030,PGC 066891,UGC 11759;;The HIPASS beam probably includes the galaxy UGC 11760.; -NGC7082;OCl;21:29:17.74;+47:07:34.6;Cyg;9.00;;;7.70;7.20;;;;;;;;;;;;;MWSC 3517;;; -NGC7083;G;21:35:44.69;-63:54:10.2;Ind;3.56;1.98;6;11.93;11.04;9.37;8.73;8.42;22.94;SBbc;;;;;;;;2MASX J21354470-6354101,ESO 107-036,ESO-LV 107-0360,IRAS 21318-6407,PGC 067023;;; -NGC7084;OCl;21:32:33.13;+17:30:30.7;Peg;6.00;;;;;;;;;;;;;;;;;MWSC 3524;;; -NGC7085;G;21:32:25.23;+06:34:52.5;Peg;0.99;0.42;148;15.20;;12.03;11.36;11.07;23.39;Sb;;;;;;;;2MASX J21322521+0634525,IRAS 21299+0621,MCG +01-55-001,PGC 066926;;; -NGC7086;OCl;21:30:27.55;+51:36:01.9;Cyg;4.80;;;9.25;8.40;;;;;;;;;;;;;MWSC 3520;;; -NGC7087;G;21:34:33.47;-40:49:07.1;Gru;0.86;0.62;47;13.93;;10.75;9.99;9.67;21.93;SBab;;;;;;;;2MASX J21343347-4049071,ESO 343-008,ESO-LV 343-0080,IRAS 21314-4102,MCG -07-44-025,PGC 066988;;; -NGC7088;Other;21:33:22.12;-00:22:57.4;Aqr;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7089;GCl;21:33:27.01;-00:49:23.9;Aqr;8.40;;;;6.25;;;;;;;;;002;;;;MWSC 3526;;; -NGC7090;G;21:36:28.86;-54:33:26.4;Ind;8.15;1.63;128;11.60;11.05;9.03;8.39;8.16;23.32;Sc;;;;;;;;2MASX J21362886-5433263,ESO 188-012,ESO-LV 188-0120,IRAS 21329-5446,PGC 067045;;Position in 1997AJ....113.1548C is incorrect.; -NGC7091;G;21:34:07.94;-36:39:13.4;Gru;1.86;1.31;86;13.43;;12.30;11.77;11.77;23.30;Sd;;;;;;5114;;ESO 403-008,ESO-LV 403-0080,MCG -06-47-007,PGC 066972;;; -NGC7092;OCl;21:31:48.32;+48:26:17.4;Cyg;19.50;;;4.66;4.60;;;;;;;;;039;;;;MWSC 3521;;; -NGC7093;OCl;21:34:21.70;+45:57:54.0;Cyg;3.60;;;;;;;;;;;;;;;;;MWSC 3528;;; -NGC7094;PN;21:36:52.97;+12:47:19.1;Peg;1.57;;;13.60;13.40;14.14;14.13;14.19;;;12.39;13.58;13.68;;;;;IRAS 21344+1233,PN G066.7-28.2;;; -NGC7095;G;21:52:26.44;-81:31:51.0;Oct;2.71;2.21;135;12.22;;10.11;9.41;9.17;23.11;SBc;;;;;;;;2MASX J21522643-8131507,ESO 027-001,ESO-LV 27-0010,IRAS 21457-8145,PGC 067546;;; -NGC7096;G;21:41:19.28;-63:54:31.3;Ind;2.10;1.98;125;12.81;11.58;9.84;9.16;8.95;23.19;Sa;;;;;;5121;;2MASX J21411929-6354314,ESO 107-046,ESO-LV 107-0460,PGC 067168;;; -NGC7096A;G;21:38:48.27;-64:21:00.7;Ind;2.00;0.69;104;14.05;;11.75;11.10;10.80;23.54;Sbc;;;;;;5120;;2MASX J21384824-6421007,ESO-LV 1070410,IRAS 21348-6434,PGC 067093;;; -NGC7097;G;21:40:12.91;-42:32:21.8;Gru;1.89;1.36;17;12.66;11.71;9.58;8.94;8.68;22.85;E;;;;;;;;2MASX J21401288-4232218,ESO 287-048,ESO-LV 287-0480,MCG -07-44-029,PGC 067146;;SGC incorrectly calls this galaxy NGC 7095.; -NGC7097A;G;21:40:37.86;-42:28:49.0;Gru;0.70;0.44;131;15.09;;12.47;11.90;11.64;23.15;E;;;;;;;;2MASX J21403785-4228488,ESO 287-049,ESO-LV 287-0490,MCG -07-44-030,PGC 067160;;; -NGC7098;G;21:44:16.12;-75:06:40.8;Oct;1.78;0.91;62;12.33;11.37;8.94;7.84;7.87;22.21;Sa;;;;;;;;2MASX J21441607-7506408,ESO 048-005,ESO-LV 48-0050,IRAS 21393-7520,PGC 067266;;; -NGC7099;GCl;21:40:22.02;-23:10:44.7;Cap;9.00;;;;7.10;;;;;;;;;030;;;;MWSC 3543;;; -NGC7100;*;21:39:07.04;+08:57:05.5;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7101;G;21:39:34.61;+08:52:37.0;Peg;0.82;0.75;165;14.70;;11.11;10.36;10.13;23.29;E;;;;;;;;2MASX J21393460+0852366,MCG +01-55-007,PGC 067118;;NGC 7100 is a Galactic star.; -NGC7102;G;21:39:44.49;+06:17:10.7;Peg;1.48;0.89;141;14.40;;11.57;10.89;10.76;23.29;Sb;;;;;;5127;;2MASX J21394454+0617106,MCG +01-55-008,PGC 067120,SDSS J213944.57+061710.8,UGC 11786;;The IC identification is uncertain.; -NGC7103;G;21:39:51.50;-22:28:26.0;Cap;1.42;0.92;63;15.08;;10.90;10.17;9.88;24.39;E;;;;;;;;2MASX J21395143-2228251,ESO 531-015,PGC 067124;;; -NGC7104;G;21:40:03.18;-22:25:29.3;Cap;0.79;0.73;55;15.07;;11.57;10.75;10.43;23.63;E;;;;;;;;2MASX J21400320-2225291,ESO 531-018,MCG -04-51-008,PGC 067137;;; -NGC7105;G;21:41:41.35;-10:38:07.8;Cap;1.51;0.74;136;15.00;;10.77;9.96;9.82;23.88;S0;;;;;;;;2MASX J21414133-1038083,MCG -02-55-001,PGC 067181;;; -NGC7106;G;21:42:36.59;-52:41:58.3;Ind;1.66;1.12;85;13.77;;11.44;11.00;10.46;23.37;SABc;;;;;;;;2MASX J21423659-5241583,ESO 188-017,ESO-LV 188-0170,PGC 067215;;; -NGC7107;G;21:42:26.48;-44:47:25.0;Gru;1.91;0.94;127;13.21;;;;;22.86;SBm;;;;;;;;ESO 287-052,ESO-LV 287-0520,IRAS 21392-4501,PGC 067209;;; -NGC7108;G;21:41:53.75;-06:42:31.8;Aqr;1.17;0.79;53;15.00;;11.47;10.78;10.43;23.98;E;;;;;7111;;;2MASX J21415375-0642317,MCG -01-55-002,PGC 067189,SDSS J214153.74-064231.7,SDSS J214153.74-064231.8,SDSS J214153.75-064231.8;;; -NGC7109;G;21:41:58.53;-34:26:45.2;PsA;0.87;0.81;105;14.42;;11.29;10.69;10.41;23.06;E;;;;;;;;2MASX J21415854-3426451,ESO 403-015,ESO-LV 403-0150,MCG -06-47-011,PGC 067192;;; -NGC7110;G;21:42:12.15;-34:09:44.0;PsA;1.40;0.73;74;14.25;;11.43;10.76;10.47;23.25;Sb;;;;;;;;2MASX J21421214-3409436,ESO 403-016,ESO-LV 403-0160,MCG -06-47-012,PGC 067199,TYC 7490-1217-1;;; -NGC7111;Dup;21:41:53.75;-06:42:31.8;Aqr;;;;;;;;;;;;;;;7108;;;;;; -NGC7112;G;21:42:26.64;+12:34:09.3;Peg;0.99;0.99;40;15.20;;11.01;10.34;10.03;23.96;E;;;;;7113;;;2MASX J21422663+1234093,MCG +02-55-009,PGC 067208,SDSS J214226.63+123409.2;;; -NGC7113;Dup;21:42:26.64;+12:34:09.3;Peg;;;;;;;;;;;;;;;7112;;;;;; -NGC7114;*;21:41:44.03;+42:50:30.5;Cyg;;;;15.40;3.00;13.54;13.25;13.11;;;;;;;;;;UCAC2 46600206;Schmidt's Nova Cygni;; -NGC7115;G;21:43:38.53;-25:21:05.8;PsA;1.91;0.59;69;13.95;;11.08;10.41;10.24;23.45;Sb;;;;;;;;2MASX J21433851-2521057,ESO 531-025,IRAS 21407-2535,MCG -04-51-011,PGC 067248;;; -NGC7116;G;21:42:40.22;+28:56:47.7;Cyg;1.22;0.50;105;14.20;;11.59;10.91;10.69;22.69;Sc;;;;;;;;2MASX J21424021+2856475,MCG +05-51-001,PGC 067218,UGC 11796;;; -NGC7117;G;21:45:47.04;-48:25:13.5;Gru;1.71;1.00;30;13.57;;10.63;9.90;9.66;23.64;E-S0;;;;;;;;2MASX J21454702-4825134,ESO 236-040,ESO-LV 236-0400,PGC 067303;;; -NGC7118;G;21:46:09.74;-48:21:13.7;Gru;1.70;1.36;45;13.49;;10.49;9.80;9.56;23.44;E-S0;;;;;;;;2MASX J21460973-4821135,ESO 236-045,ESO-LV 236-0450,PGC 067318;;; -NGC7119A;G;21:46:16.05;-46:30:58.1;Gru;0.70;0.46;141;13.54;;;;;21.24;SBbc;;;;;;;;ESO 288-002,ESO-LV 288-0020,IRAS 21430-4644,PGC 067325;;; -NGC7119B;G;21:46:15.18;-46:31:06.3;Gru;0.64;0.21;24;13.74;;11.25;10.56;10.21;20.96;Sc;;;;;;;;2MASX J21461519-4631063,ESO 288-001,ESO-LV 288-0010,PGC 067322;;; -NGC7120;G;21:44:33.22;-06:31:23.4;Aqr;0.84;0.46;136;15.00;;12.15;11.51;11.12;22.79;Sb;;;;;;;;2MASX J21443322-0631232,IRAS 21419-0645,MCG -01-55-006,PGC 067273;;; -NGC7121;G;21:44:52.58;-03:37:11.0;Aqr;1.17;0.62;2;14.00;;11.89;11.25;10.96;22.89;SBbc;;;;;;;;2MASX J21445258-0337109,IRAS 21422-0351,MCG -01-55-008,PGC 067287;;; -NGC7122;**;21:45:47.82;-08:49:46.6;Cap;;;;;;;;;;;;;;;;;;;;; -NGC7123;G;21:50:46.63;-70:20:02.9;Ind;2.63;1.12;145;13.29;;9.61;8.81;8.47;23.78;Sa;;;;;;;;2MASX J21504657-7020030,ESO 075-027,ESO-LV 75-0270,PGC 067466;;; -NGC7124;G;21:48:05.39;-50:33:54.8;Ind;2.56;1.06;146;13.28;12.22;10.42;9.94;9.49;23.20;SBbc;;;;;;;;2MASX J21480540-5033549,ESO 236-049,ESO 237-002,ESO-LV 237-0020,IRAS 21447-5047,PGC 067375;;; -NGC7125;G;21:49:15.98;-60:42:47.4;Ind;2.94;1.84;95;12.70;12.37;11.11;10.82;10.21;23.53;SABc;;;;;;;;2MASX J21491594-6042474,ESO 145-017,ESO-LV 145-0170,IRAS 21456-6056,PGC 067417;;Extended HIPASS source; -NGC7126;G;21:49:18.13;-60:36:33.2;Ind;2.55;1.09;79;12.99;12.36;10.64;10.02;9.75;23.02;Sc;;;;;;;;2MASX J21491813-6036334,ESO 145-018,ESO-LV 145-0180,IRAS 21456-6050,PGC 067418;;; -NGC7127;OCl;21:43:41.99;+54:37:47.9;Cyg;2.70;;;;;;;;;;;;;;;;;MWSC 3553;;; -NGC7128;OCl;21:43:57.81;+53:42:54.5;Cyg;3.00;;;10.54;9.70;;;;;;;;;;;;;MWSC 3554;;; -NGC7129;Cl+N;21:42:59.03;+66:06:46.7;Cep;2.10;;;11.50;11.50;;;;;;;;;;;;;2MASX J21425712+6606350,LBN 497,MWSC 3549;;;B-Mag taken from LEDA -NGC7130;G;21:48:19.52;-34:57:04.5;PsA;1.56;1.33;160;12.86;13.87;10.23;9.54;9.20;22.55;Sa;;;;;;5135;;2MASX J21481948-3457047,ESO 403-032,ESO-LV 403-0320,IRAS 21453-3511,MCG -06-47-015,PGC 067387;;; -NGC7131;G;21:47:36.11;-13:10:57.4;Cap;1.13;0.87;114;14.00;;11.14;10.41;10.19;23.83;S0;;;;;;;;2MASX J21473610-1310576,MCG -02-55-002,PGC 067359;;; -NGC7132;G;21:47:16.58;+10:14:28.2;Peg;0.90;0.72;101;14.60;;11.71;10.98;10.99;23.00;Sc;;;;;;;;2MASX J21471659+1014283,MCG +02-55-013,PGC 067349;;; -NGC7133;Other;21:44:26.70;+66:10:06.3;Cep;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7134;Other;21:48:56.26;-12:58:23.3;Cap;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC7135;G;21:49:46.01;-34:52:34.6;PsA;2.60;2.03;45;12.25;13.30;9.72;9.07;8.85;23.61;E-S0;;;;;;5136;;2MASX J21494602-3452346,ESO 403-035,ESO-LV 403-0350,MCG -06-48-001,PGC 067425;;"Joguet et al. (2001A&A...380...19J) claim ""No activity""."; -NGC7136;**;21:49:43.13;-11:47:35.9;Cap;;;;;;;;;;;;;;;;;;;;; -NGC7137;G;21:48:13.04;+22:09:34.5;Peg;1.84;1.65;50;13.30;;10.44;9.73;8.87;23.02;SABc;;;;;;;;2MASX J21481303+2209344,MCG +04-51-005,PGC 067379,UGC 11815;;; -NGC7138;G;21:49:01.09;+12:30:51.2;Peg;1.20;0.62;176;15.40;;11.38;10.63;10.35;23.98;SBa;;;;;;;;2MASX J21490109+1230516,MCG +02-55-014,PGC 067406,SDSS J214901.08+123051.1,UGC 11817;;; -NGC7139;PN;21:46:08.60;+63:47:31.0;Cep;1.28;;;13.00;13.30;;;;;;;;18.72;;;;;IRAS 21448+6333,PN G104.1+07.9;;; -NGC7140;G;21:52:15.31;-55:34:10.8;Ind;3.04;2.07;18;12.68;13.49;9.70;9.10;8.95;23.16;SABb;;;;;7141;;;2MASX J21521535-5534107,ESO 189-007,ESO-LV 189-0070,IRAS 21488-5548,PGC 067532;;; -NGC7141;Dup;21:52:15.31;-55:34:10.8;Ind;;;;;;;;;;;;;;;7140;;;;;; -NGC7142;OCl;21:45:09.51;+65:46:28.0;Cep;9.60;;;10.36;9.30;;;;;;;;;;;;;MWSC 3557;;; -NGC7143;Other;21:48:53.67;+29:57:17.9;Peg;;;;;;;;;;;;;;;;;;;;Line of five Galactic stars.; -NGC7144;G;21:52:42.43;-48:15:13.5;Gru;3.41;3.20;10;11.87;10.71;8.85;8.11;7.96;23.22;E;;;;;;;;2MASX J21524246-4815142,ESO 237-011,ESO-LV 237-0110,PGC 067557;;; -NGC7145;G;21:53:20.24;-47:52:56.8;Gru;2.95;0.76;150;12.13;11.23;9.41;8.70;8.51;23.15;E;;;;;;;;2MASX J21532023-4752569,ESO 237-013,ESO-LV 237-0130,PGC 067583;;; -NGC7146;G;21:51:47.37;+03:01:01.3;Peg;0.73;0.42;89;15.50;;12.30;11.64;11.38;23.27;SABa;;;;;;;;2MASX J21514738+0301014,MCG +00-55-024,PGC 067508;;; -NGC7147;G;21:51:58.43;+03:04:18.1;Peg;0.99;0.76;90;14.80;;11.27;10.56;10.23;23.57;S0-a;;;;;;;;2MASX J21515839+0304184,MCG +00-55-025,PGC 067518;;; -NGC7148;**;21:52:08.47;+03:20:29.3;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7149;G;21:52:11.68;+03:18:04.1;Peg;1.30;0.86;15;14.60;;10.88;10.14;9.90;23.94;E;;;;;;;;2MASX J21521166+0318045,MCG +00-55-026,PGC 067524,UGC 11835;;; -NGC7150;Other;21:50:23.99;+49:45:21.9;Cyg;;;;;;;;;;;;;;;;;;;;Group of 4-5 Galactic stars.; -NGC7151;G;21:55:04.14;-50:39:28.4;Ind;2.66;0.89;73;13.48;;;;;23.34;SABc;;;;;;;;ESO 237-015,ESO-LV 237-0150,PGC 067634;;; -NGC7152;G;21:53:59.04;-29:17:20.7;PsA;1.27;0.31;18;14.45;;11.88;11.30;10.85;22.79;SBb;;;;;;;;2MASX J21535902-2917206,ESO 466-013,ESO-LV 466-0130,MCG -05-51-020,PGC 067601;;; -NGC7153;G;21:54:35.41;-29:03:49.0;PsA;1.91;0.28;66;14.28;;11.03;10.28;10.01;23.35;Sb;;;;;;;;2MASX J21543539-2903488,ESO 466-016,ESO-LV 466-0160,MCG -05-51-022,PGC 067624;;; -NGC7154;G;21:55:21.04;-34:48:50.9;PsA;2.26;1.91;116;12.98;12.35;11.22;10.65;10.38;23.19;I;;;;;;;;2MASX J21552103-3448507,ESO 404-008,ESO-LV 404-0080,IRAS 21523-3503,MCG -06-48-005,PGC 067641;;Confused HIPASS source; -NGC7155;G;21:56:09.73;-49:31:19.0;Ind;2.15;1.91;97;13.01;11.83;9.86;9.20;8.97;23.49;S0;;;;;;5143;;2MASX J21560971-4931188,ESO 237-016,ESO-LV 237-0160,PGC 067663;;SGC and ESO misidentify IC 5143.; -NGC7156;G;21:54:33.63;+02:56:34.9;Peg;1.40;1.22;120;13.41;12.72;10.81;10.15;9.79;22.65;SABc;;;;;;;;2MASX J21543362+0256347,IRAS 21520+0242,MCG +00-55-029,PGC 067622,UGC 11843;;; -NGC7157;G;21:56:56.70;-25:21:01.9;PsA;1.17;0.55;12;15.00;;12.04;11.27;11.17;23.51;Sa;;;;;;;;2MASX J21565669-2521016,ESO 532-003,ESO-LV 532-0030,MCG -04-51-015,PGC 067693;;; -NGC7158;Other;21:57:28.12;-11:35:33.1;Cap;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC7159;G;21:56:25.61;+13:33:45.5;Peg;0.71;0.56;115;15.20;;12.48;11.78;11.45;;;;;;;;;;2MASX J21562561+1333456,IRAS 21540+1319,PGC 067674;;;Diameters and position angle taken from Simbad. -NGC7160;OCl;21:53:40.27;+62:36:11.9;Cep;4.20;;;6.34;6.10;;;;;;;;;;;;;MWSC 3572;;; -NGC7161;Other;21:56:57.89;+02:54:58.4;Peg;;;;;;;;;;;;;;;;;;;;Asterism of Galactic stars. NGC identification is not certain.; -NGC7162;G;21:59:39.13;-43:18:21.5;Gru;3.04;1.10;10;13.36;;10.92;10.32;10.07;23.61;Sc;;;;;;;;2MASX J21593905-4318224,ESO 288-026,ESO-LV 288-0260,MCG -07-45-003,PGC 067795;;The APMBGC position is 17 arcsec south of the nucleus.; -NGC7162A;G;22:00:35.75;-43:08:30.2;Gru;2.39;1.73;42;13.54;;;;;23.45;Sm;;;;;;;;ESO 288-028,ESO-LV 288-0280,MCG -07-45-005,PGC 067818;;The APMBGC position is 8 arcsec northwest of the center of the bar.; -NGC7163;G;21:59:20.44;-31:52:59.4;PsA;2.17;1.04;101;13.52;;10.47;9.74;9.76;24.30;Sab;;;;;;;;2MASX J21592042-3152590,ESO 466-030,ESO-LV 466-0300,IRAS 21564-3207,MCG -05-51-035,PGC 067785;;; -NGC7164;G;21:56:23.64;+01:21:50.2;Aqr;0.72;0.40;113;14.90;;11.93;11.29;10.92;23.56;S0-a;;;;;;;;2MASX J21562364+0121503,PGC 067673;;; -NGC7165;G;21:59:26.10;-16:30:44.4;Aqr;1.12;0.92;38;14.35;13.54;11.40;10.71;10.49;22.89;Sab;;;;;;;;2MASX J21592607-1630446,IRAS 21567-1645,MCG -03-56-002,PGC 067788;;; -NGC7166;G;22:00:32.92;-43:23:23.0;Gru;0.81;0.52;10;12.64;11.84;9.47;8.72;8.52;21.30;E-S0;;;;;;;;2MASX J22003292-4323232,ESO 288-027,ESO-LV 288-0270,MCG -07-45-004,PGC 067817;;; -NGC7167;G;22:00:30.64;-24:37:57.4;Aqr;1.83;1.30;137;13.22;;11.01;10.51;9.95;22.43;SBc;;;;;;;;2MASX J22003063-2437573,ESO 532-009,ESO-LV 532-0090,IRAS 21576-2452,MCG -04-52-001,PGC 067816;;; -NGC7168;G;22:02:07.40;-51:44:35.1;Ind;2.23;1.64;69;12.86;11.86;9.82;9.14;8.88;23.43;E;;;;;;;;2MASX J22020742-5144352,ESO 237-026,ESO-LV 237-0260,PGC 067882;;; -NGC7169;G;22:02:48.64;-47:41:52.2;Gru;1.08;0.56;75;14.55;;11.66;10.91;10.66;23.46;E-S0;;;;;;;;2MASX J22024862-4741522,ESO 237-028,ESO-LV 237-0280,PGC 067913;;; -NGC7170;G;22:01:26.26;-05:25:58.0;Aqr;1.12;0.74;166;14.36;;11.08;10.37;10.15;23.78;E-S0;;;;;;;;2MASX J22012625-0525581,PGC 067848;;; -NGC7171;G;22:01:02.01;-13:16:11.1;Aqr;2.37;1.22;119;12.70;;10.15;9.56;9.31;23.18;SBb;;;;;;;;2MASX J22010200-1316108,IRAS 21583-1330,MCG -02-56-005,PGC 067839;;; -NGC7172;G;22:02:01.89;-31:52:10.8;PsA;2.75;1.82;105;12.72;13.61;9.44;8.69;8.32;23.61;Sa;;;;;;;;2MASX J22020189-3152116,ESO 466-038,ESO-LV 466-0380,IRAS 21591-3206,MCG -05-52-007,PGC 067874;;"Joguet et al. (2001A&A...380...19J) claim ""No activity""."; -NGC7173;G;22:02:03.19;-31:58:25.3;PsA;1.88;1.53;141;12.10;;9.83;9.17;8.96;23.14;E;;;;;;;;2MASX J22020320-3158253,ESO 466-039,ESO-LV 466-0390,MCG -05-52-008,PGC 067878,UGCA 422;;; -NGC7174;G;22:02:06.45;-31:59:34.7;PsA;2.51;2.20;85;12.26;12.15;;;;24.59;Sb;;;;;;;;ESO 466-040,ESO-LV 466-0400,MCG -05-52-010,PGC 067881;;; -NGC7175;OCl;21:58:39.83;+54:48:22.9;Cyg;4.50;;;;;;;;;;;;;;;;;MWSC 3577;;; -NGC7176;G;22:02:08.44;-31:59:23.1;PsA;1.15;0.92;75;12.08;;8.97;8.28;8.01;21.59;E;;;;;;;;2MASX J22020846-3159233,ESO 466-041,ESO-LV 466-0410,MCG -05-52-011,PGC 067883,UGCA 423;;; -NGC7177;G;22:00:41.24;+17:44:17.0;Peg;2.85;1.93;87;12.20;;9.09;8.40;8.17;22.61;SABb;;;;;;;;2MASX J22004125+1744172,MCG +03-56-003,PGC 067823,SDSS J220041.21+174417.5,UGC 11872;;; -NGC7178;G;22:02:25.20;-35:47:25.3;PsA;1.17;0.45;174;14.82;;12.43;11.87;11.39;23.16;SABb;;;;;;;;2MASX J22022517-3547251,ESO 404-022,ESO-LV 404-0220,MCG -06-48-016,PGC 067898;;; -NGC7179;G;22:04:49.32;-64:02:48.6;Ind;2.03;1.00;48;13.40;13.43;10.53;9.87;9.58;23.13;SBbc;;;;;;;;2MASX J22044929-6402487,ESO 108-011,ESO-LV 108-0110,PGC 067995;;; -NGC7180;G;22:02:18.46;-20:32:51.9;Aqr;1.66;0.77;65;13.61;;10.51;9.89;9.62;23.33;E-S0;;;;;;;;2MASX J22021847-2032516,ESO 601-006,ESO-LV 601-0060,MCG -04-52-008,PGC 067890;;; -NGC7181;G;22:01:43.49;-01:57:38.0;Aqr;0.73;0.60;69;15.40;;11.57;10.90;10.58;23.46;S0;;;;;;;;2MASX J22014352-0157380,PGC 067859;;; -NGC7182;G;22:01:51.66;-02:11:47.7;Aqr;0.79;0.43;90;15.60;;11.94;11.17;10.87;23.57;S0-a;;;;;;;;2MASX J22015167-0211480,MCG +00-56-006,PGC 067864;;; -NGC7183;G;22:02:21.62;-18:54:59.4;Aqr;3.89;1.14;82;12.94;;9.45;8.64;8.38;24.50;S0-a;;;;;;;;2MASX J22022161-1854596,ESO 601-008,ESO-LV 601-0080,IRAS 21596-1909,MCG -03-56-004,PGC 067892;;; -NGC7184;G;22:02:39.82;-20:48:46.2;Aqr;5.98;1.26;61;11.98;11.20;8.73;7.91;7.77;23.13;SBc;;;;;;;;2MASX J22023982-2048461,ESO 601-009,ESO-LV 601-0090,IRAS 21599-2103,MCG -04-52-009,PGC 067904,UGCA 425;;; -NGC7185;G;22:02:56.75;-20:28:16.6;Aqr;2.31;1.61;26;13.12;13.03;10.48;9.78;9.69;23.96;E-S0;;;;;;;;2MASX J22025674-2028165,ESO 601-010,ESO-LV 601-0100,MCG -04-52-011,PGC 067919;;; -NGC7186;Other;22:01:05.22;+35:04:43.8;Peg;;;;;;;;;;;;;;;;;;;;Eight Galactic stars.; -NGC7187;G;22:02:44.56;-32:48:07.8;PsA;1.15;1.05;65;13.43;;10.41;9.71;9.40;22.50;S0-a;;;;;;;;ESO 404-024,ESO-LV 404-0240,MCG -06-48-018,PGC 067909;;; -NGC7188;G;22:03:29.00;-20:19:04.7;Aqr;1.76;0.74;49;14.05;;11.34;11.21;10.96;23.30;SBbc;;;;;;;;2MASX J22032898-2019049,ESO 601-011,ESO-LV 601-0110,MCG -04-52-012,PGC 067943;;; -NGC7189;G;22:03:16.00;+00:34:16.0;Aqr;0.99;0.64;121;14.40;;11.42;10.69;10.35;22.83;SBb;;;;;;;;2MASX J22031601+0034163,IRAS 22007+0019,MCG +00-56-007,PGC 067934,SDSS J220315.99+003415.8,SDSS J220315.99+003415.9,SDSS J220316.00+003415.9,SDSS J220316.00+003416.0,UGC 11882;;; -NGC7190;G;22:03:06.68;+11:11:57.5;Peg;0.96;0.48;64;15.00;;11.20;10.53;10.17;23.73;S0-a;;;;;;;;2MASX J22030665+1111576,PGC 067928,UGC 11885;;"Often incorrectly called IC 5160; that is UGC 11884."; -NGC7191;G;22:06:51.79;-64:38:04.4;Ind;1.83;0.73;138;13.80;;11.09;10.45;10.15;23.11;SABc;;;;;;;;2MASX J22065179-6438043,ESO 108-013,ESO-LV 108-0130,IRAS 22031-6452,PGC 068059;;; -NGC7192;G;22:06:50.16;-64:18:58.5;Ind;2.42;2.31;0;12.21;11.21;9.37;8.84;8.51;23.00;E;;;;;;;;2MASX J22065017-6418583,ESO 108-012,ESO-LV 108-0120,PGC 068057;;The APMUKS position is east of the nucleus.; -NGC7193;OCl;22:03:01.56;+10:48:13.8;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7194;G;22:03:30.94;+12:38:12.4;Peg;1.31;0.89;18;14.50;;10.73;9.99;9.67;23.75;E;;;;;;;;2MASX J22033093+1238124,IRAS 22011+1224,MCG +02-56-008,PGC 067945,UGC 11888;;; -NGC7195;G;22:03:30.28;+12:39:39.0;Peg;0.69;0.53;46;15.60;;12.05;11.38;11.03;23.52;S0-a;;;;;;;;2MASX J22033031+1239384,MCG +02-56-009,PGC 067940,SDSS J220330.28+123938.9,SDSS J220330.29+123939.0;;; -NGC7196;G;22:05:54.81;-50:07:09.6;Ind;2.76;2.06;59;12.43;11.54;9.23;8.59;8.27;23.43;E;;;;;;;;2MASX J22055480-5007094,ESO 237-036,ESO-LV 237-0360,IRAS 22026-5021,PGC 068020;;; -NGC7197;G;22:02:58.05;+41:03:32.4;Lac;1.67;0.85;111;14.50;;9.89;9.15;8.79;23.92;Sa;;;;;;;;2MASX J22025805+4103322,IRAS 22008+4049,MCG +07-45-005,PGC 067921,UGC 11887;;; -NGC7198;G;22:05:14.24;-00:38:53.8;Aqr;0.98;0.75;180;14.50;;11.17;10.46;10.22;23.23;S0;;;;;;;;2MASX J22051422-0038534,MCG +00-56-008,PGC 068006,SDSS J220514.24-003853.7;;; -NGC7199;G;22:08:29.84;-64:42:22.1;Tuc;1.21;0.90;30;13.87;13.22;10.92;10.29;10.00;22.92;SBa;;;;;;;;2MASX J22082982-6442222,ESO 108-014,ESO-LV 108-0140,PGC 068124;;; -NGC7200;G;22:07:09.52;-49:59:43.7;Gru;1.28;1.00;45;13.73;;10.91;10.21;9.96;23.17;E;;;;;;;;2MASX J22070954-4959436,ESO 237-037,ESO-LV 237-0370,PGC 068068;;; -NGC7201;G;22:06:31.93;-31:15:46.8;PsA;1.66;0.55;128;13.76;;10.52;9.79;9.48;23.28;Sa;;;;;;;;2MASX J22063191-3115467,ESO 467-004,ESO-LV 467-0040,IRAS 22036-3130,MCG -05-52-026,PGC 068040;;; -NGC7202;*;22:06:43.24;-31:13:04.4;PsA;;;;;;;;;;;;;;;;;;;;; -NGC7203;G;22:06:43.88;-31:09:44.7;PsA;1.08;0.58;68;13.59;;10.45;9.77;9.57;22.48;S0-a;;;;;;;;2MASX J22064390-3109447,ESO 467-007,ESO-LV 467-0070,MCG -05-52-027,PGC 068053;;Misidentified in CSRG (with incorrect Dec) as NGC 7202 (a star 3.4' north).; -NGC7204;GPair;22:06:54.20;-31:03:05.0;PsA;1.60;;;;;;;;;;;;;;;;;ESO-LV 467-008;;;Diameter of the group inferred by the author. -NGC7204A;G;22:06:54.00;-31:03:02.2;PsA;0.93;0.44;78;14.54;;;;;22.97;SBab;;;;;7204N;;;ESO-LV 467-0080,MCG -05-52-028,PGC 068054;;; -NGC7204B;G;22:06:55.26;-31:03:11.1;PsA;1.07;0.28;88;14.16;;11.97;11.25;10.86;23.08;S0-a;;;;;7204S;;;2MASX J22065525-3103113,ESO-LV 467-0082,IRAS 22040-3117,MCG -05-52-029,PGC 068061;;;B-Mag taken from LEDA -NGC7205;G;22:08:34.29;-57:26:33.3;Tuc;3.70;1.71;63;11.77;;8.83;8.21;7.92;22.55;Sbc;;;;;;;;2MASX J22083427-5726331,ESO 146-009,ESO-LV 146-0090,IRAS 22052-5741,PGC 068128;;; -NGC7205A;G;22:07:32.01;-57:27:50.5;Tuc;1.15;0.84;72;14.56;;12.30;11.76;11.52;23.23;SABc;;;;;;;;2MASX J22073201-5727505,ESO 146-007,ESO-LV 146-0070,IRAS 22041-5742,PGC 068083;;; -NGC7206;G;22:05:40.89;+16:47:06.9;Peg;1.19;0.92;142;14.80;;10.85;10.24;9.88;23.73;S0;;;;;;;;2MASX J22054089+1647067,MCG +03-56-007,PGC 068014,UGC 11904;;; -NGC7207;G;22:05:45.68;+16:46:03.9;Peg;0.66;0.26;102;15.60;;12.00;11.28;10.99;;S0;;;;;;;;2MASX J22054569+1646037,PGC 068017;;; -NGC7208;G;22:08:24.42;-29:03:04.2;PsA;0.91;0.60;136;13.82;13.36;11.62;10.93;10.79;22.48;S0;;;;;;;;2MASX J22082441-2903043,ESO 467-010,ESO-LV 467-0100,IRAS 22055-2917,MCG -05-52-032,PGC 068120;;; -NGC7209;OCl;22:05:07.84;+46:29:00.7;Lac;6.00;;;8.24;7.70;;;;;;;;;;;;;MWSC 3585;;; -NGC7210;Other;22:06:22.44;+27:06:33.0;Peg;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7211;G;22:06:21.87;-08:05:23.9;Aqr;0.77;0.63;74;14.86;;11.92;11.12;10.84;23.28;S0;;;;;;;;2MASX J22062187-0805242,PGC 068033,SDSS J220621.87-080523.8,SDSS J220621.87-080523.9;;; -NGC7212;GTrpl;22:07:01.30;+10:13:52.0;Peg;1.35;0.46;32;15.10;;11.32;10.55;10.21;23.61;Sb;;;;;;;;2MASXJ22070199+1014004,IRAS 22045+0959,MCG +02-56-011,PGC 068065;;; -NGC7213;G;22:09:16.31;-47:09:59.8;Gru;4.84;3.89;121;10.97;12.08;7.97;7.35;7.04;23.05;Sa;;;;;;;;2MASX J22091625-4709599,ESO 288-043,ESO-LV 288-0430,IRAS 22061-4724,PGC 068165;;; -NGC7214;G;22:09:07.68;-27:48:34.1;PsA;1.94;1.35;45;12.48;14.10;10.28;9.57;9.33;23.10;Sbc;;;;;;;;2MASX J22090769-2748340,ESO 467-012,ESO-LV 467-0120,IRAS 22062-2803,MCG -05-52-034,PGC 068152;;; -NGC7215;G;22:08:34.48;+00:30:42.1;Aqr;0.91;0.37;90;14.90;;12.16;11.41;11.22;23.54;S0;;;;;;;;2MASX J22083448+0030421,IRAS 22059+0015,PGC 068127,SDSS J220834.47+003042.1;;; -NGC7216;G;22:12:35.84;-68:39:42.7;Ind;1.61;1.10;127;13.41;;10.34;9.58;9.40;23.41;E;;;;;;;;2MASX J22123580-6839427,ESO 076-003,ESO-LV 76-0030,PGC 068291;;; -NGC7217;G;22:07:52.39;+31:21:33.6;Peg;4.52;3.84;90;12.94;11.92;7.78;7.08;6.83;22.93;Sab;;;;;;;;2MASX J22075236+3121333,IRAS 22056+3106,MCG +05-52-001,PGC 068096,UGC 11914;;; -NGC7218;G;22:10:11.71;-16:39:39.6;Aqr;2.55;1.07;35;12.40;;10.17;9.40;9.25;22.45;Sc;;;;;;;;2MASX J22101171-1639395,IRAS 22074-1654,MCG -03-56-008,PGC 068199;;; -NGC7219;G;22:13:09.02;-64:50:56.3;Tuc;1.83;1.10;38;13.33;13.13;10.65;9.89;9.77;23.19;SABa;;;;;;;;2MASX J22130903-6450562,ESO 108-019,ESO-LV 108-0190,IRAS 22094-6505,PGC 068312;;; -NGC7220;G;22:11:31.00;-22:57:10.3;Aqr;0.90;0.72;7;14.57;;11.73;11.17;10.88;22.92;S0;;;;;;;;2MASX J22113100-2257102,ESO 532-028,ESO-LV 532-0280,MCG -04-52-020,PGC 068241;;; -NGC7221;G;22:11:15.25;-30:33:47.4;PsA;2.29;1.46;13;13.06;12.13;10.15;9.32;9.19;23.02;Sbc;;;;;;;;2MASX J22111524-3033472,ESO 467-018,ESO-LV 467-0180,IRAS 22083-3048,MCG -05-52-043,PGC 068235;;; -NGC7222;G;22:10:51.76;+02:06:20.9;Aqr;1.07;1.06;65;15.10;;11.53;10.84;10.44;24.32;SBab;;;;;;;;2MASX J22105172+0206205,MCG +00-56-012,PGC 068224,SDSS J221051.74+020620.9,UGC 11934;;; -NGC7223;G;22:10:09.16;+41:01:02.2;Lac;1.41;1.13;126;13.50;;10.64;10.03;9.70;22.89;SBc;;;;;;;;2MASX J22100914+4101021,IRAS 22081+4046,MCG +07-45-018,PGC 068197,UGC 11931;;; -NGC7224;G;22:11:35.38;+25:51:52.2;Peg;1.51;0.91;108;14.70;;10.78;10.07;9.70;24.67;E;;;;;;;;2MASX J22113537+2551517,MCG +04-52-004,PGC 068242,UGC 11940;;; -NGC7225;G;22:13:08.07;-26:08:54.0;PsA;1.96;1.02;140;13.20;;;;;23.49;S0-a;;;;;;;;ESO 532-033,ESO-LV 532-0330,IRAS 22103-2623,MCG -04-52-023,PGC 068311;;; -NGC7226;OCl;22:10:26.89;+55:23:54.9;Cep;3.00;;;10.11;9.60;;;;;;;;;;;;;MWSC 3591;;; -NGC7227;G;22:11:31.33;+38:43:16.9;Lac;1.24;0.59;9;15.00;;11.18;10.50;10.20;24.06;S0;;;;;;;;2MASX J22113134+3843168,MCG +06-48-015,PGC 068243,UGC 11942;;; -NGC7228;G;22:11:48.60;+38:41:57.0;Lac;1.38;0.84;145;15.00;;10.81;10.09;9.78;24.06;SBa;;;;;;;;2MASX J22114860+3841569,MCG +06-48-016,PGC 068254,UGC 11945;;; -NGC7229;G;22:14:03.22;-29:22:57.9;PsA;1.46;1.25;116;13.31;;11.24;10.68;10.41;22.71;Sc;;;;;;;;2MASX J22140322-2922577,ESO 467-024,ESO-LV 467-0240,IRAS 22112-2937,MCG -05-52-051,PGC 068344;;; -NGC7230;G;22:14:13.19;-17:04:26.6;Aqr;1.00;0.91;10;14.00;;11.36;10.70;10.42;23.11;SBbc;;;;;;;;2MASX J22141319-1704265,IRAS 22114-1719,MCG -03-56-012,PGC 068350;;; -NGC7231;G;22:12:30.12;+45:19:42.5;Lac;1.69;0.60;87;14.00;;11.02;10.33;9.98;23.32;SBa;;;;;;;;2MASX J22123011+4519424,IRAS 22104+4504,PGC 068285,UGC 11951;;; -NGC7232;G;22:15:38.00;-45:51:00.3;Gru;2.86;1.04;100;12.58;11.79;9.45;8.74;8.55;23.56;S0-a;;;;;;;;2MASX J22153798-4551000,ESO 289-007,ESO-LV 289-0070,PGC 068431;;Confused HIPASS source; -NGC7232A;G;22:13:41.44;-45:53:37.4;Gru;2.17;0.31;110;14.02;;11.26;10.57;10.33;23.36;SBab;;;;;;;;2MASX J22134144-4553374,ESO 289-003,ESO-LV 289-0030,IRAS 22105-4608,PGC 068329;;; -NGC7232B;G;22:15:52.45;-45:46:50.3;Gru;1.68;1.48;1;13.47;;;;;23.65;SBm;;;;;;;;ESO 289-009,ESO-LV 289-0090,PGC 068443;;Confused HIPASS source; -NGC7233;G;22:15:48.98;-45:50:47.2;Gru;1.74;1.55;75;12.90;12.82;10.23;9.67;9.64;23.06;S0-a;;;;;;;;2MASX J22154899-4550470,ESO 289-008,ESO-LV 289-0080,IRAS 22127-4605,PGC 068441;;; -NGC7234;OCl;22:12:25.02;+57:16:16.8;Cep;2.40;;;8.58;7.70;;;;;;;;;;7235;;;MWSC 3595;;; -NGC7235;Dup;22:12:25.02;+57:16:16.8;Cep;;;;;;;;;;;;;;;7234;;;;;; -NGC7236;G;22:14:44.99;+13:50:47.5;Peg;1.38;0.81;156;14.30;14.30;10.92;10.24;9.87;24.00;E-S0;;;;;;;;2MASX J22144500+1350476,MCG +02-56-023,PGC 068384,SDSS J221444.98+135047.4,SDSS J221444.99+135047.4,UGC 11958 NED01;;Component 'a)' in UGC notes.; -NGC7237;G;22:14:46.88;+13:50:27.1;Peg;1.98;0.86;143;15.00;;;;;24.70;E-S0;;;;;;;;MCG +02-56-024,PGC 068383,SDSS J221446.88+135027.1,UGC 11958 NED02;;Component 'b)' in UGC notes.; -NGC7238;Other;22:15:20.51;+22:31:09.2;Peg;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7239;G;22:15:01.40;-05:03:12.0;Aqr;0.97;0.66;82;;;11.88;11.22;10.95;24.17;E-S0;;;;;;;;2MASX J22150139-0503122,PGC 068388;;; -NGC7240;G;22:15:22.56;+37:16:50.4;Lac;0.60;0.60;125;15.00;;11.39;10.72;10.27;22.87;E-S0;;;;;;;;2MASX J22152256+3716504,MCG +06-48-024,PGC 068415;;; -NGC7241;G;22:15:49.87;+19:13:56.5;Peg;2.75;0.72;26;13.80;;10.19;9.36;8.97;23.40;SBbc;;;;;;;;2MASX J22154987+1913564,MCG +03-56-020,PGC 068442,UGC 11968;;; -NGC7242;GPair;22:15:40.50;+37:18:02.0;Lac;1.40;;;;;;;;;;;;;;;;;MCG +06-48-025,UGC 11969;;;Diameter of the group inferred by the author. -NGC7242 NED01;G;22:15:39.49;+37:17:55.4;Lac;1.23;0.31;26;14.60;;9.38;8.66;8.33;23.21;E;;;;;;;;2MASXJ22153950+3717554,MCG +06-48-025 NED01,PGC 068434,UGC 11969 NED01;;; -NGC7242 NED02;G;22:15:41.57;+37:18:10.0;Lac;0.29;0.22;72;17.21;;;;;23.91;;;;;;;5195;;MCG +06-48-025 NED02,PGC 068435,UGC 11969 NED02;;;B-Mag taken from LEDA -NGC7243;OCl;22:15:08.58;+49:53:51.0;Lac;15.00;;;6.54;6.40;;;;;;;;;;;;;C 016,MWSC 3602;;; -NGC7244;G;22:16:26.83;+16:28:17.2;Peg;0.91;0.46;0;15.00;;12.08;11.44;11.13;22.94;E?;;;;;;;;2MASX J22162682+1628172,MCG +03-56-021,PGC 068468,SDSS J221626.85+162817.0;;; -NGC7245;OCl;22:15:11.51;+54:20:33.2;Lac;3.90;;;9.81;9.20;;;;;;;;;;;;;MWSC 3603;;; -NGC7246;G;22:17:42.68;-15:34:16.6;Aqr;2.26;0.86;174;13.40;;11.05;10.42;10.09;23.70;Sa;;;;;;5198;;2MASX J22174266-1534166,IRAS 22150-1549,MCG -03-56-014,PGC 068512;;; -NGC7247;G;22:17:41.25;-23:43:51.7;Aqr;1.28;0.67;6;13.45;;10.59;9.89;9.59;22.49;SBb;;;;;;;;2MASX J22174125-2343517,ESO 533-008,ESO-LV 533-0080,IRAS 22149-2358,MCG -04-52-032,PGC 068511;;; -NGC7248;G;22:16:53.94;+40:30:08.4;Lac;1.72;0.78;133;13.50;12.39;10.14;9.42;9.12;23.46;E-S0;;;;;;;;2MASX J22165396+4030083,MCG +07-45-022,PGC 068485,TYC 3203-308-1,UGC 11972;;; -NGC7249;G;22:20:31.00;-55:07:29.5;Gru;0.97;0.69;132;14.40;;11.77;11.06;10.81;23.06;S0;;;;;;;;2MASX J22203102-5507294,ESO 190-001,ESO-LV 190-0010,PGC 068606;;; -NGC7250;G;22:18:17.80;+40:33:44.6;Lac;2.12;0.94;160;13.22;12.58;11.20;10.58;10.25;22.87;Scd;;;;;;;;2MASX J22181777+4033446,IRAS 22161+4018,MCG +07-45-024,PGC 068535,UGC 11980;;; -NGC7251;G;22:20:27.14;-15:46:24.8;Aqr;1.67;1.48;10;13.47;;10.86;10.16;9.88;23.29;Sa;;;;;;;;2MASX J22202715-1546246,IRAS 22177-1601,MCG -03-57-002,PGC 068604;;; -NGC7252;G;22:20:44.75;-24:40:41.8;Aqr;1.85;1.71;95;12.46;12.06;10.26;9.59;9.31;22.88;S0;;;;;;;;2MASX J22204475-2440420,ESO 533-015,ESO-LV 533-0150,IRAS 22179-2455,MCG -04-52-036,PGC 068612;;; -NGC7253;GPair;22:19:28.90;+29:23:30.0;Peg;2.60;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC7253A;G;22:19:27.71;+29:23:44.9;Peg;1.56;0.41;124;14.40;;10.95;10.12;9.86;22.56;SABc;;;;;;;;2MASX J22192770+2923448,IRAS 22171+2908,MCG +05-52-010,PGC 068572,UGC 11984;;; -NGC7253B;G;22:19:30.10;+29:23:16.0;Peg;1.28;0.44;68;14.40;;;;;22.71;Sc;;;;;;;;MCG +05-52-011,PGC 068573,SDSS J221930.27+292316.9,UGC 11985;;; -NGC7254;G;22:22:36.23;-21:44:14.0;Aqr;1.30;0.64;114;13.91;;11.85;11.26;11.01;22.72;SBb;;;;;7256;;;2MASX J22223624-2144140,ESO 602-013,ESO-LV 602-0130,IRAS 22198-2159,MCG -04-52-042,PGC 068686;;; -NGC7255;G;22:23:08.00;-15:32:29.1;Aqr;1.47;0.31;116;15.00;;11.83;11.13;10.83;24.10;Sa;;;;;;;;2MASX J22230800-1532290,IRAS 22204-1547,MCG -03-57-006,PGC 068721;;; -NGC7256;Dup;22:22:36.23;-21:44:14.0;Aqr;;;;;;;;;;;;;;;7254;;;;;; -NGC7257;G;22:22:36.44;-04:07:14.7;Aqr;1.81;1.23;5;13.71;;10.94;10.30;10.00;23.29;SABb;;;;;7260;;;2MASX J22223645-0407146,MCG -01-57-003,PGC 068691,SDSS J222236.43-040714.6;;; -NGC7258;G;22:22:58.07;-28:20:42.5;PsA;1.54;0.65;142;13.94;;11.38;10.72;10.44;23.03;Sb;;;;;;;;2MASX J22225806-2820423,ESO 467-049,ESO-LV 467-0490,IRAS 22201-2836,MCG -05-52-068,PGC 068710;;; -NGC7259;G;22:23:05.52;-28:57:17.4;PsA;1.25;0.97;57;13.91;;11.83;11.20;10.76;22.78;Sb;;;;;;;;2MASX J22230550-2857173,ESO 467-050,ESO-LV 467-0500,MCG -05-52-069,PGC 068718;;This pair is made up of ESO 467- G 050 + ESO 467- G 051.; -NGC7260;Dup;22:22:36.44;-04:07:14.7;Aqr;;;;;;;;;;;;;;;7257;;;;;; -NGC7261;OCl;22:20:06.39;+58:03:06.6;Cep;6.90;;;9.20;8.40;;;;;;;;;;;;;MWSC 3617;;; -NGC7262;G;22:23:28.54;-32:21:51.3;PsA;0.86;0.78;140;14.83;;11.96;11.30;10.84;23.24;S0;;;;;;;;2MASX J22232853-3221512,ESO 405-017,ESO-LV 405-0170,PGC 068737;;; -NGC7263;G;22:21:45.25;+36:21:00.0;Lac;0.94;0.76;55;15.70;;10.93;10.27;10.03;24.17;S0-a;;;;;;;;2MASX J22214524+3620599,MCG +06-49-004,PGC 068642;;; -NGC7264;G;22:22:13.78;+36:23:13.2;Lac;1.99;0.30;56;14.70;;11.04;10.36;9.84;23.61;Sb;;;;;;;;2MASX J22221380+3623131,IRAS 22200+3608,MCG +06-49-005,PGC 068658,UGC 12001;;; -NGC7265;G;22:22:27.44;+36:12:34.6;Lac;2.48;1.79;166;13.70;;9.72;8.95;8.69;23.97;E-S0;;;;;;;;2MASX J22222747+3612354,MCG +06-49-006,PGC 068668,UGC 12004;;; -NGC7266;G;22:23:58.96;-04:04:24.3;Aqr;0.72;0.58;90;14.50;;11.39;10.67;10.39;22.30;Sa;;;;;;;;2MASX J22235895-0404243,IRAS 22213-0419,MCG -01-57-006,PGC 068758;;; -NGC7267;G;22:24:21.81;-33:41:38.7;PsA;1.73;1.50;121;12.97;;10.38;9.70;9.43;22.76;SBa;;;;;;;;2MASX J22242181-3341386,ESO 405-018,ESO-LV 405-0180,IRAS 22214-3356,MCG -06-49-003,PGC 068780;;Position in 1997AJ....113.1548C is incorrect.; -NGC7268;GPair;22:25:41.40;-31:12:02.0;PsA;1.40;;;;;;;;;;;;;;;;;ESO-LV 467-057;;;Diameter of the group inferred by the author. -NGC7268 NED01;G;22:25:40.72;-31:12:02.7;PsA;1.29;0.72;78;14.25;;10.93;10.28;9.97;23.71;S0;;;;;;;;2MASX J22254072-3112024,ESO-LV 467-0570,MCG -05-53-001,PGC 068847;;Called NGC 7268A in SGC.; -NGC7268 NED02;G;22:25:42.16;-31:12:00.0;PsA;1.00;0.44;73;15.44;;;;;24.19;E;;;;;;;;MCG -05-53-002,ESO-LV 467-0571,PGC 068839;;Called NGC 7268B in SGC.; -NGC7269;G;22:25:46.63;-13:09:59.0;Aqr;1.02;0.74;142;14.00;;11.53;10.67;10.53;23.09;SBb;;;;;;;;2MASX J22254662-1309590,IRAS 22231-1325,MCG -02-57-005,PGC 068841;;; -NGC7270;G;22:23:47.53;+32:24:10.9;Peg;0.93;0.55;88;15.00;;11.04;10.41;10.17;23.20;Sab;;;;;;;;2MASX J22234751+3224107,MCG +05-52-015,PGC 068748,UGC 12019;;; -NGC7271;G;22:23:57.59;+32:22:00.7;Peg;0.61;0.29;118;15.70;;12.54;11.89;11.66;23.68;;;;;;;;;2MASX J22235753+3222007,MCG +05-52-016,PGC 068753;;; -NGC7272;G;22:24:31.71;+16:35:17.4;Peg;1.09;0.97;52;15.00;;11.41;10.75;10.26;23.99;SBa;;;;;;;;2MASX J22243171+1635170,MCG +03-57-003,PGC 068786,UGC 12028;;; -NGC7273;G;22:24:09.23;+36:11:59.4;Lac;0.85;0.54;10;14.80;;10.85;10.11;9.81;23.04;S0;;;;;;;;2MASX J22240925+3611590,MCG +06-49-012,PGC 068768;;; -NGC7274;G;22:24:11.11;+36:07:33.1;Lac;1.83;1.52;60;14.20;;10.21;9.48;9.24;24.27;E;;;;;;;;2MASX J22241107+3607330,MCG +06-49-013,PGC 068770,UGC 12026;;; -NGC7275;G;22:24:17.23;+32:26:46.5;Peg;1.16;0.26;36;15.00;;11.77;11.12;10.79;23.49;Sa;;;;;;;;2MASX J22241721+3226463,MCG +05-52-019,PGC 068774,TYC 2738-932-1,UGC 12025;;; -NGC7276;G;22:24:14.37;+36:05:15.2;Lac;1.00;0.85;156;15.00;;11.26;10.58;10.25;23.78;E;;;;;;;;2MASX J22241437+3605150,MCG +06-49-014,PGC 068773;;; -NGC7277;G;22:26:10.94;-31:08:42.9;PsA;1.28;0.54;125;14.14;;11.64;10.98;10.70;22.85;Sb;;;;;;;;2MASX J22261094-3108429,ESO 467-059,ESO-LV 467-0590,IRAS 22233-3123,MCG -05-53-004,PGC 068861;;; -NGC7278;G;22:28:22.41;-60:10:11.4;Tuc;0.76;0.38;1;15.19;;12.73;11.93;11.51;22.88;SBc;;;;;;;;2MASX J22282239-6010112,ESO 146-027,ESO-LV 146-0270,PGC 068940;;; -NGC7279;G;22:27:12.66;-35:08:25.6;PsA;1.24;0.88;67;14.21;13.78;12.39;11.64;11.49;23.27;Sc;;;;;;;;2MASX J22271264-3508256,ESO 405-021,ESO-LV 405-0210,IRAS 22243-3523,MCG -06-49-005,PGC 068896;;; -NGC7280;G;22:26:27.58;+16:08:53.6;Peg;2.01;1.29;76;13.60;;9.99;9.38;9.06;23.31;S0-a;;;;;;;;2MASX J22262757+1608537,MCG +03-57-005,PGC 068870,UGC 12035;;; -NGC7281;OCl;22:25:20.98;+57:49:16.1;Cep;4.80;;;;;;;;;;;;;;;;;MWSC 3624;;; -NGC7282;G;22:25:53.86;+40:18:53.5;Lac;0.79;0.20;40;15.30;;11.06;10.27;10.20;22.88;Sb;;;;;;;;2MASX J22255389+4018533,IRAS 22236+4003,MCG +07-46-007,PGC 068843,UGC 12034;;; -NGC7283;G;22:28:32.74;+17:28:13.2;Peg;0.87;0.38;15;15.20;;12.66;11.99;11.65;23.78;Sab;;;;;;;;2MASX J22283275+1728128,MCG +03-57-012,PGC 068946;;"NGC identification is very uncertain; N7283 could be a double star."; -NGC7284;G;22:28:35.93;-24:50:38.9;Aqr;1.82;1.44;64;12.96;;9.73;9.00;8.83;23.35;S0;;;;;;;;2MASX J22283592-2450385,ESO 533-031,ESO-LV 533-0310,MCG -04-53-004,PGC 068950;;; -NGC7285;G;22:28:38.00;-24:50:26.8;Aqr;2.68;1.54;65;12.82;;;;;23.44;SBa;;;;;;;;ESO 533-032,ESO-LV 533-0320,MCG -04-53-005,PGC 068953;;; -NGC7286;G;22:27:50.52;+29:05:45.5;Peg;1.81;0.56;97;13.40;;11.63;11.05;10.81;23.35;S0-a;;;;;;;;2MASX J22275052+2905455,MCG +05-53-002,PGC 068922,UGC 12043;;; -NGC7287;GPair;22:28:48.70;-22:12:09.0;Aqr;0.70;;;16.78;14.75;;;;;;;;;;;;;ESO 602-020;;;Diameter of the group inferred by the author. -NGC7287A;G;22:28:48.49;-22:12:12.1;Aqr;0.62;0.34;170;15.85;;12.86;12.25;11.81;23.17;S0;;;;;;;;2MASXJ22284847-2212119,ESO-LV 602-0200,PGC 068960;;Identification as NGC 7287 is doubtful.; -NGC7287B;G;22:28:48.69;-22:12:06.4;Aqr;0.62;0.32;68;15.48;;;;;;;;;;;;;;ESO-LV 602-0201,PGC 068959;;Identification as NGC 7287 is doubtful.; -NGC7288;G;22:28:14.97;-02:53:04.4;Aqr;1.92;1.01;83;14.50;;11.00;10.22;10.01;23.81;Sa;;;;;;;;2MASX J22281498-0253043,IRAS 22256-0308,MCG -01-57-013,PGC 068933;;; -NGC7289;G;22:29:20.25;-35:28:19.1;PsA;1.63;1.21;141;14.20;;11.13;10.45;10.21;24.02;S0;;;;;;;;2MASX J22292025-3528193,ESO 405-023,ESO-LV 405-0230,MCG -06-49-006,PGC 068980;;; -NGC7290;G;22:28:26.43;+17:08:50.8;Peg;1.49;0.72;158;13.80;;11.55;10.92;10.74;22.86;Sbc;;;;;;;;2MASX J22282642+1708508,IRAS 22260+1653,MCG +03-57-009,PGC 068942,SDSS J222826.45+170851.0,UGC 12045;;; -NGC7291;G;22:28:29.50;+16:46:59.3;Peg;1.62;1.05;59;14.80;;10.72;10.01;9.71;24.48;S0;;;;;;;;2MASX J22282953+1646598,MCG +03-57-008,PGC 068944,UGC 12047;;; -NGC7292;G;22:28:25.91;+30:17:32.3;Peg;1.82;1.22;113;13.10;;;;;22.74;I;;;;;;;;IRAS 22261+3002,MCG +05-53-003,PGC 068941,SDSS J222826.29+301729.9,UGC 12048;;; -NGC7293;PN;22:29:38.57;-20:50:14.4;Aqr;16.33;;;7.50;7.30;14.33;14.49;14.55;;;11.81;13.10;13.50;;;;USNO 271;C 063,ESO 602-022,PN G036.1-57.1;Helix Nebula;; -NGC7294;G;22:32:08.06;-25:23:52.0;PsA;2.10;1.15;42;13.51;;10.73;10.07;9.77;23.89;S0;;;;;;5225;;2MASX J22320805-2523521,ESO 533-044,ESO-LV 533-0440,MCG -04-53-009,PGC 069088;;; -NGC7295;OCl;22:28:02.84;+52:17:20.7;Lac;2.70;;;;9.70;;;;;;;;;;7296;;;MWSC 3625;;; -NGC7296;Dup;22:28:02.84;+52:17:20.7;Lac;;;;;;;;;;;;;;;7295;;;;;; -NGC7297;G;22:31:10.28;-37:49:35.2;Gru;0.84;0.49;121;14.47;;11.89;11.18;10.85;22.63;SBbc;;;;;;;;2MASX J22311027-3749352,ESO 345-018,ESO-LV 345-0180,IRAS 22282-3804,MCG -06-49-007,PGC 069046;;; -NGC7298;G;22:30:50.65;-14:11:17.7;Aqr;1.28;1.00;4;14.10;;11.92;11.26;11.10;23.41;Sc;;;;;;;;2MASX J22305063-1411177,MCG -02-57-010,PGC 069033,TYC 5817-551-1;;; -NGC7299;G;22:31:33.11;-37:48:34.4;Gru;0.67;0.65;175;14.79;;12.49;11.91;11.60;22.65;Sc;;;;;;;;2MASX J22313310-3748342,ESO 345-019,ESO-LV 345-0190,MCG -06-49-008,PGC 069060;;; -NGC7300;G;22:30:59.91;-14:00:12.7;Aqr;2.06;0.80;162;13.00;;10.51;9.82;9.56;23.20;SABb;;;;;;5204;;2MASX J22305991-1400127,MCG -02-57-011,PGC 069040;;The IC identification is not certain.; -NGC7301;G;22:30:34.72;-17:34:25.6;Aqr;0.85;0.27;180;14.13;;11.69;11.04;10.68;22.09;SBab;;;;;;;;2MASX J22303473-1734254,ESO 602-023,ESO-LV 602-0230,IRAS 22278-1749,MCG -03-57-015,PGC 069021;;; -NGC7302;G;22:32:23.80;-14:07:13.9;Aqr;1.73;1.09;95;13.00;;9.99;9.31;9.04;23.07;E-S0;;;;;;5228;;2MASX J22322379-1407137,MCG -02-57-013,PGC 069094;;; -NGC7303;G;22:31:32.83;+30:57:21.5;Peg;1.54;1.19;117;16.00;;11.40;10.64;10.41;23.19;Sbc;;;;;;;;2MASX J22313281+3057214,IRAS 22292+3042,MCG +05-53-004,PGC 069061,UGC 12065;;; -NGC7304;Other;22:31:44.50;+30:58:46.8;Peg;;;;;;;;;;;;;;;;;;;;Three Galactic stars. NGC identification is very uncertain.; -NGC7305;G;22:32:13.94;+11:42:43.7;Peg;0.86;0.83;90;15.10;;11.31;10.63;10.31;;E;;;;;;;;2MASX J22321393+1142445,MCG +02-57-003,PGC 069091;;;Diameters and position angle taken from Simbad. -NGC7306;G;22:33:16.47;-27:14:47.8;PsA;1.81;0.79;60;13.51;;10.94;10.24;9.99;22.94;SBb;;;;;;;;2MASX J22331645-2714478,ESO 468-011,ESO-LV 468-0110,IRAS 22304-2730,MCG -05-53-014,PGC 069132;;; -NGC7307;G;22:33:52.54;-40:55:57.8;Gru;3.83;0.87;9;12.92;;11.18;10.77;10.42;23.32;Sc;;;;;;;;2MASX J22335253-4055578,ESO 345-026,ESO-LV 345-0260,IRAS 22309-4111,MCG -07-46-003,PGC 069161;;Confused HIPASS source; -NGC7308;G;22:34:32.14;-12:56:01.9;Aqr;1.27;0.92;152;14.00;;10.95;10.23;9.96;23.68;E-S0;;;;;;1448;;2MASX J22343213-1256015,MCG -02-57-017,PGC 069194;;; -NGC7309;G;22:34:20.59;-10:21:25.2;Aqr;2.08;1.86;120;12.90;;10.69;10.04;9.68;23.28;SABc;;;;;;;;2MASX J22342056-1021253,IRAS 22317-1036,MCG -02-57-016,PGC 069183;;; -NGC7310;G;22:34:36.91;-22:29:06.3;Aqr;0.95;0.73;37;14.68;14.20;12.08;11.56;11.37;23.09;SBbc;;;;;;;;2MASX J22343690-2229062,ESO 533-049,ESO-LV 533-0490,IRAS 22318-2244,MCG -04-53-015,PGC 069202;;; -NGC7311;G;22:34:06.71;+05:34:11.6;Peg;1.47;0.68;11;13.40;;9.96;9.20;8.94;22.61;Sab;;;;;;;;2MASX J22340676+0534131,MCG +01-57-009,PGC 069172,SDSS J223406.79+053413.1,UGC 12080;;; -NGC7312;G;22:34:34.79;+05:49:02.5;Peg;0.93;0.63;79;14.50;;11.49;10.77;10.35;22.92;Sb;;;;;;;;2MASX J22343478+0549025,MCG +01-57-010,PGC 069198,UGC 12083;;; -NGC7313;G;22:35:32.56;-26:06:06.4;PsA;0.70;0.42;165;15.00;;13.01;12.38;12.20;22.74;SBb;;;;;;;;2MASX J22353257-2606063,ESO 533-052,ESO-LV 533-0520,PGC 069242;;; -NGC7314;G;22:35:46.19;-26:03:01.7;PsA;4.21;1.71;3;11.62;13.11;9.06;8.52;8.19;22.77;SABb;;;;;;;;2MASX J22354623-2603008,ESO 533-053,ESO-LV 533-0530,IRAS 22330-2618,MCG -04-53-018,PGC 069253;;Confused HIPASS source; -NGC7315;G;22:35:31.71;+34:48:12.2;Peg;1.58;1.58;20;13.80;;10.69;10.11;9.73;23.62;S0;;;;;;;;2MASX J22353169+3448128,MCG +06-49-037,PGC 069241,SDSS J223531.70+344812.4,UGC 12097;;; -NGC7316;G;22:35:56.34;+20:19:20.1;Peg;1.19;1.01;66;13.70;;11.54;10.92;10.46;22.60;SBbc;;;;;;;;2MASX J22355633+2019201,IRAS 22335+2003,MCG +03-57-020,PGC 069259,SDSS J223556.35+201920.0,UGC 12098;;; -NGC7317;G;22:35:51.88;+33:56:41.6;Peg;0.80;0.77;150;14.57;13.60;11.59;11.01;10.60;23.04;E;;;;;;;;2MASX J22355187+3356415,MCG +06-49-038,PGC 069256,UGC 12100 NOTES01;;; -NGC7318;GPair;22:35:57.60;+33:57:56.0;Peg;2.50;;;;;;;;;;;;;;;;;;;Part of the GGroup Stefan's Quintet.;Diameter of the group inferred by the author. -NGC7318A;G;22:35:56.75;+33:57:55.7;Peg;1.47;1.33;90;14.40;;;;;24.03;E;;;;;;;;2MASX J22355791+3357562,MCG +06-49-039,PGC 069260,UGC 12099;;Misidentified in UGC as 'MCG +06-49-040'.; -NGC7318B;G;22:35:58.41;+33:57:57.3;Peg;2.37;1.32;24;14.06;;;;;24.13;SBbc;;;;;;;;MCG +06-49-040,PGC 069263,UGC 12100;;MCG misprints name as 'NGC 7318a'.; -NGC7319;G;22:36:03.55;+33:58:32.6;Peg;1.67;1.04;112;14.57;13.53;11.09;10.29;10.06;23.51;Sbc;;;;;;;;2MASX J22360355+3358327,MCG +06-49-041,PGC 069269,SDSS J223603.57+335833.0,UGC 12102;;; -NGC7320;G;22:36:03.38;+33:56:53.2;Peg;2.55;1.40;132;13.23;12.63;11.25;10.70;10.52;23.47;Scd;;;;;;;;2MASX J22360337+3356531,MCG +06-49-042,PGC 069270,UGC 12101;;Position in 1990Obs...110...93A is for a superposed star.; -NGC7320C;G;22:36:20.37;+33:59:05.9;Peg;0.59;0.48;29;17.00;;13.53;12.76;12.52;24.23;S0-a;;;;;;;;2MASX J22362034+3359059,MCG +06-49-043,PGC 069279;;; -NGC7321;G;22:36:28.02;+21:37:18.5;Peg;1.41;0.97;18;15.40;;10.85;10.23;9.96;23.12;SBb;;;;;;;;2MASX J22362802+2137186,IRAS 22340+2121,MCG +03-57-021,PGC 069287,SDSS J223627.96+213715.6,UGC 12103;;HOLM 793B is a star.; -NGC7322;G;22:37:51.46;-37:13:52.3;Gru;1.04;0.62;115;14.51;;11.49;10.74;10.49;23.34;S0-a;;;;;7334;;;2MASX J22375146-3713525,ESO 405-033,ESO-LV 405-0330,MCG -06-49-010,PGC 069365;;; -NGC7323;G;22:36:53.69;+19:08:37.9;Peg;1.17;0.87;175;14.00;;11.37;10.80;10.51;22.90;Sb;;;;;;;;2MASX J22365362+1908379,IRAS 22344+1853,MCG +03-57-025,PGC 069311,UGC 12108;;; -NGC7324;G;22:37:00.92;+19:08:46.5;Peg;1.14;0.63;163;14.00;;11.61;11.03;10.73;23.61;S0;;;;;;;;2MASX J22370095+1908460,MCG +03-57-026,PGC 069321,UGC 12108 NOTES01;;; -NGC7325;**;22:36:48.52;+34:22:04.9;Peg;;;;14.70;;;;;;;;;;;;;;;;; -NGC7326;**;22:36:52.09;+34:25:23.2;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7327;G;22:36:34.04;+34:30:13.0;Peg;0.51;0.29;0;16.60;16.10;;;;;;;;;;;;;2MASX J22363409+3430136,PGC 069291;;"NGC identification is very uncertain; N7327 could be a star.";Diameters and position angle taken from Simbad. -NGC7328;G;22:37:29.28;+10:31:53.7;Peg;1.95;0.67;87;13.99;13.10;10.62;9.75;9.63;23.66;Sab;;;;;;;;2MASX J22372929+1031537,IRAS 22349+1016,MCG +02-57-007,PGC 069349,UGC 12118;;; -NGC7329;G;22:40:24.22;-66:28:44.3;Tuc;3.12;2.37;105;12.51;11.31;9.80;9.11;8.87;23.36;SBbc;;;;;;;;2MASX J22402419-6628445,ESO 109-012,ESO-LV 109-0120,PGC 069453;;The APMUKS position is northeast of the nucleus.; -NGC7330;G;22:36:56.18;+38:32:53.0;Lac;1.71;1.59;70;13.60;;10.18;9.48;9.19;23.59;E;;;;;;;;2MASX J22365619+3832527,MCG +06-49-046,PGC 069314,UGC 12111;;; -NGC7331;G;22:37:04.01;+34:24:55.9;Peg;9.27;3.76;170;10.35;9.48;7.06;6.29;6.03;23.08;Sbc;;;;;;;;2MASX J22370410+3424573,C 030,IRAS 22347+3409,MCG +06-49-045,PGC 069327,SDSS J223704.05+342456.8,UGC 12113;;"HOLM 795H is a double star; HOLM 795G,I are stars."; -NGC7332;G;22:37:24.54;+23:47:54.0;Peg;2.95;0.71;154;12.00;;8.92;8.25;8.01;22.96;S0;;;;;;;;2MASX J22372452+2347540,MCG +04-53-008,PGC 069342,UGC 12115;;; -NGC7333;*;22:37:11.64;+34:26:16.2;Peg;;;;15.70;15.10;13.87;13.45;13.42;;;;;;;;;;2MASS J22371161+3426142;;; -NGC7334;Dup;22:37:51.46;-37:13:52.3;Gru;;;;;;;;;;;;;;;7322;;;;;; -NGC7335;G;22:37:19.39;+34:26:51.9;Peg;1.26;0.54;150;14.44;13.35;10.16;8.66;9.24;23.64;S0-a;;;;;;;;2MASX J22371935+3426525,MCG +06-49-047,PGC 069338,UGC 12116;;; -NGC7336;G;22:37:21.94;+34:28:54.3;Peg;0.61;0.47;131;15.00;;11.43;10.48;10.54;23.14;SABa;;;;;;;;2MASX J22372186+3428545,MCG +06-49-049,PGC 069337;;; -NGC7337;G;22:37:26.62;+34:22:27.5;Peg;1.02;0.80;5;15.24;;11.40;10.65;10.39;24.28;SBab;;;;;;;;2MASX J22372663+3422275,MCG +06-49-050,PGC 069344,SDSS J223726.63+342227.4,UGC 12120;;; -NGC7338;**;22:37:31.32;+34:24:52.1;Peg;;;;;;;;;;;;;;;;;;;;NGC identification is not certain.;Main component is 2MASS J22373171+3424514. -NGC7339;G;22:37:47.24;+23:47:12.1;Peg;3.21;0.95;92;13.10;;9.69;8.90;8.56;23.46;SABb;;;;;;;;2MASX J22374688+2347120,MCG +04-53-009,PGC 069364,SDSS J223746.72+234710.6,UGC 12122;;; -NGC7340;G;22:37:44.22;+34:24:36.0;Peg;0.86;0.55;170;14.90;;11.13;10.31;10.13;23.16;E;;;;;;;;2MASX J22374423+3424362,MCG +06-49-052,PGC 069362;;; -NGC7341;G;22:39:05.54;-22:40:00.0;Aqr;2.39;0.95;93;13.30;;9.66;7.89;8.52;23.47;SABa;;;;;;;;2MASX J22390552-2240001,ESO 534-011,ESO-LV 534-0110,MCG -04-53-027,PGC 069412;;; -NGC7342;G;22:38:13.15;+35:29:55.9;Peg;1.31;1.25;125;15.30;;11.17;10.46;10.14;24.52;SBa;;;;;;;;2MASX J22381316+3529559,MCG +06-49-054,PGC 069374,SDSS J223813.11+352955.7,UGC 12126;;; -NGC7343;G;22:38:37.86;+34:04:17.2;Peg;0.91;0.73;169;14.40;13.54;11.46;10.80;10.47;22.72;Sb;;;;;;;;2MASX J22383786+3404169,IRAS 22363+3348,MCG +06-49-059,PGC 069391,SDSS J223837.86+340417.4,UGC 12129;;; -NGC7344;G;22:39:36.25;-04:09:32.3;Aqr;1.23;0.55;10;14.00;;11.37;10.64;10.38;23.30;SBab;;;;;;;;2MASX J22393626-0409322,MCG -01-57-020,PGC 069433;;; -NGC7345;G;22:38:44.86;+35:32:26.1;Peg;1.09;0.19;40;15.10;;11.34;10.62;10.42;23.30;Sa;;;;;;;;2MASX J22384486+3532259,MCG +06-49-064,PGC 069401,UGC 12130;;; -NGC7346;G;22:39:35.45;+11:05:00.0;Peg;0.38;0.28;52;15.60;;12.05;11.24;10.97;22.30;E?;;;;;;;;2MASX J22393541+1104595,PGC 069430;;; -NGC7347;G;22:39:56.17;+11:01:39.2;Peg;1.55;0.34;131;14.70;;11.63;10.96;10.72;23.07;Sbc;;;;;;;;2MASX J22395616+1101392,IRAS 22374+1045,MCG +02-57-009,PGC 069443,UGC 12136;;; -NGC7348;G;22:40:36.28;+11:54:22.4;Peg;1.01;0.58;12;14.53;;13.02;12.18;11.83;23.22;SABc;;;;;;;;2MASX J22403630+1154224,IRAS 22381+1138,MCG +02-57-010,PGC 069463,UGC 12142;;; -NGC7349;G;22:41:14.90;-21:47:54.6;Aqr;1.20;0.41;165;15.07;14.51;;;;23.75;SBb;;;;;;;;2MASX J22411491-2147550,ESO 603-004,ESO-LV 603-0040,MCG -04-53-029,PGC 069488;;; -NGC7350;**;22:40:48.56;+12:00:23.5;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7351;G;22:41:26.94;-04:26:41.0;Aqr;1.60;0.84;2;13.00;;10.74;10.13;9.94;23.32;S0;;;;;;;;2MASX J22412693-0426410,MCG -01-57-022,PGC 069489;;; -NGC7352;Other;22:39:43.70;+57:23:39.7;Cep;;;;;;;;;;;;;;;;;;;;"Called a cluster by John Herschel; no cluster at this position."; -NGC7353;G;22:42:12.51;+11:52:38.3;Peg;0.65;0.47;130;16.00;;13.13;12.41;12.53;24.21;Sc;;;;;;;;2MASX J22421253+1152385,PGC 085285;;; -NGC7354;PN;22:40:19.61;+61:17:05.4;Cep;0.38;;;12.90;12.20;10.71;10.23;9.26;;;;;16.20;;;;;IRAS 22384+6101,PN G107.8+02.3;;; -NGC7355;G;22:43:30.56;-36:51:54.6;Gru;1.04;0.44;44;15.07;;12.34;11.66;11.43;23.29;Sb;;;;;;;;2MASX J22433054-3651545,ESO 406-006,ESO-LV 406-0060,PGC 069587;;NGC declination is -1 degree in error.; -NGC7356;G;22:42:02.35;+30:42:31.7;Peg;1.26;0.58;75;15.00;;11.42;10.72;10.57;23.79;Sbc;;;;;;;;2MASX J22420238+3042316,MCG +05-53-010,PGC 069530,UGC 12159;;; -NGC7357;G;22:42:23.94;+30:10:16.9;Peg;0.58;0.37;123;15.10;;12.00;11.33;11.17;22.50;Sb;;;;;;;;2MASX J22422391+3010161,IRAS 22400+2954,MCG +05-53-011,PGC 069544,UGC 12162;;; -NGC7358;G;22:45:36.44;-65:07:18.6;Tuc;2.13;0.69;174;13.64;;10.32;9.64;9.51;24.01;S0;;;;;;;;2MASX J22453648-6507188,ESO 109-018,ESO-LV 109-0180,PGC 069664;;; -NGC7359;G;22:44:48.00;-23:41:17.1;Aqr;2.18;0.50;57;13.44;;10.42;9.73;9.50;23.77;S0;;;;;;;;2MASX J22444799-2341172,ESO 534-022,ESO-LV 534-0220,MCG -04-53-034,PGC 069638;;; -NGC7360;G;22:43:33.95;+04:09:04.2;Peg;0.81;0.42;153;14.50;;11.59;10.85;10.62;23.00;E;;;;;;;;2MASX J22433393+0409039,MCG +01-58-001,PGC 069591,UGC 12167;;; -NGC7361;G;22:42:17.91;-30:03:27.6;PsA;3.14;0.85;8;12.99;12.50;11.29;10.61;10.40;23.08;Sc;;;;;;5237;;2MASX J22421841-3003190,ESO 468-023,ESO-LV 468-0230,IRAS 22395-3019,MCG -05-53-027,PGC 069539,UGCA 434;;The 2MASS position refers to a knot 10 arcsec northeast of the center.; -NGC7362;G;22:43:49.28;+08:42:19.6;Peg;1.30;0.89;175;14.90;;10.63;9.81;9.59;23.24;E;;;;;;;;2MASX J22434930+0842199,MCG +01-58-002,PGC 069602,UGC 12171;;; -NGC7363;G;22:43:19.91;+34:00:05.4;Peg;0.86;0.86;35;14.60;;;;;22.94;SABc;;;;;;;;2MASX J22431991+3400052,IRAS 22409+3344,MCG +06-49-078,PGC 069580;;; -NGC7364;G;22:44:24.37;-00:09:43.5;Aqr;1.65;1.12;66;13.80;;10.52;9.83;9.48;23.19;S0-a;;;;;;;;2MASX J22442436-0009432,MCG +00-58-001,PGC 069630,SDSS J224424.36-000943.5,SDSS J224424.38-000943.5,UGC 12174;;; -NGC7365;G;22:45:10.04;-19:57:07.3;Aqr;1.79;1.08;23;13.48;;10.75;10.13;9.84;23.68;E-S0;;;;;;;;2MASX J22451001-1957072,ESO 603-010,ESO-LV 603-0100,MCG -03-58-001,PGC 069651;;; -NGC7366;G;22:44:26.63;+10:46:52.9;Peg;0.34;0.34;150;15.50;;12.37;11.33;11.31;22.64;;;;;;;;;2MASX J22442662+1046528,MCG +02-58-004,PGC 069629;;; -NGC7367;G;22:44:34.45;+03:38:47.0;Peg;1.43;0.37;123;14.90;;10.66;9.88;9.60;23.57;Sab;;;;;;;;2MASX J22443443+0338470,MCG +00-58-002,PGC 069633,UGC 12175;;; -NGC7368;G;22:45:31.68;-39:20:30.6;Gru;2.85;0.56;130;13.16;;10.23;9.51;9.13;23.12;SBb;;;;;;1459;;2MASX J22453169-3920307,ESO 345-049,ESO-LV 345-0490,IRAS 22426-3936,MCG -07-46-010,PGC 069661;;; -NGC7369;G;22:44:12.30;+34:21:04.4;Peg;0.86;0.73;27;14.80;;12.04;11.27;10.82;23.12;Sc;;;;;;;;2MASX J22441230+3421041,IRAS 22418+3405,MCG +06-49-080,PGC 069619;;; -NGC7370;G;22:45:37.23;+11:03:28.1;Peg;0.65;0.49;120;;;12.68;12.15;11.62;24.09;;;;;;;;;2MASX J22453724+1103279,PGC 069662;;; -NGC7371;G;22:46:03.74;-11:00:04.1;Aqr;2.09;1.92;160;12.50;;10.06;9.51;9.24;23.01;S0-a;;;;;;;;2MASX J22460372-1100038,MCG -02-58-001,PGC 069677;;HOLM 797B is a star.; -NGC7372;G;22:45:46.00;+11:07:51.0;Peg;1.01;0.73;67;14.60;;;;;23.19;Sbc;;;;;;;;IRAS 22432+1051,MCG +02-58-005,PGC 069670,SDSS J224545.94+110751.3;;; -NGC7373;G;22:46:19.41;+03:12:36.2;Peg;1.04;0.55;8;14.80;;11.06;10.34;10.07;23.56;S0;;;;;;;;2MASX J22461942+0312360,PGC 069688;;; -NGC7374;G;22:46:00.95;+10:51:13.0;Peg;0.87;0.71;60;14.90;;11.94;11.28;10.96;23.13;Sbc;;;;;;;;2MASX J22460094+1051130,IRAS 22435+1035,MCG +02-58-007,PGC 069676;;; -NGC7374B;G;22:45:59.19;+10:52:03.0;Peg;0.78;0.46;166;15.60;;12.26;11.64;11.32;23.94;E-S0;;;;;;1452;;2MASX J22455917+1052030,MCG +02-58-006,PGC 069675;;; -NGC7375;G;22:46:32.04;+21:05:01.1;Peg;0.92;0.67;57;14.90;;11.17;10.42;10.21;23.23;S0-a;;;;;;;;2MASX J22463204+2105015,MCG +03-58-003,PGC 069695;;; -NGC7376;G;22:47:17.38;+03:38:44.1;Peg;0.69;0.44;140;15.60;;12.98;12.13;11.77;23.50;S0-a;;;;;;;;2MASX J22471736+0338439,PGC 069715;;; -NGC7377;G;22:47:47.50;-22:18:43.6;Aqr;3.92;3.13;99;11.39;12.78;9.08;8.44;8.18;23.77;S0-a;;;;;;;;2MASX J22474750-2218434,ESO 534-026,ESO-LV 534-0260,MCG -04-53-038,PGC 069733;;; -NGC7378;G;22:47:47.70;-11:48:59.9;Aqr;1.52;0.85;180;13.00;;11.04;10.59;10.12;22.91;SBab;;;;;;;;2MASX J22474769-1148598,MCG -02-58-005,PGC 069734;;; -NGC7379;G;22:47:32.95;+40:14:19.7;Lac;1.25;0.92;93;14.40;;10.69;9.95;9.62;23.32;SBa;;;;;;;;2MASX J22473296+4014197,IRAS 22452+3958,MCG +07-46-018,PGC 069724,UGC 12187;;; -NGC7380;Cl+N;22:47:21.01;+58:07:56.7;Cep;25.00;20.00;;7.62;7.20;;;;;;;;;;;;;LBN 511,MWSC 3659;;; -NGC7381;G;22:50:08.15;-19:43:30.4;Aqr;0.68;0.47;108;14.97;;13.02;12.45;12.12;22.52;Sc;;;;;;;;2MASX J22500813-1943304,ESO 603-017,ESO-LV 603-0170,MCG -03-58-007a,PGC 069828;;; -NGC7382;G;22:50:23.92;-36:51:26.3;Gru;0.74;0.30;109;14.57;;11.52;10.71;10.38;22.45;Sa;;;;;;;;ESO 406-015,ESO-LV 406-0150,MCG -06-50-005,PGC 069840;;; -NGC7383;G;22:49:35.62;+11:33:23.0;Peg;0.86;0.73;166;15.10;;11.44;10.78;10.46;23.42;S0;;;;;;;;2MASX J22493566+1133228,MCG +02-58-014,PGC 069809;;; -NGC7384;*;22:49:42.55;+11:29:14.8;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7385;G;22:49:54.59;+11:36:30.8;Peg;1.93;1.19;83;14.40;;;;;23.44;E;;;;;;;;MCG +02-58-017,PGC 069824,SDSS J224954.58+113630.8,UGC 12207;;; -NGC7386;G;22:50:02.15;+11:41:54.1;Peg;2.04;1.30;144;14.60;;10.39;9.66;9.42;23.79;S0;;;;;;;;2MASX J22500213+1141555,MCG +02-58-018,PGC 069825,UGC 12209;;; -NGC7387;G;22:50:17.64;+11:38:12.2;Peg;1.00;0.63;45;15.30;;11.70;10.97;10.66;23.80;E;;;;;;;;2MASX J22501765+1138125,MCG +02-58-022,PGC 069834;;; -NGC7388;*;22:50:21.02;+11:42:39.4;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7389;G;22:50:16.05;+11:33:58.3;Peg;1.45;0.71;168;15.20;;11.51;10.83;10.49;24.10;SBa;;;;;;;;2MASX J22501609+1133585,MCG +02-58-019,PGC 069836;;; -NGC7390;G;22:50:19.62;+11:31:51.7;Peg;0.82;0.65;173;15.70;;12.21;11.39;11.13;23.81;;;;;;;;;2MASX J22501949+1131525,MCG +02-58-020,PGC 069837;;; -NGC7391;G;22:50:36.13;-01:32:41.4;Psc;1.49;1.29;96;13.70;;9.59;8.88;8.63;22.86;E;;;;;;;;2MASX J22503614-0132413,MCG +00-58-006,PGC 069847,UGC 12211;;; -NGC7392;G;22:51:48.74;-20:36:29.1;Aqr;2.24;1.19;120;12.61;11.85;9.62;8.94;8.64;22.59;SBbc;;;;;;;;2MASX J22514874-2036292,ESO 603-022,ESO-LV 603-0220,IRAS 22491-2052,MCG -04-53-040,PGC 069887;;; -NGC7393;G;22:51:38.09;-05:33:26.3;Aqr;2.04;0.60;92;13.40;;10.56;9.97;9.71;22.84;SBc;;;;;;;;2MASX J22513809-0533262,MCG -01-58-002,PGC 069874;;; -NGC7394;OCl;22:50:07.68;+52:10:48.4;Lac;;;;;;;;;;;;;;;;;;;;; -NGC7395;G;22:51:02.93;+37:05:16.1;Lac;1.15;1.04;110;15.30;;10.82;10.02;9.81;24.21;S0;;;;;;;;2MASX J22510290+3705163,MCG +06-50-006 NED01,PGC 069861,UGC 12216;;; -NGC7396;G;22:52:22.64;+01:05:32.6;Psc;1.77;1.03;98;13.75;;9.76;9.02;8.70;23.30;Sa;;;;;;;;2MASX J22522259+0105332,MCG +00-58-007,PGC 069889,SDSS J225222.60+010533.1,UGC 12220;;; -NGC7397;G;22:52:46.70;+01:07:58.0;Psc;0.71;0.47;162;15.30;;11.84;11.16;10.78;22.99;S0-a;;;;;;;;2MASX J22524672+0107579,MCG +00-58-008,PGC 069904,SDSS J225246.70+010758.0,SDSS J225246.71+010758.1;;; -NGC7398;G;22:52:49.27;+01:12:04.0;Psc;1.05;0.70;74;14.54;;11.53;10.83;10.51;23.42;SBa;;;;;;;;2MASX J22524925+0112039,MCG +00-58-009,PGC 069905,SDSS J225249.27+011203.9,SDSS J225249.27+011204.0,UGC 12225;;; -NGC7399;G;22:52:39.26;-09:16:04.0;Aqr;1.13;0.73;149;15.47;14.50;11.34;10.58;10.22;23.67;S0-a;;;;;;;;2MASX J22523926-0916040,MCG -02-58-006,PGC 069902,SDSS J225239.26-091604.0;;; -NGC7400;G;22:54:20.82;-45:20:49.3;Gru;2.42;0.57;2;13.62;;11.11;10.38;10.13;23.20;Sbc;;;;;;;;2MASX J22542080-4520492,ESO 290-022,ESO-LV 290-0220,IRAS 22514-4536,PGC 069967;;; -NGC7401;G;22:52:58.56;+01:08:33.6;Psc;0.75;0.47;90;14.99;;13.18;12.44;12.18;23.30;SBab;;;;;;;;2MASX J22525858+0108339,PGC 069911,SDSS J225258.56+010833.4,SDSS J225258.56+010833.5,SDSS J225258.56+010833.6;;; -NGC7402;G;22:53:04.48;+01:08:40.0;Psc;0.42;0.29;46;15.70;;13.63;12.86;12.53;23.11;S0;;;;;;;;2MASX J22530445+0108399,MCG +00-58-010,PGC 069914,SDSS J225304.47+010840.0,SDSS J225304.48+010840.0;;; -NGC7403;*;22:53:06.40;+01:28:57.8;Psc;;;;;;;;;;;;;;;;;;;;; -NGC7404;G;22:54:18.61;-39:18:53.8;Gru;1.63;0.93;2;13.64;;10.96;10.27;10.03;23.39;E-S0;;;;;;5260;;2MASX J22541861-3918537,ESO 346-010,ESO-LV 346-0100,MCG -07-47-001,PGC 069964;;+2 degree error in IC declination.; -NGC7405;G;22:52:57.17;+12:35:37.0;Peg;0.33;0.23;95;16.00;;13.29;12.68;12.43;23.02;Sc;;;;;;;;2MASX J22525723+1235368,PGC 069907;;The NGC identification is very uncertain.; -NGC7406;G;22:53:56.24;-06:34:45.3;Aqr;0.92;0.65;75;15.00;;11.38;10.71;10.42;22.71;Sb;;;;;;;;2MASX J22535624-0634453,MCG -01-58-003,PGC 069947;;; -NGC7407;G;22:53:20.88;+32:07:50.4;Peg;1.67;0.79;154;14.20;;11.24;10.64;10.26;23.36;Sc;;;;;;;;2MASX J22532041+3207529,2MASX J22532085+3207507,IRAS 22510+3151,MCG +05-54-002,PGC 069922,SDSS J225321.11+320745.7,UGC 12230;;; -NGC7408;G;22:55:56.86;-63:41:41.0;Tuc;1.91;0.70;168;13.35;15.41;11.61;10.95;10.74;22.64;SBc;;;;;;;;2MASX J22555688-6341411,ESO 109-026,ESO-LV 109-0260,IRAS 22527-6357,PGC 070037;;The APMUKS position is north of the nucleus.; -NGC7409;G;22:53:48.12;+20:12:37.4;Peg;0.58;0.45;159;15.60;;12.25;11.54;11.31;23.14;S0;;;;;;;;2MASX J22534809+2012377,PGC 069939;;; -NGC7410;G;22:55:00.95;-39:39:40.8;Gru;6.01;1.77;43;11.35;11.80;8.14;7.46;7.23;23.36;SBa;;;;;;;;2MASX J22550094-3939409,ESO 346-012,ESO-LV 346-0120,IRAS 22522-3955,MCG -07-47-002,PGC 069994;;; -NGC7411;G;22:54:34.92;+20:14:10.2;Peg;1.00;0.90;127;14.80;;11.20;10.45;10.26;23.61;E;;;;;;;;2MASX J22543490+2014105,MCG +03-58-010,PGC 069974,UGC 12241;;; -NGC7412;G;22:55:45.75;-42:38:31.3;Gru;3.79;2.79;75;11.82;11.38;9.55;8.73;8.59;23.18;SBb;;;;;;;;2MASX J22554573-4238313,ESO 290-024,ESO-LV 290-0240,IRAS 22529-4254,MCG -07-47-004,PGC 070027;;; -NGC7412A;G;22:57:09.00;-42:48:16.1;Gru;0.59;0.42;92;14.30;;;;;21.80;SBd;;;;;;;;ESO 290-028,ESO-LV 290-0280,PGC 070089;;The APM data are for the brighter eastern end.; -NGC7413;G;22:55:03.10;+13:13:13.7;Peg;1.14;0.80;64;15.20;;12.01;11.27;11.00;24.17;E-S0;;;;;;;;2MASX J22550312+1313139,MCG +02-58-035,PGC 069997,SDSS J225503.09+131313.7,SDSS J225503.10+131313.6,SDSS J225503.10+131313.7;;; -NGC7414;G;22:55:24.42;+13:14:53.8;Peg;0.62;0.28;172;;;13.51;12.76;12.41;24.37;S0;;;;;;;;2MASX J22552441+1314539,PGC 070008,SDSS J225524.41+131453.7,SDSS J225524.42+131453.7,SDSS J225524.42+131453.8;;; -NGC7415;G;22:54:53.62;+20:15:41.6;Peg;0.82;0.21;128;15.00;;13.00;12.18;12.04;22.95;Sab;;;;;;;;2MASX J22545362+2015414,MCG +03-58-012,PGC 069985,UGC 12244;;; -NGC7416;G;22:55:41.70;-05:29:43.2;Aqr;3.08;0.60;110;13.00;;10.06;9.43;9.25;23.29;SBb;;;;;;;;2MASX J22554170-0529432,MCG -01-58-004,PGC 070025;;; -NGC7417;G;22:57:49.51;-65:02:18.8;Tuc;2.21;1.45;11;13.24;;10.31;9.65;9.34;23.37;SBab;;;;;;;;2MASX J22574951-6502188,ESO 109-028,ESO-LV 109-0280,PGC 070113;;The APM position is 9 arcsec northwest of the nucleus.; -NGC7418;G;22:56:36.16;-37:01:48.3;Gru;3.66;2.83;139;11.66;11.39;9.45;8.77;8.52;23.03;Sc;;;;;;1459;;2MASX J22563615-3701482,ESO 406-025,ESO-LV 406-0250,IRAS 22538-3717,MCG -06-50-013,PGC 070069;;; -NGC7418A;G;22:56:41.25;-36:46:21.8;Gru;1.75;0.88;81;13.85;;12.97;12.68;12.24;22.96;Scd;;;;;;;;ESO 406-027,ESO-LV 406-0270,MCG -06-50-011B,PGC 070075;;; -NGC7419;OCl;22:54:20.06;+60:48:55.9;Cep;4.08;;;;13.00;;;;;;;;;;;;;MWSC 3672;;; -NGC7420;G;22:55:32.05;+29:48:18.0;Peg;0.85;0.77;50;14.90;;12.08;11.54;11.13;23.32;Sb;;;;;;;;2MASX J22553197+2948184,IRAS 22531+2932,MCG +05-54-018,PGC 070017;;; -NGC7421;G;22:56:54.33;-37:20:50.1;Gru;2.38;1.95;85;12.64;11.93;10.24;9.61;9.25;23.09;Sbc;;;;;;;;2MASX J22565431-3720499,ESO 346-017,ESO-LV 346-0170,MCG -06-50-015,PGC 070083;;; -NGC7422;G;22:56:12.38;+03:55:36.4;Psc;0.83;0.63;146;14.30;;11.93;11.28;11.06;22.58;SBb;;;;;;;;2MASX J22561238+0355364,IRAS 22536+0339,MCG +01-58-013,PGC 070048,SDSS J225612.36+035536.3,UGC 12254;;; -NGC7423;OCl;22:55:08.54;+57:05:48.9;Cep;3.60;;;;;;;;;;;;;;;;;MWSC 3674;;; -NGC7424;G;22:57:18.37;-41:04:14.1;Gru;5.01;2.69;125;10.88;10.38;9.66;9.19;9.25;22.75;Sc;;;;;;;;2MASX J22571836-4104140,ESO 346-019,ESO-LV 346-0190,IRAS 22544-4120,MCG -07-47-008,PGC 070096;;Extended HIPASS source; -NGC7425;G;22:57:15.54;-10:57:00.0;Aqr;0.97;0.59;63;15.00;;12.29;11.67;11.46;23.82;S0-a;;;;;;;;2MASX J22571553-1056596,MCG -02-58-013,PGC 070097;;; -NGC7426;G;22:56:02.86;+36:21:40.9;Lac;1.57;1.22;72;13.60;;9.85;9.09;8.82;23.41;E;;;;;;;;2MASX J22560284+3621411,MCG +06-50-012,PGC 070042,UGC 12256;;; -NGC7427;G;22:57:09.92;+08:30:20.1;Peg;0.58;0.50;102;15.50;;12.33;11.75;11.49;23.06;;;;;;;;;2MASX J22570990+0830200,MCG +01-58-016,PGC 070091;;; -NGC7428;G;22:57:19.53;-01:02:56.4;Psc;0.91;0.83;65;13.80;;10.54;9.87;9.59;22.48;Sa;;;;;;;;2MASX J22571952-0102563,MCG +00-58-014,PGC 070098,UGC 12262;;; -NGC7429;OCl;22:56:00.60;+59:58:25.9;Cep;4.50;;;;;;;;;;;;;;;;;MWSC 3676;;; -NGC7430;G;22:57:29.72;+08:47:39.5;Peg;0.60;0.27;60;15.10;;11.90;11.15;10.98;22.67;S0;;;;;;;;2MASX J22572973+0847377,MCG +01-58-017,PGC 070106;;; -NGC7431;G;22:57:38.69;+26:09:51.5;Peg;0.26;0.20;125;15.60;;13.64;12.97;12.79;22.55;;;;;;;;;2MASX J22573899+2609517,PGC1765321 ;;; -NGC7432;G;22:58:01.94;+13:08:04.2;Peg;1.57;0.92;40;15.95;14.81;10.89;10.20;9.91;24.30;E;;;;;;;;2MASX J22580191+1308043,MCG +02-58-040,PGC 070129,SDSS J225801.94+130804.2,UGC 12268;;; -NGC7433;G;22:57:51.71;+26:09:43.8;Peg;0.78;0.30;47;15.00;;12.55;11.82;11.59;23.08;Sbc;;;;;;;;2MASX J22575170+2609436,MCG +04-54-003,PGC 070112;;; -NGC7434;G;22:58:21.45;-01:11:02.2;Psc;0.61;0.30;80;15.70;;12.08;11.32;11.01;22.96;E-S0;;;;;;;;2MASX J22582143-0111026,MCG +00-58-016,PGC 070145,SDSS J225821.45-011102.1,SDSS J225821.45-011102.2;;; -NGC7435;G;22:57:54.47;+26:08:19.9;Peg;1.31;0.42;112;15.50;;;;;24.16;SBa;;;;;;;;MCG +04-54-004,PGC 070116,UGC 12267;;; -NGC7436;GPair;22:57:56.90;+26:09:00.0;Peg;1.20;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC7436A;G;22:57:56.17;+26:08:59.9;Peg;0.72;0.25;98;15.50;15.00;;;;21.16;Sbc;;;;;;;;MCG +04-54-005,PGC 070123;;; -NGC7436B;G;22:57:57.54;+26:08:59.8;Peg;1.95;1.48;49;15.50;;10.05;9.35;9.01;24.11;E;;;;;;;;2MASX J22575750+2609000,MCG +04-54-006,PGC 070124,UGC 12269;;; -NGC7437;G;22:58:10.06;+14:18:30.6;Peg;1.71;1.64;145;14.40;;12.62;12.50;11.98;23.84;SABc;;;;;;;;2MASX J22581004+1418324,HD ,MCG +02-58-041,PGC 070131,SDSS J225810.05+141830.6,SDSS J225810.06+141830.5,UGC 12270;;; -NGC7438;OCl;22:57:20.37;+54:18:33.5;Cas;5.70;;;;;;;;;;;;;;;;;MWSC 3682;;; -NGC7439;G;22:58:09.96;+29:13:42.3;Peg;1.03;0.56;165;15.20;;12.06;11.32;10.99;23.84;S0;;;;;;;;2MASX J22580996+2913421,MCG +05-54-021,PGC 070134,UGC 12273;;; -NGC7440;G;22:58:32.54;+35:48:08.7;And;1.16;0.93;50;14.60;;11.52;10.82;10.49;23.36;Sa;;;;;;;;2MASX J22583255+3548086,MCG +06-50-014,PGC 070152,UGC 12276;;; -NGC7441;G;22:56:41.38;-07:22:44.6;Aqr;1.29;0.77;160;14.00;;12.01;11.42;11.02;23.09;Sc;;;;;;1458;;2MASX J22564138-0722445,MCG -01-58-007,PGC 070080;;The identification as NGC 7441 is not certain.; -NGC7442;G;22:59:26.55;+15:32:54.2;Peg;1.01;0.95;95;14.20;;11.56;10.89;10.65;22.96;Sc;;;;;;;;2MASX J22592655+1532543,IRAS 22569+1516,MCG +02-58-045,PGC 070183,UGC 12286;;; -NGC7443;G;23:00:08.85;-12:48:28.4;Aqr;1.73;0.69;41;14.00;;10.35;9.63;9.38;23.73;S0-a;;;;;;;;2MASX J23000884-1248284,MCG -02-58-015,PGC 070218;;; -NGC7444;G;23:00:08.96;-12:50:03.4;Aqr;1.45;0.58;1;14.00;;10.47;9.77;9.51;23.35;S0;;;;;;;;2MASX J23000897-1250034,MCG -02-58-016,PGC 070219;;; -NGC7445;G;22:59:22.44;+39:06:27.1;And;0.67;0.17;85;15.60;;11.72;10.98;10.63;23.34;S0-a;;;;;;;;2MASX J22592250+3906270,MCG +06-50-015,PGC 070178;;; -NGC7446;G;22:59:29.00;+39:04:58.4;And;1.26;1.14;110;15.70;;11.11;10.41;10.15;24.59;E;;;;;;;;2MASX J22592904+3904590,PGC 070185;;; -NGC7447;Other;23:00:26.08;-10:31:40.8;Aqr;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7448;G;23:00:03.59;+15:58:49.2;Peg;2.07;0.81;171;12.00;;9.94;9.33;9.01;21.66;Sc;;;;;;;;2MASX J23000358+1558493,IRAS 22575+1542,MCG +03-58-018,PGC 070213,SDSS J230003.60+155848.8,UGC 12294;;; -NGC7449;G;22:59:37.64;+39:08:45.1;And;1.02;0.80;130;15.40;;10.95;10.24;9.87;24.24;E;;;;;;;;2MASX J22593761+3908450,MCG +06-50-016,PGC 070196,UGC 12292;;; -NGC7450;G;23:00:47.82;-12:55:06.7;Aqr;1.54;1.46;25;15.19;14.33;11.09;10.40;10.14;23.80;S0-a;;;;;;;;2MASX J23004784-1255063,MCG -02-58-019,PGC 070252;;; -NGC7451;G;23:00:40.86;+08:28:04.5;Peg;1.11;0.54;65;15.00;;11.83;11.17;10.93;23.34;Sbc;;;;;;;;2MASX J23004081+0828040,IRAS 22581+0811,MCG +01-58-020,PGC 070245,SDSS J230040.79+082803.7,UGC 12299;;; -NGC7452;G;23:00:47.50;+06:44:43.9;Psc;0.51;0.37;25;;;12.63;11.94;11.63;23.76;;;;;;;;;2MASX J23004749+0644440,PGC 1306660;;NGC identification is not certain.; -NGC7453;Other;23:01:25.41;-06:21:23.4;Aqr;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC7454;G;23:01:06.51;+16:23:18.1;Peg;1.54;0.75;140;13.60;;9.79;9.11;8.86;22.58;E;;;;;;;;2MASX J23010651+1623181,2MASX J23010728+1622581,MCG +03-58-020,PGC 070264,UGC 12305;;; -NGC7455;G;23:00:40.97;+07:18:11.0;Psc;0.70;0.40;163;15.30;;12.22;11.62;11.20;23.46;;;;;;;;;2MASX J23004097+0718110,IRAS 22581+0702,PGC 070246;;; -NGC7456;G;23:02:10.42;-39:34:09.8;Gru;5.15;1.76;22;12.27;;10.19;9.56;9.36;23.74;Sc;;;;;;;;2MASX J23021042-3934098,ESO 346-026,ESO-LV 346-0260,IRAS 22594-3950,MCG -07-47-011,PGC 070304;;; -NGC7457;G;23:00:59.93;+30:08:41.8;Peg;3.95;2.25;128;11.04;11.87;9.11;8.47;8.19;23.57;E-S0;;;;;;;;2MASX J23005993+3008416,MCG +05-54-026,PGC 070258,UGC 12306;;; -NGC7458;G;23:01:28.64;+01:45:12.2;Psc;1.03;0.82;14;13.90;;10.30;9.57;9.34;22.54;E;;;;;;;;2MASX J23012865+0145119,MCG +00-58-020,PGC 070277,UGC 12309;;; -NGC7459;GPair;23:00:59.90;+06:45:00.0;Psc;1.00;;;;;;;;;;;;;;;;;UGC 12302;;Misidentified as NGC 7452 in MCG.;Diameter of the group inferred by the author. -NGC7459 NED01;G;23:00:59.64;+06:44:57.9;Psc;1.32;0.78;61;15.00;;10.97;10.21;9.96;24.81;E;;;;;;;;2MASX J23005964+0644580,MCG +01-58-021,PGC 070255,UGC 12302 NED01;;NGC identification is not certain.; -NGC7459 NED02;G;23:01:00.21;+06:45:03.9;Psc;;;;;;;;;;;;;;;;;;PGC 200385,UGC 12302 NED02;;NGC identification is not certain.; -NGC7460;G;23:01:42.91;+02:15:49.0;Psc;1.14;0.81;25;14.20;;10.86;10.21;9.98;22.41;SBb;;;;;;;;2MASX J23014291+0215489,IRAS 22591+0159,MCG +00-58-021,PGC 070287,SDSS J230142.87+021549.1,UGC 12312;;; -NGC7461;G;23:01:48.33;+15:34:56.9;Peg;0.94;0.83;166;14.50;;11.10;10.40;10.07;23.16;S0;;;;;;;;2MASX J23014831+1534566,MCG +02-58-056,PGC 070290,SDSS J230148.33+153457.2,UGC 12314;;; -NGC7462;G;23:02:46.49;-40:50:06.9;Gru;4.99;0.84;76;12.07;;10.39;9.88;9.65;23.20;SBbc;;;;;;;;2MASX J23024649-4050067,ESO 346-028,ESO-LV 346-0280,IRAS 23000-4105,MCG -07-47-013,PGC 070324;;; -NGC7463;G;23:01:51.98;+15:58:54.7;Peg;1.58;0.44;92;13.50;;11.10;10.44;10.25;22.64;SABb;;;;;;;;2MASX J23015197+1558546,MCG +03-58-022,PGC 070291,UGC 12316;;; -NGC7464;G;23:01:53.70;+15:58:25.5;Peg;0.52;0.49;35;14.50;;13.39;12.92;12.75;21.87;E;;;;;;;;2MASX J23015371+1558256,MCG +03-58-023,PGC 070292,UGC 12315;;; -NGC7465;G;23:02:00.97;+15:57:53.2;Peg;1.06;0.64;162;13.30;;10.54;9.84;9.54;22.21;S0;;;;;;;;2MASX J23020095+1557535,IRAS 22595+1541,MCG +03-58-024,PGC 070295,UGC 12317;;; -NGC7466;G;23:02:03.43;+27:03:09.5;Peg;1.54;0.59;25;15.27;14.42;11.56;10.79;10.49;23.60;Sb;;;;;;;;2MASX J23020343+2703093,IRAS 22596+2647,MCG +04-54-017,PGC 070299,UGC 12319;;; -NGC7467;G;23:02:27.48;+15:33:14.7;Peg;0.81;0.58;26;15.50;;11.79;11.04;10.79;23.67;S0;;;;;;;;2MASX J23022748+1533145,MCG +02-58-057,PGC 070310;;; -NGC7468;G;23:02:59.26;+16:36:18.9;Peg;0.82;0.67;28;14.00;;12.34;11.70;11.58;22.52;E;;;;;;;;2MASX J23025917+1636162,IRAS 23004+1619,PGC 070332,UGC 12329;;; -NGC7469;G;23:03:15.62;+08:52:26.4;Peg;1.38;1.21;126;13.00;12.34;10.11;9.25;8.85;22.27;Sa;;;;;;;;2MASX J23031567+0852252,IRAS 23007+0836,MCG +01-58-025,PGC 070348,SDSS J230315.61+085226.0,UGC 12332;;; -NGC7470;G;23:05:14.06;-50:06:41.7;Gru;1.55;1.02;93;14.76;;12.80;12.02;12.13;23.08;Sbc;;;;;;;;2MASX J23051405-5006413,ESO 239-009,PGC 070431;;; -NGC7471;Other;23:03:53.82;-22:54:24.9;Aqr;;;;;;;;;;;;;;;;;;;;"Nominal position for NGC 7471; nothing here."; -NGC7472;G;23:05:38.61;+03:03:33.3;Psc;0.75;0.49;55;14.60;;11.34;10.69;10.40;23.17;E;;;;;7482;;;2MASX J23053862+0303334,MCG +00-58-029,PGC 070446;;; -NGC7473;G;23:03:57.09;+30:09:36.5;Peg;1.09;0.49;42;14.80;;11.41;10.70;10.42;23.62;S0;;;;;;;;2MASX J23035707+3009365,MCG +05-54-030,PGC 070373,UGC 12335;;; -NGC7474;G;23:04:04.43;+20:04:01.9;Peg;0.79;0.62;8;15.20;;11.78;10.93;10.71;23.49;E;;;;;;;;2MASX J23040441+2004022,MCG +03-58-026,PGC 070379;;; -NGC7475;GPair;23:04:10.90;+20:04:52.1;Peg;1.30;;;;;;;;;;;;;;;;;UGC 12337;;;Diameter of the group inferred by the author. -NGC7475 NED01;G;23:04:10.25;+20:04:46.2;Peg;1.41;0.91;62;15.10;;10.76;9.99;9.72;24.33;E;;;;;;;;2MASX J23041023+2004462,MCG +03-58-027,PGC 070383,UGC 12337 NED01;;Called 'NGC 7475' in MCG.; -NGC7475 NED02;G;23:04:11.63;+20:05:06.1;Peg;0.45;0.45;;15.10;;;;;;;;;;;;;;MCG +03-58-028,PGC 070382,UGC 12337 NED02;;; -NGC7476;G;23:05:11.87;-43:05:57.7;Gru;1.33;1.06;178;13.57;;13.65;10.75;10.51;22.80;SBab;;;;;;;;2MASX J23051187-4305577,ESO 290-045,ESO-LV 290-0450,IRAS 23023-4322,MCG -07-47-015,PGC 070427;;; -NGC7477;G;23:04:40.66;+03:07:04.8;Psc;0.38;0.17;23;16.92;;;;;23.56;;;;;;;;;2MASX J23044064+0307048,PGC 1245518;;Two Galactic stars plus faint galaxy.; -NGC7478;G;23:04:56.61;+02:34:40.0;Psc;0.43;0.38;9;15.98;;13.04;12.26;11.91;23.23;Sa;;;;;;;;2MASX J23045659+0234396,PGC 070418;;; -NGC7479;G;23:04:56.65;+12:19:22.4;Peg;3.65;2.72;26;11.60;10.85;9.19;8.51;8.20;23.04;SBbc;;;;;;;;2MASX J23045666+1219223,C 044,IRAS 23024+1203,MCG +02-58-060,PGC 070419,SDSS J230456.65+121922.3,UGC 12343;;; -NGC7480;G;23:05:13.62;+02:32:57.9;Psc;1.32;0.27;101;15.10;;10.95;10.19;9.88;23.79;S0-a;;;;;;;;2MASX J23051361+0232576,MCG +00-58-027,PGC 070432,UGC 12349;;; -NGC7481;Other;23:05:51.62;-19:56:22.8;Aqr;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7482;Dup;23:05:38.61;+03:03:33.3;Psc;;;;;;;;;;;;;;;7472;;;;;; -NGC7483;G;23:05:48.29;+03:32:42.4;Psc;1.43;0.83;116;14.30;;10.68;9.93;9.74;23.53;Sa;;;;;;;;2MASX J23054830+0332425,IRAS 23032+0316,MCG +00-58-030,PGC 070455,SDSS J230548.26+033242.2,UGC 12353;;; -NGC7484;G;23:07:04.91;-36:16:31.3;Scl;1.09;1.00;0;12.79;;9.77;9.13;8.86;22.04;E;;;;;;;;2MASX J23070492-3616315,ESO 407-006,ESO-LV 407-0060,MCG -06-50-026,PGC 070505;;; -NGC7485;G;23:06:04.86;+34:06:27.7;Peg;1.51;0.76;145;14.20;;10.82;10.04;9.82;23.79;S0;;;;;;;;2MASX J23060487+3406278,MCG +06-50-022,PGC 070470,UGC 12360;;; -NGC7486;Other;23:06:12.98;+34:06:05.4;Peg;;;;;;;;;;;;;;;;;;;;Four Galactic stars.; -NGC7487;G;23:06:50.54;+28:10:44.5;Peg;1.80;1.14;166;14.80;;10.81;10.10;9.74;24.75;E;;;;;;;;2MASX J23065052+2810449,MCG +05-54-035,PGC 070496,UGC 12368;;; -NGC7488;G;23:07:48.95;+00:56:25.9;Psc;0.62;0.41;22;14.90;;11.69;10.95;10.67;22.52;E-S0;;;;;;;;2MASX J23074896+0056258,MCG +00-59-001,PGC 070539,SDSS J230748.93+005625.8,SDSS J230748.94+005625.8,SDSS J230748.94+005625.9;;; -NGC7489;G;23:07:32.71;+22:59:52.8;Peg;1.22;0.65;165;14.30;;11.41;10.82;10.42;23.04;Sc;;;;;;;;2MASX J23073271+2259527,IRAS 23050+2243,MCG +04-54-028,PGC 070532,UGC 12378;;; -NGC7490;G;23:07:25.17;+32:22:30.2;Peg;1.81;1.76;70;13.50;;10.29;9.67;9.33;23.65;Sb;;;;;;;;2MASX J23072515+3222303,IRAS 23050+3206,MCG +05-54-036,PGC 070526,UGC 12379;;; -NGC7491;G;23:08:05.98;-05:58:00.0;Aqr;0.84;0.58;174;14.50;;12.32;11.70;11.53;22.62;Sbc;;;;;;;;2MASX J23080596-0558001,MCG -01-59-002,PGC 070546;;; -NGC7492;GCl;23:08:26.68;-15:36:41.3;Aqr;3.00;;;;10.48;;;;;;;;;;;;;MWSC 3705;;; -NGC7493;*;23:08:31.63;+00:54:36.0;Psc;;;;;;;;;;;;;;;;;;SDSS J230831.63+005436.0;;; -NGC7494;G;23:08:58.58;-24:22:10.5;Aqr;0.87;0.65;85;16.04;;11.63;11.03;10.60;23.76;E;;;;;;;;2MASX J23085858-2422106,ESO 535-005,MCG -04-54-007,PGC 070568;;; -NGC7495;G;23:08:57.18;+12:02:52.9;Peg;1.61;1.44;12;14.70;;11.45;11.22;10.59;23.44;SABc;;;;;;;;2MASX J23085717+1202530,IRAS 23064+1146,MCG +02-59-003,PGC 070566,SDSS J230857.17+120252.8,UGC 12391;;; -NGC7496;G;23:09:47.29;-43:25:40.6;Gru;3.40;2.17;169;11.92;13.90;9.49;8.84;8.65;22.96;Sb;;;;;;;;2MASX J23094729-4325408,ESO 291-001,ESO-LV 291-0010,IRAS 23069-4341,MCG -07-47-020,PGC 070588;;; -NGC7496A;G;23:12:23.28;-43:46:41.5;Gru;1.44;1.23;84;14.60;;;;;24.00;SBm;;;;;;;;ESO 291-007,ESO-LV 291-0070,PGC 070687;;; -NGC7497;G;23:09:03.41;+18:10:37.9;Peg;2.75;0.97;45;13.30;;9.95;9.16;9.14;23.05;Sc;;;;;;;;2MASX J23090342+1810378,IRAS 23065+1754,MCG +03-59-002,PGC 070569,UGC 12392;;; -NGC7498;G;23:09:56.20;-24:25:30.2;Aqr;0.95;0.44;3;15.05;;11.83;11.11;10.84;23.21;Sa;;;;;;;;2MASX J23095620-2425299,ESO 535-006,MCG -04-54-008,PGC 070590;;; -NGC7499;G;23:10:22.39;+07:34:50.4;Psc;1.55;0.86;11;15.00;;11.03;10.28;10.00;23.79;S0;;;;;;;;2MASX J23102237+0734501,MCG +01-59-005,PGC 070608,SDSS J231022.37+073450.6,UGC 12397;;; -NGC7500;G;23:10:29.81;+11:00:44.3;Peg;1.51;1.03;121;14.90;;10.91;10.08;9.87;24.44;S0;;;;;;;;2MASX J23102978+1100441,MCG +02-59-004,PGC 070620,UGC 12399;;; -NGC7501;G;23:10:30.42;+07:35:20.5;Psc;1.02;0.90;157;17.40;;11.32;10.60;10.40;23.55;E;;;;;;;;2MASX J23103039+0735201,MCG +01-59-007,PGC 070619;;; -NGC7502;Other;23:10:19.79;-21:44:15.3;Aqr;;;;;;;;;;;;;;;;;;;;Galactic triple star.; -NGC7503;G;23:10:42.28;+07:34:03.7;Psc;0.95;0.84;76;14.90;;11.12;10.35;10.02;23.21;E;;;;;;;;2MASX J23104223+0734033,MCG +01-59-008,PGC 070628,SDSS J231042.27+073403.8;;; -NGC7504;*;23:10:41.17;+14:23:10.7;Peg;;;;;;;;;;;;;;;;;;SDSS J231041.17+142310.7;;NGC identification is not certain.; -NGC7505;G;23:11:00.65;+13:37:53.6;Peg;1.00;0.39;110;15.60;;11.96;11.26;10.94;23.94;S0-a;;;;;;;;2MASX J23110066+1337538,PGC 070636,SDSS J231100.65+133753.6;;; -NGC7506;G;23:11:40.98;-02:09:36.1;Psc;1.25;0.61;94;14.30;;10.70;10.02;9.75;23.50;S0-a;;;;;;;;2MASX J23114100-0209358,MCG +00-59-005,PGC 070660,UGC 12406;;; -NGC7507;G;23:12:07.59;-28:32:22.6;Scl;3.33;3.20;90;11.60;;8.20;7.50;7.29;22.87;E;;;;;;;;2MASX J23120759-2832227,ESO 469-019,ESO-LV 469-0190,MCG -05-54-022,PGC 070676;;; -NGC7508;G;23:11:49.19;+12:56:25.5;Peg;0.81;0.26;160;15.70;;11.79;11.08;10.87;23.56;Sa;;;;;;;;2MASX J23114919+1256255,2MASX J23114960+1256125,MCG +02-59-005,PGC 070663,UGC 12408;;MCG notes a star or possible companion superposed.; -NGC7509;G;23:12:21.41;+14:36:33.7;Peg;1.32;1.22;155;17.53;16.47;10.91;10.19;9.88;23.95;E;;;;;;;;2MASX J23122143+1436333,MCG +02-59-006,PGC 070679,SDSS J231221.41+143633.7,SDSS J231221.41+143633.8,SDSS J231221.42+143633.7;;; -NGC7510;OCl;23:11:03.78;+60:34:15.2;Cep;3.90;;;8.77;7.90;;;;;;;;;;;;;MWSC 3706;;; -NGC7511;G;23:12:26.29;+13:43:35.7;Peg;1.01;0.51;130;14.84;;11.92;11.22;10.87;23.35;Sb;;;;;;;;2MASX J23122627+1343353,IRAS 23099+1327,MCG +02-59-007,PGC 070691,SDSS J231226.29+134335.7,UGC 12412;;; -NGC7512;G;23:12:20.93;+31:07:32.2;Peg;1.90;1.12;36;14.10;;10.94;10.39;9.98;24.28;E;;;;;;;;2MASX J23122095+3107322,MCG +05-54-046,PGC 070683,UGC 12414;;; -NGC7513;G;23:13:14.03;-28:21:27.0;Scl;3.19;1.92;100;12.73;;9.82;9.20;8.95;23.48;SBb;;;;;;;;2MASX J23131402-2821269,ESO 469-022,ESO-LV 469-0220,IRAS 23105-2837,MCG -05-54-023,PGC 070714,UGCA 437;;; -NGC7514;G;23:12:25.86;+34:52:53.4;Peg;1.30;0.89;134;13.98;13.15;11.04;10.32;10.09;22.63;Sbc;;;;;;;;2MASX J23122587+3452535,MCG +06-50-026,PGC 070689,UGC 12415;;; -NGC7515;G;23:12:48.67;+12:40:45.4;Peg;1.65;1.43;10;14.00;;10.29;9.63;9.33;22.95;Sbc;;;;;;;;2MASX J23124864+1240454,IRAS 23103+1224,MCG +02-59-008,PGC 070699,UGC 12418;;; -NGC7516;G;23:12:51.86;+20:14:54.3;Peg;1.26;0.91;99;14.60;;10.82;10.09;9.84;23.78;S0;;;;;;;;2MASX J23125186+2014540,MCG +03-59-010,PGC 070703,UGC 12420;;; -NGC7517;G;23:13:13.83;-02:06:01.5;Psc;0.57;0.35;163;15.50;;11.91;11.25;10.94;23.22;E;;;;;;;;2MASX J23131383-0206011,MCG +00-59-008,PGC 070715;;; -NGC7518;G;23:13:12.73;+06:19:18.0;Psc;1.26;0.75;117;14.50;;11.03;10.32;10.07;23.32;SABa;;;;;;;;2MASX J23131271+0619177,IRAS 23106+0603,MCG +01-59-012,PGC 070712,UGC 12422;;; -NGC7519;G;23:13:11.24;+10:46:19.8;Peg;1.11;0.83;168;15.20;;11.70;10.88;10.77;23.80;Sb;;;;;;;;2MASX J23131123+1046197,MCG +02-59-009,PGC 070713,SDSS J231311.24+104619.7,UGC 12424;;Position in 1991PNAOJ...2...37T is for the companion galaxy.; -NGC7520;Other;23:13:44.88;-23:47:39.1;Aqr;;;;;;;;;;;;;;;;;;;;"Nominal position for NGC 7520; nothing here. NGC 7520 may be IC 5290."; -NGC7521;G;23:13:35.35;-01:43:53.4;Psc;0.52;0.40;172;14.90;;11.42;10.68;10.36;22.56;S0;;;;;;;;2MASX J23133529-0143531,MCG +00-59-009,PGC 070725;;; -NGC7522;*;23:15:36.40;-22:53:41.5;Aqr;;;;;;;;;;;;;;;;;;;;NGC identification is uncertain.; -NGC7523;G;23:13:34.72;+13:59:12.5;Peg;1.32;0.29;2;15.70;;12.14;11.37;11.00;24.01;Sb;;;;;;;;2MASX J23133468+1359121,PGC 070726,SDSS J231334.71+135912.3,SDSS J231334.71+135912.4,SDSS J231334.72+135912.4,SDSS J231334.72+135912.5;;; -NGC7524;G;23:13:46.55;-01:43:48.3;Psc;0.81;0.25;176;15.50;;12.42;11.64;11.45;24.08;S0-a;;;;;;;;2MASX J23134653-0143480,MCG +00-59-010,PGC 070737;;; -NGC7525;GPair;23:13:40.36;+14:01:22.7;Peg;0.90;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC7525 NED01;G;23:13:40.27;+14:01:27.8;Peg;0.12;0.10;23;17.48;;;;;22.01;;;;;;;;;SDSS J231340.27+140127.8,SDSS J231340.28+140127.8;;;B-Mag taken from LEDA -NGC7525 NED02;G;23:13:40.50;+14:01:15.6;Peg;0.79;0.69;16;15.20;;12.53;11.77;11.40;23.23;;;;;;;;;2MASX J23134051+1401151,IRAS 23111+1344,PGC 070731,SDSS J231340.49+140115.5;;; -NGC7526;Other;23:14:02.33;-09:13:17.9;Aqr;;;;;;;;;;;;;;;;;;;;Three Galactic stars in a line.; -NGC7527;G;23:13:41.77;+24:54:08.2;Peg;1.20;0.79;163;14.70;;10.86;10.15;9.79;23.97;E;;;;;;;;2MASX J23134176+2454086,MCG +04-54-031,PGC 070728,UGC 12428;;; -NGC7528;G;23:14:20.26;+10:13:53.2;Peg;0.65;0.48;0;;;12.38;11.69;11.11;23.77;;;;;;;;;2MASX J23142026+1013531,PGC 070770;;; -NGC7529;G;23:14:03.19;+08:59:33.0;Peg;0.80;0.73;65;14.60;;12.50;11.91;11.39;22.85;Sbc;;;;;;;;2MASX J23140320+0859331,MCG +01-59-014,PGC 070755,UGC 12431;;; -NGC7530;G;23:14:11.83;-02:46:45.6;Psc;0.95;0.38;115;15.00;;12.79;11.92;11.88;23.67;S0-a;;;;;;;;2MASX J23141186-0246447,MCG -01-59-004,PGC 070759,SDSS J231411.83-024644.9;;; -NGC7531;G;23:14:48.50;-43:35:59.8;Gru;4.11;1.72;17;11.99;11.26;9.35;8.70;8.45;23.09;SABb;;;;;;;;2MASX J23144850-4335597,ESO 291-010,ESO-LV 291-0100,IRAS 23120-4352,MCG -07-47-025,PGC 070800;;Extended HIPASS source; -NGC7532;G;23:14:22.23;-02:43:41.5;Psc;1.32;0.42;161;14.50;;12.06;11.39;11.09;24.08;S0-a;;;;;;;;2MASX J23142221-0243417,IRAS 23117-0300,MCG -01-59-005,PGC 070779;;; -NGC7533;G;23:14:22.08;-02:02:01.4;Psc;0.66;0.22;126;15.52;;;;;23.50;S0-a;;;;;;;;2MASX J23142205-0202017,PGC 070778;;; -NGC7534;G;23:14:26.68;-02:41:53.7;Psc;0.99;0.52;6;14.50;;12.94;12.59;11.87;22.54;IB;;;;;;;;2MASX J23142668-0241537,MCG -01-59-006,PGC 070781;;; -NGC7535;G;23:14:12.77;+13:34:54.8;Peg;1.46;1.44;40;14.24;13.66;12.02;11.41;11.31;23.83;Scd;;;;;;;;MCG +02-59-010,PGC 070761,UGC 12438;;; -NGC7536;G;23:14:13.18;+13:25:35.0;Peg;1.59;0.70;56;14.07;13.43;11.39;10.63;10.35;23.20;SBbc;;;;;;;;2MASX J23141313+1325350,IRAS 23117+1309,MCG +02-59-011,PGC 070765,SDSS J231413.18+132534.9,SDSS J231413.18+132535.0,SDSS J231413.19+132534.9,UGC 12437;;; -NGC7537;G;23:14:34.50;+04:29:54.1;Psc;1.84;0.48;74;13.80;;11.15;10.57;10.21;22.92;Sbc;;;;;;;;2MASX J23143449+0429540,MCG +01-59-016,PGC 070786,SDSS J231434.51+042954.4,UGC 12442;;; -NGC7538;Cl+N;23:13:38.63;+61:30:44.6;Cep;8.00;7.00;;;;;;;;;;;;;;;;LBN 542,MWSC 3707;;; -NGC7539;G;23:14:29.44;+23:41:05.4;Peg;1.16;0.95;151;13.94;12.95;10.56;9.86;9.57;22.90;S0;;;;;;;;2MASX J23142943+2341053,MCG +04-54-035,PGC 070783,UGC 12443;;; -NGC7540;G;23:14:36.07;+15:57:01.1;Peg;0.66;0.48;141;15.70;;11.87;11.22;10.97;23.39;S0-a;;;;;;;;2MASX J23143608+1557010,PGC 070788;;; -NGC7541;G;23:14:43.89;+04:32:03.7;Psc;3.03;1.00;102;12.70;;9.44;8.76;8.35;22.75;SBc;;;;;7581;;;2MASX J23144385+0432020,IRAS 23121+0415,MCG +01-59-017,PGC 070795,SDSS J231443.88+043202.6,UGC 12447;;Identification as NGC 7581 is doubtful.; -NGC7542;G;23:14:41.63;+10:38:35.7;Peg;0.95;0.65;112;15.70;;12.01;11.20;10.89;24.17;S0;;;;;;;;2MASX J23144163+1038361,PGC 070796;;; -NGC7543;G;23:14:34.58;+28:19:38.0;Peg;1.39;0.95;145;14.10;;10.99;10.20;9.95;23.43;Sb;;;;;;;;2MASX J23143451+2819373,IRAS 23121+2803,MCG +05-54-052,PGC 070785,UGC 12450;;; -NGC7544;G;23:14:56.98;-02:11:57.6;Psc;0.75;0.27;76;15.62;;12.44;11.70;11.68;24.00;S0;;;;;;;;2MASX J23145696-0211570,PGC 070811;;; -NGC7545;G;23:15:32.10;-38:32:08.1;Gru;1.28;0.78;84;13.84;;11.47;10.86;10.78;22.74;Sb;;;;;;;;2MASX J23153209-3832082,ESO 347-004,ESO-LV 347-0040,IRAS 23127-3848,MCG -07-47-026,PGC 070840;;; -NGC7546;G;23:15:05.64;-02:19:29.1;Psc;0.66;0.53;12;14.50;;12.24;11.62;11.44;23.50;SABb;;;;;;;;2MASX J23150565-0219292,MCG -01-59-007,PGC 070820;;; -NGC7547;G;23:15:03.40;+18:58:24.4;Peg;1.06;0.44;104;14.90;;10.94;10.22;9.97;23.21;Sa;;;;;;;;2MASX J23150347+1858245,MCG +03-59-013,PGC 070819,UGC 12453;;; -NGC7548;G;23:15:11.11;+25:16:55.0;Peg;1.06;0.88;22;14.50;;11.01;10.22;9.99;23.32;S0;;;;;;;;2MASX J23151111+2516550,IRAS 23127+2459,MCG +04-54-036,PGC 070826,UGC 12455;;; -NGC7549;G;23:15:17.23;+19:02:30.1;Peg;1.85;0.75;33;14.10;;11.31;10.58;10.29;23.40;Sc;;;;;;;;2MASX J23151728+1902299,IRAS 23127+1846,MCG +03-59-014,PGC 070832,SDSS J231517.26+190230.4,UGC 12457;;Identified as NGC 7594 in Hickson et al.(1989:Ap.J.Suppl. 70,687).; -NGC7550;G;23:15:16.01;+18:57:42.5;Peg;1.45;1.41;150;13.90;;9.93;9.20;8.91;22.73;E-S0;;;;;;;;2MASX J23151609+1857409,MCG +03-59-015,PGC 070830,UGC 12456;;; -NGC7551;G;23:15:22.03;+15:56:27.6;Peg;0.62;0.47;155;15.70;;11.87;11.22;10.97;;;;;;;;;;PGC 070791;;Galactic star superposed.;Diameters and position angle taken from Simbad. -NGC7552;G;23:16:10.76;-42:35:05.1;Gru;3.88;3.58;95;11.22;10.57;8.49;7.84;7.54;22.82;Sab;;;;;;5294;;2MASX J23161076-4235053,ESO 291-012,ESO-LV 291-0120,IRAS 23134-4251,MCG -07-47-028,PGC 070884;;Confused HIPASS source; -NGC7553;G;23:15:33.09;+19:02:53.4;Peg;0.69;0.52;150;15.85;;11.99;11.26;11.03;23.71;E;;;;;;;;2MASX J23153308+1902529,PGC 070842;;NGC identification is not certain.; -NGC7554;G;23:15:41.34;-02:22:43.0;Psc;0.98;0.73;159;16.50;;;;;24.68;E;;;;;;;;PGC 070850;;; -NGC7555;Other;23:15:30.85;+12:34:22.3;Peg;;;;;;;;;;;;;;;;;;;;Nothing at this position. N7555 may be N7515, N7536, N7559, N7563, or N7570.; -NGC7556;G;23:15:44.47;-02:22:53.4;Psc;2.15;1.34;104;14.00;;10.22;9.52;9.25;26.04;E-S0;;;;;;;;2MASX J23154447-0222535,MCG -01-59-009,PGC 070855;;; -NGC7556A;G;23:15:43.73;-02:23:08.0;Psc;;;;;;;;;;;;;;;;;;2MASS J23154371-0223089,MCG -01-59-009 NOTES02;;; -NGC7557;G;23:15:39.77;+06:42:30.0;Psc;0.68;0.62;163;15.00;;11.91;11.28;11.03;23.10;S0;;;;;;;;2MASX J23153974+0642301,MCG +01-59-021,PGC 070854;;; -NGC7558;G;23:15:38.23;+18:55:10.9;Peg;0.89;0.71;65;16.02;;12.04;11.35;11.20;24.35;S0-a;;;;;;;;2MASX J23153820+1855111,MCG +03-59-016,PGC 070844;;; -NGC7559;GPair;23:15:46.30;+13:17:38.0;Peg;1.50;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC7559A;G;23:15:45.99;+13:17:49.0;Peg;0.60;0.43;38;14.00;;10.88;10.17;9.95;24.19;S0-a;;;;;;;;MCG +02-59-014,PGC 070852,SDSS J231545.99+131749.0,UGC 12463;;; -NGC7559B;G;23:15:46.56;+13:17:25.0;Peg;1.29;1.17;66;14.70;;10.88;10.17;9.95;23.50;E-S0;;;;;;;;2MASX J23154653+1317253,MCG +02-59-013,PGC 070864,SDSS J231546.55+131725.0,SDSS J231546.56+131725.0,UGC 12463 NOTES01;;; -NGC7560;**;23:15:53.76;+04:29:45.1;Psc;;;;;;;;;;;;;;;;;;;;; -NGC7561;*;23:15:57.42;+04:31:21.8;Psc;;;;;;;;;;;;;;;;;;;;; -NGC7562;G;23:15:57.50;+06:41:15.1;Psc;2.18;1.59;84;13.00;;9.27;8.59;8.32;23.16;E;;;;;;;;2MASX J23155750+0641149,MCG +01-59-024,PGC 070874,UGC 12464;;; -NGC7562A;G;23:16:01.46;+06:39:08.2;Psc;1.32;0.32;179;16.00;;;;;23.65;Sd;;;;;;;;MCG +01-59-025,PGC 070880,PGC 070881,UGC 12467;;; -NGC7563;G;23:15:55.93;+13:11:46.0;Peg;1.53;0.92;143;13.87;12.81;10.44;9.71;9.45;23.31;Sa;;;;;;;;2MASX J23155594+1311466,MCG +02-59-015,PGC 070872,SDSS J231555.92+131146.0,SDSS J231555.93+131146.0,UGC 12465;;; -NGC7564;*;23:16:01.19;+07:20:53.0;Psc;;;;;;;;;;;;;;;;;;;;; -NGC7565;Other;23:16:19.81;-00:03:31.0;Psc;;;;;;;;;;;;;;;;;;;;Nothing at this position on the POSS.; -NGC7566;G;23:16:37.43;-02:19:50.0;Psc;1.58;0.65;99;14.50;;11.16;10.53;10.20;23.58;SBa;;;;;;;;2MASX J23163742-0219500,IRAS 23140-0236,MCG -01-59-010,PGC 070901;;; -NGC7567;G;23:16:10.28;+15:51:00.1;Peg;0.91;0.26;73;15.40;;13.41;12.72;12.84;23.17;Sd;;;;;;;;2MASX J23161029+1550596,IRAS 23136+1534,MCG +03-59-019,PGC 070885,UGC 12468;;; -NGC7568;G;23:16:24.87;+24:29:49.3;Peg;0.90;0.60;123;14.50;;12.24;11.52;11.26;22.83;SBb;;;;;7574;;;2MASX J23162486+2429493,PGC 070892,UGC 12469;;Identification as NGC 7574 is doubtful.; -NGC7569;G;23:16:44.55;+08:54:19.6;Peg;0.96;0.62;92;14.80;;11.23;10.49;10.20;23.11;S0;;;;;;;;2MASX J23164448+0854199,IRAS 23142+0838,MCG +01-59-026,PGC 070914,UGC 12472;;+2 degree error in NGC position.; -NGC7570;G;23:16:44.67;+13:28:58.8;Peg;1.58;0.80;29;13.89;13.18;10.86;10.33;10.13;23.37;Sa;;;;;;;;2MASX J23164464+1328583,IRAS 23142+1312,MCG +02-59-018,PGC 070912,SDSS J231644.67+132858.8,UGC 12473;;; -NGC7571;G;23:18:30.26;+18:41:19.5;Peg;1.20;0.91;133;15.30;;11.28;10.55;10.28;24.06;S0;;;;;7597;;;2MASX J23183020+1841208,MCG +03-59-032,PGC 071006;;Identification as NGC 7571 is doubtful.; -NGC7572;G;23:16:50.37;+18:28:59.4;Peg;1.01;0.50;162;15.00;;11.68;10.91;10.58;23.80;S0-a;;;;;;;;2MASX J23165013+1829093,2MASX J23165036+1828594,MCG +03-59-023,PGC 070919;;; -NGC7573;G;23:16:26.35;-22:09:15.8;Aqr;1.24;0.90;33;14.24;;11.94;11.24;11.16;23.69;SBc;;;;;;;;2MASX J23162637-2209149,ESO 604-008,MCG -04-54-017,PGC 070893;;; -NGC7574;Dup;23:16:24.87;+24:29:49.3;Peg;;;;;;;;;;;;;;;7568;;;;;; -NGC7575;G;23:17:20.87;+05:39:38.8;Psc;0.77;0.40;107;15.00;;12.85;12.12;11.80;23.06;S0-a;;;;;;;;2MASX J23172087+0539389,MCG +01-59-028,PGC 070946;;NGC identification is not certain.; -NGC7576;G;23:17:22.74;-04:43:40.3;Aqr;1.00;0.69;160;14.00;;10.57;9.92;9.64;22.52;S0-a;;;;;;;;2MASX J23172274-0443401,IRAS 23148-0500,MCG -01-59-012,PGC 070948;;; -NGC7577;G;23:17:17.10;+07:21:55.5;Psc;0.38;0.27;65;;;12.87;12.46;12.08;;;;;;;;;;2MASX J23171708+0721556,PGC 070947;;Galactic star superposed.;Diameters and position angle taken from Simbad. -NGC7578;GPair;23:17:12.70;+18:42:16.0;Peg;2.00;;;;;;;;;;;;;;;;;;;;Diameter of the group inferred by the author. -NGC7578A;G;23:17:11.94;+18:42:04.7;Peg;0.69;0.59;166;15.30;;;;;22.75;S0;;;;;;;;MCG +03-59-024,PGC 070933,UGC 12477;;Incorrectly identified as UGC 12478 in 1989ApJS...70..687H.; -NGC7578B;G;23:17:13.56;+18:42:29.7;Peg;1.74;1.20;7;15.00;;10.53;9.65;9.60;24.77;E;;;;;;;;2MASX J23171357+1842295,MCG +03-59-025,PGC 070934,UGC 12478;;Incorrectly identified as UGC 12477 in 1989ApJS...70..687H.; -NGC7579;G;23:17:38.85;+09:25:59.9;Peg;0.45;0.33;49;15.40;;13.97;13.39;13.02;24.05;;;;;;;;;2MASX J23173883+0925596,MCG +01-59-031,PGC 070964;;; -NGC7580;G;23:17:36.40;+14:00:04.3;Peg;0.79;0.65;41;14.80;;11.86;11.25;10.92;22.33;Sb;;;;;;;;2MASX J23173637+1400034,IRAS 23150+1343,MCG +02-59-019,PGC 070962,SDSS J231736.39+140004.3,SDSS J231736.40+140004.3,UGC 12481;;; -NGC7581;Dup;23:14:43.89;+04:32:03.7;Psc;;;;;;;;;;;;;;;7541;;;;;; -NGC7582;G;23:18:23.50;-42:22:14.0;Gru;6.95;3.18;156;10.92;10.62;8.35;7.68;7.32;23.83;SBab;;;;;;;;2MASX J23182362-4222140,ESO 291-016,ESO-LV 291-0160,IRAS 23156-4238,MCG -07-47-029,PGC 071001;;; -NGC7583;G;23:17:52.77;+07:22:46.0;Psc;0.91;0.91;75;14.80;;10.97;10.23;9.94;23.74;S0-a;;;;;7605;;;2MASX J23175277+0722458,MCG +01-59-034,PGC 070975;;; -NGC7584;G;23:17:53.00;+09:26:00.0;Peg;0.85;0.77;18;15.30;;;;;23.74;;;;;;;;;MCG +01-59-035,PGC 070977;;; -NGC7585;G;23:18:01.34;-04:39:01.1;Aqr;2.55;1.92;95;12.00;18.70;;;;23.19;S0-a;;;;;;;;2MASX J23180134-0439010,MCG -01-59-015,PGC 070986;;; -NGC7586;G;23:17:55.60;+08:35:02.7;Peg;0.63;0.54;146;;;12.36;11.80;11.55;24.39;;;;;;;;;2MASX J23175556+0835028,PGC 1349697;;; -NGC7587;G;23:17:59.13;+09:40:48.7;Peg;1.12;0.27;124;13.35;12.06;11.14;10.43;10.11;23.12;SBab;;;;;;;;2MASX J23175912+0940488,MCG +01-59-037,PGC 070984,UGC 12484;;; -NGC7588;G;23:17:57.81;+18:45:07.8;Peg;0.46;0.21;101;15.70;;12.60;11.90;11.51;23.00;S0-a;;;;;;;;2MASX J23175783+1845075,MCG +03-59-031,PGC 070983;;; -NGC7589;G;23:18:15.67;+00:15:40.2;Psc;0.96;0.57;91;15.01;17.01;11.96;11.20;11.08;23.58;SABa;;;;;;;;2MASX J23181570+0015403,MCG +00-59-019,PGC 070995,SDSS J231815.66+001540.1,SDSS J231815.66+001540.2,SDSS J231815.67+001540.2;;; -NGC7590;G;23:18:54.81;-42:14:20.6;Gru;3.03;1.23;34;12.12;13.76;9.31;8.69;8.41;22.53;Sbc;;;;;;;;2MASX J23185483-4214206,ESO 347-033,ESO-LV 347-0330,IRAS 23161-4230,MCG -07-47-030,PGC 071031;;Confused and extended HIPASS source; -NGC7591;G;23:18:16.28;+06:35:08.9;Psc;1.61;0.72;147;13.80;;10.65;9.94;9.60;23.05;SBbc;;;;;;;;2MASX J23181627+0635087,IRAS 23157+0618,MCG +01-59-038,PGC 070996,UGC 12486;;; -NGC7592;GTrpl;23:18:22.20;-04:25:01.0;Aqr;1.20;;;;;;;;;;;;;;;;;MCG -01-59-017;;;Diameter of the group inferred by the author. -NGC7592A;G;23:18:21.80;-04:24:56.7;Aqr;0.56;0.24;25;;15.00;;;;;;;;;;7592W;;;MCG -01-59-017 NED01,PGC 3325384;;;Diameters and position angle taken from Simbad. -NGC7592B;G;23:18:22.59;-04:24:58.1;Aqr;0.87;0.35;90;14.16;13.56;11.37;10.71;10.75;;Sb;;;;;7592E;;;2MASX J23182261-0424580,MCG -01-59-017 NED03,PGC 3325385;;;Diameters and position angle taken from Simbad. -NGC7592C;G;23:18:22.13;-04:25:08.0;Aqr;;;;;;;;;;;;;;;7592S;;;MCG -01-59-017 NED02,PGC 3325386;;;Diameters and position angle taken from Simbad. -NGC7593;G;23:17:56.99;+11:20:57.0;Peg;1.04;0.60;103;14.60;;11.81;11.23;11.02;22.57;Sb;;;;;;;;2MASX J23175698+1120568,IRAS 23154+1104,MCG +02-59-020,PGC 070981,UGC 12483;;; -NGC7594;G;23:18:13.92;+10:17:53.9;Peg;1.29;0.72;23;15.30;;11.60;10.89;10.61;23.48;Sb;;;;;;1478;;2MASX J23181391+1017537,MCG +02-59-023,PGC 070991,UGC 12485;;; -NGC7595;G;23:18:30.23;+09:55:56.7;Peg;0.70;0.60;125;;;11.88;11.30;10.81;;E;;;;;;;;2MASX J23183024+0955568,PGC 071004;;;Diameters and position angle taken from Simbad. -NGC7596;G;23:17:12.00;-06:54:43.2;Aqr;0.93;0.45;7;15.17;;11.62;10.91;10.65;23.67;S0;;;;;;1477;;2MASX J23171201-0654434,IRAS 23145-0711,MCG -01-59-011,PGC 070932;;; -NGC7597;Dup;23:18:30.26;+18:41:19.5;Peg;;;;;;;;;;;;;;;7571;;;;;; -NGC7598;G;23:18:33.27;+18:44:57.7;Peg;0.30;0.30;90;15.60;;12.22;11.50;10.93;22.02;E;;;;;;;;2MASX J23183322+1844588,MCG +03-59-033,PGC 071011;;; -NGC7599;G;23:19:21.14;-42:15:24.6;Gru;4.81;1.58;55;11.87;11.41;9.36;8.72;8.39;23.29;SBc;;;;;;5308;;2MASX J23192114-4215246,ESO 347-034,ESO-LV 347-0340,IRAS 23166-4231,MCG -07-47-033,PGC 071066;;Confused HIPASS source; -NGC7600;G;23:18:53.86;-07:34:49.6;Aqr;2.09;0.99;62;13.00;;9.82;9.11;8.91;23.20;E-S0;;;;;;;;2MASX J23185385-0734495,MCG -01-59-019,PGC 071029;;The APM position is 8 arcsec northeast of the nucleus.; -NGC7601;G;23:18:47.05;+09:14:01.0;Peg;1.01;0.75;91;14.70;;12.23;11.21;11.08;23.16;SABb;;;;;;;;2MASX J23184710+0914010,IRAS 23162+0857,MCG +01-59-039,PGC 071022,UGC 12487;;; -NGC7602;G;23:18:43.53;+18:41:54.1;Peg;0.62;0.49;142;15.50;;11.92;11.17;10.85;23.17;S0-a;;;;;;;;2MASX J23184350+1841538,MCG +03-59-034,PGC 071019;;; -NGC7603;G;23:18:56.62;+00:14:38.2;Psc;1.20;0.63;163;14.73;14.01;10.61;9.85;9.33;22.77;Sb;;;;;;;;2MASX J23185663+0014376,IRAS 23163-0001,MCG +00-59-021,PGC 071035,SDSS J231856.65+001437.9,UGC 12493;;; -NGC7604;G;23:17:51.90;+07:25:47.6;Psc;0.42;0.26;102;15.20;;;;;22.09;;;;;;;;;2MASX J23175190+0725478,MCG +01-59-033,PGC 070974;;Incorrectly called NGC 7583 in CGCG.; -NGC7605;Dup;23:17:52.77;+07:22:46.0;Psc;;;;;;;;;;;;;;;7583;;;;;; -NGC7606;G;23:19:04.78;-08:29:06.3;Aqr;5.26;4.47;145;11.50;;8.62;7.69;7.64;23.81;Sb;;;;;;;;2MASX J23190480-0829065,IRAS 23164-0845,MCG -02-59-012,PGC 071047,SDSS J231904.77-082906.3,SDSS J231904.78-082906.3;;; -NGC7607;**;23:18:59.24;+11:20:30.2;Peg;;;;;;;;;;;;;;;;1480;;;;; -NGC7608;G;23:19:15.33;+08:21:00.5;Peg;1.43;0.39;19;15.20;;11.69;10.97;10.73;23.57;Sbc;;;;;;;;2MASX J23191533+0821005,MCG +01-59-044,PGC 071055,UGC 12500;;; -NGC7609;GPair;23:19:30.50;+09:30:19.0;Peg;1.10;;;;;;;;;;;;;;;;;MCG +01-59-047;;;Diameter of the group inferred by the author. -NGC7609 NED01;G;23:19:30.05;+09:30:29.6;Peg;1.17;0.87;88;15.23;14.29;11.51;10.94;10.55;24.10;E;;;;;;;;2MASX J23193006+0930295,MCG +01-59-047 NED01,PGC 071076;;; -NGC7609 NED02;G;23:19:31.09;+09:30:10.7;Peg;0.74;0.34;26;17.23;16.14;13.03;12.47;11.84;23.61;Sm;;;;;;;;2MASX J23193107+0930105,MCG +01-59-047 NED02,PGC 071077,SDSS J231931.14+093009.7;;; -NGC7610;G;23:19:41.37;+10:11:06.0;Peg;2.17;0.90;79;14.90;;11.95;11.27;11.03;23.22;SABc;;;;;7616;;;2MASX J23194136+1011059,IRAS 23171+0954,MCG +02-59-025,PGC 071087,UGC 12511;;Identification as NGC 7616 is very doubtful.; -NGC7611;G;23:19:36.60;+08:03:47.7;Psc;1.70;0.79;139;14.00;;10.27;9.62;9.32;23.35;S0-a;;;;;;;;2MASX J23193662+0803475,MCG +01-59-049,PGC 071083,UGC 12509;;; -NGC7612;G;23:19:44.20;+08:34:35.0;Peg;1.63;0.72;3;14.30;;10.43;9.75;9.48;23.52;S0;;;;;;;;2MASX J23194420+0834349,MCG +01-59-050,PGC 071089,UGC 12512;;; -NGC7613;Other;23:19:51.76;+00:11:55.9;Psc;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7614;Other;23:19:51.76;+00:11:55.9;Psc;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7615;G;23:19:54.44;+08:23:57.9;Peg;0.83;0.29;143;15.30;;12.39;11.60;11.49;22.77;Sb;;;;;;;;2MASX J23195444+0823579,MCG +01-59-051,PGC 071097;;; -NGC7616;Dup;23:19:41.37;+10:11:06.0;Peg;;;;;;;;;;;;;;;7610;;;;;; -NGC7617;G;23:20:08.97;+08:09:56.8;Peg;0.94;0.63;20;15.10;;11.47;10.69;10.39;23.47;S0;;;;;;;;2MASX J23200893+0809566,MCG +01-59-051a,PGC 071113,UGC 12523 NOTES01;;; -NGC7618;G;23:19:47.22;+42:51:09.5;And;1.23;0.99;5;14.30;;10.11;9.34;9.04;23.57;E;;;;;;;;2MASX J23194721+4251096,MCG +07-47-013,PGC 071090,UGC 12516;;; -NGC7619;G;23:20:14.53;+08:12:22.5;Peg;2.53;1.97;30;12.70;;8.99;8.36;8.03;22.99;E;;;;;;;;2MASX J23201452+0812226,MCG +01-59-052,PGC 071121,SDSS J232014.51+081222.4,UGC 12523;;; -NGC7620;G;23:20:05.68;+24:13:16.1;Peg;0.94;0.91;105;13.50;;11.32;10.68;10.32;22.23;Sc;;;;;;;;2MASX J23200566+2413160,IRAS 23176+2356,PGC 071106,UGC 12520;;; -NGC7621;G;23:20:24.62;+08:21:58.7;Peg;0.68;0.18;175;15.50;;12.68;12.01;12.00;23.48;;;;;;;;;2MASX J23202463+0821586,MCG +01-59-055,PGC 071129;;; -NGC7622;G;23:21:38.53;-62:07:03.9;Tuc;1.35;0.43;61;14.46;;11.37;10.68;10.51;23.80;E-S0;;;;;;;;2MASX J23213853-6207040,ESO 148-008,ESO-LV 148-0080,PGC 071187;;; -NGC7623;G;23:20:30.02;+08:23:44.9;Peg;1.34;0.95;180;13.90;;10.45;9.75;9.46;23.22;S0;;;;;;;;2MASX J23202996+0823446,MCG +01-59-056,PGC 071132,UGC 12526;;; -NGC7624;G;23:20:22.61;+27:18:56.5;Peg;1.30;0.88;31;13.70;;10.86;10.17;9.88;22.79;SABc;;;;;;;;2MASX J23202263+2718566,IRAS 23179+2702,MCG +04-55-004,PGC 071126,SDSS J232022.60+271856.0,UGC 12527;;; -NGC7625;G;23:20:30.13;+17:13:32.0;Peg;1.48;1.43;35;13.23;11.98;9.90;9.20;8.87;22.51;Sa;;;;;;;;2MASX J23203013+1713321,IRAS 23179+1657,MCG +03-59-038,PGC 071133,UGC 12529;;; -NGC7626;G;23:20:42.55;+08:13:01.1;Peg;2.50;2.10;21;12.80;;9.00;8.27;8.03;23.04;E;;;;;;;;2MASX J23204252+0813014,MCG +01-59-057,PGC 071140,UGC 12531;;One of two 6cm sources associated with [WB92] 2318+0756; -NGC7627;G;23:22:30.93;+11:53:33.2;Peg;1.47;0.46;138;15.20;;11.25;10.41;10.09;24.14;Sa;;;;;7641;;;2MASX J23223093+1153332,2MASX J23223215+1153235,MCG +02-59-029,PGC 071241,UGC 12556;;; -NGC7628;G;23:20:54.88;+25:53:54.8;Peg;1.36;1.09;123;13.80;;10.69;10.04;9.76;23.38;E;;;;;;;;2MASX J23205486+2553548,MCG +04-55-005,PGC 071153,UGC 12534;;; -NGC7629;G;23:21:19.37;+01:24:11.3;Psc;0.94;0.61;179;15.20;;11.59;10.85;10.57;23.60;S0;;;;;;;;2MASX J23211938+0124109,MCG +00-59-031,PGC 071175;;; -NGC7630;G;23:21:16.31;+11:23:50.4;Peg;0.89;0.33;163;15.20;;12.04;11.35;11.07;23.27;Sb;;;;;;;;2MASX J23211630+1123504,MCG +02-59-027,PGC 071176,UGC 12540;;; -NGC7631;G;23:21:26.67;+08:13:03.5;Peg;1.86;0.83;78;13.80;;10.82;10.23;9.92;23.42;Sb;;;;;;;;2MASX J23212667+0813034,MCG +01-59-060,PGC 071181,UGC 12539;;; -NGC7632;G;23:22:00.90;-42:28:49.8;Gru;2.56;1.29;96;13.14;;10.09;9.38;9.16;23.76;S0;;;;;;5313;;2MASX J23220089-4228496,ESO 291-021,ESO-LV 291-0210,IRAS 23192-4245,MCG -07-47-035,PGC 071213;;; -NGC7633;G;23:23:03.30;-67:39:13.4;Ind;2.20;1.34;85;13.43;;10.17;9.45;9.29;23.98;S0-a;;;;;;;;2MASX J23230326-6739135,ESO 077-015,ESO-LV 77-0150,PGC 071274;;; -NGC7634;G;23:21:41.76;+08:53:12.9;Peg;1.21;0.88;97;13.70;;10.59;9.92;9.61;22.75;S0;;;;;;;;2MASX J23214177+0853129,MCG +01-59-062,PGC 071192,SDSS J232141.75+085312.7,UGC 12542;;; -NGC7635;HII;23:20:45.60;+61:12:44.5;Cas;15.00;8.00;;11.00;;;;;;;;;;;;;;C 011,LBN 548;Bubble Nebula;;B-Mag taken from LEDA -NGC7636;G;23:22:32.96;-29:16:50.5;Scl;1.03;0.42;31;14.70;;11.59;10.87;10.67;23.61;S0;;;;;;;;2MASX J23223294-2916507,ESO 470-002,ESO-LV 470-0020,MCG -05-55-005,PGC 071245;;; -NGC7637;G;23:26:27.66;-81:54:41.7;Oct;2.08;1.83;5;13.24;;10.59;9.91;9.67;23.42;Sc;;;;;;;;2MASX J23262765-8154417,ESO 012-001,ESO-LV 12-0010,IRAS 23226-8211,PGC 071440;;; -NGC7638;GPair;23:22:33.12;+11:19:43.7;Peg;0.65;0.46;175;15.50;;;;;23.39;;;;;;;1483;;IRAS 23200+1103,MCG +02-59-030,PGC 071242;;; -NGC7639;G;23:22:48.23;+11:22:22.3;Peg;0.74;0.55;141;15.60;;11.93;10.92;10.47;24.05;E;;;;;;1485;;2MASX J23224821+1122225,PGC 071256;;; -NGC7640;G;23:22:06.58;+40:50:43.5;And;8.09;1.67;167;11.60;;9.48;8.83;8.60;23.61;Sc;;;;;;;;2MASX J23220658+4050435,IRAS 23197+4034,MCG +07-48-002,PGC 071220,UGC 12554;;; -NGC7641;Dup;23:22:30.93;+11:53:33.2;Peg;;;;;;;;;;;;;;;7627;;;;;; -NGC7642;G;23:22:53.40;+01:26:34.0;Psc;0.49;0.45;65;14.50;;12.80;12.18;11.95;22.04;Sa;;;;;;;;2MASX J23225340+0126338,MCG +00-59-035,PGC 071264,UGC 12560;;; -NGC7643;G;23:22:50.40;+11:59:19.8;Peg;1.47;0.81;44;14.80;;11.02;10.31;10.04;23.33;Sab;;;;;7644;;;2MASX J23225040+1159195,MCG +02-59-033,PGC 071261,UGC 12563;;"Identification as NGC 7644 is doubtful; N7644 may be NGC 7651."; -NGC7644;Dup;23:22:50.40;+11:59:19.8;Peg;;;;;;;;;;;;;;;7643;;;;;; -NGC7645;G;23:23:47.29;-29:23:16.9;Scl;1.58;1.08;1;13.80;;11.24;10.54;10.25;23.20;SBc;;;;;;;;2MASX J23234727-2923170,ESO 470-003,ESO-LV 470-0030,MCG -05-55-007,PGC 071314;;; -NGC7646;G;23:24:06.96;-11:51:38.5;Aqr;0.97;0.54;135;13.93;;11.28;10.64;10.36;22.19;SBc;;;;;;5318;;2MASX J23240695-1151386,IRAS 23215-1208,MCG -02-59-015,PGC 071338;;Identification as NGC 7646 is not certain.; -NGC7647;G;23:23:57.43;+16:46:38.2;Peg;1.81;0.91;176;14.61;14.45;10.97;10.25;10.00;24.10;E;;;;;;;;2MASX J23235741+1646379,MCG +03-59-055,PGC 071325,PGC 071335,SDSS J232357.43+164638.0,UGC 12576;;; -NGC7648;G;23:23:54.02;+09:40:02.9;Peg;1.56;0.98;84;13.50;;10.72;10.01;9.70;23.44;S0;;;;;;1486;;2MASX J23235403+0940028,IRAS 23213+0923,MCG +01-59-072,PGC 071321,UGC 12575;;; -NGC7649;G;23:24:20.09;+14:38:49.7;Peg;1.63;1.03;76;15.65;;11.06;10.33;10.02;25.25;E;;;;;;1487;;2MASX J23242006+1438492,MCG +02-59-035,PGC 071343,SDSS J232420.08+143849.6,UGC 12579;;; -NGC7650;G;23:25:21.45;-57:47:28.9;Tuc;1.44;0.58;149;13.44;;11.32;10.81;10.59;21.93;SBc;;;;;;;;2MASX J23252146-5747287,ESO 148-010,ESO-LV 148-0100,IRAS 23225-5803,PGC 071394,TYC 8838-275-1;;; -NGC7651;GPair;23:24:25.80;+13:58:12.0;Peg;1.10;;;;;;;;;;;;;;;;;MCG +02-59-036;;;Diameter of the group inferred by the author. -NGC7651 NED01;G;23:24:25.97;+13:58:20.2;Peg;1.26;1.12;120;15.00;;11.25;10.49;10.18;23.87;E;;;;;;;;2MASX J23242598+1358202,MCG +02-59-036 NED01,PGC 071353,SDSS J232425.97+135820.1,SDSS J232425.97+135820.2;;; -NGC7651 NED02;G;23:24:25.67;+13:58:01.6;Peg;0.48;0.41;50;15.83;;;;;23.32;;;;;;;;;MCG +02-59-036 NED02,PGC 3085862,SDSS J232425.66+135801.5;;;B-Mag taken from LEDA -NGC7652;G;23:25:37.43;-57:53:14.6;Tuc;1.20;0.77;92;14.52;;11.49;10.80;10.61;23.45;Sa;;;;;;;;2MASX J23253759-5753148,ESO 148-011,ESO-LV 148-0110,PGC 071402;;; -NGC7653;G;23:24:49.36;+15:16:32.1;Peg;1.62;1.40;172;12.06;11.91;10.71;10.03;9.75;23.11;Sb;;;;;;;;2MASX J23244935+1516321,IRAS 23223+1500,MCG +02-59-038,PGC 071370,SDSS J232449.35+151632.1,TYC 1713-1515-1,UGC 12586;;; -NGC7654;OCl;23:24:48.40;+61:35:35.4;Cas;9.90;;;;6.90;;;;;;;;;052;;;;MWSC 3725;;;V-mag taken from LEDA -NGC7655;G;23:26:45.94;-68:01:39.1;Tuc;0.76;0.66;78;14.20;;11.00;10.31;10.18;22.36;S0;;;;;;;;2MASX J23264591-6801387,ESO 077-018,ESO-LV 77-0180,PGC 071452;;; -NGC7656;G;23:24:31.41;-19:03:32.6;Aqr;0.97;0.33;34;14.36;;11.46;10.69;10.67;23.20;S0;;;;;;;;2MASX J23243143-1903329,ESO 605-005,ESO-LV 605-0050,MCG -03-59-008,PGC 071357;;; -NGC7657;G;23:26:47.51;-57:48:20.7;Phe;1.46;0.37;110;14.74;;13.29;13.08;12.68;23.32;Sd;;;;;;;;2MASX J23264751-5748209,ESO 148-012,ESO-LV 148-0120,PGC 071456;;Confused HIPASS source; -NGC7658A;G;23:26:24.67;-39:12:57.5;Scl;0.67;0.36;136;15.27;;12.48;11.76;11.39;23.18;S0;;;;;;;;2MASX J23262466-3912576,ESO 347-015,ESO-LV 347-0150,MCG -07-48-003,PGC 071433;;; -NGC7658B;G;23:26:24.85;-39:13:35.8;Scl;1.00;0.38;128;14.95;14.52;11.90;11.24;10.97;23.58;S0-a;;;;;;;;2MASX J23262482-3913357,ESO 347-016,ESO-LV 347-0160,MCG -07-48-002,PGC 071432;;; -NGC7659;G;23:25:55.68;+14:12:35.4;Peg;0.99;0.37;109;15.10;;11.00;10.32;10.13;23.17;S0-a;;;;;;;;2MASX J23255568+1412352,HD ,MCG +02-59-040,PGC 071417,SDSS J232555.68+141235.3,UGC 12595;;; -NGC7660;G;23:25:48.66;+27:01:47.6;Peg;1.94;0.66;26;13.90;;10.43;9.69;9.45;23.98;E;;;;;;;;2MASX J23254867+2701478,MCG +04-55-012,PGC 071413,UGC 12594;;; -NGC7661;G;23:27:14.29;-65:16:13.5;Tuc;1.84;1.18;26;14.11;;;;;23.76;SBc;;;;;;;;ESO 110-011,ESO-LV 110-0110,PGC 071473;;; -NGC7662;PN;23:25:53.90;+42:32:05.8;And;0.28;;;9.20;8.30;;;;;;;13.60;13.20;;;;BD +41 4773,HD 220733;2MASX J23255415+4232111,C 022,IRAS 23234+4215,PN G106.5-17.6;Copeland's Blue Snowball;; -NGC7663;G;23:26:45.22;-04:58:00.0;Aqr;0.39;0.27;2;15.40;;;;;23.75;I;;;;;;;;MCG -01-59-023,PGC 071455,SDSS J232645.16-045758.2;;"Identification as NGC 7663 is doubtful; N7663 may be MCG -01-59-022."; -NGC7664;G;23:26:39.76;+25:04:48.5;Peg;1.52;0.95;88;13.30;;10.70;9.98;9.69;22.68;Sc;;;;;;;;2MASX J23263974+2504483,IRAS 23241+2448,MCG +04-55-013,PGC 071450,UGC 12598;;; -NGC7665;G;23:27:14.80;-09:23:13.2;Aqr;0.76;0.72;15;13.00;;11.97;11.33;11.15;22.32;SBm;;;;;;;;2MASX J23271483-0923129,IRAS 23246-0939,MCG -02-59-019,PGC 071474,SDSS J232714.80-092313.0,SDSS J232714.80-092313.1,SDSS J232714.80-092313.2,SDSS J232714.81-092313.2;;; -NGC7666;Other;23:27:24.51;-04:11:10.7;Aqr;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7667;Other;23:27:22.82;-00:11:10.7;Psc;;;;;;;;;;;;;;;;;;;;Nothing at NGC position. Often misidentified with UGC 12578.; -NGC7668;Other;23:27:21.82;-00:11:28.7;Psc;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7669;Other;23:27:21.82;-00:11:28.7;Psc;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7670;Other;23:27:21.82;-00:11:28.7;Psc;;;;;;;;;;;;;;;;;;;;Nothing at this position.; -NGC7671;G;23:27:19.34;+12:28:02.7;Peg;1.39;0.74;137;14.30;;10.30;9.53;9.30;23.22;S0;;;;;;;;2MASX J23271932+1228025,MCG +02-59-044,PGC 071478,UGC 12602;;; -NGC7672;G;23:27:31.44;+12:23:06.7;Peg;0.85;0.64;60;15.05;14.21;11.87;11.16;10.93;22.92;Sb;;;;;;;;2MASX J23273143+1223065,IRAS 23249+1206,MCG +02-59-045,PGC 071485;;; -NGC7673;G;23:27:41.02;+23:35:20.5;Peg;1.04;0.43;123;13.17;12.76;11.51;10.90;10.73;21.31;Sc;;;;;;;;2MASX J23274105+2335201,IRAS 23252+2318,MCG +04-55-014,PGC 071493,UGC 12607;;The position in 1993AJ....106..390W refers to a knot or superposed star.; -NGC7674;G;23:27:56.72;+08:46:44.5;Peg;1.12;1.01;165;13.92;13.23;10.92;10.22;9.79;22.88;SBbc;;;;;;;;2MASX J23275670+0846443,IRAS 23254+0830,MCG +01-59-080,PGC 071504,UGC 12608;;Called 'NGC 7675'in MCG.; -NGC7675;G;23:28:05.92;+08:46:06.9;Peg;0.75;0.48;43;14.80;;11.41;10.53;10.39;23.89;E-S0;;;;;;;;2MASX J23280594+0846073,MCG +01-59-083,PGC 071518,UGC 12608 NOTES02;;Called 'NGC 7674' in MCG.; -NGC7676;G;23:29:01.72;-59:43:00.0;Tuc;2.07;0.65;86;13.37;;10.32;9.65;9.40;23.78;E-S0;;;;;;;;2MASX J23290173-5943001,ESO 148-016,ESO-LV 148-0160,PGC 071564;;; -NGC7677;G;23:28:06.12;+23:31:53.0;Peg;1.13;0.61;29;13.93;13.19;11.32;10.62;10.26;22.46;SABb;;;;;;;;2MASX J23280624+2331531,IRAS 23256+2315,MCG +04-55-015,PGC 071517,UGC 12610;;; -NGC7678;G;23:28:27.90;+22:25:16.3;Peg;2.00;1.47;17;15.30;;9.94;9.56;9.13;22.49;Sc;;;;;;;;2MASX J23282789+2225162,IRAS 23259+2208,MCG +04-55-017,PGC 071534,SDSS J232827.87+222516.4,UGC 12614;;Position given in 1990PNAOJ...1..181T refers to the southern arm.; -NGC7679;G;23:28:46.70;+03:30:41.3;Psc;1.23;0.78;86;13.20;;10.98;10.33;10.02;22.53;S0-a;;;;;;;;2MASX J23284666+0330409,IRAS 23262+0314,MCG +00-59-046,PGC 071554,UGC 12618;;; -NGC7680;G;23:28:35.10;+32:24:56.6;Peg;1.67;1.67;45;13.50;;10.11;9.35;9.09;23.53;E-S0;;;;;;;;2MASX J23283508+3224565,MCG +05-55-023,PGC 071541,UGC 12616;;; -NGC7681;G;23:28:54.89;+17:18:34.7;Peg;1.44;0.67;63;14.20;;10.17;9.49;9.22;25.07;S0;;;;;;;;2MASX J23285489+1718351,MCG +03-59-063,PGC 071558,UGC 12620;;; -NGC7682;G;23:29:03.93;+03:32:00.0;Psc;1.15;1.07;160;14.30;;11.14;10.48;10.20;23.00;Sab;;;;;;;;2MASX J23290389+0332000,MCG +00-59-047,PGC 071566,UGC 12622;;; -NGC7683;G;23:29:03.82;+11:26:42.6;Peg;1.97;0.94;140;14.60;;10.15;9.47;9.20;23.78;S0;;;;;;;;2MASX J23290380+1126423,MCG +02-59-048,PGC 071565,UGC 12623;;; -NGC7684;G;23:30:32.04;+00:04:51.8;Psc;1.58;0.46;18;14.57;;10.72;10.04;9.82;23.86;S0-a;;;;;;;;2MASX J23303202+0004520,MCG +00-59-050,PGC 071625,SDSS J233032.03+000451.7,SDSS J233032.03+000451.8,SDSS J233032.04+000451.8,UGC 12637;;; -NGC7685;G;23:30:33.50;+03:54:05.7;Psc;1.67;1.21;174;15.00;;11.48;10.63;10.27;23.54;SABc;;;;;;;;2MASX J23303350+0354057,IRAS 23279+0337,MCG +01-59-087,PGC 071628,UGC 12638;;; -NGC7686;OCl;23:30:07.38;+49:08:02.8;And;3.60;;;6.79;5.60;;;;;;;;;;;;;MWSC 3734;;; -NGC7687;G;23:30:54.45;+03:32:47.8;Psc;1.09;0.94;88;14.90;;11.02;10.30;10.00;23.78;S0;;;;;;;;2MASX J23305444+0332473,MCG +00-59-051,PGC 071635;;; -NGC7688;G;23:31:05.50;+21:24:41.5;Peg;0.94;0.67;95;15.40;;11.57;10.86;10.58;23.89;S0;;;;;;;;2MASX J23310424+2124232,2MASX J23310547+2124412,PGC 071648;;; -NGC7689;G;23:33:16.73;-54:05:40.1;Phe;3.10;1.97;141;12.14;;10.20;9.41;9.06;22.95;SABc;;;;;;;;2MASX J23331672-5405401,ESO 192-007,ESO-LV 192-0070,IRAS 23305-5422,PGC 071729;;; -NGC7690;G;23:33:02.56;-51:41:54.1;Phe;2.16;0.85;130;12.93;12.01;10.34;9.67;9.49;22.70;Sb;;;;;;;;2MASX J23330254-5141541,ESO 240-006,ESO-LV 240-0060,IRAS 23303-5158,PGC 071716;;; -NGC7691;G;23:32:24.42;+15:50:52.2;Peg;1.67;1.35;161;14.20;;11.20;10.62;10.24;23.70;Sbc;;;;;;;;2MASX J23322441+1550520,IRAS 23299+1534,MCG +03-60-001,PGC 071699,SDSS J233224.41+155052.2,SDSS J233224.42+155052.2,UGC 12654;;; -NGC7692;G;23:32:46.76;-05:35:48.8;Aqr;0.50;0.42;77;15.00;;;;;22.32;I;;;;;;;;2MASX J23324675-0535489,IRAS 23302-0552,MCG -01-60-003,PGC 071712;;; -NGC7693;G;23:33:10.51;-01:17:30.7;Psc;0.82;0.51;171;14.70;;11.97;11.34;11.18;22.96;S0-a;;;;;;;;2MASX J23331048-0117312,MCG +00-60-003,PGC 071720;;; -NGC7694;G;23:33:15.77;-02:42:10.4;Psc;1.37;0.75;92;14.00;;11.69;11.17;10.79;22.87;I;;;;;;;;2MASX J23331576-0242102,IRAS 23306-0259,MCG -01-60-004,PGC 071728;;; -NGC7695;G;23:33:15.00;-02:43:12.7;Psc;0.56;0.33;68;16.50;;13.45;13.17;12.37;23.18;S?;;;;;;;;2MASX J23331502-0243122,PGC 071726;;; -NGC7696;G;23:33:50.11;+04:52:14.9;Psc;0.76;0.42;100;14.80;;11.84;11.14;10.88;22.74;S0-a;;;;;;;;2MASX J23335010+0452150,IRAS 23312+0435,MCG +01-60-004,PGC 071757;;; -NGC7697;G;23:34:52.98;-65:23:45.7;Tuc;1.68;0.37;86;14.33;;11.79;11.10;10.77;23.16;Sb;;;;;;5333;;2MASX J23345299-6523454,ESO 110-012,ESO-LV 110-0120,IRAS 23320-6540,PGC 071800;;The APMUKS position is east of the nucleus.; -NGC7698;G;23:34:01.58;+24:56:40.6;Peg;1.05;0.84;171;14.50;;11.19;10.46;10.11;23.50;S0;;;;;;;;2MASX J23340153+2456403,MCG +04-55-029,PGC 071762,UGC 12668;;; -NGC7699;G;23:34:27.03;-02:53:58.0;Psc;0.69;0.39;97;15.73;;12.86;12.27;11.93;23.34;Sa;;;;;;;;2MASX J23342701-0253582,PGC 071782;;; -NGC7700;G;23:34:30.29;-02:57:13.2;Psc;2.04;0.38;155;14.50;;11.39;10.68;10.35;24.97;S0-a;;;;;;;;2MASX J23343029-0257132,MCG -01-60-006,PGC 071777;;; -NGC7701;G;23:34:31.50;-02:51:15.4;Psc;1.24;0.83;8;14.00;;10.82;10.12;9.84;23.50;S0-a;;;;;;;;2MASX J23343148-0251152,MCG -01-60-007,PGC 071779;;; -NGC7702;G;23:35:28.88;-56:00:44.2;Phe;2.15;1.05;118;12.97;12.22;9.92;9.23;9.00;23.41;S0-a;;;;;;;;2MASX J23352887-5600439,ESO 192-009,ESO-LV 192-0090,PGC 071829;;; -NGC7703;G;23:34:46.87;+16:04:32.8;Peg;2.24;0.42;145;14.80;;10.98;10.27;9.98;24.97;S0;;;;;;;;2MASX J23344687+1604330,MCG +03-60-004,PGC 071797,UGC 12676;;; -NGC7704;G;23:35:01.03;+04:53:51.1;Psc;1.10;0.84;71;14.80;;11.07;10.35;10.03;23.90;E-S0;;;;;;;;2MASX J23350103+0453520,MCG +01-60-005,PGC 071810,SDSS J233501.05+045351.5,UGC 12684;;; -NGC7705;G;23:35:02.52;+04:48:13.7;Psc;0.58;0.42;105;15.40;;12.24;11.57;11.07;23.05;S0;;;;;;;;2MASX J23350250+0448130,PGC 071811;;; -NGC7706;G;23:35:10.45;+04:57:51.1;Psc;1.13;0.89;123;14.60;;11.29;10.43;10.29;23.55;S0;;;;;;;;2MASX J23351046+0457511,MCG +01-60-006,PGC 071817,UGC 12686;;; -NGC7707;G;23:34:51.40;+44:18:14.6;And;1.35;1.01;20;14.80;;10.68;10.01;9.77;23.94;E-S0;;;;;;;;2MASX J23345141+4418141,MCG +07-48-012,PGC 071798,UGC 12683;;; -NGC7708;OCl;23:35:01.46;+72:49:59.4;Cep;5.10;;;;;;;;;;;;;;;;;MWSC 3745;;; -NGC7709;G;23:35:27.47;-16:42:18.3;Aqr;2.22;0.37;69;13.90;;11.51;10.73;10.67;23.94;S0;;;;;;;;2MASX J23352748-1642183,IRAS 23328-1658,MCG -03-60-002,PGC 071828;;; -NGC7710;G;23:35:46.14;-02:52:51.3;Psc;1.18;0.52;134;15.00;;11.54;10.86;10.68;23.80;S0;;;;;;;;2MASX J23354614-0252513,MCG -01-60-010,PGC 071844;;; -NGC7711;G;23:35:39.37;+15:18:07.1;Peg;2.43;0.94;93;14.00;;10.00;8.89;8.91;23.70;S0;;;;;;;;2MASX J23353940+1518077,MCG +02-60-004,PGC 071836,SDSS J233539.37+151807.1,UGC 12691;;; -NGC7712;G;23:35:51.64;+23:37:07.5;Peg;0.90;0.71;109;13.70;;11.44;10.82;10.49;22.28;Sc;;;;;;;;2MASX J23355164+2337075,IRAS 23333+2320,MCG +04-55-030,PGC 071850,UGC 12694;;; -NGC7713;G;23:36:14.99;-37:56:17.1;Scl;4.91;2.13;170;11.63;;9.99;9.22;9.20;22.97;Scd;;;;;;;;2MASX J23361515-3756221,ESO 347-028,ESO-LV 347-0280,MCG -06-51-013,PGC 071866;;; -NGC7713A;G;23:37:08.29;-37:42:50.9;Scl;1.59;1.26;81;13.30;;11.22;10.94;10.55;22.73;Sc;;;;;;;;2MASX J23370828-3742509,ESO 347-030,ESO-LV 347-0300,MCG -06-51-014,PGC 071910,PGC 071912;;; -NGC7714;G;23:36:14.10;+02:09:18.6;Psc;2.18;1.58;8;14.91;14.36;10.77;10.15;9.76;23.18;Sb;;;;;;;;2MASX J23361409+0209180,IRAS 23336+0152,MCG +00-60-017,PGC 071868,UGC 12699;;; -NGC7715;G;23:36:22.14;+02:09:23.5;Psc;2.06;0.39;79;11.81;12.14;12.98;12.54;12.44;23.55;I;;;;;;;;2MASX J23362176+0209252,2MASX J23362210+0209240,MCG +00-60-018,PGC 071878,UGC 12700;;; -NGC7716;G;23:36:31.45;+00:17:50.2;Psc;1.83;1.27;34;12.90;;10.24;9.59;9.31;22.75;Sb;;;;;;;;2MASX J23363145+0017503,IRAS 23339+0001,MCG +00-60-019,PGC 071883,SDSS J233631.45+001750.1,SDSS J233631.49+001749.9,UGC 12702;;; -NGC7717;G;23:37:43.67;-15:07:06.6;Aqr;1.71;1.33;5;13.00;;10.67;10.09;9.79;23.72;S0-a;;;;;;;;2MASX J23374368-1507065,MCG -03-60-008,PGC 071941;;; -NGC7718;G;23:38:05.01;+25:43:11.0;Peg;1.03;0.75;153;15.20;;11.76;11.08;10.69;23.72;Sab;;;;;;;;2MASX J23380501+2543108,MCG +04-55-034,PGC 071959,UGC 12712;;; -NGC7719;G;23:38:02.57;-22:58:27.9;Aqr;0.90;0.51;51;15.12;;12.34;11.77;11.52;23.24;Sab;;;;;;;;2MASX J23380256-2258280,ESO 536-012,IRAS 23354-2315,PGC 071961;;; -NGC7720;GPair;23:38:29.39;+27:01:53.2;Peg;1.20;;;;;;;;;;;;;;;;;MCG +04-55-036,UGC 12716;;;Diameter of the group inferred by the author. -NGC7720 NED01;G;23:38:29.40;+27:01:53.3;Peg;1.51;1.26;25;13.90;13.30;10.29;9.57;9.28;23.21;E;;;;;;;;2MASX J23382938+2701526,MCG +04-55-036 NED01,PGC 071985,UGC 12716 NED01;;; -NGC7720A;G;23:38:29.54;+27:02:05.1;Peg;0.68;0.66;;13.90;;;;;;E;;;;;;;;MCG +04-55-036 NED02,PGC 085570,UGC 12716 NED02;;; -NGC7721;G;23:38:48.65;-06:31:04.3;Aqr;3.08;0.77;16;12.40;;9.53;8.88;8.68;22.33;Sc;;;;;;;;2MASX J23384864-0631043,IRAS 23362-0647,MCG -01-60-017,PGC 072001,SDSS J233848.66-063103.9;;HOLM 812B is a star.; -NGC7722;G;23:38:41.20;+15:57:16.7;Peg;2.11;1.60;148;13.70;;9.88;9.13;8.83;23.70;S0-a;;;;;;;;2MASX J23384119+1557174,IRAS 23361+1540,MCG +03-60-017,PGC 071993,SDSS J233841.20+155716.6,SDSS J233841.21+155716.7,UGC 12718;;; -NGC7723;G;23:38:57.08;-12:57:39.9;Aqr;3.29;2.32;55;11.00;;9.17;8.61;8.28;23.00;SBb;;;;;;;;2MASX J23385709-1257396,IRAS 23363-1314,MCG -02-60-005,PGC 072009;;; -NGC7724;G;23:39:07.16;-12:13:26.6;Aqr;1.47;1.00;45;13.00;;11.15;10.72;10.12;23.02;SBb;;;;;;;;2MASX J23390716-1213266,MCG -02-60-006,PGC 072015;;; -NGC7725;G;23:39:14.78;-04:32:21.8;Aqr;0.86;0.74;96;15.00;;11.67;11.02;10.70;23.16;S0;;;;;;;;2MASX J23391478-0432219,IRAS 23367-0448,MCG -01-60-018,PGC 072025;;; -NGC7726;G;23:39:11.91;+27:06:55.2;Peg;1.36;0.56;64;15.00;;12.03;11.23;10.96;23.83;Sb;;;;;;;;2MASX J23391190+2706550,MCG +04-55-040,PGC 072024,UGC 12721;;NGC identification is not certain.; -NGC7727;G;23:39:53.72;-12:17:34.0;Aqr;3.61;2.75;27;11.00;;8.55;7.97;7.69;22.97;SABa;;;;;;;;2MASX J23395386-1217348,MCG -02-60-008,PGC 072060;;; -NGC7728;G;23:40:00.84;+27:08:01.4;Peg;1.42;1.14;78;14.30;;10.51;9.77;9.45;23.69;E;;;;;;;;2MASX J23400080+2708014,MCG +04-55-041,PGC 072064,UGC 12727;;; -NGC7729;G;23:40:33.65;+29:11:17.4;Peg;1.69;0.57;7;14.60;;10.78;10.00;9.78;23.83;SABa;;;;;;;;2MASX J23403364+2911172,MCG +05-55-046,PGC 072083,UGC 12730;;; -NGC7730;G;23:40:45.95;-20:30:31.7;Aqr;0.76;0.29;135;14.82;14.42;12.35;11.61;11.26;22.53;SBbc;;;;;;;;2MASX J23404596-2030315,ESO 606-002,ESO-LV 606-0020,IRAS 23381-2047,MCG -04-55-022,PGC 072094;;Identification as NGC 7730 is not certain.; -NGC7731;G;23:41:29.07;+03:44:24.1;Psc;1.05;0.77;79;14.30;;11.55;10.77;10.64;22.97;SBa;;;;;;;;2MASX J23412911+0344238,MCG +00-60-034,PGC 072128,UGC 12737;;; -NGC7732;G;23:41:33.87;+03:43:29.8;Psc;1.49;0.47;92;14.50;;12.35;11.02;10.79;22.96;Scd;;;;;;;;2MASX J23413385+0343298,IRAS 23390+0326,MCG +00-60-035,PGC 072131,UGC 12738;;; -NGC7733;G;23:42:32.95;-65:57:23.4;Tuc;1.26;0.60;104;14.49;;11.95;11.26;10.93;23.01;SBb;;;;;;;;2MASX J23423294-6557234,ESO 078-001,ESO 110-022,ESO-LV 110-0220,PGC 072177;;; -NGC7734;G;23:42:42.93;-65:56:40.7;Tuc;1.40;1.00;144;13.95;;11.04;10.43;10.05;23.10;SBb;;;;;;;;2MASX J23424291-6556405,ESO 078-002,ESO 110-023,ESO-LV 110-0230,PGC 072183;;; -NGC7735;G;23:42:17.31;+26:13:54.3;Peg;1.39;1.09;86;14.56;;10.85;10.20;9.85;24.30;E;;;;;;;;2MASX J23421730+2613544,MCG +04-55-046,PGC 072165,UGC 12744;;The 2MASS position is 8 arcsec south of the nucleus.; -NGC7736;G;23:42:25.78;-19:27:08.3;Aqr;1.66;1.50;77;13.65;;10.64;10.02;9.64;23.71;S0;;;;;;;;2MASX J23422578-1927079,ESO 606-005,ESO-LV 606-0050,MCG -03-60-010,PGC 072173;;; -NGC7737;G;23:42:46.41;+27:03:10.6;Peg;1.09;0.46;146;14.80;;11.20;10.47;10.18;23.50;S0-a;;;;;;;;2MASX J23424642+2703107,MCG +04-55-048,PGC 072182,UGC 12745;;; -NGC7738;G;23:44:02.06;+00:30:59.9;Psc;1.19;0.59;55;14.40;;11.07;10.21;9.89;22.95;Sb;;;;;;;;2MASX J23440204+0031003,IRAS 23414+0014,MCG +00-60-038,PGC 072247,SDSS J234402.05+003059.8,SDSS J234402.06+003059.8,UGC 12757;;The NGC identification is very uncertain.; -NGC7739;G;23:44:30.08;+00:19:13.7;Psc;0.76;0.66;92;14.40;;11.07;10.21;9.89;23.33;E;;;;;;;;2MASX J23443008+0019135,PGC 072272,SDSS J234430.07+001913.6,SDSS J234430.08+001913.6,SDSS J234430.08+001913.7;;The NGC identification is very uncertain.; -NGC7740;G;23:43:32.28;+27:18:42.8;Peg;1.08;0.68;140;14.90;;11.49;10.77;10.43;23.79;S0;;;;;;;;2MASX J23433227+2718426,PGC 072216;;; -NGC7741;G;23:43:54.37;+26:04:32.2;Peg;3.63;2.38;158;11.84;11.31;10.34;9.98;9.63;23.00;SBc;;;;;;;;2MASX J23435437+2604320,IRAS 23413+2547,MCG +04-55-050,PGC 072237,UGC 12754;;The 2MASS position is 5 arcsec west of the bar's optical peak.; -NGC7742;G;23:44:15.73;+10:46:01.5;Peg;1.71;1.64;15;12.50;;9.60;8.92;8.63;22.16;Sb;;;;;;;;2MASX J23441571+1046015,IRAS 23417+1029,MCG +02-60-010,PGC 072260,SDSS J234415.75+104601.5,UGC 12760;;; -NGC7743;G;23:44:21.14;+09:56:02.7;Peg;2.61;2.18;86;14.19;13.28;9.33;8.66;8.42;23.22;S0-a;;;;;;;;2MASX J23442113+0956025,IRAS 23417+0939,MCG +02-60-011,PGC 072263,UGC 12759;;; -NGC7744;G;23:44:59.24;-42:54:39.3;Phe;2.48;2.11;109;12.50;11.35;9.23;8.56;8.32;23.52;E-S0;;;;;;5348;;2MASX J23445923-4254391,ESO 292-017,ESO-LV 292-0170,MCG -07-48-017,PGC 072300;;; -NGC7745;G;23:44:45.79;+25:54:32.3;Peg;0.68;0.68;170;;;12.19;11.42;11.04;24.55;;;;;;;;;2MASX J23444576+2554324,MCG +04-56-004,PGC 072299;;; -NGC7746;G;23:45:20.00;-01:41:05.6;Psc;1.16;0.84;164;14.50;;11.10;10.46;10.16;23.49;S0;;;;;;;;2MASX J23452001-0141056,MCG +00-60-043,PGC 072319,UGC 12768;;; -NGC7747;G;23:45:32.25;+27:21:39.4;Peg;1.41;0.54;38;14.50;;11.22;10.55;10.15;23.33;SBb;;;;;;;;2MASX J23453226+2721393,MCG +04-56-005,PGC 072328,UGC 12772;;; -NGC7748;*;23:44:56.67;+69:45:17.5;Cep;;;;7.18;7.15;7.00;7.11;7.07;;;;;;;;;;BD +68 1393,HD 222958,HIP 117146,TYC 4483-1248-1;;; -NGC7749;G;23:45:47.55;-29:31:04.1;Scl;1.75;1.17;33;13.85;;11.05;10.43;9.98;23.99;S0;;;;;;;;2MASX J23454755-2931041,ESO 471-009,ESO-LV 471-0090,MCG -05-56-003,PGC 072338;;; -NGC7750;G;23:46:37.84;+03:47:59.3;Psc;1.50;0.73;175;13.80;;10.97;10.37;10.06;22.51;SBc;;;;;;;;2MASX J23463785+0347591,IRAS 23440+0331,MCG +01-60-034,PGC 072367,UGC 12777;;; -NGC7751;G;23:46:58.34;+06:51:42.5;Psc;1.48;1.45;115;13.90;;10.68;10.00;9.66;23.60;E;;;;;;;;2MASX J23465833+0651424,IRAS 23444+0635,MCG +01-60-035,PGC 072381,UGC 12778;;; -NGC7752;G;23:46:58.56;+29:27:32.1;Peg;0.92;0.46;106;14.30;;12.10;11.51;11.19;22.99;S?;;;;;;;;2MASX J23465855+2927321,MCG +05-56-004,PGC 072382,UGC 12779;;; -NGC7753;G;23:47:04.83;+29:29:00.4;Peg;2.01;0.54;61;13.20;;9.67;8.95;8.61;22.64;SABb;;;;;;;;2MASX J23470483+2929001,MCG +05-56-005,PGC 072387,SDSS J234704.82+292900.4,UGC 12780;;; -NGC7754;G;23:49:11.21;-16:36:02.1;Aqr;0.65;0.32;132;15.00;;;;;;Sa;;;;;;;;2MASX J23491118-1636022,IRAS 23466-1652,MCG -03-60-021,PGC 072511;;; -NGC7755;G;23:47:51.76;-30:31:19.3;Scl;3.70;2.27;27;12.10;11.36;9.92;9.29;8.97;23.63;Sc;;;;;;;;2MASX J23475176-3031195,ESO 471-020,ESO-LV 471-0200,IRAS 23452-3048,MCG -05-56-014,PGC 072444,UGCA 443;;; -NGC7756;*;23:48:28.60;+04:07:30.6;Psc;;;;;;;;;;;;;;;;;;;;Identification as NGC 7756 is not certain.; -NGC7757;G;23:48:45.52;+04:10:16.1;Psc;1.83;1.34;108;13.90;;11.84;11.12;10.91;23.06;SABc;;;;;;;;2MASX J23484552+0410159,IRAS 23461+0353,MCG +01-60-037,PGC 072491,UGC 12788;;HOLM 817B is a double star.; -NGC7758;G;23:48:55.18;-22:01:27.1;Aqr;0.77;0.52;108;15.42;;12.11;11.38;11.16;23.61;E-S0;;;;;;;;2MASX J23485515-2201269,ESO 606-010,ESO-LV 606-0100,PGC 072497;;; -NGC7759;G;23:48:54.70;-16:32:28.2;Aqr;1.53;1.11;103;14.00;;10.70;9.80;9.60;23.61;S0;;;;;;;;2MASX J23485471-1632282,MCG -03-60-018,PGC 072496;;; -NGC7760;G;23:49:11.94;+30:58:59.3;Peg;1.14;1.05;0;14.80;;10.86;10.17;9.89;23.80;E;;;;;;;;2MASX J23491191+3058590,MCG +05-56-008,PGC 072512,UGC 12794;;; -NGC7761;G;23:51:28.89;-13:22:53.7;Aqr;1.23;1.08;68;11.70;;10.65;9.94;9.67;23.27;S0;;;;;;5361;;2MASX J23512890-1322535,IRAS 23488-1339,MCG -02-60-020,PGC 072641;;; -NGC7762;OCl;23:50:01.75;+68:02:16.7;Cep;6.50;;;;;;;;;;;;;;;;;MWSC 3784;;; -NGC7763;G;23:50:15.70;-16:35:24.0;Aqr;0.73;0.39;161;15.41;;11.85;11.22;11.00;23.26;E-S0;;;;;;;;2MASX J23501567-1635236,PGC 072565;;; -NGC7764;G;23:50:53.98;-40:43:41.6;Phe;1.95;1.45;146;12.97;12.30;11.08;10.56;10.31;22.56;SBm;;;;;;;;2MASX J23505397-4043414,ESO 293-004,ESO-LV 293-0040,MCG -07-48-027,PGC 072597;;; -NGC7764A;G;23:53:22.5;-40:48:37;Phe;0.74;0.46;77;15.35;13.19;11.98;11.30;10.86;23.04;Sc;;;;;;;;MCG -07-01-001,PGC 072762;;; -NGC7765;G;23:50:52.16;+27:09:58.6;Peg;0.69;0.54;113;15.70;;12.49;12.02;11.55;23.63;;;;;;;;;2MASX J23505214+2709587,MCG +04-56-015,PGC 072596;;; -NGC7766;G;23:50:55.91;+27:07:34.7;Peg;0.87;0.24;31;15.70;;12.78;12.12;11.77;24.70;;;;;;;;;2MASX J23505589+2707347,MCG +04-56-017,PGC 072611;;; -NGC7767;G;23:50:56.35;+27:05:13.7;Peg;1.10;0.25;141;14.20;;11.66;10.94;10.68;23.17;S0-a;;;;;;;;2MASX J23505634+2705137,MCG +04-56-016,PGC 072601,UGC 12805;;; -NGC7768;G;23:50:58.58;+27:08:50.6;Peg;1.48;0.95;57;14.00;14.23;10.32;9.62;9.34;22.98;E;;;;;;;;2MASX J23505859+2708507,MCG +04-56-018,PGC 072605,SDSS J235058.55+270850.4,UGC 12806;;; -NGC7769;G;23:51:03.97;+20:09:01.5;Peg;1.75;0.67;85;12.77;;9.90;9.21;8.93;21.79;Sb;;;;;7771W;;;2MASX J23510396+2009014,IRAS 23485+1952,MCG +03-60-030,PGC 072615,UGC 12808;;; -NGC7770;G;23:51:22.54;+20:05:47.5;Peg;0.97;0.85;105;14.50;;11.75;11.11;10.75;23.06;S0-a;;;;;7771S;;;2MASX J23512260+2005485,MCG +03-60-034,PGC 072635,UGC 12813;;"Incorrectly noted as a ""double system"" in CGCG."; -NGC7771;G;23:51:24.81;+20:06:42.3;Peg;2.51;1.24;68;13.08;12.25;9.47;8.72;8.35;23.34;Sa;;;;;7771N;;;2MASX J23512488+2006425,IRAS 23488+1949,MCG +03-60-035,PGC 072638,SDSS J235125.02+200641.9,UGC 12815;;; -NGC7772;Other;23:51:45.96;+16:14:53.3;Peg;13.20;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC7773;G;23:52:09.89;+31:16:35.8;Peg;1.10;0.99;50;14.50;;11.37;10.59;10.29;23.33;Sbc;;;;;;;;2MASX J23520987+3116356,IRAS 23496+3059,MCG +05-56-015,PGC 072681,UGC 12820;;; -NGC7774;GPair;23:52:11.20;+11:28:12.0;Peg;1.20;;;;;;;;;;;;;;;;;MCG +02-60-022,UGC 12819;;;Diameter of the group inferred by the author. -NGC7774 NED01;G;23:52:10.69;+11:28:13.1;Peg;1.32;1.20;105;14.60;;10.59;9.92;9.59;23.93;E;;;;;;;;2MASX J23521071+1128132,MCG +02-60-022 NED01,PGC 072679,UGC 12819 NED01;;; -NGC7774 NED02;G;23:52:11.69;+11:28:11.0;Peg;0.91;0.74;;14.60;;;;;;E-S0;;;;;;;;MCG +02-60-022 NED02,PGC 093142,UGC 12819 NED02;;; -NGC7775;G;23:52:24.45;+28:46:21.6;Peg;0.99;0.83;28;13.90;;11.80;11.02;10.77;22.64;SABc;;;;;;;;2MASX J23522445+2846214,IRAS 23498+2829,MCG +05-56-016,PGC 072696,UGC 12821;;Noted in MCG as possibly interacting.; -NGC7776;G;23:54:16.56;-13:35:11.2;Aqr;1.00;0.43;154;15.00;;11.47;10.71;10.42;23.21;Sa;;;;;;1514;;2MASX J23541656-1335110,MCG -02-60-022,PGC 072812;;; -NGC7777;G;23:53:12.50;+28:17:00.4;Peg;1.26;0.66;48;14.50;;10.67;9.97;9.70;23.68;S0;;;;;;;;2MASX J23531248+2817001,MCG +05-56-018,PGC 072744,UGC 12829;;; -NGC7778;G;23:53:19.67;+07:52:15.3;Psc;1.02;0.98;55;13.80;;10.60;9.87;9.63;22.65;E;;;;;;;;2MASX J23531967+0752152,MCG +01-60-043,PGC 072756,UGC 12827;;; -NGC7779;G;23:53:26.79;+07:52:32.4;Psc;1.49;1.07;5;13.60;;10.39;9.70;9.42;23.17;S0-a;;;;;;;;2MASX J23532680+0752322,MCG +01-60-045,PGC 072770,UGC 12831;;; -NGC7780;G;23:53:32.17;+08:07:05.3;Peg;0.99;0.54;0;14.80;;11.48;10.89;10.51;23.17;SABa;;;;;;;;2MASX J23533218+0807052,IRAS 23509+0750,MCG +01-60-046,PGC 072775,SDSS J235332.15+080705.0,UGC 12833;;; -NGC7781;G;23:53:45.98;+07:51:37.7;Psc;1.07;0.25;10;15.20;;11.67;11.01;10.71;23.59;S0-a;;;;;;;;2MASX J23534595+0751377,MCG +01-60-047,PGC 072785;;; -NGC7782;G;23:53:53.89;+07:58:14.0;Psc;2.43;1.41;175;13.20;;10.02;9.32;9.04;23.37;Sb;;;;;;;;2MASX J23535389+0758138,IRAS 23513+0741,MCG +01-60-048,PGC 072788,SDSS J235353.88+075814.1,UGC 12834;;; -NGC7783;GPair;23:54:11.06;+00:22:47.8;Psc;1.90;;;;;;;;;;;;;;;;;UGC 12837;;VV misprints dec as -00d24'.;Diameter of the group inferred by the author. -NGC7783 NED01;G;23:54:10.08;+00:22:58.3;Psc;1.55;0.72;109;14.14;;10.40;9.67;9.73;23.67;S0;;;;;;;;2MASX J23541007+0022587,MCG +00-60-058,PGC 072803,SDSS J235410.07+002258.2,SDSS J235410.07+002258.3,SDSS J235410.08+002258.2,SDSS J235410.08+002258.3,SDSS J235410.09+002258.3,UGC 12837 NED01;;Called 'NGC 7783a'in MCG. Component 'a)' in UGC notes.; -NGC7783 NED02;G;23:54:12.08;+00:22:37.3;Psc;0.83;0.51;153;15.16;;;;;23.33;E-S0;;;;;;;;MCG +00-60-059,PGC 072808,SDSS J235412.07+002237.3,UGC 12837 NED02;;Called 'NGC 7783b'in MCG. Component 'b)' in UGC notes.; -NGC7784;G;23:55:13.67;+21:45:43.8;Peg;0.73;0.58;114;15.50;;11.72;11.07;10.81;23.65;E;;;;;;;;2MASX J23551365+2145438,MCG +04-01-001,PGC 072862;;; -NGC7785;G;23:55:19.03;+05:54:57.0;Psc;1.95;1.09;142;13.00;;9.46;8.77;8.45;22.93;E;;;;;;;;2MASX J23551903+0554571,MCG +01-60-049,PGC 072867,UGC 12841;;; -NGC7786;G;23:55:21.54;+21:35:17.0;Peg;0.56;0.35;7;13.90;;11.59;11.00;10.68;21.49;E;;;;;;;;2MASX J23552154+2135168,IRAS 23528+2118,MCG +03-60-038,PGC 072870,UGC 12842;;; -NGC7787;G;23:56:07.82;+00:32:58.1;Psc;1.09;0.43;95;15.70;;11.95;11.33;11.13;23.99;S0-a;;;;;;;;2MASX J23560780+0032578,IRAS 23535+0016,MCG +00-01-005,PGC 072930,SDSS J235607.81+003258.1,SDSS J235607.82+003258.1,SDSS J235607.82+003258.2,UGC 12849;;; -NGC7788;OCl;23:56:45.58;+61:23:59.7;Cas;2.40;;;;9.40;;;;;;;;;;;;;MWSC 3777;;; -NGC7789;OCl;23:57:24.06;+56:42:29.8;Cas;14.40;;;7.68;6.70;;;;;;;;;;;;;MWSC 3779;;; -NGC7790;OCl;23:58:24.26;+61:12:29.9;Cas;3.60;;;9.18;8.50;;;;;;;;;;;;;MWSC 3781;;; -NGC7791;**;23:57:57.30;+10:45:56.6;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7792;G;23:58:03.57;+16:30:05.1;Peg;0.77;0.77;95;15.00;;11.46;10.74;10.50;23.03;S0-a;;;;;;;;2MASX J23580358+1630051,MCG +03-01-006,PGC 073066;;; -NGC7793;G;23:57:49.83;-32:35:27.7;Scl;10.42;6.05;89;9.74;9.28;7.56;7.02;6.86;23.05;Scd;;;;;;;;2MASX J23574982-3235277,ESO 349-012,ESO-LV 349-0120,IRAS 23552-3252,MCG -06-01-009,PGC 073049;;Extended HIPASS source; -NGC7794;G;23:58:34.12;+10:43:41.3;Peg;1.17;0.72;10;13.80;;11.03;10.29;10.03;22.51;Sc;;;;;;;;2MASX J23583407+1043417,IRAS 23560+1026,MCG +02-01-004,PGC 073103,SDSS J235834.10+104341.8,UGC 12872;;; -NGC7795;OCl;23:58:37.44;+60:02:05.9;Cas;2.22;;;;;;;;;;;;;;;;;MWSC 3782;;; -NGC7796;G;23:58:59.77;-55:27:29.9;Phe;2.73;2.38;178;12.36;11.30;9.22;8.55;8.27;23.49;E;;;;;;;;2MASX J23585980-5527301,ESO 149-007,ESO-LV 149-0070,PGC 073126;;The APM position is northwest of the nucleus.; -NGC7797;G;23:58:58.87;+03:38:04.7;Psc;0.90;0.84;35;14.80;;11.62;10.97;10.71;23.29;Sbc;;;;;;;;2MASX J23585887+0338045,MCG +00-01-011,PGC 073125,UGC 12877;;; -NGC7798;G;23:59:25.50;+20:44:59.5;Peg;1.45;1.33;100;12.97;12.37;10.35;9.66;9.37;22.42;SBc;;;;;;;;2MASX J23592550+2044595,IRAS 23568+2028,MCG +03-01-010,PGC 073163,UGC 12884;;; -NGC7799;*;23:59:31.55;+31:17:44.2;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7800;G;23:59:36.32;+14:48:20.1;Peg;1.74;0.72;45;13.40;;12.14;11.58;11.27;22.65;IB;;;;;;;;2MASX J23593630+1448200,IRAS 23570+1431,MCG +02-01-007,PGC 073177,UGC 12885;;; -NGC7801;OCl;00:00:21.44;+50:44:42.0;Cas;4.20;;;;;;;;;;;;;;;;;MWSC 0002;;; -NGC7802;G;00:01:00.42;+06:14:31.4;Psc;1.18;0.80;53;14.70;;10.97;10.23;9.96;23.77;S0;;;;;;;;2MASX J00010043+0614312,MCG +01-01-008,PGC 000081,UGC 12902;;; -NGC7803;G;00:01:19.97;+13:06:40.5;Peg;0.86;0.51;80;13.80;;10.88;10.18;9.84;22.35;S0-a;;;;;;;;2MASX J00011996+1306406,IRAS 23587+1249,MCG +02-01-011,PGC 000101,SDSS J000119.97+130640.6,UGC 12906;;; -NGC7804;**;00:01:18.80;+07:44:58.9;Psc;;;;;;;;;;;;;;;;;;;;; -NGC7805;G;00:01:26.77;+31:26:01.5;Peg;1.42;0.69;47;14.30;;11.16;10.40;10.13;23.65;S0;;;;;;;;2MASX J00012677+3126016,MCG +05-01-024,PGC 000109,UGC 12908;;; -NGC7806;G;00:01:30.05;+31:26:30.7;Peg;1.21;0.65;20;14.40;;11.30;10.63;10.35;22.99;SABb;;;;;;;;2MASX J00013005+3126306,MCG +05-01-025,PGC 000112,UGC 12911;;; -NGC7807;G;00:00:26.58;-18:50:30.8;Cet;0.73;0.60;35;15.60;;12.84;12.27;11.84;23.51;SBab;;;;;;;;2MASX J00002656-1850308,ESO 538-015,ESO-LV 538-0150,PGC 000033;;ESO RA of 23h57m5s incorrect. Corrected in ESO-LV.; -NGC7808;G;00:03:32.13;-10:44:40.8;Cet;1.08;1.00;60;14.33;13.48;11.29;10.65;10.32;23.41;S0;;;;;;;;2MASX J00033214-1044403,MCG -02-01-013,PGC 000243,SDSS J000332.12-104440.7,SDSS J000332.12-104440.8,SDSS J000332.13-104440.8;;; -NGC7809;G;00:02:09.45;+02:56:27.8;Psc;0.45;0.38;65;15.10;;12.76;12.02;11.51;21.96;I;;;;;;;;2MASX J00020944+0256279,IRAS 23596+0239,MCG +00-01-019,PGC 000158;;; -NGC7810;G;00:02:19.16;+12:58:17.9;Peg;0.96;0.64;78;14.30;;10.99;10.23;9.88;22.91;S0;;;;;;;;2MASX J00021916+1258176,IRAS 23597+1241,MCG +02-01-015,PGC 000163,UGC 12919;;; -NGC7811;G;00:02:26.47;+03:21:06.9;Psc;0.39;0.37;130;15.33;14.68;12.02;11.32;10.92;21.53;I;;;;;;;;2MASX J00022640+0321070,MCG +00-01-020,PGC 000168;;Position in 1996A&AS..120..201L is 6 arcsec northwest of optical center.; -NGC7812;G;00:02:54.47;-34:14:08.3;Scl;1.10;0.73;112;13.94;;11.72;11.02;10.75;22.65;SABb;;;;;;;;2MASX J00025446-3414084,ESO 349-021,ESO-LV 349-0210,IRAS 00003-3431,MCG -06-01-016,PGC 000195;;; -NGC7813;G;00:04:09.12;-11:59:02.0;Cet;0.81;0.26;158;14.50;;12.32;11.63;11.38;22.52;Sb;;;;;;5384;;2MASX J00040911-1159020,IRAS 00015-1215,MCG -02-01-016,PGC 000287;;; -NGC7814;G;00:03:14.89;+16:08:43.5;Peg;4.37;1.88;135;12.00;;8.09;7.36;7.08;23.03;Sab;;;;;;;;2MASX J00031494+1608428,C 043,MCG +03-01-020,PGC 000218,SDSS J000315.04+160844.7,SDSS J000315.04+160844.8,UGC 00008;;Multiple SDSS entries describe this object.; -NGC7815;*;00:03:24.83;+20:42:15.0;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7816;G;00:03:48.86;+07:28:43.1;Psc;1.64;1.53;105;14.00;;10.56;9.86;9.53;23.69;Sbc;;;;;;;;2MASX J00034885+0728429,IRAS 00012+0712,MCG +01-01-018,PGC 000263,UGC 00016;;; -NGC7817;G;00:03:58.91;+20:45:08.4;Peg;3.29;0.73;46;12.86;11.94;9.49;8.73;8.42;23.00;Sbc;;;;;;;;2MASX J00035889+2045084,IRAS 00014+2028,MCG +03-01-021,PGC 000279,UGC 00019;;; -NGC7818;G;00:04:08.85;+07:22:45.8;Psc;0.93;0.80;162;15.10;;12.12;11.50;11.08;23.56;Sc;;;;;;;;2MASX J00040883+0722458,MCG +01-01-019,PGC 000288,UGC 00021;;; -NGC7819;G;00:04:24.54;+31:28:19.4;Peg;1.44;0.79;97;14.30;;11.72;11.26;10.66;23.37;Sb;;;;;;;;2MASX J00042449+3128193,IRAS 00018+3111,MCG +05-01-029,PGC 000303,UGC 00026;;; -NGC7820;G;00:04:30.79;+05:12:01.0;Psc;1.54;0.60;167;13.90;;10.54;9.87;9.61;23.27;S0-a;;;;;;;;2MASX J00043079+0512009,MCG +01-01-022,PGC 000307,UGC 00028;;; -NGC7821;G;00:05:16.72;-16:28:36.9;Cet;1.14;0.38;116;14.00;;11.20;10.46;10.14;22.62;SABc;;;;;;;;2MASX J00051672-1628368,IRAS 00027-1645,MCG -03-01-019,PGC 000367;;; -NGC7822;HII;00:03:35.35;+67:09:41.9;Cep;20.00;4.00;;;;;;;;;;;;;;;;LBN 589;;NGC identification is not certain.; -NGC7823;G;00:04:45.59;-62:03:41.6;Tuc;1.13;0.70;30;13.42;;10.99;10.28;10.01;22.30;SBbc;;;;;;;;2MASX J00044559-6203414,ESO 111-012,ESO-LV 111-0120,IRAS 00022-6220,PGC 000328;;; -NGC7824;G;00:05:06.23;+06:55:12.4;Psc;1.59;1.04;151;14.50;;10.56;9.81;9.53;23.86;Sab;;;;;;;;2MASX J00050624+0655122,MCG +01-01-025,PGC 000354,UGC 00034;;; -NGC7825;G;00:05:06.60;+05:12:13.2;Psc;0.95;0.37;134;15.50;;11.98;11.28;10.97;23.76;Sa;;;;;;;;2MASX J00050662+0512125,PGC 1279700;;; -NGC7826;Other;00:05:19.32;-20:41:17.8;Cet;;;;;;;;;;;;;;;;;;;;Group of Galactic stars.; -NGC7827;G;00:05:27.66;+05:13:20.4;Psc;1.29;1.18;40;14.60;;10.95;10.33;9.97;23.84;S0;;;;;;;;2MASX J00052766+0513204,MCG +01-01-027,PGC 000378,UGC 00038;;; -NGC7828;G;00:06:27.07;-13:24:58.0;Cet;2.07;0.82;137;14.00;;11.55;10.88;10.58;23.89;Sd;;;;;;;;2MASX J00062708-1324580,IRAS 00038-1341,MCG -02-01-025 NED01,PGC 000483;;; -NGC7829;G;00:06:28.98;-13:25:14.2;Cet;2.07;0.82;110;15.07;;12.10;11.77;10.94;24.82;S0-a;;;;;;;;2MASX J00062900-1325140,MCG -02-01-025 NED02,PGC 000488;;; -NGC7830;*;00:06:01.86;+08:20:34.0;Psc;;;;;;;;;;;;;;;;;;;;; -NGC7831;G;00:07:19.53;+32:36:33.3;And;1.80;0.39;40;13.40;;10.95;10.16;9.88;22.59;Sb;;;;;;1530;;2MASX J00071951+3236334,IRAS 00047+3219,MCG +05-01-032,PGC 000569,UGC 00060;;; -NGC7832;G;00:06:28.46;-03:42:58.1;Psc;1.68;0.38;23;13.00;;10.35;9.69;9.45;23.68;E;;;;;;5386;;2MASX J00062844-0342581,MCG -01-01-033,PGC 000485;;; -NGC7833;Other;00:06:31.46;+27:38:22.8;Peg;;;;;;;;;;;;;;;;;;;;Five Galactic stars.; -NGC7834;G;00:06:37.82;+08:22:04.4;Psc;0.93;0.83;16;15.40;;12.74;12.24;11.85;23.94;Sc;;;;;;;;2MASX J00063780+0822045,MCG +01-01-030,PGC 000504,UGC 00049;;; -NGC7835;G;00:06:46.77;+08:25:33.4;Psc;0.56;0.24;150;15.50;;12.28;11.50;11.21;;Sb;;;;;;;;2MASX J00064677+0825335,MCG +01-01-031,PGC 000505;;; -NGC7836;G;00:08:01.64;+33:04:14.8;And;0.90;0.39;133;13.80;;11.32;10.64;10.28;22.80;E?;;;;;;;;2MASX J00080163+3304148,IRAS 00054+3247,PGC 000608,UGC 00065;;; -NGC7837;G;00:06:51.39;+08:21:05.0;Psc;0.67;0.38;169;16.00;;12.39;11.89;11.46;24.01;Sb;;;;;;;;2MASX J00065141+0821045,MCG +01-01-035,PGC 000516;;; -NGC7838;G;00:06:53.95;+08:21:03.1;Psc;1.30;0.57;93;15.30;;11.48;10.81;10.48;24.37;S0-a;;;;;;;;2MASX J00065396+0821027,MCG +01-01-036,PGC 000525;;; -NGC7839;**;00:07:00.63;+27:38:06.8;Peg;;;;;;;;;;;;;;;;;;;;; -NGC7840;G;00:07:08.80;+08:23:00.6;Psc;0.68;0.46;127;16.47;;;;;24.36;;;;;;;;;2MASX J00070878+0822598,PGC 1345780;;; diff --git a/java/lc-astro/src/main/resources/lc/astro/iraf/starfind.vm b/java/lc-astro/src/main/resources/lc/astro/iraf/starfind.vm deleted file mode 100644 index 6d83bfb25382286c4e0c2633b4815e8dd92644c9..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/resources/lc/astro/iraf/starfind.vm +++ /dev/null @@ -1,4 +0,0 @@ -set clobber=yes -cd $task.getWorkDir() -starfind image="$task.getImageUUID()" output="$task.getTmpFile().getAbsolutePath()" hwhmpsf=1 threshold=1200 -logout diff --git a/java/lc-astro/src/main/resources/lc/astro/scheduler/ekos/schedule.vm b/java/lc-astro/src/main/resources/lc/astro/scheduler/ekos/schedule.vm deleted file mode 100644 index 3fa7997594b89c52dfd60f48e587df82c9999cd5..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/resources/lc/astro/scheduler/ekos/schedule.vm +++ /dev/null @@ -1,39 +0,0 @@ - - - ED80 - - #foreach( $task in $taskings ) - - $task.getCatalogObject().getName() - 10 - - $task.getCatalogObject().getJ2000Coordinate().getXhours() - $task.getCatalogObject().getJ2000Coordinate().getY() - - $controller.buildFilename($task.getId()) - - ASAP - - - - - Sequence - - - Track - Align - Guide - Focus - - - #end - - - 0 - - - - - ParkMount - - \ No newline at end of file diff --git a/java/lc-astro/src/main/resources/lc/astro/scheduler/ekos/sequence.vm b/java/lc-astro/src/main/resources/lc/astro/scheduler/ekos/sequence.vm deleted file mode 100644 index adf6deaee348b3def16289b0404112736575376e..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/resources/lc/astro/scheduler/ekos/sequence.vm +++ /dev/null @@ -1,54 +0,0 @@ - - - ZWO CCD ASI1600MM Pro - ASI EFW - 2 - 0 - 1 - 60 - - #foreach ($exposure in $tasking.getExposures().entrySet()) - - $exposure.key.getLength() - - 1 - 1 - - - 0 - 0 - 4656 - 3520 - - -20 - $exposure.key.getFilter() - Light - - - 0 - 0 - 0 - - $exposure.value - 0 - /home/aleigh/astro/ - 0 - 0 - - - $exposure.key.getGain() - - - - - Manual - - - Manual - - False - False - - - #end - \ No newline at end of file diff --git a/java/lc-astro/src/main/scripts/ekos.py b/java/lc-astro/src/main/scripts/ekos.py deleted file mode 100755 index ef369feacffe69bd2b8e06730708e6de08cca9a3..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/scripts/ekos.py +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import argparse -import sys -import time - -# https://dbus.freedesktop.org/doc/dbus-python/index.html -import dbus - - -class EkosDbus(): - def __init__(self): - # user login session - self.session_bus = dbus.SessionBus() - self.start_ekos_proxy = None - self.start_ekos_iface = None - self.ekos_proxy = None - self.ekos_iface = None - self.scheduler_proxy = None - self.scheduler_iface = None - - def setup_start_ekos_iface(self): - try: - # proxy object - self.start_ekos_proxy = self.session_bus.get_object("org.kde.kstars", # bus name - "/kstars/MainWindow_1/actions/ekos" # object path - ) - # interface object - self.start_ekos_iface = dbus.Interface(self.start_ekos_proxy, 'org.qtproject.Qt.QAction') - except dbus.DBusException as dbe: - print(dbe) - sys.exit(1) - - def setup_ekos_iface(self, verbose=True): - # if self.start_ekos_iface is None: - # self.setup_start_ekos_iface() - try: - self.ekos_proxy = self.session_bus.get_object("org.kde.kstars", - "/KStars/Ekos" - ) - # ekos interface - self.ekos_iface = dbus.Interface(self.ekos_proxy, 'org.kde.kstars.Ekos') - except dbus.DBusException as dbe: - if verbose: - print(dbe) - sys.exit(1) - - def setup_scheduler_iface(self, verbose=True): - try: - # https://api.kde.org/extragear-api/edu-apidocs/kstars/html/classEkos_1_1Scheduler.html - self.scheduler_proxy = self.session_bus.get_object("org.kde.kstars", - "/KStars/Ekos/Scheduler" - ) - self.scheduler_iface = dbus.Interface(self.scheduler_proxy, "org.kde.kstars.Ekos.Scheduler") - except dbus.DBusException as dbe: - if verbose: - print(dbe) - sys.exit(1) - - def start_ekos(self): - print("Start Ekos") - if self.start_ekos_iface is None: - self.setup_start_ekos_iface() - self.start_ekos_iface.trigger() - - def stop_ekos(self): - print("Stop Ekos") - if self.ekos_iface is None: - self.setup_ekos_iface() - self.ekos_iface.stop() - - def load_and_start_profile(self, profile): - print("Load {} profile".format(profile)) - if self.ekos_iface is None: - self.setup_ekos_iface() - self.ekos_iface.setProfile(profile) - print("Start {} profile".format(profile)) - self.ekos_iface.start() - self.ekos_iface.connectDevices() - print("TODO Waiting for INDI devices...") - time.sleep(5) - - def load_schedule(self, schedule): - print("Load {} schedule".format(schedule)) - if self.scheduler_iface is None: - self.setup_scheduler_iface() - self.scheduler_iface.loadScheduler(schedule) - - def start_scheduler(self): - print("Start scheduler") - if self.scheduler_iface is None: - self.setup_scheduler_iface() - self.scheduler_iface.start() - - def stop_scheduler(self): - print("Stop scheduler") - if self.scheduler_iface is None: - self.setup_scheduler_iface() - self.scheduler_iface.stop() - - def reset_scheduler(self): - print("Reset all jobs in the scheduler") - if self.scheduler_iface is None: - self.setup_scheduler_iface() - self.scheduler_iface.resetAllJobs() - -def main(): - parser = argparse.ArgumentParser(description='Ekos cli') - parser.add_argument('--start_ekos', action='store_true', help='start ekos') - parser.add_argument('--stop_ekos', action='store_true', help='stop ekos') - parser.add_argument('--profile', required=False, type=str, help='equipment profile name, fi Simulators') - parser.add_argument('--load_schedule', required=False, type=str, - help='schedule .esl file path. Note: this replaces the entire observation list with this single entry.') - parser.add_argument('--start_scheduler', action='store_true', help='start the scheduler') - parser.add_argument('--stop_scheduler', action='store_true', help='stop the scheduler') - parser.add_argument('--reset_scheduler', action='store_true', help='reset all jobs in the scheduler') - args = parser.parse_args() - - ekos_dbus = EkosDbus() - if args.start_ekos: - ekos_dbus.start_ekos() - if args.stop_ekos: - ekos_dbus.stop_ekos() - if args.profile: - ekos_dbus.load_and_start_profile(args.profile) - if args.load_schedule: - ekos_dbus.load_schedule(args.load_schedule) - if args.start_scheduler: - ekos_dbus.start_scheduler() - if args.stop_scheduler: - ekos_dbus.stop_scheduler() - if args.reset_scheduler: - ekos_dbus.reset_scheduler() - -if __name__ == "__main__": - main() diff --git a/java/lc-astro/src/main/scripts/status.sh b/java/lc-astro/src/main/scripts/status.sh deleted file mode 100644 index dd3690a0459b56cd3fd5a0d5841f61bd7f48150d..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/main/scripts/status.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# Copyright (c) 2020, Alex Leigh - -dbus-send --print-reply=literal --dest=org.kde.kstars --print-reply /KStars/Ekos/Scheduler org.freedesktop.DBus.Properties.Get string:"org.kde.kstars.Ekos.Scheduler" string:"status" | grep int32 | awk '{print $2}' \ No newline at end of file diff --git a/java/lc-astro/src/test/java/lc/astro/astrometrics/AirMassTest.java b/java/lc-astro/src/test/java/lc/astro/astrometrics/AirMassTest.java deleted file mode 100644 index f90c495178af7b7491f31d1a9666546cfac9e4d3..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/test/java/lc/astro/astrometrics/AirMassTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package lc.astro.astrometrics; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class AirMassTest { - @Test - public void testAirMass() { - assertEquals(0.9997119918558381, AirMass.airMass(90), 0); - assertEquals(1.9988274711067535, AirMass.airMass(30), 0); - assertEquals(5.749001358743562, AirMass.airMass(10), 0); - } -} diff --git a/java/lc-astro/src/test/java/lc/astro/astrometrics/AstrometricsTest.java b/java/lc-astro/src/test/java/lc/astro/astrometrics/AstrometricsTest.java deleted file mode 100644 index 19f597093ce1b55786329225fde6064ce157b139..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/test/java/lc/astro/astrometrics/AstrometricsTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package lc.astro.astrometrics; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.Test; - -public class AstrometricsTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(AstrometricsTest.class); - - @Test - public void testHms() { - // NGC3711 - double x = Astrometrics.hmsToDeg(11, 30, 27.87); - logger.info("degs: {}", x); - } -} diff --git a/java/lc-astro/src/test/java/lc/astro/unit/DegreesMinutesSecondsTest.java b/java/lc-astro/src/test/java/lc/astro/unit/DegreesMinutesSecondsTest.java deleted file mode 100644 index 74bb2a9205f0b344b422de7aff4e14ab0dc11896..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/test/java/lc/astro/unit/DegreesMinutesSecondsTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package lc.astro.unit; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.Test; - -import static junit.framework.TestCase.assertEquals; - -public class DegreesMinutesSecondsTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DegreesMinutesSecondsTest.class); - - @Test - public void testDms() { - DegreesMinutesSeconds dms = new DegreesMinutesSeconds(180); - assertEquals(180.0, dms.getDegrees()); - assertEquals(0.0, dms.getMinutes()); - assertEquals(0.0, dms.getSeconds()); - - logger.info("dms: {}", dms); - } -} diff --git a/java/lc-astro/src/test/java/lc/astro/unit/HoursMinutessSecondsTest.java b/java/lc-astro/src/test/java/lc/astro/unit/HoursMinutessSecondsTest.java deleted file mode 100644 index 73d4cfef2b06ea06451a15ea27e04f99009f1fbf..0000000000000000000000000000000000000000 --- a/java/lc-astro/src/test/java/lc/astro/unit/HoursMinutessSecondsTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package lc.astro.unit; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.Test; - -import static junit.framework.TestCase.assertEquals; - - -/** - * JUnit test-cases for the {@link HoursMinutessSecondsTest} class. - * - * @author Alex Leigh - */ -public class HoursMinutessSecondsTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(HoursMinutessSecondsTest.class); - - @Test - public void testHms() { - HoursMinutesSeconds hms = new HoursMinutesSeconds(180); - assertEquals(12.0, hms.getHours()); - assertEquals(0.0, hms.getMinutes()); - assertEquals(0.0, hms.getSeconds()); - - logger.info("hms: {}", hms); - } - -} diff --git a/java/lc-audio-bpm/LICENSE.md b/java/lc-audio-bpm/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-audio-bpm/build.gradle b/java/lc-audio-bpm/build.gradle deleted file mode 100644 index 73283f88c1b3c3363a61eb7a4a4c86b09e1aeb42..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -ext { - gdxVersion = '1.7.0' -} - -dependencies { - api project(':lc-mecha') - api 'net.compartmental.code:minim:2.2.2' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/BeatDetectTool.java b/java/lc-audio-bpm/src/main/java/lc/audio/bpm/BeatDetectTool.java deleted file mode 100644 index 564d590e5684577b0f6e9bcea22ff0ad0cd6dd70..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/BeatDetectTool.java +++ /dev/null @@ -1,26 +0,0 @@ -package lc.audio.bpm; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.smpte.Timecode; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; - -/** - * A tool for using beat analysis to determine beat events in an audio stream. The beat events are output as - * SMPTE offsets. - *

- * The tool is to be used with 16-bit uncompressed mono WAV files. - * - * @author Alex Leigh - */ -public class BeatDetectTool { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(BeatDetectTool.class); - - public static void main(String[] args) throws IOException, WavFileException { - ArrayList beats = MinimBeatDetector.detect(new File(args[0])); - logger.info("Detected beats: {}", beats); - } -} diff --git a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/MinimBeatDetector.java b/java/lc-audio-bpm/src/main/java/lc/audio/bpm/MinimBeatDetector.java deleted file mode 100644 index 6f497f9f3cb65d6f54e25d4eef55974f68819f56..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/MinimBeatDetector.java +++ /dev/null @@ -1,77 +0,0 @@ -package lc.audio.bpm; - -import ddf.minim.analysis.BeatDetect; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.smpte.Timecode; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; - -/** - * Wrapper for the Minim beat detector implementation. - *

- * This implementation is intended to be used with 44.1khz mono WAV files. - * - * @author Alex Leigh - */ -public class MinimBeatDetector { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(MinimBeatDetector.class); - - public static ArrayList detect(File f) throws IOException, WavFileException { - ArrayList beats = new ArrayList<>(); - int bufferSz = 256; - - WavFile wavFile = WavFile.openWavFile(f); - long sampleRate = wavFile.getSampleRate(); - logger.info("WAV: [frames: {}] [sampleRate: {}]", - wavFile.getNumFrames(), - sampleRate); - - BeatDetect bd = new BeatDetect(bufferSz, wavFile.getSampleRate()); - //BeatDetect bd = new BeatDetect(); - // bd.detectMode(BeatDetect.SOUND_ENERGY); - // bd.setSensitivity(15); - logger.info("Beat Detector. [timeSize: {}]"); - - // Get the number of audio channels in the wav file - int numChannels = wavFile.getNumChannels(); - - if (numChannels != 1) { - logger.error("File must be mono."); - System.exit(0); - } - - double[] buffer = new double[bufferSz]; - - int framesRead; - int sampleCounter = 0; - - do { - // Read frames into buffer - framesRead = wavFile.readFrames(buffer, bufferSz); - float[] floatArray = new float[buffer.length]; - for (int i = 0; i < buffer.length; i++) { - floatArray[i] = (float) buffer[i]; - } - - bd.detect(floatArray); - - if (bd.isOnset() || bd.isSnare() || bd.isKick()) { - double tc = (double) sampleCounter / sampleRate; - Timecode t = new Timecode((float) tc, Timecode.Type.TYPE_VIDEO_FILM); - logger.info("Beat onset detected. [time: {}]", t.getCode()); - beats.add(t); - } - sampleCounter += buffer.length; - } - while (framesRead != 0); - - // Close the wavFile - wavFile.close(); - - return beats; - - } -} diff --git a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/V4LKBeatDetector.java b/java/lc-audio-bpm/src/main/java/lc/audio/bpm/V4LKBeatDetector.java deleted file mode 100644 index 4e4699d298af54d629a26e02970348f29de03011..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/V4LKBeatDetector.java +++ /dev/null @@ -1,47 +0,0 @@ -package lc.audio.bpm; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.smpte.Timecode; -import v4lk.lwbd.util.Beat; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -/** - * Wrapper for the V4LK beat detector implementation. This implementation is intended to be used with 44.1khz - * mono MP3 files. - * - * @author Alex Leigh - */ -public class V4LKBeatDetector { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(V4LKBeatDetector.class); - - public static List detect(File audioFile) throws IOException { - logger.info("Processing audio..."); - - Beat[] beats = v4lk.lwbd.BeatDetector.detectBeats(audioFile, v4lk.lwbd.BeatDetector.AudioType.MP3); - ArrayList output = new ArrayList<>(); - - logger.info("Processing finished."); - - Timecode last = null; - - for (Beat b : beats) { - if (b.energy > .25) { - Timecode tc = new Timecode((float) b.timeMs / 1000, Timecode.Type.TYPE_VIDEO_FILM); - // Dampen to no more than 120BPM - if (last != null) { - double lastFrame = last.toFrames(); - if (tc.toFrames() - lastFrame < 6) continue; - } - last = tc; - output.add(tc); - logger.info("Detected beat: {} [tc: {}]", b, tc); - } - } - return output; - } -} diff --git a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/WavFile.java b/java/lc-audio-bpm/src/main/java/lc/audio/bpm/WavFile.java deleted file mode 100644 index aaaa75ebe155a27c68bc740559f6354774b93b66..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/WavFile.java +++ /dev/null @@ -1,963 +0,0 @@ -package lc.audio.bpm; - -// Wav file IO class -// A.Greensted -// http://www.labbookpages.co.uk - -// File format is based on the information from -// http://www.sonicspot.com/guide/wavefiles.html -// http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/wave.htm - -// Version 1.0 - -// Wav file IO class -// A.Greensted -// http://www.labbookpages.co.uk - -// File format is based on the information from -// http://www.sonicspot.com/guide/wavefiles.html -// http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/wave.htm - -// Version 1.0 - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; - -public class WavFile { - /** - * States that our IO operations can be in. - */ - private enum IOState {READING, WRITING, CLOSED} - - ; - - /** - * Size of our internal buffer. - */ - private final static int BUFFER_SIZE = 4096; - - /** - * WAV-specific constants. - */ - private final static int FMT_CHUNK_ID = 0x20746D66; - private final static int DATA_CHUNK_ID = 0x61746164; - private final static int RIFF_CHUNK_ID = 0x46464952; - private final static int RIFF_TYPE_ID = 0x45564157; - - private File file; // File that will be read from or written to - private IOState ioState; // Specifies the IO State of the Wav File (used for snaity checking) - private int bytesPerSample; // Number of bytes required to store a single sample - private long numFrames; // Number of frames within the data section - private FileOutputStream oStream; // Output stream used for writting data - private FileInputStream iStream; // Input stream used for reading data - private double floatScale; // Scaling factor used for int <-> float conversion - private double floatOffset; // Offset factor used for int <-> float conversion - private boolean wordAlignAdjust; // Specify if an extra byte at the end of the data chunk is required for word alignment - - /** - * Wav Header. - */ - private int numChannels; // 2 bytes unsigned, 0x0001 (1) to 0xFFFF (65,535) - private long sampleRate; // 4 bytes unsigned, 0x00000001 (1) to 0xFFFFFFFF (4,294,967,295) - - /** - * Although a java int is 4 bytes, it is signed, so need to use a long - */ - private int blockAlign; // 2 bytes unsigned, 0x0001 (1) to 0xFFFF (65,535) - private int validBits; // 2 bytes unsigned, 0x0002 (2) to 0xFFFF (65,535) - - /** - * Buffering - */ - private byte[] buffer; // Local buffer used for IO - private int bufferPointer; // Points to the current position in local buffer - private int bytesRead; // Bytes read after last read into local buffer - private long frameCounter; // Current number of frames read or written - - /** - * Cannot instantiate WavFile directly, must either use newWavFile() or openWavFile(). - */ - private WavFile() { - buffer = new byte[BUFFER_SIZE]; - } - - /** - * Gets the number of channels. - * - * @return the number of channels - */ - public int getNumChannels() { - return numChannels; - } - - /** - * Get the number of frames. - * - * @return the number of frames - */ - public long getNumFrames() { - return numFrames; - } - - /** - * Get the number of frames remaining. - * - * @return the number of frames remaining - */ - public long getFramesRemaining() { - return numFrames - frameCounter; - } - - /** - * Get the sample rate. - * - * @return the sample rate - */ - public long getSampleRate() { - return sampleRate; - } - - /** - * Get the number of valid bits. - * - * @return the number of valid bits - */ - public int getValidBits() { - return validBits; - } - - /** - * Initialize a new WavFile object for writing into the specified file. - * - * @param file the file to write to - * @param numChannels the number of channels to use - * @param numFrames the number of frames to use - * @param validBits the number of alid bits to use - * @param sampleRate the sample rate for the new file - * @return the WavFile object - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public static WavFile newWavFile(File file, int numChannels, long numFrames, int validBits, long sampleRate) throws IOException, WavFileException { - // Instantiate new Wavfile and initialise - WavFile wavFile = new WavFile(); - wavFile.file = file; - wavFile.numChannels = numChannels; - wavFile.numFrames = numFrames; - wavFile.sampleRate = sampleRate; - wavFile.bytesPerSample = (validBits + 7) / 8; - wavFile.blockAlign = wavFile.bytesPerSample * numChannels; - wavFile.validBits = validBits; - - // Sanity check arguments - if (numChannels < 1 || numChannels > 65535) - throw new WavFileException("Illegal number of channels, valid range 1 to 65536"); - if (numFrames < 0) throw new WavFileException("Number of frames must be positive"); - if (validBits < 2 || validBits > 65535) - throw new WavFileException("Illegal number of valid bits, valid range 2 to 65536"); - if (sampleRate < 0) throw new WavFileException("Sample rate must be positive"); - - // Create output stream for writing data - wavFile.oStream = new FileOutputStream(file); - - // Calculate the chunk sizes - long dataChunkSize = wavFile.blockAlign * numFrames; - long mainChunkSize = 4 + // Riff Type - 8 + // Format ID and size - 16 + // Format data - 8 + // Data ID and size - dataChunkSize; - - // Chunks must be word aligned, so if odd number of audio data bytes - // adjust the main chunk size - if (dataChunkSize % 2 == 1) { - mainChunkSize += 1; - wavFile.wordAlignAdjust = true; - } else { - wavFile.wordAlignAdjust = false; - } - - // Set the main chunk size - putLE(RIFF_CHUNK_ID, wavFile.buffer, 0, 4); - putLE(mainChunkSize, wavFile.buffer, 4, 4); - putLE(RIFF_TYPE_ID, wavFile.buffer, 8, 4); - - // Write out the header - wavFile.oStream.write(wavFile.buffer, 0, 12); - - // Put format data in buffer - long averageBytesPerSecond = sampleRate * wavFile.blockAlign; - - putLE(FMT_CHUNK_ID, wavFile.buffer, 0, 4); // Chunk ID - putLE(16, wavFile.buffer, 4, 4); // Chunk Data Size - putLE(1, wavFile.buffer, 8, 2); // Compression Code (Uncompressed) - putLE(numChannels, wavFile.buffer, 10, 2); // Number of channels - putLE(sampleRate, wavFile.buffer, 12, 4); // Sample Rate - putLE(averageBytesPerSecond, wavFile.buffer, 16, 4); // Average Bytes Per Second - putLE(wavFile.blockAlign, wavFile.buffer, 20, 2); // Block Align - putLE(validBits, wavFile.buffer, 22, 2); // Valid Bits - - // Write Format Chunk - wavFile.oStream.write(wavFile.buffer, 0, 24); - - // Start Data Chunk - putLE(DATA_CHUNK_ID, wavFile.buffer, 0, 4); // Chunk ID - putLE(dataChunkSize, wavFile.buffer, 4, 4); // Chunk Data Size - - // Write Format Chunk - wavFile.oStream.write(wavFile.buffer, 0, 8); - - // Calculate the scaling factor for converting to a normalised double - if (wavFile.validBits > 8) { - // If more than 8 validBits, data is signed - // Conversion required multiplying by magnitude of max positive value - wavFile.floatOffset = 0; - wavFile.floatScale = Long.MAX_VALUE >> (64 - wavFile.validBits); - } else { - // Else if 8 or less validBits, data is unsigned - // Conversion required dividing by max positive value - wavFile.floatOffset = 1; - wavFile.floatScale = 0.5 * ((1 << wavFile.validBits) - 1); - } - - // Finally, set the IO State - wavFile.bufferPointer = 0; - wavFile.bytesRead = 0; - wavFile.frameCounter = 0; - wavFile.ioState = IOState.WRITING; - - return wavFile; - } - - /** - * Read WAV contents from a provided file. - * - * @param file the file - * @return the wav file - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - @SuppressWarnings({"checkstyle:methodlength", - "checkstyle:magicnumber", - "checkstyle:avoidinlineconditionals"}) - public static WavFile openWavFile(File file) throws IOException, WavFileException { - // Instantiate new Wavfile and store the file reference - WavFile wavFile = new WavFile(); - wavFile.file = file; - - // Create a new file input stream for reading file data - wavFile.iStream = new FileInputStream(file); - - // Read the first 12 bytes of the file - int bytesRead = wavFile.iStream.read(wavFile.buffer, 0, 12); - if (bytesRead != 12) throw new WavFileException("Not enough wav file bytes for header"); - - // Extract parts from the header - long riffChunkID = getLE(wavFile.buffer, 0, 4); - long chunkSize = getLE(wavFile.buffer, 4, 4); - long riffTypeID = getLE(wavFile.buffer, 8, 4); - - // Check the header bytes contains the correct signature - if (riffChunkID != RIFF_CHUNK_ID) - throw new WavFileException("Invalid Wav Header data, incorrect riff chunk ID"); - if (riffTypeID != RIFF_TYPE_ID) throw new WavFileException("Invalid Wav Header data, incorrect riff type ID"); - - // Check that the file size matches the number of bytes listed in header - if (file.length() != chunkSize + 8) { - throw new WavFileException("Header chunk size (" + chunkSize + ") does not match file size (" + file.length() + ")"); - } - - boolean foundFormat = false; - boolean foundData = false; - - // Search for the Format and Data Chunks - while (true) { - // Read the first 8 bytes of the chunk (ID and chunk size) - bytesRead = wavFile.iStream.read(wavFile.buffer, 0, 8); - if (bytesRead == -1) throw new WavFileException("Reached end of file without finding format chunk"); - if (bytesRead != 8) throw new WavFileException("Could not read chunk header"); - - // Extract the chunk ID and Size - long chunkID = getLE(wavFile.buffer, 0, 4); - chunkSize = getLE(wavFile.buffer, 4, 4); - - // Word align the chunk size - // chunkSize specifies the number of bytes holding data. However, - // the data should be word aligned (2 bytes) so we need to calculate - // the actual number of bytes in the chunk - long numChunkBytes = (chunkSize % 2 == 1) ? chunkSize + 1 : chunkSize; - - if (chunkID == FMT_CHUNK_ID) { - // Flag that the format chunk has been found - foundFormat = true; - - // Read in the header info - bytesRead = wavFile.iStream.read(wavFile.buffer, 0, 16); - - // Check this is uncompressed data - int compressionCode = (int) getLE(wavFile.buffer, 0, 2); - if (compressionCode != 1) - throw new WavFileException("Compression Code " + compressionCode + " not supported"); - - // Extract the format information - wavFile.numChannels = (int) getLE(wavFile.buffer, 2, 2); - wavFile.sampleRate = getLE(wavFile.buffer, 4, 4); - wavFile.blockAlign = (int) getLE(wavFile.buffer, 12, 2); - wavFile.validBits = (int) getLE(wavFile.buffer, 14, 2); - - if (wavFile.numChannels == 0) - throw new WavFileException("Number of channels specified in header is equal to zero"); - if (wavFile.blockAlign == 0) - throw new WavFileException("Block Align specified in header is equal to zero"); - if (wavFile.validBits < 2) throw new WavFileException("Valid Bits specified in header is less than 2"); - if (wavFile.validBits > 64) - throw new WavFileException("Valid Bits specified in header is greater than 64, this is greater than a long can hold"); - - // Calculate the number of bytes required to hold 1 sample - wavFile.bytesPerSample = (wavFile.validBits + 7) / 8; - if (wavFile.bytesPerSample * wavFile.numChannels != wavFile.blockAlign) - throw new WavFileException("Block Align does not agree with bytes required for validBits and number of channels"); - - // Account for number of format bytes and then skip over - // any extra format bytes - numChunkBytes -= 16; - if (numChunkBytes > 0) wavFile.iStream.skip(numChunkBytes); - } else if (chunkID == DATA_CHUNK_ID) { - // Check if we've found the format chunk, - // If not, throw an exception as we need the format information - // before we can read the data chunk - if (foundFormat == false) throw new WavFileException("Data chunk found before Format chunk"); - - // Check that the chunkSize (wav data length) is a multiple of the - // block align (bytes per frame) - if (chunkSize % wavFile.blockAlign != 0) - throw new WavFileException("Data Chunk size is not multiple of Block Align"); - - // Calculate the number of frames - wavFile.numFrames = chunkSize / wavFile.blockAlign; - - // Flag that we've found the wave data chunk - foundData = true; - - break; - } else { - // If an unknown chunk ID is found, just skip over the chunk data - wavFile.iStream.skip(numChunkBytes); - } - } - - // Throw an exception if no data chunk has been found - if (foundData == false) throw new WavFileException("Did not find a data chunk"); - - // Calculate the scaling factor for converting to a normalised double - if (wavFile.validBits > 8) { - // If more than 8 validBits, data is signed - // Conversion required dividing by magnitude of max negative value - wavFile.floatOffset = 0; - wavFile.floatScale = 1 << (wavFile.validBits - 1); - } else { - // Else if 8 or less validBits, data is unsigned - // Conversion required dividing by max positive value - wavFile.floatOffset = -1; - wavFile.floatScale = 0.5 * ((1 << wavFile.validBits) - 1); - } - - wavFile.bufferPointer = 0; - wavFile.bytesRead = 0; - wavFile.frameCounter = 0; - wavFile.ioState = IOState.READING; - - return wavFile; - } - - /** - * Get little-endian data from the buffer. - * - * @param buffer the buffer to read from - * @param pos the starting position - * @param numBytes the number of bytes to read - * @return a little-endian long - */ - @SuppressWarnings("checkstyle:magicnumber") - private static long getLE(byte[] buffer, int pos, int numBytes) { - numBytes--; - pos += numBytes; - - long val = buffer[pos] & 0xFF; - for (int b = 0; b < numBytes; b++) val = (val << 8) + (buffer[--pos] & 0xFF); - - return val; - } - - /** - * Put little-endian data into the buffer. - * - * @param val the data to write into the buffer - * @param buffer the buffer to write to - * @param pos the position to write to - * @param numBytes the number of bytes to write - */ - @SuppressWarnings({"checkstyle:magicnumber", "unused"}) - private static void putLE(long val, byte[] buffer, int pos, int numBytes) { - for (int b = 0; b < numBytes; b++) { - buffer[pos] = (byte) (val & 0xFF); - val >>= 8; - pos++; - } - } - - /** - * Write a sample to our buffer. - * - * @param val the sample to write - * @throws IOException Signals that an I/O exception has occurred - */ - private void writeSample(long val) throws IOException { - for (int b = 0; b < bytesPerSample; b++) { - if (bufferPointer == BUFFER_SIZE) { - oStream.write(buffer, 0, BUFFER_SIZE); - bufferPointer = 0; - } - - buffer[bufferPointer] = (byte) (val & 0xFF); - val >>= 8; - bufferPointer++; - } - } - - /** - * Read a sample from the buffer. - * - * @return the sample read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - @SuppressWarnings("checkstyle:magicnumber") - private long readSample() throws IOException, WavFileException { - long val = 0; - - for (int b = 0; b < bytesPerSample; b++) { - if (bufferPointer == bytesRead) { - int read = iStream.read(buffer, 0, BUFFER_SIZE); - if (read == -1) throw new WavFileException("Not enough data available"); - bytesRead = read; - bufferPointer = 0; - } - - int v = buffer[bufferPointer]; - if (b < bytesPerSample - 1 || bytesPerSample == 1) v &= 0xFF; - val += v << (b * 8); - - bufferPointer++; - } - - return val; - } - - /** - * Read some number of frames from the buffer into a flat int array. - * - * @param sampleBuffer the buffer to read samples into - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(int[] sampleBuffer, int numFramesToRead) throws IOException, WavFileException { - return readFrames(sampleBuffer, 0, numFramesToRead); - } - - /** - * Read some number of frames from a specific offset in the buffer into a flat int array. - * - * @param sampleBuffer the buffer to read samples into - * @param offset the buffer offset to read from - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(int[] sampleBuffer, int offset, int numFramesToRead) throws IOException, WavFileException { - if (ioState != IOState.READING) throw new IOException("Cannot read from WavFile instance"); - - for (int f = 0; f < numFramesToRead; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) { - sampleBuffer[offset] = (int) readSample(); - offset++; - } - - frameCounter++; - } - - return numFramesToRead; - } - - /** - * Read some number of frames from the buffer into a multi-dimensional int array. - * - * @param sampleBuffer the buffer to read samples into - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(int[][] sampleBuffer, int numFramesToRead) throws IOException, WavFileException { - return readFrames(sampleBuffer, 0, numFramesToRead); - } - - /** - * Read some number of frames from a specific offset in the buffer into a multi-dimensional int - * array. - * s - * - * @param sampleBuffer the buffer to read samples into - * @param offset the buffer offset to read from - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(int[][] sampleBuffer, int offset, int numFramesToRead) throws IOException, WavFileException { - if (ioState != IOState.READING) throw new IOException("Cannot read from WavFile instance"); - - for (int f = 0; f < numFramesToRead; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) sampleBuffer[c][offset] = (int) readSample(); - - offset++; - frameCounter++; - } - - return numFramesToRead; - } - - /** - * Write some number of frames into the buffer from a flat int array. - * - * @param sampleBuffer the buffer to read samples from - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(int[] sampleBuffer, int numFramesToWrite) throws IOException, WavFileException { - return writeFrames(sampleBuffer, 0, numFramesToWrite); - } - - /** - * Write some number of frames into the buffer at a specific offset from a flat int array. - * - * @param sampleBuffer the buffer to read samples from - * @param offset the buffer offset to write into - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(int[] sampleBuffer, int offset, int numFramesToWrite) throws IOException, WavFileException { - if (ioState != IOState.WRITING) throw new IOException("Cannot write to WavFile instance"); - - for (int f = 0; f < numFramesToWrite; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) { - writeSample(sampleBuffer[offset]); - offset++; - } - - frameCounter++; - } - - return numFramesToWrite; - } - - /** - * Write some number of frames into the buffer from a multi-dimensional int array. - * - * @param sampleBuffer the buffer to read samples from - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(int[][] sampleBuffer, int numFramesToWrite) throws IOException, WavFileException { - return writeFrames(sampleBuffer, 0, numFramesToWrite); - } - - /** - * Write some number of frames into the buffer at a specific offset from a multi-dimensional int - * array. - * - * @param sampleBuffer the buffer to read samples from - * @param offset the buffer offset to write into - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(int[][] sampleBuffer, int offset, int numFramesToWrite) throws IOException, WavFileException { - if (ioState != IOState.WRITING) throw new IOException("Cannot write to WavFile instance"); - - for (int f = 0; f < numFramesToWrite; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) writeSample(sampleBuffer[c][offset]); - - offset++; - frameCounter++; - } - - return numFramesToWrite; - } - - /** - * Read some number of frames from the buffer into a flat long array. - * - * @param sampleBuffer the buffer to read samples into - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(long[] sampleBuffer, int numFramesToRead) throws IOException, WavFileException { - return readFrames(sampleBuffer, 0, numFramesToRead); - } - - /** - * Read some number of frames from a specific offset in the buffer into a flat long array. - * - * @param sampleBuffer the buffer to read samples into - * @param offset the buffer offset to read from - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(long[] sampleBuffer, int offset, int numFramesToRead) throws IOException, WavFileException { - if (ioState != IOState.READING) throw new IOException("Cannot read from WavFile instance"); - - for (int f = 0; f < numFramesToRead; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) { - sampleBuffer[offset] = readSample(); - offset++; - } - - frameCounter++; - } - - return numFramesToRead; - } - - /** - * Read some number of frames from the buffer into a multi-dimensional long array. - * - * @param sampleBuffer the buffer to read samples into - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(long[][] sampleBuffer, int numFramesToRead) throws IOException, WavFileException { - return readFrames(sampleBuffer, 0, numFramesToRead); - } - - /** - * Read some number of frames from a specific offset in the buffer into a multi-dimensional long - * array. - * - * @param sampleBuffer the buffer to read samples into - * @param offset the buffer offset to read from - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(long[][] sampleBuffer, int offset, int numFramesToRead) throws IOException, WavFileException { - if (ioState != IOState.READING) throw new IOException("Cannot read from WavFile instance"); - - for (int f = 0; f < numFramesToRead; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) sampleBuffer[c][offset] = readSample(); - - offset++; - frameCounter++; - } - - return numFramesToRead; - } - - /** - * Write some number of frames into the buffer from a flat long array. - * - * @param sampleBuffer the buffer to read samples from - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(long[] sampleBuffer, int numFramesToWrite) throws IOException, WavFileException { - return writeFrames(sampleBuffer, 0, numFramesToWrite); - } - - /** - * Write some number of frames into the buffer at a specific offset from a flat long array. - * - * @param sampleBuffer the buffer to read samples from - * @param offset the buffer offset to write into - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(long[] sampleBuffer, int offset, int numFramesToWrite) throws IOException, WavFileException { - if (ioState != IOState.WRITING) throw new IOException("Cannot write to WavFile instance"); - - for (int f = 0; f < numFramesToWrite; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) { - writeSample(sampleBuffer[offset]); - offset++; - } - - frameCounter++; - } - - return numFramesToWrite; - } - - /** - * Write some number of frames into the buffer from a multi-dimensional long array. - * - * @param sampleBuffer the buffer to read samples from - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(long[][] sampleBuffer, int numFramesToWrite) throws IOException, WavFileException { - return writeFrames(sampleBuffer, 0, numFramesToWrite); - } - - /** - * Write some number of frames into the buffer at a specific offset from a multi-dimensional - * long array. - * - * @param sampleBuffer the buffer to read samples from - * @param offset the buffer offset to write into - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(long[][] sampleBuffer, int offset, int numFramesToWrite) throws IOException, WavFileException { - if (ioState != IOState.WRITING) throw new IOException("Cannot write to WavFile instance"); - - for (int f = 0; f < numFramesToWrite; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) writeSample(sampleBuffer[c][offset]); - - offset++; - frameCounter++; - } - - return numFramesToWrite; - } - - /** - * Read some number of frames from the buffer into a flat double array. - * - * @param sampleBuffer the buffer to read samples into - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(double[] sampleBuffer, int numFramesToRead) throws IOException, WavFileException { - return readFrames(sampleBuffer, 0, numFramesToRead); - } - - /** - * Read some number of frames from a specific offset in the buffer into a flat double array. - * - * @param sampleBuffer the buffer to read samples into - * @param offset the buffer offset to read from - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(double[] sampleBuffer, int offset, int numFramesToRead) throws IOException, WavFileException { - if (ioState != IOState.READING) throw new IOException("Cannot read from WavFile instance"); - - for (int f = 0; f < numFramesToRead; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) { - sampleBuffer[offset] = floatOffset + (double) readSample() / floatScale; - offset++; - } - - frameCounter++; - } - - return numFramesToRead; - } - - /** - * Read some number of frames from the buffer into a multi-dimensional double array. - * - * @param sampleBuffer the buffer to read samples into - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(double[][] sampleBuffer, int numFramesToRead) throws IOException, WavFileException { - return readFrames(sampleBuffer, 0, numFramesToRead); - } - - /** - * Read some number of frames from a specific offset in the buffer into a multi-dimensional - * double array. - * - * @param sampleBuffer the buffer to read samples into - * @param offset the buffer offset to read from - * @param numFramesToRead the number of frames to read - * @return the number of frames read - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int readFrames(double[][] sampleBuffer, int offset, int numFramesToRead) throws IOException, WavFileException { - if (ioState != IOState.READING) throw new IOException("Cannot read from WavFile instance"); - - for (int f = 0; f < numFramesToRead; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) - sampleBuffer[c][offset] = floatOffset + (double) readSample() / floatScale; - - offset++; - frameCounter++; - } - - return numFramesToRead; - } - - /** - * Write some number of frames into the buffer from a flat double array. - * - * @param sampleBuffer the buffer to read samples from - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(double[] sampleBuffer, int numFramesToWrite) throws IOException, WavFileException { - return writeFrames(sampleBuffer, 0, numFramesToWrite); - } - - /** - * Write some number of frames into the buffer at a specific offset from a flat double array. - * - * @param sampleBuffer the buffer to read samples from - * @param offset the buffer offset to write into - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(double[] sampleBuffer, int offset, int numFramesToWrite) throws IOException, WavFileException { - if (ioState != IOState.WRITING) throw new IOException("Cannot write to WavFile instance"); - - for (int f = 0; f < numFramesToWrite; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) { - writeSample((long) (floatScale * (floatOffset + sampleBuffer[offset]))); - offset++; - } - - frameCounter++; - } - - return numFramesToWrite; - } - - /** - * Write some number of frames into the buffer from a multi-dimensional double array. - * - * @param sampleBuffer the buffer to read samples from - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(double[][] sampleBuffer, int numFramesToWrite) throws IOException, WavFileException { - return writeFrames(sampleBuffer, 0, numFramesToWrite); - } - - /** - * Write some number of frames into the buffer at a specific offset from a multi-dimensional - * double array. - * - * @param sampleBuffer the buffer to read samples from - * @param offset the buffer offset to write into - * @param numFramesToWrite the number of frames to write - * @return the number of frames written - * @throws IOException Signals that an I/O exception has occurred - * @throws WavFileException a WavFile-specific exception - */ - public int writeFrames(double[][] sampleBuffer, int offset, int numFramesToWrite) throws IOException, WavFileException { - if (ioState != IOState.WRITING) throw new IOException("Cannot write to WavFile instance"); - - for (int f = 0; f < numFramesToWrite; f++) { - if (frameCounter == numFrames) return f; - - for (int c = 0; c < numChannels; c++) - writeSample((long) (floatScale * (floatOffset + sampleBuffer[c][offset]))); - - offset++; - frameCounter++; - } - - return numFramesToWrite; - } - - /** - * Close the WavFile. - * - * @throws IOException Signals that an I/O exception has occurred - */ - public void close() throws IOException { - // Close the input stream and set to null - if (iStream != null) { - iStream.close(); - iStream = null; - } - - if (oStream != null) { - // Write out anything still in the local buffer - if (bufferPointer > 0) oStream.write(buffer, 0, bufferPointer); - - // If an extra byte is required for word alignment, add it to the end - if (wordAlignAdjust) oStream.write(0); - - // Close the stream and set to null - oStream.close(); - oStream = null; - } - - // Flag that the stream is closed - ioState = IOState.CLOSED; - } -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/WavFileException.java b/java/lc-audio-bpm/src/main/java/lc/audio/bpm/WavFileException.java deleted file mode 100644 index 65d6ac8bc09f0f11e3f32169f14b62f9ec527395..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/lc/audio/bpm/WavFileException.java +++ /dev/null @@ -1,41 +0,0 @@ -package lc.audio.bpm; - -/** - * WavFile-specific exception class. - */ -public class WavFileException extends Exception { - /** - * Create a new WavFile-specific exception. - */ - public WavFileException() { - super(); - } - - /** - * Create a new WavFile-specific exception with a given message. - * - * @param message the message - */ - public WavFileException(String message) { - super(message); - } - - /** - * Create a new WavFile-specific exception with a message and throwable exception. - * - * @param message the message - * @param cause the cause - */ - public WavFileException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Create a new WavFile-specific exception with a throwable exception. - * - * @param cause the cause - */ - public WavFileException(Throwable cause) { - super(cause); - } -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/BeatDetector.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/BeatDetector.java deleted file mode 100644 index 5424b8ddabfb4d2a87a84b919d4314582da32707..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/BeatDetector.java +++ /dev/null @@ -1,320 +0,0 @@ -package v4lk.lwbd; - -import v4lk.lwbd.decoders.Decoder; -import v4lk.lwbd.decoders.JLayerMp3Decoder; -import v4lk.lwbd.decoders.processing.fft.FFT; -import v4lk.lwbd.util.Beat; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.LinkedList; - -/** - * lwbd -- a portable lightweight beat detector - * - * @author Quentin Young - */ -public class BeatDetector { - - private static class AudioFunctions { - /** - * Calculates the spectral flux value for each sequential pair of - * 1024-sample windows in a given audio file - * - * @return A list of all calculated spectral fluxes - */ - public static LinkedList calculateSpectralFluxes(Decoder decoder) throws IOException { - - // some collections and objects we'll need - FFT transformer = new FFT(1024, 44100); - transformer.window(FFT.HAMMING); - float[] currentSpectrum, previousSpectrum; - LinkedList fluxes = new LinkedList(); - int spectrumSize = (1024 / 2) + 1; - currentSpectrum = new float[spectrumSize]; - previousSpectrum = new float[spectrumSize]; - - - // calculate spectral fluxes - short[] protoframe = decoder.nextMonoFrame(); - - while (protoframe != null && protoframe.length == 1024) { - // convert to float - float[] frame = new float[protoframe.length]; - for (int i = 0; i < frame.length; i++) - frame[i] = (float) protoframe[i] / 32768f; - // fft - transformer.forward(frame); - // array shuffle - System.arraycopy(currentSpectrum, 0, previousSpectrum, 0, currentSpectrum.length); - System.arraycopy(transformer.getSpectrum(), 0, currentSpectrum, 0, currentSpectrum.length); - - // calculate the spectral flux between two spectra - float flux = 0; - for (int i = 0; i < currentSpectrum.length; i++) { - float tFlux = (currentSpectrum[i] - previousSpectrum[i]); - flux += tFlux > 0 ? tFlux : 0; - } - - fluxes.add(flux); - protoframe = decoder.nextMonoFrame(); - } - - return fluxes; - } - - /** - * Performs onset detection on a set of spectral fluxes - * - * @param sensitivity Sensitivity value for threshold function - * @return An ArrayList containing a representation of the audio - * file. There are approx. 43 values for every 1 second of - * audio. All values are zero except where there are beats; - * those values are the original sample values. The higher the - * value the stronger the beat. - */ - public static LinkedList detectPeaks(LinkedList spectralFluxes, float sensitivity) { - - ArrayList thresholds = new ArrayList(); - - // calculate an energy threshold for each flux using a moving window of size 10 - for (int i = 0; i < spectralFluxes.size(); i++) { - int start = Math.max(0, i - 10); - int end = Math.min(spectralFluxes.size() - 1, i + 10); - float mean = 0; - for (int j = start; j <= end; j++) - mean += spectralFluxes.get(j); - mean /= (end - start); - thresholds.add(mean * sensitivity); - } - - // zero out non-beats and keep the beats - ArrayList prunedSpectralFluxes = new ArrayList(); - for (int i = 0; i < thresholds.size(); i++) { - float flux = spectralFluxes.get(i); - float threshold = thresholds.get(i); - float value = flux >= threshold ? flux - threshold : 0; - prunedSpectralFluxes.add(value); - } - - // condense millisecond-consecutive beats to a single beat - LinkedList peaks = new LinkedList(); - for (int i = 0; i < prunedSpectralFluxes.size() - 1; i++) { - float flux = prunedSpectralFluxes.get(i); - float nextflux = prunedSpectralFluxes.get(i + 1); - float value = flux > nextflux ? flux : 0; - peaks.add(value); - } - - return peaks; - } - } - - private static class ProcessingFunctions { - /** - * Calculates a time-energy map from a list of peaks. - * - * @param peaks an ordered list of peaks in an audio file. - * @return A time-energy map. - */ - public static LinkedHashMap convertToTimeEnergyMap(LinkedList peaks) { - // Convert to time - energy map - LinkedHashMap timeEnergyMap = new LinkedHashMap(); - for (int i = 0; i < peaks.size(); i++) { - if (peaks.get(i) > 0) { - long timeInMillis = (long) (((float) i * (1024f / 44100f)) * 1000f); - timeEnergyMap.put(timeInMillis, peaks.get(i)); - } - } - return timeEnergyMap; - } - - /** - * Normalizes all values in this hash map to [0, 1]. Does not normalize - * keys. - * - * @param map the map to normalize. This map is not modified. - * @return The normalized map. - */ - public static LinkedHashMap normalizeValues(final LinkedHashMap map) { - // normalize values to range [0, 1] - LinkedHashMap newMap = new LinkedHashMap(); - - // find max value - float max = 0; - for (Float f : map.values()) - if (f > max) - max = f; - - // divide all values by max value - float value; - for (Long l : map.keySet()) { - value = map.get(l); - value /= max; - newMap.put(l, value); - } - - return newMap; - } - - /** - * Converts a time energy map to a LinkedList of Beat objects. Convenience function. - * - * @param timeEnergyMap ordered time-energy map - * @return a LinkedList of Beat objects in the same ordering as the parameter map by key. - */ - public static Beat[] convertToBeatArray(LinkedHashMap timeEnergyMap) { - Iterator iterator = timeEnergyMap.keySet().iterator(); - - Beat[] beats = new Beat[timeEnergyMap.size()]; - for (int i = 0; i < beats.length; i++) { - long time = iterator.next(); - beats[i] = new Beat(time, timeEnergyMap.get(time)); - } - - return beats; - } - } - - public static enum AudioType {MP3} - - public static enum DetectorSensitivity { - HIGH(1.0f), - MIDDLING(1.4f), - LOW(1.7f); - - float value; - - DetectorSensitivity(float value) { - this.value = value; - } - } - - /** - * Perform beat detection on the provided audio data. This method will block until analysis has - * completed, which can take a while depending on the amount of audio to be analyzed and the - * capabilities of the hardware. - * - * @param decoder A Decoder initialized with the audio data to do beat detection on. - * @param sensitivity How sensitive the detector will be. High sensitivities will catch subtler beats - * but will increase false positives. Lower sensitivities will detect fewer beats - * but with greater accuracy. - * @return A time-ordered LinkedList of Beat objects. - * @throws IOException on read error. - * @see v4lk.lwbd.util.Beat - */ - public static Beat[] detectBeats(Decoder decoder, DetectorSensitivity sensitivity) throws IOException { - // do beat detection - LinkedList spectralFluxes = AudioFunctions.calculateSpectralFluxes(decoder); - LinkedList peaks = AudioFunctions.detectPeaks(spectralFluxes, sensitivity.value); - // do some data transformation - LinkedHashMap timeEnergyMap = ProcessingFunctions.convertToTimeEnergyMap(peaks); - timeEnergyMap = ProcessingFunctions.normalizeValues(timeEnergyMap); - - return ProcessingFunctions.convertToBeatArray(timeEnergyMap); - } - - /** - * Perform beat detection on the provided audio data. This method will block until analysis has - * completed, which can take a while depending on the amount of audio to be analyzed and the - * capabilities of the hardware. - * - * @param decoder A Decoder initialized with the audio data to do beat detection on. - * @return A time-ordered LinkedList of Beat objects. - * @throws IOException on read error. - * @see v4lk.lwbd.util.Beat - */ - public static Beat[] detectBeats(Decoder decoder) throws IOException { - return detectBeats(decoder, DetectorSensitivity.MIDDLING); - } - - /** - * Perform beat detection on the provided audio data. This method will block until analysis has - * completed, which can take a while depending on the amount of audio to be analyzed and the - * capabilities of the hardware. - * This overload will use this platform's default decoder for the provided audio type. - * - * @param audio File of encoded audio data corresponding to one of the types enumerated in AudioType. - * @param type An AudioType indicating the format of the audio. - * @param sensitivity How sensitive the detector will be. High sensitivities will catch subtler beats - * but will increase false positives. Lower sensitivities will detect fewer beats - * but with greater accuracy. - * @return A time-ordered LinkedList of Beat objects. - * @throws IOException on read error. - * @see v4lk.lwbd.BeatDetector.AudioType - * @see v4lk.lwbd.util.Beat - */ - public static Beat[] detectBeats(File audio, AudioType type, DetectorSensitivity sensitivity) throws IOException { - return detectBeats(new FileInputStream(audio), type, sensitivity); - } - - /** - * Perform beat detection on the provided audio data. This method will block until analysis has - * completed, which can take a while depending on the amount of audio to be analyzed and the - * capabilities of the hardware. - * This overload will use this platform's default decoder for the provided audio type. - * - * @param audio File of encoded audio data corresponding to one of the types enumerated in AudioType. - * @param type An AudioType indicating the format of the audio. - * @return A time-ordered LinkedList of Beat objects. - * @throws IOException on read error. - * @see v4lk.lwbd.BeatDetector.AudioType - * @see v4lk.lwbd.util.Beat - */ - public static Beat[] detectBeats(File audio, AudioType type) throws IOException { - return detectBeats(new FileInputStream(audio), type, DetectorSensitivity.MIDDLING); - } - - /** - * Perform beat detection on the provided audio data. This method will block until analysis has - * completed, which can take a while depending on the amount of audio to be analyzed and the - * capabilities of the hardware. - * This overload will use this platform's default decoder for the provided audio type. - * - * @param audio InputStream of encoded audio data corresponding to one of the types enumerated in AudioType. - * @param type An AudioType indicating the format of the audio. - * @param sensitivity How sensitive the detector will be. High sensitivities will catch subtler beats - * but will increase false positives. Lower sensitivities will detect fewer beats - * but with greater accuracy. - * @return A time-ordered LinkedList of Beat objects. - * @throws IOException on read error. - * @see v4lk.lwbd.BeatDetector.AudioType - * @see v4lk.lwbd.util.Beat - */ - public static Beat[] detectBeats(InputStream audio, AudioType type, DetectorSensitivity sensitivity) throws IOException { - Decoder decoder; - - switch (type) { - case MP3: - decoder = new JLayerMp3Decoder(audio); - break; - default: - decoder = new JLayerMp3Decoder(audio); - } - - return detectBeats(decoder, sensitivity); - } - - /** - * Perform beat detection on the provided audio data. This method will block until analysis has - * completed, which can take a while depending on the amount of audio to be analyzed and the - * capabilities of the hardware. - * This overload will use this platform's default decoder for the provided audio type. - * - * @param audio InputStream of encoded audio data corresponding to one of the types enumerated in AudioType. - * @param type An AudioType indicating the format of the audio. - * @return A time-ordered LinkedList of Beat objects. - * @throws java.io.IOException on read error. - * @see v4lk.lwbd.BeatDetector.AudioType - * @see v4lk.lwbd.util.Beat - */ - public static Beat[] detectBeats(InputStream audio, AudioType type) throws IOException { - return detectBeats(audio, type, DetectorSensitivity.MIDDLING); - } - -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/Examples.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/Examples.java deleted file mode 100644 index 28cafa5d12d948636fae62b1b5ebf0b8db351539..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/Examples.java +++ /dev/null @@ -1,48 +0,0 @@ -package v4lk.lwbd; - -import v4lk.lwbd.BeatDetector.AudioType; -import v4lk.lwbd.BeatDetector.DetectorSensitivity; -import v4lk.lwbd.decoders.Decoder; -import v4lk.lwbd.decoders.JLayerMp3Decoder; -import v4lk.lwbd.util.Beat; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -/** - * Usage examples - */ -public class Examples { - - public static void main(String[] args) throws IOException { - // Detect beats from an MP3 file using the platform's default MP3 decoder - { - File audioFile = new File("/path/to/audiofile.mp3"); - Beat[] beats = BeatDetector.detectBeats(audioFile, AudioType.MP3); - } - - // Detect beats from an MP3 file, using a specific decoder - { - File audioFile = new File("/path/to/audiofile.mp3"); - FileInputStream stream = new FileInputStream(audioFile); - Decoder decoder = new JLayerMp3Decoder(stream); - Beat[] beats = BeatDetector.detectBeats(decoder); - } - - // Detect beats from an MP3 file, specifying detector sensitivity - { - File audioFile = new File("/path/to/audiofile.mp3"); - Beat[] beats = BeatDetector.detectBeats(audioFile, AudioType.MP3, DetectorSensitivity.HIGH); - } - - // Detect beats from an MP3 file, using a specific decoder and specifying detector sensitivity - { - File audioFile = new File("/path/to/audiofile.mp3"); - FileInputStream stream = new FileInputStream(audioFile); - Decoder decoder = new JLayerMp3Decoder(stream); - Beat[] beats = BeatDetector.detectBeats(decoder, DetectorSensitivity.LOW); - } - } - -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/Decoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/Decoder.java deleted file mode 100644 index d68650112c203540e061943a2b00d106b3a86e86..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/Decoder.java +++ /dev/null @@ -1,19 +0,0 @@ -package v4lk.lwbd.decoders; - -import java.io.IOException; - -/** - * Defines the interface of a lwbd-compatible Decoder. - */ -public interface Decoder { - - /** - * Get the next frame of audio data that this decoder has decoded. - * - * @return a short[] with 1024 non-normalized mono PCM samples, or null - * if there is no more data available. - * @throws java.io.IOException on read error. - */ - public short[] nextMonoFrame() throws IOException; - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/JFlacDecoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/JFlacDecoder.java deleted file mode 100644 index f0ece887b27a7dbc0a8e424f7a551aae059db1a4..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/JFlacDecoder.java +++ /dev/null @@ -1,133 +0,0 @@ -package v4lk.lwbd.decoders; - -import v4lk.lwbd.decoders.processing.jflac.FLACDecoder; -import v4lk.lwbd.decoders.processing.jflac.frame.Frame; -import v4lk.lwbd.decoders.processing.jflac.metadata.Metadata; -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; - -import java.io.IOException; -import java.io.InputStream; -import java.util.LinkedList; -import java.util.Queue; - -/** - * FLAC decoder for lwbd. Backed by jFLAC. - * - * @author Quentin Young - */ -public class JFlacDecoder implements Decoder { - - /** - * jFlac decoder class - */ - private FLACDecoder decoder; - /** - * Information about the FLAC data stream the decoder - * is working on. - */ - private StreamInfo info; - /** - * decoded mono sample buffer - */ - private Queue buffer; - - /** - * Initialize this decoder - * - * @param stream binary FLAC input stream - * @throws IOException on decoder error - */ - public JFlacDecoder(InputStream stream) throws IOException { - // setup decoder - decoder = new FLACDecoder(stream); - Metadata[] d = decoder.readMetadata(); - info = (StreamInfo) d[0]; - - // check support - if (info.getChannels() > 2) - throw new IOException("Number of channels > 2; unsupported"); - if (info.getSampleRate() != 44100) - throw new IOException("Sample rate is not 44.1kHz; unsupported."); - - // initialize buffer - buffer = new LinkedList(); - } - - @Override - public short[] nextMonoFrame() throws IOException { - - if (buffer.size() < 1024) - fillBuffer(); - - if (buffer.size() < 1024) - return null; - - // grab samples from the buffer and return them - short[] frame = new short[1024]; - for (int i = 0; i < frame.length; i++) - frame[i] = buffer.poll(); - - System.out.println(frame.length); - - return frame; - } - - /** - * Fills buffer with mono PCM samples as much as it can. Best-effort. - * - * @throws IOException on decoder error - */ - private void fillBuffer() throws IOException { - - while (buffer.size() < 1024) { - try { - // get & decode a frame - Frame encodedFrame = decoder.readNextFrame(); - ByteData d = decoder.decodeFrame(encodedFrame, null); - - /* ByteData has a larger capacity than the data it contains. getLen() - * doesn't return the capacity, it returns the number of valid elements - * in the collection. The rest of the values are initialized to 0, so - * you can't do a foreach because you'll read out all those as well. */ - byte[] untrimmedByteFrame = d.getData(); - byte[] byteFrame = new byte[d.getLen()]; - for (int i = 0; i < d.getLen(); i++) - byteFrame[i] = untrimmedByteFrame[i]; - - // convert byte[] to short[] - short[] shortFrame = new short[byteFrame.length]; - for (int i = 0; i < shortFrame.length; i++) - shortFrame[i] = (short) byteFrame[i]; - - // merge channels to mono if we're working with stereo - if (info.getChannels() == 2) - shortFrame = mergeChannels(shortFrame); - - // add samples to buffer - for (short s : shortFrame) - buffer.add(s); - - } catch (NullPointerException e) { - return; - } - } - } - - /** - * Merges stereo audio by averaging channels together - * - * @param samples interlaced stereo sample buffer - * @return mono sample buffer - */ - private short[] mergeChannels(short[] samples) { - - int l = (int) Math.floor(samples.length / 2); - short[] merged = new short[l]; - - for (int i = 0; i < l; i++) - merged[i] = (short) ((samples[i * 2] + samples[i * 2 + 1]) / 2f); - - return merged; - } -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/JLayerMp3Decoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/JLayerMp3Decoder.java deleted file mode 100644 index 9fbea8f03fa43be88089ce17ba12ca5b5a04e5fe..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/JLayerMp3Decoder.java +++ /dev/null @@ -1,108 +0,0 @@ -package v4lk.lwbd.decoders; - -import v4lk.lwbd.decoders.processing.jlayer.*; - -import java.io.IOException; -import java.io.InputStream; -import java.util.LinkedList; -import java.util.Queue; - -/** - * MP3 decoder for lwbd. Backed by JLayer. - * - * @author Quentin Young - */ -public class JLayerMp3Decoder implements v4lk.lwbd.decoders.Decoder { - - /** - * JLayer decoder class - */ - private v4lk.lwbd.decoders.processing.jlayer.Decoder decoder; - /** - * MP3 input stream - */ - private Bitstream bitstream; - /** - * decoded mono sample buffer - */ - private Queue buffer; - - /** - * Initialize this decoder - * - * @param stream binary MP3 input stream - * @throws IOException on decoder error - */ - public JLayerMp3Decoder(InputStream stream) { - bitstream = new Bitstream(stream); - decoder = new v4lk.lwbd.decoders.processing.jlayer.Decoder(); - buffer = new LinkedList(); - } - - @Override - public short[] nextMonoFrame() throws IOException { - - if (buffer.size() < 1024) - fillBuffer(); - - if (buffer.size() < 1024) - return null; - - short[] frame = new short[1024]; - - for (int i = 0; i < frame.length; i++) - frame[i] = buffer.poll(); - - return frame; - } - - /** - * Fills buffer with mono PCM samples as much as it can. Best-effort. - * - * @throws IOException on decoder error - */ - private void fillBuffer() throws IOException { - - while (buffer.size() < 1024) { - try { - // get & decode a frame - Header h = bitstream.readFrame(); - if (h == null) // EoF, return - return; - SampleBuffer samplebuffer = (SampleBuffer) decoder.decodeFrame(h, bitstream); - short[] samples = samplebuffer.getBuffer(); - - // merge channels to mono if we're working with stereo - if (decoder.getOutputChannels() == 2) - samples = mergeChannels(samples); - - // add samples to buffer - for (short s : samples) - buffer.add(s); - } catch (DecoderException e) { - throw new IOException("Decoder error", e); - } catch (BitstreamException e) { - throw new IOException("Decoder error", e); - } finally { - bitstream.closeFrame(); - } - } - } - - /** - * Merges stereo audio by averaging channels together - * - * @param samples interlaced stereo sample buffer - * @return mono sample buffer - */ - private short[] mergeChannels(short[] samples) { - - int l = (int) Math.floor(samples.length / 2); - short[] merged = new short[l]; - - for (int i = 0; i < l; i++) - merged[i] = (short) ((samples[i * 2] + samples[i * 2 + 1]) / 2f); - - return merged; - } -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/fft/FFT.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/fft/FFT.java deleted file mode 100644 index 345f0616f5fcbdf7f0d16de61488195c06115659..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/fft/FFT.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (c) 2007 - 2008 by Damien Di Fede - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -package v4lk.lwbd.decoders.processing.fft; - - -/** - * FFT stands for Fast Fourier Transform. It is an efficient way to calculate the Complex - * Discrete Fourier Transform. There is not much to say about this class other than the fact - * that when you want to analyze the spectrum of an audio buffer you will almost always use - * this class. One restriction of this class is that the audio buffers you want to analyze - * must have a length that is a power of two. If you try to construct an FFT with a - * timeSize that is not a power of two, an IllegalArgumentException will be - * thrown. - * - * @author Damien Di Fede - * @see FourierTransform - * @see The Fast Fourier Transform - */ -public class FFT extends FourierTransform { - /** - * Constructs an FFT that will accept sample buffers that are - * timeSize long and have been recorded with a sample rate of - * sampleRate. timeSize must be a - * power of two. This will throw an exception if it is not. - * - * @param timeSize the length of the sample buffers you will be analyzing - * @param sampleRate the sample rate of the audio you will be analyzing - */ - public FFT(int timeSize, float sampleRate) { - super(timeSize, sampleRate); - if ((timeSize & (timeSize - 1)) != 0) - throw new IllegalArgumentException( - "FFT: timeSize must be a power of two."); - buildReverseTable(); - buildTrigTables(); - } - - protected void allocateArrays() { - spectrum = new float[timeSize / 2 + 1]; - real = new float[timeSize]; - imag = new float[timeSize]; - } - - public void scaleBand(int i, float s) { - if (s < 0) { - throw new IllegalArgumentException("Can't scale a frequency band by a negative value."); - } - if (spectrum[i] != 0) { - real[i] /= spectrum[i]; - imag[i] /= spectrum[i]; - spectrum[i] *= s; - real[i] *= spectrum[i]; - imag[i] *= spectrum[i]; - } - if (i != 0 && i != timeSize / 2) { - real[timeSize - i] = real[i]; - imag[timeSize - i] = -imag[i]; - } - } - - public void setBand(int i, float a) { - if (a < 0) { - throw new IllegalArgumentException("Can't set a frequency band to a negative value."); - } - if (real[i] == 0 && imag[i] == 0) { - real[i] = a; - spectrum[i] = a; - } else { - real[i] /= spectrum[i]; - imag[i] /= spectrum[i]; - spectrum[i] = a; - real[i] *= spectrum[i]; - imag[i] *= spectrum[i]; - } - if (i != 0 && i != timeSize / 2) { - real[timeSize - i] = real[i]; - imag[timeSize - i] = -imag[i]; - } - } - - // performs an in-place fft on the data in the real and imag arrays - // bit reversing is not necessary as the data will already be bit reversed - private void fft() { - for (int halfSize = 1; halfSize < real.length; halfSize *= 2) { - // float k = -(float)Math.PI/halfSize; - // phase shift step - // float phaseShiftStepR = (float)Math.cos(k); - // float phaseShiftStepI = (float)Math.sin(k); - // using lookup table - float phaseShiftStepR = cos(halfSize); - float phaseShiftStepI = sin(halfSize); - // current phase shift - float currentPhaseShiftR = 1.0f; - float currentPhaseShiftI = 0.0f; - for (int fftStep = 0; fftStep < halfSize; fftStep++) { - for (int i = fftStep; i < real.length; i += 2 * halfSize) { - int off = i + halfSize; - float tr = (currentPhaseShiftR * real[off]) - (currentPhaseShiftI * imag[off]); - float ti = (currentPhaseShiftR * imag[off]) + (currentPhaseShiftI * real[off]); - real[off] = real[i] - tr; - imag[off] = imag[i] - ti; - real[i] += tr; - imag[i] += ti; - } - float tmpR = currentPhaseShiftR; - currentPhaseShiftR = (tmpR * phaseShiftStepR) - (currentPhaseShiftI * phaseShiftStepI); - currentPhaseShiftI = (tmpR * phaseShiftStepI) + (currentPhaseShiftI * phaseShiftStepR); - } - } - } - - public void forward(float[] buffer) { - if (buffer.length != timeSize) { - throw new IllegalArgumentException("FFT.forward: The length of the passed sample buffer must be equal to timeSize()."); - } - doWindow(buffer); - // copy samples to real/imag in bit-reversed order - bitReverseSamples(buffer); - // perform the fft - fft(); - // fill the spectrum buffer with amplitudes - fillSpectrum(); - } - - /** - * Performs a forward transform on the passed buffers. - * - * @param buffReal the real part of the time domain signal to transform - * @param buffImag the imaginary part of the time domain signal to transform - */ - public void forward(float[] buffReal, float[] buffImag) { - if (buffReal.length != timeSize || buffImag.length != timeSize) { - throw new IllegalArgumentException("FFT.forward: The length of the passed buffers must be equal to timeSize()."); - } - setComplex(buffReal, buffImag); - bitReverseComplex(); - fft(); - fillSpectrum(); - } - - public void inverse(float[] buffer) { - if (buffer.length > real.length) { - throw new IllegalArgumentException("FFT.inverse: the passed array's length must equal FFT.timeSize()."); - } - // conjugate - for (int i = 0; i < timeSize; i++) { - imag[i] *= -1; - } - bitReverseComplex(); - fft(); - // copy the result in real into buffer, scaling as we do - for (int i = 0; i < buffer.length; i++) { - buffer[i] = real[i] / real.length; - } - } - - private int[] reverse; - - private void buildReverseTable() { - int N = timeSize; - reverse = new int[N]; - - // set up the bit reversing table - reverse[0] = 0; - for (int limit = 1, bit = N / 2; limit < N; limit <<= 1, bit >>= 1) - for (int i = 0; i < limit; i++) - reverse[i + limit] = reverse[i] + bit; - } - - // copies the values in the samples array into the real array - // in bit reversed order. the imag array is filled with zeros. - private void bitReverseSamples(float[] samples) { - for (int i = 0; i < samples.length; i++) { - real[i] = samples[reverse[i]]; - imag[i] = 0.0f; - } - } - - // bit reverse real[] and imag[] - private void bitReverseComplex() { - float[] revReal = new float[real.length]; - float[] revImag = new float[imag.length]; - for (int i = 0; i < real.length; i++) { - revReal[i] = real[reverse[i]]; - revImag[i] = imag[reverse[i]]; - } - real = revReal; - imag = revImag; - } - - // lookup tables - - private float[] sinlookup; - private float[] coslookup; - - private float sin(int i) { - return sinlookup[i]; - } - - private float cos(int i) { - return coslookup[i]; - } - - private void buildTrigTables() { - int N = timeSize; - sinlookup = new float[N]; - coslookup = new float[N]; - for (int i = 0; i < N; i++) { - sinlookup[i] = (float) Math.sin(-(float) Math.PI / i); - coslookup[i] = (float) Math.cos(-(float) Math.PI / i); - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/fft/FourierTransform.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/fft/FourierTransform.java deleted file mode 100644 index a3a2cd60dbf9421f6c2dc95853e5d0f47ae78141..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/fft/FourierTransform.java +++ /dev/null @@ -1,594 +0,0 @@ -/* - * Copyright (c) 2007 - 2008 by Damien Di Fede - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -package v4lk.lwbd.decoders.processing.fft; - - -/** - * A Fourier Transform is an algorithm that transforms a signal in the time - * domain, such as a sample buffer, into a signal in the frequency domain, often - * called the spectrum. The spectrum does not represent individual frequencies, - * but actually represents frequency bands centered on particular frequencies. - * The center frequency of each band is usually expressed as a fraction of the - * sampling rate of the time domain signal and is equal to the index of the - * frequency band divided by the total number of bands. The total number of - * frequency bands is usually equal to the length of the time domain signal, but - * access is only provided to frequency bands with indices less than half the - * length, because they correspond to frequencies below the Nyquist frequency. - * In other words, given a signal of length N, there will be - * N/2 frequency bands in the spectrum. - *

- * As an example, if you construct a FourierTransform with a - * timeSize of 1024 and and a sampleRate of 44100 - * Hz, then the spectrum will contain values for frequencies below 22010 Hz, - * which is the Nyquist frequency (half the sample rate). If you ask for the - * value of band number 5, this will correspond to a frequency band centered on - * 5/1024 * 44100 = 0.0048828125 * 44100 = 215 Hz. The width of - * that frequency band is equal to 2/1024, expressed as a - * fraction of the total bandwidth of the spectrum. The total bandwith of the - * spectrum is equal to the Nyquist frequency, which in this case is 22100, so - * the bandwidth is equal to about 50 Hz. It is not necessary for you to - * remember all of these relationships, though it is good to be aware of them. - * The function getFreq() allows you to query the spectrum with a - * frequency in Hz and the function getBandWidth() will return - * the bandwidth in Hz of each frequency band in the spectrum. - *

- * Usage - *

- * A typical usage of a FourierTransform is to analyze a signal so that the - * frequency spectrum may be represented in some way, typically with vertical - * lines. You could do this in Processing with the following code, where - * audio is an AudioSource and fft is an FFT (one - * of the derived classes of FourierTransform). - * - *

- * fft.forward(audio.left);
- * for (int i = 0; i < fft.specSize(); i++)
- * {
- *   // draw the line for frequency band i, scaling it by 4 so we can see it a bit better
- *   line(i, height, i, height - fft.getBand(i) * 4);
- * }
- * 
- * - * Windowing - *

- * Windowing is the process of shaping the audio samples before transforming them - * to the frequency domain. If you call the window() function - * with an appropriate constant, such as FourierTransform.HAMMING, the sample - * buffers passed to the object for analysis will be shaped by the current - * window before being transformed. The result of using a window is to reduce - * the noise in the spectrum somewhat. - *

- * Averages - *

- * FourierTransform also has functions that allow you to request the creation of - * an average spectrum. An average spectrum is simply a spectrum with fewer - * bands than the full spectrum where each average band is the average of the - * amplitudes of some number of contiguous frequency bands in the full spectrum. - *

- * linAverages() allows you to specify the number of averages - * that you want and will group frequency bands into groups of equal number. So - * if you have a spectrum with 512 frequency bands and you ask for 64 averages, - * each average will span 8 bands of the full spectrum. - *

- * logAverages() will group frequency bands by octave and allows - * you to specify the size of the smallest octave to use (in Hz) and also how - * many bands to split each octave into. So you might ask for the smallest - * octave to be 60 Hz and to split each octave into two bands. The result is - * that the bandwidth of each average is different. One frequency is an octave - * above another when it's frequency is twice that of the lower frequency. So, - * 120 Hz is an octave above 60 Hz, 240 Hz is an octave above 120 Hz, and so on. - * When octaves are split, they are split based on Hz, so if you split the - * octave 60-120 Hz in half, you will get 60-90Hz and 90-120Hz. You can see how - * these bandwidths increase as your octave sizes grow. For instance, the last - * octave will always span sampleRate/4 - sampleRate/2, which in - * the case of audio sampled at 44100 Hz is 11025-22010 Hz. These - * logarithmically spaced averages are usually much more useful than the full - * spectrum or the linearly spaced averages because they map more directly to - * how humans perceive sound. - *

- * calcAvg() allows you to specify the frequency band you want an - * average calculated for. You might ask for 60-500Hz and this function will - * group together the bands from the full spectrum that fall into that range and - * average their amplitudes for you. - *

- * If you don't want any averages calculated, then you can call - * noAverages(). This will not impact your ability to use - * calcAvg(), it will merely prevent the object from calculating - * an average array every time you use forward(). - *

- * Inverse Transform - *

- * FourierTransform also supports taking the inverse transform of a spectrum. - * This means that a frequency spectrum will be transformed into a time domain - * signal and placed in a provided sample buffer. The length of the time domain - * signal will be timeSize() long. The set and - * scale functions allow you the ability to shape the spectrum - * already stored in the object before taking the inverse transform. You might - * use these to filter frequencies in a spectrum or modify it in some other way. - * - * @author Damien Di Fede - * @see The Discrete Fourier Transform - */ -public abstract class FourierTransform { - /** - * A constant indicating no window should be used on sample buffers. - */ - public static final int NONE = 0; - /** - * A constant indicating a Hamming window should be used on sample buffers. - */ - public static final int HAMMING = 1; - protected static final int LINAVG = 2; - protected static final int LOGAVG = 3; - protected static final int NOAVG = 4; - protected static final float TWO_PI = (float) (2 * Math.PI); - protected int timeSize; - protected int sampleRate; - protected float bandWidth; - protected int whichWindow; - protected float[] real; - protected float[] imag; - protected float[] spectrum; - protected float[] averages; - protected int whichAverage; - protected int octaves; - protected int avgPerOctave; - - /** - * Construct a FourierTransform that will analyze sample buffers that are - * ts samples long and contain samples with a sr - * sample rate. - * - * @param ts the length of the buffers that will be analyzed - * @param sr the sample rate of the samples that will be analyzed - */ - FourierTransform(int ts, float sr) { - timeSize = ts; - sampleRate = (int) sr; - bandWidth = (2f / timeSize) * ((float) sampleRate / 2f); - noAverages(); - allocateArrays(); - whichWindow = NONE; - } - - // allocating real, imag, and spectrum are the responsibility of derived - // classes - // because the size of the arrays will depend on the implementation being used - // this enforces that responsibility - protected abstract void allocateArrays(); - - protected void setComplex(float[] r, float[] i) { - if (real.length != r.length && imag.length != i.length) { - throw new IllegalArgumentException("This won't work"); - } else { - System.arraycopy(r, 0, real, 0, r.length); - System.arraycopy(i, 0, imag, 0, i.length); - } - } - - // fill the spectrum array with the amps of the data in real and imag - // used so that this class can handle creating the average array - // and also do spectrum shaping if necessary - protected void fillSpectrum() { - for (int i = 0; i < spectrum.length; i++) { - spectrum[i] = (float) Math.sqrt(real[i] * real[i] + imag[i] * imag[i]); - } - - if (whichAverage == LINAVG) { - int avgWidth = (int) spectrum.length / averages.length; - for (int i = 0; i < averages.length; i++) { - float avg = 0; - int j; - for (j = 0; j < avgWidth; j++) { - int offset = j + i * avgWidth; - if (offset < spectrum.length) { - avg += spectrum[offset]; - } else { - break; - } - } - avg /= j + 1; - averages[i] = avg; - } - } else if (whichAverage == LOGAVG) { - for (int i = 0; i < octaves; i++) { - float lowFreq, hiFreq, freqStep; - if (i == 0) { - lowFreq = 0; - } else { - lowFreq = (sampleRate / 2) / (float) Math.pow(2, octaves - i); - } - hiFreq = (sampleRate / 2) / (float) Math.pow(2, octaves - i - 1); - freqStep = (hiFreq - lowFreq) / avgPerOctave; - float f = lowFreq; - for (int j = 0; j < avgPerOctave; j++) { - int offset = j + i * avgPerOctave; - averages[offset] = calcAvg(f, f + freqStep); - f += freqStep; - } - } - } - } - - /** - * Sets the object to not compute averages. - */ - public void noAverages() { - averages = new float[0]; - whichAverage = NOAVG; - } - - /** - * Sets the number of averages used when computing the spectrum and spaces the - * averages in a linear manner. In other words, each average band will be - * specSize() / numAvg bands wide. - * - * @param numAvg how many averages to compute - */ - public void linAverages(int numAvg) { - if (numAvg > spectrum.length / 2) { - throw new IllegalArgumentException("The number of averages for this transform can be at most " + spectrum.length / 2 + "."); - } else { - averages = new float[numAvg]; - } - whichAverage = LINAVG; - } - - /** - * Sets the number of averages used when computing the spectrum based on the - * minimum bandwidth for an octave and the number of bands per octave. For - * example, with audio that has a sample rate of 44100 Hz, - * logAverages(11, 1) will result in 12 averages, each - * corresponding to an octave, the first spanning 0 to 11 Hz. To ensure that - * each octave band is a full octave, the number of octaves is computed by - * dividing the Nyquist frequency by two, and then the result of that by two, - * and so on. This means that the actual bandwidth of the lowest octave may - * not be exactly the value specified. - * - * @param minBandwidth the minimum bandwidth used for an octave - * @param bandsPerOctave how many bands to split each octave into - */ - public void logAverages(int minBandwidth, int bandsPerOctave) { - float nyq = (float) sampleRate / 2f; - octaves = 1; - while ((nyq /= 2) > minBandwidth) { - octaves++; - } - avgPerOctave = bandsPerOctave; - averages = new float[octaves * bandsPerOctave]; - whichAverage = LOGAVG; - } - - /** - * Sets the window to use on the samples before taking the forward transform. - * If an invalid window is asked for, an error will be reported and the - * current window will not be changed. - * - * @param which FourierTransform.HAMMING or FourierTransform.NONE - */ - public void window(int which) { - if (which < 0 || which > 1) { - throw new IllegalArgumentException("Invalid window type."); - } else { - whichWindow = which; - } - } - - protected void doWindow(float[] samples) { - switch (whichWindow) { - case HAMMING: - hamming(samples); - break; - } - } - - // windows the data in samples with a Hamming window - protected void hamming(float[] samples) { - for (int i = 0; i < samples.length; i++) { - samples[i] *= (0.54f - 0.46f * Math.cos(TWO_PI * i / (samples.length - 1))); - } - } - - /** - * Returns the length of the time domain signal expected by this transform. - * - * @return the length of the time domain signal expected by this transform - */ - public int timeSize() { - return timeSize; - } - - /** - * Returns the size of the spectrum created by this transform. In other words, - * the number of frequency bands produced by this transform. This is typically - * equal to timeSize()/2 + 1, see above for an explanation. - * - * @return the size of the spectrum - */ - public int specSize() { - return spectrum.length; - } - - /** - * Returns the amplitude of the requested frequency band. - * - * @param i the index of a frequency band - * @return the amplitude of the requested frequency band - */ - public float getBand(int i) { - if (i < 0) i = 0; - if (i > spectrum.length - 1) i = spectrum.length - 1; - return spectrum[i]; - } - - /** - * Returns the width of each frequency band in the spectrum (in Hz). It should - * be noted that the bandwidth of the first and last frequency bands is half - * as large as the value returned by this function. - * - * @return the width of each frequency band in Hz. - */ - public float getBandWidth() { - return bandWidth; - } - - /** - * Sets the amplitude of the ith frequency band to - * a. You can use this to shape the spectrum before using - * inverse(). - * - * @param i the frequency band to modify - * @param a the new amplitude - */ - public abstract void setBand(int i, float a); - - /** - * Scales the amplitude of the ith frequency band - * by s. You can use this to shape the spectrum before using - * inverse(). - * - * @param i the frequency band to modify - * @param s the scaling factor - */ - public abstract void scaleBand(int i, float s); - - /** - * Returns the index of the frequency band that contains the requested - * frequency. - * - * @param freq the frequency you want the index for (in Hz) - * @return the index of the frequency band that contains freq - */ - public int freqToIndex(float freq) { - // special case: freq is lower than the bandwidth of spectrum[0] - if (freq < getBandWidth() / 2) return 0; - // special case: freq is within the bandwidth of spectrum[spectrum.length - 1] - if (freq > sampleRate / 2 - getBandWidth() / 2) return spectrum.length - 1; - // all other cases - float fraction = freq / (float) sampleRate; - int i = Math.round(timeSize * fraction); - return i; - } - - /** - * Returns the middle frequency of the ith band. - * - * @param i the index of the band you want to middle frequency of - */ - public float indexToFreq(int i) { - float bw = getBandWidth(); - // special case: the width of the first bin is half that of the others. - // so the center frequency is a quarter of the way. - if (i == 0) return bw * 0.25f; - // special case: the width of the last bin is half that of the others. - if (i == spectrum.length - 1) { - float lastBinBeginFreq = (sampleRate / 2) - (bw / 2); - float binHalfWidth = bw * 0.25f; - return lastBinBeginFreq + binHalfWidth; - } - // the center frequency of the ith band is simply i*bw - // because the first band is half the width of all others. - // treating it as if it wasn't offsets us to the middle - // of the band. - return i * bw; - } - - /** - * Returns the center frequency of the ith average band. - * - * @param i which average band you want the center frequency of. - */ - public float getAverageCenterFrequency(int i) { - if (whichAverage == LINAVG) { - // an average represents a certain number of bands in the spectrum - int avgWidth = (int) spectrum.length / averages.length; - // the "center" bin of the average, this is fudgy. - int centerBinIndex = i * avgWidth + avgWidth / 2; - return indexToFreq(centerBinIndex); - - } else if (whichAverage == LOGAVG) { - // which "octave" is this index in? - int octave = i / avgPerOctave; - // which band within that octave is this? - int offset = i % avgPerOctave; - float lowFreq, hiFreq, freqStep; - // figure out the low frequency for this octave - if (octave == 0) { - lowFreq = 0; - } else { - lowFreq = (sampleRate / 2) / (float) Math.pow(2, octaves - octave); - } - // and the high frequency for this octave - hiFreq = (sampleRate / 2) / (float) Math.pow(2, octaves - octave - 1); - // each average band within the octave will be this big - freqStep = (hiFreq - lowFreq) / avgPerOctave; - // figure out the low frequency of the band we care about - float f = lowFreq + offset * freqStep; - // the center of the band will be the low plus half the width - return f + freqStep / 2; - } - - return 0; - } - - - /** - * Gets the amplitude of the requested frequency in the spectrum. - * - * @param freq the frequency in Hz - * @return the amplitude of the frequency in the spectrum - */ - public float getFreq(float freq) { - return getBand(freqToIndex(freq)); - } - - /** - * Sets the amplitude of the requested frequency in the spectrum to - * a. - * - * @param freq the frequency in Hz - * @param a the new amplitude - */ - public void setFreq(float freq, float a) { - setBand(freqToIndex(freq), a); - } - - /** - * Scales the amplitude of the requested frequency by a. - * - * @param freq the frequency in Hz - * @param s the scaling factor - */ - public void scaleFreq(float freq, float s) { - scaleBand(freqToIndex(freq), s); - } - - /** - * Returns the number of averages currently being calculated. - * - * @return the length of the averages array - */ - public int avgSize() { - return averages.length; - } - - /** - * Gets the value of the ith average. - * - * @param i the average you want the value of - * @return the value of the requested average band - */ - public float getAvg(int i) { - float ret; - if (averages.length > 0) - ret = averages[i]; - else - ret = 0; - return ret; - } - - /** - * Calculate the average amplitude of the frequency band bounded by - * lowFreq and hiFreq, inclusive. - * - * @param lowFreq the lower bound of the band - * @param hiFreq the upper bound of the band - * @return the average of all spectrum values within the bounds - */ - public float calcAvg(float lowFreq, float hiFreq) { - int lowBound = freqToIndex(lowFreq); - int hiBound = freqToIndex(hiFreq); - float avg = 0; - for (int i = lowBound; i <= hiBound; i++) { - avg += spectrum[i]; - } - avg /= (hiBound - lowBound + 1); - return avg; - } - - /** - * Performs a forward transform on buffer. - * - * @param buffer the buffer to analyze - */ - public abstract void forward(float[] buffer); - - /** - * Performs a forward transform on values in buffer. - * - * @param buffer the buffer of samples - * @param startAt the index to start at in the buffer. there must be at least timeSize() samples - * between the starting index and the end of the buffer. If there aren't, an - * error will be issued and the operation will not be performed. - */ - public void forward(float[] buffer, int startAt) { - if (buffer.length - startAt < timeSize) { - throw new IllegalArgumentException("FourierTransform.forward: not enough samples in the buffer between " + startAt + " and " + buffer.length + " to perform a transform."); - } - - // copy the section of samples we want to analyze - float[] section = new float[timeSize]; - System.arraycopy(buffer, startAt, section, 0, section.length); - forward(section); - } - - - /** - * Performs an inverse transform of the frequency spectrum and places the - * result in buffer. - * - * @param buffer the buffer to place the result of the inverse transform in - */ - public abstract void inverse(float[] buffer); - - /** - * Performs an inverse transform of the frequency spectrum represented by - * freqReal and freqImag and places the result in buffer. - * - * @param freqReal the real part of the frequency spectrum - * @param freqImag the imaginary part the frequency spectrum - * @param buffer the buffer to place the inverse transform in - */ - public void inverse(float[] freqReal, float[] freqImag, float[] buffer) { - setComplex(freqReal, freqImag); - inverse(buffer); - } - - /** - * @return the spectrum of the last FourierTransform.forward() call. - */ - public float[] getSpectrum() { - return spectrum; - } - - /** - * @return the real part of the last FourierTransform.forward() call. - */ - public float[] getRealPart() { - return real; - } - - /** - * @return the imaginary part of the last FourierTransform.forward() call. - */ - public float[] getImaginaryPart() { - return imag; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/ChannelData.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/ChannelData.java deleted file mode 100644 index 3b508d44be112320887135839b280ef1001f2c96..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/ChannelData.java +++ /dev/null @@ -1,70 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.frame.EntropyPartitionedRiceContents; - -/** - * FLAC channel data. - * This class holds the data for the channels in a FLAC frame. - * @author kc7bfi - */ -public class ChannelData { - /** The output signal. */ - private int[] output; - - /** the risidual signal. */ - private int[] residual; - - /** The Entropy signal. */ - private EntropyPartitionedRiceContents partitionedRiceContents; - - /** - * The default constructor. - * @param size The block size - */ - public ChannelData(final int size) { - output = new int[size]; - residual = new int[size]; - partitionedRiceContents = new EntropyPartitionedRiceContents(); - } - - /** - * @return Returns the output. - */ - public int[] getOutput() { - return output; - } - - /** - * @return Returns the partitionedRiceContents. - */ - public EntropyPartitionedRiceContents getPartitionedRiceContents() { - return partitionedRiceContents; - } - - /** - * @return Returns the residual. - */ - public int[] getResidual() { - return residual; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/Constants.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/Constants.java deleted file mode 100644 index 4b1f87b9a17ab51f47a5b3af6c366a1c2b8295b7..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/Constants.java +++ /dev/null @@ -1,106 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -public class Constants { - - /** - * The maximum number of audio channels. - */ - public static final int MAX_CHANNELS = 8; - - /** - * The maximum frame block size. - */ - public static final int MAX_BLOCK_SIZE = 65535; - - /** - * The maximum Rice partition order permitted by the format. - */ - public static final int MAX_RICE_PARTITION_ORDER = 15; - - /** - * independent channels. - */ - public static final int CHANNEL_ASSIGNMENT_INDEPENDENT = 0; - /** - * left+side stereo. - */ - public static final int CHANNEL_ASSIGNMENT_LEFT_SIDE = 1; - /** - * right+side stereo. - */ - public static final int CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2; - /** - * mid+side stereo. - */ - public static final int CHANNEL_ASSIGNMENT_MID_SIDE = 3; - - /** - * FLAC Stream Sync string. - */ - public static final byte[] STREAM_SYNC_STRING = new byte[]{(byte) 'f', (byte) 'L', (byte) 'a', (byte) 'C'}; - - - /* - boolean format_sample_rate_is_valid(int sample_rate) { - if (sample_rate == 0 - || sample_rate > MAX_SAMPLE_RATE - || (sample_rate >= (1 << 16) && !(sample_rate % 1000 == 0 || sample_rate % 10 == 0))) { - return false; - } else - return true; - } - */ - - /* - * These routines are private to libFLAC - */ - /* - int format_get_max_rice_partition_order(int blocksize, int predictor_order) { - return format_get_max_rice_partition_order_from_blocksize_limited_max_and_predictor_order( - format_get_max_rice_partition_order_from_blocksize(blocksize), - blocksize, - predictor_order); - } - - int format_get_max_rice_partition_order_from_blocksize(int blocksize) { - int max_rice_partition_order = 0; - while ((blocksize & 1) == 0) { - max_rice_partition_order++; - blocksize >>= 1; - } - return Math.min(MAX_RICE_PARTITION_ORDER, max_rice_partition_order); - } - - int format_get_max_rice_partition_order_from_blocksize_limited_max_and_predictor_order( - int limit, - int blocksize, - int predictor_order) { - int max_rice_partition_order = limit; - - while (max_rice_partition_order > 0 && (blocksize >> max_rice_partition_order) <= predictor_order) - max_rice_partition_order--; - - return max_rice_partition_order; - } - */ -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FLACDecoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FLACDecoder.java deleted file mode 100644 index 53158f5f760c3bb16e920f6861b2674f84dc0f42..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FLACDecoder.java +++ /dev/null @@ -1,861 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.frame.*; -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; -import v4lk.lwbd.decoders.processing.jflac.io.RandomFileInputStream; -import v4lk.lwbd.decoders.processing.jflac.metadata.*; -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; -import v4lk.lwbd.decoders.processing.jflac.util.CRC16; - -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; -import java.util.Vector; - -/** - * A Java FLAC decoder. - * @author kc7bfi - */ -public class FLACDecoder { - private static final int FRAME_FOOTER_CRC_LEN = 16; // bits - private static final byte[] ID3V2_TAG = new byte[]{'I', 'D', '3'}; - - private BitInputStream bitStream; - private ChannelData[] channelData = new ChannelData[Constants.MAX_CHANNELS]; - private int outputCapacity = 0; - private int outputChannels = 0; - private int lastFrameNumber; - private long samplesDecoded = 0; - private StreamInfo streamInfo; - private Frame frame = new Frame(); - private byte[] headerWarmup = new byte[2]; // contains the sync code and reserved bits - //private int state; - private int channels; - private int channelAssignment; - private int bitsPerSample; - private int sampleRate; // in Hz - private int blockSize; // in samples (per channel) - private InputStream inputStream = null; - - private int badFrames; - private boolean eof = false; - - private FrameListeners frameListeners = new FrameListeners(); - private PCMProcessors pcmProcessors = new PCMProcessors(); - - // Decoder states - //private static final int DECODER_SEARCH_FOR_METADATA = 0; - //private static final int DECODER_READ_METADATA = 1; - //private static final int DECODER_SEARCH_FOR_FRAME_SYNC = 2; - //private static final int DECODER_READ_FRAME = 3; - //private static final int DECODER_END_OF_STREAM = 4; - //private static final int DECODER_ABORTED = 5; - //private static final int DECODER_UNPARSEABLE_STREAM = 6; - //private static final int STREAM_DECODER_MEMORY_ALLOCATION_ERROR = 7; - //private static final int STREAM_DECODER_ALREADY_INITIALIZED = 8; - //private static final int STREAM_DECODER_INVALID_CALLBACK = 9; - //private static final int STREAM_DECODER_UNINITIALIZED = 10; - - /** - * The constructor. - * @param inputStream The input stream to read data from - */ - public FLACDecoder(InputStream inputStream) { - this.inputStream = inputStream; - this.bitStream = new BitInputStream(inputStream); - //state = DECODER_SEARCH_FOR_METADATA; - lastFrameNumber = 0; - samplesDecoded = 0; - //state = DECODER_SEARCH_FOR_METADATA; - } - - /** - * Return the parsed StreamInfo Metadata record. - * @return The StreamInfo - */ - public StreamInfo getStreamInfo() { - return streamInfo; - } - - /** - * Return the ChannelData object. - * @return The ChannelData object - */ - public ChannelData[] getChannelData() { - return channelData; - } - - /** - * Return the input but stream. - * @return The bit stream - */ - public BitInputStream getBitInputStream() { - return bitStream; - } - - /** - * Add a frame listener. - * @param listener The frame listener to add - */ - public void addFrameListener(FrameListener listener) { - frameListeners.addFrameListener(listener); - } - - /** - * Remove a frame listener. - * @param listener The frame listener to remove - */ - public void removeFrameListener(FrameListener listener) { - frameListeners.removeFrameListener(listener); - } - - /** - * Add a PCM processor. - * @param processor The processor listener to add - */ - public void addPCMProcessor(PCMProcessor processor) { - pcmProcessors.addPCMProcessor(processor); - } - - /** - * Remove a PCM processor. - * @param processor The processor listener to remove - */ - public void removePCMProcessor(PCMProcessor processor) { - pcmProcessors.removePCMProcessor(processor); - } - - private void callPCMProcessors(Frame frame) { - ByteData bd = decodeFrame(frame, null); - pcmProcessors.processPCM(bd); - } - - /** - * Fill the given ByteData object with PCM data from the frame. - * - * @param frame the frame to send to the PCM processors - * @param pcmData the byte data to be filled, or null if it should be allocated - * @return the ByteData that was filled (may be a new instance from space) - */ - public ByteData decodeFrame(Frame frame, ByteData pcmData) { - // required size of the byte buffer - int byteSize = frame.header.blockSize * channels * ((streamInfo.getBitsPerSample() + 7) / 2); - if (pcmData == null || pcmData.getData().length < byteSize) { - pcmData = new ByteData(byteSize); - } else { - pcmData.setLen(0); - } - if (streamInfo.getBitsPerSample() == 8) { - for (int i = 0; i < frame.header.blockSize; i++) { - for (int channel = 0; channel < channels; channel++) { - pcmData.append((byte) (channelData[channel].getOutput()[i] + 0x80)); - } - } - } else if (streamInfo.getBitsPerSample() == 16) { - for (int i = 0; i < frame.header.blockSize; i++) { - for (int channel = 0; channel < channels; channel++) { - short val = (short) (channelData[channel].getOutput()[i]); - pcmData.append((byte) (val & 0xff)); - pcmData.append((byte) ((val >> 8) & 0xff)); - } - } - } else if (streamInfo.getBitsPerSample() == 24) { - for (int i = 0; i < frame.header.blockSize; i++) { - for (int channel = 0; channel < channels; channel++) { - int val = (channelData[channel].getOutput()[i]); - pcmData.append((byte) (val & 0xff)); - pcmData.append((byte) ((val >> 8) & 0xff)); - pcmData.append((byte) ((val >> 16) & 0xff)); - } - } - } - return pcmData; - } - - /** - * Read the FLAC stream info. - * @return The FLAC Stream Info record - * @throws java.io.IOException On read error - */ - public StreamInfo readStreamInfo() throws IOException { - readStreamSync(); - Metadata metadata = readNextMetadata(); - if (!(metadata instanceof StreamInfo)) throw new IOException("StreamInfo metadata block missing"); - return (StreamInfo) metadata; - } - - /** - * Read an array of metadata blocks. - * @return The array of metadata blocks - * @throws java.io.IOException On read error - */ - public Metadata[] readMetadata() throws IOException { - readStreamSync(); - Vector metadataList = new Vector(); - Metadata metadata; - do { - metadata = readNextMetadata(); - metadataList.add(metadata); - } while (!metadata.isLast()); - return (Metadata[]) metadataList.toArray(new Metadata[0]); - } - - /** - * Read an array of metadata blocks. - * @param streamInfo The StreamInfo metadata block previously read - * @return The array of metadata blocks - * @throws java.io.IOException On read error - */ - public Metadata[] readMetadata(StreamInfo streamInfo) throws IOException { - if (streamInfo.isLast()) return new Metadata[0]; - Vector metadataList = new Vector(); - Metadata metadata; - do { - metadata = readNextMetadata(); - metadataList.add(metadata); - } while (!metadata.isLast()); - return (Metadata[]) metadataList.toArray(new Metadata[0]); - } - - /** - * process a single metadata/frame. - * @return True of one processed - * @throws java.io.IOException on read error - */ - /* - public boolean processSingle() throws IOException { - - while (true) { - switch (state) { - case DECODER_SEARCH_FOR_METADATA : - readStreamSync(); - break; - case DECODER_READ_METADATA : - readNextMetadata(); // above function sets the status for us - return true; - case DECODER_SEARCH_FOR_FRAME_SYNC : - frameSync(); // above function sets the status for us - break; - case DECODER_READ_FRAME : - readFrame(); - return true; // above function sets the status for us - //break; - case DECODER_END_OF_STREAM : - case DECODER_ABORTED : - return true; - default : - return false; - } - } - } - */ - - /** - * Process all the metadata records. - * @throws java.io.IOException On read error - */ - /* - public void processMetadata() throws IOException { - - while (true) { - switch (state) { - case DECODER_SEARCH_FOR_METADATA : - readStreamSync(); - break; - case DECODER_READ_METADATA : - readNextMetadata(); // above function sets the status for us - break; - case DECODER_SEARCH_FOR_FRAME_SYNC : - case DECODER_READ_FRAME : - case DECODER_END_OF_STREAM : - case DECODER_ABORTED : - default : - return; - } - } - } - */ - - /** - * Decode the FLAC file. - * @throws java.io.IOException On read error - */ - public void decode() throws IOException { - readMetadata(); - try { - while (true) { - //switch (state) { - //case DECODER_SEARCH_FOR_METADATA : - // readStreamSync(); - // break; - //case DECODER_READ_METADATA : - // Metadata metadata = readNextMetadata(); - // if (metadata == null) break; - // break; - //case DECODER_SEARCH_FOR_FRAME_SYNC : - findFrameSync(); - // break; - //case DECODER_READ_FRAME : - try { - readFrame(); - frameListeners.processFrame(frame); - callPCMProcessors(frame); - } catch (FrameDecodeException e) { - badFrames++; - } - // break; - //case DECODER_END_OF_STREAM : - //case DECODER_ABORTED : - // return; - //default : - // throw new IOException("Unknown state: " + state); - //} - } - } catch (EOFException e) { - eof = true; - } - } - - /** - * Decode the data frames. - * @throws java.io.IOException On read error - */ - public void decodeFrames() throws IOException { - //state = DECODER_SEARCH_FOR_FRAME_SYNC; - try { - while (true) { - //switch (state) { - //case DECODER_SEARCH_FOR_METADATA : - // readStreamSync(); - // break; - //case DECODER_READ_METADATA : - // Metadata metadata = readNextMetadata(); - // if (metadata == null) break; - // break; - //case DECODER_SEARCH_FOR_FRAME_SYNC : - findFrameSync(); - // break; - //case DECODER_READ_FRAME : - try { - readFrame(); - frameListeners.processFrame(frame); - callPCMProcessors(frame); - } catch (FrameDecodeException e) { - badFrames++; - } - // break; - //case DECODER_END_OF_STREAM : - //case DECODER_ABORTED : - // return; - //default : - // throw new IOException("Unknown state: " + state); - //} - } - } catch (EOFException e) { - eof = true; - } - } - - /** - * Decode the data frames between two seek points. - * @param from The starting seek point - * @param to The ending seek point (non-inclusive) - * @throws java.io.IOException On read error - */ - public void decode(SeekPoint from, SeekPoint to) throws IOException { - // position random access file - if (!(inputStream instanceof RandomFileInputStream)) - throw new IOException("Not a RandomFileInputStream: " + inputStream.getClass().getName()); - ((RandomFileInputStream) inputStream).seek(from.getStreamOffset()); - bitStream.reset(); - samplesDecoded = from.getSampleNumber(); - - //state = DECODER_SEARCH_FOR_FRAME_SYNC; - try { - while (true) { - //switch (state) { - //case DECODER_SEARCH_FOR_METADATA : - // readStreamSync(); - // break; - //case DECODER_READ_METADATA : - // Metadata metadata = readNextMetadata(); - // if (metadata == null) break; - // break; - //case DECODER_SEARCH_FOR_FRAME_SYNC : - findFrameSync(); - // break; - //case DECODER_READ_FRAME : - try { - readFrame(); - frameListeners.processFrame(frame); - callPCMProcessors(frame); - } catch (FrameDecodeException e) { - badFrames++; - } - //frameListeners.processFrame(frame); - //callPCMProcessors(frame); - //System.out.println(samplesDecoded +" "+ to.getSampleNumber()); - if (to != null && samplesDecoded >= to.getSampleNumber()) return; - // break; - //case DECODER_END_OF_STREAM : - //case DECODER_ABORTED : - // return; - //default : - // throw new IOException("Unknown state: " + state); - //} - } - } catch (EOFException e) { - eof = true; - } - } - - /* - private boolean processUntilEndOfStream() throws IOException { - //boolean got_a_frame; - - while (true) { - switch (state) { - case DECODER_SEARCH_FOR_METADATA : - readStreamSync(); - break; - case DECODER_READ_METADATA : - readNextMetadata(); // above function sets the status for us - break; - case DECODER_SEARCH_FOR_FRAME_SYNC : - frameSync(); // above function sets the status for us - //System.exit(0); - break; - case DECODER_READ_FRAME : - readFrame(); - break; - case DECODER_END_OF_STREAM : - case DECODER_ABORTED : - return true; - default : - return false; - } - } - } - */ - - /** - * Read the next data frame. - * @return The next frame - * @throws java.io.IOException on read error - */ - public Frame readNextFrame() throws IOException { - //boolean got_a_frame; - - try { - while (true) { - //switch (state) { - //case STREAM_DECODER_SEARCH_FOR_METADATA : - // findMetadata(); - // break; - //case STREAM_DECODER_READ_METADATA : - // readMetadata(); /* above function sets the status for us */ - // break; - //case DECODER_SEARCH_FOR_FRAME_SYNC : - findFrameSync(); /* above function sets the status for us */ - //System.exit(0); - //break; - //case DECODER_READ_FRAME : - try { - readFrame(); - return frame; - } catch (FrameDecodeException e) { - badFrames++; - } - //break; - //case DECODER_END_OF_STREAM : - //case DECODER_ABORTED : - // return null; - //default : - // return null; - //} - } - } catch (EOFException e) { - eof = true; - } - return null; - } - - /** - * Bytes consumed. - * @return The number of bytes read - */ - //public long getBytesConsumed() { - // return is.getConsumedBlurbs(); - //} - - /** - * Bytes read. - * @return The number of bytes read - */ - public long getTotalBytesRead() { - return bitStream.getTotalBytesRead(); - } - - /* - public int getInputBytesUnconsumed() { - return is.getInputBytesUnconsumed(); - } - */ - - private void allocateOutput(int size, int channels) { - if (size <= outputCapacity && channels <= outputChannels) return; - - for (int i = 0; i < Constants.MAX_CHANNELS; i++) { - channelData[i] = null; - } - - for (int i = 0; i < channels; i++) { - channelData[i] = new ChannelData(size); - } - - outputCapacity = size; - outputChannels = channels; - } - - /** - * Read the stream sync string. - * @throws java.io.IOException On read error - */ - private void readStreamSync() throws IOException { - int id = 0; - for (int i = 0; i < 4; ) { - int x = bitStream.readRawUInt(8); - if (x == Constants.STREAM_SYNC_STRING[i]) { - i++; - id = 0; - } else if (x == ID3V2_TAG[id]) { - id++; - i = 0; - if (id == 3) { - skipID3v2Tag(); - id = 0; - } - } else { - throw new IOException("Could not find Stream Sync"); - //i = 0; - //id = 0; - } - } - } - - /** - * Read a single metadata record. - * @return The next metadata record - * @throws java.io.IOException on read error - */ - public Metadata readNextMetadata() throws IOException { - Metadata metadata = null; - - boolean isLast = (bitStream.readRawUInt(Metadata.STREAM_METADATA_IS_LAST_LEN) != 0); - int type = bitStream.readRawUInt(Metadata.STREAM_METADATA_TYPE_LEN); - int length = bitStream.readRawUInt(Metadata.STREAM_METADATA_LENGTH_LEN); - - if (type == Metadata.METADATA_TYPE_STREAMINFO) { - streamInfo = new StreamInfo(bitStream, length, isLast); - metadata = streamInfo; - pcmProcessors.processStreamInfo((StreamInfo) metadata); - } else if (type == Metadata.METADATA_TYPE_SEEKTABLE) { - metadata = new SeekTable(bitStream, length, isLast); - } else if (type == Metadata.METADATA_TYPE_APPLICATION) { - metadata = new Application(bitStream, length, isLast); - } else if (type == Metadata.METADATA_TYPE_PADDING) { - metadata = new Padding(bitStream, length, isLast); - } else if (type == Metadata.METADATA_TYPE_VORBIS_COMMENT) { - metadata = new VorbisComment(bitStream, length, isLast); - } else if (type == Metadata.METADATA_TYPE_CUESHEET) { - metadata = new CueSheet(bitStream, length, isLast); - } else if (type == Metadata.METADATA_TYPE_PICTURE) { - metadata = new Picture(bitStream, length, isLast); - } else { - metadata = new Unknown(bitStream, length, isLast); - } - frameListeners.processMetadata(metadata); - //if (isLast) state = DECODER_SEARCH_FOR_FRAME_SYNC; - return metadata; - } - - - private void skipID3v2Tag() throws IOException { - - // skip the version and flags bytes - int verMajor = bitStream.readRawInt(8); - int verMinor = bitStream.readRawInt(8); - int flags = bitStream.readRawInt(8); - - // get the size (in bytes) to skip - int skip = 0; - for (int i = 0; i < 4; i++) { - int x = bitStream.readRawUInt(8); - skip <<= 7; - skip |= (x & 0x7f); - } - - // skip the rest of the tag - bitStream.readByteBlockAlignedNoCRC(null, skip); - } - - private void findFrameSync() throws IOException { - boolean first = true; - //int cnt=0; - - // If we know the total number of samples in the stream, stop if we've read that many. - // This will stop us, for example, from wasting time trying to sync on an ID3V1 tag. - if (streamInfo != null && (streamInfo.getTotalSamples() != 0)) { - if (samplesDecoded >= streamInfo.getTotalSamples()) { - //state = DECODER_END_OF_STREAM; - return; - } - } - - // make sure we're byte aligned - if (!bitStream.isConsumedByteAligned()) { - bitStream.readRawUInt(bitStream.bitsLeftForByteAlignment()); - } - - int x; - try { - while (true) { - x = bitStream.readRawUInt(8); - if (x == 0xff) { // MAGIC NUMBER for the first 8 frame sync bits - headerWarmup[0] = (byte) x; - x = bitStream.peekRawUInt(8); - - /* we have to check if we just read two 0xff's in a row; the second may actually be the beginning of the sync code */ - /* else we have to check if the second byte is the end of a sync code */ - if (x >> 2 == 0x3e) { /* MAGIC NUMBER for the last 6 sync bits */ - headerWarmup[1] = (byte) bitStream.readRawUInt(8); - //state = DECODER_READ_FRAME; - return; - } - } - if (first) { - frameListeners.processError("FindSync LOST_SYNC: " + Integer.toHexString((x & 0xff))); - first = false; - } - } - } catch (EOFException e) { - if (!first) frameListeners.processError("FindSync LOST_SYNC: Left over data in file"); - //state = DECODER_END_OF_STREAM; - } - } - - /** - * Read the next data frame. - * @throws java.io.IOException On read error - * @throws FrameDecodeException On frame decoding error - */ - public void readFrame() throws IOException, FrameDecodeException { - boolean gotAFrame = false; - int channel; - int i; - int mid, side, left, right; - short frameCRC; /* the one we calculate from the input stream */ - //int x; - - /* init the CRC */ - frameCRC = 0; - frameCRC = CRC16.update(headerWarmup[0], frameCRC); - frameCRC = CRC16.update(headerWarmup[1], frameCRC); - bitStream.resetReadCRC16(frameCRC); - - try { - frame.header = new Header(bitStream, headerWarmup, streamInfo); - } catch (BadHeaderException e) { - frameListeners.processError("Found bad header: " + e); - throw new FrameDecodeException("Bad Frame Header: " + e); - } - //if (state == DECODER_SEARCH_FOR_FRAME_SYNC) return false; - allocateOutput(frame.header.blockSize, frame.header.channels); - for (channel = 0; channel < frame.header.channels; channel++) { - // first figure the correct bits-per-sample of the subframe - int bps = frame.header.bitsPerSample; - switch (frame.header.channelAssignment) { - case Constants.CHANNEL_ASSIGNMENT_INDEPENDENT: - /* no adjustment needed */ - break; - case Constants.CHANNEL_ASSIGNMENT_LEFT_SIDE: - if (channel == 1) - bps++; - break; - case Constants.CHANNEL_ASSIGNMENT_RIGHT_SIDE: - if (channel == 0) - bps++; - break; - case Constants.CHANNEL_ASSIGNMENT_MID_SIDE: - if (channel == 1) - bps++; - break; - default: - } - // now read it - try { - readSubframe(channel, bps); - } catch (IOException e) { - frameListeners.processError("ReadSubframe: " + e); - throw e; - } - } - readZeroPadding(); - - // Read the frame CRC-16 from the footer and check - frameCRC = bitStream.getReadCRC16(); - frame.setCRC((short) bitStream.readRawUInt(FRAME_FOOTER_CRC_LEN)); - if (frameCRC == frame.getCRC()) { - /* Undo any special channel coding */ - switch (frame.header.channelAssignment) { - case Constants.CHANNEL_ASSIGNMENT_INDEPENDENT: - /* do nothing */ - break; - case Constants.CHANNEL_ASSIGNMENT_LEFT_SIDE: - for (i = 0; i < frame.header.blockSize; i++) - channelData[1].getOutput()[i] = channelData[0].getOutput()[i] - channelData[1].getOutput()[i]; - break; - case Constants.CHANNEL_ASSIGNMENT_RIGHT_SIDE: - for (i = 0; i < frame.header.blockSize; i++) - channelData[0].getOutput()[i] += channelData[1].getOutput()[i]; - break; - case Constants.CHANNEL_ASSIGNMENT_MID_SIDE: - for (i = 0; i < frame.header.blockSize; i++) { - mid = channelData[0].getOutput()[i]; - side = channelData[1].getOutput()[i]; - mid <<= 1; - if ((side & 1) != 0) // i.e. if 'side' is odd... - mid++; - left = mid + side; - right = mid - side; - channelData[0].getOutput()[i] = left >> 1; - channelData[1].getOutput()[i] = right >> 1; - } - //System.exit(1); - break; - default: - break; - } - - gotAFrame = true; - } else { - // Bad frame, emit error and zero the output signal - frameListeners.processError("CRC Error: " + Integer.toHexString((frameCRC & 0xffff)) + " vs " + Integer.toHexString((frame.getCRC() & 0xffff))); - for (channel = 0; channel < frame.header.channels; channel++) { - for (int j = 0; j < frame.header.blockSize; j++) - channelData[channel].getOutput()[j] = 0; - } - } - - // put the latest values into the public section of the decoder instance - channels = frame.header.channels; - channelAssignment = frame.header.channelAssignment; - bitsPerSample = frame.header.bitsPerSample; - sampleRate = frame.header.sampleRate; - blockSize = frame.header.blockSize; - - //samplesDecoded = frame.header.sampleNumber + frame.header.blockSize; - samplesDecoded += frame.header.blockSize; - //System.out.println(samplesDecoded+" "+frame.header.sampleNumber + " "+frame.header.blockSize); - - //state = DECODER_SEARCH_FOR_FRAME_SYNC; - //return; - } - - private void readSubframe(int channel, int bps) throws IOException, FrameDecodeException { - int x; - - x = bitStream.readRawUInt(8); /* MAGIC NUMBER */ - - boolean haveWastedBits = ((x & 1) != 0); - x &= 0xfe; - - int wastedBits = 0; - if (haveWastedBits) { - wastedBits = bitStream.readUnaryUnsigned() + 1; - bps -= wastedBits; - } - - // Lots of magic numbers here - if ((x & 0x80) != 0) { - frameListeners.processError("ReadSubframe LOST_SYNC: " + Integer.toHexString(x & 0xff)); - //state = DECODER_SEARCH_FOR_FRAME_SYNC; - throw new FrameDecodeException("ReadSubframe LOST_SYNC: " + Integer.toHexString(x & 0xff)); - //return true; - } else if (x == 0) { - frame.subframes[channel] = new ChannelConstant(bitStream, frame.header, channelData[channel], bps, wastedBits); - } else if (x == 2) { - frame.subframes[channel] = new ChannelVerbatim(bitStream, frame.header, channelData[channel], bps, wastedBits); - } else if (x < 16) { - //state = DECODER_UNPARSEABLE_STREAM; - throw new FrameDecodeException("ReadSubframe Bad Subframe Type: " + Integer.toHexString(x & 0xff)); - } else if (x <= 24) { - //FLACSubframe_Fixed subframe = read_subframe_fixed_(channel, bps, (x >> 1) & 7); - frame.subframes[channel] = new ChannelFixed(bitStream, frame.header, channelData[channel], bps, wastedBits, (x >> 1) & 7); - } else if (x < 64) { - //state = DECODER_UNPARSEABLE_STREAM; - throw new FrameDecodeException("ReadSubframe Bad Subframe Type: " + Integer.toHexString(x & 0xff)); - } else { - frame.subframes[channel] = new ChannelLPC(bitStream, frame.header, channelData[channel], bps, wastedBits, ((x >> 1) & 31) + 1); - } - if (haveWastedBits) { - int i; - x = frame.subframes[channel].getWastedBits(); - for (i = 0; i < frame.header.blockSize; i++) - channelData[channel].getOutput()[i] <<= x; - } - } - - private void readZeroPadding() throws IOException, FrameDecodeException { - if (!bitStream.isConsumedByteAligned()) { - int zero = bitStream.readRawUInt(bitStream.bitsLeftForByteAlignment()); - if (zero != 0) { - frameListeners.processError("ZeroPaddingError: " + Integer.toHexString(zero)); - //state = DECODER_SEARCH_FOR_FRAME_SYNC; - throw new FrameDecodeException("ZeroPaddingError: " + Integer.toHexString(zero)); - } - } - } - - /** - * Get the number of samples decoded. - * @return Returns the samples Decoded. - */ - public long getSamplesDecoded() { - return samplesDecoded; - } - - /** - * @return Returns the number of bad frames decoded. - */ - public int getBadFrames() { - return badFrames; - } - - /** - * @return Returns true if end-of-file. - */ - public boolean isEOF() { - return eof; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FLACEncoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FLACEncoder.java deleted file mode 100644 index de89816cc486c28a24a38bf43cfe4ab181519907..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FLACEncoder.java +++ /dev/null @@ -1,2524 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.frame.EntropyPartitionedRiceContents; -import v4lk.lwbd.decoders.processing.jflac.io.BitOutputStream; - -public class FLACEncoder { - - private class verify_input_fifo { - int[][] data = new int[Constants.MAX_CHANNELS][Constants.MAX_BLOCK_SIZE]; - int size; /* of each data[] in samples */ - int tail; - } - - ; - - private class verify_output { - byte[] data; - int capacity; - int bytes; - } - - ; - - private static final int ENCODER_IN_MAGIC = 0; - private static final int ENCODER_IN_METADATA = 1; - private static final int ENCODER_IN_AUDIO = 2; - - // stream encoder states - - private static final int STREAM_ENCODER_OK = 0; - /**< The encoder is in the normal OK state. */ - - private static final int STREAM_ENCODER_VERIFY_DECODER_ERROR = 1; - /**< An error occurred in the underlying verify stream decoder; - * check stream_encoder_get_verify_decoder_state(). - */ - - private static final int STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA = 2; - /**< The verify decoder detected a mismatch between the original - * audio signal and the decoded audio signal. - */ - - private static final int STREAM_ENCODER_INVALID_CALLBACK = 3; - /**< The encoder was initialized before setting all the required callbacks. */ - - private static final int STREAM_ENCODER_INVALID_NUMBER_OF_CHANNELS = 4; - /**< The encoder has an invalid setting for number of channels. */ - - private static final int STREAM_ENCODER_INVALID_BITS_PER_SAMPLE = 5; - /**< The encoder has an invalid setting for bits-per-sample. - * FLAC supports 4-32 bps but the reference encoder currently supports - * only up to 24 bps. - */ - - private static final int STREAM_ENCODER_INVALID_SAMPLE_RATE = 6; - /**< The encoder has an invalid setting for the input sample rate. */ - - private static final int STREAM_ENCODER_INVALID_BLOCK_SIZE = 7; - /**< The encoder has an invalid setting for the block size. */ - - private static final int STREAM_ENCODER_INVALID_MAX_LPC_ORDER = 8; - /**< The encoder has an invalid setting for the maximum LPC order. */ - - private static final int STREAM_ENCODER_INVALID_QLP_COEFF_PRECISION = 9; - /**< The encoder has an invalid setting for the precision of the quantized linear predictor coefficients. */ - - private static final int STREAM_ENCODER_MID_SIDE_CHANNELS_MISMATCH = 10; - /**< Mid/side coding was specified but the number of channels is not equal to 2. */ - - private static final int STREAM_ENCODER_MID_SIDE_SAMPLE_SIZE_MISMATCH = 11; - /**< Deprecated. */ - - private static final int STREAM_ENCODER_ILLEGAL_MID_SIDE_FORCE = 12; - /**< Loose mid/side coding was specified but mid/side coding was not. */ - - private static final int STREAM_ENCODER_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER = 13; - /**< The specified block size is less than the maximum LPC order. */ - - private static final int STREAM_ENCODER_NOT_STREAMABLE = 14; - /**< The encoder is bound to the "streamable subset" but other settings violate it. */ - - private static final int STREAM_ENCODER_FRAMING_ERROR = 15; - /**< An error occurred while writing the stream; usually, the write_callback returned an error. */ - - private static final int STREAM_ENCODER_INVALID_METADATA = 16; - /**< The metadata input to the encoder is invalid, in one of the following ways: - * - stream_encoder_set_metadata() was called with a null pointer but a block count > 0 - * - One of the metadata blocks contains an undefined type - * - It contains an illegal CUESHEET as checked by format_cuesheet_is_legal() - * - It contains an illegal SEEKTABLE as checked by format_seektable_is_legal() - * - It contains more than one SEEKTABLE block or more than one VORBIS_COMMENT block - */ - - private static final int STREAM_ENCODER_FATAL_ERROR_WHILE_ENCODING = 17; - /**< An error occurred while writing the stream; usually, the write_callback returned an error. */ - - private static final int STREAM_ENCODER_FATAL_ERROR_WHILE_WRITING = 18; - /**< The write_callback returned an error. */ - - private static final int STREAM_ENCODER_MEMORY_ALLOCATION_ERROR = 19; - /**< Memory allocation failed. */ - - private static final int STREAM_ENCODER_ALREADY_INITIALIZED = 20; - /**< stream_encoder_init() was called when the encoder was - * already initialized, usually because - * stream_encoder_finish() was not called. - */ - - private static final int STREAM_ENCODER_UNINITIALIZED = 21; - /**< The encoder is in the uninitialized state. */ - - /*********************************************************************** - * - * Private class data - * - ***********************************************************************/ - - int input_capacity; /* current size (in samples) of the signal and residual buffers */ - int[][] integer_signal = new int[Constants.MAX_CHANNELS][Constants.MAX_BLOCK_SIZE]; /* the integer version of the input signal */ - int[][] integer_signal_mid_side = new int[2][Constants.MAX_BLOCK_SIZE]; /* the integer version of the mid-side input signal (stereo only) */ - double[][] real_signal = new double[Constants.MAX_CHANNELS][Constants.MAX_BLOCK_SIZE]; /* the floating-point version of the input signal */ - double[][] real_signal_mid_side = new double[2][Constants.MAX_BLOCK_SIZE]; /* the floating-point version of the mid-side input signal (stereo only) */ - int[] subframe_bps = new int[Constants.MAX_CHANNELS]; /* the effective bits per sample of the input signal (stream bps - wasted bits) */ - int[] subframe_bps_mid_side = new int[2]; /* the effective bits per sample of the mid-side input signal (stream bps - wasted bits + 0/1) */ - int[][] residual_workspace = new int[Constants.MAX_CHANNELS][2]; /* each channel has a candidate and best workspace where the subframe residual signals will be stored */ - int[][] residual_workspace_mid_side = new int[2][2]; - //Subframe subframe_workspace[Constants.MAX_CHANNELS][2]; - //Subframe subframe_workspace_mid_side[2][2]; - //Subframe *subframe_workspace_ptr[Constants.MAX_CHANNELS][2]; - //Subframe *subframe_workspace_ptr_mid_side[2][2]; - EntropyPartitionedRiceContents[][] partitioned_rice_contents_workspace = new EntropyPartitionedRiceContents[Constants.MAX_CHANNELS][2]; - EntropyPartitionedRiceContents[][] partitioned_rice_contents_workspace_mid_side = new EntropyPartitionedRiceContents[Constants.MAX_CHANNELS][2]; - EntropyPartitionedRiceContents[][] partitioned_rice_contents_workspace_ptr = new EntropyPartitionedRiceContents[Constants.MAX_CHANNELS][2]; - EntropyPartitionedRiceContents[][] partitioned_rice_contents_workspace_ptr_mid_side = new EntropyPartitionedRiceContents[Constants.MAX_CHANNELS][2]; - int[] best_subframe = new int[Constants.MAX_CHANNELS]; /* index into the above workspaces */ - int[] best_subframe_mid_side = new int[2]; - int[] best_subframe_bits = new int[Constants.MAX_CHANNELS]; /* size in bits of the best subframe for each channel */ - int[] best_subframe_bits_mid_side = new int[2]; - //uint32 *abs_residual; /* workspace where abs(candidate residual) is stored */ - //uint64 *abs_residual_partition_sums; /* workspace where the sum of abs(candidate residual) for each partition is stored */ - //unsigned *raw_bits_per_partition; /* workspace where the sum of silog2(candidate residual) for each partition is stored */ - BitOutputStream frame = new BitOutputStream(); /* the current frame being worked on */ - double loose_mid_side_stereo_frames_exact; /* exact number of frames the encoder will use before trying both independent and mid/side frames again */ - int loose_mid_side_stereo_frames; /* rounded number of frames the encoder will use before trying both independent and mid/side frames again */ - int loose_mid_side_stereo_frame_count; /* number of frames using the current channel assignment */ - int last_channel_assignment; - //StreamMetadata metadata; - int current_sample_number; - int current_frame_number; - //struct MD5Context md5context; - //CPUInfo cpuinfo; - //unsigned (*local_fixed_compute_best_predictor)(int data[], unsigned data_len, double residual_bits_per_sample[MAX_FIXED_ORDER+1]); - //void (*local_lpc_compute_autocorrelation)(double data[], unsigned data_len, unsigned lag, double autoc[]); - //void (*local_lpc_compute_residual_from_qlp_coefficients)(int data[], unsigned data_len, int qlp_coeff[], unsigned order, int lp_quantization, int residual[]); - //void (*local_lpc_compute_residual_from_qlp_coefficients_64bit)(int data[], unsigned data_len, int qlp_coeff[], unsigned order, int lp_quantization, int residual[]); - //void (*local_lpc_compute_residual_from_qlp_coefficients_16bit)(int data[], unsigned data_len, int qlp_coeff[], unsigned order, int lp_quantization, int residual[]); - boolean use_wide_by_block; /* use slow 64-bit versions of some functions because of the block size */ - boolean use_wide_by_partition; /* use slow 64-bit versions of some functions because of the min partition order and blocksize */ - boolean use_wide_by_order; /* use slow 64-bit versions of some functions because of the lpc order */ - boolean precompute_partition_sums; /* our initial guess as to whether precomputing the partitions sums will be a speed improvement */ - boolean disable_constant_subframes; - boolean disable_fixed_subframes; - boolean disable_verbatim_subframes; - //StreamEncoderWriteCallback write_callback; - //StreamEncoderMetadataCallback metadata_callback; - //void *client_data; - /* unaligned (original) pointers to allocated data */ - int[] integer_signal_unaligned = new int[Constants.MAX_CHANNELS]; - int[] integer_signal_mid_side_unaligned = new int[2]; - double[] real_signal_unaligned = new double[Constants.MAX_CHANNELS]; - double[] real_signal_mid_side_unaligned = new double[2]; - int[][] residual_workspace_unaligned = new int[Constants.MAX_CHANNELS][2]; - int[][] residual_workspace_mid_side_unaligned = new int[2][2]; - //uint32 *abs_residual_unaligned; - //uint64 *abs_residual_partition_sums_unaligned; - //unsigned *raw_bits_per_partition_unaligned; - /* - * These fields have been moved here from private function local - * declarations merely to save stack space during encoding. - */ - //double[] lp_coeff = new double[Constants.MAX_LPC_ORDER][Constants.MAX_LPC_ORDER]; /* from process_subframe_() */ - EntropyPartitionedRiceContents[] partitioned_rice_contents_extra = new EntropyPartitionedRiceContents[2]; /* from find_best_partition_order_() */ - - /* - * The data for the verify section - */ - private class VerifyData { - FLACDecoder decoder; - int state_hint; - boolean needs_magic_hack; - verify_input_fifo input_fifo; - verify_output output; - - private class error_stats { - long absolute_sample; - int frame_number; - int channel; - int sample; - int expected; - int got; - } - } - - private VerifyData verifyData = new VerifyData(); - boolean is_being_deleted; /* if true, call to ..._finish() from ..._delete() will not call the callbacks */ - - // protected - int state; - boolean verify; - boolean streamable_subset; - boolean do_mid_side_stereo; - boolean loose_mid_side_stereo; - int channels; - int bits_per_sample; - int sample_rate; - int blocksize; - int max_lpc_order; - int qlp_coeff_precision; - boolean do_qlp_coeff_prec_search; - boolean do_exhaustive_model_search; - boolean do_escape_coding; - int min_residual_partition_order; - int max_residual_partition_order; - int rice_parameter_search_dist; - long total_samples_estimate; - //StreamMetadata **metadata; - int num_metadata_blocks; - - // private - - /*********************************************************************** - * - * Public static class data - * - ***********************************************************************/ - - private static final String StreamEncoderStateString[] = new String[]{ - "STREAM_ENCODER_OK", - "STREAM_ENCODER_VERIFY_DECODER_ERROR", - "STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA", - "STREAM_ENCODER_INVALID_CALLBACK", - "STREAM_ENCODER_INVALID_NUMBER_OF_CHANNELS", - "STREAM_ENCODER_INVALID_BITS_PER_SAMPLE", - "STREAM_ENCODER_INVALID_SAMPLE_RATE", - "STREAM_ENCODER_INVALID_BLOCK_SIZE", - "STREAM_ENCODER_INVALID_MAX_LPC_ORDER", - "STREAM_ENCODER_INVALID_QLP_COEFF_PRECISION", - "STREAM_ENCODER_MID_SIDE_CHANNELS_MISMATCH", - "STREAM_ENCODER_MID_SIDE_SAMPLE_SIZE_MISMATCH", - "STREAM_ENCODER_ILLEGAL_MID_SIDE_FORCE", - "STREAM_ENCODER_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER", - "STREAM_ENCODER_NOT_STREAMABLE", - "STREAM_ENCODER_FRAMING_ERROR", - "STREAM_ENCODER_INVALID_METADATA", - "STREAM_ENCODER_FATAL_ERROR_WHILE_ENCODING", - "STREAM_ENCODER_FATAL_ERROR_WHILE_WRITING", - "STREAM_ENCODER_MEMORY_ALLOCATION_ERROR", - "STREAM_ENCODER_ALREADY_INITIALIZED", - "STREAM_ENCODER_UNINITIALIZED" - }; - - private static final String StreamEncoderWriteStatusString[] = new String[]{ - "STREAM_ENCODER_WRITE_STATUS_OK", - "STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR" - }; - - /*********************************************************************** - * - * Class constructor/destructor - * - */ - public FLACEncoder() { - setDefaults(); - - is_being_deleted = false; - - /* - for (int i = 0; i < Constants.MAX_CHANNELS; i++) { - encoder->private_->subframe_workspace_ptr[i][0] = &encoder->private_->subframe_workspace[i][0]; - encoder->private_->subframe_workspace_ptr[i][1] = &encoder->private_->subframe_workspace[i][1]; - } - for(i = 0; i < 2; i++) { - encoder->private_->subframe_workspace_ptr_mid_side[i][0] = &encoder->private_->subframe_workspace_mid_side[i][0]; - encoder->private_->subframe_workspace_ptr_mid_side[i][1] = &encoder->private_->subframe_workspace_mid_side[i][1]; - } - for(i = 0; i < Constants.MAX_CHANNELS; i++) { - encoder->private_->partitioned_rice_contents_workspace_ptr[i][0] = &encoder->private_->partitioned_rice_contents_workspace[i][0]; - encoder->private_->partitioned_rice_contents_workspace_ptr[i][1] = &encoder->private_->partitioned_rice_contents_workspace[i][1]; - } - for(i = 0; i < 2; i++) { - encoder->private_->partitioned_rice_contents_workspace_ptr_mid_side[i][0] = &encoder->private_->partitioned_rice_contents_workspace_mid_side[i][0]; - encoder->private_->partitioned_rice_contents_workspace_ptr_mid_side[i][1] = &encoder->private_->partitioned_rice_contents_workspace_mid_side[i][1]; - } - - for(i = 0; i < Constants.MAX_CHANNELS; i++) { - format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->partitioned_rice_contents_workspace[i][0]); - format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->partitioned_rice_contents_workspace[i][1]); - } - for(i = 0; i < 2; i++) { - format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->partitioned_rice_contents_workspace_mid_side[i][0]); - format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->partitioned_rice_contents_workspace_mid_side[i][1]); - } - for(i = 0; i < 2; i++) - format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->partitioned_rice_contents_extra[i]); - */ - - state = STREAM_ENCODER_UNINITIALIZED; - } - - /* - void stream_encoder_delete(StreamEncoder *encoder) - { - unsigned i; - - ASSERT(0 != encoder); - ASSERT(0 != encoder->protected_); - ASSERT(0 != encoder->private_); - ASSERT(0 != encoder->private_->frame); - - encoder->private_->is_being_deleted = true; - - stream_encoder_finish(encoder); - - if(0 != encoder->private_->verify.decoder) - stream_decoder_delete(encoder->private_->verify.decoder); - - for(i = 0; i < Constants.MAX_CHANNELS; i++) { - format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->partitioned_rice_contents_workspace[i][0]); - format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->partitioned_rice_contents_workspace[i][1]); - } - for(i = 0; i < 2; i++) { - format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->partitioned_rice_contents_workspace_mid_side[i][0]); - format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->partitioned_rice_contents_workspace_mid_side[i][1]); - } - for(i = 0; i < 2; i++) - format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->partitioned_rice_contents_extra[i]); - - bitbuffer_delete(encoder->private_->frame); - free(encoder->private_); - free(encoder->protected_); - free(encoder); - } - */ - - /*********************************************************************** - * - * Public class methods - * - ***********************************************************************/ - - /* - StreamEncoderState stream_encoder_init(StreamEncoder *encoder) - { - unsigned i; - boolean metadata_has_seektable, metadata_has_vorbis_comment; - - ASSERT(0 != encoder); - - if(encoder->protected_->state != STREAM_ENCODER_UNINITIALIZED) - return encoder->protected_->state = STREAM_ENCODER_ALREADY_INITIALIZED; - - encoder->protected_->state = STREAM_ENCODER_OK; - - if(0 == encoder->private_->write_callback || 0 == encoder->private_->metadata_callback) - return encoder->protected_->state = STREAM_ENCODER_INVALID_CALLBACK; - - if(encoder->protected_->channels == 0 || encoder->protected_->channels > Constants.MAX_CHANNELS) - return encoder->protected_->state = STREAM_ENCODER_INVALID_NUMBER_OF_CHANNELS; - - if(encoder->protected_->do_mid_side_stereo && encoder->protected_->channels != 2) - return encoder->protected_->state = STREAM_ENCODER_MID_SIDE_CHANNELS_MISMATCH; - - if(encoder->protected_->loose_mid_side_stereo && !encoder->protected_->do_mid_side_stereo) - return encoder->protected_->state = STREAM_ENCODER_ILLEGAL_MID_SIDE_FORCE; - - if(encoder->protected_->bits_per_sample >= 32) - encoder->protected_->do_mid_side_stereo = false; // since we do 32-bit math, the side channel would have 33 bps and overflow - - if(encoder->protected_->bits_per_sample < MIN_BITS_PER_SAMPLE || encoder->protected_->bits_per_sample > REFERENCE_CODEC_MAX_BITS_PER_SAMPLE) - return encoder->protected_->state = STREAM_ENCODER_INVALID_BITS_PER_SAMPLE; - - if(!format_sample_rate_is_valid(encoder->protected_->sample_rate)) - return encoder->protected_->state = STREAM_ENCODER_INVALID_SAMPLE_RATE; - - if(encoder->protected_->blocksize < MIN_BLOCK_SIZE || encoder->protected_->blocksize > MAX_BLOCK_SIZE) - return encoder->protected_->state = STREAM_ENCODER_INVALID_BLOCK_SIZE; - - if(encoder->protected_->max_lpc_order > MAX_LPC_ORDER) - return encoder->protected_->state = STREAM_ENCODER_INVALID_MAX_LPC_ORDER; - - if(encoder->protected_->blocksize < encoder->protected_->max_lpc_order) - return encoder->protected_->state = STREAM_ENCODER_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER; - - if(encoder->protected_->qlp_coeff_precision == 0) { - if(encoder->protected_->bits_per_sample < 16) { - // @@@ need some data about how to set this here w.r.t. blocksize and sample rate - // @@@ until then we'll make a guess - encoder->protected_->qlp_coeff_precision = max(MIN_QLP_COEFF_PRECISION, 2 + encoder->protected_->bits_per_sample / 2); - } - else if(encoder->protected_->bits_per_sample == 16) { - if(encoder->protected_->blocksize <= 192) - encoder->protected_->qlp_coeff_precision = 7; - else if(encoder->protected_->blocksize <= 384) - encoder->protected_->qlp_coeff_precision = 8; - else if(encoder->protected_->blocksize <= 576) - encoder->protected_->qlp_coeff_precision = 9; - else if(encoder->protected_->blocksize <= 1152) - encoder->protected_->qlp_coeff_precision = 10; - else if(encoder->protected_->blocksize <= 2304) - encoder->protected_->qlp_coeff_precision = 11; - else if(encoder->protected_->blocksize <= 4608) - encoder->protected_->qlp_coeff_precision = 12; - else - encoder->protected_->qlp_coeff_precision = 13; - } - else { - if(encoder->protected_->blocksize <= 384) - encoder->protected_->qlp_coeff_precision = MAX_QLP_COEFF_PRECISION-2; - else if(encoder->protected_->blocksize <= 1152) - encoder->protected_->qlp_coeff_precision = MAX_QLP_COEFF_PRECISION-1; - else - encoder->protected_->qlp_coeff_precision = MAX_QLP_COEFF_PRECISION; - } - ASSERT(encoder->protected_->qlp_coeff_precision <= MAX_QLP_COEFF_PRECISION); - } - else if(encoder->protected_->qlp_coeff_precision < MIN_QLP_COEFF_PRECISION || encoder->protected_->qlp_coeff_precision > MAX_QLP_COEFF_PRECISION) - return encoder->protected_->state = STREAM_ENCODER_INVALID_QLP_COEFF_PRECISION; - - if(encoder->protected_->streamable_subset) { - if( - encoder->protected_->blocksize != 192 && - encoder->protected_->blocksize != 576 && - encoder->protected_->blocksize != 1152 && - encoder->protected_->blocksize != 2304 && - encoder->protected_->blocksize != 4608 && - encoder->protected_->blocksize != 256 && - encoder->protected_->blocksize != 512 && - encoder->protected_->blocksize != 1024 && - encoder->protected_->blocksize != 2048 && - encoder->protected_->blocksize != 4096 && - encoder->protected_->blocksize != 8192 && - encoder->protected_->blocksize != 16384 - ) - return encoder->protected_->state = STREAM_ENCODER_NOT_STREAMABLE; - if( - encoder->protected_->sample_rate != 8000 && - encoder->protected_->sample_rate != 16000 && - encoder->protected_->sample_rate != 22050 && - encoder->protected_->sample_rate != 24000 && - encoder->protected_->sample_rate != 32000 && - encoder->protected_->sample_rate != 44100 && - encoder->protected_->sample_rate != 48000 && - encoder->protected_->sample_rate != 96000 - ) - return encoder->protected_->state = STREAM_ENCODER_NOT_STREAMABLE; - if( - encoder->protected_->bits_per_sample != 8 && - encoder->protected_->bits_per_sample != 12 && - encoder->protected_->bits_per_sample != 16 && - encoder->protected_->bits_per_sample != 20 && - encoder->protected_->bits_per_sample != 24 - ) - return encoder->protected_->state = STREAM_ENCODER_NOT_STREAMABLE; - if(encoder->protected_->max_residual_partition_order > SUBSET_MAX_RICE_PARTITION_ORDER) - return encoder->protected_->state = STREAM_ENCODER_NOT_STREAMABLE; - } - - if(encoder->protected_->max_residual_partition_order >= (1u << ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN)) - encoder->protected_->max_residual_partition_order = (1u << ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN) - 1; - if(encoder->protected_->min_residual_partition_order >= encoder->protected_->max_residual_partition_order) - encoder->protected_->min_residual_partition_order = encoder->protected_->max_residual_partition_order; - - // validate metadata - if(0 == encoder->protected_->metadata && encoder->protected_->num_metadata_blocks > 0) - return encoder->protected_->state = STREAM_ENCODER_INVALID_METADATA; - metadata_has_seektable = false; - metadata_has_vorbis_comment = false; - for(i = 0; i < encoder->protected_->num_metadata_blocks; i++) { - if(encoder->protected_->metadata[i]->type == METADATA_TYPE_STREAMINFO) - return encoder->protected_->state = STREAM_ENCODER_INVALID_METADATA; - else if(encoder->protected_->metadata[i]->type == METADATA_TYPE_SEEKTABLE) { - if(metadata_has_seektable) // only one is allowed - return encoder->protected_->state = STREAM_ENCODER_INVALID_METADATA; - metadata_has_seektable = true; - if(!format_seektable_is_legal(&encoder->protected_->metadata[i]->data.seek_table)) - return encoder->protected_->state = STREAM_ENCODER_INVALID_METADATA; - } - else if(encoder->protected_->metadata[i]->type == METADATA_TYPE_VORBIS_COMMENT) { - if(metadata_has_vorbis_comment) // only one is allowed - return encoder->protected_->state = STREAM_ENCODER_INVALID_METADATA; - metadata_has_vorbis_comment = true; - } - else if(encoder->protected_->metadata[i]->type == METADATA_TYPE_CUESHEET) { - if(!format_cuesheet_is_legal(&encoder->protected_->metadata[i]->data.cue_sheet, encoder->protected_->metadata[i]->data.cue_sheet.is_cd, 0)) - return encoder->protected_->state = STREAM_ENCODER_INVALID_METADATA; - } - } - - encoder->private_->input_capacity = 0; - for(i = 0; i < encoder->protected_->channels; i++) { - encoder->private_->integer_signal_unaligned[i] = encoder->private_->integer_signal[i] = 0; - encoder->private_->real_signal_unaligned[i] = encoder->private_->real_signal[i] = 0; - } - for(i = 0; i < 2; i++) { - encoder->private_->integer_signal_mid_side_unaligned[i] = encoder->private_->integer_signal_mid_side[i] = 0; - encoder->private_->real_signal_mid_side_unaligned[i] = encoder->private_->real_signal_mid_side[i] = 0; - } - for(i = 0; i < encoder->protected_->channels; i++) { - encoder->private_->residual_workspace_unaligned[i][0] = encoder->private_->residual_workspace[i][0] = 0; - encoder->private_->residual_workspace_unaligned[i][1] = encoder->private_->residual_workspace[i][1] = 0; - encoder->private_->best_subframe[i] = 0; - } - for(i = 0; i < 2; i++) { - encoder->private_->residual_workspace_mid_side_unaligned[i][0] = encoder->private_->residual_workspace_mid_side[i][0] = 0; - encoder->private_->residual_workspace_mid_side_unaligned[i][1] = encoder->private_->residual_workspace_mid_side[i][1] = 0; - encoder->private_->best_subframe_mid_side[i] = 0; - } - encoder->private_->abs_residual_unaligned = encoder->private_->abs_residual = 0; - encoder->private_->abs_residual_partition_sums_unaligned = encoder->private_->abs_residual_partition_sums = 0; - encoder->private_->raw_bits_per_partition_unaligned = encoder->private_->raw_bits_per_partition = 0; - encoder->private_->loose_mid_side_stereo_frames_exact = (double)encoder->protected_->sample_rate * 0.4 / (double)encoder->protected_->blocksize; - encoder->private_->loose_mid_side_stereo_frames = (unsigned)(encoder->private_->loose_mid_side_stereo_frames_exact + 0.5); - if(encoder->private_->loose_mid_side_stereo_frames == 0) - encoder->private_->loose_mid_side_stereo_frames = 1; - encoder->private_->loose_mid_side_stereo_frame_count = 0; - encoder->private_->current_sample_number = 0; - encoder->private_->current_frame_number = 0; - - encoder->private_->use_wide_by_block = (encoder->protected_->bits_per_sample + bitmath_ilog2(encoder->protected_->blocksize)+1 > 30); - encoder->private_->use_wide_by_order = (encoder->protected_->bits_per_sample + bitmath_ilog2(max(encoder->protected_->max_lpc_order, MAX_FIXED_ORDER))+1 > 30); //@@@ need to use this? - encoder->private_->use_wide_by_partition = (false); //@@@ need to set this - - // get the CPU info and set the function pointers - cpu_info(&encoder->private_->cpuinfo); - // first default to the non-asm routines - encoder->private_->local_lpc_compute_autocorrelation = lpc_compute_autocorrelation; - encoder->private_->local_fixed_compute_best_predictor = fixed_compute_best_predictor; - encoder->private_->local_lpc_compute_residual_from_qlp_coefficients = lpc_compute_residual_from_qlp_coefficients; - encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_64bit = lpc_compute_residual_from_qlp_coefficients_wide; - encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = lpc_compute_residual_from_qlp_coefficients; - // now override with asm where appropriate - #ifndef NO_ASM - if(encoder->private_->cpuinfo.use_asm) { - #ifdef CPU_IA32 - ASSERT(encoder->private_->cpuinfo.type == CPUINFO_TYPE_IA32); - #ifdef HAS_NASM - #ifdef SSE_OS - if(encoder->private_->cpuinfo.data.ia32.sse) { - if(encoder->protected_->max_lpc_order < 4) - encoder->private_->local_lpc_compute_autocorrelation = lpc_compute_autocorrelation_asm_ia32_sse_lag_4; - else if(encoder->protected_->max_lpc_order < 8) - encoder->private_->local_lpc_compute_autocorrelation = lpc_compute_autocorrelation_asm_ia32_sse_lag_8; - else if(encoder->protected_->max_lpc_order < 12) - encoder->private_->local_lpc_compute_autocorrelation = lpc_compute_autocorrelation_asm_ia32_sse_lag_12; - else - encoder->private_->local_lpc_compute_autocorrelation = lpc_compute_autocorrelation_asm_ia32; - } - else - #endif - if(encoder->private_->cpuinfo.data.ia32._3dnow) - encoder->private_->local_lpc_compute_autocorrelation = lpc_compute_autocorrelation_asm_ia32_3dnow; - else - encoder->private_->local_lpc_compute_autocorrelation = lpc_compute_autocorrelation_asm_ia32; - if(encoder->private_->cpuinfo.data.ia32.mmx && encoder->private_->cpuinfo.data.ia32.cmov) - encoder->private_->local_fixed_compute_best_predictor = fixed_compute_best_predictor_asm_ia32_mmx_cmov; - if(encoder->private_->cpuinfo.data.ia32.mmx) { - encoder->private_->local_lpc_compute_residual_from_qlp_coefficients = lpc_compute_residual_from_qlp_coefficients_asm_ia32; - encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx; - } - else { - encoder->private_->local_lpc_compute_residual_from_qlp_coefficients = lpc_compute_residual_from_qlp_coefficients_asm_ia32; - encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = lpc_compute_residual_from_qlp_coefficients_asm_ia32; - } - #endif - #endif - } - #endif - // finally override based on wide-ness if necessary - if(encoder->private_->use_wide_by_block) { - encoder->private_->local_fixed_compute_best_predictor = fixed_compute_best_predictor_wide; - } - - // we require precompute_partition_sums if do_escape_coding because of their intertwined nature - encoder->private_->precompute_partition_sums = (encoder->protected_->max_residual_partition_order > encoder->protected_->min_residual_partition_order) || encoder->protected_->do_escape_coding; - - if(!resize_buffers_(encoder->protected_->blocksize)) { - // the above function sets the state for us in case of an error - return encoder->protected_->state; - } - - if(!bitbuffer_init(encoder->private_->frame)) - return encoder->protected_->state = STREAM_ENCODER_MEMORY_ALLOCATION_ERROR; - - // Set up the verify stuff if necessary - if(encoder->protected_->verify) { - // First, set up the fifo which will hold the original signal to compare against - encoder->private_->verify.input_fifo.size = encoder->protected_->blocksize; - for(i = 0; i < encoder->protected_->channels; i++) { - if(0 == (encoder->private_->verify.input_fifo.data[i] = (int*)malloc(sizeof(int) * encoder->private_->verify.input_fifo.size))) - return encoder->protected_->state = STREAM_ENCODER_MEMORY_ALLOCATION_ERROR; - } - encoder->private_->verify.input_fifo.tail = 0; - - // Now set up a stream decoder for verification - encoder->private_->verify.decoder = stream_decoder_new(); - if(0 == encoder->private_->verify.decoder) - return encoder->protected_->state = STREAM_ENCODER_VERIFY_DECODER_ERROR; - - stream_decoder_set_read_callback(encoder->private_->verify.decoder, verify_read_callback_); - stream_decoder_set_write_callback(encoder->private_->verify.decoder, verify_write_callback_); - stream_decoder_set_metadata_callback(encoder->private_->verify.decoder, verify_metadata_callback_); - stream_decoder_set_error_callback(encoder->private_->verify.decoder, verify_error_callback_); - stream_decoder_set_client_data(encoder->private_->verify.decoder, encoder); - if(stream_decoder_init(encoder->private_->verify.decoder) != STREAM_DECODER_SEARCH_FOR_METADATA) - return encoder->protected_->state = STREAM_ENCODER_VERIFY_DECODER_ERROR; - } - encoder->private_->verify.error_stats.absolute_sample = 0; - encoder->private_->verify.error_stats.frame_number = 0; - encoder->private_->verify.error_stats.channel = 0; - encoder->private_->verify.error_stats.sample = 0; - encoder->private_->verify.error_stats.expected = 0; - encoder->private_->verify.error_stats.got = 0; - - // write the stream header - if(encoder->protected_->verify) - encoder->private_->verify.state_hint = ENCODER_IN_MAGIC; - if(!bitbuffer_write_raw_uint32(encoder->private_->frame, STREAM_SYNC, STREAM_SYNC_LEN)) - return encoder->protected_->state = STREAM_ENCODER_FRAMING_ERROR; - if(!write_bitbuffer_(0)) { - // the above function sets the state for us in case of an error - return encoder->protected_->state; - } - - //write the STREAMINFO metadata block - if(encoder->protected_->verify) - encoder->private_->verify.state_hint = ENCODER_IN_METADATA; - encoder->private_->metadata.type = METADATA_TYPE_STREAMINFO; - encoder->private_->metadata.is_last = false; // we will have at a minimum a VORBIS_COMMENT afterwards - encoder->private_->metadata.length = STREAM_METADATA_STREAMINFO_LENGTH; - encoder->private_->metadata.data.stream_info.min_blocksize = encoder->protected_->blocksize; // this encoder uses the same blocksize for the whole stream - encoder->private_->metadata.data.stream_info.max_blocksize = encoder->protected_->blocksize; - encoder->private_->metadata.data.stream_info.min_framesize = 0; // we don't know this yet; have to fill it in later - encoder->private_->metadata.data.stream_info.max_framesize = 0; // we don't know this yet; have to fill it in later - encoder->private_->metadata.data.stream_info.sample_rate = encoder->protected_->sample_rate; - encoder->private_->metadata.data.stream_info.channels = encoder->protected_->channels; - encoder->private_->metadata.data.stream_info.bits_per_sample = encoder->protected_->bits_per_sample; - encoder->private_->metadata.data.stream_info.total_samples = encoder->protected_->total_samples_estimate; // we will replace this later with the real total - memset(encoder->private_->metadata.data.stream_info.md5sum, 0, 16); // we don't know this yet; have to fill it in later - MD5Init(&encoder->private_->md5context); - if(!bitbuffer_clear(encoder->private_->frame)) - return encoder->protected_->state = STREAM_ENCODER_MEMORY_ALLOCATION_ERROR; - if(!add_metadata_block(&encoder->private_->metadata, encoder->private_->frame)) - return encoder->protected_->state = STREAM_ENCODER_FRAMING_ERROR; - if(!write_bitbuffer_(0)) { - // the above function sets the state for us in case of an error - return encoder->protected_->state; - } - - // Now that the STREAMINFO block is written, we can init this to an absurdly-high value... - encoder->private_->metadata.data.stream_info.min_framesize = (1u << STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN) - 1; - // ... and clear this to 0 - encoder->private_->metadata.data.stream_info.total_samples = 0; - - // Check to see if the supplied metadata contains a VORBIS_COMMENT; - // if not, we will write an empty one (add_metadata_block() - // automatically supplies the vendor string). - if(!metadata_has_vorbis_comment) { - StreamMetadata vorbis_comment; - vorbis_comment.type = METADATA_TYPE_VORBIS_COMMENT; - vorbis_comment.is_last = (encoder->protected_->num_metadata_blocks == 0); - vorbis_comment.length = 4 + 4; // MAGIC NUMBER - vorbis_comment.data.vorbis_comment.vendor_string.length = 0; - vorbis_comment.data.vorbis_comment.vendor_string.entry = 0; - vorbis_comment.data.vorbis_comment.num_comments = 0; - vorbis_comment.data.vorbis_comment.comments = 0; - if(!bitbuffer_clear(encoder->private_->frame)) - return encoder->protected_->state = STREAM_ENCODER_MEMORY_ALLOCATION_ERROR; - if(!add_metadata_block(&vorbis_comment, encoder->private_->frame)) - return encoder->protected_->state = STREAM_ENCODER_FRAMING_ERROR; - if(!write_bitbuffer_(0)) { - // the above function sets the state for us in case of an error - return encoder->protected_->state; - } - } - - // write the user's metadata blocks - for(i = 0; i < encoder->protected_->num_metadata_blocks; i++) { - encoder->protected_->metadata[i]->is_last = (i == encoder->protected_->num_metadata_blocks - 1); - if(!bitbuffer_clear(encoder->private_->frame)) - return encoder->protected_->state = STREAM_ENCODER_MEMORY_ALLOCATION_ERROR; - if(!add_metadata_block(encoder->protected_->metadata[i], encoder->private_->frame)) - return encoder->protected_->state = STREAM_ENCODER_FRAMING_ERROR; - if(!write_bitbuffer_(0)) { - // the above function sets the state for us in case of an error - return encoder->protected_->state; - } - } - - if(encoder->protected_->verify) - encoder->private_->verify.state_hint = ENCODER_IN_AUDIO; - - return encoder->protected_->state; - } - */ - - /* - void stream_encoder_finish(StreamEncoder *encoder) - { - ASSERT(0 != encoder); - - if(encoder->protected_->state == STREAM_ENCODER_UNINITIALIZED) - return; - - if(encoder->protected_->state == STREAM_ENCODER_OK && !encoder->private_->is_being_deleted) { - if(encoder->private_->current_sample_number != 0) { - encoder->protected_->blocksize = encoder->private_->current_sample_number; - process_frame_(true); // true => is last frame - } - } - - MD5Final(encoder->private_->metadata.data.stream_info.md5sum, &encoder->private_->md5context); - - if(encoder->protected_->state == STREAM_ENCODER_OK && !encoder->private_->is_being_deleted) { - encoder->private_->metadata_callback(&encoder->private_->metadata, encoder->private_->client_data); - } - - if(encoder->protected_->verify && 0 != encoder->private_->verify.decoder) - stream_decoder_finish(encoder->private_->verify.decoder); - - free_(encoder); - set_defaults_(encoder); - - encoder->protected_->state = STREAM_ENCODER_UNINITIALIZED; - } - */ - public void setVerify(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - verify = value; - } - - public void setStreamableSubset(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - streamable_subset = value; - } - - public void setDoMidSideStereo(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - do_mid_side_stereo = value; - } - - public void setLooseMidSideStereo(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - loose_mid_side_stereo = value; - } - - public void setChannels(int value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - channels = value; - } - - public void setBitsPerSample(int value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - bits_per_sample = value; - } - - public void setSampleRate(int value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - sample_rate = value; - } - - public void setBlocksize(int value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - blocksize = value; - } - - public void setMaxLPCOrder(int value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - max_lpc_order = value; - } - - public void setQLPCoeffPrecision(int value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - qlp_coeff_precision = value; - } - - public void setDoQLPCoeffPrecSearch(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - do_qlp_coeff_prec_search = value; - } - - public void setDoExhaustiveModelSearch(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - do_exhaustive_model_search = value; - } - - public void setMinResidualPartitionOrder(int value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - min_residual_partition_order = value; - } - - public void setMaxResidualPartitionOrder(int value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - max_residual_partition_order = value; - } - - public void setTotalSamplesEstimate(long value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - total_samples_estimate = value; - } - - /* - public void set_metadata(StreamMetadata **metadata, int num_blocks) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - metadata = metadata; - num_metadata_blocks = num_blocks; - } - */ - - /* - boolean set_write_callback(StreamEncoderWriteCallback value) - { - ASSERT(0 != encoder); - ASSERT(0 != value); - if (state != STREAM_ENCODER_UNINITIALIZED) - return false; - encoder->private_->write_callback = value; - return true; - } - */ - - /* - boolean set_metadata_callback(StreamEncoderMetadataCallback value) - { - ASSERT(0 != encoder); - ASSERT(0 != value); - if (state != STREAM_ENCODER_UNINITIALIZED) - return false; - encoder->private_->metadata_callback = value; - return true; - } - */ - - /* - boolean set_client_data(void *value) - { - ASSERT(0 != encoder); - if (state != STREAM_ENCODER_UNINITIALIZED) - return false; - encoder->private_->client_data = value; - return true; - } - */ - - /* - * These three functions are not static, but not publically exposed in - * include/FLAC/ either. They are used by the test suite. - */ - public void disableConstantSubframes(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - disable_constant_subframes = value; - } - - public void disableFixedSubframes(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - disable_fixed_subframes = value; - } - - public void disableVerbatimSubframes(boolean value) { - if (state != STREAM_ENCODER_UNINITIALIZED) return; - disable_verbatim_subframes = value; - } - - public int getState() { - return state; - } - - /* - public int getVerifyDecoderState() { - if (verify) - return stream_decoder_get_state(verify.decoder); - else - return STREAM_DECODER_UNINITIALIZED; - } - */ - - /* - char *get_resolved_state_string(StreamEncoder *encoder) - { - if (state != STREAM_ENCODER_VERIFY_DECODER_ERROR) - return StreamEncoderStateString[state]; - else - return StreamDecoderStateString[stream_decoder_get_state(verify.decoder)]; - } - */ - - /* - void get_verify_decoder_error_stats(StreamEncoder *encoder, uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, int *expected, int *got) - { - ASSERT(0 != encoder); - if (0 != absolute_sample) - *absolute_sample = verify.error_stats.absolute_sample; - if (0 != frame_number) - *frame_number = verify.error_stats.frame_number; - if (0 != channel) - *channel = verify.error_stats.channel; - if (0 != sample) - *sample = verify.error_stats.sample; - if (0 != expected) - *expected = verify.error_stats.expected; - if (0 != got) - *got = verify.error_stats.got; - } - */ - - public boolean getVerify() { - return verify; - } - - public boolean getStreamableSubset() { - return streamable_subset; - } - - public boolean getDoMidSideStereo() { - return do_mid_side_stereo; - } - - public boolean getLooseMidSideStereo() { - return loose_mid_side_stereo; - } - - public int getChannels() { - return channels; - } - - public int getBitsPerSample() { - return bits_per_sample; - } - - public int getSampleRate() { - return sample_rate; - } - - public int getBlocksize() { - return blocksize; - } - - public int getMaxLPCOrder() { - return max_lpc_order; - } - - public int getQLPCoeffPrecision() { - return qlp_coeff_precision; - } - - public boolean getDoQLPCoeffPrecSearch() { - return do_qlp_coeff_prec_search; - } - - public boolean getDoEscapeCoding() { - return do_escape_coding; - } - - public boolean getDoExhaustiveModelSearch() { - return do_exhaustive_model_search; - } - - public int getMinResidualPartitionOrder() { - return min_residual_partition_order; - } - - public int getMaxResidualPartitionOrder() { - return max_residual_partition_order; - } - - public int getRiceParameterSearchDist() { - return rice_parameter_search_dist; - } - - public long getTotalSamplesEstimate() { - return total_samples_estimate; - } - - /* - public boolean process(int * buffer[], unsigned samples) - { - unsigned i, j, channel; - int x, mid, side; - int channels = channels, blocksize = blocksize; - - ASSERT(0 != encoder); - ASSERT(state == STREAM_ENCODER_OK); - - j = 0; - if (do_mid_side_stereo && channels == 2) { - do { - if (verify) - append_to_verify_fifo_(&verify.input_fifo, buffer, j, channels, min(blocksize-current_sample_number, samples-j)); - - for(i = current_sample_number; i < blocksize && j < samples; i++, j++) { - x = mid = side = buffer[0][j]; - integer_signal[0][i] = x; - real_signal[0][i] = (double)x; - x = buffer[1][j]; - integer_signal[1][i] = x; - real_signal[1][i] = (double)x; - mid += x; - side -= x; - mid >>= 1; // NOTE: not the same as 'mid = (buffer[0][j] + buffer[1][j]) / 2' ! - integer_signal_mid_side[1][i] = side; - integer_signal_mid_side[0][i] = mid; - real_signal_mid_side[1][i] = (double)side; - real_signal_mid_side[0][i] = (double)mid; - current_sample_number++; - } - if (i == blocksize) { - if (!process_frame_(false)) // false => not last frame - return false; - } - } while(j < samples); - } - else { - do { - if (verify) - append_to_verify_fifo_(&verify.input_fifo, buffer, j, channels, min(blocksize-current_sample_number, samples-j)); - - for(i = current_sample_number; i < blocksize && j < samples; i++, j++) { - for(channel = 0; channel < channels; channel++) { - x = buffer[channel][j]; - integer_signal[channel][i] = x; - real_signal[channel][i] = (double)x; - } - current_sample_number++; - } - if (i == blocksize) { - if (!process_frame_(false)) // false => not last frame - return false; - } - } while(j < samples); - } - - return true; - } - */ - - /* - public boolean process_interleaved(int[] buffer, int samples) { - int i, j, k, channel; - int x, mid, side; - int channels = channels, blocksize = blocksize; - - j = k = 0; - if (do_mid_side_stereo && channels == 2) { - do { - if (verify) - appendToVerifyFifoInterleaved(verifyData.input_fifo, buffer, j, channels, Math.min(blocksize-current_sample_number, samples-j)); - - for(i = current_sample_number; i < blocksize && j < samples; i++, j++) { - x = mid = side = buffer[k++]; - integer_signal[0][i] = x; - real_signal[0][i] = (double)x; - x = buffer[k++]; - integer_signal[1][i] = x; - real_signal[1][i] = (double)x; - mid += x; - side -= x; - mid >>= 1; // NOTE: not the same as 'mid = (left + right) / 2' ! - integer_signal_mid_side[1][i] = side; - integer_signal_mid_side[0][i] = mid; - real_signal_mid_side[1][i] = (double)side; - real_signal_mid_side[0][i] = (double)mid; - current_sample_number++; - } - if (i == blocksize) { - if (!processFrame(false)) // false => not last frame - return false; - } - } while(j < samples); - } - else { - do { - if (verify) - appendToVerifyFifoInterleaved(verifyData.input_fifo, buffer, j, channels, Math.min(blocksize-current_sample_number, samples-j)); - - for(i = current_sample_number; i < blocksize && j < samples; i++, j++) { - for(channel = 0; channel < channels; channel++) { - x = buffer[k++]; - integer_signal[channel][i] = x; - real_signal[channel][i] = (double)x; - } - current_sample_number++; - } - if (i == blocksize) { - if (!processFrame(false)) // false => not last frame - return false; - } - } while(j < samples); - } - - return true; - } - */ - - /*********************************************************************** - * - * Private class methods - * - ***********************************************************************/ - - public void setDefaults() { - - verify = false; - streamable_subset = true; - do_mid_side_stereo = false; - loose_mid_side_stereo = false; - channels = 2; - bits_per_sample = 16; - sample_rate = 44100; - blocksize = 1152; - max_lpc_order = 0; - qlp_coeff_precision = 0; - do_qlp_coeff_prec_search = false; - do_exhaustive_model_search = false; - do_escape_coding = false; - min_residual_partition_order = 0; - max_residual_partition_order = 0; - rice_parameter_search_dist = 0; - total_samples_estimate = 0; - //metadata = null; - num_metadata_blocks = 0; - - disable_constant_subframes = false; - disable_fixed_subframes = false; - disable_verbatim_subframes = false; - //write_callback = 0; - //metadata_callback = 0; - //client_data = 0; - } - - /* - void free_() - { - unsigned i, channel; - - ASSERT(0 != encoder); - for(i = 0; i < channels; i++) { - if (0 != integer_signal_unaligned[i]) { - free(integer_signal_unaligned[i]); - integer_signal_unaligned[i] = 0; - } - if (0 != real_signal_unaligned[i]) { - free(real_signal_unaligned[i]); - real_signal_unaligned[i] = 0; - } - } - for(i = 0; i < 2; i++) { - if (0 != integer_signal_mid_side_unaligned[i]) { - free(integer_signal_mid_side_unaligned[i]); - integer_signal_mid_side_unaligned[i] = 0; - } - if (0 != real_signal_mid_side_unaligned[i]) { - free(real_signal_mid_side_unaligned[i]); - real_signal_mid_side_unaligned[i] = 0; - } - } - for(channel = 0; channel < channels; channel++) { - for(i = 0; i < 2; i++) { - if (0 != residual_workspace_unaligned[channel][i]) { - free(residual_workspace_unaligned[channel][i]); - residual_workspace_unaligned[channel][i] = 0; - } - } - } - for(channel = 0; channel < 2; channel++) { - for(i = 0; i < 2; i++) { - if (0 != residual_workspace_mid_side_unaligned[channel][i]) { - free(residual_workspace_mid_side_unaligned[channel][i]); - residual_workspace_mid_side_unaligned[channel][i] = 0; - } - } - } - if (0 != abs_residual_unaligned) { - free(abs_residual_unaligned); - abs_residual_unaligned = 0; - } - if (0 != abs_residual_partition_sums_unaligned) { - free(abs_residual_partition_sums_unaligned); - abs_residual_partition_sums_unaligned = 0; - } - if (0 != raw_bits_per_partition_unaligned) { - free(raw_bits_per_partition_unaligned); - raw_bits_per_partition_unaligned = 0; - } - if (verify) { - for(i = 0; i < channels; i++) { - if (0 != verifyData.input_fifo.data[i]) { - free(verifyData.input_fifo.data[i]); - verifyData.input_fifo.data[i] = 0; - } - } - } - bitbuffer_free(frame); - } - */ - - /* - private boolean resize_buffers_(int new_size) { - boolean ok; - int i, channel; - - // To avoid excessive malloc'ing, we only grow the buffer; no shrinking. - if (new_size <= input_capacity) return true; - - ok = true; - - // WATCHOUT: lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx() - // requires that the input arrays (in our case the integer signals) - // have a buffer of up to 3 zeroes in front (at negative indices) for - // alignment purposes; we use 4 to keep the data well-aligned. - - for(i = 0; ok && i < channels; i++) { - ok = ok && memory_alloc_aligned_int32_array(new_size+4, integer_signal_unaligned[i], integer_signal[i]); - ok = ok && memory_alloc_aligned_real_array(new_size, real_signal_unaligned[i], real_signal[i]); - memset(integer_signal[i], 0, sizeof(int)*4); - integer_signal[i] += 4; - } - for(i = 0; ok && i < 2; i++) { - ok = ok && memory_alloc_aligned_int32_array(new_size+4, &integer_signal_mid_side_unaligned[i], &integer_signal_mid_side[i]); - ok = ok && memory_alloc_aligned_real_array(new_size, &real_signal_mid_side_unaligned[i], &real_signal_mid_side[i]); - memset(integer_signal_mid_side[i], 0, sizeof(int)*4); - integer_signal_mid_side[i] += 4; - } - for(channel = 0; ok && channel < channels; channel++) { - for(i = 0; ok && i < 2; i++) { - ok = ok && memory_alloc_aligned_int32_array(new_size, &residual_workspace_unaligned[channel][i], &residual_workspace[channel][i]); - } - } - for(channel = 0; ok && channel < 2; channel++) { - for(i = 0; ok && i < 2; i++) { - ok = ok && memory_alloc_aligned_int32_array(new_size, &residual_workspace_mid_side_unaligned[channel][i], &residual_workspace_mid_side[channel][i]); - } - } - ok = ok && memory_alloc_aligned_uint32_array(new_size, &abs_residual_unaligned, &abs_residual); - if (precompute_partition_sums || do_escape_coding) // we require precompute_partition_sums if do_escape_coding because of their intertwined nature - ok = ok && memory_alloc_aligned_uint64_array(new_size * 2, &abs_residual_partition_sums_unaligned, &abs_residual_partition_sums); - if (do_escape_coding) - ok = ok && memory_alloc_aligned_unsigned_array(new_size * 2, &raw_bits_per_partition_unaligned, &raw_bits_per_partition); - - if (ok) - input_capacity = new_size; - else - state = STREAM_ENCODER_MEMORY_ALLOCATION_ERROR; - - return ok; - } - */ - - /* - private boolean writeBitBuffer(int samples) { - byte[] buffer; - unsigned bytes; - - bitbuffer_get_buffer(frame, &buffer, &bytes); - - if (verify) { - verifyData.output.data = buffer; - verifyData.output.bytes = bytes; - if (verifyData.state_hint == ENCODER_IN_MAGIC) { - verifyData.needs_magic_hack = true; - } - else { - if (!stream_decoder_process_single(verifyData.decoder)) { - bitbuffer_release_buffer(frame); - if (state != STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA) - state = STREAM_ENCODER_VERIFY_DECODER_ERROR; - return false; - } - } - } - - if (write_callback(buffer, bytes, samples, current_frame_number, client_data) != STREAM_ENCODER_WRITE_STATUS_OK) { - bitbuffer_release_buffer(frame); - state = STREAM_ENCODER_FATAL_ERROR_WHILE_WRITING; - return false; - } - - bitbuffer_release_buffer(frame); - - if (samples > 0) { - metadata.data.stream_info.min_framesize = min(bytes, metadata.data.stream_info.min_framesize); - metadata.data.stream_info.max_framesize = max(bytes, metadata.data.stream_info.max_framesize); - } - - return true; - } - */ - - /* - private boolean processFrame(boolean is_last_frame) { - - // Accumulate raw signal to the MD5 signature - if (!MD5Accumulate(&md5context, (int * *)integer_signal, channels, blocksize, (bits_per_sample+7) / 8)) { - state = STREAM_ENCODER_MEMORY_ALLOCATION_ERROR; - return false; - } - - // Process the frame header and subframes into the frame bitbuffer - if (!process_subframes_(is_last_frame)) { - // the above function sets the state for us in case of an error - return false; - } - - // Zero-pad the frame to a byte_boundary - if (!bitbuffer_zero_pad_to_byte_boundary(frame)) { - state = STREAM_ENCODER_MEMORY_ALLOCATION_ERROR; - return false; - } - - // CRC-16 the whole thing - ASSERT(bitbuffer_is_byte_aligned(frame)); - bitbuffer_write_raw_uint32(frame, bitbuffer_get_write_crc16(frame), FRAME_FOOTER_CRC_LEN); - - // Write it - if (!write_bitbuffer_(blocksize)) { - // the above function sets the state for us in case of an error - return false; - } - - // Get ready for the next frame - current_sample_number = 0; - current_frame_number++; - metadata.data.stream_info.total_samples += (uint64)blocksize; - - return true; - } - */ - - /* - private boolean processSubframes(boolean is_last_frame) { - Header frame_header; - int channel, min_partition_order = min_residual_partition_order, max_partition_order; - boolean do_independent, do_mid_side, precompute_partition_sums; - - // Calculate the min,max Rice partition orders - if (is_last_frame) { - max_partition_order = 0; - } - else { - max_partition_order = Frame.get_max_rice_partition_order_from_blocksize(blocksize); - max_partition_order = Math.min(max_partition_order, max_residual_partition_order); - } - min_partition_order = Math.min(min_partition_order, max_partition_order); - - precompute_partition_sums = precompute_partition_sums && ((max_partition_order > min_partition_order) || do_escape_coding); - - // Setup the frame - frame.clear(); - frame_header.blockSize = blocksize; - frame_header.sampleRate = sample_rate; - frame_header.channels = channels; - frame_header.channelAssignment = Constants.CHANNEL_ASSIGNMENT_INDEPENDENT; // the default unless the encoder determines otherwise - frame_header.bitsPerSample = bits_per_sample; - frame_header.frameNumber = current_frame_number; - - // Figure out what channel assignments to try - if (do_mid_side_stereo) { - if (loose_mid_side_stereo) { - if (loose_mid_side_stereo_frame_count == 0) { - do_independent = true; - do_mid_side = true; - } - else { - do_independent = (last_channel_assignment == Constants.CHANNEL_ASSIGNMENT_INDEPENDENT); - do_mid_side = !do_independent; - } - } - else { - do_independent = true; - do_mid_side = true; - } - } - else { - do_independent = true; - do_mid_side = false; - } - - // Check for wasted bits; set effective bps for each subframe - if (do_independent) { - for(channel = 0; channel < channels; channel++) { - int w = get_wasted_bits_(integer_signal[channel], blocksize); - subframe_workspace[channel][0].wasted_bits = subframe_workspace[channel][1].wasted_bits = w; - subframe_bps[channel] = bits_per_sample - w; - } - } - if (do_mid_side) { - ASSERT(channels == 2); - for(channel = 0; channel < 2; channel++) { - unsigned w = get_wasted_bits_(integer_signal_mid_side[channel], blocksize); - subframe_workspace_mid_side[channel][0].wasted_bits = subframe_workspace_mid_side[channel][1].wasted_bits = w; - subframe_bps_mid_side[channel] = bits_per_sample - w + (channel==0? 0:1); - } - } - - // First do a normal encoding pass of each independent channel - if (do_independent) { - for(channel = 0; channel < channels; channel++) { - if (! - process_subframe_( - encoder, - min_partition_order, - max_partition_order, - precompute_partition_sums, - frame_header, - subframe_bps[channel], - integer_signal[channel], - real_signal[channel], - subframe_workspace_ptr[channel], - partitioned_rice_contents_workspace_ptr[channel], - residual_workspace[channel], - best_subframe+channel, - best_subframe_bits+channel - ) - ) - return false; - } - } - - // Now do mid and side channels if requested - if (do_mid_side) { - - for(channel = 0; channel < 2; channel++) { - if (! - process_subframe_( - encoder, - min_partition_order, - max_partition_order, - precompute_partition_sums, - frame_header, - subframe_bps_mid_side[channel], - integer_signal_mid_side[channel], - real_signal_mid_side[channel], - subframe_workspace_ptr_mid_side[channel], - partitioned_rice_contents_workspace_ptr_mid_side[channel], - residual_workspace_mid_side[channel], - best_subframe_mid_side+channel, - best_subframe_bits_mid_side+channel - ) - ) - return false; - } - } - - // Compose the frame bitbuffer - if (do_mid_side) { - unsigned left_bps = 0, right_bps = 0; // initialized only to prevent superfluous compiler warning - ChannelBase left_subframe, right_subframe; // initialized only to prevent superfluous compiler warning - ChannelAssignment channel_assignment; - - if (loose_mid_side_stereo && loose_mid_side_stereo_frame_count > 0) { - channel_assignment = (last_channel_assignment == CHANNEL_ASSIGNMENT_INDEPENDENT? CHANNEL_ASSIGNMENT_INDEPENDENT : CHANNEL_ASSIGNMENT_MID_SIDE); - } - else { - int[] bits = new int[4]; // WATCHOUT - indexed by ChannelAssignment - int min_bits; - int ca; - - // We have to figure out which channel assignent results in the smallest frame - bits[CHANNEL_ASSIGNMENT_INDEPENDENT] = best_subframe_bits [0] + best_subframe_bits [1]; - bits[CHANNEL_ASSIGNMENT_LEFT_SIDE ] = best_subframe_bits [0] + best_subframe_bits_mid_side[1]; - bits[CHANNEL_ASSIGNMENT_RIGHT_SIDE ] = best_subframe_bits [1] + best_subframe_bits_mid_side[1]; - bits[CHANNEL_ASSIGNMENT_MID_SIDE ] = best_subframe_bits_mid_side[0] + best_subframe_bits_mid_side[1]; - - for(channel_assignment = (ChannelAssignment)0, min_bits = bits[0], ca = (ChannelAssignment)1; (int)ca <= 3; ca = (ChannelAssignment)((int)ca + 1)) { - if (bits[ca] < min_bits) { - min_bits = bits[ca]; - channel_assignment = ca; - } - } - } - - frame_header.channel_assignment = channel_assignment; - - if (!frame_add_header(frame_header, streamable_subset, is_last_frame, frame)) { - state = STREAM_ENCODER_FRAMING_ERROR; - return false; - } - - switch(channel_assignment) { - case CHANNEL_ASSIGNMENT_INDEPENDENT: - left_subframe = subframe_workspace [0][best_subframe [0]]; - right_subframe = subframe_workspace [1][best_subframe [1]]; - break; - case CHANNEL_ASSIGNMENT_LEFT_SIDE: - left_subframe = subframe_workspace [0][best_subframe [0]]; - right_subframe = subframe_workspace_mid_side[1][best_subframe_mid_side[1]]; - break; - case CHANNEL_ASSIGNMENT_RIGHT_SIDE: - left_subframe = subframe_workspace_mid_side[1][best_subframe_mid_side[1]]; - right_subframe = subframe_workspace [1][best_subframe [1]]; - break; - case CHANNEL_ASSIGNMENT_MID_SIDE: - left_subframe = subframe_workspace_mid_side[0][best_subframe_mid_side[0]]; - right_subframe = subframe_workspace_mid_side[1][best_subframe_mid_side[1]]; - break; - default: - ASSERT(0); - } - - switch(channel_assignment) { - case CHANNEL_ASSIGNMENT_INDEPENDENT: - left_bps = subframe_bps [0]; - right_bps = subframe_bps [1]; - break; - case CHANNEL_ASSIGNMENT_LEFT_SIDE: - left_bps = subframe_bps [0]; - right_bps = subframe_bps_mid_side[1]; - break; - case CHANNEL_ASSIGNMENT_RIGHT_SIDE: - left_bps = subframe_bps_mid_side[1]; - right_bps = subframe_bps [1]; - break; - case CHANNEL_ASSIGNMENT_MID_SIDE: - left_bps = subframe_bps_mid_side[0]; - right_bps = subframe_bps_mid_side[1]; - break; - default: - ASSERT(0); - } - - // note that encoder_add_subframe_ sets the state for us in case of an error - if (!add_subframe_(frame_header, left_bps , left_subframe , frame)) - return false; - if (!add_subframe_(frame_header, right_bps, right_subframe, frame)) - return false; - } - else { - if (!frame_add_header(frame_header, streamable_subset, is_last_frame, frame)) { - state = STREAM_ENCODER_FRAMING_ERROR; - return false; - } - - for(channel = 0; channel < channels; channel++) { - if (!add_subframe_(frame_header, subframe_bps[channel], subframe_workspace[channel][best_subframe[channel]], frame)) { - // the above function sets the state for us in case of an error - return false; - } - } - } - - if (loose_mid_side_stereo) { - loose_mid_side_stereo_frame_count++; - if (loose_mid_side_stereo_frame_count >= loose_mid_side_stereo_frames) - loose_mid_side_stereo_frame_count = 0; - } - - last_channel_assignment = frame_header.channel_assignment; - - return true; - } - */ - - /* - private boolean processSubframe(int min_partition_order, - int max_partition_order, - boolean precompute_partition_sums, - Header frame_header, - int subframe_bps, - int[] integer_signal, - double[] real_signal, - Subframe[] subframe], - EntropyPartitionedRiceContents[] partitioned_rice_contents, - int[] residual, - int *best_subframe, - int *best_bits - ) - { - double[] fixed_residual_bits_per_sample = new double[MAX_FIXED_ORDER+1]; - double lpc_residual_bits_per_sample; - double[] autoc = new double[MAX_LPC_ORDER+1]; // WATCHOUT: the size is important even though max_lpc_order might be less; some asm routines need all the space - double[] lpc_error = new double[MAX_LPC_ORDER]; - int min_lpc_order, max_lpc_order, lpc_order; - int min_fixed_order, max_fixed_order, guess_fixed_order, fixed_order; - int min_qlp_coeff_precision, max_qlp_coeff_precision, qlp_coeff_precision; - int rice_parameter; - int _candidate_bits, _best_bits; - int _best_subframe; - - // verbatim subframe is the baseline against which we measure other compressed subframes - _best_subframe = 0; - if (disable_verbatim_subframes && frame_header.blocksize >= MAX_FIXED_ORDER) - _best_bits = UINT_MAX; - else - _best_bits = evaluateVerbatimSubframe(integer_signal, frame_header.blocksize, subframe_bps, subframe[_best_subframe]); - - if (frame_header.blocksize >= MAX_FIXED_ORDER) { - unsigned signal_is_constant = false; - guess_fixed_order = local_fixed_compute_best_predictor(integer_signal+MAX_FIXED_ORDER, frame_header.blocksize-MAX_FIXED_ORDER, fixed_residual_bits_per_sample); - // check for constant subframe - if (!disable_constant_subframes && fixed_residual_bits_per_sample[1] == 0.0) { - // the above means integer_signal+MAX_FIXED_ORDER is constant, now we just have to check the warmup samples - unsigned i; - signal_is_constant = true; - for(i = 1; i <= MAX_FIXED_ORDER; i++) { - if (integer_signal[0] != integer_signal[i]) { - signal_is_constant = false; - break; - } - } - } - if (signal_is_constant) { - _candidate_bits = evaluate_constant_subframe_(integer_signal[0], subframe_bps, subframe[!_best_subframe]); - if (_candidate_bits < _best_bits) { - _best_subframe = !_best_subframe; - _best_bits = _candidate_bits; - } - } - else { - if (!disable_fixed_subframes || (max_lpc_order == 0 && _best_bits == UINT_MAX)) { - // encode fixed - if (do_exhaustive_model_search) { - min_fixed_order = 0; - max_fixed_order = MAX_FIXED_ORDER; - } - else { - min_fixed_order = max_fixed_order = guess_fixed_order; - } - for(fixed_order = min_fixed_order; fixed_order <= max_fixed_order; fixed_order++) { - if (fixed_residual_bits_per_sample[fixed_order] >= (double)subframe_bps) - continue; // don't even try - rice_parameter = (fixed_residual_bits_per_sample[fixed_order] > 0.0)? (unsigned)(fixed_residual_bits_per_sample[fixed_order]+0.5) : 0; // 0.5 is for rounding - rice_parameter++; // to account for the signed->unsigned conversion during rice coding - if (rice_parameter >= ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - fprintf(stderr, "clipping rice_parameter (%u -> %u) @0\n", rice_parameter, ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1); - rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1; - } - _candidate_bits = - evaluate_fixed_subframe_( - encoder, - integer_signal, - residual[!_best_subframe], - abs_residual, - abs_residual_partition_sums, - raw_bits_per_partition, - frame_header.blocksize, - subframe_bps, - fixed_order, - rice_parameter, - min_partition_order, - max_partition_order, - precompute_partition_sums, - do_escape_coding, - rice_parameter_search_dist, - subframe[!_best_subframe], - partitioned_rice_contents[!_best_subframe] - ); - if (_candidate_bits < _best_bits) { - _best_subframe = !_best_subframe; - _best_bits = _candidate_bits; - } - } - } - - // encode lpc - if (max_lpc_order > 0) { - if (max_lpc_order >= frame_header.blocksize) - max_lpc_order = frame_header.blocksize-1; - else - max_lpc_order = max_lpc_order; - if (max_lpc_order > 0) { - local_lpc_compute_autocorrelation(real_signal, frame_header.blocksize, max_lpc_order+1, autoc); - // if autoc[0] == 0.0, the signal is constant and we usually won't get here, but it can happen - if (autoc[0] != 0.0) { - lpc_compute_lp_coefficients(autoc, max_lpc_order, lp_coeff, lpc_error); - if (do_exhaustive_model_search) { - min_lpc_order = 1; - } - else { - unsigned guess_lpc_order = lpc_compute_best_order(lpc_error, max_lpc_order, frame_header.blocksize, subframe_bps); - min_lpc_order = max_lpc_order = guess_lpc_order; - } - for(lpc_order = min_lpc_order; lpc_order <= max_lpc_order; lpc_order++) { - lpc_residual_bits_per_sample = lpc_compute_expected_bits_per_residual_sample(lpc_error[lpc_order-1], frame_header.blocksize-lpc_order); - if (lpc_residual_bits_per_sample >= (double)subframe_bps) - continue; // don't even try - rice_parameter = (lpc_residual_bits_per_sample > 0.0)? (unsigned)(lpc_residual_bits_per_sample+0.5) : 0; // 0.5 is for rounding - rice_parameter++; // to account for the signed->unsigned conversion during rice coding - if (rice_parameter >= ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - fprintf(stderr, "clipping rice_parameter (%u -> %u) @1\n", rice_parameter, ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1); - rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1; - } - if (do_qlp_coeff_prec_search) { - min_qlp_coeff_precision = MIN_QLP_COEFF_PRECISION; - // ensure a 32-bit datapath throughout for 16bps or less - if (subframe_bps <= 16) - max_qlp_coeff_precision = min(32 - subframe_bps - lpc_order, MAX_QLP_COEFF_PRECISION); - else - max_qlp_coeff_precision = MAX_QLP_COEFF_PRECISION; - } - else { - min_qlp_coeff_precision = max_qlp_coeff_precision = qlp_coeff_precision; - } - for(qlp_coeff_precision = min_qlp_coeff_precision; qlp_coeff_precision <= max_qlp_coeff_precision; qlp_coeff_precision++) { - _candidate_bits = - evaluate_lpc_subframe_( - encoder, - integer_signal, - residual[!_best_subframe], - abs_residual, - abs_residual_partition_sums, - raw_bits_per_partition, - lp_coeff[lpc_order-1], - frame_header.blocksize, - subframe_bps, - lpc_order, - qlp_coeff_precision, - rice_parameter, - min_partition_order, - max_partition_order, - precompute_partition_sums, - do_escape_coding, - rice_parameter_search_dist, - subframe[!_best_subframe], - partitioned_rice_contents[!_best_subframe] - ); - if (_candidate_bits > 0) { // if == 0, there was a problem quantizing the lpcoeffs - if (_candidate_bits < _best_bits) { - _best_subframe = !_best_subframe; - _best_bits = _candidate_bits; - } - } - } - } - } - } - } - } - } - - // under rare circumstances this can happen when all but lpc subframe types are disabled: - if (_best_bits == UINT_MAX) { - ASSERT(_best_subframe == 0); - _best_bits = evaluateVerbatimSubframe(integer_signal, frame_header.blocksize, subframe_bps, subframe[_best_subframe]); - } - - *best_subframe = _best_subframe; - *best_bits = _best_bits; - - return true; - } - */ - - /* - private boolean addSubframe(Header frame_header, int subframe_bps, ChannelBase subframe, BitBuffer frame) { - switch(subframe->type) { - case SUBFRAME_TYPE_CONSTANT: - if (!subframe_add_constant(&(subframe->data.constant), subframe_bps, subframe->wasted_bits, frame)) { - state = STREAM_ENCODER_FATAL_ERROR_WHILE_ENCODING; - return false; - } - break; - case SUBFRAME_TYPE_FIXED: - if (!subframe_add_fixed(&(subframe->data.fixed), frame_header.blocksize - subframe->data.fixed.order, subframe_bps, subframe->wasted_bits, frame)) { - state = STREAM_ENCODER_FATAL_ERROR_WHILE_ENCODING; - return false; - } - break; - case SUBFRAME_TYPE_LPC: - if (!subframe_add_lpc(&(subframe->data.lpc), frame_header.blocksize - subframe->data.lpc.order, subframe_bps, subframe->wasted_bits, frame)) { - state = STREAM_ENCODER_FATAL_ERROR_WHILE_ENCODING; - return false; - } - break; - case SUBFRAME_TYPE_VERBATIM: - if (!subframe_add_verbatim(&(subframe->data.verbatim), frame_header.blocksize, subframe_bps, subframe->wasted_bits, frame)) { - state = STREAM_ENCODER_FATAL_ERROR_WHILE_ENCODING; - return false; - } - break; - default: - ASSERT(0); - } - - return true; - } - */ - - /* - private int evaluateConstantSubframe(int signal, int subframe_bps, ChannelBase subframe) { - subframe->type = SUBFRAME_TYPE_CONSTANT; - subframe->data.constant.value = signal; - - return SUBFRAME_ZERO_PAD_LEN + SUBFRAME_TYPE_LEN + SUBFRAME_WASTED_BITS_FLAG_LEN + subframe_bps; - } - */ - - /* - private int evaluateFixedSubframe(int[] signal, int[] residual, int[] abs_residual, long[] abs_residual_partition_sums, int[] raw_bits_per_partition, int blocksize, int subframe_bps, int order, int rice_parameter, int min_partition_order, int max_partition_order, boolean precompute_partition_sums, boolean do_escape_coding, int rice_parameter_search_dist, ChannelBase subframe, EntropyPartitionedRiceContents partitioned_rice_contents) { - unsigned i, residual_bits; - unsigned residual_samples = blocksize - order; - - fixed_compute_residual(signal+order, residual_samples, order, residual); - - subframe->type = SUBFRAME_TYPE_FIXED; - - subframe->data.fixed.entropy_coding_method.type = ENTROPY_CODING_METHOD_PARTITIONED_RICE; - subframe->data.fixed.entropy_coding_method.data.partitioned_rice.contents = partitioned_rice_contents; - subframe->data.fixed.residual = residual; - - residual_bits = - find_best_partition_order_( - encoder->private_, - residual, - abs_residual, - abs_residual_partition_sums, - raw_bits_per_partition, - residual_samples, - order, - rice_parameter, - min_partition_order, - max_partition_order, - precompute_partition_sums, - do_escape_coding, - rice_parameter_search_dist, - &subframe->data.fixed.entropy_coding_method.data.partitioned_rice - ); - - subframe->data.fixed.order = order; - for(i = 0; i < order; i++) - subframe->data.fixed.warmup[i] = signal[i]; - - return SUBFRAME_ZERO_PAD_LEN + SUBFRAME_TYPE_LEN + SUBFRAME_WASTED_BITS_FLAG_LEN + (order * subframe_bps) + residual_bits; - } - */ - - /* - private int evaluateLPCSubframe(int[] signal, int[] residual, int[] abs_residual, long[] abs_residual_partition_sums, int[] raw_bits_per_partition, double[] lp_coeff, int blocksize, int subframe_bps, int order, int qlp_coeff_precision, int rice_parameter, int min_partition_order, int max_partition_order, boolean precompute_partition_sums, boolean do_escape_coding, int rice_parameter_search_dist, ChannelBase subframe, EntropyPartitionedRiceContents partitioned_rice_contents) { - int[] qlp_coeff = new int[MAX_LPC_ORDER]; - int i, residual_bits; - int quantization, ret; - int residual_samples = blocksize - order; - - // try to keep qlp coeff precision such that only 32-bit math is required for decode of <=16bps streams - if (subframe_bps <= 16) { - ASSERT(order > 0); - ASSERT(order <= MAX_LPC_ORDER); - qlp_coeff_precision = min(qlp_coeff_precision, 32 - subframe_bps - bitmath_ilog2(order)); - } - - ret = lpc_quantize_coefficients(lp_coeff, order, qlp_coeff_precision, qlp_coeff, quantization); - if (ret != 0) - return 0; // this is a hack to indicate to the caller that we can't do lp at this order on this subframe - - if (subframe_bps + qlp_coeff_precision + bitmath_ilog2(order) <= 32) - if (subframe_bps <= 16 && qlp_coeff_precision <= 16) - local_lpc_compute_residual_from_qlp_coefficients_16bit(signal+order, residual_samples, qlp_coeff, order, quantization, residual); - else - local_lpc_compute_residual_from_qlp_coefficients(signal+order, residual_samples, qlp_coeff, order, quantization, residual); - else - local_lpc_compute_residual_from_qlp_coefficients_64bit(signal+order, residual_samples, qlp_coeff, order, quantization, residual); - - subframe->type = SUBFRAME_TYPE_LPC; - - subframe->data.lpc.entropy_coding_method.type = ENTROPY_CODING_METHOD_PARTITIONED_RICE; - subframe->data.lpc.entropy_coding_method.data.partitioned_rice.contents = partitioned_rice_contents; - subframe->data.lpc.residual = residual; - - residual_bits = - find_best_partition_order_( - encoder->private_, - residual, - abs_residual, - abs_residual_partition_sums, - raw_bits_per_partition, - residual_samples, - order, - rice_parameter, - min_partition_order, - max_partition_order, - precompute_partition_sums, - do_escape_coding, - rice_parameter_search_dist, - &subframe->data.fixed.entropy_coding_method.data.partitioned_rice - ); - - subframe->data.lpc.order = order; - subframe->data.lpc.qlp_coeff_precision = qlp_coeff_precision; - subframe->data.lpc.quantization_level = quantization; - memcpy(subframe->data.lpc.qlp_coeff, qlp_coeff, sizeof(int)*MAX_LPC_ORDER); - for(i = 0; i < order; i++) - subframe->data.lpc.warmup[i] = signal[i]; - - return SUBFRAME_ZERO_PAD_LEN + SUBFRAME_TYPE_LEN + SUBFRAME_WASTED_BITS_FLAG_LEN + SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN + SUBFRAME_LPC_QLP_SHIFT_LEN + (order * (qlp_coeff_precision + subframe_bps)) + residual_bits; - } - */ - - /* - private int evaluateVerbatimSubframe(int[] signal, int blocksize, int subframe_bps, ChannelVerbatim subframe) { - - subframe.data = signal; - - return SUBFRAME_ZERO_PAD_LEN + SUBFRAME_TYPE_LEN + SUBFRAME_WASTED_BITS_FLAG_LEN + (blocksize * subframe_bps); - } - */ - - /* - private int findBestPartitionOrder(int[] residual, int[] abs_residual, long[] abs_residual_partition_sums, int[] raw_bits_per_partition, int residual_samples, int predictor_order, int rice_parameter, int min_partition_order, int max_partition_order, boolean precompute_partition_sums, boolean do_escape_coding, int rice_parameter_search_dist, EntropyPartitionedRice best_partitioned_rice) { - int r; - unsigned residual_bits, best_residual_bits = 0; - unsigned residual_sample; - unsigned best_parameters_index = 0; - unsigned blocksize = residual_samples + predictor_order; - - // compute abs(residual) for use later - for(residual_sample = 0; residual_sample < residual_samples; residual_sample++) { - r = residual[residual_sample]; - abs_residual[residual_sample] = (uint32)(r<0? -r : r); - } - - max_partition_order = format_get_max_rice_partition_order_from_blocksize_limited_max_and_predictor_order(max_partition_order, blocksize, predictor_order); - min_partition_order = min(min_partition_order, max_partition_order); - - if (precompute_partition_sums) { - int partition_order; - unsigned sum; - - precompute_partition_info_sums_(abs_residual, abs_residual_partition_sums, residual_samples, predictor_order, min_partition_order, max_partition_order); - - if (do_escape_coding) - precompute_partition_info_escapes_(residual, raw_bits_per_partition, residual_samples, predictor_order, min_partition_order, max_partition_order); - - for(partition_order = (int)max_partition_order, sum = 0; partition_order >= (int)min_partition_order; partition_order--) { - if (! - set_partitioned_rice_with_precompute_( - abs_residual, - abs_residual_partition_sums+sum, - raw_bits_per_partition+sum, - residual_samples, - predictor_order, - rice_parameter, - rice_parameter_search_dist, - (unsigned)partition_order, - do_escape_coding, - &partitioned_rice_contents_extra[!best_parameters_index], - &residual_bits - ) - ) - { - ASSERT(best_residual_bits != 0); - break; - } - sum += 1 << partition_order; - if (best_residual_bits == 0 || residual_bits < best_residual_bits) { - best_residual_bits = residual_bits; - best_parameters_index = !best_parameters_index; - best_partitioned_rice.order = partition_order; - } - } - } - else { - unsigned partition_order; - for(partition_order = min_partition_order; partition_order <= max_partition_order; partition_order++) { - if (! - set_partitioned_rice_( - abs_residual, - residual_samples, - predictor_order, - rice_parameter, - rice_parameter_search_dist, - partition_order, - &partitioned_rice_contents_extra[!best_parameters_index], - &residual_bits - ) - ) - { - break; - } - if (best_residual_bits == 0 || residual_bits < best_residual_bits) { - best_residual_bits = residual_bits; - best_parameters_index = !best_parameters_index; - best_partitioned_rice.order = partition_order; - } - } - } - - // We are allowed to de-the pointer based on our special knowledge; it is to the outside world. - { - EntropyPartitionedRiceContents best_partitioned_rice_contents = (EntropyPartitionedRiceContents)best_partitioned_rice->contents; - format_entropy_coding_method_partitioned_rice_contents_ensure_size(best_partitioned_rice_contents, max(6, best_partitioned_rice->order)); - memcpy(best_partitioned_rice_contents->parameters, partitioned_rice_contents_extra[best_parameters_index].parameters, sizeof(unsigned)*(1<<(best_partitioned_rice->order))); - memcpy(best_partitioned_rice_contents->raw_bits, partitioned_rice_contents_extra[best_parameters_index].raw_bits, sizeof(unsigned)*(1<<(best_partitioned_rice->order))); - } - - return best_residual_bits; - } - */ - - /* - private void precomputePartitionInfoSums( - int[] abs_residual, - long[] abs_residual_partition_sums, - int residual_samples, - int predictor_order, - int min_partition_order, - int max_partition_order - ) - { - int partition_order; - unsigned from_partition, to_partition = 0; - unsigned blocksize = residual_samples + predictor_order; - - // first do max_partition_order - for(partition_order = (int)max_partition_order; partition_order >= 0; partition_order--) { - long abs_residual_partition_sum; - int abs_r; - int partition, partition_sample, partition_samples, residual_sample; - int partitions = 1 << partition_order; - int default_partition_samples = blocksize >> partition_order; - - for(partition = residual_sample = 0; partition < partitions; partition++) { - partition_samples = default_partition_samples; - if (partition == 0) - partition_samples -= predictor_order; - abs_residual_partition_sum = 0; - for(partition_sample = 0; partition_sample < partition_samples; partition_sample++) { - abs_r = abs_residual[residual_sample]; - abs_residual_partition_sum += abs_r; - residual_sample++; - } - abs_residual_partition_sums[partition] = abs_residual_partition_sum; - } - to_partition = partitions; - break; - } - - // now merge partitions for lower orders - for(from_partition = 0, --partition_order; partition_order >= (int)min_partition_order; partition_order--) { - long s; - int i; - int partitions = 1 << partition_order; - for(i = 0; i < partitions; i++) { - s = abs_residual_partition_sums[from_partition]; - from_partition++; - abs_residual_partition_sums[to_partition] = s + abs_residual_partition_sums[from_partition]; - from_partition++; - to_partition++; - } - } - } - */ - - /* - private void precomputePartitionInfoEscapes( - int[] residual, - int[] raw_bits_per_partition, - int residual_samples, - int predictor_order, - int min_partition_order, - int max_partition_order - ) - { - int partition_order; - unsigned from_partition, to_partition = 0; - unsigned blocksize = residual_samples + predictor_order; - - // first do max_partition_order - for(partition_order = (int)max_partition_order; partition_order >= 0; partition_order--) { - int r, residual_partition_min, residual_partition_max; - int silog2_min, silog2_max; - int partition, partition_sample, partition_samples, residual_sample; - int partitions = 1 << partition_order; - int default_partition_samples = blocksize >> partition_order; - - for(partition = residual_sample = 0; partition < partitions; partition++) { - partition_samples = default_partition_samples; - if (partition == 0) - partition_samples -= predictor_order; - residual_partition_min = residual_partition_max = 0; - for(partition_sample = 0; partition_sample < partition_samples; partition_sample++) { - r = residual[residual_sample]; - if (r < residual_partition_min) - residual_partition_min = r; - else if (r > residual_partition_max) - residual_partition_max = r; - residual_sample++; - } - silog2_min = bitmath_silog2(residual_partition_min); - silog2_max = bitmath_silog2(residual_partition_max); - raw_bits_per_partition[partition] = max(silog2_min, silog2_max); - } - to_partition = partitions; - break; - } - - // now merge partitions for lower orders - for(from_partition = 0, --partition_order; partition_order >= (int)min_partition_order; partition_order--) { - int m; - int i; - int partitions = 1 << partition_order; - for(i = 0; i < partitions; i++) { - m = raw_bits_per_partition[from_partition]; - from_partition++; - raw_bits_per_partition[to_partition] = max(m, raw_bits_per_partition[from_partition]); - from_partition++; - to_partition++; - } - } - } - */ - - /* - private VARIABLE_RICE_BITS(value, parameter) { return ((value) >> (parameter)); } - - boolean set_partitioned_rice_( - int[] abs_residual, - int residual_samples, - int predictor_order, - int suggested_rice_parameter, - int rice_parameter_search_dist, - int partition_order, - EntropyPartitionedRiceContents partitioned_rice_contents, - int *bits - ) - { - int rice_parameter, partition_bits; - int best_partition_bits; - int min_rice_parameter, max_rice_parameter, best_rice_parameter = 0; - int bits_ = ENTROPY_CODING_METHOD_TYPE_LEN + ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN; - int *parameters; - - format_entropy_coding_method_partitioned_rice_contents_ensure_size(partitioned_rice_contents, max(6, partition_order)); - parameters = partitioned_rice_contents.parameters; - - if (partition_order == 0) { - unsigned i; - - if (rice_parameter_search_dist) { - if (suggested_rice_parameter < rice_parameter_search_dist) - min_rice_parameter = 0; - else - min_rice_parameter = suggested_rice_parameter - rice_parameter_search_dist; - max_rice_parameter = suggested_rice_parameter + rice_parameter_search_dist; - if (max_rice_parameter >= ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - fprintf(stderr, "clipping rice_parameter (%u -> %u) @2\n", max_rice_parameter, ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1); - max_rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1; - } - } - else - min_rice_parameter = max_rice_parameter = suggested_rice_parameter; - - best_partition_bits = 0xffffffff; - for(rice_parameter = min_rice_parameter; rice_parameter <= max_rice_parameter; rice_parameter++) { - unsigned rice_parameter_estimate = rice_parameter-1; - partition_bits = (1+rice_parameter) * residual_samples; - partition_bits += ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN; - for(i = 0; i < residual_samples; i++) { - partition_bits += VARIABLE_RICE_BITS(abs_residual[i], rice_parameter_estimate); - } - if (partition_bits < best_partition_bits) { - best_rice_parameter = rice_parameter; - best_partition_bits = partition_bits; - } - } - parameters[0] = best_rice_parameter; - bits_ += best_partition_bits; - } - else { - unsigned partition, residual_sample, save_residual_sample, partition_sample; - unsigned partition_samples; - uint64 mean, k; - int partitions = 1 << partition_order; - for(partition = residual_sample = 0; partition < partitions; partition++) { - partition_samples = (residual_samples+predictor_order) >> partition_order; - if (partition == 0) { - if (partition_samples <= predictor_order) - return false; - else - partition_samples -= predictor_order; - } - mean = 0; - save_residual_sample = residual_sample; - for(partition_sample = 0; partition_sample < partition_samples; residual_sample++, partition_sample++) - mean += abs_residual[residual_sample]; - residual_sample = save_residual_sample; - // calc rice_parameter ala LOCO-I - for(rice_parameter = 0, k = partition_samples; k < mean; rice_parameter++, k <<= 1) - ; - if (rice_parameter >= ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - fprintf(stderr, "clipping rice_parameter (%u -> %u) @3\n", rice_parameter, ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1); - rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1; - } - - if (rice_parameter_search_dist) { - if (rice_parameter < rice_parameter_search_dist) - min_rice_parameter = 0; - else - min_rice_parameter = rice_parameter - rice_parameter_search_dist; - max_rice_parameter = rice_parameter + rice_parameter_search_dist; - if (max_rice_parameter >= ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - fprintf(stderr, "clipping rice_parameter (%u -> %u) @4\n", max_rice_parameter, ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1); - max_rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1; - } - } - else - min_rice_parameter = max_rice_parameter = rice_parameter; - - best_partition_bits = 0xffffffff; - for(rice_parameter = min_rice_parameter; rice_parameter <= max_rice_parameter; rice_parameter++) { - unsigned rice_parameter_estimate = rice_parameter-1; - partition_bits = (1+rice_parameter) * partition_samples; - partition_bits += ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN; - save_residual_sample = residual_sample; - for(partition_sample = 0; partition_sample < partition_samples; residual_sample++, partition_sample++) { - partition_bits += VARIABLE_RICE_BITS(abs_residual[residual_sample], rice_parameter); - } - if (rice_parameter != max_rice_parameter) - residual_sample = save_residual_sample; - if (partition_bits < best_partition_bits) { - best_rice_parameter = rice_parameter; - best_partition_bits = partition_bits; - } - } - parameters[partition] = best_rice_parameter; - bits_ += best_partition_bits; - } - } - - *bits = bits_; - return true; - } - */ - - /* - boolean set_partitioned_rice_with_precompute_( - int[] abs_residual, - long[] abs_residual_partition_sums, - int[] raw_bits_per_partition, - int residual_samples, - int predictor_order, - int suggested_rice_parameter, - int rice_parameter_search_dist, - int partition_order, - boolean search_for_escapes, - EntropyPartitionedRiceContents partitioned_rice_contents, - int *bits - ) - { - int rice_parameter, partition_bits; - int best_partition_bits; - int min_rice_parameter, max_rice_parameter, best_rice_parameter = 0; - int flat_bits; - int bits_ = ENTROPY_CODING_METHOD_TYPE_LEN + ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN; - int *parameters, *raw_bits; - - format_entropy_coding_method_partitioned_rice_contents_ensure_size(partitioned_rice_contents, max(6, partition_order)); - parameters = partitioned_rice_contents.parameters; - raw_bits = partitioned_rice_contents.raw_bits; - - if (partition_order == 0) { - unsigned i; - - if (rice_parameter_search_dist) { - if (suggested_rice_parameter < rice_parameter_search_dist) - min_rice_parameter = 0; - else - min_rice_parameter = suggested_rice_parameter - rice_parameter_search_dist; - max_rice_parameter = suggested_rice_parameter + rice_parameter_search_dist; - if (max_rice_parameter >= ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - fprintf(stderr, "clipping rice_parameter (%u -> %u) @5\n", max_rice_parameter, ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1); - max_rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1; - } - } - else - min_rice_parameter = max_rice_parameter = suggested_rice_parameter; - - best_partition_bits = 0xffffffff; - for(rice_parameter = min_rice_parameter; rice_parameter <= max_rice_parameter; rice_parameter++) { - unsigned rice_parameter_estimate = rice_parameter-1; - partition_bits = (1+rice_parameter) * residual_samples; - partition_bits += ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN; - for(i = 0; i < residual_samples; i++) { - partition_bits += VARIABLE_RICE_BITS(abs_residual[i], rice_parameter_estimate); - } - if (partition_bits < best_partition_bits) { - best_rice_parameter = rice_parameter; - best_partition_bits = partition_bits; - } - } - if (search_for_escapes) { - flat_bits = ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN + ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN + raw_bits_per_partition[0] * residual_samples; - if (flat_bits <= best_partition_bits) { - raw_bits[0] = raw_bits_per_partition[0]; - best_rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER; - best_partition_bits = flat_bits; - } - } - parameters[0] = best_rice_parameter; - bits_ += best_partition_bits; - } - else { - unsigned partition, residual_sample, save_residual_sample, partition_sample; - unsigned partition_samples; - uint64 mean, k; - unsigned partitions = 1 << partition_order; - for(partition = residual_sample = 0; partition < partitions; partition++) { - partition_samples = (residual_samples+predictor_order) >> partition_order; - if (partition == 0) { - if (partition_samples <= predictor_order) - return false; - else - partition_samples -= predictor_order; - } - mean = abs_residual_partition_sums[partition]; - // calc rice_parameter ala LOCO-I - for(rice_parameter = 0, k = partition_samples; k < mean; rice_parameter++, k <<= 1) - ; - if (rice_parameter >= ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - fprintf(stderr, "clipping rice_parameter (%u -> %u) @6\n", rice_parameter, ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1); - rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1; - } - - if (rice_parameter_search_dist) { - if (rice_parameter < rice_parameter_search_dist) - min_rice_parameter = 0; - else - min_rice_parameter = rice_parameter - rice_parameter_search_dist; - max_rice_parameter = rice_parameter + rice_parameter_search_dist; - if (max_rice_parameter >= ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - fprintf(stderr, "clipping rice_parameter (%u -> %u) @7\n", max_rice_parameter, ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1); - max_rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER - 1; - } - } - else - min_rice_parameter = max_rice_parameter = rice_parameter; - - best_partition_bits = 0xffffffff; - for(rice_parameter = min_rice_parameter; rice_parameter <= max_rice_parameter; rice_parameter++) { - unsigned rice_parameter_estimate = rice_parameter-1; - partition_bits = (1+rice_parameter) * partition_samples; - partition_bits += ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN; - save_residual_sample = residual_sample; - for(partition_sample = 0; partition_sample < partition_samples; residual_sample++, partition_sample++) { - partition_bits += VARIABLE_RICE_BITS(abs_residual[residual_sample], rice_parameter_estimate); - } - if (rice_parameter != max_rice_parameter) - residual_sample = save_residual_sample; - if (partition_bits < best_partition_bits) { - best_rice_parameter = rice_parameter; - best_partition_bits = partition_bits; - } - } - if (search_for_escapes) { - flat_bits = ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN + ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN + raw_bits_per_partition[partition] * partition_samples; - if (flat_bits <= best_partition_bits) { - raw_bits[partition] = raw_bits_per_partition[partition]; - best_rice_parameter = ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER; - best_partition_bits = flat_bits; - } - } - parameters[partition] = best_rice_parameter; - bits_ += best_partition_bits; - } - } - - *bits = bits_; - return true; - } - */ - - /* - private int getWastedBits(int[] signal, int samples) { - int i, shift; - int x = 0; - - for(i = 0; i < samples && !(x&1); i++) - x |= signal[i]; - - if (x == 0) { - shift = 0; - } - else { - for(shift = 0; !(x&1); shift++) - x >>= 1; - } - - if (shift > 0) { - for(i = 0; i < samples; i++) - signal[i] >>= shift; - } - - return shift; - } - */ - - /* - private void appendToVerifyFifo(verify_input_fifo fifo, int[][] input, int input_offset, unsigned channels, unsigned wide_samples) { - unsigned channel; - - for(channel = 0; channel < channels; channel++) - memcpy(&fifo.data[channel][fifo->tail], &input[channel][input_offset], sizeof(int) * wide_samples); - - fifo.tail += wide_samples; - } - - private void appendToVerifyFifoInterleaved(verify_input_fifo fifo, int input[], int input_offset, int channels, int wide_samples) { - int tail = fifo.tail; - - int sample = input_offset * channels; - for(int wide_sample = 0; wide_sample < wide_samples; wide_sample++) { - for(int channel = 0; channel < channels; channel++) - fifo.data[channel][tail] = input[sample++]; - tail++; - } - fifo.tail = tail; - } - */ - - /* - StreamDecoderReadStatus verify_read_callback_(StreamDecoder decoder, byte buffer[], unsigned *bytes, void *client_data) - { - StreamEncoder *encoder = (StreamEncoder*)client_data; - unsigned encoded_bytes = verifyData.output.bytes; - (void)decoder; - - if (verifyData.needs_magic_hack) { - ASSERT(*bytes >= STREAM_SYNC_LENGTH); - *bytes = STREAM_SYNC_LENGTH; - memcpy(buffer, STREAM_SYNC_STRING, *bytes); - verifyData.needs_magic_hack = false; - } - else { - if (encoded_bytes == 0) { - // If we get here, a FIFO underflow has occurred, which means there is a bug somewhere. - ASSERT(0); - return STREAM_DECODER_READ_STATUS_ABORT; - } - else if (encoded_bytes < *bytes) - *bytes = encoded_bytes; - memcpy(buffer, verifyData.output.data, *bytes); - verifyData.output.data += *bytes; - verifyData.output.bytes -= *bytes; - } - - return STREAM_DECODER_READ_STATUS_CONTINUE; - } - */ - - /* - StreamDecoderWriteStatus verify_write_callback_(StreamDecoder *decoder, Frame *frame, int * buffer[], void *client_data) - { - StreamEncoder *encoder = (StreamEncoder *)client_data; - unsigned channel; - unsigned channels = stream_decoder_get_channels(decoder); - unsigned blocksize = frame->header.blocksize; - unsigned bytes_per_block = sizeof(int) * blocksize; - - for(channel = 0; channel < channels; channel++) { - if (0 != memcmp(buffer[channel], verifyData.input_fifo.data[channel], bytes_per_block)) { - unsigned i, sample = 0; - int expect = 0, got = 0; - - for(i = 0; i < blocksize; i++) { - if (buffer[channel][i] != verifyData.input_fifo.data[channel][i]) { - sample = i; - expect = (int)verifyData.input_fifo.data[channel][i]; - got = (int)buffer[channel][i]; - break; - } - } - ASSERT(i < blocksize); - ASSERT(frame->header.number_type == FRAME_NUMBER_TYPE_SAMPLE_NUMBER); - verifyData.error_stats.absolute_sample = frame->header.number.sample_number + sample; - verifyData.error_stats.frame_number = (unsigned)(frame->header.number.sample_number / blocksize); - verifyData.error_stats.channel = channel; - verifyData.error_stats.sample = sample; - verifyData.error_stats.expected = expect; - verifyData.error_stats.got = got; - state = STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA; - return STREAM_DECODER_WRITE_STATUS_ABORT; - } - } - // dequeue the frame from the fifo - for(channel = 0; channel < channels; channel++) { - memmove(&verifyData.input_fifo.data[channel][0], &verifyData.input_fifo.data[channel][blocksize], verifyData.input_fifo.tail - blocksize); - } - verifyData.input_fifo.tail -= blocksize; - return STREAM_DECODER_WRITE_STATUS_CONTINUE; - } - */ - - /* - void verify_metadata_callback_(StreamDecoder *decoder, StreamMetadata *metadata, void *client_data) - { - (void)decoder, (void)metadata, (void)client_data; - } - */ - - /* - void verify_error_callback_(StreamDecoder *decoder, StreamDecoderErrorStatus status, void *client_data) - { - StreamEncoder *encoder = (StreamEncoder*)client_data; - (void)decoder, (void)status; - state = STREAM_ENCODER_VERIFY_DECODER_ERROR; - } - */ -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FixedPredictor.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FixedPredictor.java deleted file mode 100644 index dcaba3c08dd658cf7d23e91698fc0ce8da1d8a87..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FixedPredictor.java +++ /dev/null @@ -1,242 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * Fixed Predictor utility class. - * @author kc7bfi - */ -public class FixedPredictor { - - private static final double M_LN2 = 0.69314718055994530942; - - /** - * Compute the best predictor order. - * @param data - * @param dataLen - * @param residualBitsPerSample - * @return - */ - public static int computeBestPredictor(int[] data, int dataLen, double[] residualBitsPerSample) { - int lastError0 = data[-1]; - int lastError1 = data[-1] - data[-2]; - int lastError2 = lastError1 - (data[-2] - data[-3]); - int lastError3 = lastError2 - (data[-2] - 2 * data[-3] + data[-4]); - int error, save; - int totalError0 = 0, totalError1 = 0, totalError2 = 0, totalError3 = 0, totalError4 = 0; - int i, order; - - for (i = 0; i < dataLen; i++) { - error = data[i]; - totalError0 += Math.abs(error); - save = error; - error -= lastError0; - totalError1 += Math.abs(error); - lastError0 = save; - save = error; - error -= lastError1; - totalError2 += Math.abs(error); - lastError1 = save; - save = error; - error -= lastError2; - totalError3 += Math.abs(error); - lastError2 = save; - save = error; - error -= lastError3; - totalError4 += Math.abs(error); - lastError3 = save; - } - - if (totalError0 < Math.min(Math.min(Math.min(totalError1, totalError2), totalError3), totalError4)) - order = 0; - else if (totalError1 < Math.min(Math.min(totalError2, totalError3), totalError4)) - order = 1; - else if (totalError2 < Math.min(totalError3, totalError4)) - order = 2; - else if (totalError3 < totalError4) - order = 3; - else - order = 4; - - // Estimate the expected number of bits per residual signal sample. - // 'total_error*' is linearly related to the variance of the residual - // signal, so we use it directly to compute E(|x|) - residualBitsPerSample[0] = (double) ((totalError0 > 0) ? Math.log(M_LN2 * (double) totalError0 / (double) dataLen) / M_LN2 : 0.0); - residualBitsPerSample[1] = (double) ((totalError1 > 0) ? Math.log(M_LN2 * (double) totalError1 / (double) dataLen) / M_LN2 : 0.0); - residualBitsPerSample[2] = (double) ((totalError2 > 0) ? Math.log(M_LN2 * (double) totalError2 / (double) dataLen) / M_LN2 : 0.0); - residualBitsPerSample[3] = (double) ((totalError3 > 0) ? Math.log(M_LN2 * (double) totalError3 / (double) dataLen) / M_LN2 : 0.0); - residualBitsPerSample[4] = (double) ((totalError4 > 0) ? Math.log(M_LN2 * (double) totalError4 / (double) dataLen) / M_LN2 : 0.0); - - return order; - } - - /** - * Compute the best predictor order. - * @param data - * @param dataLen - * @param residualBitsPerSample - * @return - */ - public static int computeBestPredictorWide(int[] data, int dataLen, double[] residualBitsPerSample) { - int lastError0 = data[-1]; - int lastError1 = data[-1] - data[-2]; - int lastError2 = lastError1 - (data[-2] - data[-3]); - int lastError3 = lastError2 - (data[-2] - 2 * data[-3] + data[-4]); - int error, save; - - // totalError* are 64-bits to avoid overflow when encoding - // erratic signals when the bits-per-sample and blocksize are - // large. - long totalError0 = 0, totalError1 = 0, totalError2 = 0, totalError3 = 0, totalError4 = 0; - int i, order; - - for (i = 0; i < dataLen; i++) { - error = data[i]; - totalError0 += Math.abs(error); - save = error; - error -= lastError0; - totalError1 += Math.abs(error); - lastError0 = save; - save = error; - error -= lastError1; - totalError2 += Math.abs(error); - lastError1 = save; - save = error; - error -= lastError2; - totalError3 += Math.abs(error); - lastError2 = save; - save = error; - error -= lastError3; - totalError4 += Math.abs(error); - lastError3 = save; - } - - if (totalError0 < Math.min(Math.min(Math.min(totalError1, totalError2), totalError3), totalError4)) - order = 0; - else if (totalError1 < Math.min(Math.min(totalError2, totalError3), totalError4)) - order = 1; - else if (totalError2 < Math.min(totalError3, totalError4)) - order = 2; - else if (totalError3 < totalError4) - order = 3; - else - order = 4; - - // Estimate the expected number of bits per residual signal sample. - // 'total_error*' is linearly related to the variance of the residual - // signal, so we use it directly to compute E(|x|) - // with VC++ you have to spoon feed it the casting - residualBitsPerSample[0] = (double) ((totalError0 > 0) ? Math.log(M_LN2 * (double) (long) totalError0 / (double) dataLen) / M_LN2 : 0.0); - residualBitsPerSample[1] = (double) ((totalError1 > 0) ? Math.log(M_LN2 * (double) (long) totalError1 / (double) dataLen) / M_LN2 : 0.0); - residualBitsPerSample[2] = (double) ((totalError2 > 0) ? Math.log(M_LN2 * (double) (long) totalError2 / (double) dataLen) / M_LN2 : 0.0); - residualBitsPerSample[3] = (double) ((totalError3 > 0) ? Math.log(M_LN2 * (double) (long) totalError3 / (double) dataLen) / M_LN2 : 0.0); - residualBitsPerSample[4] = (double) ((totalError4 > 0) ? Math.log(M_LN2 * (double) (long) totalError4 / (double) dataLen) / M_LN2 : 0.0); - - return order; - } - - /** - * Compute the residual from the compressed signal. - * @param data - * @param dataLen - * @param order - * @param residual - */ - public static void computeResidual(int[] data, int dataLen, int order, int[] residual) { - int idataLen = (int) dataLen; - - switch (order) { - case 0: - for (int i = 0; i < idataLen; i++) { - residual[i] = data[i]; - } - break; - case 1: - for (int i = 0; i < idataLen; i++) { - residual[i] = data[i] - data[i - 1]; - } - break; - case 2: - for (int i = 0; i < idataLen; i++) { - /* == data[i] - 2*data[i-1] + data[i-2] */ - residual[i] = data[i] - (data[i - 1] << 1) + data[i - 2]; - } - break; - case 3: - for (int i = 0; i < idataLen; i++) { - /* == data[i] - 3*data[i-1] + 3*data[i-2] - data[i-3] */ - residual[i] = data[i] - (((data[i - 1] - data[i - 2]) << 1) + (data[i - 1] - data[i - 2])) - data[i - 3]; - } - break; - case 4: - for (int i = 0; i < idataLen; i++) { - /* == data[i] - 4*data[i-1] + 6*data[i-2] - 4*data[i-3] + data[i-4] */ - residual[i] = data[i] - ((data[i - 1] + data[i - 3]) << 2) + ((data[i - 2] << 2) + (data[i - 2] << 1)) + data[i - 4]; - } - break; - default: - } - } - - /** - * Restore the signal from the fixed predictor. - * @param residual The residual data - * @param dataLen The length of residual data - * @param order The preicate order - * @param data The restored signal (output) - * @param startAt The starting position in the data array - */ - public static void restoreSignal(int[] residual, int dataLen, int order, int[] data, int startAt) { - int idataLen = (int) dataLen; - - switch (order) { - case 0: - for (int i = 0; i < idataLen; i++) { - data[i + startAt] = residual[i]; - } - break; - case 1: - for (int i = 0; i < idataLen; i++) { - data[i + startAt] = residual[i] + data[i + startAt - 1]; - } - break; - case 2: - for (int i = 0; i < idataLen; i++) { - /* == residual[i] + 2*data[i-1] - data[i-2] */ - data[i + startAt] = residual[i] + (data[i + startAt - 1] << 1) - data[i + startAt - 2]; - } - break; - case 3: - for (int i = 0; i < idataLen; i++) { - /* residual[i] + 3*data[i-1] - 3*data[i-2]) + data[i-3] */ - data[i + startAt] = residual[i] + (((data[i + startAt - 1] - data[i + startAt - 2]) << 1) + (data[i + startAt - 1] - data[i + startAt - 2])) + data[i + startAt - 3]; - } - break; - case 4: - for (int i = 0; i < idataLen; i++) { - /* == residual[i] + 4*data[i-1] - 6*data[i-2] + 4*data[i-3] - data[i-4] */ - data[i + startAt] = residual[i] + ((data[i + startAt - 1] + data[i + startAt - 3]) << 2) - ((data[i + startAt - 2] << 2) + (data[i + startAt - 2] << 1)) - data[i + startAt - 4]; - } - break; - default: - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameDecodeException.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameDecodeException.java deleted file mode 100644 index 920e9c820a6e008ce644e66775170360f6d7c711..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameDecodeException.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Created on Jun 30, 2004 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package v4lk.lwbd.decoders.processing.jflac; - - -/** - * @author kc7bfi - *

- * To change the template for this generated type comment go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -public class FrameDecodeException extends Exception { - - /** - * Constructor. - */ - public FrameDecodeException() { - super(); - } - - /** - * Constructor. - * - * @param msg Error message - */ - public FrameDecodeException(String msg) { - super(msg); - } - - /** - * Constructor. - * - * @param err The causing error - */ - public FrameDecodeException(Throwable err) { - super(err); - } - - /** - * Constructor. - * - * @param msg The error message - * @param err The causing error - */ - public FrameDecodeException(String msg, Throwable err) { - super(msg, err); - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameListener.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameListener.java deleted file mode 100644 index 4fbb7700ba45502e886c8d602335cf4e60ce51c6..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameListener.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Created on Jun 2, 2004 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package v4lk.lwbd.decoders.processing.jflac; - -import v4lk.lwbd.decoders.processing.jflac.frame.Frame; -import v4lk.lwbd.decoders.processing.jflac.metadata.Metadata; - -/** - * FrameListener interface. - * This interface defines the singatures for a class to listen - * for frame events from the Decoder. - * - * @author kc7bfi - */ -public interface FrameListener { - - /** - * Called for each Metadata frame read. - * - * @param metadata The metadata frame read - */ - public void processMetadata(Metadata metadata); - - /** - * Called for each data frame read. - * - * @param frame The data frame read - */ - public void processFrame(Frame frame); - - /** - * Called for each frame error detected. - * - * @param msg The error message - */ - public void processError(String msg); -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameListeners.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameListeners.java deleted file mode 100644 index 351807f8afa396f59988288fade494cb9d6b0272..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/FrameListeners.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Created on Jun 28, 2004 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package v4lk.lwbd.decoders.processing.jflac; - -import v4lk.lwbd.decoders.processing.jflac.frame.Frame; -import v4lk.lwbd.decoders.processing.jflac.metadata.Metadata; - -import java.util.HashSet; -import java.util.Iterator; - - -/** - * Class to handle frame listeners. - * - * @author kc7bfi - */ -class FrameListeners implements FrameListener { - private HashSet frameListeners = new HashSet(); - - /** - * Add a frame listener. - * - * @param listener The frame listener to add - */ - public void addFrameListener(FrameListener listener) { - synchronized (frameListeners) { - frameListeners.add(listener); - } - } - - /** - * Remove a frame listener. - * - * @param listener The frame listener to remove - */ - public void removeFrameListener(FrameListener listener) { - synchronized (frameListeners) { - frameListeners.remove(listener); - } - } - - /** - * Process metadata records. - * - * @param metadata the metadata block - * @see FrameListener#processMetadata(org.kc7bfi.jflac.metadata.MetadataBase) - */ - public void processMetadata(Metadata metadata) { - synchronized (frameListeners) { - Iterator it = frameListeners.iterator(); - while (it.hasNext()) { - FrameListener listener = (FrameListener) it.next(); - listener.processMetadata(metadata); - } - } - } - - /** - * Process data frames. - * - * @param frame the data frame - * @see FrameListener#processFrame(v4lk.lwbd.decoders.processing.jflac.frame.Frame) - */ - public void processFrame(Frame frame) { - synchronized (frameListeners) { - Iterator it = frameListeners.iterator(); - while (it.hasNext()) { - FrameListener listener = (FrameListener) it.next(); - listener.processFrame(frame); - } - } - } - - /** - * Called for each frame error detected. - * - * @param msg The error message - * @see FrameListener#processError(String) - */ - public void processError(String msg) { - synchronized (frameListeners) { - Iterator it = frameListeners.iterator(); - while (it.hasNext()) { - FrameListener listener = (FrameListener) it.next(); - listener.processError(msg); - } - } - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/LPCPredictor.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/LPCPredictor.java deleted file mode 100644 index 9caa4aff307f9a14800616534102d9cbde8b13b0..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/LPCPredictor.java +++ /dev/null @@ -1,303 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * LPC Predictor utility class. - * @author kc7bfi - */ -public class LPCPredictor { - //static private final double M_LN2 = 0.69314718055994530942; - - /* - void FLAC__lpc_compute_autocorrelation(double data[], int data_len, int lag, double autoc[]) - { - // - // this version tends to run faster because of better data locality - // ('data_len' is usually much larger than 'lag') - // - double d; - int sample, coeff; - int limit = data_len - lag; - - for(coeff = 0; coeff < lag; coeff++) - autoc[coeff] = 0.0; - for(sample = 0; sample <= limit; sample++) { - d = data[sample]; - for(coeff = 0; coeff < lag; coeff++) - autoc[coeff] += d * data[sample+coeff]; - } - for(; sample < data_len; sample++) { - d = data[sample]; - for(coeff = 0; coeff < data_len - sample; coeff++) - autoc[coeff] += d * data[sample+coeff]; - } - } - - void FLAC__lpc_compute_lp_coefficients(double autoc[], int max_order, double[][] lp_coeff, double error[]) - { - int i, j; - double r, err; - double ref = new double[Constants.MAX_LPC_ORDER]; - double lpc = new double[Constants.MAX_LPC_ORDER]; - - err = autoc[0]; - - for(i = 0; i < max_order; i++) { - // Sum up this iteration's reflection coefficient. - r = -autoc[i+1]; - for(j = 0; j < i; j++) - r -= lpc[j] * autoc[i-j]; - ref[i] = (r/=err); - - // Update LPC coefficients and total error. - lpc[i]=r; - for(j = 0; j < (i>>1); j++) { - double tmp = lpc[j]; - lpc[j] += r * lpc[i-1-j]; - lpc[i-1-j] += r * tmp; - } - if(i & 1) - lpc[j] += lpc[j] * r; - - err *= (1.0 - r * r); - - // save this order - for(j = 0; j <= i; j++) - lp_coeff[i][j] = (double)(-lpc[j]); // negate FIR filter coeff to get predictor coeff - error[i] = (double)err; - } - } - - int FLAC__lpc_quantize_coefficients(double lp_coeff[], int order, int precision, FLAC__int32 qlp_coeff[], int *shift) - { - int i; - double d, cmax = -1e32; - FLAC__int32 qmax, qmin; - int max_shiftlimit = (1 << (FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN-1)) - 1; - int min_shiftlimit = -max_shiftlimit - 1; - - FLAC__ASSERT(precision > 0); - FLAC__ASSERT(precision >= FLAC__MIN_QLP_COEFF_PRECISION); - - // drop one bit for the sign; from here on out we consider only |lp_coeff[i]| - precision--; - qmax = 1 << precision; - qmin = -qmax; - qmax--; - - for(i = 0; i < order; i++) { - if(lp_coeff[i] == 0.0) - continue; - d = fabs(lp_coeff[i]); - if(d > cmax) - cmax = d; - } - redo_it: - if(cmax <= 0.0) { - // => coefficients are all 0, which means our constant-detect didn't work - return 2; - } - else { - int log2cmax; - - (void)frexp(cmax, &log2cmax); - log2cmax--; - *shift = (int)precision - log2cmax - 1; - - if(*shift < min_shiftlimit || *shift > max_shiftlimit) { - #if 0 - //@@@ this does not seem to help at all, but was not extensively tested either: - if(*shift > max_shiftlimit) - *shift = max_shiftlimit; - else - #endif - return 1; - } - } - - if(*shift >= 0) { - for(i = 0; i < order; i++) { - qlp_coeff[i] = (FLAC__int32)floor((double)lp_coeff[i] * (double)(1 << *shift)); - - // double-check the result - if(qlp_coeff[i] > qmax || qlp_coeff[i] < qmin) { - #ifdef FLAC__OVERFLOW_DETECT - fprintf(stderr,"FLAC__lpc_quantize_coefficients: compensating for overflow, qlp_coeff[%u]=%d, lp_coeff[%u]=%f, cmax=%f, precision=%u, shift=%d, q=%f, f(q)=%f\n", i, qlp_coeff[i], i, lp_coeff[i], cmax, precision, *shift, (double)lp_coeff[i] * (double)(1 << *shift), floor((double)lp_coeff[i] * (double)(1 << *shift))); - #endif - cmax *= 2.0; - goto redo_it; - } - } - } - else { // (*shift < 0) - int nshift = -(*shift); - #ifdef DEBUG - fprintf(stderr,"FLAC__lpc_quantize_coefficients: negative shift = %d\n", *shift); - #endif - for(i = 0; i < order; i++) { - qlp_coeff[i] = (FLAC__int32)floor((double)lp_coeff[i] / (double)(1 << nshift)); - - // double-check the result - if(qlp_coeff[i] > qmax || qlp_coeff[i] < qmin) { - #ifdef FLAC__OVERFLOW_DETECT - fprintf(stderr,"FLAC__lpc_quantize_coefficients: compensating for overflow, qlp_coeff[%u]=%d, lp_coeff[%u]=%f, cmax=%f, precision=%u, shift=%d, q=%f, f(q)=%f\n", i, qlp_coeff[i], i, lp_coeff[i], cmax, precision, *shift, (double)lp_coeff[i] / (double)(1 << nshift), floor((double)lp_coeff[i] / (double)(1 << nshift))); - #endif - cmax *= 2.0; - goto redo_it; - } - } - } - - return 0; - } - */ - - /* - void FLAC__lpc_compute_residual_from_qlp_coefficients(int[] data, int dataLen, int[] qlp_coeff, int order, int lp_quantization, int[] residual) { - int[] history; - - - for(int i = 0; i < dataLen; i++) { - int sum = 0; - history = data; - for(j = 0; j < order; j++) { - sum += qlp_coeff[j] * (*(--history)); - } - residual[i] = data[i] - (sum >> lp_quantization); - } - } - - void FLAC__lpc_compute_residual_from_qlp_coefficients_wide(int[] data, int data_len, int[] qlp_coeff, int order, int lp_quantization, int[] residual) - { - int[] history; - - - for(int i = 0; i < data_len; i++) { - long sum = 0; - history = data; - for(int j = 0; j < order; j++) - sum += (long)qlp_coeff[j] * (long)(*(--history)); - residual[i] = data[i] - (int)(sum >> lp_quantization); - } - } - */ - - /** - * Restore the signal from the LPC compression. - * @param residual The residual signal - * @param dataLen The length of the residual data - * @param qlpCoeff - * @param order The predicate order - * @param lpQuantization - * @param data The restored signal (output) - * @param startAt The starting position in the data array - */ - public static void restoreSignal(int[] residual, int dataLen, int[] qlpCoeff, int order, int lpQuantization, int[] data, int startAt) { - //System.out.println("Q="+lpQuantization); - for (int i = 0; i < dataLen; i++) { - int sum = 0; - for (int j = 0; j < order; j++) { - sum += qlpCoeff[j] * data[startAt + i - j - 1]; - } - //System.out.print((sum >> lpQuantization)+" "); - data[startAt + i] = residual[i] + (sum >> lpQuantization); - } - //System.out.println(); - //for (int i = 0; i < dataLen+startAt; i++) System.out.print(data[i]+" "); System.out.println(); - //for (int j = 0; j < order; j++) System.out.print(qlpCoeff[j]+" ");System.out.println(); - //System.exit(1); - } - - /** - * Restore the signal from the LPC compression. - * @param residual The residual signal - * @param dataLen The length of the residual data - * @param qlpCoeff - * @param order The predicate order - * @param lpQuantization - * @param data The restored signal (output) - * @param startAt The starting position in the data array - */ - public static void restoreSignalWide(int[] residual, int dataLen, int[] qlpCoeff, int order, int lpQuantization, int[] data, int startAt) { - for (int i = 0; i < dataLen; i++) { - long sum = 0; - for (int j = 0; j < order; j++) - sum += (long) qlpCoeff[j] * (long) (data[startAt + i - j - 1]); - data[startAt + i] = residual[i] + (int) (sum >> lpQuantization); - } - } - - /* - double FLAC__lpc_compute_expected_bits_per_residual_sample(double lpc_error, int total_samples) - { - double error_scale; - - FLAC__ASSERT(total_samples > 0); - - error_scale = 0.5 * M_LN2 * M_LN2 / (double)total_samples; - - return FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error, error_scale); - } - - double FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(double lpc_error, double error_scale) - { - if(lpc_error > 0.0) { - double bps = (double)((double)0.5 * log(error_scale * lpc_error) / M_LN2); - if(bps >= 0.0) - return bps; - else - return 0.0; - } - else if(lpc_error < 0.0) { // error should not be negative but can happen due to inadequate float resolution - return (double)1e32; - } - else { - return 0.0; - } - } - - int FLAC__lpc_compute_best_order(double lpc_error[], int max_order, int total_samples, int bits_per_signal_sample) - { - int order, best_order; - double best_bits, tmp_bits; - double error_scale; - - FLAC__ASSERT(max_order > 0); - FLAC__ASSERT(total_samples > 0); - - error_scale = 0.5 * M_LN2 * M_LN2 / (double)total_samples; - - best_order = 0; - best_bits = FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error[0], error_scale) * (double)total_samples; - - for(order = 1; order < max_order; order++) { - tmp_bits = FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error[order], error_scale) * (double)(total_samples - order) + (double)(order * bits_per_signal_sample); - if(tmp_bits < best_bits) { - best_order = order; - best_bits = tmp_bits; - } - } - - return best_order+1; // +1 since index of lpc_error[] is order-1 - } - */ -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/PCMProcessor.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/PCMProcessor.java deleted file mode 100644 index 0220ca78360c862d89b860cc0a0ccd28938ed12e..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/PCMProcessor.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Created on Jun 2, 2004 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package v4lk.lwbd.decoders.processing.jflac; - -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; - -/** - * PCMProcessor interface. - * This interface defines the signatures for a class to listen - * to PCM decode events. - * - * @author kc7bfi - */ -public interface PCMProcessor { - /** - * Called when StreamInfo read. - * - * @param streamInfo The FLAC stream info metadata block - */ - public void processStreamInfo(StreamInfo streamInfo); - - /** - * Called when each data frame is decompressed. - * - * @param pcm The decompressed PCM data - */ - public void processPCM(ByteData pcm); -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/PCMProcessors.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/PCMProcessors.java deleted file mode 100644 index fc72fbb73f6a432dd9947f3f53723be76bf8279d..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/PCMProcessors.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Created on Jun 28, 2004 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package v4lk.lwbd.decoders.processing.jflac; - -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; - -import java.util.HashSet; -import java.util.Iterator; - - -/** - * Class to handle PCM processors. - * - * @author kc7bfi - */ -class PCMProcessors implements PCMProcessor { - private HashSet pcmProcessors = new HashSet(); - - /** - * Add a PCM processor. - * - * @param processor The processor listener to add - */ - public void addPCMProcessor(PCMProcessor processor) { - synchronized (pcmProcessors) { - pcmProcessors.add(processor); - } - } - - /** - * Remove a PCM processor. - * - * @param processor The processor listener to remove - */ - public void removePCMProcessor(PCMProcessor processor) { - synchronized (pcmProcessors) { - pcmProcessors.remove(processor); - } - } - - /** - * Process the StreamInfo block. - * - * @param info the StreamInfo block - * @see PCMProcessor#processStreamInfo(v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo) - */ - public void processStreamInfo(StreamInfo info) { - synchronized (pcmProcessors) { - Iterator it = pcmProcessors.iterator(); - while (it.hasNext()) { - PCMProcessor processor = (PCMProcessor) it.next(); - processor.processStreamInfo(info); - } - } - } - - /** - * Process the decoded PCM bytes. - * - * @param pcm The decoded PCM data - * @see PCMProcessor#processPCM(org.kc7bfi.jflac.util.ByteSpace) - */ - public void processPCM(ByteData pcm) { - synchronized (pcmProcessors) { - Iterator it = pcmProcessors.iterator(); - while (it.hasNext()) { - PCMProcessor processor = (PCMProcessor) it.next(); - processor.processPCM(pcm); - } - } - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Analyser.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Analyser.java deleted file mode 100644 index a5a921689be0be11a4eeeda78d7fcb7154c79ba3..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Analyser.java +++ /dev/null @@ -1,101 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.apps; - -/* libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.FLACDecoder; -import v4lk.lwbd.decoders.processing.jflac.FrameListener; -import v4lk.lwbd.decoders.processing.jflac.frame.Frame; -import v4lk.lwbd.decoders.processing.jflac.metadata.Metadata; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; - -/** - * Analyser reads all metadata and frame blocks in a FLAC file and outputs a text - * representation of them. - * - * @author kc7bfi - */ -public class Analyser implements FrameListener { - private int frameNum = 0; - - /** - * Analyse an input FLAC file. - * - * @param inFileName The input file name - * @throws java.io.IOException thrown if error reading file - */ - public void analyse(String inFileName) throws IOException { - System.out.println("FLAX Analysis for " + inFileName); - FileInputStream is = new FileInputStream(inFileName); - FLACDecoder decoder = new FLACDecoder(is); - decoder.addFrameListener(this); - decoder.decode(); - } - - /** - * Process metadata records. - * - * @param metadata the metadata block - * @see v4lk.lwbd.decoders.processing.jflac.FrameListener#processMetadata(org.kc7bfi.jflac.metadata.MetadataBase) - */ - public void processMetadata(Metadata metadata) { - System.out.println(metadata.toString()); - } - - /** - * Process data frames. - * - * @param frame the data frame - * @see v4lk.lwbd.decoders.processing.jflac.FrameListener#processFrame(v4lk.lwbd.decoders.processing.jflac.frame.Frame) - */ - public void processFrame(Frame frame) { - frameNum++; - System.out.println(frameNum + " " + frame.toString()); - } - - /** - * Called for each frame error detected. - * - * @param msg The error message - * @see v4lk.lwbd.decoders.processing.jflac.FrameListener#processError(String) - */ - public void processError(String msg) { - System.out.println("Frame Error: " + msg); - } - - /** - * Main routine. - *

args[0] is the FLAC file name to analyse - * - * @param args Command arguments - */ - public static void main(String[] args) { - try { - Analyser analyser = new Analyser(); - analyser.analyse(args[0]); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Decoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Decoder.java deleted file mode 100644 index 91c0e2a247daeeac7fd0f20760a815ce3d5752ba..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Decoder.java +++ /dev/null @@ -1,105 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.apps; - -/* libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.FLACDecoder; -import v4lk.lwbd.decoders.processing.jflac.PCMProcessor; -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; -import v4lk.lwbd.decoders.processing.jflac.util.WavWriter; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -/** - * Decode FLAC file to WAV file application. - * - * @author kc7bfi - */ -public class Decoder implements PCMProcessor { - private WavWriter wav; - - /** - * Decode a FLAC file to a WAV file. - * - * @param inFileName The input FLAC file name - * @param outFileName The output WAV file name - * @throws java.io.IOException Thrown if error reading or writing files - */ - public void decode(String inFileName, String outFileName) throws IOException { - System.out.println("Decode [" + inFileName + "][" + outFileName + "]"); - FileInputStream is = new FileInputStream(inFileName); - FileOutputStream os = new FileOutputStream(outFileName); - wav = new WavWriter(os); - FLACDecoder decoder = new FLACDecoder(is); - decoder.addPCMProcessor(this); - decoder.decode(); - } - - /** - * Process the StreamInfo block. - * - * @param info the StreamInfo block - * @see v4lk.lwbd.decoders.processing.jflac.PCMProcessor#processStreamInfo(v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo) - */ - public void processStreamInfo(StreamInfo info) { - try { - System.out.println("Write WAV header " + info); - wav.writeHeader(info); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Process the decoded PCM bytes. - * - * @param pcm The decoded PCM data - * @see v4lk.lwbd.decoders.processing.jflac.PCMProcessor#processPCM(org.kc7bfi.jflac.util.ByteSpace) - */ - public void processPCM(ByteData pcm) { - try { - System.out.println("Write PCM"); - wav.writePCM(pcm); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Main routine. - *

args[0] is the input file name - *

args[1] is the output file name - * - * @param args Command line arguments - */ - public static void main(String[] args) { - try { - Decoder decoder = new Decoder(); - decoder.decode(args[0], args[1]); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/ExtensionFileFilter.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/ExtensionFileFilter.java deleted file mode 100644 index 5ed34ac6532e22db59cbb007acb2b5a46d88fed8..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/ExtensionFileFilter.java +++ /dev/null @@ -1,279 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.apps; - -/** - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - *

- * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - *

- * -Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - *

- * -Redistribution in binary form must reproduct the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the distribution. - *

- * Neither the name of Sun Microsystems, Inc. or the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - *

- * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING - * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT - * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT - * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS - * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, - * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY - * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN - * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - *

- * You acknowledge that Software is not designed, licensed or intended for - * use in the design, construction, operation or maintenance of any nuclear - * facility. - * - * @(#)ExampleFileFilter.java 1.6 03/01/23 - */ - -import javax.swing.filechooser.FileFilter; -import java.io.File; -import java.util.Enumeration; -import java.util.Hashtable; - -/** - * A convenience implementation of FileFilter that filters out - * all files except for those type extensions that it knows about. - * - * Extensions are of the type ".foo", which is typically found on - * Windows and Unix boxes, but not on Macinthosh. Case is ignored. - * - * Example - create a new filter that filerts out all files - * but gif and jpg image files: - * - * JFileChooser chooser = new JFileChooser(); - * ExampleFileFilter filter = new ExampleFileFilter( - * new String{"gif", "jpg"}, "JPEG & GIF Images") - * chooser.addChoosableFileFilter(filter); - * chooser.showOpenDialog(this); - * - * @version 1.6 01/23/03 - * @author Jeff Dinkins - */ - -public class ExtensionFileFilter extends FileFilter { - - private Hashtable filters = null; - private String description = null; - private String fullDescription = null; - private boolean useExtensionsInDescription = true; - - /** - * Creates a file filter. If no filters are added, then all - * files are accepted. - * - * @see #addExtension - */ - public ExtensionFileFilter() { - this.filters = new Hashtable(); - } - - /** - * Creates a file filter that accepts files with the given extension. - * Example: new ExampleFileFilter("jpg"); - * - * @see #addExtension - */ - public ExtensionFileFilter(String extension) { - this(extension, null); - } - - /** - * Creates a file filter that accepts the given file type. - * Example: new ExampleFileFilter("jpg", "JPEG Image Images"); - * - * Note that the "." before the extension is not needed. If - * provided, it will be ignored. - * - * @see #addExtension - */ - public ExtensionFileFilter(String extension, String description) { - this(); - if (extension != null) addExtension(extension); - if (description != null) setDescription(description); - } - - /** - * Creates a file filter from the given string array. - * Example: new ExampleFileFilter(String {"gif", "jpg"}); - * - * Note that the "." before the extension is not needed adn - * will be ignored. - * - * @see #addExtension - */ - public ExtensionFileFilter(String[] filters) { - this(filters, null); - } - - /** - * Creates a file filter from the given string array and description. - * Example: new ExampleFileFilter(String {"gif", "jpg"}, "Gif and JPG Images"); - * - * Note that the "." before the extension is not needed and will be ignored. - * - * @see #addExtension - */ - public ExtensionFileFilter(String[] filters, String description) { - this(); - for (int i = 0; i < filters.length; i++) { - // add filters one by one - addExtension(filters[i]); - } - if (description != null) setDescription(description); - } - - /** - * Return true if this file should be shown in the directory pane, - * false if it shouldn't. - * - * Files that begin with "." are ignored. - * - * @param f The file to check - * @return true if the file passes the filters - * @see #getExtension - * @see javax.swing.filechooser.FileFilter#accepts - */ - public boolean accept(File f) { - if (f != null) { - if (f.isDirectory()) { - return true; - } - String extension = getExtension(f); - if (extension != null && filters.get(getExtension(f)) != null) { - return true; - } - } - return false; - } - - /** - * Return the extension portion of the file's name . - * - * @param f The file to return extionsion - * @return The file's extension - * @see #getExtension - * @see javax.swing.filechooser.FileFilter#accept - */ - public String getExtension(File f) { - if (f != null) { - String filename = f.getName(); - int i = filename.lastIndexOf('.'); - if (i > 0 && i < filename.length() - 1) { - return filename.substring(i + 1).toLowerCase(); - } - } - return null; - } - - /** - * Adds a filetype "dot" extension to filter against. - * - * For example: the following code will create a filter that filters - * out all files except those that end in ".jpg" and ".tif": - * - * ExampleFileFilter filter = new ExampleFileFilter(); - * filter.addExtension("jpg"); - * filter.addExtension("tif"); - * - * Note that the "." before the extension is not needed and will be ignored. - * - * @param extension The extension to add - */ - public void addExtension(String extension) { - if (filters == null) { - filters = new Hashtable(5); - } - filters.put(extension.toLowerCase(), this); - fullDescription = null; - } - - - /** - * Returns the human readable description of this filter. For - * example: "JPEG and GIF Image Files (*.jpg, *.gif)" - * - * @return the filter description - * @see setDescription - * @see setExtensionListInDescription - * @see isExtensionListInDescription - * @see javax.swing.filechooser.FileFilter#getDescription - */ - public String getDescription() { - if (fullDescription == null) { - if (description == null || isExtensionListInDescription()) { - fullDescription = description == null ? "(" : description + " ("; - // build the description from the extension list - Enumeration extensions = filters.keys(); - if (extensions != null) { - fullDescription += "." + (String) extensions.nextElement(); - while (extensions.hasMoreElements()) { - fullDescription += ", ." + (String) extensions.nextElement(); - } - } - fullDescription += ")"; - } else { - fullDescription = description; - } - } - return fullDescription; - } - - /** - * Sets the human readable description of this filter. For - * example: filter.setDescription("Gif and JPG Images"); - * - * @param description The description of the filter - * @see setDescription - * @see setExtensionListInDescription - * @see isExtensionListInDescription - */ - public void setDescription(String description) { - this.description = description; - fullDescription = null; - } - - /** - * Determines whether the extension list (.jpg, .gif, etc) should - * show up in the human readable description. - * - * Only relevent if a description was provided in the constructor - * or using setDescription(); - * - * @param b The new state of useExtensionsInDescription - * @see getDescription - * @see setDescription - * @see isExtensionListInDescription - */ - public void setExtensionListInDescription(boolean b) { - useExtensionsInDescription = b; - fullDescription = null; - } - - /** - * Returns whether the extension list (.jpg, .gif, etc) should - * show up in the human readable description. - * - * Only relevent if a description was provided in the constructor - * or using setDescription(); - * - * @return true if the extension list should show up in the description - * @see getDescription - * @see setDescription - * @see setExtensionListInDescription - */ - public boolean isExtensionListInDescription() { - return useExtensionsInDescription; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/FlacPacker.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/FlacPacker.java deleted file mode 100644 index 65c705935a54f458b8fe5978525135595095a7b6..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/FlacPacker.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Created on Jun 7, 2004 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package v4lk.lwbd.decoders.processing.jflac.apps; - -import v4lk.lwbd.decoders.processing.jflac.Constants; -import v4lk.lwbd.decoders.processing.jflac.FLACDecoder; -import v4lk.lwbd.decoders.processing.jflac.io.BitOutputStream; -import v4lk.lwbd.decoders.processing.jflac.metadata.Metadata; -import v4lk.lwbd.decoders.processing.jflac.metadata.SeekPoint; -import v4lk.lwbd.decoders.processing.jflac.metadata.SeekTable; -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.*; -import java.util.ArrayList; - - -/** - * Assemble several FLAC files into one album. - * - * @author kc7bfi - */ -public class FlacPacker extends JFrame { - - private JTextArea textArea = new JTextArea(16, 50); - private JButton addButton = new JButton("Add Files"); - private JButton makeButton = new JButton("Pack FLAC"); - - private ArrayList flacFiles = new ArrayList(); - private ArrayList albumFiles = new ArrayList(); - private StreamInfo masterStreamInfo = null; - private byte[] buffer = new byte[64 * 1024]; - - /** - * Constructor. - * - * @param title Frame title - */ - public FlacPacker(String title) { - super(title); - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - this.getContentPane().setLayout(new BorderLayout()); - - // text area - textArea.setText(""); - textArea.setAutoscrolls(true); - this.getContentPane().add(textArea, BorderLayout.CENTER); - - // button pannel - Panel buttonPanel = new Panel(); - buttonPanel.setLayout(new FlowLayout()); - buttonPanel.add(addButton); - buttonPanel.add(makeButton); - this.getContentPane().add(buttonPanel, BorderLayout.SOUTH); - - this.pack(); - - addButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - addFilesToList(); - } - }); - - makeButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - try { - packFlac(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }); - } - - private void appendMsg(String msg) { - textArea.setText(textArea.getText() + msg + "\n"); - textArea.repaint(); - } - - private void addFilesToList() { - JFileChooser chooser = new JFileChooser(); - ExtensionFileFilter filter = new ExtensionFileFilter(); - filter.addExtension("flac"); - filter.setDescription("FLAC files"); - chooser.setMultiSelectionEnabled(true); - chooser.setFileFilter(filter); - chooser.setCurrentDirectory(new File(".")); - int returnVal = chooser.showOpenDialog(this); - if (returnVal != JFileChooser.APPROVE_OPTION) return; - File[] files = chooser.getSelectedFiles(); - for (int i = 0; i < files.length; i++) flacFiles.add(files[i]); - } - - private File getOutputFile() { - JFileChooser chooser = new JFileChooser(); - ExtensionFileFilter filter = new ExtensionFileFilter(); - filter.addExtension("flac"); - filter.setDescription("FLAC files"); - chooser.setFileFilter(filter); - chooser.setCurrentDirectory(new File(".")); - int returnVal = chooser.showOpenDialog(this); - if (returnVal != JFileChooser.APPROVE_OPTION) return null; - File file = chooser.getSelectedFile(); - return file; - } - - private SeekTable makeSeekTable() { - long lastSampleNumber = 0; - long lastStreamOffset = 0; - - // process selected files - for (int i = 0; i < flacFiles.size(); i++) { - File file = (File) flacFiles.get(i); - try { - FileInputStream is = new FileInputStream(file); - FLACDecoder decoder = new FLACDecoder(is); - decoder.readMetadata(); - StreamInfo info = decoder.getStreamInfo(); - if (masterStreamInfo == null) { - masterStreamInfo = info; - masterStreamInfo.setTotalSamples(0); - } - if (!info.compatiable(masterStreamInfo)) { - appendMsg("Bad StreamInfo " + file + ": " + info); - continue; - } - masterStreamInfo.addTotalSamples(info.getTotalSamples()); - - SeekPoint seekPoint = new SeekPoint(lastSampleNumber, lastStreamOffset, 0); - //decoder.processMetadata(); - long frameStartOffs = decoder.getTotalBytesRead(); - PackerFile aFile = new PackerFile(file, seekPoint, frameStartOffs); - albumFiles.add(aFile); - //System.out.println("Do decode " +i); - try { - decoder.decodeFrames(); - } catch (EOFException e) { - //appendMsg("File " + file + ": " + e); - } - //System.out.println("Done decode"); - long frameEndOffs = decoder.getTotalBytesRead(); - //appendMsg(frameStartOffs + " " + frameEndOffs + " " + decoder.getSamplesDecoded()); - lastSampleNumber += decoder.getSamplesDecoded(); - lastStreamOffset += frameEndOffs - frameStartOffs; - } catch (FileNotFoundException e) { - appendMsg("File " + file + ": " + e); - } catch (IOException e) { - appendMsg("File " + file + ": " + e); - } - } - - // make Seek Table - SeekPoint[] points = new SeekPoint[albumFiles.size()]; - SeekTable seekTable = new SeekTable(points, true); - int metadataHeader = (Metadata.STREAM_METADATA_IS_LAST_LEN + Metadata.STREAM_METADATA_TYPE_LEN + Metadata.STREAM_METADATA_LENGTH_LEN) / 8; - int metadataOffset = Constants.STREAM_SYNC_STRING.length + masterStreamInfo.calcLength() + seekTable.calcLength() + metadataHeader * 2; - for (int i = 0; i < albumFiles.size(); i++) { - PackerFile aFile = (PackerFile) albumFiles.get(i); - appendMsg("SeekTable build " + i + " Offset=" + aFile.seekPoint.getStreamOffset() + " header=" + metadataOffset); - aFile.seekPoint.setStreamOffset(aFile.seekPoint.getStreamOffset() + metadataOffset); - points[i] = aFile.seekPoint; - } - - return seekTable; - } - - private void packFlac() throws IOException { - // get output file - File outFile = getOutputFile(); - if (outFile == null) return; - BitOutputStream os = null; - FileOutputStream fos; - try { - fos = new FileOutputStream(outFile); - os = new BitOutputStream(fos); - } catch (FileNotFoundException e1) { - e1.printStackTrace(); - return; - } - - // get seek table - SeekTable seekTable = makeSeekTable(); - if (masterStreamInfo == null) return; - - // write FLAC marker - os.writeByteBlock(Constants.STREAM_SYNC_STRING, Constants.STREAM_SYNC_STRING.length); - - // output StreamInfo - masterStreamInfo.write(os, false); - - // output SeekTable - seekTable.write(os, true); - - // generate output file - for (int i = 0; i < albumFiles.size(); i++) { - PackerFile aFile = (PackerFile) albumFiles.get(i); - appendMsg("Process file " + i + ": " + aFile.file); - try { - RandomAccessFile raf = new RandomAccessFile(aFile.file, "r"); - raf.seek(aFile.firstFrameOffset); - for (int bytes = raf.read(buffer); bytes > 0; bytes = raf.read(buffer)) { - fos.write(buffer, 0, bytes); - } - fos.flush(); - } catch (FileNotFoundException e) { - appendMsg("File " + aFile.file + ": " + e); - } catch (EOFException e) { - appendMsg("File " + aFile.file + ": Done!"); - } catch (IOException e) { - appendMsg("File " + aFile.file + ": " + e); - } - } - } - - /** - * Main routine. - * - * @param args Command line arguments - */ - public static void main(String[] args) { - FlacPacker app = new FlacPacker("FLAC Album Maker"); - app.show(true); - } - - /** - * This class holds the fiels and their seek points. - * - * @author kc7bfi - */ - private class PackerFile { - protected File file; - protected SeekPoint seekPoint; - protected long firstFrameOffset; - - /** - * The constructor. - * - * @param file The file - * @param seekPoint The SeekPoint - */ - public PackerFile(File file, SeekPoint seekPoint, long firstFrameOffset) { - this.file = file; - this.seekPoint = seekPoint; - this.firstFrameOffset = firstFrameOffset; - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Player.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Player.java deleted file mode 100644 index 0e8defda178dfe5ae1a8fc59d599f14e675879d6..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Player.java +++ /dev/null @@ -1,142 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.apps; - -/* libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - - -import v4lk.lwbd.decoders.processing.jflac.FLACDecoder; -import v4lk.lwbd.decoders.processing.jflac.PCMProcessor; -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; - -import javax.sound.sampled.*; -import java.io.EOFException; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.Vector; - - -/** - * Play a FLAC file application. - * - * @author kc7bfi - */ -public class Player implements PCMProcessor { - private AudioFormat fmt; - private DataLine.Info info; - private SourceDataLine line; - private Vector listeners = new Vector(); - - - public void addListener(LineListener listener) { - listeners.add(listener); - } - - /** - * Decode and play an input FLAC file. - * - * @param inFileName The input FLAC file name - * @throws java.io.IOException Thrown if error reading file - * @throws javax.sound.sampled.LineUnavailableException Thrown if error playing file - */ - public void decode(String inFileName) throws IOException, LineUnavailableException { -// System.out.println("Play [" + inFileName + "]"); - FileInputStream is = new FileInputStream(inFileName); - - FLACDecoder decoder = new FLACDecoder(is); - decoder.addPCMProcessor(this); - try { - decoder.decode(); - } catch (EOFException e) { - // skip - } - - line.drain(); - line.close(); - - // We're going to clear out the list of listeners as well, so that everytime through - // things are basically at the same starting point. - listeners.clear(); - } - - /** - * Process the StreamInfo block. - * - * @param streamInfo the StreamInfo block - * @see v4lk.lwbd.decoders.processing.jflac.PCMProcessor#processStreamInfo(v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo) - */ - public void processStreamInfo(StreamInfo streamInfo) { - try { - fmt = streamInfo.getAudioFormat(); - info = new DataLine.Info(SourceDataLine.class, fmt, AudioSystem.NOT_SPECIFIED); - line = (SourceDataLine) AudioSystem.getLine(info); - - // Add the listeners to the line at this point, it's the only - // way to get the events triggered. - int size = listeners.size(); - for (int index = 0; index < size; index++) - line.addLineListener((LineListener) listeners.get(index)); - - line.open(fmt, AudioSystem.NOT_SPECIFIED); - line.start(); - } catch (LineUnavailableException e) { - e.printStackTrace(); - } - } - - /** - * Process the decoded PCM bytes. - * - * @param pcm The decoded PCM data - * @see v4lk.lwbd.decoders.processing.jflac.PCMProcessor#processPCM(org.kc7bfi.jflac.util.ByteSpace) - */ - public void processPCM(ByteData pcm) { - line.write(pcm.getData(), 0, pcm.getLen()); - } - - - public void removeListener(LineListener listener) { - listeners.removeElement(listener); - } - - - /** - * The main routine. - *

args[0] is the input file name - * - * @param args Command line arguments - */ - public static void main(String[] args) { - try { - Player decoder = new Player(); - - for (int i = 0; i < args.length; i++) - decoder.decode(args[i]); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (LineUnavailableException e) { - e.printStackTrace(); - } - - System.exit(0); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/SeekTablePlayer.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/SeekTablePlayer.java deleted file mode 100644 index c31ed8658d0b932d38d2c39d63b3dcc48382157b..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/SeekTablePlayer.java +++ /dev/null @@ -1,166 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.apps; - -/* libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - - -import v4lk.lwbd.decoders.processing.jflac.FLACDecoder; -import v4lk.lwbd.decoders.processing.jflac.FrameListener; -import v4lk.lwbd.decoders.processing.jflac.PCMProcessor; -import v4lk.lwbd.decoders.processing.jflac.frame.Frame; -import v4lk.lwbd.decoders.processing.jflac.io.RandomFileInputStream; -import v4lk.lwbd.decoders.processing.jflac.metadata.Metadata; -import v4lk.lwbd.decoders.processing.jflac.metadata.SeekPoint; -import v4lk.lwbd.decoders.processing.jflac.metadata.SeekTable; -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; - -import javax.sound.sampled.*; -import java.io.FileNotFoundException; -import java.io.IOException; - - -/** - * Play a FLAC file application. - * - * @author kc7bfi - */ -public class SeekTablePlayer implements PCMProcessor, FrameListener { - private AudioFormat fmt; - private DataLine.Info info; - private SourceDataLine line; - - private StreamInfo streamInfo = null; - private SeekTable seekTable = null; - - /** - * Decode and play an input FLAC file. - * - * @param inFileName The input FLAC file name - * @param fromSeekPoint The starting Seek Point - * @param toSeekPoint The ending Seek Point (non-inclusive) - * @throws java.io.IOException Thrown if error reading file - * @throws javax.sound.sampled.LineUnavailableException Thrown if error playing file - */ - public void play(String inFileName, int fromSeekPoint, int toSeekPoint) throws IOException, LineUnavailableException { - System.out.println("Play [" + inFileName + "]"); - RandomFileInputStream is = new RandomFileInputStream(inFileName); - - FLACDecoder decoder = new FLACDecoder(is); - decoder.addPCMProcessor(this); - decoder.addFrameListener(this); - decoder.readMetadata(); - - // see if SeekTbale exists - if (seekTable == null) { - System.out.println("Missing SeekTable!"); - return; - } - - SeekPoint from = seekTable.getSeekPoint(fromSeekPoint); - SeekPoint to = null; - if (toSeekPoint + 1 < seekTable.numberOfPoints()) to = seekTable.getSeekPoint(toSeekPoint + 1); - System.out.println("Seek From: " + from); - System.out.println("Seek To : " + to); - decoder.decode(from, to); - - line.drain(); - line.close(); - } - - /** - * Process the StreamInfo block. - * - * @param streamInfo the StreamInfo block - * @see v4lk.lwbd.decoders.processing.jflac.PCMProcessor#processStreamInfo(v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo) - */ - public void processStreamInfo(StreamInfo streamInfo) { - this.streamInfo = streamInfo; - try { - fmt = streamInfo.getAudioFormat(); - info = new DataLine.Info(SourceDataLine.class, fmt, AudioSystem.NOT_SPECIFIED); - line = (SourceDataLine) AudioSystem.getLine(info); - line.open(fmt, AudioSystem.NOT_SPECIFIED); - line.start(); - } catch (LineUnavailableException e) { - e.printStackTrace(); - } - } - - /** - * Process the decoded PCM bytes. - * - * @param pcm The decoded PCM data - * @see v4lk.lwbd.decoders.processing.jflac.PCMProcessor#processPCM(org.kc7bfi.jflac.util.ByteSpace) - */ - public void processPCM(ByteData pcm) { - line.write(pcm.getData(), 0, pcm.getLen()); - } - - /** - * Called for each Metadata frame read. - * - * @param metadata The metadata frame read - */ - public void processMetadata(Metadata metadata) { - if (metadata instanceof SeekTable) seekTable = (SeekTable) metadata; - } - - /** - * Called for each data frame read. - * - * @param frame The data frame read - */ - public void processFrame(Frame frame) { - } - - /** - * Process a decoder error. - * - * @param msg The error message - * @see v4lk.lwbd.decoders.processing.jflac.FrameListener#processError(String) - */ - public void processError(String msg) { - System.out.println("FLAC Error: " + msg); - } - - /** - * The main routine. - *

args[0] is the input file name - * - * @param args Command line arguments - */ - public static void main(String[] args) { - String flacFile = args[0]; - int fromSeekPoint = Integer.parseInt(args[1]); - int toSeekPoint = Integer.parseInt(args[2]); - try { - SeekTablePlayer player = new SeekTablePlayer(); - player.play(flacFile, fromSeekPoint, toSeekPoint); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (LineUnavailableException e) { - e.printStackTrace(); - } - - System.exit(0); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/SndPlayer.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/SndPlayer.java deleted file mode 100644 index 9dcd4ab810314220b631b8f149ba63c3f474493a..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/SndPlayer.java +++ /dev/null @@ -1,164 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.apps; - -/* libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import javax.sound.sampled.*; -import java.io.File; -import java.io.IOException; - -/** - * Play.java - *

- * A simple class that plays audio from given file names. - *

- * Uses the Java Sound SourceDataLine interface to stream the sound. - * Converts compressed encodings (ALAW, ULAW, MP3) to PCM. - * - * @author Dan Becker, beckerdo@io.com - */ -public class SndPlayer { - - /** - * Plays audio from given file names. - * - * @param args Command line parameters - */ - public static void main(String[] args) { - // Check for given sound file names. - if (args.length < 1) { - System.out.println("SndPlayer usage:"); - System.out.println("\tjava SndPlayer *"); - System.exit(0); - } - - // Process arguments. - for (int i = 0; i < args.length; i++) - playAudioFile(args[i]); - - // Must exit explicitly since audio creates non-daemon threads. - System.exit(0); - } // main - - /** - * Play audio from the given file name. - * - * @param fileName The file to play - */ - public static void playAudioFile(String fileName) { - File soundFile = new File(fileName); - - try { - // Create a stream from the given file. - // Throws IOException or UnsupportedAudioFileException - AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile); - // AudioSystem.getAudioInputStream(inputStream); // alternate audio stream from inputstream - playAudioStream(audioInputStream); - } catch (Exception e) { - System.out.println("Problem with file " + fileName + ":"); - e.printStackTrace(); - } - } // playAudioFile - - /** - * Plays audio from the given audio input stream. - * - * @param audioInputStream The audio stream to play - */ - public static void playAudioStream(AudioInputStream audioInputStream) { - // Audio format provides information like sample rate, size, channels. - AudioFormat audioFormat = audioInputStream.getFormat(); - System.out.println("Play input audio format=" + audioFormat); - - // Convert compressed audio data to uncompressed PCM format. - if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) { - // if ((audioFormat.getEncoding() != AudioFormat.Encoding.PCM) || - // (audioFormat.getEncoding() == AudioFormat.Encoding.ALAW) || - // (audioFormat.getEncoding() == AudioFormat.Encoding.MP3)) { - AudioFormat newFormat = new AudioFormat( - AudioFormat.Encoding.PCM_SIGNED, - audioFormat.getSampleRate(), - 16, - audioFormat.getChannels(), - audioFormat.getChannels() * 2, - audioFormat.getSampleRate(), - false); - System.out.println("Converting audio format to " + newFormat); - AudioInputStream newStream = AudioSystem.getAudioInputStream(newFormat, audioInputStream); - audioFormat = newFormat; - audioInputStream = newStream; - } - - // Open a data line to play our type of sampled audio. - // Use SourceDataLine for play and TargetDataLine for record. - DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat); - if (!AudioSystem.isLineSupported(info)) { - System.out.println("Play.playAudioStream does not handle this type of audio on this system."); - return; - } - - try { - // Create a SourceDataLine for play back (throws LineUnavailableException). - SourceDataLine dataLine = (SourceDataLine) AudioSystem.getLine(info); - // System.out.println("SourceDataLine class=" + dataLine.getClass()); - - // The line acquires system resources (throws LineAvailableException). - dataLine.open(audioFormat); - - // Adjust the volume on the output line. - if (dataLine.isControlSupported(FloatControl.Type.MASTER_GAIN)) { - FloatControl volume = (FloatControl) dataLine.getControl(FloatControl.Type.MASTER_GAIN); - volume.setValue(100.0F); - } - - // Allows the line to move data in and out to a port. - dataLine.start(); - - // Create a buffer for moving data from the audio stream to the line. - int bufferSize = (int) audioFormat.getSampleRate() * audioFormat.getFrameSize(); - byte[] buffer = new byte[bufferSize]; - - // Move the data until done or there is an error. - try { - int bytesRead = 0; - while (bytesRead >= 0) { - bytesRead = audioInputStream.read(buffer, 0, buffer.length); - if (bytesRead >= 0) { - // System.out.println("Play.playAudioStream bytes read=" + bytesRead + - // ", frame size=" + audioFormat.getFrameSize() + ", frames read=" + bytesRead / audioFormat.getFrameSize()); - // Odd sized sounds throw an exception if we don't write the same amount. - dataLine.write(buffer, 0, bytesRead); - } - } // while - } catch (IOException e) { - e.printStackTrace(); - } - - System.out.println("Play.playAudioStream draining line."); - // Continues data line I/O until its buffer is drained. - dataLine.drain(); - - System.out.println("Play.playAudioStream closing line."); - // Closes the data line, freeing any resources such as the audio device. - dataLine.close(); - } catch (LineUnavailableException e) { - e.printStackTrace(); - } - } // playAudioStream -} // Play diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Tester.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Tester.java deleted file mode 100644 index 37b280e0b353548f68bf0c746fd9eaa6f211bcd6..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/apps/Tester.java +++ /dev/null @@ -1,99 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.apps; - -/* libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.FLACDecoder; -import v4lk.lwbd.decoders.processing.jflac.FrameListener; -import v4lk.lwbd.decoders.processing.jflac.frame.Frame; -import v4lk.lwbd.decoders.processing.jflac.metadata.Metadata; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; - -/** - * Test FLAC file application. - * - * @author kc7bfi - */ -public class Tester implements FrameListener { - private int errors = 0; - - /** - * Analyse an input FLAC file. - * - * @param inFileName The input file name - * @throws java.io.IOException thrown if error reading file - */ - public void test(String inFileName) throws IOException { - System.out.println("FLAX Tester for " + inFileName); - FileInputStream is = new FileInputStream(inFileName); - FLACDecoder decoder = new FLACDecoder(is); - decoder.addFrameListener(this); - decoder.decode(); - System.out.println(errors + " errors found!"); - } - - /** - * Process metadata records. - * - * @param metadata the metadata block - * @see v4lk.lwbd.decoders.processing.jflac.FrameListener#processMetadata(org.kc7bfi.jflac.metadata.MetadataBase) - */ - public void processMetadata(Metadata metadata) { - } - - /** - * Process data frames. - * - * @param frame the data frame - * @see v4lk.lwbd.decoders.processing.jflac.FrameListener#processFrame(v4lk.lwbd.decoders.processing.jflac.frame.Frame) - */ - public void processFrame(Frame frame) { - } - - /** - * Called for each frame error detected. - * - * @param msg The error message - * @see v4lk.lwbd.decoders.processing.jflac.FrameListener#processError(String) - */ - public void processError(String msg) { - errors++; - System.out.println(msg); - } - - /** - * Main routine. - *

args[0] is the FLAC file name to analyse - * - * @param args Command arguments - */ - public static void main(String[] args) { - try { - Tester tester = new Tester(); - tester.test(args[0]); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/BadHeaderException.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/BadHeaderException.java deleted file mode 100644 index 69f3f53eec9bd4629cce018e2397ded180c39e8d..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/BadHeaderException.java +++ /dev/null @@ -1,61 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * BadHeaderException. - * @author kc7bfi - */ -public class BadHeaderException extends Exception { - - /** - * Exception constructor. - */ - public BadHeaderException() { - super(); - } - - /** - * Exception constructor. - * @param msg The exception message - */ - public BadHeaderException(String msg) { - super(msg); - } - - /** - * Exception constructor. - * @param err The throwable error - */ - public BadHeaderException(Throwable err) { - super(err); - } - - /** - * Exception constructor. - * @param msg The exception message - * @param err The throwable error - */ - public BadHeaderException(String msg, Throwable err) { - super(msg, err); - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Channel.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Channel.java deleted file mode 100644 index daca0684890a568a406f77b131ce0d08ab0968db..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Channel.java +++ /dev/null @@ -1,61 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * Base class for FLAC subframe (channel) classes. - * @author kc7bfi - */ -public abstract class Channel { - - /** Partisioned Rice Encoding Method. */ - public static final int ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0; - - /** The size of the encoding method field (in bits). */ - public static final int ENTROPY_CODING_METHOD_TYPE_LEN = 2; - - /** The size of the Rice Order field (in bits). */ - public static final int ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN = 4; - - /** The FLAC Frame Header. */ - protected Header header; - - /** The number of waisted bits in the frame. */ - protected int wastedBits; - - /** - * The constructor. - * @param header The FLAC Frame Header - * @param wastedBits The number of waisted bits in the frame - */ - protected Channel(Header header, int wastedBits) { - this.header = header; - this.wastedBits = wastedBits; - } - - /** - * Return he number of waisted bits in the frame. - * @return The number of waisted bits in the frame - */ - public int getWastedBits() { - return wastedBits; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelConstant.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelConstant.java deleted file mode 100644 index 1883906c52edb2928e9474bd494603a585014a73..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelConstant.java +++ /dev/null @@ -1,63 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.ChannelData; -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * FLAC Constant Subframe (Channel) data. - * This class represents a FLAC subframe (channel) for a Constant data - * @author kc7bfi - */ -public class ChannelConstant extends Channel { - - /** The constant signal value. */ - private int value; - - /** - * The constructor. - * @param is The InputBitStream - * @param header The FLAC Frame Header - * @param channelData The decoded channel data (output) - * @param bps The bits-per-second - * @param wastedBits The bits waisted in the frame - * @throws java.io.IOException Thrown if error reading from the InputBitStream - */ - public ChannelConstant(BitInputStream is, Header header, ChannelData channelData, int bps, int wastedBits) throws IOException { - super(header, wastedBits); - - value = is.readRawInt(bps); - - // decode the subframe - for (int i = 0; i < header.blockSize; i++) channelData.getOutput()[i] = value; - } - - /** - * toString conversion. - * @see Object#toString() - */ - public String toString() { - return "ChannelConstant: Value=" + value + " WastedBits=" + wastedBits; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelFixed.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelFixed.java deleted file mode 100644 index ead469a5acb8f510c13b0e2008e8ac25e496a797..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelFixed.java +++ /dev/null @@ -1,91 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.ChannelData; -import v4lk.lwbd.decoders.processing.jflac.FixedPredictor; -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * Fixed FLAC subframe (channel). - * @author kc7bfi - */ -public class ChannelFixed extends Channel { - private static final int MAX_FIXED_ORDER = 4; - - private EntropyCodingMethod entropyCodingMethod; // The residual coding method. - private int order; // The polynomial order. - private int[] warmup = new int[MAX_FIXED_ORDER]; // Warmup samples to prime the predictor, length == order. - private int[] residual; // The residual signal, length == (blocksize minus order) samples. - - /** - * The constructor. - * @param is The InputBitStream - * @param header The FLAC Frame Header - * @param channelData The decoded channel data (output) - * @param bps The bits-per-second - * @param wastedBits The bits waisted in the frame - * @param order The predicate order - * @throws java.io.IOException Thrown if error reading from the InputBitStream - */ - public ChannelFixed(BitInputStream is, Header header, ChannelData channelData, int bps, int wastedBits, int order) throws IOException { - super(header, wastedBits); - - this.residual = channelData.getResidual(); - this.order = order; - - // read warm-up samples - for (int u = 0; u < order; u++) { - warmup[u] = is.readRawInt(bps); - } - - // read entropy coding method info - int type = is.readRawUInt(ENTROPY_CODING_METHOD_TYPE_LEN); - EntropyPartitionedRice pr; - switch (type) { - case ENTROPY_CODING_METHOD_PARTITIONED_RICE: - int u32 = is.readRawUInt(ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN); - pr = new EntropyPartitionedRice(); - entropyCodingMethod = pr; - pr.order = u32; - pr.contents = channelData.getPartitionedRiceContents(); - pr.readResidual(is, order, pr.order, header, channelData.getResidual()); - break; - default: - throw new IOException("STREAM_DECODER_UNPARSEABLE_STREAM"); - } - - // decode the subframe - System.arraycopy(warmup, 0, channelData.getOutput(), 0, order); - FixedPredictor.restoreSignal(residual, header.blockSize - order, order, channelData.getOutput(), order); - } - - /** - * @see Object#toString() - */ - public String toString() { - StringBuffer sb = new StringBuffer("FLACSubframe_Fixed: Order=" + order + " PartitionOrder=" + ((EntropyPartitionedRice) entropyCodingMethod).order + " WastedBits=" + wastedBits); - for (int i = 0; i < order; i++) sb.append(" warmup[" + i + "]=" + warmup[i]); - return sb.toString(); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelLPC.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelLPC.java deleted file mode 100644 index c92bdea3bb38e52976139a2836a919f9edb320ca..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelLPC.java +++ /dev/null @@ -1,145 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.ChannelData; -import v4lk.lwbd.decoders.processing.jflac.LPCPredictor; -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; -import v4lk.lwbd.decoders.processing.jflac.util.BitMath; - -import java.io.IOException; - -/** - * LPC FLAC subframe (channel). - * @author kc7bfi - */ -public class ChannelLPC extends Channel { - private static final int SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN = 4; /* bits */ - private static final int SUBFRAME_LPC_QLP_SHIFT_LEN = 5; /* bits */ - private static final int MAX_LPC_ORDER = 32; - - private EntropyCodingMethod entropyCodingMethod; // The residual coding method. - private int order; // The FIR order. - private int qlpCoeffPrecision; // Quantized FIR filter coefficient precision in bits. - private int quantizationLevel; // The qlp coeff shift needed. - private int[] qlpCoeff = new int[MAX_LPC_ORDER]; // FIR filter coefficients. - private int[] warmup = new int[MAX_LPC_ORDER]; // Warmup samples to prime the predictor, length == order. - private int[] residual; // The residual signal, length == (blocksize minus order) samples. - - /** - * The constructor. - * @param is The InputBitStream - * @param header The FLAC Frame Header - * @param channelData The decoded channel data (output) - * @param bps The bits-per-second - * @param wastedBits The bits waisted in the frame - * @param order The predicate order - * @throws java.io.IOException Thrown if error reading from the InputBitStream - */ - public ChannelLPC(BitInputStream is, Header header, ChannelData channelData, int bps, int wastedBits, int order) throws IOException { - super(header, wastedBits); - - this.residual = channelData.getResidual(); - this.order = order; - - // read warm-up samples - //System.out.println("Order="+order); - for (int u = 0; u < order; u++) { - warmup[u] = is.readRawInt(bps); - } - //for (int i = 0; i < order; i++) System.out.println("Warm "+i+" "+warmup[i]); - - // read qlp coeff precision - int u32 = is.readRawUInt(SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN); - if (u32 == (1 << SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN) - 1) { - throw new IOException("STREAM_DECODER_ERROR_STATUS_LOST_SYNC"); - } - qlpCoeffPrecision = u32 + 1; - //System.out.println("qlpCoeffPrecision="+qlpCoeffPrecision); - - // read qlp shift - quantizationLevel = is.readRawInt(SUBFRAME_LPC_QLP_SHIFT_LEN); - //System.out.println("quantizationLevel="+quantizationLevel); - - // read quantized lp coefficiencts - for (int u = 0; u < order; u++) { - qlpCoeff[u] = is.readRawInt(qlpCoeffPrecision); - } - - // read entropy coding method info - int codingType = is.readRawUInt(ENTROPY_CODING_METHOD_TYPE_LEN); - //System.out.println("codingType="+codingType); - switch (codingType) { - case ENTROPY_CODING_METHOD_PARTITIONED_RICE: - entropyCodingMethod = new EntropyPartitionedRice(); - ((EntropyPartitionedRice) entropyCodingMethod).order = is.readRawUInt(ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN); - ((EntropyPartitionedRice) entropyCodingMethod).contents = channelData.getPartitionedRiceContents(); - break; - default: - throw new IOException("STREAM_DECODER_UNPARSEABLE_STREAM"); - } - - // read residual - if (entropyCodingMethod instanceof EntropyPartitionedRice) { - ((EntropyPartitionedRice) entropyCodingMethod).readResidual(is, - order, - ((EntropyPartitionedRice) entropyCodingMethod).order, - header, - channelData.getResidual()); - } - - //System.out.println(); - //for (int i = 0; i < header.blockSize; i++) {System.out.print(channelData.residual[i]+" "); - //if (i%200==0)System.out.println(); - //} - //System.out.println(); - - // decode the subframe - System.arraycopy(warmup, 0, channelData.getOutput(), 0, order); - if (bps + qlpCoeffPrecision + BitMath.ilog2(order) <= 32) { - if (bps <= 16 && qlpCoeffPrecision <= 16) - LPCPredictor.restoreSignal(channelData.getResidual(), header.blockSize - order, qlpCoeff, order, quantizationLevel, channelData.getOutput(), order); - else - LPCPredictor.restoreSignal(channelData.getResidual(), header.blockSize - order, qlpCoeff, order, quantizationLevel, channelData.getOutput(), order); - } else { - LPCPredictor.restoreSignalWide(channelData.getResidual(), header.blockSize - order, qlpCoeff, order, quantizationLevel, channelData.getOutput(), order); - } - } - - /** - * @see Object#toString() - */ - public String toString() { - StringBuffer sb = new StringBuffer("ChannelLPC: Order=" + order + " WastedBits=" + wastedBits); - sb.append(" qlpCoeffPrecision=" + qlpCoeffPrecision + " quantizationLevel=" + quantizationLevel); - sb.append("\n\t\tqlpCoeff: "); - for (int i = 0; i < order; i++) sb.append(qlpCoeff[i] + " "); - sb.append("\n\t\tWarmup: "); - for (int i = 0; i < order; i++) sb.append(warmup[i] + " "); - sb.append("\n\t\tParameter: "); - for (int i = 0; i < (1 << ((EntropyPartitionedRice) entropyCodingMethod).order); i++) - sb.append(((EntropyPartitionedRice) entropyCodingMethod).contents.parameters[i] + " "); - //sb.append("\n\t\tResidual: "); - //for (int i = 0; i < header.blockSize; i++) sb.append(residual[i] + " "); - return sb.toString(); - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelVerbatim.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelVerbatim.java deleted file mode 100644 index f741f236a1044ea1e4e64d03bbe501e7fdc341cb..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/ChannelVerbatim.java +++ /dev/null @@ -1,63 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.ChannelData; -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * Verbatim FLAC subframe (channel). - * @author kc7bfi - */ -public class ChannelVerbatim extends Channel { - private int[] data; // A pointer to verbatim signal. - - /** - * The constructor. - * @param is The InputBitStream - * @param header The FLAC Frame Header - * @param channelData The decoded channel data (output) - * @param bps The bits-per-second - * @param wastedBits The bits waisted in the frame - * @throws java.io.IOException Thrown if error reading from the InputBitStream - */ - public ChannelVerbatim(BitInputStream is, Header header, ChannelData channelData, int bps, int wastedBits) throws IOException { - super(header, wastedBits); - - data = channelData.getResidual(); - - for (int i = 0; i < header.blockSize; i++) { - data[i] = is.readRawInt(bps); - } - - // decode the subframe - System.arraycopy(data, 0, channelData.getOutput(), 0, header.blockSize); - } - - /** - * @see Object#toString() - */ - public String toString() { - return "ChannelVerbatim: WastedBits=" + wastedBits; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyCodingMethod.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyCodingMethod.java deleted file mode 100644 index ced9cb0aebf601afa422d33a021273d620ae6e9f..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyCodingMethod.java +++ /dev/null @@ -1,24 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -public abstract class EntropyCodingMethod { -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyPartitionedRice.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyPartitionedRice.java deleted file mode 100644 index fc6f50827d2bbfe98ece62363124eed19f21646f..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyPartitionedRice.java +++ /dev/null @@ -1,73 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * This class holds the Entropy Partitioned Rice contents. - * @author kc7bfi - */ -public class EntropyPartitionedRice extends EntropyCodingMethod { - private static final int ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN = 4; /* bits */ - private static final int ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN = 5; /* bits */ - private static final int ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER = 15; - - protected int order; // The partition order, i.e. # of contexts = 2 ^ order. - protected EntropyPartitionedRiceContents contents; // The context's Rice parameters and/or raw bits. - - /** - * Read compressed signal residual data. - * - * @param is The InputBitStream - * @param predictorOrder The predicate order - * @param partitionOrder The partition order - * @param header The FLAC Frame Header - * @param residual The residual signal (output) - * @throws java.io.IOException On error reading from InputBitStream - */ - void readResidual(BitInputStream is, int predictorOrder, int partitionOrder, Header header, int[] residual) throws IOException { - //System.out.println("readREsidual Pred="+predictorOrder+" part="+partitionOrder); - int sample = 0; - int partitions = 1 << partitionOrder; - int partitionSamples = partitionOrder > 0 ? header.blockSize >> partitionOrder : header.blockSize - predictorOrder; - contents.ensureSize(Math.max(6, partitionOrder)); - contents.parameters = new int[partitions]; - - for (int partition = 0; partition < partitions; partition++) { - int riceParameter = is.readRawUInt(ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN); - contents.parameters[partition] = riceParameter; - if (riceParameter < ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) { - int u = (partitionOrder == 0 || partition > 0) ? partitionSamples : partitionSamples - predictorOrder; - is.readRiceSignedBlock(residual, sample, u, riceParameter); - sample += u; - } else { - riceParameter = is.readRawUInt(ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN); - contents.rawBits[partition] = riceParameter; - for (int u = (partitionOrder == 0 || partition > 0) ? 0 : predictorOrder; u < partitionSamples; u++, sample++) { - residual[sample] = is.readRawInt(riceParameter); - } - } - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyPartitionedRiceContents.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyPartitionedRiceContents.java deleted file mode 100644 index d5f99b6e3a012cc75ee512eb562e1b0d331bc47e..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/EntropyPartitionedRiceContents.java +++ /dev/null @@ -1,45 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -public class EntropyPartitionedRiceContents { - - protected int[] parameters; // The Rice parameters for each context. - protected int[] rawBits; // Widths for escape-coded partitions. - - /** - * The capacity of the parameters and raw_bits arrays specified as an order. - * i.e. the number of array elements allocated is 2 ^ capacity_by_order. - */ - protected int capacityByOrder = 0; - - /** - * Ensure enough menory has been allocated. - * - * @param maxPartitionOrder The maximum partition order - */ - public void ensureSize(int maxPartitionOrder) { - if (capacityByOrder >= maxPartitionOrder) return; - parameters = new int[(1 << maxPartitionOrder)]; - rawBits = new int[(1 << maxPartitionOrder)]; - capacityByOrder = maxPartitionOrder; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Frame.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Frame.java deleted file mode 100644 index 44255bb1ac25c6acd09270856287199e0c4992cb..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Frame.java +++ /dev/null @@ -1,83 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.Constants; - -/** - * The FLAC Frame class. - * @author kc7bfi - */ -public class Frame { - /** The frame header. */ - public Header header; - - /** The subframes - One per channel. */ - public Channel[] subframes = new Channel[Constants.MAX_CHANNELS]; - - /** The frame footer. */ - private short crc; - - /** - * @see Object#toString() - */ - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append("Frame Header: " + header + "\n"); - for (int i = 0; i < header.channels; i++) { - sb.append("\tFrame Data " + subframes[i].toString() + "\n"); - } - sb.append("\tFrame Footer: " + crc); - - return sb.toString(); - - } - - /** - * Return the maximum Rice partition order based on the block size. - * @param blocksize The block size - * @return The maximum Rice partition order - */ - public static int getMaxRicePartitionOrderFromBlocksize(int blocksize) { - int maxRicePartitionOrder = 0; - while ((blocksize & 1) == 0) { - maxRicePartitionOrder++; - blocksize >>= 1; - } - return Math.min(Constants.MAX_RICE_PARTITION_ORDER, maxRicePartitionOrder); - } - - /** - * return the frame's CRC. - * @return Returns the crc. - */ - public short getCRC() { - return crc; - } - - /** - * Set the frame's CRC. - * @param crc The crc to set. - */ - public void setCRC(short crc) { - this.crc = crc; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Header.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Header.java deleted file mode 100644 index 920749c965571343636859e6ba59a3b6d1ee765b..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/frame/Header.java +++ /dev/null @@ -1,300 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.frame; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.Constants; -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; -import v4lk.lwbd.decoders.processing.jflac.util.CRC8; - -import java.io.IOException; - -/** - * Frame header class. - * @author kc7bfi - */ -public class Header { - - /** The number of samples per subframe. */ - public int blockSize; - /** The sample rate in Hz. */ - public int sampleRate; - /** The number of channels (== number of subframes). */ - public int channels; - /** The channel assignment for the frame. */ - public int channelAssignment; - /** The sample resolution. */ - public int bitsPerSample; - - /** - * The frame number or sample number of first sample in frame. - * use the number_type value to determine which to use. - */ - public int frameNumber = -1; - - /** - * The sample number for the first sample in the frame. - */ - public long sampleNumber = -1; - - /** - * CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0). - * of the raw frame header bytes, meaning everything before the CRC byte - * including the sync code. - */ - protected byte crc; - - /** - * The constructor. - * @param is The InputBitStream - * @param headerWarmup The header warm-up bytes - * @param streamInfo The FLAC Stream Info - * @throws java.io.IOException Thrown on error reading InputBitStream - * @throws BadHeaderException Thrown if header is bad - */ - public Header(BitInputStream is, byte[] headerWarmup, StreamInfo streamInfo) throws IOException, BadHeaderException { - int blocksizeHint = 0; - int sampleRateHint = 0; - ByteData rawHeader = new ByteData(16); // MAGIC NUMBER based on the maximum frame header size, including CRC - boolean isKnownVariableBlockSizeStream = (streamInfo != null && streamInfo.getMinBlockSize() != streamInfo.getMaxBlockSize()); - boolean isKnownFixedBlockSizeStream = (streamInfo != null && streamInfo.getMinBlockSize() == streamInfo.getMaxBlockSize()); - - // init the raw header with the saved bits from synchronization - rawHeader.append(headerWarmup[0]); - rawHeader.append(headerWarmup[1]); - - // check to make sure that the reserved bits are 0 - if ((rawHeader.getData(1) & 0x03) != 0) { // MAGIC NUMBER - throw new BadHeaderException("Bad Magic Number: " + (rawHeader.getData(1) & 0xff)); - } - - // Note that along the way as we read the header, we look for a sync - // code inside. If we find one it would indicate that our original - // sync was bad since there cannot be a sync code in a valid header. - - // read in the raw header as bytes so we can CRC it, and parse it on the way - for (int i = 0; i < 2; i++) { - if (is.peekRawUInt(8) == 0xff) { // MAGIC NUMBER for the first 8 frame sync bits - throw new BadHeaderException("Found sync byte"); - } - rawHeader.append((byte) is.readRawUInt(8)); - } - - int bsType = (rawHeader.getData(2) >> 4) & 0x0f; - switch (bsType) { - case 0: - if (!isKnownFixedBlockSizeStream) - throw new BadHeaderException("Unknown Block Size (0)"); - blockSize = streamInfo.getMinBlockSize(); - break; - case 1: - blockSize = 192; - break; - case 2: - case 3: - case 4: - case 5: - blockSize = 576 << (bsType - 2); - break; - case 6: - case 7: - blocksizeHint = bsType; - break; - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - blockSize = 256 << (bsType - 8); - break; - default: - break; - } - //System.out.println("BSType="+bsType+" BS="+blockSize); - - int srType = rawHeader.getData(2) & 0x0f; - switch (srType) { - case 0: - if (streamInfo == null) - throw new BadHeaderException("Bad Sample Rate (0)"); - sampleRate = streamInfo.getSampleRate(); - break; - case 1: - case 2: - case 3: - throw new BadHeaderException("Bad Sample Rate (" + srType + ")"); - case 4: - sampleRate = 8000; - break; - case 5: - sampleRate = 16000; - break; - case 6: - sampleRate = 22050; - break; - case 7: - sampleRate = 24000; - break; - case 8: - sampleRate = 32000; - break; - case 9: - sampleRate = 44100; - break; - case 10: - sampleRate = 48000; - break; - case 11: - sampleRate = 96000; - break; - case 12: - case 13: - case 14: - sampleRateHint = srType; - break; - case 15: - throw new BadHeaderException("Bad Sample Rate (" + srType + ")"); - default: - } - - int asgnType = (int) ((rawHeader.getData(3) >> 4) & 0x0f); - //System.out.println("AsgnType="+asgnType+" "+(rawHeader.space[3] >> 4)); - if ((asgnType & 8) != 0) { - channels = 2; - switch (asgnType & 7) { - case 0: - channelAssignment = Constants.CHANNEL_ASSIGNMENT_LEFT_SIDE; - break; - case 1: - channelAssignment = Constants.CHANNEL_ASSIGNMENT_RIGHT_SIDE; - break; - case 2: - channelAssignment = Constants.CHANNEL_ASSIGNMENT_MID_SIDE; - break; - default: - throw new BadHeaderException("Bad Channel Assignment (" + asgnType + ")"); - } - } else { - channels = (int) asgnType + 1; - channelAssignment = Constants.CHANNEL_ASSIGNMENT_INDEPENDENT; - } - - int bpsType = (int) (rawHeader.getData(3) & 0x0e) >> 1; - switch (bpsType) { - case 0: - if (streamInfo != null) - bitsPerSample = streamInfo.getBitsPerSample(); - else - throw new BadHeaderException("Bad BPS (" + bpsType + ")"); - break; - case 1: - bitsPerSample = 8; - break; - case 2: - bitsPerSample = 12; - break; - case 4: - bitsPerSample = 16; - break; - case 5: - bitsPerSample = 20; - break; - case 6: - bitsPerSample = 24; - break; - case 3: - case 7: - throw new BadHeaderException("Bad BPS (" + bpsType + ")"); - default: - break; - } - - if ((rawHeader.getData(3) & 0x01) != 0) { // this should be a zero padding bit - throw new BadHeaderException("this should be a zero padding bit"); - } - - if ((blocksizeHint != 0) && isKnownVariableBlockSizeStream) { - sampleNumber = is.readUTF8Long(rawHeader); - if (sampleNumber == 0xffffffffffffffffL) { // i.e. non-UTF8 code... - throw new BadHeaderException("Bad Sample Number"); - } - } else { - int lastFrameNumber = is.readUTF8Int(rawHeader); - if (lastFrameNumber == 0xffffffff) { // i.e. non-UTF8 code... - throw new BadHeaderException("Bad Last Frame"); - } - sampleNumber = (long) streamInfo.getMinBlockSize() * (long) lastFrameNumber; - } - - if (blocksizeHint != 0) { - int blockSizeCode = is.readRawUInt(8); - rawHeader.append((byte) blockSizeCode); - if (blocksizeHint == 7) { - int blockSizeCode2 = is.readRawUInt(8); - rawHeader.append((byte) blockSizeCode2); - blockSizeCode = (blockSizeCode << 8) | blockSizeCode2; - } - blockSize = blockSizeCode + 1; - } - - if (sampleRateHint != 0) { - int sampleRateCode = is.readRawUInt(8); - rawHeader.append((byte) sampleRateCode); - if (sampleRateHint != 12) { - int sampleRateCode2 = is.readRawUInt(8); - rawHeader.append((byte) sampleRateCode2); - sampleRateCode = (sampleRateCode << 8) | sampleRateCode2; - } - if (sampleRateHint == 12) - sampleRate = sampleRateCode * 1000; - else if (sampleRateHint == 13) - sampleRate = sampleRateCode; - else - sampleRate = sampleRateCode * 10; - } - - // read the CRC-8 byte - byte crc8 = (byte) is.readRawUInt(8); - - if (CRC8.calc(rawHeader.getData(), rawHeader.getLen()) != crc8) { - throw new BadHeaderException("STREAM_DECODER_ERROR_STATUS_BAD_HEADER"); - } - } - - /** - * Return a descriptive string for this object. - * @return the string description - * @see Object#toString() - */ - public String toString() { - return "FrameHeader:" - + " BlockSize=" + blockSize - + " SampleRate=" + sampleRate - + " Channels=" + channels - + " ChannelAssignment=" + channelAssignment - + " BPS=" + bitsPerSample - + " SampleNumber=" + sampleNumber; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/BitInputStream.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/BitInputStream.java deleted file mode 100644 index 439b1dbeebe421415b6f053e86179b2330407d82..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/BitInputStream.java +++ /dev/null @@ -1,738 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.io; - -/** - * libFLAC - Free Lossless Audio Codec library Copyright (C) 2000,2001,2002,2003 - * Josh Coalson - *

- * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - *

- * This library 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 Library General Public License for more - * details. - *

- * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.util.ByteData; -import v4lk.lwbd.decoders.processing.jflac.util.CRC16; - -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; - - -/** - * Bit-wide input stream. - * @author kc7bfi - */ -public class BitInputStream { - private static final int BITS_PER_BLURB = 8; - private static final int BITS_PER_BLURB_LOG2 = 3; - private static final byte BLURB_TOP_BIT_ONE = ((byte) 0x80); - //private static final long[] MASK32 = new long[]{0, 0x0000000000000001, 0x0000000000000003, 0x0000000000000007, 0x000000000000000F, - // 0x000000000000001F, 0x000000000000003F, 0x000000000000007F, 0x00000000000000FF, 0x00000000000001FF, 0x00000000000003FF, - // 0x00000000000007FF, 0x0000000000000FFF, 0x0000000000001FFF, 0x0000000000003FFF, 0x0000000000007FFF, 0x000000000000FFFF, - // 0x000000000001FFFF, 0x000000000003FFFF, 0x000000000007FFFF, 0x00000000000FFFFF, 0x00000000001FFFFF, 0x00000000003FFFFF, - // 0x00000000007FFFFF, 0x0000000000FFFFFF, 0x0000000001FFFFFF, 0x0000000003FFFFFF, 0x0000000007FFFFFF, 0x000000000FFFFFFF, - // 0x000000001FFFFFFF, 0x000000003FFFFFFF, 0x000000007FFFFFFF, 0x00000000FFFFFFFF, 0x00000001FFFFFFFFL, - // 0x00000003FFFFFFFFL, 0x00000007FFFFFFFFL, 0x0000000FFFFFFFFFL, 0x0000001FFFFFFFFFL, 0x0000003FFFFFFFFFL, - // 0x0000007FFFFFFFFFL, 0x000000FFFFFFFFFFL, 0x000001FFFFFFFFFFL, 0x000003FFFFFFFFFFL, 0x000007FFFFFFFFFFL, - // 0x00000FFFFFFFFFFFL, 0x00001FFFFFFFFFFFL, 0x00003FFFFFFFFFFFL, 0x00007FFFFFFFFFFFL, 0x0000FFFFFFFFFFFFL, - // 0x0001FFFFFFFFFFFFL, 0x0003FFFFFFFFFFFFL, 0x0007FFFFFFFFFFFFL, 0x000FFFFFFFFFFFFFL, 0x001FFFFFFFFFFFFFL, - // 0x003FFFFFFFFFFFFFL, 0x007FFFFFFFFFFFFFL, 0x00FFFFFFFFFFFFFFL, 0x01FFFFFFFFFFFFFFL, 0x03FFFFFFFFFFFFFFL, - // 0x07FFFFFFFFFFFFFFL, 0x0FFFFFFFFFFFFFFFL, 0x1FFFFFFFFFFFFFFFL, 0x3FFFFFFFFFFFFFFFL, 0x7FFFFFFFFFFFFFFFL, - // 0xFFFFFFFFFFFFFFFFL}; - - private static final int BUFFER_CHUNK_SIZE = 1024; - private byte[] buffer = new byte[BUFFER_CHUNK_SIZE]; - private int putByte = 0; - private int getByte = 0; - private int getBit = 0; - private int availBits = 0; - private int totalBitsRead = 0; - - private short readCRC16 = 0; - - private InputStream inStream; - - /** - * The constructor. - * @param is The InputStream to read bits from - */ - public BitInputStream(InputStream is) { - this.inStream = is; - } - - //private void resize(int newCapacity) { - // if (buffer.length >= newCapacity) return; - // System.out.println("RESIZE FROM " + buffer.length + " TO " + newCapacity); - // byte[] newBuffer = new byte[newCapacity]; - // System.arraycopy(buffer, 0, newBuffer, 0, putByte); - // buffer = newBuffer; - // //return; - //} - - //private void grow(int minBlurbsToAdd) { - // int newCapacity = (buffer.length + minBlurbsToAdd + BUFFER_CHUNK_SIZE - 1) / BUFFER_CHUNK_SIZE; - // resize(newCapacity); - //} - - //private void ensureSize(int bitsToAdd) { - // int blurbsToAdd = (bitsToAdd + 7) >> 3; - // if (buffer.length < (putByte + blurbsToAdd)) - // grow(blurbsToAdd); - //} - - private int readFromStream() throws IOException { - // first shift the unconsumed buffer data toward the front as much as possible - if (getByte > 0 && putByte > getByte) { - System.arraycopy(buffer, getByte, buffer, 0, putByte - getByte); - } - putByte -= getByte; - getByte = 0; - - // set the target for reading, taking into account blurb alignment - // blurb == byte, so no gyrations necessary: - int bytes = buffer.length - putByte; - - // finally, read in some data - bytes = inStream.read(buffer, putByte, bytes); - if (bytes <= 0) throw new EOFException(); - - // now we have to handle partial blurb cases: - // blurb == byte, so no gyrations necessary: - putByte += bytes; - availBits += bytes << 3; - return bytes; - } - - /** - * Reset the bit stream. - */ - public void reset() { - getByte = 0; - getBit = 0; - putByte = 0; - availBits = 0; - } - - /** - * Reset the read CRC-16 value. - * @param seed The initial CRC-16 value - */ - public void resetReadCRC16(short seed) { - readCRC16 = seed; - } - - /** - * return the read CRC-16 value. - * @return The read CRC-16 value - */ - public short getReadCRC16() { - return readCRC16; - } - - /** - * Test if the Bit Stream consumed bits is byte aligned. - * @return True of bit stream consumed bits is byte aligned - */ - public boolean isConsumedByteAligned() { - return ((getBit & 7) == 0); - } - - /** - * return the number of bits to read to align the byte. - * @return The number of bits to align the byte - */ - public int bitsLeftForByteAlignment() { - return 8 - (getBit & 7); - } - - /** - * return the number of bytes left to read. - * @return The number of bytes left to read - */ - public int getInputBytesUnconsumed() { - return availBits >> 3; - } - - /** - * skip over bits in bit stream without updating CRC. - * @param bits Number of bits to skip - * @throws java.io.IOException Thrown if error reading from input stream - */ - public void skipBitsNoCRC(int bits) throws IOException { - if (bits == 0) return; - int bitsToAlign = getBit & 7; - if (bitsToAlign != 0) { - int bitsToTake = Math.min(8 - bitsToAlign, bits); - readRawUInt(bitsToTake); - bits -= bitsToTake; - } - int bytesNeeded = bits / 8; - if (bytesNeeded > 0) { - readByteBlockAlignedNoCRC(null, bytesNeeded); - bits %= 8; - } - if (bits > 0) { - readRawUInt(bits); - } - } - - /** - * read a single bit. - * @return The bit - * @throws java.io.IOException Thrown if error reading input stream - */ - public int readBit() throws IOException { - while (true) { - if (availBits > 0) { - int val = ((buffer[getByte] & (0x80 >> getBit)) != 0) ? 1 : 0; - getBit++; - if (getBit == BITS_PER_BLURB) { - readCRC16 = CRC16.update(buffer[getByte], readCRC16); - getByte++; - getBit = 0; - } - availBits--; - totalBitsRead++; - return val; - } else { - readFromStream(); - } - } - } - - /** - * read a bit into an integer value. - * The bits of the input integer are shifted left and the - * read bit is placed into bit 0. - * @param val The integer to shift and add read bit - * @return The updated integer value - * @throws java.io.IOException Thrown if error reading input stream - */ - public int readBitToInt(int val) throws IOException { - while (true) { - if (availBits > 0) { - val <<= 1; - val |= ((buffer[getByte] & (0x80 >> getBit)) != 0) ? 1 : 0; - getBit++; - if (getBit == BITS_PER_BLURB) { - readCRC16 = CRC16.update(buffer[getByte], readCRC16); - getByte++; - getBit = 0; - } - availBits--; - totalBitsRead++; - return val; - } else { - readFromStream(); - } - } - } - - /** - * peek at the next bit and add it to the input integer. - * The bits of the input integer are shifted left and the - * read bit is placed into bit 0. - * @param val The input integer - * @param bit The bit to peek at - * @return The updated integer value - * @throws java.io.IOException Thrown if error reading input stream - */ - public int peekBitToInt(int val, int bit) throws IOException { - while (true) { - if (bit < availBits) { - val <<= 1; - if ((getBit + bit) >= BITS_PER_BLURB) { - bit = (getBit + bit) % BITS_PER_BLURB; - val |= ((buffer[getByte + 1] & (0x80 >> bit)) != 0) ? 1 : 0; - } else { - val |= ((buffer[getByte] & (0x80 >> (getBit + bit))) != 0) ? 1 : 0; - } - return val; - } else { - readFromStream(); - } - } - } - - /** - * read a bit into a long value. - * The bits of the input long are shifted left and the - * read bit is placed into bit 0. - * @param val The long to shift and add read bit - * @return The updated long value - * @throws java.io.IOException Thrown if error reading input stream - */ - public long readBitToLong(long val) throws IOException { - while (true) { - if (availBits > 0) { - val <<= 1; - val |= ((buffer[getByte] & (0x80 >> getBit)) != 0) ? 1 : 0; - getBit++; - if (getBit == BITS_PER_BLURB) { - readCRC16 = CRC16.update(buffer[getByte], readCRC16); - getByte++; - getBit = 0; - } - availBits--; - totalBitsRead++; - return val; - } else { - readFromStream(); - } - } - } - - /** - * read bits into an unsigned integer. - * @param bits The number of bits to read - * @return The bits as an unsigned integer - * @throws java.io.IOException Thrown if error reading input stream - */ - public int readRawUInt(int bits) throws IOException { - int val = 0; - for (int i = 0; i < bits; i++) { - val = readBitToInt(val); - } - return val; - } - - /** - * peek at bits into an unsigned integer without advancing the input stream. - * @param bits The number of bits to read - * @return The bits as an unsigned integer - * @throws java.io.IOException Thrown if error reading input stream - */ - public int peekRawUInt(int bits) throws IOException { - int val = 0; - for (int i = 0; i < bits; i++) { - val = peekBitToInt(val, i); - } - return val; - } - - /** - * read bits into a signed integer. - * @param bits The number of bits to read - * @return The bits as a signed integer - * @throws java.io.IOException Thrown if error reading input stream - */ - public int readRawInt(int bits) throws IOException { - if (bits == 0) { - return 0; - } - int uval = 0; - for (int i = 0; i < bits; i++) { - uval = readBitToInt(uval); - } - - // fix the sign - int val; - int bitsToleft = 32 - bits; - if (bitsToleft != 0) { - uval <<= bitsToleft; - val = uval; - val >>= bitsToleft; - } else { - val = uval; - } - return val; - } - - /** - * read bits into an unsigned long. - * @param bits The number of bits to read - * @return The bits as an unsigned long - * @throws java.io.IOException Thrown if error reading input stream - */ - public long readRawULong(int bits) throws IOException { - long val = 0; - for (int i = 0; i < bits; i++) { - val = readBitToLong(val); - } - return val; - } - - /** - * read bits into an unsigned little endian integer. - * @return The bits as an unsigned integer - * @throws java.io.IOException Thrown if error reading input stream - */ - public int readRawIntLittleEndian() throws IOException { - int x32 = readRawUInt(8); - int x8 = readRawUInt(8); - x32 |= (x8 << 8); - x8 = readRawUInt(8); - x32 |= (x8 << 16); - x8 = readRawUInt(8); - x32 |= (x8 << 24); - return x32; - } - - /** - * Read a block of bytes (aligned) without updating the CRC value. - * @param val The array to receive the bytes. If null, no bytes are returned - * @param nvals The number of bytes to read - * @throws java.io.IOException Thrown if error reading input stream - */ - public void readByteBlockAlignedNoCRC(byte[] val, int nvals) throws IOException { - int destlength = nvals; - while (nvals > 0) { - int chunk = Math.min(nvals, putByte - getByte); - if (chunk == 0) { - readFromStream(); - } else { - if (val != null) System.arraycopy(buffer, getByte, val, destlength - nvals, chunk); - nvals -= chunk; - getByte += chunk; - //totalConsumedBits = (getByte << BITS_PER_BLURB_LOG2); - availBits -= (chunk << BITS_PER_BLURB_LOG2); - totalBitsRead += (chunk << BITS_PER_BLURB_LOG2); - } - } - } - - /** - * Read and count the number of zero bits. - * @return The number of zero bits read - * @throws java.io.IOException Thrown if error reading input stream - */ - public int readUnaryUnsigned() throws IOException { - int val = 0; - while (true) { - int bit = readBit(); - if (bit != 0) break; - val++; - } - return val; - } - - /** - * Read a Rice Signal Block. - * @param vals The values to be returned - * @param pos The starting position in the vals array - * @param nvals The number of values to return - * @param parameter The Rice parameter - * @throws java.io.IOException On read error - */ - public void readRiceSignedBlock(int[] vals, int pos, int nvals, int parameter) throws IOException { - int j, valI = 0; - int cbits = 0, uval = 0, msbs = 0, lsbsLeft = 0; - byte blurb, saveBlurb; - int state = 0; // 0 = getting unary MSBs, 1 = getting binary LSBs - if (nvals == 0) return; - int i = getByte; - - long startBits = getByte * 8 + getBit; - - // We unroll the main loop to take care of partially consumed blurbs here. - if (getBit > 0) { - saveBlurb = blurb = buffer[i]; - cbits = getBit; - blurb <<= cbits; - while (true) { - if (state == 0) { - if (blurb != 0) { - for (j = 0; (blurb & BLURB_TOP_BIT_ONE) == 0; j++) - blurb <<= 1; - msbs += j; - - // dispose of the unary end bit - blurb <<= 1; - j++; - cbits += j; - uval = 0; - lsbsLeft = parameter; - state++; - //totalBitsRead += msbs; - if (cbits == BITS_PER_BLURB) { - cbits = 0; - readCRC16 = CRC16.update(saveBlurb, readCRC16); - break; - } - } else { - msbs += BITS_PER_BLURB - cbits; - cbits = 0; - readCRC16 = CRC16.update(saveBlurb, readCRC16); - //totalBitsRead += msbs; - break; - } - } else { - int availableBits = BITS_PER_BLURB - cbits; - if (lsbsLeft >= availableBits) { - uval <<= availableBits; - uval |= ((blurb & 0xff) >> cbits); - cbits = 0; - readCRC16 = CRC16.update(saveBlurb, readCRC16); - //totalBitsRead += availableBits; - if (lsbsLeft == availableBits) { - // compose the value - uval |= (msbs << parameter); - if ((uval & 1) != 0) - vals[pos + valI++] = -((int) (uval >> 1)) - 1; - else - vals[pos + valI++] = (int) (uval >> 1); - if (valI == nvals) - break; - msbs = 0; - state = 0; - } - lsbsLeft -= availableBits; - break; - } else { - uval <<= lsbsLeft; - uval |= ((blurb & 0xff) >> (BITS_PER_BLURB - lsbsLeft)); - blurb <<= lsbsLeft; - cbits += lsbsLeft; - //totalBitsRead += lsbsLeft; - // compose the value - uval |= (msbs << parameter); - if ((uval & 1) != 0) - vals[pos + valI++] = -((int) (uval >> 1)) - 1; - else - vals[pos + valI++] = (int) (uval >> 1); - if (valI == nvals) { - // back up one if we exited the for loop because we - // read all nvals but the end came in the middle of - // a blurb - i--; - break; - } - msbs = 0; - state = 0; - } - } - } - i++; - getByte = i; - getBit = cbits; - //totalConsumedBits = (i << BITS_PER_BLURB_LOG2) | cbits; - //totalBitsRead += (BITS_PER_BLURB) | cbits; - } - - // Now that we are blurb-aligned the logic is slightly simpler - while (valI < nvals) { - for (; i < putByte && valI < nvals; i++) { - saveBlurb = blurb = buffer[i]; - cbits = 0; - while (true) { - if (state == 0) { - if (blurb != 0) { - for (j = 0; (blurb & BLURB_TOP_BIT_ONE) == 0; j++) blurb <<= 1; - msbs += j; - // dispose of the unary end bit - blurb <<= 1; - j++; - cbits += j; - uval = 0; - lsbsLeft = parameter; - state++; - //totalBitsRead += msbs; - if (cbits == BITS_PER_BLURB) { - cbits = 0; - readCRC16 = CRC16.update(saveBlurb, readCRC16); - break; - } - } else { - msbs += BITS_PER_BLURB - cbits; - cbits = 0; - readCRC16 = CRC16.update(saveBlurb, readCRC16); - //totalBitsRead += msbs; - break; - } - } else { - int availableBits = BITS_PER_BLURB - cbits; - if (lsbsLeft >= availableBits) { - uval <<= availableBits; - uval |= ((blurb & 0xff) >> cbits); - cbits = 0; - readCRC16 = CRC16.update(saveBlurb, readCRC16); - //totalBitsRead += availableBits; - if (lsbsLeft == availableBits) { - // compose the value - uval |= (msbs << parameter); - if ((uval & 1) != 0) - vals[pos + valI++] = -((int) (uval >> 1)) - 1; - else - vals[pos + valI++] = (int) (uval >> 1); - if (valI == nvals) - break; - msbs = 0; - state = 0; - } - lsbsLeft -= availableBits; - break; - } else { - uval <<= lsbsLeft; - uval |= ((blurb & 0xff) >> (BITS_PER_BLURB - lsbsLeft)); - blurb <<= lsbsLeft; - cbits += lsbsLeft; - //totalBitsRead += lsbsLeft; - // compose the value - uval |= (msbs << parameter); - if ((uval & 1) != 0) - vals[pos + valI++] = -((int) (uval >> 1)) - 1; - else - vals[pos + valI++] = (int) (uval >> 1); - if (valI == nvals) { - // back up one if we exited the for loop because - // we read all nvals but the end came in the - // middle of a blurb - i--; - break; - } - msbs = 0; - state = 0; - } - } - } - } - getByte = i; - getBit = cbits; - //totalConsumedBits = (i << BITS_PER_BLURB_LOG2) | cbits; - //totalBitsRead += (BITS_PER_BLURB) | cbits; - if (valI < nvals) { - long endBits = getByte * 8 + getBit; - //System.out.println("SE0 "+startBits+" "+endBits); - totalBitsRead += endBits - startBits; - availBits -= endBits - startBits; - readFromStream(); - // these must be zero because we can only get here if we got to - // the end of the buffer - i = 0; - startBits = getByte * 8 + getBit; - } - } - - long endBits = getByte * 8 + getBit; - //System.out.println("SE1 "+startBits+" "+endBits); - totalBitsRead += endBits - startBits; - availBits -= endBits - startBits; - } - - /** - * read UTF8 integer. - * on return, if *val == 0xffffffff then the utf-8 sequence was invalid, but - * the return value will be true - * @param raw The raw bytes read (output). If null, no bytes are returned - * @return The integer read - * @throws java.io.IOException Thrown if error reading input stream - */ - public int readUTF8Int(ByteData raw) throws IOException { - int val; - int v = 0; - int x; - int i; - x = readRawUInt(8); - if (raw != null) raw.append((byte) x); - if ((x & 0x80) == 0) { // 0xxxxxxx - v = x; - i = 0; - } else if (((x & 0xC0) != 0) && ((x & 0x20) == 0)) { // 110xxxxx - v = x & 0x1F; - i = 1; - } else if (((x & 0xE0) != 0) && ((x & 0x10) == 0)) { // 1110xxxx - v = x & 0x0F; - i = 2; - } else if (((x & 0xF0) != 0) && ((x & 0x08) == 0)) { // 11110xxx - v = x & 0x07; - i = 3; - } else if (((x & 0xF8) != 0) && ((x & 0x04) == 0)) { // 111110xx - v = x & 0x03; - i = 4; - } else if (((x & 0xFC) != 0) && ((x & 0x02) == 0)) { // 1111110x - v = x & 0x01; - i = 5; - } else { - val = 0xffffffff; - return val; - } - for (; i > 0; i--) { - x = peekRawUInt(8); - if (((x & 0x80) == 0) || ((x & 0x40) != 0)) { // 10xxxxxx - val = 0xffffffff; - return val; - } - x = readRawUInt(8); - if (raw != null) - raw.append((byte) x); - v <<= 6; - v |= (x & 0x3F); - } - val = v; - return val; - } - - /** - * read UTF long. - * on return, if *val == 0xffffffffffffffff then the utf-8 sequence was - * invalid, but the return value will be true - * @param raw The raw bytes read (output). If null, no bytes are returned - * @return The long read - * @throws java.io.IOException Thrown if error reading input stream - */ - public long readUTF8Long(ByteData raw) throws IOException { - long v = 0; - int x; - int i; - long val; - x = readRawUInt(8); - if (raw != null) - raw.append((byte) x); - if (((x & 0x80) == 0)) { // 0xxxxxxx - v = x; - i = 0; - } else if (((x & 0xC0) != 0) && ((x & 0x20) == 0)) { // 110xxxxx - v = x & 0x1F; - i = 1; - } else if (((x & 0xE0) != 0) && ((x & 0x10) == 0)) { // 1110xxxx - v = x & 0x0F; - i = 2; - } else if (((x & 0xF0) != 0) && ((x & 0x08) == 0)) { // 11110xxx - v = x & 0x07; - i = 3; - } else if (((x & 0xF8) != 0) && ((x & 0x04) == 0)) { // 111110xx - v = x & 0x03; - i = 4; - } else if (((x & 0xFC) != 0) && ((x & 0x02) == 0)) { // 1111110x - v = x & 0x01; - i = 5; - } else if (((x & 0xFE) != 0) && ((x & 0x01) == 0)) { // 11111110 - v = 0; - i = 6; - } else { - val = 0xffffffffffffffffL; - return val; - } - for (; i > 0; i--) { - x = peekRawUInt(8); - if (((x & 0x80) == 0) || ((x & 0x40) != 0)) { // 10xxxxxx - val = 0xffffffffffffffffL; - return val; - } - x = readRawUInt(8); - if (raw != null) - raw.append((byte) x); - v <<= 6; - v |= (x & 0x3F); - } - val = v; - return val; - } - - /** - * Total Blurbs read. - * @return Returns the total blurbs read. - */ - public int getTotalBytesRead() { - return ((totalBitsRead + 7) / 8); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/BitOutputStream.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/BitOutputStream.java deleted file mode 100644 index e995b36b485fc56c002afcfe8d537bdfdb4324bc..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/BitOutputStream.java +++ /dev/null @@ -1,626 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.io; - -/** - * libFLAC - Free Lossless Audio Codec library Copyright (C) 2000,2001,2002,2003 - * Josh Coalson - *

- * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - *

- * This library 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 Library General Public License for more - * details. - *

- * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.util.CRC16; -import v4lk.lwbd.decoders.processing.jflac.util.CRC8; - -import java.io.IOException; -import java.io.OutputStream; - - -/** - * Bit-wide output stream. - * @author kc7bfi - */ -public class BitOutputStream { - private static final int BITS_PER_BLURB = 8; - //private static final int BITS_PER_BLURB_LOG2 = 3; - //private static final int BYTES_PER_BLURB = 1; - //private static final byte BLURB_TOP_BIT_ONE = ((byte) 0x80); - private static final long[] MASK32 = new long[]{0, 0x0000000000000001, 0x0000000000000003, 0x0000000000000007, 0x000000000000000F, - 0x000000000000001F, 0x000000000000003F, 0x000000000000007F, 0x00000000000000FF, 0x00000000000001FF, 0x00000000000003FF, - 0x00000000000007FF, 0x0000000000000FFF, 0x0000000000001FFF, 0x0000000000003FFF, 0x0000000000007FFF, 0x000000000000FFFF, - 0x000000000001FFFF, 0x000000000003FFFF, 0x000000000007FFFF, 0x00000000000FFFFF, 0x00000000001FFFFF, 0x00000000003FFFFF, - 0x00000000007FFFFF, 0x0000000000FFFFFF, 0x0000000001FFFFFF, 0x0000000003FFFFFF, 0x0000000007FFFFFF, 0x000000000FFFFFFF, - 0x000000001FFFFFFF, 0x000000003FFFFFFF, 0x000000007FFFFFFF, 0x00000000FFFFFFFF, 0x00000001FFFFFFFFL, - 0x00000003FFFFFFFFL, 0x00000007FFFFFFFFL, 0x0000000FFFFFFFFFL, 0x0000001FFFFFFFFFL, 0x0000003FFFFFFFFFL, - 0x0000007FFFFFFFFFL, 0x000000FFFFFFFFFFL, 0x000001FFFFFFFFFFL, 0x000003FFFFFFFFFFL, 0x000007FFFFFFFFFFL, - 0x00000FFFFFFFFFFFL, 0x00001FFFFFFFFFFFL, 0x00003FFFFFFFFFFFL, 0x00007FFFFFFFFFFFL, 0x0000FFFFFFFFFFFFL, - 0x0001FFFFFFFFFFFFL, 0x0003FFFFFFFFFFFFL, 0x0007FFFFFFFFFFFFL, 0x000FFFFFFFFFFFFFL, 0x001FFFFFFFFFFFFFL, - 0x003FFFFFFFFFFFFFL, 0x007FFFFFFFFFFFFFL, 0x00FFFFFFFFFFFFFFL, 0x01FFFFFFFFFFFFFFL, 0x03FFFFFFFFFFFFFFL, - 0x07FFFFFFFFFFFFFFL, 0x0FFFFFFFFFFFFFFFL, 0x1FFFFFFFFFFFFFFFL, 0x3FFFFFFFFFFFFFFFL, 0x7FFFFFFFFFFFFFFFL, - 0xFFFFFFFFFFFFFFFFL}; - - private byte[] buffer = new byte[0]; - private int outCapacity = 0; // in blurbs - private int outBlurbs = 0; - private int outBits = 0; - private int totalBits = 0; // must always == BITS_PER_BLURB*blurbs+bits - private int consumedBlurbs = 0; - private int consumedBits = 0; - private int totalConsumedBits = 0; - private short readCRC16 = 0; - private OutputStream os; - - /* - * WATCHOUT: The current implentation is not friendly to shrinking, i.e. it - * does not shift left what is consumed, it just chops off the end, whether - * there is unconsumed data there or not. This is OK because currently we - * never shrink the buffer, but if this ever changes, we'll have to do some - * fixups here. - */ - private boolean resize(int newCapacity) { - if (outCapacity >= newCapacity) return true; - byte[] newBuffer = new byte[newCapacity]; - System.arraycopy(buffer, 0, newBuffer, 0, Math.min(outBlurbs + ((outBits != 0) ? 1 : 0), newCapacity)); - if (newCapacity < outBlurbs + ((outBits != 0) ? 1 : 0)) { - outBlurbs = newCapacity; - outBits = 0; - totalBits = newCapacity << 3; - } - if (newCapacity < consumedBlurbs + ((consumedBits != 0) ? 1 : 0)) { - consumedBlurbs = newCapacity; - consumedBits = 0; - totalConsumedBits = newCapacity << 3; - } - buffer = newBuffer; - outCapacity = newCapacity; - return true; - } - - private boolean grow(int minBlurbsToAdd) { - int newCapacity = Math.max(outCapacity * 2, outCapacity + minBlurbsToAdd); - return resize(newCapacity); - } - - private boolean ensureSize(int bitsToAdd) { - if ((outCapacity << 3) < totalBits + bitsToAdd) { - return grow((bitsToAdd >> 3) + 2); - } - return true; - } - - /* - private int readFromStream() throws IOException { - // first shift the unconsumed buffer data toward the front as much as possible - if (totalConsumedBits >= BITS_PER_BLURB) { - int l = 0; - int r = consumedBlurbs; - int r_end = inBlurbs + ((inBits != 0) ? 1 : 0); - for (; r < r_end; l++, r++) - buffer[l] = buffer[r]; - for (; l < r_end; l++) - buffer[l] = 0; - inBlurbs -= consumedBlurbs; - totalBits -= consumedBlurbs << 3; - consumedBlurbs = 0; - totalConsumedBits = consumedBits; - } - - // grow if we need to - if (capacity <= 1) resize(16); - - // set the target for reading, taking into account blurb alignment - // blurb == byte, so no gyrations necessary: - int bytes = capacity - inBlurbs; - - // finally, read in some data - bytes = is.read(buffer, inBlurbs, bytes); - if (bytes <= 0) throw new EOFException(); - - // now we have to handle partial blurb cases: - // blurb == byte, so no gyrations necessary: - inBlurbs += bytes; - totalBits += bytes << 3; - return bytes; - } - */ - - /** - * The constructor. - * @param os The InputStream to read bits from - */ - public BitOutputStream(OutputStream os) { - this.os = os; - } - - /** - * The constructor. - */ - public BitOutputStream() { - } - - /** TODO - */ - //public void clear() { - // - //} - - /** - * Concatinate one InputBitStream to the end of this one. - * @param src The inputBitStream to copy - * @return True if copy was successful - */ - public boolean concatenateAligned(BitOutputStream src) { - int bitsToAdd = src.totalBits - src.totalConsumedBits; - if (bitsToAdd == 0) return true; - if (outBits != src.consumedBits) return false; - if (!ensureSize(bitsToAdd)) return false; - if (outBits == 0) { - System.arraycopy(src.buffer, src.consumedBlurbs, buffer, outBlurbs, - (src.outBlurbs - src.consumedBlurbs + ((src.outBits != 0) ? 1 : 0))); - } else if (outBits + bitsToAdd > BITS_PER_BLURB) { - buffer[outBlurbs] <<= (BITS_PER_BLURB - outBits); - buffer[outBlurbs] |= (src.buffer[src.consumedBlurbs] & ((1 << (BITS_PER_BLURB - outBits)) - 1)); - System.arraycopy(src.buffer, src.consumedBlurbs + 1, buffer, outBlurbs + 11, - (src.outBlurbs - src.consumedBlurbs - 1 + ((src.outBits != 0) ? 1 : 0))); - } else { - buffer[outBlurbs] <<= bitsToAdd; - buffer[outBlurbs] |= (src.buffer[src.consumedBlurbs] & ((1 << bitsToAdd) - 1)); - } - outBits = src.outBits; - totalBits += bitsToAdd; - outBlurbs = totalBits / BITS_PER_BLURB; - return true; - } - - /** - * Reset the read CRC-16 value. - * @param seed The initial CRC-16 value - */ - public void resetReadCRC16(short seed) { - readCRC16 = seed; - } - - /** - * return the read CRC-16 value. - * @return The read CRC-16 value - */ - public short getReadCRC16() { - return readCRC16; - } - - /** - * return the write CRC-16 value. - * @return The write CRC-16 value - */ - public short getWriteCRC16() { - return CRC16.calc(buffer, outBlurbs); - } - - /** - * return the write CRC-8 value. - * @return The write CRC-8 value - */ - public byte getWriteCRC8() { - return CRC8.calc(buffer, outBlurbs); - } - - /** - * Test if the Bit Stream is byte aligned. - * @return True of bit stream is byte aligned - */ - public boolean isByteAligned() { - return ((outBits & 7) == 0); - } - - /** - * Test if the Bit Stream consumed bits is byte aligned. - * @return True of bit stream consumed bits is byte aligned - */ - public boolean isConsumedByteAligned() { - return ((consumedBits & 7) == 0); - } - - /** - * return the number of bits to read to align the byte. - * @return The number of bits to align the byte - */ - public int bitsLeftForByteAlignment() { - return 8 - (consumedBits & 7); - } - - /** - * return the number of bytes left to read. - * @return The number of bytes left to read - */ - public int getInputBytesUnconsumed() { - return (totalBits - totalConsumedBits) >> 3; - } - - /** - * Write zero bits. - * @param bits The number of zero bits to write - * @throws java.io.IOException On write error - */ - public void writeZeroes(int bits) throws IOException { - if (bits == 0) return; - if (!ensureSize(bits)) throw new IOException("Memory Allocation Error"); - totalBits += bits; - while (bits > 0) { - int n = Math.min(BITS_PER_BLURB - outBits, bits); - buffer[outBlurbs] <<= n; - bits -= n; - outBits += n; - if (outBits == BITS_PER_BLURB) { - outBlurbs++; - outBits = 0; - } - } - } - - /** - * Write a true/false integer. - * @param val The true/false value - * @param bits The bit size to write - * @throws java.io.IOException On write error - */ - public void writeRawUInt(boolean val, int bits) throws IOException { - writeRawUInt((val) ? 1 : 0, bits); - } - - public void writeRawUInt(int val, int bits) throws IOException { - if (bits == 0) return; - - // inline the size check so we don't incure a function call unnecessarily - if ((outCapacity << 3) < totalBits + bits) { - if (!ensureSize(bits)) throw new IOException("Memory allocation error"); - } - - // zero-out unused bits; WATCHOUT: other code relies on this, so this needs to stay - if (bits < 32) val &= (~(0xffffffff << bits)); // zero-out unused bits - totalBits += bits; - while (bits > 0) { - int n = BITS_PER_BLURB - outBits; - if (n == BITS_PER_BLURB) { // i.e. outBits == 0 - if (bits < BITS_PER_BLURB) { - buffer[outBlurbs] = (byte) val; - outBits = bits; - break; - } else if (bits == BITS_PER_BLURB) { - buffer[outBlurbs++] = (byte) val; - break; - } else { - int k = bits - BITS_PER_BLURB; - buffer[outBlurbs++] = (byte) (val >> k); - - // we know k < 32 so no need to protect against the gcc bug mentioned above - val &= (~(0xffffffff << k)); - bits -= BITS_PER_BLURB; - } - } else if (bits <= n) { - buffer[outBlurbs] <<= bits; - buffer[outBlurbs] |= val; - if (bits == n) { - outBlurbs++; - outBits = 0; - } else - outBits += bits; - break; - } else { - int k = bits - n; - buffer[outBlurbs] <<= n; - buffer[outBlurbs] |= (val >> k); - - // we know n > 0 so k < 32 so no need to protect against the gcc bug mentioned above - val &= (~(0xffffffff << k)); - bits -= n; - outBlurbs++; - outBits = 0; - } - } - } - - public void writeRawInt(int val, int bits) throws IOException { - writeRawUInt((int) val, bits); - } - - public void writeRawULong(long val, int bits) throws IOException { - if (bits == 0) return; - if (!ensureSize(bits)) throw new IOException("Memory Allocate Error"); - val &= MASK32[bits]; - totalBits += bits; - while (bits > 0) { - if (outBits == 0) { - if (bits < BITS_PER_BLURB) { - buffer[outBlurbs] = (byte) val; - outBits = bits; - break; - } else if (bits == BITS_PER_BLURB) { - buffer[outBlurbs++] = (byte) val; - break; - } else { - int k = bits - BITS_PER_BLURB; - buffer[outBlurbs++] = (byte) (val >> k); - - // we know k < 64 so no need to protect against the gcc bug mentioned above - val &= (~(0xffffffffffffffffL << k)); - bits -= BITS_PER_BLURB; - } - } else { - int n = Math.min(BITS_PER_BLURB - outBits, bits); - int k = bits - n; - buffer[outBlurbs] <<= n; - buffer[outBlurbs] |= (val >> k); - - // we know n > 0 so k < 64 so no need to protect against the gcc bug mentioned above - val &= (~(0xffffffffffffffffL << k)); - bits -= n; - outBits += n; - if (outBits == BITS_PER_BLURB) { - outBlurbs++; - outBits = 0; - } - } - } - } - - public void writeRawUIntLittleEndian(int val) throws IOException { - // NOTE: we rely on the fact that write_raw_uint32() masks out the unused bits - writeRawUInt(val, 8); - writeRawUInt(val >> 8, 8); - writeRawUInt(val >> 16, 8); - writeRawUInt(val >> 24, 8); - } - - public void writeByteBlock(byte[] vals, int nvals) throws IOException { - // this could be faster but currently we don't need it to be - for (int i = 0; i < nvals; i++) { - writeRawUInt((int) (vals[i]), 8); - } - } - - public void writeUnaryUnsigned(int val) throws IOException { - if (val < 32) - writeRawUInt(1, ++val); - else if (val < 64) - writeRawULong(1, ++val); - else { - writeZeroes(val); - writeRawUInt(1, 1); - } - } - - public int riceBits(int val, int parameter) { - int msbs, uval; - // fold signed to unsigned - if (val < 0) { - // equivalent to (unsigned)(((--val) < < 1) - 1); but without the overflow problem at MININT - uval = (int) (((-(++val)) << 1) + 1); - } else { - uval = (int) (val << 1); - } - msbs = uval >> parameter; - return 1 + parameter + msbs; - } - /* - * DRR FIX # ifdef SYMMETRIC_RICE boolean - * write_symmetric_rice_signed(BitBuffer8 * bb, int val, unsigned parameter) { - * unsigned total_bits, interesting_bits, msbs; uint32 pattern; - * - * ASSERT(0 != bb); ASSERT(0 != buffer); ASSERT(parameter <= 31); // init - * pattern with the unary end bit and the sign bit if (val < 0) { pattern = - * 3; val = -val; } else pattern = 2; - * - * msbs = val >> parameter; interesting_bits = 2 + parameter; total_bits = - * interesting_bits + msbs; pattern < <= parameter; pattern |= (val & ((1 < < - * parameter) - 1)); // the binary LSBs - * - * if (total_bits <= 32) { if (!write_raw_uint32(bb, pattern, total_bits)) - * return false; } else { // write the unary MSBs if (!write_zeroes(bb, - * msbs)) return false; // write the unary end bit, the sign bit, and binary - * LSBs if (!write_raw_uint32(bb, pattern, interesting_bits)) return false; } - * return true; } - * - * boolean write_symmetric_rice_signed_escape(BitBuffer8 * bb, int val, - * unsigned parameter) { unsigned total_bits, val_bits; uint32 pattern; - * - * ASSERT(0 != bb); ASSERT(0 != buffer); ASSERT(parameter <= 31); - * - * val_bits = bitmath_silog2(val); total_bits = 2 + parameter + 5 + - * val_bits; - * - * if (total_bits <= 32) { pattern = 3; pattern < <= (parameter + 5); - * pattern |= val_bits; pattern < <= val_bits; pattern |= (val & ((1 < < - * val_bits) - 1)); if (!write_raw_uint32(bb, pattern, total_bits)) return - * false; } else { // write the '-0' escape code first if - * (!write_raw_uint32(bb, 3 u < < parameter, 2 + parameter)) return false; // - * write the length if (!write_raw_uint32(bb, val_bits, 5)) return false; // - * write the value if (!write_raw_int32(bb, val, val_bits)) return false; } - * return true; } # endif // ifdef SYMMETRIC_RICE - */ - - public void writeRiceSigned(int val, int parameter) throws IOException { - int totalBits; - int interestingBits; - int msbs; - int uval; - int pattern; - - // fold signed to unsigned - if (val < 0) { - // equivalent to (unsigned)(((--val) < < 1) - 1); but without the overflow problem at MININT - uval = (int) (((-(++val)) << 1) + 1); - } else { - uval = (int) (val << 1); - } - msbs = uval >> parameter; - interestingBits = 1 + parameter; - totalBits = interestingBits + msbs; - pattern = 1 << parameter; /* the unary end bit */ - pattern |= (uval & ((1 << parameter) - 1)); /* the binary LSBs */ - if (totalBits <= 32) { - writeRawUInt(pattern, totalBits); - } else { - /* write the unary MSBs */ - writeZeroes(msbs); - /* write the unary end bit and binary LSBs */ - writeRawUInt(pattern, interestingBits); - } - } - - public void writeUTF8UInt(int val) throws IOException { - if (val < 0x80) { - writeRawUInt(val, 8); - } else if (val < 0x800) { - writeRawUInt(0xC0 | (val >> 6), 8); - writeRawUInt(0x80 | (val & 0x3F), 8); - } else if (val < 0x10000) { - writeRawUInt(0xE0 | (val >> 12), 8); - writeRawUInt(0x80 | ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (val & 0x3F), 8); - } else if (val < 0x200000) { - writeRawUInt(0xF0 | (val >> 18), 8); - writeRawUInt(0x80 | ((val >> 12) & 0x3F), 8); - writeRawUInt(0x80 | ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (val & 0x3F), 8); - } else if (val < 0x4000000) { - writeRawUInt(0xF8 | (val >> 24), 8); - writeRawUInt(0x80 | ((val >> 18) & 0x3F), 8); - writeRawUInt(0x80 | ((val >> 12) & 0x3F), 8); - writeRawUInt(0x80 | ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (val & 0x3F), 8); - } else { - writeRawUInt(0xFC | (val >> 30), 8); - writeRawUInt(0x80 | ((val >> 24) & 0x3F), 8); - writeRawUInt(0x80 | ((val >> 18) & 0x3F), 8); - writeRawUInt(0x80 | ((val >> 12) & 0x3F), 8); - writeRawUInt(0x80 | ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (val & 0x3F), 8); - } - } - - public void writeUTF8ULong(long val) throws IOException { - if (val < 0x80) { - writeRawUInt((int) val, 8); - } else if (val < 0x800) { - writeRawUInt(0xC0 | (int) (val >> 6), 8); - writeRawUInt(0x80 | (int) (val & 0x3F), 8); - } else if (val < 0x10000) { - writeRawUInt(0xE0 | (int) (val >> 12), 8); - writeRawUInt(0x80 | (int) ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (int) (val & 0x3F), 8); - } else if (val < 0x200000) { - writeRawUInt(0xF0 | (int) (val >> 18), 8); - writeRawUInt(0x80 | (int) ((val >> 12) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (int) (val & 0x3F), 8); - } else if (val < 0x4000000) { - writeRawUInt(0xF8 | (int) (val >> 24), 8); - writeRawUInt(0x80 | (int) ((val >> 18) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 12) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (int) (val & 0x3F), 8); - } else if (val < 0x80000000) { - writeRawUInt(0xFC | (int) (val >> 30), 8); - writeRawUInt(0x80 | (int) ((val >> 24) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 18) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 12) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (int) (val & 0x3F), 8); - } else { - writeRawUInt(0xFE, 8); - writeRawUInt(0x80 | (int) ((val >> 30) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 24) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 18) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 12) & 0x3F), 8); - writeRawUInt(0x80 | (int) ((val >> 6) & 0x3F), 8); - writeRawUInt(0x80 | (int) (val & 0x3F), 8); - } - } - - /** - * Write zero bits to byte boundry. - * @throws java.io.IOException On error writing to bit stream - */ - public void zeroPadToByteBoundary() throws IOException { - // 0-pad to byte boundary - if ((outBits & 7) != 0) writeZeroes(8 - (outBits & 7)); - } - - /** - * Flush bit stream after aligning byte boundry. - * @throws java.io.IOException On error writing. - */ - public void flushByteAligned() throws IOException { - zeroPadToByteBoundary(); - if (outBlurbs == 0) return; - os.write(buffer, 0, outBlurbs); - outBlurbs = 0; - } - - /* - * DRR FIX boolean peek_bit(unsigned * val, boolean(* read_callback) (byte - * buffer[], unsigned * bytes, void * client_data), void * client_data) { - * - * while (1) { if (total_consumed_bits < total_bits) { val = - * (buffer[consumed_blurbs] & BLURB_BIT_TO_MASK(consumed_bits)) ? 1 : 0; - * return true; } else { if (!read_from_client_(bb, read_callback, - * client_data)) return false; } } } - */ - - /* - * # ifdef SYMMETRIC_RICE boolean read_symmetric_rice_signed( BitBuffer8 * - * bb, int * val, unsigned parameter, boolean(* read_callback) (byte - * buffer[], unsigned * bytes, void * client_data), void * client_data) { - * uint32 sign = 0, lsbs = 0, msbs = 0; - * - * ASSERT(0 != bb); ASSERT(0 != buffer); ASSERT(parameter <= 31); // read - * the unary MSBs and end bit if (!read_unary_unsigned(bb, & msbs, - * read_callback, client_data)) return false; // read the sign bit if - * (!read_bit_to_uint32(bb, & sign, read_callback, client_data)) return - * false; // read the binary LSBs if (!read_raw_uint32(bb, & lsbs, - * parameter, read_callback, client_data)) return false; // compose the - * value val = (msbs < < parameter) | lsbs; if (sign) val = - (* val); - * - * return true; } # endif // ifdef SYMMETRIC_RICE - * - * boolean read_rice_signed( BitBuffer8 * bb, int * val, unsigned parameter, - * boolean(* read_callback) (byte buffer[], unsigned * bytes, void * - * client_data), void * client_data) { uint32 lsbs = 0, msbs = 0; unsigned - * uval; - * - * ASSERT(0 != bb); ASSERT(0 != buffer); ASSERT(parameter <= 31); // read - * the unary MSBs and end bit if (!read_unary_unsigned(bb, & msbs, - * read_callback, client_data)) return false; // read the binary LSBs if - * (!read_raw_uint32(bb, & lsbs, parameter, read_callback, client_data)) - * return false; // compose the value uval = (msbs < < parameter) | lsbs; if - * (uval & 1) val = - ((int) (uval >> 1)) - 1; else val = (int) (uval >> 1); - * - * return true; } - */ - - /** - * Returns the totalBits. - * @return Returns the totalBits. - */ - public int getTotalBits() { - return totalBits; - } - - /** - * Returns the totalBlurbs. - * @return Returns the totalBlurbs. - */ - public int getTotalBlurbs() { - return (totalBits + 7) / 8; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/RandomFileInputStream.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/RandomFileInputStream.java deleted file mode 100644 index a67b05159278a1c29f8c54c74855b74646f5ed1c..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/io/RandomFileInputStream.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Created on Jun 23, 2004 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package v4lk.lwbd.decoders.processing.jflac.io; - -import java.io.*; - - -/** - * This is a FileInputStream that uses a Random Access File. - * - * @author kc7bfi - */ -public class RandomFileInputStream extends InputStream { - - protected RandomAccessFile randomFile = null; - - /** - * Constructor. - * - * @param file The File to read - * @throws java.io.FileNotFoundException If file is not found - */ - public RandomFileInputStream(File file) throws FileNotFoundException { - super(); - randomFile = new RandomAccessFile(file, "r"); - } - - /** - * Constructor. - * - * @param fileName The name of the file to read - * @throws java.io.FileNotFoundException If the file is not found. - */ - public RandomFileInputStream(String fileName) throws FileNotFoundException { - super(); - randomFile = new RandomAccessFile(fileName, "r"); - } - - /** - * Constructor. - * - * @param randomFile The file to read - */ - public RandomFileInputStream(RandomAccessFile randomFile) { - this.randomFile = randomFile; - } - - /** - * Read a byte value. - * - * @return the byte value - * @throws java.io.IOException on IO error - * @see java.io.InputStream#read() - */ - public int read() throws IOException { - return randomFile.read(); - } - - /** - * @see java.io.InputStream#reset() - */ - public synchronized void reset() { - /** TODO */ - System.out.println("RandomFileInputStream: reset"); - } - - /** - * Close the file. - * - * @throws java.io.IOException on IO error - * @see java.io.InputStream#close() - */ - public void close() throws IOException { - randomFile.close(); - } - - /** - * Is file marking supported. - * - * @return true if file marking is supported - * @see java.io.InputStream#markSupported() - */ - public boolean markSupported() { - return true; - } - - /** - * @see java.io.InputStream#mark(int) - */ - public synchronized void mark(int arg0) { - /** TODO */ - System.out.println("RandomFileInputStream: mark"); - } - - /** - * Skip bytes in the input file. - * - * @param bytes The number of bytes to skip - * @return the number of bytes skiped - * @throws java.io.IOException on IO error - * @see java.io.InputStream#skip(long) - */ - public long skip(long bytes) throws IOException { - long pos = randomFile.getFilePointer(); - randomFile.seek(pos + bytes); - return randomFile.getFilePointer() - pos; - } - - /** - * Read bytes into an array. - * - * @param buffer The buffer to read bytes into - * @return bytes read - * @throws java.io.IOException on IO error - * @see java.io.InputStream#read(byte[]) - */ - public int read(byte[] buffer) throws IOException { - return randomFile.read(buffer); - } - - /** - * Read bytes into an array. - * - * @param buffer The buffer to read bytes into - * @param pos The start position in the buffer - * @param bytes The number of bytes to read - * @return bytes read - * @throws java.io.IOException on IO error - * @see java.io.InputStream#read(byte[], int, int) - */ - public int read(byte[] buffer, int pos, int bytes) throws IOException { - return randomFile.read(buffer, pos, bytes); - } - - /** - * Seek to a position in the file. - * - * @param pos The seek position - * @throws java.io.IOException On error seeking - */ - public void seek(long pos) throws IOException { - randomFile.seek(pos); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Application.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Application.java deleted file mode 100644 index bdeadee0992082c4990630ff733ff54db9ca8fb7..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Application.java +++ /dev/null @@ -1,55 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * Application Metadata block. - * @author kc7bfi - */ -public class Application extends Metadata { - - private static final int APPLICATION_ID_LEN = 32; // bits - - private byte[] id = new byte[4]; - private byte[] data; - - /** - * The constructor. - * @param is The InputBitStream - * @param length Length of the record - * @param isLast True if this is the last Metadata block in the chain - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public Application(BitInputStream is, int length, boolean isLast) throws IOException { - super(isLast); - is.readByteBlockAlignedNoCRC(id, APPLICATION_ID_LEN / 8); - length -= APPLICATION_ID_LEN / 8; - - if (length > 0) { - data = new byte[length]; - is.readByteBlockAlignedNoCRC(data, length); - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueIndex.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueIndex.java deleted file mode 100644 index 47787f317fb972f459ea43a0bad1661bfe6ad55b..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueIndex.java +++ /dev/null @@ -1,50 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * An entry into the cue track. - * @author kc7bfi - */ -public class CueIndex { - - private static final int CUESHEET_INDEX_OFFSET_LEN = 64; // bits - private static final int CUESHEET_INDEX_NUMBER_LEN = 8; // bits - private static final int CUESHEET_INDEX_RESERVED_LEN = 3 * 8; // bits - - protected long offset; // Offset in samples, relative to the track offset, of the index point. - protected byte number; // The index point number. - - /** - * The constructor. - * @param is The InputBitStream - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public CueIndex(BitInputStream is) throws IOException { - offset = is.readRawULong(CUESHEET_INDEX_OFFSET_LEN); - number = (byte) is.readRawUInt(CUESHEET_INDEX_NUMBER_LEN); - is.skipBitsNoCRC(CUESHEET_INDEX_RESERVED_LEN); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueSheet.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueSheet.java deleted file mode 100644 index e5574858581d7ea4b7f087df33b2cbb0ee65b817..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueSheet.java +++ /dev/null @@ -1,139 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * CueSheet Metadata block. - * @author kc7bfi - */ -public class CueSheet extends Metadata { - - private static final int CUESHEET_MEDIA_CATALOG_NUMBER_LEN = 128 * 8; // bits - private static final int CUESHEET_LEAD_IN_LEN = 64; // bits - private static final int CUESHEET_IS_CD_LEN = 1; // bit - private static final int CUESHEET_RESERVED_LEN = 7 + 258 * 8; // bits - private static final int CUESHEET_NUM_TRACKS_LEN = 8; // bits - - /** - * Media catalog number. - * in ASCII printable characters 0x20-0x7e. In - * general, the media catalog number may be 0 to 128 bytes long; any - * unused characters should be right-padded with NUL characters. - */ - protected byte[] mediaCatalogNumber = new byte[129]; - - protected long leadIn = 0; // The number of lead-in samples. - protected boolean isCD = false; // true if CUESHEET corresponds to a Compact Disc, else false - protected int numTracks = 0; // The number of tracks. - protected CueTrack[] tracks; // NULL if num_tracks == 0, else pointer to array of tracks. - - /** - * The constructor. - * @param is The InputBitStream - * @param length Length of the record - * @param isLast True if this is the last Metadata block in the chain - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public CueSheet(BitInputStream is, int length, boolean isLast) throws IOException { - super(isLast); - is.readByteBlockAlignedNoCRC(mediaCatalogNumber, CUESHEET_MEDIA_CATALOG_NUMBER_LEN / 8); - leadIn = is.readRawULong(CUESHEET_LEAD_IN_LEN); - isCD = (is.readRawUInt(CUESHEET_IS_CD_LEN) != 0); - is.skipBitsNoCRC(CUESHEET_RESERVED_LEN); - numTracks = is.readRawUInt(CUESHEET_NUM_TRACKS_LEN); - - if (numTracks > 0) { - tracks = new CueTrack[numTracks]; - for (int i = 0; i < numTracks; i++) { - tracks[i] = new CueTrack(is); - } - } - } - - /** - * Verifys the Cue Sheet. - * @param checkCdDaSubset True for check CD subset - * @throws Violation Thrown if invalid Cue Sheet - */ - void isLegal(boolean checkCdDaSubset) throws Violation { - - if (checkCdDaSubset) { - if (leadIn < 2 * 44100) { - throw new Violation("CD-DA cue sheet must have a lead-in length of at least 2 seconds"); - } - if (leadIn % 588 != 0) { - throw new Violation("CD-DA cue sheet lead-in length must be evenly divisible by 588 samples"); - } - } - - if (numTracks == 0) { - throw new Violation("cue sheet must have at least one track (the lead-out)"); - } - - if (checkCdDaSubset && tracks[numTracks - 1].number != 170) { - throw new Violation("CD-DA cue sheet must have a lead-out track number 170 (0xAA)"); - } - - for (int i = 0; i < numTracks; i++) { - if (tracks[i].number == 0) { - throw new Violation("cue sheet may not have a track number 0"); - } - - if (checkCdDaSubset) { - if (!((tracks[i].number >= 1 && tracks[i].number <= 99) - || tracks[i].number == 170)) { - throw new Violation("CD-DA cue sheet track number must be 1-99 or 170"); - } - } - - if (checkCdDaSubset && tracks[i].offset % 588 != 0) { - throw new Violation("CD-DA cue sheet track offset must be evenly divisible by 588 samples"); - } - - if (i < numTracks - 1) { - if (tracks[i].numIndices == 0) { - throw new Violation("cue sheet track must have at least one index point"); - } - - if (tracks[i].indices[0].number > 1) { - throw new Violation("cue sheet track's first index number must be 0 or 1"); - } - } - - for (int j = 0; j < tracks[i].numIndices; j++) { - if (checkCdDaSubset && tracks[i].indices[j].offset % 588 != 0) { - throw new Violation("CD-DA cue sheet track index offset must be evenly divisible by 588 samples"); - } - - if (j > 0) { - if (tracks[i].indices[j].number != tracks[i].indices[j - 1].number + 1) { - throw new Violation("cue sheet track index numbers must increase by 1"); - } - } - } - } - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueTrack.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueTrack.java deleted file mode 100644 index eafe3bb26fafac4f4d9c0874c4946743f2c22e6d..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/CueTrack.java +++ /dev/null @@ -1,70 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * An entry into the cue sheet. - * @author kc7bfi - */ -public class CueTrack { - - private static final int CUESHEET_TRACK_OFFSET_LEN = 64; // bits - private static final int CUESHEET_TRACK_NUMBER_LEN = 8; // bits - private static final int CUESHEET_TRACK_ISRC_LEN = 12 * 8; // bits - private static final int CUESHEET_TRACK_TYPE_LEN = 1; // bit - private static final int CUESHEET_TRACK_PRE_EMPHASIS_LEN = 1; // bit - private static final int CUESHEET_TRACK_RESERVED_LEN = 6 + 13 * 8; // bits - private static final int CUESHEET_TRACK_NUM_INDICES_LEN = 8; // bits - - protected long offset; // Track offset in samples, relative to the beginning of the FLAC audio stream. - protected byte number; // The track number. - protected byte[] isrc = new byte[13]; // Track ISRC. This is a 12-digit alphanumeric code plus a trailing '\0' - protected int type; // The track type: 0 for audio, 1 for non-audio. - protected int preEmphasis; // The pre-emphasis flag: 0 for no pre-emphasis, 1 for pre-emphasis. - protected byte numIndices; // The number of track index points. - protected CueIndex[] indices; // NULL if num_indices == 0, else pointer to array of index points. - - /** - * The constructor. - * @param is The InputBitStream - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public CueTrack(BitInputStream is) throws IOException { - offset = is.readRawULong(CUESHEET_TRACK_OFFSET_LEN); - number = (byte) is.readRawUInt(CUESHEET_TRACK_NUMBER_LEN); - is.readByteBlockAlignedNoCRC(isrc, CUESHEET_TRACK_ISRC_LEN / 8); - type = is.readRawUInt(CUESHEET_TRACK_TYPE_LEN); - preEmphasis = is.readRawUInt(CUESHEET_TRACK_PRE_EMPHASIS_LEN); - is.skipBitsNoCRC(CUESHEET_TRACK_RESERVED_LEN); - numIndices = (byte) is.readRawUInt(CUESHEET_TRACK_NUM_INDICES_LEN); - if (numIndices > 0) { - indices = new CueIndex[numIndices]; - for (int j = 0; j < numIndices; j++) { - indices[j] = new CueIndex(is); - } - } - - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Metadata.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Metadata.java deleted file mode 100644 index 2f29231efb64386add752f8e2de85af14c45e01d..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Metadata.java +++ /dev/null @@ -1,77 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - * Modified 2007 Bruce MacNaughton (added PICTURE metadata type) - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * Root class for all Metadata subclasses. - * @author kc7bfi - */ -public abstract class Metadata { - - /** StreamInfo Metatdata type. */ - public static final int METADATA_TYPE_STREAMINFO = 0; - - /** Padding Metatdata type. */ - public static final int METADATA_TYPE_PADDING = 1; - - /** Application Metatdata type. */ - public static final int METADATA_TYPE_APPLICATION = 2; - - /** SeekTable Metatdata type. */ - public static final int METADATA_TYPE_SEEKTABLE = 3; - - /** VorbisComment Metatdata type. */ - public static final int METADATA_TYPE_VORBIS_COMMENT = 4; - - /** CueSheet Metatdata type. */ - public static final int METADATA_TYPE_CUESHEET = 5; - - /** Picture Metatdata type. */ - public static final int METADATA_TYPE_PICTURE = 6; - - /** Metadata IsLast field length. */ - public static final int STREAM_METADATA_IS_LAST_LEN = 1; // bits - - /** Metadata type field length. */ - public static final int STREAM_METADATA_TYPE_LEN = 7; // bits - - /** Metadata length field length. */ - public static final int STREAM_METADATA_LENGTH_LEN = 24; // bits - - protected boolean isLast; - - /** - * Constructir. - * @param isLast True if last Metadata block - */ - public Metadata(boolean isLast) { - this.isLast = isLast; - } - - /** - * Test if this is the last metadata block. - * @return True if last metadata block in chain - */ - public boolean isLast() { - return isLast; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Padding.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Padding.java deleted file mode 100644 index 15e2f31248a3bcf47bd2b7801007a3ed800d7c04..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Padding.java +++ /dev/null @@ -1,54 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * Padding Metadata block. - * @author kc7bfi - */ -public class Padding extends Metadata { - private int length; - - /** - * The constructor. - * @param is The InputBitStream - * @param length Length of the record - * @param isLast True if this is the last Metadata block in the chain - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public Padding(BitInputStream is, int length, boolean isLast) throws IOException { - super(isLast); - this.length = length; - is.readByteBlockAlignedNoCRC(null, length); - } - - /** - * Convert to string. - * @see Object#toString() - */ - public String toString() { - return "Padding (Length=" + length + ")"; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Picture.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Picture.java deleted file mode 100644 index d38511c96991fa283317e1017ab7fc8807df515b..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Picture.java +++ /dev/null @@ -1,129 +0,0 @@ -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -package v4lk.lwbd.decoders.processing.jflac.metadata; - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; - - -/** - * Picture Metadata block. - * @author BMacNaughton - */ -public class Picture extends Metadata { - private int pictureType; - private int mimeTypeByteCount; - private String mimeString; //ASCII 0x20 to 0x7e or --> (data is URL) - private int descStringByteCount; - private String descString; // UTF-8 - private int picPixelWidth; - private int picPixelHeight; - private int picBitsPerPixel; - private int picColorCount; // for GIF, else 0 - private int picByteCount; - - protected byte[] image; - - /** - * The constructor. - * @param is The InputBitStream - * @param length Length of the record - * @param isLast True if this is the last Metadata block in the chain - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public Picture(BitInputStream is, int length, boolean isLast) throws IOException { - super(isLast); - int usedBits = 0; - byte[] data; - - pictureType = is.readRawUInt(32); - usedBits += 32; - - mimeTypeByteCount = is.readRawUInt(32); - usedBits += 32; - - data = new byte[mimeTypeByteCount]; - is.readByteBlockAlignedNoCRC(data, mimeTypeByteCount); - usedBits += mimeTypeByteCount * 8; - - mimeString = new String(data); // convert to a string - - descStringByteCount = is.readRawUInt(32); - usedBits += 32; - - if (descStringByteCount != 0) { - data = new byte[descStringByteCount]; - is.readByteBlockAlignedNoCRC(data, descStringByteCount); - try { - descString = new String(data, "UTF-8"); - } catch (UnsupportedEncodingException e) { - } - usedBits += 32; - } else { - descString = new String(""); - } - - picPixelWidth = is.readRawUInt(32); - usedBits += 32; - - picPixelHeight = is.readRawUInt(32); - usedBits += 32; - - picBitsPerPixel = is.readRawUInt(32); - usedBits += 32; - - picColorCount = is.readRawUInt(32); - usedBits += 32; - - picByteCount = is.readRawUInt(32); - usedBits += 32; - - //get the image now - image = new byte[picByteCount]; - is.readByteBlockAlignedNoCRC(image, picByteCount); - usedBits += picByteCount * 8; - - // skip the rest of the block if any - length -= (usedBits / 8); - is.readByteBlockAlignedNoCRC(null, length); - - } - - /** - * Convert the class to a string representation. - * @return A string representation of the Picture metadata - */ - - @Override - public String toString() { - return "Picture: " - + " Type=" + pictureType - + " MIME type=" + mimeString - + " Description=\"" + descString + "\"" - + " Pixels (WxH)=" + picPixelWidth + "x" + picPixelHeight - + " Color Depth=" + picBitsPerPixel - + " Color Count=" + picColorCount - + " Picture Size (bytes)=" + picByteCount; - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/SeekPoint.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/SeekPoint.java deleted file mode 100644 index 13ff764e868f1d5728483d38fbbc3764bc954dff..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/SeekPoint.java +++ /dev/null @@ -1,115 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; -import v4lk.lwbd.decoders.processing.jflac.io.BitOutputStream; - -import java.io.IOException; - -/** - * An entry into the seek table. - * @author kc7bfi - */ -public class SeekPoint { - - private static final int SEEKPOINT_SAMPLE_NUMBER_LEN = 64; // bits - private static final int SEEKPOINT_STREAM_OFFSET_LEN = 64; // bits - private static final int SEEKPOINT_FRAME_SAMPLES_LEN = 16; // bits - - protected long sampleNumber; // The sample number of the target frame. - protected long streamOffset; // The offset, in bytes, of the target frame with respect to beginning of the first frame. - protected int frameSamples; // The number of samples in the target frame. - - /** - * The constructor. - * @param is The InputBitStream - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public SeekPoint(BitInputStream is) throws IOException { - sampleNumber = is.readRawULong(SEEKPOINT_SAMPLE_NUMBER_LEN); - streamOffset = is.readRawULong(SEEKPOINT_STREAM_OFFSET_LEN); - frameSamples = is.readRawUInt(SEEKPOINT_FRAME_SAMPLES_LEN); - } - - /** - * The constructor. - * @param sampleNumber The sample number of the target frame - * @param streamOffset The offset, in bytes, of the target frame with respect to beginning of the first frame - * @param frameSamples The number of samples in the target frame - */ - public SeekPoint(long sampleNumber, long streamOffset, int frameSamples) { - this.sampleNumber = sampleNumber; - this.streamOffset = streamOffset; - this.frameSamples = frameSamples; - } - - /** - * Write out an individual seek point. - * @param os The output stream - * @throws java.io.IOException Thrown if error writing data - */ - public void write(BitOutputStream os) throws IOException { - - os.writeRawULong(sampleNumber, SEEKPOINT_SAMPLE_NUMBER_LEN); - os.writeRawULong(streamOffset, SEEKPOINT_STREAM_OFFSET_LEN); - os.writeRawUInt(frameSamples, SEEKPOINT_FRAME_SAMPLES_LEN); - } - - /** - * @see Object#toString() - */ - public String toString() { - return "sampleNumber=" + sampleNumber + " streamOffset=" + streamOffset + " frameSamples=" + frameSamples; - } - - /** - * Return the frame samples. - * @return Returns the frameSamples. - */ - public int getFrameSamples() { - return frameSamples; - } - - /** - * return the sample number. - * @return Returns the sampleNumber. - */ - public long getSampleNumber() { - return sampleNumber; - } - - /** - * return the stream offset. - * @return Returns the streamOffset. - */ - public long getStreamOffset() { - return streamOffset; - } - - /** - * Set the stream offset. - * @param streamOffset The stream offset to set. - */ - public void setStreamOffset(long streamOffset) { - this.streamOffset = streamOffset; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/SeekTable.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/SeekTable.java deleted file mode 100644 index 4d2aa20146789387c166cf8d2abfdbd1fe8ec762..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/SeekTable.java +++ /dev/null @@ -1,126 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; -import v4lk.lwbd.decoders.processing.jflac.io.BitOutputStream; - -import java.io.IOException; - -/** - * SeekTable Metadata block. - * @author kc7bfi - */ -public class SeekTable extends Metadata { - private static final int SEEKPOINT_LENGTH_BYTES = 18; - - protected SeekPoint[] points; - - /** - * The constructor. - * @param is The InputBitStream - * @param length Length of the record - * @param isLast True if this is the last Metadata block in the chain - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public SeekTable(BitInputStream is, int length, boolean isLast) throws IOException { - super(isLast); - int numPoints = length / SEEKPOINT_LENGTH_BYTES; - - points = new SeekPoint[numPoints]; - for (int i = 0; i < points.length; i++) { - points[i] = new SeekPoint(is); - } - length -= (length * SEEKPOINT_LENGTH_BYTES); - - // if there is a partial point left, skip over it - if (length > 0) is.readByteBlockAlignedNoCRC(null, length); - } - - /** - * Constructor. - * @param points Seek Points - * @param isLast True if this is the last Metadata block in the chain - */ - public SeekTable(SeekPoint[] points, boolean isLast) { - super(isLast); - this.points = points; - } - - /** - * Write out the metadata block. - * @param os The output stream - * @param isLast True if this is the last metadata block - * @throws java.io.IOException Thrown if error writing data - */ - public void write(BitOutputStream os, boolean isLast) throws IOException { - - os.writeRawUInt(isLast, STREAM_METADATA_IS_LAST_LEN); - os.writeRawUInt(METADATA_TYPE_SEEKTABLE, STREAM_METADATA_TYPE_LEN); - os.writeRawUInt(calcLength(), STREAM_METADATA_LENGTH_LEN); - - for (int i = 0; i < points.length; i++) { - points[i].write(os); - } - - os.flushByteAligned(); - } - - /** - * Calculate the metadata block size. - * @return The metadata block size - */ - public int calcLength() { - return points.length * SEEKPOINT_LENGTH_BYTES; - } - - /** - * Return the selected seek point. - * @param idx The seek point number - * @return The selected seek point - */ - public SeekPoint getSeekPoint(int idx) { - if (idx < 0 || idx >= points.length) return null; - return points[idx]; - } - - /** - * Return the number of seek points. - * @return the number of seek points - */ - public int numberOfPoints() { - return points.length; - } - - /** - * @see Object#toString() - */ - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append("SeekTable: points=" + points.length + "\n"); - for (int i = 0; i < points.length; i++) { - sb.append("\tPoint " + points[i].toString() + "\n"); - } - - return sb.toString(); - - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/StreamInfo.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/StreamInfo.java deleted file mode 100644 index 3a1de03cee4f2cebacf4070df92376b1b811e9e5..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/StreamInfo.java +++ /dev/null @@ -1,243 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; -import v4lk.lwbd.decoders.processing.jflac.io.BitOutputStream; - -import javax.sound.sampled.AudioFormat; -import java.io.IOException; - -/** - * StreamInfo Metadata block. - * @author kc7bfi - */ -public class StreamInfo extends Metadata { - - private static final int STREAMINFO_MIN_BLOCK_SIZE_LEN = 16; // bits - private static final int STREAMINFO_MAX_BLOCK_SIZE_LEN = 16; // bits - private static final int STREAMINFO_MIN_FRAME_SIZE_LEN = 24; // bits - private static final int STREAMINFO_MAX_FRAME_SIZE_LEN = 24; // bits - private static final int STREAMINFO_SAMPLE_RATE_LEN = 20; // bits - private static final int STREAMINFO_CHANNELS_LEN = 3; // bits - private static final int STREAMINFO_BITS_PER_SAMPLE_LEN = 5; // bits - private static final int STREAMINFO_TOTAL_SAMPLES_LEN = 36; // bits - private static final int STREAMINFO_MD5SUM_LEN = 128; // bits - - private byte[] md5sum = new byte[16]; - - private int minBlockSize; - private int maxBlockSize; - private int minFrameSize; - private int maxFrameSize; - private int sampleRate; - private int channels; - private int bitsPerSample; - private long totalSamples; - - /** - * The constructor. - * @param is The InputBitStream - * @param length Length of the record - * @param isLast True if this is the last Metadata block in the chain - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public StreamInfo(BitInputStream is, int length, boolean isLast) throws IOException { - super(isLast); - int usedBits = 0; - - minBlockSize = is.readRawUInt(STREAMINFO_MIN_BLOCK_SIZE_LEN); - usedBits += STREAMINFO_MIN_BLOCK_SIZE_LEN; - - maxBlockSize = is.readRawUInt(STREAMINFO_MAX_BLOCK_SIZE_LEN); - usedBits += STREAMINFO_MAX_BLOCK_SIZE_LEN; - - minFrameSize = is.readRawUInt(STREAMINFO_MIN_FRAME_SIZE_LEN); - usedBits += STREAMINFO_MIN_FRAME_SIZE_LEN; - - maxFrameSize = is.readRawUInt(STREAMINFO_MAX_FRAME_SIZE_LEN); - usedBits += STREAMINFO_MAX_FRAME_SIZE_LEN; - - sampleRate = is.readRawUInt(STREAMINFO_SAMPLE_RATE_LEN); - usedBits += STREAMINFO_SAMPLE_RATE_LEN; - - channels = is.readRawUInt(STREAMINFO_CHANNELS_LEN) + 1; - usedBits += STREAMINFO_CHANNELS_LEN; - - bitsPerSample = is.readRawUInt(STREAMINFO_BITS_PER_SAMPLE_LEN) + 1; - usedBits += STREAMINFO_BITS_PER_SAMPLE_LEN; - - totalSamples = is.readRawULong(STREAMINFO_TOTAL_SAMPLES_LEN); - usedBits += STREAMINFO_TOTAL_SAMPLES_LEN; - - is.readByteBlockAlignedNoCRC(md5sum, STREAMINFO_MD5SUM_LEN / 8); - usedBits += 16 * 8; - - // skip the rest of the block - length -= (usedBits / 8); - is.readByteBlockAlignedNoCRC(null, length); - } - - /** - * Write out the metadata block. - * @param os The output stream - * @param isLast True if this is the last metadata block - * @throws java.io.IOException Thrown if error writing data - */ - public void write(BitOutputStream os, boolean isLast) throws IOException { - - os.writeRawUInt(isLast, STREAM_METADATA_IS_LAST_LEN); - os.writeRawUInt(METADATA_TYPE_STREAMINFO, STREAM_METADATA_TYPE_LEN); - os.writeRawUInt(calcLength(), STREAM_METADATA_LENGTH_LEN); - - os.writeRawUInt(minBlockSize, STREAMINFO_MIN_BLOCK_SIZE_LEN); - os.writeRawUInt(maxBlockSize, STREAMINFO_MAX_BLOCK_SIZE_LEN); - os.writeRawUInt(minFrameSize, STREAMINFO_MIN_FRAME_SIZE_LEN); - os.writeRawUInt(maxFrameSize, STREAMINFO_MAX_FRAME_SIZE_LEN); - os.writeRawUInt(sampleRate, STREAMINFO_SAMPLE_RATE_LEN); - os.writeRawUInt(channels - 1, STREAMINFO_CHANNELS_LEN); - os.writeRawULong(bitsPerSample - 1, STREAMINFO_BITS_PER_SAMPLE_LEN); - os.writeRawULong(totalSamples, STREAMINFO_TOTAL_SAMPLES_LEN); - os.writeByteBlock(md5sum, md5sum.length); - os.flushByteAligned(); - } - - /** - * Calculate the metadata block size. - * @return The metadata block size - */ - public int calcLength() { - int bits = STREAMINFO_MIN_BLOCK_SIZE_LEN - + STREAMINFO_MAX_BLOCK_SIZE_LEN - + STREAMINFO_MIN_FRAME_SIZE_LEN - + STREAMINFO_MAX_FRAME_SIZE_LEN - + STREAMINFO_SAMPLE_RATE_LEN - + STREAMINFO_CHANNELS_LEN - + STREAMINFO_BITS_PER_SAMPLE_LEN - + STREAMINFO_TOTAL_SAMPLES_LEN - + (md5sum.length * 8); - return ((bits + 7) / 8); - } - - /** - * Check for compatiable StreamInfo. - * Checks if sampleRate, channels, and bitsPerSample are equal - * @param info The StreamInfo block to check - * @return True if this and info are compatable - */ - public boolean compatiable(StreamInfo info) { - if (sampleRate != info.sampleRate) return false; - if (channels != info.channels) return false; - if (bitsPerSample != info.bitsPerSample) return false; - return true; - } - - /** - * Convert to string. - * @see Object#toString() - */ - public String toString() { - return "StreamInfo:" - + " BlockSize=" + minBlockSize + "-" + maxBlockSize - + " FrameSize" + minFrameSize + "-" + maxFrameSize - + " SampleRate=" + sampleRate - + " Channels=" + channels - + " BPS=" + bitsPerSample - + " TotalSamples=" + totalSamples; - } - - /** - * @return Returns the maxBlockSize. - */ - public int getMaxBlockSize() { - return maxBlockSize; - } - - /** - * @return Returns the minBlockSize. - */ - public int getMinBlockSize() { - return minBlockSize; - } - - /** - * @return Returns the totalSamples. - */ - public long getTotalSamples() { - return totalSamples; - } - - /** - * @param totalSamples The totalSamples to set. - */ - public void setTotalSamples(long totalSamples) { - this.totalSamples = totalSamples; - } - - /** - * @param totalSamples The totalSamples to add. - */ - public void addTotalSamples(long totalSamples) { - this.totalSamples += totalSamples; - } - - /** - * @return Returns the maxFrameSize. - */ - public int getMaxFrameSize() { - return maxFrameSize; - } - - /** - * @return Returns the minFrameSize. - */ - public int getMinFrameSize() { - return minFrameSize; - } - - /** - * @return Returns the sampleRate. - */ - public int getSampleRate() { - return sampleRate; - } - - /** - * @return the Java Sound AudioFormat for this stream info. - */ - public AudioFormat getAudioFormat() { - return new AudioFormat(sampleRate, bitsPerSample, channels, (bitsPerSample <= 8) ? false : true, false); - } - - /** - * @return Returns the bitsPerSample. - */ - public int getBitsPerSample() { - return bitsPerSample; - } - - /** - * @return Returns the channels. - */ - public int getChannels() { - return channels; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Unknown.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Unknown.java deleted file mode 100644 index 5ca1e471274173217cd170d5d88efcef23c0e892..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Unknown.java +++ /dev/null @@ -1,48 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * Unknown Metadata block. - * @author kc7bfi - */ -public class Unknown extends Metadata { - protected byte[] data; - - /** - * The constructor. - * @param is The InputBitStream - * @param length Length of the record - * @param isLast True if this is the last Metadata block in the chain - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public Unknown(BitInputStream is, int length, boolean isLast) throws IOException { - super(isLast); - if (length > 0) { - data = new byte[length]; - is.readByteBlockAlignedNoCRC(data, length); - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Violation.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Violation.java deleted file mode 100644 index 6a9a7a0f96621fa4c294f33341b1deb940a8c3ec..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/Violation.java +++ /dev/null @@ -1,61 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * Meta data format violation exception. - * @author kc7bfi - */ -public class Violation extends Exception { - - /** - * Constructor. - */ - public Violation() { - super(); - } - - /** - * Constructor. - * @param msg The error message - */ - public Violation(String msg) { - super(msg); - } - - /** - * Constructor. - * @param err The causing exception - */ - public Violation(Throwable err) { - super(err); - } - - /** - * Constructor. - * @param msg The error message - * @param err The causing exception - */ - public Violation(String msg, Throwable err) { - super(msg, err); - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/VorbisComment.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/VorbisComment.java deleted file mode 100644 index 63fdbb332905224cd94de41d3323aea6462ad5bd..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/VorbisComment.java +++ /dev/null @@ -1,90 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; - -/** - * VorbisComment Metadata block. - * @author kc7bfi - */ -public class VorbisComment extends Metadata { - - //private static final int VORBIS_COMMENT_NUM_COMMENTS_LEN = 32; // bits - - protected byte[] vendorString = new byte[0]; - protected int numComments = 0; - protected VorbisString[] comments; - - /** - * The constructor. - * @param is The InputBitStream - * @param length Length of the record - * @param isLast True if this is the last Metadata block in the chain - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public VorbisComment(BitInputStream is, int length, boolean isLast) throws IOException { - super(isLast); - - // read vendor string - int len = is.readRawIntLittleEndian(); - vendorString = new byte[len]; - is.readByteBlockAlignedNoCRC(vendorString, vendorString.length); - - // read comments - numComments = is.readRawIntLittleEndian(); - if (numComments > 0) comments = new VorbisString[numComments]; - for (int i = 0; i < numComments; i++) { - comments[i] = new VorbisString(is); - } - } - - /** - * @see Object#toString() - */ - public String toString() { - StringBuffer sb = new StringBuffer("VendorString '" + vendorString + "'\n"); - sb.append("VorbisComment (count=" + numComments + ")"); - - for (int i = 0; i < numComments; i++) { - sb.append("\n\t" + comments[i].toString()); - } - - return sb.toString(); - - } - - public String[] getCommentByName(String key) { - if (key == null) return null; - java.util.Vector sbuff = new java.util.Vector(); - for (int i = 0; i < comments.length; i++) { - String comment = comments[i].toString(); - int eqpos = comment.indexOf(0x3D); //Find the equals - if (eqpos != -1) - if (comment.substring(0, eqpos).equalsIgnoreCase(key)) - sbuff.add(comment.substring(eqpos + 1, comment.length())); - } - return (String[]) sbuff.toArray(new String[0]); - //return null; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/VorbisString.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/VorbisString.java deleted file mode 100644 index 8ba8cdeca85482af7788cb546cfb09f3c79b87f4..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/metadata/VorbisString.java +++ /dev/null @@ -1,61 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.metadata; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.io.BitInputStream; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; - -/** - * An entry into the Vorbis comment. - * @author kc7bfi - */ -public class VorbisString { - //private static final int VORBIS_COMMENT_ENTRY_LENGTH_LEN = 32; // bits - - protected byte[] entry; - - /** - * The constructor. - * @param is The InputBitStream - * @throws java.io.IOException Thrown if error reading from InputBitStream - */ - public VorbisString(BitInputStream is) throws IOException { - int elen = is.readRawIntLittleEndian(); - if (elen == 0) return; - entry = new byte[elen]; - is.readByteBlockAlignedNoCRC(entry, entry.length); - } - - /** - * @see Object#toString() - */ - public String toString() { - String s; - try { - s = new String(entry, "UTF-8"); - } catch (UnsupportedEncodingException e) { - s = new String(""); - } - return s; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/BitMath.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/BitMath.java deleted file mode 100644 index 37271cf053d9f005ddeae5bbc0c41a64d9452629..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/BitMath.java +++ /dev/null @@ -1,153 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.util; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * Utility class for bit math. - * @author kc7bfi - */ -public final class BitMath { - - /** - * Compute ilog2(). - * An example of what ilog2() computes: - * - * ilog2( 0) = assertion failure - * ilog2( 1) = 0 - * ilog2( 2) = 1 - * ilog2( 3) = 1 - * ilog2( 4) = 2 - * ilog2( 5) = 2 - * ilog2( 6) = 2 - * ilog2( 7) = 2 - * ilog2( 8) = 3 - * ilog2( 9) = 3 - * ilog2(10) = 3 - * ilog2(11) = 3 - * ilog2(12) = 3 - * ilog2(13) = 3 - * ilog2(14) = 3 - * ilog2(15) = 3 - * ilog2(16) = 4 - * ilog2(17) = 4 - * ilog2(18) = 4 - * - * @param v The value - * @return The ilog2 value - */ - public static int ilog2(int v) { - int l = 0; - while ((v >>= 1) != 0) l++; - return l; - } - - /** - * Compute silog2(). - * An example of what silog2() computes: - * - * silog2(-10) = 5 - * silog2(- 9) = 5 - * silog2(- 8) = 4 - * silog2(- 7) = 4 - * silog2(- 6) = 4 - * silog2(- 5) = 4 - * silog2(- 4) = 3 - * silog2(- 3) = 3 - * silog2(- 2) = 2 - * silog2(- 1) = 2 - * silog2( 0) = 0 - * silog2( 1) = 2 - * silog2( 2) = 3 - * silog2( 3) = 3 - * silog2( 4) = 4 - * silog2( 5) = 4 - * silog2( 6) = 4 - * silog2( 7) = 4 - * silog2( 8) = 5 - * silog2( 9) = 5 - * silog2( 10) = 5 - * - * @param v The value - * @return The silog2 value - */ - public static int silog2(int v) { - while (true) { - if (v == 0) return 0; - if (v > 0) { - int l = 0; - while (v != 0) { - l++; - v >>= 1; - } - return l + 1; - } - if (v == -1) return 2; - v++; - v = -v; - } - } - - /** - * Compute silog2(). - * An example of what silog2() computes: - * - * silog2(-10) = 5 - * silog2(- 9) = 5 - * silog2(- 8) = 4 - * silog2(- 7) = 4 - * silog2(- 6) = 4 - * silog2(- 5) = 4 - * silog2(- 4) = 3 - * silog2(- 3) = 3 - * silog2(- 2) = 2 - * silog2(- 1) = 2 - * silog2( 0) = 0 - * silog2( 1) = 2 - * silog2( 2) = 3 - * silog2( 3) = 3 - * silog2( 4) = 4 - * silog2( 5) = 4 - * silog2( 6) = 4 - * silog2( 7) = 4 - * silog2( 8) = 5 - * silog2( 9) = 5 - * silog2( 10) = 5 - * - * @param v The value - * @return The silog2 value - */ - public static int silog2Wide(long v) { - while (true) { - if (v == 0) return 0; - if (v > 0) { - int l = 0; - while (v != 0) { - l++; - v >>= 1; - } - return l + 1; - } - if (v == -1) return 2; - v++; - v = -v; - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/ByteData.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/ByteData.java deleted file mode 100644 index 0504d91b6acb469b44beea0391207e60b9d4d4e1..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/ByteData.java +++ /dev/null @@ -1,87 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.util; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * Expandable byte data storage. - * @author kc7bfi - */ -public class ByteData { - private static final int DEFAULT_BUFFER_SIZE = 256; - - /** The byte array where data is stored. */ - private byte[] data; - - /** The number of bytes stored in the array. */ - private int len; - - /** - * The default constructor. - * @param maxSpace The maximum space in the internal byte array. - */ - public ByteData(int maxSpace) { - if (maxSpace <= 0) maxSpace = DEFAULT_BUFFER_SIZE; - data = new byte[maxSpace]; - len = 0; - } - - /** - * Append byte to storage. - * @param b byte to extend - */ - public void append(byte b) { - data[len++] = b; - } - - /** - * @return Returns the data. - */ - public byte[] getData() { - return data; - } - - /** - * Return a data byte. - * @param idx The data byte to return - * @return Returns the data. - */ - public byte getData(int idx) { - return data[idx]; - } - - /** - * @return Returns the len. - */ - public int getLen() { - return len; - } - - /** - * Set the length of this ByteData object without re-allocating the underlying array. - * It is not possible to set the length larger than the underlying byte array. - */ - public void setLen(int len) { - if (len > data.length) { - len = data.length; - } - this.len = len; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/CRC16.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/CRC16.java deleted file mode 100644 index cd72558a25455504132488504b3ba55dd559ba27..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/CRC16.java +++ /dev/null @@ -1,331 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.util; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * Utility class to calculate 16-bit CRC. - * @author kc7bfi - */ -public final class CRC16 { - - // CRC-16, poly = x^16 + x^15 + x^2 + x^0, init = 0 - private static final short[] CRC16_TABLE = - new short[]{ - (short) 0x0000, - (short) 0x8005, - (short) 0x800f, - (short) 0x000a, - (short) 0x801b, - (short) 0x001e, - (short) 0x0014, - (short) 0x8011, - (short) 0x8033, - (short) 0x0036, - (short) 0x003c, - (short) 0x8039, - (short) 0x0028, - (short) 0x802d, - (short) 0x8027, - (short) 0x0022, - (short) 0x8063, - (short) 0x0066, - (short) 0x006c, - (short) 0x8069, - (short) 0x0078, - (short) 0x807d, - (short) 0x8077, - (short) 0x0072, - (short) 0x0050, - (short) 0x8055, - (short) 0x805f, - (short) 0x005a, - (short) 0x804b, - (short) 0x004e, - (short) 0x0044, - (short) 0x8041, - (short) 0x80c3, - (short) 0x00c6, - (short) 0x00cc, - (short) 0x80c9, - (short) 0x00d8, - (short) 0x80dd, - (short) 0x80d7, - (short) 0x00d2, - (short) 0x00f0, - (short) 0x80f5, - (short) 0x80ff, - (short) 0x00fa, - (short) 0x80eb, - (short) 0x00ee, - (short) 0x00e4, - (short) 0x80e1, - (short) 0x00a0, - (short) 0x80a5, - (short) 0x80af, - (short) 0x00aa, - (short) 0x80bb, - (short) 0x00be, - (short) 0x00b4, - (short) 0x80b1, - (short) 0x8093, - (short) 0x0096, - (short) 0x009c, - (short) 0x8099, - (short) 0x0088, - (short) 0x808d, - (short) 0x8087, - (short) 0x0082, - (short) 0x8183, - (short) 0x0186, - (short) 0x018c, - (short) 0x8189, - (short) 0x0198, - (short) 0x819d, - (short) 0x8197, - (short) 0x0192, - (short) 0x01b0, - (short) 0x81b5, - (short) 0x81bf, - (short) 0x01ba, - (short) 0x81ab, - (short) 0x01ae, - (short) 0x01a4, - (short) 0x81a1, - (short) 0x01e0, - (short) 0x81e5, - (short) 0x81ef, - (short) 0x01ea, - (short) 0x81fb, - (short) 0x01fe, - (short) 0x01f4, - (short) 0x81f1, - (short) 0x81d3, - (short) 0x01d6, - (short) 0x01dc, - (short) 0x81d9, - (short) 0x01c8, - (short) 0x81cd, - (short) 0x81c7, - (short) 0x01c2, - (short) 0x0140, - (short) 0x8145, - (short) 0x814f, - (short) 0x014a, - (short) 0x815b, - (short) 0x015e, - (short) 0x0154, - (short) 0x8151, - (short) 0x8173, - (short) 0x0176, - (short) 0x017c, - (short) 0x8179, - (short) 0x0168, - (short) 0x816d, - (short) 0x8167, - (short) 0x0162, - (short) 0x8123, - (short) 0x0126, - (short) 0x012c, - (short) 0x8129, - (short) 0x0138, - (short) 0x813d, - (short) 0x8137, - (short) 0x0132, - (short) 0x0110, - (short) 0x8115, - (short) 0x811f, - (short) 0x011a, - (short) 0x810b, - (short) 0x010e, - (short) 0x0104, - (short) 0x8101, - (short) 0x8303, - (short) 0x0306, - (short) 0x030c, - (short) 0x8309, - (short) 0x0318, - (short) 0x831d, - (short) 0x8317, - (short) 0x0312, - (short) 0x0330, - (short) 0x8335, - (short) 0x833f, - (short) 0x033a, - (short) 0x832b, - (short) 0x032e, - (short) 0x0324, - (short) 0x8321, - (short) 0x0360, - (short) 0x8365, - (short) 0x836f, - (short) 0x036a, - (short) 0x837b, - (short) 0x037e, - (short) 0x0374, - (short) 0x8371, - (short) 0x8353, - (short) 0x0356, - (short) 0x035c, - (short) 0x8359, - (short) 0x0348, - (short) 0x834d, - (short) 0x8347, - (short) 0x0342, - (short) 0x03c0, - (short) 0x83c5, - (short) 0x83cf, - (short) 0x03ca, - (short) 0x83db, - (short) 0x03de, - (short) 0x03d4, - (short) 0x83d1, - (short) 0x83f3, - (short) 0x03f6, - (short) 0x03fc, - (short) 0x83f9, - (short) 0x03e8, - (short) 0x83ed, - (short) 0x83e7, - (short) 0x03e2, - (short) 0x83a3, - (short) 0x03a6, - (short) 0x03ac, - (short) 0x83a9, - (short) 0x03b8, - (short) 0x83bd, - (short) 0x83b7, - (short) 0x03b2, - (short) 0x0390, - (short) 0x8395, - (short) 0x839f, - (short) 0x039a, - (short) 0x838b, - (short) 0x038e, - (short) 0x0384, - (short) 0x8381, - (short) 0x0280, - (short) 0x8285, - (short) 0x828f, - (short) 0x028a, - (short) 0x829b, - (short) 0x029e, - (short) 0x0294, - (short) 0x8291, - (short) 0x82b3, - (short) 0x02b6, - (short) 0x02bc, - (short) 0x82b9, - (short) 0x02a8, - (short) 0x82ad, - (short) 0x82a7, - (short) 0x02a2, - (short) 0x82e3, - (short) 0x02e6, - (short) 0x02ec, - (short) 0x82e9, - (short) 0x02f8, - (short) 0x82fd, - (short) 0x82f7, - (short) 0x02f2, - (short) 0x02d0, - (short) 0x82d5, - (short) 0x82df, - (short) 0x02da, - (short) 0x82cb, - (short) 0x02ce, - (short) 0x02c4, - (short) 0x82c1, - (short) 0x8243, - (short) 0x0246, - (short) 0x024c, - (short) 0x8249, - (short) 0x0258, - (short) 0x825d, - (short) 0x8257, - (short) 0x0252, - (short) 0x0270, - (short) 0x8275, - (short) 0x827f, - (short) 0x027a, - (short) 0x826b, - (short) 0x026e, - (short) 0x0264, - (short) 0x8261, - (short) 0x0220, - (short) 0x8225, - (short) 0x822f, - (short) 0x022a, - (short) 0x823b, - (short) 0x023e, - (short) 0x0234, - (short) 0x8231, - (short) 0x8213, - (short) 0x0216, - (short) 0x021c, - (short) 0x8219, - (short) 0x0208, - (short) 0x820d, - (short) 0x8207, - (short) 0x0202}; - - /** - * Update the CRC with the byte data. - * - * @param data The byte data - * @param crc The starting CRC value - * @return The updated CRC value - */ - public static short update(byte data, short crc) { - crc = (short) ((crc << 8) ^ CRC16_TABLE[((crc >> 8) ^ data) & 0xff]); - return crc; - } - - /** - * Update the CRC with the byte array data. - * - * @param data The byte array data - * @param len The byte array length - * @param crc The starting CRC value - * @return The updated CRC value - */ - public static short updateBlock(byte[] data, int len, short crc) { - for (int i = 0; i < len; i++) - crc = (short) ((crc << 8) ^ CRC16_TABLE[(crc >> 8) ^ data[i]]); - return crc; - } - - - /** - * Calculate the CRC over a byte array. - * - * @param data The byte data - * @param len The byte array length - * @return The calculated CRC value - */ - public static short calc(byte[] data, int len) { - short crc = 0; - - for (int i = 0; i < len; i++) - crc = (short) ((crc << 8) ^ CRC16_TABLE[(crc >> 8) ^ data[i]]); - - return crc; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/CRC8.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/CRC8.java deleted file mode 100644 index 12477a5391e8eea330790efd218ea63701aa3031..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/CRC8.java +++ /dev/null @@ -1,329 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.util; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2000,2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * Utility class to calculate 8-bit CRC. - * @author kc7bfi - */ -public final class CRC8 { - - // CRC-8, poly = x^8 + x^2 + x^1 + x^0, init = 0 - private static final byte[] CRC8_TABLE = - new byte[]{ - (byte) 0x00, - (byte) 0x07, - (byte) 0x0E, - (byte) 0x09, - (byte) 0x1C, - (byte) 0x1B, - (byte) 0x12, - (byte) 0x15, - (byte) 0x38, - (byte) 0x3F, - (byte) 0x36, - (byte) 0x31, - (byte) 0x24, - (byte) 0x23, - (byte) 0x2A, - (byte) 0x2D, - (byte) 0x70, - (byte) 0x77, - (byte) 0x7E, - (byte) 0x79, - (byte) 0x6C, - (byte) 0x6B, - (byte) 0x62, - (byte) 0x65, - (byte) 0x48, - (byte) 0x4F, - (byte) 0x46, - (byte) 0x41, - (byte) 0x54, - (byte) 0x53, - (byte) 0x5A, - (byte) 0x5D, - (byte) 0xE0, - (byte) 0xE7, - (byte) 0xEE, - (byte) 0xE9, - (byte) 0xFC, - (byte) 0xFB, - (byte) 0xF2, - (byte) 0xF5, - (byte) 0xD8, - (byte) 0xDF, - (byte) 0xD6, - (byte) 0xD1, - (byte) 0xC4, - (byte) 0xC3, - (byte) 0xCA, - (byte) 0xCD, - (byte) 0x90, - (byte) 0x97, - (byte) 0x9E, - (byte) 0x99, - (byte) 0x8C, - (byte) 0x8B, - (byte) 0x82, - (byte) 0x85, - (byte) 0xA8, - (byte) 0xAF, - (byte) 0xA6, - (byte) 0xA1, - (byte) 0xB4, - (byte) 0xB3, - (byte) 0xBA, - (byte) 0xBD, - (byte) 0xC7, - (byte) 0xC0, - (byte) 0xC9, - (byte) 0xCE, - (byte) 0xDB, - (byte) 0xDC, - (byte) 0xD5, - (byte) 0xD2, - (byte) 0xFF, - (byte) 0xF8, - (byte) 0xF1, - (byte) 0xF6, - (byte) 0xE3, - (byte) 0xE4, - (byte) 0xED, - (byte) 0xEA, - (byte) 0xB7, - (byte) 0xB0, - (byte) 0xB9, - (byte) 0xBE, - (byte) 0xAB, - (byte) 0xAC, - (byte) 0xA5, - (byte) 0xA2, - (byte) 0x8F, - (byte) 0x88, - (byte) 0x81, - (byte) 0x86, - (byte) 0x93, - (byte) 0x94, - (byte) 0x9D, - (byte) 0x9A, - (byte) 0x27, - (byte) 0x20, - (byte) 0x29, - (byte) 0x2E, - (byte) 0x3B, - (byte) 0x3C, - (byte) 0x35, - (byte) 0x32, - (byte) 0x1F, - (byte) 0x18, - (byte) 0x11, - (byte) 0x16, - (byte) 0x03, - (byte) 0x04, - (byte) 0x0D, - (byte) 0x0A, - (byte) 0x57, - (byte) 0x50, - (byte) 0x59, - (byte) 0x5E, - (byte) 0x4B, - (byte) 0x4C, - (byte) 0x45, - (byte) 0x42, - (byte) 0x6F, - (byte) 0x68, - (byte) 0x61, - (byte) 0x66, - (byte) 0x73, - (byte) 0x74, - (byte) 0x7D, - (byte) 0x7A, - (byte) 0x89, - (byte) 0x8E, - (byte) 0x87, - (byte) 0x80, - (byte) 0x95, - (byte) 0x92, - (byte) 0x9B, - (byte) 0x9C, - (byte) 0xB1, - (byte) 0xB6, - (byte) 0xBF, - (byte) 0xB8, - (byte) 0xAD, - (byte) 0xAA, - (byte) 0xA3, - (byte) 0xA4, - (byte) 0xF9, - (byte) 0xFE, - (byte) 0xF7, - (byte) 0xF0, - (byte) 0xE5, - (byte) 0xE2, - (byte) 0xEB, - (byte) 0xEC, - (byte) 0xC1, - (byte) 0xC6, - (byte) 0xCF, - (byte) 0xC8, - (byte) 0xDD, - (byte) 0xDA, - (byte) 0xD3, - (byte) 0xD4, - (byte) 0x69, - (byte) 0x6E, - (byte) 0x67, - (byte) 0x60, - (byte) 0x75, - (byte) 0x72, - (byte) 0x7B, - (byte) 0x7C, - (byte) 0x51, - (byte) 0x56, - (byte) 0x5F, - (byte) 0x58, - (byte) 0x4D, - (byte) 0x4A, - (byte) 0x43, - (byte) 0x44, - (byte) 0x19, - (byte) 0x1E, - (byte) 0x17, - (byte) 0x10, - (byte) 0x05, - (byte) 0x02, - (byte) 0x0B, - (byte) 0x0C, - (byte) 0x21, - (byte) 0x26, - (byte) 0x2F, - (byte) 0x28, - (byte) 0x3D, - (byte) 0x3A, - (byte) 0x33, - (byte) 0x34, - (byte) 0x4E, - (byte) 0x49, - (byte) 0x40, - (byte) 0x47, - (byte) 0x52, - (byte) 0x55, - (byte) 0x5C, - (byte) 0x5B, - (byte) 0x76, - (byte) 0x71, - (byte) 0x78, - (byte) 0x7F, - (byte) 0x6A, - (byte) 0x6D, - (byte) 0x64, - (byte) 0x63, - (byte) 0x3E, - (byte) 0x39, - (byte) 0x30, - (byte) 0x37, - (byte) 0x22, - (byte) 0x25, - (byte) 0x2C, - (byte) 0x2B, - (byte) 0x06, - (byte) 0x01, - (byte) 0x08, - (byte) 0x0F, - (byte) 0x1A, - (byte) 0x1D, - (byte) 0x14, - (byte) 0x13, - (byte) 0xAE, - (byte) 0xA9, - (byte) 0xA0, - (byte) 0xA7, - (byte) 0xB2, - (byte) 0xB5, - (byte) 0xBC, - (byte) 0xBB, - (byte) 0x96, - (byte) 0x91, - (byte) 0x98, - (byte) 0x9F, - (byte) 0x8A, - (byte) 0x8D, - (byte) 0x84, - (byte) 0x83, - (byte) 0xDE, - (byte) 0xD9, - (byte) 0xD0, - (byte) 0xD7, - (byte) 0xC2, - (byte) 0xC5, - (byte) 0xCC, - (byte) 0xCB, - (byte) 0xE6, - (byte) 0xE1, - (byte) 0xE8, - (byte) 0xEF, - (byte) 0xFA, - (byte) 0xFD, - (byte) 0xF4, - (byte) 0xF3}; - - /** - * Update the CRC value with a byte data. - * - * @param data The byte data - * @param crc The starting CRC value - * @return The updated CRC value - */ - public static byte update(byte data, byte crc) { - return CRC8_TABLE[crc ^ data]; - } - - /** - * Update the CRC value with data from a byte array. - * - * @param data The byte array - * @param len The byte array length - * @param crc The starting CRC value - * @return The updated CRC value - */ - public static byte updateBlock(byte[] data, int len, byte crc) { - for (int i = 0; i < len; i++) - crc = CRC8_TABLE[crc ^ data[i]]; - return crc; - } - - /** - * Calculate the CRC value with data from a byte array. - * - * @param data The byte array - * @param len The byte array length - * @return The calculated CRC value - */ - public static byte calc(byte[] data, int len) { - byte crc = 0; - - for (int i = 0; i < len; i++) - crc = CRC8_TABLE[(crc ^ data[i]) & 0xff]; - - return crc; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/LittleEndianDataOutput.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/LittleEndianDataOutput.java deleted file mode 100644 index 27b0fe070c548d3b2d4a14a8a183a4efa0fbb17b..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/LittleEndianDataOutput.java +++ /dev/null @@ -1,150 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.util; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import java.io.DataOutput; -import java.io.IOException; - -/** - * This class extends DataOutput for writing little-endian data. - * @author kc7bfi - */ -public class LittleEndianDataOutput implements DataOutput { - - private DataOutput out; - - /** - * The constructor. - * @param out The DataOutput to read on - */ - public LittleEndianDataOutput(DataOutput out) { - this.out = out; - } - - /** - * @see java.io.DataOutput#writeDouble(double) - */ - public void writeDouble(double arg0) throws IOException { - out.writeDouble(arg0); - } - - /** - * @see java.io.DataOutput#writeFloat(float) - */ - public void writeFloat(float arg0) throws IOException { - out.writeFloat(arg0); - } - - /** - * @see java.io.DataOutput#write(int) - */ - public void write(int arg0) throws IOException { - out.write(arg0); - } - - /** - * @see java.io.DataOutput#writeByte(int) - */ - public void writeByte(int arg0) throws IOException { - out.writeByte(arg0); - } - - /** - * @see java.io.DataOutput#writeChar(int) - */ - public void writeChar(int arg0) throws IOException { - out.writeChar(arg0); - } - - /** - * @see java.io.DataOutput#writeInt(int) - */ - public void writeInt(int arg0) throws IOException { - out.writeByte(arg0 & 0xff); - out.writeByte((arg0 >> 8) & 0xff); - out.writeByte((arg0 >> 16) & 0xff); - out.writeByte((arg0 >> 24) & 0xff); - } - - /** - * @see java.io.DataOutput#writeShort(int) - */ - public void writeShort(int arg0) throws IOException { - out.writeByte(arg0 & 0xff); - out.writeByte((arg0 >> 8) & 0xff); - } - - /** - * @see java.io.DataOutput#writeLong(long) - */ - public void writeLong(long arg0) throws IOException { - out.writeByte((int) arg0 & 0xff); - out.writeByte((int) (arg0 >> 8) & 0xff); - out.writeByte((int) (arg0 >> 16) & 0xff); - out.writeByte((int) (arg0 >> 24) & 0xff); - out.writeByte((int) (arg0 >> 32) & 0xff); - out.writeByte((int) (arg0 >> 40) & 0xff); - out.writeByte((int) (arg0 >> 48) & 0xff); - out.writeByte((int) (arg0 >> 56) & 0xff); - } - - /** - * @see java.io.DataOutput#writeBoolean(boolean) - */ - public void writeBoolean(boolean arg0) throws IOException { - writeBoolean(arg0); - } - - /** - * @see java.io.DataOutput#write(byte[]) - */ - public void write(byte[] arg0) throws IOException { - out.write(arg0); - } - - /** - * @see java.io.DataOutput#write(byte[], int, int) - */ - public void write(byte[] arg0, int arg1, int arg2) throws IOException { - out.write(arg0, arg1, arg2); - } - - /** - * @see java.io.DataOutput#writeBytes(String) - */ - public void writeBytes(String arg0) throws IOException { - out.writeBytes(arg0); - } - - /** - * @see java.io.DataOutput#writeChars(String) - */ - public void writeChars(String arg0) throws IOException { - out.writeChars(arg0); - } - - /** - * @see java.io.DataOutput#writeUTF(String) - */ - public void writeUTF(String arg0) throws IOException { - out.writeUTF(arg0); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/PCMDecoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/PCMDecoder.java deleted file mode 100644 index e56220be25252dfca287a9f6d0051bbafd87dbf0..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/PCMDecoder.java +++ /dev/null @@ -1,128 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.util; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.ChannelData; -import v4lk.lwbd.decoders.processing.jflac.frame.Frame; -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; - -import java.io.IOException; - -/** - * This class is a PCM FLAC decoder. - * @author kc7bfi - */ -public class PCMDecoder { - //private static final int MAX_BLOCK_SIZE = 65535; - - private long totalSamples; - private int channels; - private int bps; - private int sampleRate; - - private int samplesProcessed = 0; - private int frameCounter = 0; - - private ByteData buf; - - - /** - * The constructor. - * @param streamInfo The FLAC stream info - */ - public PCMDecoder(StreamInfo streamInfo) { - this.totalSamples = streamInfo.getTotalSamples(); - this.channels = streamInfo.getChannels(); - this.bps = streamInfo.getBitsPerSample(); - this.sampleRate = streamInfo.getSampleRate(); - this.buf = new ByteData(streamInfo.getMaxFrameSize()); - } - - - /** - * Write a WAV frame record. - * @param frame The FLAC frame - * @param channelData The decoded channel data - * @return returns the decoded buffer data - * @throws java.io.IOException Thrown if error writing to output channel - */ - public ByteData getFrame(Frame frame, ChannelData[] channelData) throws IOException { - boolean isUnsignedSamples = (bps <= 8); - int wideSamples = frame.header.blockSize; - int wideSample; - int sample; - int channel; - - if (wideSamples > 0) { - samplesProcessed += wideSamples; - frameCounter++; - if (bps == 8) { - if (isUnsignedSamples) { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - //System.out.print("("+(int)((byte)(channelData[channel].getOutput()[wideSample] + 0x80))+")"); - buf.append((byte) (channelData[channel].getOutput()[wideSample] + 0x80)); - } - } else { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) - buf.append((byte) (channelData[channel].getOutput()[wideSample])); - } - } else if (bps == 16) { - if (isUnsignedSamples) { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - short val = (short) (channelData[channel].getOutput()[wideSample] + 0x8000); - buf.append((byte) (val & 0xff)); - buf.append((byte) ((val >> 8) & 0xff)); - } - } else { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - short val = (short) (channelData[channel].getOutput()[wideSample]); - buf.append((byte) (val & 0xff)); - buf.append((byte) ((val >> 8) & 0xff)); - } - } - } else if (bps == 24) { - if (isUnsignedSamples) { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - int val = (channelData[channel].getOutput()[wideSample] + 0x800000); - buf.append((byte) (val & 0xff)); - buf.append((byte) ((val >> 8) & 0xff)); - buf.append((byte) ((val >> 16) & 0xff)); - } - } else { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - int val = (channelData[channel].getOutput()[wideSample]); - buf.append((byte) (val & 0xff)); - buf.append((byte) ((val >> 8) & 0xff)); - buf.append((byte) ((val >> 16) & 0xff)); - } - } - } - } - - return buf; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/RiceCodes.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/RiceCodes.java deleted file mode 100644 index 8d37cf5181b0f08d2055a96be114404edd52aabc..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/RiceCodes.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Created on Jun 24, 2004 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package v4lk.lwbd.decoders.processing.jflac.util; - - -/** - * Utility class for handling Rice codes. - * - * @author kc7bfi - */ -public class RiceCodes { - - /** - * generate int from rice code. - * - * @param val The rice code - * @param parameter The rice parameter - * @return The decoded value - */ - public int riceBits(int val, int parameter) { - // fold signed to unsigned - int uval; - if (val < 0) { - // equivalent to (unsigned)(((--val) < < 1) - 1); but without the overflow problem at MININT - uval = (int) (((-(++val)) << 1) + 1); - } else { - uval = (int) (val << 1); - } - int msbs = uval >> parameter; - return 1 + parameter + msbs; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/RingBuffer.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/RingBuffer.java deleted file mode 100644 index 644160042416e3a058030066e4c2cbc177e15994..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/RingBuffer.java +++ /dev/null @@ -1,234 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.util; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/** - * RingBuffer class. - * @author David R Robison - */ -public class RingBuffer { - protected static final int DEFAULT_BUFFER_SIZE = 2048; - protected volatile int bufferSize = 0; - protected byte[] buffer = null; - protected volatile int putHere = 0; - protected volatile int getHere = 0; - protected volatile boolean eof = false; - protected Object signal = new Object(); - - /** - * Constructor. - * @param size The size of the ring buffer - */ - public RingBuffer(int size) { - bufferSize = size; - buffer = new byte[size]; - } - - /** - * Constructor. - */ - public RingBuffer() { - this(DEFAULT_BUFFER_SIZE); - } - - /** - * Return the size of the ring buffer. - * @return The ring buffer size - */ - public int size() { - return buffer.length; - } - - /** - * Resize the ring buffer. - * @param newSize The new size of the ring buffer - */ - public void resize(int newSize) { - if (bufferSize >= newSize) return; - byte[] newBuffer = new byte[newSize]; - System.arraycopy(buffer, 0, newBuffer, 0, buffer.length); - buffer = newBuffer; - bufferSize = newSize; - //signal.notifyAll(); - } - - /** - * return the space avaiable for writing. - * @return The byte that may be written to the ring buffer - */ - public int putAvailable() { - if (putHere == getHere) return bufferSize - 1; - if (putHere < getHere) return getHere - putHere - 1; - return bufferSize - (putHere - getHere) - 1; - } - - /** - * Empty the ring buffer. - */ - public void empty() { - synchronized (signal) { - putHere = 0; - getHere = 0; - signal.notifyAll(); - } - } - - /** - * Put data into the ring buffer. - * @param data The data to write - * @param offset The start position in the data array - * @param len The bytes from the data array to write - */ - public void put(byte[] data, int offset, int len) { - if (len == 0) return; - - synchronized (signal) { - // see if we have enough room - while (putAvailable() < len) { - try { - signal.wait(1000); - } catch (Exception e) { - System.out.println("Put.Signal.wait:" + e); - } - } - - // copy data - if (putHere >= getHere) { - int l = Math.min(len, bufferSize - putHere); - System.arraycopy(data, offset, buffer, putHere, l); - putHere += l; - if (putHere >= bufferSize) putHere = 0; - if (len > l) put(data, offset + l, len - l); - } else { - int l = Math.min(len, getHere - putHere - 1); - System.arraycopy(data, offset, buffer, putHere, l); - putHere += l; - if (putHere >= bufferSize) putHere = 0; - } - signal.notify(); - } - } - - /** - * Return the bytes available for reading. - * @return The number of bytes that may be read from the ring buffer - */ - public int getAvailable() { - if (putHere == getHere) return 0; - if (putHere < getHere) return bufferSize - (getHere - putHere); - return putHere - getHere; - } - - /** - * Read data from the ring buffer. - * @param data Where to put the data - * @param offset The offset into the data array to start putting data - * @param len The maximum data to read - * @return The number of bytes read - */ - public int get(byte[] data, int offset, int len) { - if (len == 0) return 0; - int dataLen = 0; - - synchronized (signal) { - // see if we have enough data - while (getAvailable() <= 0) { - if (eof) return (-1); - try { - signal.wait(1000); - } catch (Exception e) { - System.out.println("Get.Signal.wait:" + e); - } - } - len = Math.min(len, getAvailable()); - - // copy data - if (getHere < putHere) { - int l = Math.min(len, putHere - getHere); - System.arraycopy(buffer, getHere, data, offset, l); - getHere += l; - if (getHere >= bufferSize) getHere = 0; - dataLen = l; - } else { - int l = Math.min(len, bufferSize - getHere); - System.arraycopy(buffer, getHere, data, offset, l); - getHere += l; - if (getHere >= bufferSize) getHere = 0; - dataLen = l; - if (len > l) dataLen += get(data, offset + l, len - l); - } - signal.notify(); - } - - return dataLen; - } - - /** - * Return EOF status. - * @return True if EOF. - */ - public boolean isEOF() { - return eof; - } - - /** - * Set the EOF status. - * @param eof The eof to set. - */ - public void setEOF(boolean eof) { - this.eof = eof; - } - - /** - * Test main routine. - * @param args Not used - */ - public static void main(String[] args) { - RingBuffer r = new RingBuffer(9); - byte[] b = new String("ABCDEFG").getBytes(); - byte[] g = new byte[2]; - System.out.println("Start"); - r.put(b, 0, 3); - r.get(g, 0, 2); - System.out.println(new String(g)); - r.put(b, 0, 3); - r.get(g, 0, 2); - System.out.println(new String(g)); - r.put(b, 0, 3); - r.get(g, 0, 2); - System.out.println(new String(g)); - r.put(b, 0, 3); - r.get(g, 0, 2); - System.out.println(new String(g)); - r.put(b, 0, 3); - r.get(g, 0, 2); - System.out.println(new String(g)); - r.put(b, 0, 3); - r.get(g, 0, 2); - System.out.println(new String(g)); - r.put(b, 0, 3); - r.get(g, 0, 2); - System.out.println(new String(g)); - r.put(b, 0, 3); - r.get(g, 0, 2); - System.out.println(new String(g)); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/WavWriter.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/WavWriter.java deleted file mode 100644 index c24626d9544941b55fa150c6082d0bdba4970d77..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jflac/util/WavWriter.java +++ /dev/null @@ -1,219 +0,0 @@ -package v4lk.lwbd.decoders.processing.jflac.util; - -/** - * libFLAC - Free Lossless Audio Codec library - * Copyright (C) 2001,2002,2003 Josh Coalson - *

- * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - *

- * This library 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 - * Library General Public License for more details. - *

- * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -import v4lk.lwbd.decoders.processing.jflac.ChannelData; -import v4lk.lwbd.decoders.processing.jflac.Constants; -import v4lk.lwbd.decoders.processing.jflac.frame.Frame; -import v4lk.lwbd.decoders.processing.jflac.metadata.StreamInfo; - -import java.io.*; - -/** - * Utility class for writing WAV files. - * @author kc7bfi - */ -public class WavWriter { - private static final int MAX_BLOCK_SIZE = 65535; - - private long totalSamples; - private int channels; - private int bps; - private int sampleRate; - - private byte[] s8buffer = new byte[MAX_BLOCK_SIZE * Constants.MAX_CHANNELS * 4]; /* WATCHOUT: can be up to 2 megs */ - private int samplesProcessed = 0; - private int frameCounter = 0; - - private boolean needsFixup = false; - private long riffOffset; - private long dataOffset; - - private DataOutput os; - private LittleEndianDataOutput osLE; - - /** - * The constructor. - * @param os The output sream - * @param streamInfo The FLAC stream info - */ - public WavWriter(DataOutput os, StreamInfo streamInfo) { - this.os = os; - this.osLE = new LittleEndianDataOutput(os); - this.totalSamples = streamInfo.getTotalSamples(); - this.channels = streamInfo.getChannels(); - this.bps = streamInfo.getBitsPerSample(); - this.sampleRate = streamInfo.getSampleRate(); - } - - /** - * The constructor. - * @param os The output sream - */ - public WavWriter(DataOutput os) { - this.os = os; - this.osLE = new LittleEndianDataOutput(os); - } - - /** - * The constructor. - * @param os The output sream - * @param streamInfo The FLAC stream info - */ - public WavWriter(OutputStream os, StreamInfo streamInfo) { - this.os = new DataOutputStream(os); - this.osLE = new LittleEndianDataOutput(this.os); - this.totalSamples = streamInfo.getTotalSamples(); - this.channels = streamInfo.getChannels(); - this.bps = streamInfo.getBitsPerSample(); - this.sampleRate = streamInfo.getSampleRate(); - } - - /** - * The constructor. - * @param os The output sream - */ - public WavWriter(OutputStream os) { - this.os = new DataOutputStream(os); - this.osLE = new LittleEndianDataOutput(this.os); - } - - /** - * Write a WAV file header. - * @throws java.io.IOException Thrown if error writing to output string. - */ - public void writeHeader() throws IOException { - long dataSize = totalSamples * channels * ((bps + 7) / 8); - if (totalSamples == 0) { - if (!(os instanceof RandomAccessFile)) throw new IOException("Cannot seek in output stream"); - needsFixup = true; - } - //if (dataSize >= 0xFFFFFFDC) throw new IOException("ERROR: stream is too big to fit in a single file chunk (Datasize="+dataSize+")"); - - os.write("RIFF".getBytes()); - if (needsFixup) riffOffset = ((RandomAccessFile) os).getFilePointer(); - - osLE.writeInt((int) dataSize + 36); // filesize-8 - os.write("WAVEfmt ".getBytes()); - os.write(new byte[]{0x10, 0x00, 0x00, 0x00}); // chunk size = 16 - os.write(new byte[]{0x01, 0x00}); // compression code == 1 - osLE.writeShort(channels); - osLE.writeInt(sampleRate); - osLE.writeInt(sampleRate * channels * ((bps + 7) / 8)); // or is it (sample_rate*channels*bps) / 8 - osLE.writeShort(channels * ((bps + 7) / 8)); // block align - osLE.writeShort(bps); // bits per sample - os.write("data".getBytes()); - if (needsFixup) dataOffset = ((RandomAccessFile) os).getFilePointer(); - - osLE.writeInt((int) dataSize); // data size - } - - /** - * Write a WAV file header. - * @param streamInfo The FLAC stream info - * @throws java.io.IOException Thrown if error writing to output string. - */ - public void writeHeader(StreamInfo streamInfo) throws IOException { - this.totalSamples = streamInfo.getTotalSamples(); - this.channels = streamInfo.getChannels(); - this.bps = streamInfo.getBitsPerSample(); - this.sampleRate = streamInfo.getSampleRate(); - writeHeader(); - } - - /** - * Write a WAV frame record. - * @param frame The FLAC frame - * @param channelData The decoded channel data - * @throws java.io.IOException Thrown if error writing to output channel - */ - public void writeFrame(Frame frame, ChannelData[] channelData) throws IOException { - boolean isUnsignedSamples = (bps <= 8); - int wideSamples = frame.header.blockSize; - int wideSample; - int sample; - int channel; - - if (wideSamples > 0) { - samplesProcessed += wideSamples; - frameCounter++; - if (bps == 8) { - if (isUnsignedSamples) { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - //System.out.print("("+(int)((byte)(channelData[channel].getOutput()[wideSample] + 0x80))+")"); - s8buffer[sample++] = (byte) (channelData[channel].getOutput()[wideSample] + 0x80); - } - } else { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) - s8buffer[sample++] = (byte) (channelData[channel].getOutput()[wideSample]); - } - os.write(s8buffer, 0, sample); - } else if (bps == 16) { - if (isUnsignedSamples) { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - short val = (short) (channelData[channel].getOutput()[wideSample] + 0x8000); - s8buffer[sample++] = (byte) (val & 0xff); - s8buffer[sample++] = (byte) ((val >> 8) & 0xff); - } - } else { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - short val = (short) (channelData[channel].getOutput()[wideSample]); - s8buffer[sample++] = (byte) (val & 0xff); - s8buffer[sample++] = (byte) ((val >> 8) & 0xff); - } - } - os.write(s8buffer, 0, sample); - } else if (bps == 24) { - if (isUnsignedSamples) { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - int val = (channelData[channel].getOutput()[wideSample] + 0x800000); - s8buffer[sample++] = (byte) (val & 0xff); - s8buffer[sample++] = (byte) ((val >> 8) & 0xff); - s8buffer[sample++] = (byte) ((val >> 16) & 0xff); - } - } else { - for (sample = wideSample = 0; wideSample < wideSamples; wideSample++) - for (channel = 0; channel < channels; channel++) { - int val = (channelData[channel].getOutput()[wideSample]); - s8buffer[sample++] = (byte) (val & 0xff); - s8buffer[sample++] = (byte) ((val >> 8) & 0xff); - s8buffer[sample++] = (byte) ((val >> 16) & 0xff); - } - } - os.write(s8buffer, 0, sample); - } - } - } - - /** - * Write the PCM data. - * @param space The PCM data - * @throws java.io.IOException Thrown if error writing to file - */ - public void writePCM(ByteData space) throws IOException { - os.write(space.getData(), 0, space.getLen()); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitReserve.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitReserve.java deleted file mode 100644 index df08ec28befaa2289b5aa93fc6c14d52093a592c..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitReserve.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * - * 12/12/99 0.0.7 Implementation stores single bits - * as ints for better performance. mdm@techie.com. - * - * 02/28/99 0.0 Java Conversion by E.B, javalayer@javazoom.net - * - * Adapted from the public c code by Jeff Tsay. - * - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Implementation of Bit Reservoir for Layer III. - *

- * The implementation stores single bits as a word in the buffer. If - * a bit is set, the corresponding word in the buffer will be non-zero. - * If a bit is clear, the corresponding word is zero. Although this - * may seem waseful, this can be a factor of two quicker than - * packing 8 bits to a byte and extracting. - *

- */ - -// REVIEW: there is no range checking, so buffer underflow or overflow -// can silently occur. -final class BitReserve { - /** - * Size of the internal buffer to store the reserved bits. - * Must be a power of 2. And x8, as each bit is stored as a single - * entry. - */ - private static final int BUFSIZE = 4096 * 8; - - /** - * Mask that can be used to quickly implement the - * modulus operation on BUFSIZE. - */ - private static final int BUFSIZE_MASK = BUFSIZE - 1; - - private int offset, totbit, buf_byte_idx; - private final int[] buf = new int[BUFSIZE]; - private int buf_bit_idx; - - BitReserve() { - - offset = 0; - totbit = 0; - buf_byte_idx = 0; - } - - - /** - * Return totbit Field. - */ - public int hsstell() { - return (totbit); - } - - /** - * Read a number bits from the bit stream. - * - * @param N the number of - */ - public int hgetbits(int N) { - totbit += N; - - int val = 0; - - int pos = buf_byte_idx; - if (pos + N < BUFSIZE) { - while (N-- > 0) { - val <<= 1; - val |= ((buf[pos++] != 0) ? 1 : 0); - } - } else { - while (N-- > 0) { - val <<= 1; - val |= ((buf[pos] != 0) ? 1 : 0); - pos = (pos + 1) & BUFSIZE_MASK; - } - } - buf_byte_idx = pos; - return val; - } - - - /** - * Read 1 bit from the bit stream. - */ -/* - public int hget1bit_old() - { - int val; - totbit++; - if (buf_bit_idx == 0) - { - buf_bit_idx = 8; - buf_byte_idx++; - } - // BUFSIZE = 4096 = 2^12, so - // buf_byte_idx%BUFSIZE == buf_byte_idx & 0xfff - val = buf[buf_byte_idx & BUFSIZE_MASK] & putmask[buf_bit_idx]; - buf_bit_idx--; - val = val >>> buf_bit_idx; - return val; - } - */ - - /** - * Returns next bit from reserve. - * - * @returns 0 if next bit is reset, or 1 if next bit is set. - */ - public int hget1bit() { - totbit++; - int val = buf[buf_byte_idx]; - buf_byte_idx = (buf_byte_idx + 1) & BUFSIZE_MASK; - return val; - } - - /** - * Retrieves bits from the reserve. - */ -/* - public int readBits(int[] out, int len) - { - if (buf_bit_idx == 0) - { - buf_bit_idx = 8; - buf_byte_idx++; - current = buf[buf_byte_idx & BUFSIZE_MASK]; - } - - - - // save total number of bits returned - len = buf_bit_idx; - buf_bit_idx = 0; - - int b = current; - int count = len-1; - - while (count >= 0) - { - out[count--] = (b & 0x1); - b >>>= 1; - } - - totbit += len; - return len; - } - */ - - /** - * Write 8 bits into the bit stream. - */ - public void hputbuf(int val) { - int ofs = offset; - buf[ofs++] = val & 0x80; - buf[ofs++] = val & 0x40; - buf[ofs++] = val & 0x20; - buf[ofs++] = val & 0x10; - buf[ofs++] = val & 0x08; - buf[ofs++] = val & 0x04; - buf[ofs++] = val & 0x02; - buf[ofs++] = val & 0x01; - - if (ofs == BUFSIZE) - offset = 0; - else - offset = ofs; - - } - - /** - * Rewind N bits in Stream. - */ - public void rewindNbits(int N) { - totbit -= N; - buf_byte_idx -= N; - if (buf_byte_idx < 0) - buf_byte_idx += BUFSIZE; - } - - /** - * Rewind N bytes in Stream. - */ - public void rewindNbytes(int N) { - int bits = (N << 3); - totbit -= bits; - buf_byte_idx -= bits; - if (buf_byte_idx < 0) - buf_byte_idx += BUFSIZE; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Bitstream.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Bitstream.java deleted file mode 100644 index a5f4efed47b942a400276c8c90e0921c068e4c86..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Bitstream.java +++ /dev/null @@ -1,584 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * - * 11/17/04 Uncomplete frames discarded. E.B, javalayer@javazoom.net - * - * 12/05/03 ID3v2 tag returned. E.B, javalayer@javazoom.net - * - * 12/12/99 Based on Ibitstream. Exceptions thrown on errors, - * Temporary removed seek functionality. mdm@techie.com - * - * 02/12/99 : Java Conversion by E.B , javalayer@javazoom.net - * - * 04/14/97 : Added function prototypes for new syncing and seeking - * mechanisms. Also made this file portable. Changes made by Jeff Tsay - * - * @(#) ibitstream.h 1.5, last edit: 6/15/94 16:55:34 - * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) - * @(#) Berlin University of Technology - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -import java.io.*; - - -/** - * The Bistream class is responsible for parsing - * an MPEG audio bitstream. - * - * REVIEW: much of the parsing currently occurs in the - * various decoders. This should be moved into this class and associated - * inner classes. - */ -public final class Bitstream implements BitstreamErrors { - /** - * Synchronization control constant for the initial - * synchronization to the start of a frame. - */ - static byte INITIAL_SYNC = 0; - - /** - * Synchronization control constant for non-initial frame - * synchronizations. - */ - static byte STRICT_SYNC = 1; - - // max. 1730 bytes per frame: 144 * 384kbit/s / 32000 Hz + 2 Bytes CRC - /** - * Maximum size of the frame buffer. - */ - private static final int BUFFER_INT_SIZE = 433; - - /** - * The frame buffer that holds the data for the current frame. - */ - private final int[] framebuffer = new int[BUFFER_INT_SIZE]; - - /** - * Number of valid bytes in the frame buffer. - */ - private int framesize; - - /** - * The bytes read from the stream. - */ - private byte[] frame_bytes = new byte[BUFFER_INT_SIZE * 4]; - - /** - * Index into framebuffer where the next bits are - * retrieved. - */ - private int wordpointer; - - /** - * Number (0-31, from MSB to LSB) of next bit for get_bits() - */ - private int bitindex; - - /** - * The current specified syncword - */ - private int syncword; - - /** - * Audio header position in stream. - */ - private int header_pos = 0; - - /** - * - */ - private boolean single_ch_mode; - //private int current_frame_number; - //private int last_frame_number; - - private final int bitmask[] = {0, // dummy - 0x00000001, 0x00000003, 0x00000007, 0x0000000F, - 0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF, - 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, - 0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF, - 0x0001FFFF}; - - private final PushbackInputStream source; - - private final Header header = new Header(); - - private final byte syncbuf[] = new byte[4]; - - private Crc16[] crc = new Crc16[1]; - - private byte[] rawid3v2 = null; - - private boolean firstframe = true; - - - /** - * Construct a IBitstream that reads data from a - * given InputStream. - * - * @param in The InputStream to read from. - */ - public Bitstream(InputStream in) { - if (in == null) throw new NullPointerException("in"); - in = new BufferedInputStream(in); - loadID3v2(in); - firstframe = true; - //source = new PushbackInputStream(in, 1024); - source = new PushbackInputStream(in, BUFFER_INT_SIZE * 4); - - closeFrame(); - //current_frame_number = -1; - //last_frame_number = -1; - } - - /** - * Return position of the first audio header. - * - * @return size of ID3v2 tag frames. - */ - public int header_pos() { - return header_pos; - } - - /** - * Load ID3v2 frames. - * - * @param in MP3 InputStream. - * @author JavaZOOM - */ - private void loadID3v2(InputStream in) { - int size = -1; - try { - // Read ID3v2 header (10 bytes). - in.mark(10); - size = readID3v2Header(in); - header_pos = size; - } catch (IOException e) { - } finally { - try { - // Unread ID3v2 header (10 bytes). - in.reset(); - } catch (IOException e) { - } - } - // Load ID3v2 tags. - try { - if (size > 0) { - rawid3v2 = new byte[size]; - in.read(rawid3v2, 0, rawid3v2.length); - } - } catch (IOException e) { - } - } - - /** - * Parse ID3v2 tag header to find out size of ID3v2 frames. - * - * @param in MP3 InputStream - * @return size of ID3v2 frames + header - * @throws IOException - * @author JavaZOOM - */ - private int readID3v2Header(InputStream in) throws IOException { - byte[] id3header = new byte[4]; - int size = -10; - in.read(id3header, 0, 3); - // Look for ID3v2 - if ((id3header[0] == 'I') && (id3header[1] == 'D') && (id3header[2] == '3')) { - in.read(id3header, 0, 3); - int majorVersion = id3header[0]; - int revision = id3header[1]; - in.read(id3header, 0, 4); - size = (int) (id3header[0] << 21) + (id3header[1] << 14) + (id3header[2] << 7) + (id3header[3]); - } - return (size + 10); - } - - /** - * Return raw ID3v2 frames + header. - * - * @return ID3v2 InputStream or null if ID3v2 frames are not available. - */ - public InputStream getRawID3v2() { - if (rawid3v2 == null) return null; - else { - ByteArrayInputStream bain = new ByteArrayInputStream(rawid3v2); - return bain; - } - } - - /** - * Close the Bitstream. - * - * @throws BitstreamException - */ - public void close() throws BitstreamException { - try { - source.close(); - } catch (IOException ex) { - throw newBitstreamException(STREAM_ERROR, ex); - } - } - - /** - * Reads and parses the next frame from the input source. - * - * @return the Header describing details of the frame read, - * or null if the end of the stream has been reached. - */ - public Header readFrame() throws BitstreamException { - Header result = null; - try { - result = readNextFrame(); - // E.B, Parse VBR (if any) first frame. - if (firstframe == true) { - result.parseVBR(frame_bytes); - firstframe = false; - } - } catch (BitstreamException ex) { - if ((ex.getErrorCode() == INVALIDFRAME)) { - // Try to skip this frame. - //System.out.println("INVALIDFRAME"); - try { - closeFrame(); - result = readNextFrame(); - } catch (BitstreamException e) { - if ((e.getErrorCode() != STREAM_EOF)) { - // wrap original exception so stack trace is maintained. - throw newBitstreamException(e.getErrorCode(), e); - } - } - } else if ((ex.getErrorCode() != STREAM_EOF)) { - // wrap original exception so stack trace is maintained. - throw newBitstreamException(ex.getErrorCode(), ex); - } - } - return result; - } - - /** - * Read next MP3 frame. - * - * @return MP3 frame header. - * @throws BitstreamException - */ - private Header readNextFrame() throws BitstreamException { - if (framesize == -1) { - nextFrame(); - } - return header; - } - - - /** - * Read next MP3 frame. - * - * @throws BitstreamException - */ - private void nextFrame() throws BitstreamException { - // entire frame is read by the header class. - header.read_header(this, crc); - } - - /** - * Unreads the bytes read from the frame. - * - * @throws BitstreamException - */ - // REVIEW: add new error codes for this. - public void unreadFrame() throws BitstreamException { - if (wordpointer == -1 && bitindex == -1 && (framesize > 0)) { - try { - source.unread(frame_bytes, 0, framesize); - } catch (IOException ex) { - throw newBitstreamException(STREAM_ERROR); - } - } - } - - /** - * Close MP3 frame. - */ - public void closeFrame() { - framesize = -1; - wordpointer = -1; - bitindex = -1; - } - - /** - * Determines if the next 4 bytes of the stream represent a - * frame header. - */ - public boolean isSyncCurrentPosition(int syncmode) throws BitstreamException { - int read = readBytes(syncbuf, 0, 4); - int headerstring = ((syncbuf[0] << 24) & 0xFF000000) | ((syncbuf[1] << 16) & 0x00FF0000) | ((syncbuf[2] << 8) & 0x0000FF00) | ((syncbuf[3] << 0) & 0x000000FF); - - try { - source.unread(syncbuf, 0, read); - } catch (IOException ex) { - } - - boolean sync = false; - switch (read) { - case 0: - sync = true; - break; - case 4: - sync = isSyncMark(headerstring, syncmode, syncword); - break; - } - - return sync; - } - - - // REVIEW: this class should provide inner classes to - // parse the frame contents. Eventually, readBits will - // be removed. - public int readBits(int n) { - return get_bits(n); - } - - public int readCheckedBits(int n) { - // REVIEW: implement CRC check. - return get_bits(n); - } - - protected BitstreamException newBitstreamException(int errorcode) { - return new BitstreamException(errorcode, null); - } - - protected BitstreamException newBitstreamException(int errorcode, Throwable throwable) { - return new BitstreamException(errorcode, throwable); - } - - /** - * Get next 32 bits from bitstream. - * They are stored in the headerstring. - * syncmod allows Synchro flag ID - * The returned value is False at the end of stream. - */ - - int syncHeader(byte syncmode) throws BitstreamException { - boolean sync; - int headerstring; - // read additional 2 bytes - int bytesRead = readBytes(syncbuf, 0, 3); - - if (bytesRead != 3) throw newBitstreamException(STREAM_EOF, null); - - headerstring = ((syncbuf[0] << 16) & 0x00FF0000) | ((syncbuf[1] << 8) & 0x0000FF00) | ((syncbuf[2] << 0) & 0x000000FF); - - do { - headerstring <<= 8; - - if (readBytes(syncbuf, 3, 1) != 1) - throw newBitstreamException(STREAM_EOF, null); - - headerstring |= (syncbuf[3] & 0x000000FF); - - sync = isSyncMark(headerstring, syncmode, syncword); - } - while (!sync); - - //current_frame_number++; - //if (last_frame_number < current_frame_number) last_frame_number = current_frame_number; - - return headerstring; - } - - public boolean isSyncMark(int headerstring, int syncmode, int word) { - boolean sync = false; - - if (syncmode == INITIAL_SYNC) { - //sync = ((headerstring & 0xFFF00000) == 0xFFF00000); - sync = ((headerstring & 0xFFE00000) == 0xFFE00000); // SZD: MPEG 2.5 - } else { - sync = ((headerstring & 0xFFF80C00) == word) && - (((headerstring & 0x000000C0) == 0x000000C0) == single_ch_mode); - } - - // filter out invalid sample rate - if (sync) - sync = (((headerstring >>> 10) & 3) != 3); - // filter out invalid layer - if (sync) - sync = (((headerstring >>> 17) & 3) != 0); - // filter out invalid version - if (sync) - sync = (((headerstring >>> 19) & 3) != 1); - - return sync; - } - - /** - * Reads the data for the next frame. The frame is not parsed - * until parse frame is called. - */ - int read_frame_data(int bytesize) throws BitstreamException { - int numread = 0; - numread = readFully(frame_bytes, 0, bytesize); - framesize = bytesize; - wordpointer = -1; - bitindex = -1; - return numread; - } - - /** - * Parses the data previously read with read_frame_data(). - */ - void parse_frame() throws BitstreamException { - // Convert Bytes read to int - int b = 0; - byte[] byteread = frame_bytes; - int bytesize = framesize; - - // Check ID3v1 TAG (True only if last frame). - //for (int t=0;t<(byteread.length)-2;t++) - //{ - // if ((byteread[t]=='T') && (byteread[t+1]=='A') && (byteread[t+2]=='G')) - // { - // System.out.println("ID3v1 detected at offset "+t); - // throw newBitstreamException(INVALIDFRAME, null); - // } - //} - - for (int k = 0; k < bytesize; k = k + 4) { - int convert = 0; - byte b0 = 0; - byte b1 = 0; - byte b2 = 0; - byte b3 = 0; - b0 = byteread[k]; - if (k + 1 < bytesize) b1 = byteread[k + 1]; - if (k + 2 < bytesize) b2 = byteread[k + 2]; - if (k + 3 < bytesize) b3 = byteread[k + 3]; - framebuffer[b++] = ((b0 << 24) & 0xFF000000) | ((b1 << 16) & 0x00FF0000) | ((b2 << 8) & 0x0000FF00) | (b3 & 0x000000FF); - } - wordpointer = 0; - bitindex = 0; - } - - /** - * Read bits from buffer into the lower bits of an unsigned int. - * The LSB contains the latest read bit of the stream. - * (1 <= number_of_bits <= 16) - */ - public int get_bits(int number_of_bits) { - int returnvalue = 0; - int sum = bitindex + number_of_bits; - - // E.B - // There is a problem here, wordpointer could be -1 ?! - if (wordpointer < 0) wordpointer = 0; - // E.B : End. - - if (sum <= 32) { - // all bits contained in *wordpointer - returnvalue = (framebuffer[wordpointer] >>> (32 - sum)) & bitmask[number_of_bits]; - // returnvalue = (wordpointer[0] >> (32 - sum)) & bitmask[number_of_bits]; - if ((bitindex += number_of_bits) == 32) { - bitindex = 0; - wordpointer++; // added by me! - } - return returnvalue; - } - - // E.B : Check that ? - //((short[])&returnvalue)[0] = ((short[])wordpointer + 1)[0]; - //wordpointer++; // Added by me! - //((short[])&returnvalue + 1)[0] = ((short[])wordpointer)[0]; - int Right = (framebuffer[wordpointer] & 0x0000FFFF); - wordpointer++; - int Left = (framebuffer[wordpointer] & 0xFFFF0000); - returnvalue = ((Right << 16) & 0xFFFF0000) | ((Left >>> 16) & 0x0000FFFF); - - returnvalue >>>= 48 - sum; // returnvalue >>= 16 - (number_of_bits - (32 - bitindex)) - returnvalue &= bitmask[number_of_bits]; - bitindex = sum - 32; - return returnvalue; - } - - /** - * Set the word we want to sync the header to. - * In Big-Endian byte order - */ - void set_syncword(int syncword0) { - syncword = syncword0 & 0xFFFFFF3F; - single_ch_mode = ((syncword0 & 0x000000C0) == 0x000000C0); - } - - /** - * Reads the exact number of bytes from the source - * input stream into a byte array. - * - * @param b The byte array to read the specified number - * of bytes into. - * @param offs The index in the array where the first byte - * read should be stored. - * @param len the number of bytes to read. - * @throws BitstreamException is thrown if the specified - * number of bytes could not be read from the stream. - */ - private int readFully(byte[] b, int offs, int len) - throws BitstreamException { - int nRead = 0; - try { - while (len > 0) { - int bytesread = source.read(b, offs, len); - if (bytesread == -1) { - while (len-- > 0) { - b[offs++] = 0; - } - break; - //throw newBitstreamException(UNEXPECTED_EOF, new EOFException()); - } - nRead = nRead + bytesread; - offs += bytesread; - len -= bytesread; - } - } catch (IOException ex) { - throw newBitstreamException(STREAM_ERROR, ex); - } - return nRead; - } - - /** - * Simlar to readFully, but doesn't throw exception when - * EOF is reached. - */ - private int readBytes(byte[] b, int offs, int len) - throws BitstreamException { - int totalBytesRead = 0; - try { - while (len > 0) { - int bytesread = source.read(b, offs, len); - if (bytesread == -1) { - break; - } - totalBytesRead += bytesread; - offs += bytesread; - len -= bytesread; - } - } catch (IOException ex) { - throw newBitstreamException(STREAM_ERROR, ex); - } - return totalBytesRead; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitstreamErrors.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitstreamErrors.java deleted file mode 100644 index dbfed0ce479a40123413001550fd8b10cbee2baa..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitstreamErrors.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 11/17/04 INVALIDFRAME code added. javalayer@javazoom.net - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * This interface describes all error codes that can be thrown - * in BistreamExceptions. - * - * @author MDM 12/12/99 - * @since 0.0.6 - * @see BitstreamException - */ - -public interface BitstreamErrors extends JavaLayerErrors { - - /** - * An undeterminable error occurred. - */ - static public final int UNKNOWN_ERROR = BITSTREAM_ERROR + 0; - - /** - * The header describes an unknown sample rate. - */ - static public final int UNKNOWN_SAMPLE_RATE = BITSTREAM_ERROR + 1; - - /** - * A problem occurred reading from the stream. - */ - static public final int STREAM_ERROR = BITSTREAM_ERROR + 2; - - /** - * The end of the stream was reached prematurely. - */ - static public final int UNEXPECTED_EOF = BITSTREAM_ERROR + 3; - - /** - * The end of the stream was reached. - */ - static public final int STREAM_EOF = BITSTREAM_ERROR + 4; - - /** - * Frame data are missing. - */ - static public final int INVALIDFRAME = BITSTREAM_ERROR + 5; - - /** - * - */ - static public final int BITSTREAM_LAST = 0x1ff; - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitstreamException.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitstreamException.java deleted file mode 100644 index dddde644aa169d65164fceed6d40f57e48022c4a..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/BitstreamException.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Instances of BitstreamException are thrown - * when operations on a Bitstream fail. - *

- * The exception provides details of the exception condition - * in two ways: - *

  1. - * as an error-code describing the nature of the error - *


  2. - * as the Throwable instance, if any, that was thrown - * indicating that an exceptional condition has occurred. - *

- * - * @author MDM 12/12/99 - * @since 0.0.6 - */ - -public class BitstreamException extends JavaLayerException - implements BitstreamErrors { - private int errorcode = UNKNOWN_ERROR; - - public BitstreamException(String msg, Throwable t) { - super(msg, t); - } - - public BitstreamException(int errorcode, Throwable t) { - this(getErrorString(errorcode), t); - this.errorcode = errorcode; - } - - public int getErrorCode() { - return errorcode; - } - - - static public String getErrorString(int errorcode) { - // REVIEW: use resource bundle to map error codes - // to locale-sensitive strings. - - return "Bitstream errorcode " + Integer.toHexString(errorcode); - } - - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Control.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Control.java deleted file mode 100644 index beac43a1772623b20bc315716c198aab5dd6814b..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Control.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Work in progress. - */ - -public interface Control { - - /** - * Starts playback of the media presented by this control. - */ - public void start(); - - /** - * Stops playback of the media presented by this control. - */ - public void stop(); - - public boolean isPlaying(); - - public void pause(); - - - public boolean isRandomAccess(); - - /** - * Retrieves the current position. - */ - public double getPosition(); - - /** - * - */ - public void setPosition(double d); - - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Crc16.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Crc16.java deleted file mode 100644 index eff6820c83927a8a9308c7508415f7fd5c504eaa..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Crc16.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 11/19/04 : 1.0 moved to LGPL. - * - * 02/12/99 : Java Conversion by E.B , javalayer@javazoom.net - * - * @(#) crc.h 1.5, last edit: 6/15/94 16:55:32 - * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) - * @(#) Berlin University of Technology - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * 16-Bit CRC checksum - */ -public final class Crc16 { - private static short polynomial = (short) 0x8005; - private short crc; - - /** - * Dummy Constructor - */ - public Crc16() { - crc = (short) 0xFFFF; - } - - /** - * Feed a bitstring to the crc calculation (0 < length <= 32). - */ - public void add_bits(int bitstring, int length) { - int bitmask = 1 << (length - 1); - do - if (((crc & 0x8000) == 0) ^ ((bitstring & bitmask) == 0)) { - crc <<= 1; - crc ^= polynomial; - } else - crc <<= 1; - while ((bitmask >>>= 1) != 0); - } - - /** - * Return the calculated checksum. - * Erase it for next calls to add_bits(). - */ - public short checksum() { - short sum = crc; - crc = (short) 0xFFFF; - return sum; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Decoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Decoder.java deleted file mode 100644 index 777141e8c0058004852e177ab9c252db779577e1..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Decoder.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 01/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * The Decoder class encapsulates the details of - * decoding an MPEG audio frame. - * - * @version 0.0.7 12/12/99 - * @author MDM - * @since 0.0.5 - */ -public class Decoder implements DecoderErrors { - static private final Params DEFAULT_PARAMS = new Params(); - - /** - * The Bistream from which the MPEG audio frames are read. - */ - //private Bitstream stream; - - /** - * The Obuffer instance that will receive the decoded - * PCM samples. - */ - private Obuffer output; - - /** - * Synthesis filter for the left channel. - */ - private SynthesisFilter filter1; - - /** - * Sythesis filter for the right channel. - */ - private SynthesisFilter filter2; - - /** - * The decoder used to decode layer III frames. - */ - private LayerIIIDecoder l3decoder; - private LayerIIDecoder l2decoder; - private LayerIDecoder l1decoder; - - private int outputFrequency; - private int outputChannels; - - private Equalizer equalizer = new Equalizer(); - - private Params params; - - private boolean initialized; - - - /** - * Creates a new Decoder instance with default - * parameters. - */ - - public Decoder() { - this(null); - } - - /** - * Creates a new Decoder instance with default - * parameters. - * - * @param params The Params instance that describes - * the customizable aspects of the decoder. - */ - public Decoder(Params params0) { - if (params0 == null) - params0 = DEFAULT_PARAMS; - - params = params0; - - Equalizer eq = params.getInitialEqualizerSettings(); - if (eq != null) { - equalizer.setFrom(eq); - } - } - - static public Params getDefaultParams() { - return (Params) DEFAULT_PARAMS.clone(); - } - - public void setEqualizer(Equalizer eq) { - if (eq == null) - eq = Equalizer.PASS_THRU_EQ; - - equalizer.setFrom(eq); - - float[] factors = equalizer.getBandFactors(); - - if (filter1 != null) - filter1.setEQ(factors); - - if (filter2 != null) - filter2.setEQ(factors); - } - - /** - * Decodes one frame from an MPEG audio bitstream. - * - * @param header The header describing the frame to decode. - * @param bitstream The bistream that provides the bits for te body of the frame. - * @return A SampleBuffer containing the decoded samples. - */ - public Obuffer decodeFrame(Header header, Bitstream stream) - throws DecoderException { - if (!initialized) { - initialize(header); - } - - int layer = header.layer(); - - output.clear_buffer(); - - FrameDecoder decoder = retrieveDecoder(header, stream, layer); - - decoder.decodeFrame(); - - output.write_buffer(1); - - return output; - } - - /** - * Changes the output buffer. This will take effect the next time - * decodeFrame() is called. - */ - public void setOutputBuffer(Obuffer out) { - output = out; - } - - /** - * Retrieves the sample frequency of the PCM samples output - * by this decoder. This typically corresponds to the sample - * rate encoded in the MPEG audio stream. - * - * @param the sample rate (in Hz) of the samples written to the - * output buffer when decoding. - */ - public int getOutputFrequency() { - return outputFrequency; - } - - /** - * Retrieves the number of channels of PCM samples output by - * this decoder. This usually corresponds to the number of - * channels in the MPEG audio stream, although it may differ. - * - * @return The number of output channels in the decoded samples: 1 - * for mono, or 2 for stereo. - */ - public int getOutputChannels() { - return outputChannels; - } - - /** - * Retrieves the maximum number of samples that will be written to - * the output buffer when one frame is decoded. This can be used to - * help calculate the size of other buffers whose size is based upon - * the number of samples written to the output buffer. NB: this is - * an upper bound and fewer samples may actually be written, depending - * upon the sample rate and number of channels. - * - * @return The maximum number of samples that are written to the - * output buffer when decoding a single frame of MPEG audio. - */ - public int getOutputBlockSize() { - return Obuffer.OBUFFERSIZE; - } - - - protected DecoderException newDecoderException(int errorcode) { - return new DecoderException(errorcode, null); - } - - protected DecoderException newDecoderException(int errorcode, Throwable throwable) { - return new DecoderException(errorcode, throwable); - } - - protected FrameDecoder retrieveDecoder(Header header, Bitstream stream, int layer) - throws DecoderException { - FrameDecoder decoder = null; - - // REVIEW: allow channel output selection type - // (LEFT, RIGHT, BOTH, DOWNMIX) - switch (layer) { - case 3: - if (l3decoder == null) { - l3decoder = new LayerIIIDecoder(stream, - header, filter1, filter2, - output, OutputChannels.BOTH_CHANNELS); - } - - decoder = l3decoder; - break; - case 2: - if (l2decoder == null) { - l2decoder = new LayerIIDecoder(); - l2decoder.create(stream, - header, filter1, filter2, - output, OutputChannels.BOTH_CHANNELS); - } - decoder = l2decoder; - break; - case 1: - if (l1decoder == null) { - l1decoder = new LayerIDecoder(); - l1decoder.create(stream, - header, filter1, filter2, - output, OutputChannels.BOTH_CHANNELS); - } - decoder = l1decoder; - break; - } - - if (decoder == null) { - throw newDecoderException(UNSUPPORTED_LAYER, null); - } - - return decoder; - } - - private void initialize(Header header) - throws DecoderException { - - // REVIEW: allow customizable scale factor - float scalefactor = 32700.0f; - - int mode = header.mode(); - int layer = header.layer(); - int channels = mode == Header.SINGLE_CHANNEL ? 1 : 2; - - - // set up output buffer if not set up by client. - if (output == null) - output = new SampleBuffer(header.frequency(), channels); - - float[] factors = equalizer.getBandFactors(); - filter1 = new SynthesisFilter(0, scalefactor, factors); - - // REVIEW: allow mono output for stereo - if (channels == 2) - filter2 = new SynthesisFilter(1, scalefactor, factors); - - outputChannels = channels; - outputFrequency = header.frequency(); - - initialized = true; - } - - /** - * The Params class presents the customizable - * aspects of the decoder. - *

- * Instances of this class are not thread safe. - */ - public static class Params implements Cloneable { - private OutputChannels outputChannels = OutputChannels.BOTH; - - private Equalizer equalizer = new Equalizer(); - - public Params() { - } - - public Object clone() { - try { - return super.clone(); - } catch (CloneNotSupportedException ex) { - throw new InternalError(this + ": " + ex); - } - } - - public void setOutputChannels(OutputChannels out) { - if (out == null) - throw new NullPointerException("out"); - - outputChannels = out; - } - - public OutputChannels getOutputChannels() { - return outputChannels; - } - - /** - * Retrieves the equalizer settings that the decoder's equalizer - * will be initialized from. - *

- * The Equalizer instance returned - * cannot be changed in real time to affect the - * decoder output as it is used only to initialize the decoders - * EQ settings. To affect the decoder's output in realtime, - * use the Equalizer returned from the getEqualizer() method on - * the decoder. - * - * @return The Equalizer used to initialize the - * EQ settings of the decoder. - */ - public Equalizer getInitialEqualizerSettings() { - return equalizer; - } - - } - - ; -} - diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/DecoderErrors.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/DecoderErrors.java deleted file mode 100644 index 39e51a32f719a9c4f8f95ddfe2a22e1f9aabb1e7..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/DecoderErrors.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 09/26/08 throw exception on subbband alloc error: Christopher G. Jennings (cjennings@acm.org) - * 11/19/04 1.0 moved to LGPL. - * 01/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * This interface provides constants describing the error - * codes used by the Decoder to indicate errors. - * - * @author MDM - */ -public interface DecoderErrors extends JavaLayerErrors { - - static public final int UNKNOWN_ERROR = DECODER_ERROR + 0; - - /** - * Layer not supported by the decoder. - */ - static public final int UNSUPPORTED_LAYER = DECODER_ERROR + 1; - - /** - * Illegal allocation in subband layer. Indicates a corrupt stream. - */ - static public final int ILLEGAL_SUBBAND_ALLOCATION = DECODER_ERROR + 2; - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/DecoderException.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/DecoderException.java deleted file mode 100644 index 422dcb98ff447c6142f71da18bb0884e4bd81268..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/DecoderException.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 01/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * The DecoderException represents the class of - * errors that can occur when decoding MPEG audio. - * - * @author MDM - */ -public class DecoderException extends JavaLayerException - implements DecoderErrors { - private int errorcode = UNKNOWN_ERROR; - - public DecoderException(String msg, Throwable t) { - super(msg, t); - } - - public DecoderException(int errorcode, Throwable t) { - this(getErrorString(errorcode), t); - this.errorcode = errorcode; - } - - public int getErrorCode() { - return errorcode; - } - - - static public String getErrorString(int errorcode) { - // REVIEW: use resource file to map error codes - // to locale-sensitive strings. - - return "Decoder errorcode " + Integer.toHexString(errorcode); - } - - -} - diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Equalizer.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Equalizer.java deleted file mode 100644 index 9fea2ec90e304d0c597cbe2748bf2bc0ee75feed..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Equalizer.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * The Equalizer class can be used to specify - * equalization settings for the MPEG audio decoder. - *

- * The equalizer consists of 32 band-pass filters. - * Each band of the equalizer can take on a fractional value between - * -1.0 and +1.0. - * At -1.0, the input signal is attenuated by 6dB, at +1.0 the signal is - * amplified by 6dB. - * - * @author MDM - * @see Decoder - */ -public final class Equalizer { - /** - * Equalizer setting to denote that a given band will not be - * present in the output signal. - */ - static public final float BAND_NOT_PRESENT = Float.NEGATIVE_INFINITY; - - static public final Equalizer PASS_THRU_EQ = new Equalizer(); - - private static final int BANDS = 32; - - private final float[] settings = new float[BANDS]; - - /** - * Creates a new Equalizer instance. - */ - public Equalizer() { - } - -// private Equalizer(float b1, float b2, float b3, float b4, float b5, -// float b6, float b7, float b8, float b9, float b10, float b11, -// float b12, float b13, float b14, float b15, float b16, -// float b17, float b18, float b19, float b20); - - public Equalizer(float[] settings) { - setFrom(settings); - } - - public Equalizer(EQFunction eq) { - setFrom(eq); - } - - public void setFrom(float[] eq) { - reset(); - int max = (eq.length > BANDS) ? BANDS : eq.length; - - for (int i = 0; i < max; i++) { - settings[i] = limit(eq[i]); - } - } - - public void setFrom(EQFunction eq) { - reset(); - int max = BANDS; - - for (int i = 0; i < max; i++) { - settings[i] = limit(eq.getBand(i)); - } - } - - /** - * Sets the bands of this equalizer to the value the bands of - * another equalizer. Bands that are not present in both equalizers are ignored. - */ - public void setFrom(Equalizer eq) { - if (eq != this) { - setFrom(eq.settings); - } - } - - - /** - * Sets all bands to 0.0 - */ - public void reset() { - for (int i = 0; i < BANDS; i++) { - settings[i] = 0.0f; - } - } - - - /** - * Retrieves the number of bands present in this equalizer. - */ - public int getBandCount() { - return settings.length; - } - - public float setBand(int band, float neweq) { - float eq = 0.0f; - - if ((band >= 0) && (band < BANDS)) { - eq = settings[band]; - settings[band] = limit(neweq); - } - - return eq; - } - - - /** - * Retrieves the eq setting for a given band. - */ - public float getBand(int band) { - float eq = 0.0f; - - if ((band >= 0) && (band < BANDS)) { - eq = settings[band]; - } - - return eq; - } - - private float limit(float eq) { - if (eq == BAND_NOT_PRESENT) - return eq; - if (eq > 1.0f) - return 1.0f; - if (eq < -1.0f) - return -1.0f; - - return eq; - } - - /** - * Retrieves an array of floats whose values represent a - * scaling factor that can be applied to linear samples - * in each band to provide the equalization represented by - * this instance. - * - * @return an array of factors that can be applied to the - * subbands. - */ - float[] getBandFactors() { - float[] factors = new float[BANDS]; - for (int i = 0, maxCount = BANDS; i < maxCount; i++) { - factors[i] = getBandFactor(settings[i]); - } - - return factors; - } - - /** - * Converts an equalizer band setting to a sample factor. - * The factor is determined by the function f = 2^n where - * n is the equalizer band setting in the range [-1.0,1.0]. - */ - float getBandFactor(float eq) { - if (eq == BAND_NOT_PRESENT) - return 0.0f; - - float f = (float) Math.pow(2.0, eq); - return f; - } - - - static abstract public class EQFunction { - /** - * Returns the setting of a band in the equalizer. - * - * @param band The index of the band to retrieve the setting - * for. - * @return the setting of the specified band. This is a value between - * -1 and +1. - */ - public float getBand(int band) { - return 0.0f; - } - - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/FrameDecoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/FrameDecoder.java deleted file mode 100644 index 324de7dc9e4be4de4fbba4d72b0f1aff20ff6e84..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/FrameDecoder.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 09/26/08 throw exception on subbband alloc error: Christopher G. Jennings (cjennings@acm.org) - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Implementations of FrameDecoder are responsible for decoding - * an MPEG audio frame. - */ -//REVIEW: the interface currently is too thin. There should be -// methods to specify the output buffer, the synthesis filters and -// possibly other objects used by the decoder. -public interface FrameDecoder { - /** - * Decodes one frame of MPEG audio. - */ - public void decodeFrame() throws DecoderException; - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Header.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Header.java deleted file mode 100644 index d26a52593de5391e102dfac13448018aff1c15a6..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Header.java +++ /dev/null @@ -1,750 +0,0 @@ -/* - * 11/19/04 : 1.0 moved to LGPL. - * VBRI header support added, E.B javalayer@javazoom.net - * - * 12/04/03 : VBR (XING) header support added, E.B javalayer@javazoom.net - * - * 02/13/99 : Java Conversion by JavaZOOM , E.B javalayer@javazoom.net - * - * Declarations for MPEG header class - * A few layer III, MPEG-2 LSF, and seeking modifications made by Jeff Tsay. - * Last modified : 04/19/97 - * - * @(#) header.h 1.7, last edit: 6/15/94 16:55:33 - * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) - * @(#) Berlin University of Technology - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Class for extracting information from a frame header. - */ -public final class Header { - public static final int[][] frequencies = - {{22050, 24000, 16000, 1}, - {44100, 48000, 32000, 1}, - {11025, 12000, 8000, 1}}; // SZD: MPEG25 - - /** - * Constant for MPEG-2 LSF version - */ - public static final int MPEG2_LSF = 0; - public static final int MPEG25_LSF = 2; // SZD - - /** - * Constant for MPEG-1 version - */ - public static final int MPEG1 = 1; - - public static final int STEREO = 0; - public static final int JOINT_STEREO = 1; - public static final int DUAL_CHANNEL = 2; - public static final int SINGLE_CHANNEL = 3; - public static final int FOURTYFOUR_POINT_ONE = 0; - public static final int FOURTYEIGHT = 1; - public static final int THIRTYTWO = 2; - - private int h_layer, h_protection_bit, h_bitrate_index, - h_padding_bit, h_mode_extension; - private int h_version; - private int h_mode; - private int h_sample_frequency; - private int h_number_of_subbands, h_intensity_stereo_bound; - private boolean h_copyright, h_original; - // VBR support added by E.B - private double[] h_vbr_time_per_frame = {-1, 384, 1152, 1152}; - private boolean h_vbr; - private int h_vbr_frames; - private int h_vbr_scale; - private int h_vbr_bytes; - private byte[] h_vbr_toc; - - private byte syncmode = Bitstream.INITIAL_SYNC; - private Crc16 crc; - - public short checksum; - public int framesize; - public int nSlots; - - private int _headerstring = -1; // E.B - - Header() { - } - - public String toString() { - StringBuffer buffer = new StringBuffer(200); - buffer.append("Layer "); - buffer.append(layer_string()); - buffer.append(" frame "); - buffer.append(mode_string()); - buffer.append(' '); - buffer.append(version_string()); - if (!checksums()) - buffer.append(" no"); - buffer.append(" checksums"); - buffer.append(' '); - buffer.append(sample_frequency_string()); - buffer.append(','); - buffer.append(' '); - buffer.append(bitrate_string()); - - String s = buffer.toString(); - return s; - } - - /** - * Read a 32-bit header from the bitstream. - */ - void read_header(Bitstream stream, Crc16[] crcp) throws BitstreamException { - int headerstring; - int channel_bitrate; - boolean sync = false; - do { - headerstring = stream.syncHeader(syncmode); - _headerstring = headerstring; // E.B - if (syncmode == Bitstream.INITIAL_SYNC) { - h_version = ((headerstring >>> 19) & 1); - if (((headerstring >>> 20) & 1) == 0) // SZD: MPEG2.5 detection - if (h_version == MPEG2_LSF) - h_version = MPEG25_LSF; - else - throw stream.newBitstreamException(Bitstream.UNKNOWN_ERROR); - if ((h_sample_frequency = ((headerstring >>> 10) & 3)) == 3) { - throw stream.newBitstreamException(Bitstream.UNKNOWN_ERROR); - } - } - h_layer = 4 - (headerstring >>> 17) & 3; - h_protection_bit = (headerstring >>> 16) & 1; - h_bitrate_index = (headerstring >>> 12) & 0xF; - h_padding_bit = (headerstring >>> 9) & 1; - h_mode = ((headerstring >>> 6) & 3); - h_mode_extension = (headerstring >>> 4) & 3; - if (h_mode == JOINT_STEREO) - h_intensity_stereo_bound = (h_mode_extension << 2) + 4; - else - h_intensity_stereo_bound = 0; // should never be used - if (((headerstring >>> 3) & 1) == 1) - h_copyright = true; - if (((headerstring >>> 2) & 1) == 1) - h_original = true; - // calculate number of subbands: - if (h_layer == 1) - h_number_of_subbands = 32; - else { - channel_bitrate = h_bitrate_index; - // calculate bitrate per channel: - if (h_mode != SINGLE_CHANNEL) - if (channel_bitrate == 4) - channel_bitrate = 1; - else - channel_bitrate -= 4; - if ((channel_bitrate == 1) || (channel_bitrate == 2)) - if (h_sample_frequency == THIRTYTWO) - h_number_of_subbands = 12; - else - h_number_of_subbands = 8; - else if ((h_sample_frequency == FOURTYEIGHT) || ((channel_bitrate >= 3) && (channel_bitrate <= 5))) - h_number_of_subbands = 27; - else - h_number_of_subbands = 30; - } - if (h_intensity_stereo_bound > h_number_of_subbands) - h_intensity_stereo_bound = h_number_of_subbands; - // calculate framesize and nSlots - calculate_framesize(); - // read framedata: - int framesizeloaded = stream.read_frame_data(framesize); - if ((framesize >= 0) && (framesizeloaded != framesize)) { - // Data loaded does not match to expected framesize, - // it might be an ID3v1 TAG. (Fix 11/17/04). - throw stream.newBitstreamException(Bitstream.INVALIDFRAME); - } - if (stream.isSyncCurrentPosition(syncmode)) { - if (syncmode == Bitstream.INITIAL_SYNC) { - syncmode = Bitstream.STRICT_SYNC; - stream.set_syncword(headerstring & 0xFFF80CC0); - } - sync = true; - } else { - stream.unreadFrame(); - } - } - while (!sync); - stream.parse_frame(); - if (h_protection_bit == 0) { - // frame contains a crc checksum - checksum = (short) stream.get_bits(16); - if (crc == null) - crc = new Crc16(); - crc.add_bits(headerstring, 16); - crcp[0] = crc; - } else - crcp[0] = null; - if (h_sample_frequency == FOURTYFOUR_POINT_ONE) { - /* - if (offset == null) - { - int max = max_number_of_frames(stream); - offset = new int[max]; - for(int i=0; i 0) && (cf == lf)) - { - offset[cf] = offset[cf-1] + h_padding_bit; - } - else - { - offset[0] = h_padding_bit; - } - */ - } - } - - /** - * Parse frame to extract optionnal VBR frame. - * - * @param firstframe - * @author E.B (javalayer@javazoom.net) - */ - void parseVBR(byte[] firstframe) throws BitstreamException { - // Trying Xing header. - String xing = "Xing"; - byte tmp[] = new byte[4]; - int offset = 0; - // Compute "Xing" offset depending on MPEG version and channels. - if (h_version == MPEG1) { - if (h_mode == SINGLE_CHANNEL) offset = 21 - 4; - else offset = 36 - 4; - } else { - if (h_mode == SINGLE_CHANNEL) offset = 13 - 4; - else offset = 21 - 4; - } - try { - System.arraycopy(firstframe, offset, tmp, 0, 4); - // Is "Xing" ? - if (xing.equals(new String(tmp))) { - //Yes. - h_vbr = true; - h_vbr_frames = -1; - h_vbr_bytes = -1; - h_vbr_scale = -1; - h_vbr_toc = new byte[100]; - - int length = 4; - // Read flags. - byte flags[] = new byte[4]; - System.arraycopy(firstframe, offset + length, flags, 0, flags.length); - length += flags.length; - // Read number of frames (if available). - if ((flags[3] & (byte) (1 << 0)) != 0) { - System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); - h_vbr_frames = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF; - length += 4; - } - // Read size (if available). - if ((flags[3] & (byte) (1 << 1)) != 0) { - System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); - h_vbr_bytes = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF; - length += 4; - } - // Read TOC (if available). - if ((flags[3] & (byte) (1 << 2)) != 0) { - System.arraycopy(firstframe, offset + length, h_vbr_toc, 0, h_vbr_toc.length); - length += h_vbr_toc.length; - } - // Read scale (if available). - if ((flags[3] & (byte) (1 << 3)) != 0) { - System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); - h_vbr_scale = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF; - length += 4; - } - //System.out.println("VBR:"+xing+" Frames:"+ h_vbr_frames +" Size:"+h_vbr_bytes); - } - } catch (ArrayIndexOutOfBoundsException e) { - throw new BitstreamException("XingVBRHeader Corrupted", e); - } - - // Trying VBRI header. - String vbri = "VBRI"; - offset = 36 - 4; - try { - System.arraycopy(firstframe, offset, tmp, 0, 4); - // Is "VBRI" ? - if (vbri.equals(new String(tmp))) { - //Yes. - h_vbr = true; - h_vbr_frames = -1; - h_vbr_bytes = -1; - h_vbr_scale = -1; - h_vbr_toc = new byte[100]; - // Bytes. - int length = 4 + 6; - System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); - h_vbr_bytes = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF; - length += 4; - // Frames. - System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); - h_vbr_frames = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF; - length += 4; - //System.out.println("VBR:"+vbri+" Frames:"+ h_vbr_frames +" Size:"+h_vbr_bytes); - // TOC - // TODO - } - } catch (ArrayIndexOutOfBoundsException e) { - throw new BitstreamException("VBRIVBRHeader Corrupted", e); - } - } - - // Functions to query header contents: - - /** - * Returns version. - */ - public int version() { - return h_version; - } - - /** - * Returns Layer ID. - */ - public int layer() { - return h_layer; - } - - /** - * Returns bitrate index. - */ - public int bitrate_index() { - return h_bitrate_index; - } - - /** - * Returns Sample Frequency. - */ - public int sample_frequency() { - return h_sample_frequency; - } - - /** - * Returns Frequency. - */ - public int frequency() { - return frequencies[h_version][h_sample_frequency]; - } - - /** - * Returns Mode. - */ - public int mode() { - return h_mode; - } - - /** - * Returns Protection bit. - */ - public boolean checksums() { - if (h_protection_bit == 0) return true; - else return false; - } - - /** - * Returns Copyright. - */ - public boolean copyright() { - return h_copyright; - } - - /** - * Returns Original. - */ - public boolean original() { - return h_original; - } - - /** - * Return VBR. - * - * @return true if VBR header is found - */ - public boolean vbr() { - return h_vbr; - } - - /** - * Return VBR scale. - * - * @return scale of -1 if not available - */ - public int vbr_scale() { - return h_vbr_scale; - } - - /** - * Return VBR TOC. - * - * @return vbr toc ot null if not available - */ - public byte[] vbr_toc() { - return h_vbr_toc; - } - - /** - * Returns Checksum flag. - * Compares computed checksum with stream checksum. - */ - public boolean checksum_ok() { - return (checksum == crc.checksum()); - } - - // Seeking and layer III stuff - - /** - * Returns Layer III Padding bit. - */ - public boolean padding() { - if (h_padding_bit == 0) return false; - else return true; - } - - /** - * Returns Slots. - */ - public int slots() { - return nSlots; - } - - /** - * Returns Mode Extension. - */ - public int mode_extension() { - return h_mode_extension; - } - - // E.B -> private to public - public static final int bitrates[][][] = { - {{0 /*free format*/, 32000, 48000, 56000, 64000, 80000, 96000, - 112000, 128000, 144000, 160000, 176000, 192000, 224000, 256000, 0}, - {0 /*free format*/, 8000, 16000, 24000, 32000, 40000, 48000, - 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0}, - {0 /*free format*/, 8000, 16000, 24000, 32000, 40000, 48000, - 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0}}, - - {{0 /*free format*/, 32000, 64000, 96000, 128000, 160000, 192000, - 224000, 256000, 288000, 320000, 352000, 384000, 416000, 448000, 0}, - {0 /*free format*/, 32000, 48000, 56000, 64000, 80000, 96000, - 112000, 128000, 160000, 192000, 224000, 256000, 320000, 384000, 0}, - {0 /*free format*/, 32000, 40000, 48000, 56000, 64000, 80000, - 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, 0}}, - // SZD: MPEG2.5 - {{0 /*free format*/, 32000, 48000, 56000, 64000, 80000, 96000, - 112000, 128000, 144000, 160000, 176000, 192000, 224000, 256000, 0}, - {0 /*free format*/, 8000, 16000, 24000, 32000, 40000, 48000, - 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0}, - {0 /*free format*/, 8000, 16000, 24000, 32000, 40000, 48000, - 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0}}, - - }; - - // E.B -> private to public - - /** - * Calculate Frame size. - * Calculates framesize in bytes excluding header size. - */ - public int calculate_framesize() { - - if (h_layer == 1) { - framesize = (12 * bitrates[h_version][0][h_bitrate_index]) / - frequencies[h_version][h_sample_frequency]; - if (h_padding_bit != 0) framesize++; - framesize <<= 2; // one slot is 4 bytes long - nSlots = 0; - } else { - framesize = (144 * bitrates[h_version][h_layer - 1][h_bitrate_index]) / - frequencies[h_version][h_sample_frequency]; - if (h_version == MPEG2_LSF || h_version == MPEG25_LSF) framesize >>= 1; // SZD - if (h_padding_bit != 0) framesize++; - // Layer III slots - if (h_layer == 3) { - if (h_version == MPEG1) { - nSlots = framesize - ((h_mode == SINGLE_CHANNEL) ? 17 : 32) // side info size - - ((h_protection_bit != 0) ? 0 : 2) // CRC size - - 4; // header size - } else { // MPEG-2 LSF, SZD: MPEG-2.5 LSF - nSlots = framesize - ((h_mode == SINGLE_CHANNEL) ? 9 : 17) // side info size - - ((h_protection_bit != 0) ? 0 : 2) // CRC size - - 4; // header size - } - } else { - nSlots = 0; - } - } - framesize -= 4; // subtract header size - return framesize; - } - - /** - * Returns the maximum number of frames in the stream. - * - * @param streamsize - * @return number of frames - */ - public int max_number_of_frames(int streamsize) // E.B - { - if (h_vbr == true) return h_vbr_frames; - else { - if ((framesize + 4 - h_padding_bit) == 0) return 0; - else return (streamsize / (framesize + 4 - h_padding_bit)); - } - } - - /** - * Returns the maximum number of frames in the stream. - * - * @param streamsize - * @return number of frames - */ - public int min_number_of_frames(int streamsize) // E.B - { - if (h_vbr == true) return h_vbr_frames; - else { - if ((framesize + 5 - h_padding_bit) == 0) return 0; - else return (streamsize / (framesize + 5 - h_padding_bit)); - } - } - - - /** - * Returns ms/frame. - * - * @return milliseconds per frame - */ - public float ms_per_frame() // E.B - { - if (h_vbr == true) { - double tpf = h_vbr_time_per_frame[layer()] / frequency(); - if ((h_version == MPEG2_LSF) || (h_version == MPEG25_LSF)) tpf /= 2; - return ((float) (tpf * 1000)); - } else { - float ms_per_frame_array[][] = {{8.707483f, 8.0f, 12.0f}, - {26.12245f, 24.0f, 36.0f}, - {26.12245f, 24.0f, 36.0f}}; - return (ms_per_frame_array[h_layer - 1][h_sample_frequency]); - } - } - - /** - * Returns total ms. - * - * @param streamsize - * @return total milliseconds - */ - public float total_ms(int streamsize) // E.B - { - return (max_number_of_frames(streamsize) * ms_per_frame()); - } - - /** - * Returns synchronized header. - */ - public int getSyncHeader() // E.B - { - return _headerstring; - } - - // functions which return header informations as strings: - - /** - * Return Layer version. - */ - public String layer_string() { - switch (h_layer) { - case 1: - return "I"; - case 2: - return "II"; - case 3: - return "III"; - } - return null; - } - - // E.B -> private to public - public static final String bitrate_str[][][] = { - {{"free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", - "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", - "160 kbit/s", "176 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", - "forbidden"}, - {"free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", - "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", - "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", - "forbidden"}, - {"free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", - "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", - "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", - "forbidden"}}, - - {{"free format", "32 kbit/s", "64 kbit/s", "96 kbit/s", "128 kbit/s", - "160 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "288 kbit/s", - "320 kbit/s", "352 kbit/s", "384 kbit/s", "416 kbit/s", "448 kbit/s", - "forbidden"}, - {"free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", - "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "160 kbit/s", - "192 kbit/s", "224 kbit/s", "256 kbit/s", "320 kbit/s", "384 kbit/s", - "forbidden"}, - {"free format", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", - "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", - "160 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "320 kbit/s", - "forbidden"}}, - // SZD: MPEG2.5 - {{"free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", - "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", - "160 kbit/s", "176 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", - "forbidden"}, - {"free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", - "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", - "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", - "forbidden"}, - {"free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", - "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", - "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", - "forbidden"}}, - }; - - /** - * Return Bitrate. - * - * @return bitrate in bps - */ - public String bitrate_string() { - if (h_vbr == true) { - return Integer.toString(bitrate() / 1000) + " kb/s"; - } else return bitrate_str[h_version][h_layer - 1][h_bitrate_index]; - } - - /** - * Return Bitrate. - * - * @return bitrate in bps and average bitrate for VBR header - */ - public int bitrate() { - if (h_vbr == true) { - return ((int) ((h_vbr_bytes * 8) / (ms_per_frame() * h_vbr_frames))) * 1000; - } else return bitrates[h_version][h_layer - 1][h_bitrate_index]; - } - - /** - * Return Instant Bitrate. - * Bitrate for VBR is not constant. - * - * @return bitrate in bps - */ - public int bitrate_instant() { - return bitrates[h_version][h_layer - 1][h_bitrate_index]; - } - - /** - * Returns Frequency - * - * @return frequency string in kHz - */ - public String sample_frequency_string() { - switch (h_sample_frequency) { - case THIRTYTWO: - if (h_version == MPEG1) - return "32 kHz"; - else if (h_version == MPEG2_LSF) - return "16 kHz"; - else // SZD - return "8 kHz"; - case FOURTYFOUR_POINT_ONE: - if (h_version == MPEG1) - return "44.1 kHz"; - else if (h_version == MPEG2_LSF) - return "22.05 kHz"; - else // SZD - return "11.025 kHz"; - case FOURTYEIGHT: - if (h_version == MPEG1) - return "48 kHz"; - else if (h_version == MPEG2_LSF) - return "24 kHz"; - else // SZD - return "12 kHz"; - } - return (null); - } - - /** - * Returns Mode. - */ - public String mode_string() { - switch (h_mode) { - case STEREO: - return "Stereo"; - case JOINT_STEREO: - return "Joint stereo"; - case DUAL_CHANNEL: - return "Dual channel"; - case SINGLE_CHANNEL: - return "Single channel"; - } - return null; - } - - /** - * Returns Version. - * - * @return MPEG-1 or MPEG-2 LSF or MPEG-2.5 LSF - */ - public String version_string() { - switch (h_version) { - case MPEG1: - return "MPEG-1"; - case MPEG2_LSF: - return "MPEG-2 LSF"; - case MPEG25_LSF: // SZD - return "MPEG-2.5 LSF"; - } - return (null); - } - - /** - * Returns the number of subbands in the current frame. - * - * @return number of subbands - */ - public int number_of_subbands() { - return h_number_of_subbands; - } - - /** - * Returns Intensity Stereo. - * (Layer II joint stereo only). - * Returns the number of subbands which are in stereo mode, - * subbands above that limit are in intensity stereo mode. - * - * @return intensity - */ - public int intensity_stereo_bound() { - return h_intensity_stereo_bound; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/InputStreamSource.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/InputStreamSource.java deleted file mode 100644 index 143fdbae5d53625526048cd9946108fee2b4b409..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/InputStreamSource.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -import java.io.IOException; -import java.io.InputStream; - -/** - * Work In Progress. - *

- * An instance of InputStreamSource implements a - * Source that provides data from an InputStream - * . Seeking functionality is not supported. - * - * @author MDM - */ -public class InputStreamSource implements Source { - private final InputStream in; - - public InputStreamSource(InputStream in) { - if (in == null) - throw new NullPointerException("in"); - - this.in = in; - } - - public int read(byte[] b, int offs, int len) - throws IOException { - int read = in.read(b, offs, len); - return read; - } - - public boolean willReadBlock() { - return true; - //boolean block = (in.available()==0); - //return block; - } - - public boolean isSeekable() { - return false; - } - - public long tell() { - return -1; - } - - public long seek(long to) { - return -1; - } - - public long length() { - return -1; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerError.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerError.java deleted file mode 100644 index c1ac15cedc35e78d11348987c075f3c5cae3c737..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerError.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Work in progress. - *

- * API usage errors may be handled by throwing an instance of this - * class, as per JMF 2.0. - */ -public class JavaLayerError extends Error { -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerErrors.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerErrors.java deleted file mode 100644 index 690e6b80b1b19cc97880b63b38cba3e4c57ab838..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerErrors.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Exception erorr codes for components of the JavaLayer API. - */ -public interface JavaLayerErrors { - /** - * The first bitstream error code. See the {@link DecoderErrors DecoderErrors} - * interface for other bitstream error codes. - */ - static public final int BITSTREAM_ERROR = 0x100; - - /** - * The first decoder error code. See the {@link DecoderErrors DecoderErrors} - * interface for other decoder error codes. - */ - static public final int DECODER_ERROR = 0x200; - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerException.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerException.java deleted file mode 100644 index 975a6ae85b8539dbb77daee3b7f507e2de6eb8be..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerException.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -import java.io.PrintStream; - - -/** - * The JavaLayerException is the base class for all API-level - * exceptions thrown by JavaLayer. To facilitate conversion and - * common handling of exceptions from other domains, the class - * can delegate some functionality to a contained Throwable instance. - *

- * - * @author MDM - */ -public class JavaLayerException extends Exception { - - private Throwable exception; - - - public JavaLayerException() { - } - - public JavaLayerException(String msg) { - super(msg); - } - - public JavaLayerException(String msg, Throwable t) { - super(msg); - exception = t; - } - - public Throwable getException() { - return exception; - } - - - public void printStackTrace() { - printStackTrace(System.err); - } - - public void printStackTrace(PrintStream ps) { - if (this.exception == null) { - super.printStackTrace(ps); - } else { - exception.printStackTrace(); - } - } - - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerHook.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerHook.java deleted file mode 100644 index cb42f8647bcca638d7446b6cdb3119dc54b62802..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerHook.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -import java.io.InputStream; - -/** - * The JavaLayerHooks class allows developers to change - * the way the JavaLayer library uses Resources. - */ - -public interface JavaLayerHook { - /** - * Retrieves the named resource. This allows resources to be - * obtained without specifying how they are retrieved. - */ - public InputStream getResourceAsStream(String name); -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerUtils.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerUtils.java deleted file mode 100644 index 5a8fda6e723d1f0a74f643ac49b9829526440afe..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/JavaLayerUtils.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -import java.io.*; -import java.lang.reflect.Array; - -/** - * The JavaLayerUtils class is not strictly part of the JavaLayer API. - * It serves to provide useful methods and system-wide hooks. - * - * @author MDM - */ -public class JavaLayerUtils { - static private JavaLayerHook hook = null; - - /** - * Deserializes the object contained in the given input stream. - * - * @param in The input stream to deserialize an object from. - * @param cls The expected class of the deserialized object. - */ - static public Object deserialize(InputStream in, Class cls) - throws IOException { - if (cls == null) - throw new NullPointerException("cls"); - - Object obj = deserialize(in, cls); - if (!cls.isInstance(obj)) { - throw new InvalidObjectException("type of deserialized instance not of required class."); - } - - return obj; - } - - /** - * Deserializes an object from the given InputStream. - * The deserialization is delegated to an - * ObjectInputStream instance. - * - * @param in The InputStream to deserialize an object - * from. - * @return The object deserialized from the stream. - * @throws IOException is thrown if there was a problem reading - * the underlying stream, or an object could not be deserialized - * from the stream. - * @see java.io.ObjectInputStream - */ - static public Object deserialize(InputStream in) - throws IOException { - if (in == null) - throw new NullPointerException("in"); - - ObjectInputStream objIn = new ObjectInputStream(in); - - Object obj; - - try { - obj = objIn.readObject(); - } catch (ClassNotFoundException ex) { - throw new InvalidClassException(ex.toString()); - } - - return obj; - } - - /** - * Deserializes an array from a given InputStream. - * - * @param in The InputStream to - * deserialize an object from. - * @param elemType The class denoting the type of the array - * elements. - * @param length The expected length of the array, or -1 if - * any length is expected. - */ - static public Object deserializeArray(InputStream in, Class elemType, int length) - throws IOException { - if (elemType == null) - throw new NullPointerException("elemType"); - - if (length < -1) - throw new IllegalArgumentException("length"); - - Object obj = deserialize(in); - - Class cls = obj.getClass(); - - - if (!cls.isArray()) - throw new InvalidObjectException("object is not an array"); - - Class arrayElemType = cls.getComponentType(); - if (arrayElemType != elemType) - throw new InvalidObjectException("unexpected array component type"); - - if (length != -1) { - int arrayLength = Array.getLength(obj); - if (arrayLength != length) - throw new InvalidObjectException("array length mismatch"); - } - - return obj; - } - - static public Object deserializeArrayResource(String name, Class elemType, int length) - throws IOException { - InputStream str = getResourceAsStream(name); - if (str == null) - throw new IOException("unable to load resource '" + name + "'"); - - Object obj = deserializeArray(str, elemType, length); - - return obj; - } - - static public void serialize(OutputStream out, Object obj) - throws IOException { - if (out == null) - throw new NullPointerException("out"); - - if (obj == null) - throw new NullPointerException("obj"); - - ObjectOutputStream objOut = new ObjectOutputStream(out); - objOut.writeObject(obj); - - } - - /** - * Sets the system-wide JavaLayer hook. - */ - static synchronized public void setHook(JavaLayerHook hook0) { - hook = hook0; - } - - static synchronized public JavaLayerHook getHook() { - return hook; - } - - /** - * Retrieves an InputStream for a named resource. - * - * @param name The name of the resource. This must be a simple - * name, and not a qualified package name. - * @return The InputStream for the named resource, or null if - * the resource has not been found. If a hook has been - * provided, its getResourceAsStream() method is called - * to retrieve the resource. - */ - static synchronized public InputStream getResourceAsStream(String name) { - InputStream is = null; - - if (hook != null) { - is = hook.getResourceAsStream(name); - } else { - Class cls = JavaLayerUtils.class; - is = cls.getResourceAsStream(name); - } - - return is; - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIDecoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIDecoder.java deleted file mode 100644 index d79f51a4e4a64cf2e5ed93c40788790aae6cfaa0..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIDecoder.java +++ /dev/null @@ -1,408 +0,0 @@ -/* - * 09/26/08 throw exception on subbband alloc error: Christopher G. Jennings (cjennings@acm.org) - * - * 11/19/04 1.0 moved to LGPL. - * - * 12/12/99 Initial version. Adapted from javalayer.java - * and Subband*.java. mdm@techie.com - * - * 02/28/99 Initial version : javalayer.java by E.B - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Implements decoding of MPEG Audio Layer I frames. - */ -class LayerIDecoder implements FrameDecoder { - protected Bitstream stream; - protected Header header; - protected SynthesisFilter filter1, filter2; - protected Obuffer buffer; - protected int which_channels; - protected int mode; - - protected int num_subbands; - protected Subband[] subbands; - protected Crc16 crc = null; // new Crc16[1] to enable CRC checking. - - public LayerIDecoder() { - crc = new Crc16(); - } - - public void create(Bitstream stream0, Header header0, - SynthesisFilter filtera, SynthesisFilter filterb, - Obuffer buffer0, int which_ch0) { - stream = stream0; - header = header0; - filter1 = filtera; - filter2 = filterb; - buffer = buffer0; - which_channels = which_ch0; - - } - - public void decodeFrame() throws DecoderException { - - num_subbands = header.number_of_subbands(); - subbands = new Subband[32]; - mode = header.mode(); - - createSubbands(); - - readAllocation(); - readScaleFactorSelection(); - - if ((crc != null) || header.checksum_ok()) { - readScaleFactors(); - - readSampleData(); - } - - } - - protected void createSubbands() { - int i; - if (mode == Header.SINGLE_CHANNEL) - for (i = 0; i < num_subbands; ++i) - subbands[i] = new SubbandLayer1(i); - else if (mode == Header.JOINT_STEREO) { - for (i = 0; i < header.intensity_stereo_bound(); ++i) - subbands[i] = new SubbandLayer1Stereo(i); - for (; i < num_subbands; ++i) - subbands[i] = new SubbandLayer1IntensityStereo(i); - } else { - for (i = 0; i < num_subbands; ++i) - subbands[i] = new SubbandLayer1Stereo(i); - } - } - - protected void readAllocation() throws DecoderException { - // start to read audio data: - for (int i = 0; i < num_subbands; ++i) - subbands[i].read_allocation(stream, header, crc); - - } - - protected void readScaleFactorSelection() { - // scale factor selection not present for layer I. - } - - protected void readScaleFactors() { - for (int i = 0; i < num_subbands; ++i) - subbands[i].read_scalefactor(stream, header); - } - - protected void readSampleData() { - boolean read_ready = false; - boolean write_ready = false; - int mode = header.mode(); - int i; - do { - for (i = 0; i < num_subbands; ++i) - read_ready = subbands[i].read_sampledata(stream); - do { - for (i = 0; i < num_subbands; ++i) - write_ready = subbands[i].put_next_sample(which_channels, filter1, filter2); - - filter1.calculate_pcm_samples(buffer); - if ((which_channels == OutputChannels.BOTH_CHANNELS) && (mode != Header.SINGLE_CHANNEL)) - filter2.calculate_pcm_samples(buffer); - } while (!write_ready); - } while (!read_ready); - - } - - /** - * Abstract base class for subband classes of layer I and II - */ - static abstract class Subband { - /* - * Changes from version 1.1 to 1.2: - * - array size increased by one, although a scalefactor with index 63 - * is illegal (to prevent segmentation faults) - */ - // Scalefactors for layer I and II, Annex 3-B.1 in ISO/IEC DIS 11172: - public static final float scalefactors[] = - { - 2.00000000000000f, 1.58740105196820f, 1.25992104989487f, 1.00000000000000f, - 0.79370052598410f, 0.62996052494744f, 0.50000000000000f, 0.39685026299205f, - 0.31498026247372f, 0.25000000000000f, 0.19842513149602f, 0.15749013123686f, - 0.12500000000000f, 0.09921256574801f, 0.07874506561843f, 0.06250000000000f, - 0.04960628287401f, 0.03937253280921f, 0.03125000000000f, 0.02480314143700f, - 0.01968626640461f, 0.01562500000000f, 0.01240157071850f, 0.00984313320230f, - 0.00781250000000f, 0.00620078535925f, 0.00492156660115f, 0.00390625000000f, - 0.00310039267963f, 0.00246078330058f, 0.00195312500000f, 0.00155019633981f, - 0.00123039165029f, 0.00097656250000f, 0.00077509816991f, 0.00061519582514f, - 0.00048828125000f, 0.00038754908495f, 0.00030759791257f, 0.00024414062500f, - 0.00019377454248f, 0.00015379895629f, 0.00012207031250f, 0.00009688727124f, - 0.00007689947814f, 0.00006103515625f, 0.00004844363562f, 0.00003844973907f, - 0.00003051757813f, 0.00002422181781f, 0.00001922486954f, 0.00001525878906f, - 0.00001211090890f, 0.00000961243477f, 0.00000762939453f, 0.00000605545445f, - 0.00000480621738f, 0.00000381469727f, 0.00000302772723f, 0.00000240310869f, - 0.00000190734863f, 0.00000151386361f, 0.00000120155435f, 0.00000000000000f /* illegal scalefactor */ - }; - - public abstract void read_allocation(Bitstream stream, Header header, Crc16 crc) throws DecoderException; - - public abstract void read_scalefactor(Bitstream stream, Header header); - - public abstract boolean read_sampledata(Bitstream stream); - - public abstract boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2); - } - - ; - - /** - * Class for layer I subbands in single channel mode. - * Used for single channel mode - * and in derived class for intensity stereo mode - */ - static class SubbandLayer1 extends Subband { - - // Factors and offsets for sample requantization - public static final float table_factor[] = { - 0.0f, (1.0f / 2.0f) * (4.0f / 3.0f), (1.0f / 4.0f) * (8.0f / 7.0f), (1.0f / 8.0f) * (16.0f / 15.0f), - (1.0f / 16.0f) * (32.0f / 31.0f), (1.0f / 32.0f) * (64.0f / 63.0f), (1.0f / 64.0f) * (128.0f / 127.0f), - (1.0f / 128.0f) * (256.0f / 255.0f), (1.0f / 256.0f) * (512.0f / 511.0f), - (1.0f / 512.0f) * (1024.0f / 1023.0f), (1.0f / 1024.0f) * (2048.0f / 2047.0f), - (1.0f / 2048.0f) * (4096.0f / 4095.0f), (1.0f / 4096.0f) * (8192.0f / 8191.0f), - (1.0f / 8192.0f) * (16384.0f / 16383.0f), (1.0f / 16384.0f) * (32768.0f / 32767.0f) - }; - - public static final float table_offset[] = { - 0.0f, ((1.0f / 2.0f) - 1.0f) * (4.0f / 3.0f), ((1.0f / 4.0f) - 1.0f) * (8.0f / 7.0f), ((1.0f / 8.0f) - 1.0f) * (16.0f / 15.0f), - ((1.0f / 16.0f) - 1.0f) * (32.0f / 31.0f), ((1.0f / 32.0f) - 1.0f) * (64.0f / 63.0f), ((1.0f / 64.0f) - 1.0f) * (128.0f / 127.0f), - ((1.0f / 128.0f) - 1.0f) * (256.0f / 255.0f), ((1.0f / 256.0f) - 1.0f) * (512.0f / 511.0f), - ((1.0f / 512.0f) - 1.0f) * (1024.0f / 1023.0f), ((1.0f / 1024.0f) - 1.0f) * (2048.0f / 2047.0f), - ((1.0f / 2048.0f) - 1.0f) * (4096.0f / 4095.0f), ((1.0f / 4096.0f) - 1.0f) * (8192.0f / 8191.0f), - ((1.0f / 8192.0f) - 1.0f) * (16384.0f / 16383.0f), ((1.0f / 16384.0f) - 1.0f) * (32768.0f / 32767.0f) - }; - - protected int subbandnumber; - protected int samplenumber; - protected int allocation; - protected float scalefactor; - protected int samplelength; - protected float sample; - protected float factor, offset; - - /** - * Construtor. - */ - public SubbandLayer1(int subbandnumber) { - this.subbandnumber = subbandnumber; - samplenumber = 0; - } - - /** - * - */ - public void read_allocation(Bitstream stream, Header header, Crc16 crc) throws DecoderException { - if ((allocation = stream.get_bits(4)) == 15) { - // CGJ: catch this condition and throw appropriate exception - throw new DecoderException(DecoderErrors.ILLEGAL_SUBBAND_ALLOCATION, null); - // cerr << "WARNING: stream contains an illegal allocation!\n"; - // MPEG-stream is corrupted! - } - - if (crc != null) crc.add_bits(allocation, 4); - if (allocation != 0) { - samplelength = allocation + 1; - factor = table_factor[allocation]; - offset = table_offset[allocation]; - } - } - - /** - * - */ - public void read_scalefactor(Bitstream stream, Header header) { - if (allocation != 0) scalefactor = scalefactors[stream.get_bits(6)]; - } - - /** - * - */ - public boolean read_sampledata(Bitstream stream) { - if (allocation != 0) { - sample = (float) (stream.get_bits(samplelength)); - } - if (++samplenumber == 12) { - samplenumber = 0; - return true; - } - return false; - } - - /** - * - */ - public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { - if ((allocation != 0) && (channels != OutputChannels.RIGHT_CHANNEL)) { - float scaled_sample = (sample * factor + offset) * scalefactor; - filter1.input_sample(scaled_sample, subbandnumber); - } - return true; - } - } - - ; - - /** - * Class for layer I subbands in joint stereo mode. - */ - static class SubbandLayer1IntensityStereo extends SubbandLayer1 { - protected float channel2_scalefactor; - - /** - * Constructor - */ - public SubbandLayer1IntensityStereo(int subbandnumber) { - super(subbandnumber); - } - - /** - * - */ - public void read_allocation(Bitstream stream, Header header, Crc16 crc) throws DecoderException { - super.read_allocation(stream, header, crc); - } - - /** - * - */ - public void read_scalefactor(Bitstream stream, Header header) { - if (allocation != 0) { - scalefactor = scalefactors[stream.get_bits(6)]; - channel2_scalefactor = scalefactors[stream.get_bits(6)]; - } - } - - /** - * - */ - public boolean read_sampledata(Bitstream stream) { - return super.read_sampledata(stream); - } - - /** - * - */ - public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { - if (allocation != 0) { - sample = sample * factor + offset; // requantization - if (channels == OutputChannels.BOTH_CHANNELS) { - float sample1 = sample * scalefactor, - sample2 = sample * channel2_scalefactor; - filter1.input_sample(sample1, subbandnumber); - filter2.input_sample(sample2, subbandnumber); - } else if (channels == OutputChannels.LEFT_CHANNEL) { - float sample1 = sample * scalefactor; - filter1.input_sample(sample1, subbandnumber); - } else { - float sample2 = sample * channel2_scalefactor; - filter1.input_sample(sample2, subbandnumber); - } - } - return true; - } - } - - ; - - /** - * Class for layer I subbands in stereo mode. - */ - static class SubbandLayer1Stereo extends SubbandLayer1 { - protected int channel2_allocation; - protected float channel2_scalefactor; - protected int channel2_samplelength; - protected float channel2_sample; - protected float channel2_factor, channel2_offset; - - - /** - * Constructor - */ - public SubbandLayer1Stereo(int subbandnumber) { - super(subbandnumber); - } - - /** - * - */ - public void read_allocation(Bitstream stream, Header header, Crc16 crc) throws DecoderException { - allocation = stream.get_bits(4); - channel2_allocation = stream.get_bits(4); - if (crc != null) { - crc.add_bits(allocation, 4); - crc.add_bits(channel2_allocation, 4); - } - if (allocation != 0) { - samplelength = allocation + 1; - factor = table_factor[allocation]; - offset = table_offset[allocation]; - } - if (channel2_allocation != 0) { - channel2_samplelength = channel2_allocation + 1; - channel2_factor = table_factor[channel2_allocation]; - channel2_offset = table_offset[channel2_allocation]; - } - } - - /** - * - */ - public void read_scalefactor(Bitstream stream, Header header) { - if (allocation != 0) scalefactor = scalefactors[stream.get_bits(6)]; - if (channel2_allocation != 0) channel2_scalefactor = scalefactors[stream.get_bits(6)]; - } - - /** - * - */ - public boolean read_sampledata(Bitstream stream) { - boolean returnvalue = super.read_sampledata(stream); - if (channel2_allocation != 0) { - channel2_sample = (float) (stream.get_bits(channel2_samplelength)); - } - return (returnvalue); - } - - /** - * - */ - public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { - super.put_next_sample(channels, filter1, filter2); - if ((channel2_allocation != 0) && (channels != OutputChannels.LEFT_CHANNEL)) { - float sample2 = (channel2_sample * channel2_factor + channel2_offset) * - channel2_scalefactor; - if (channels == OutputChannels.BOTH_CHANNELS) - filter2.input_sample(sample2, subbandnumber); - else - filter1.input_sample(sample2, subbandnumber); - } - return true; - } - } - - ; - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIIDecoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIIDecoder.java deleted file mode 100644 index 6797364e06df5c1c68e3bf19d7755ece4ca16b3e..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIIDecoder.java +++ /dev/null @@ -1,996 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * - * 29/05/01 Michael Scheerer, Fixed some C++ to Java porting bugs. - * - * 16/07/01 Michael Scheerer, Catched a bug in method - * read_sampledata, which causes an outOfIndexException. - * - * 12/12/99 Initial version. Adapted from javalayer.java - * and Subband*.java. mdm@techie.com - * - * 02/28/99 Initial version : javalayer.java by E.B - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Implements decoding of MPEG Audio Layer II frames. - */ -class LayerIIDecoder extends LayerIDecoder implements FrameDecoder { - - public LayerIIDecoder() { - } - - - protected void createSubbands() { - int i; - if (mode == Header.SINGLE_CHANNEL) - for (i = 0; i < num_subbands; ++i) - subbands[i] = new SubbandLayer2(i); - else if (mode == Header.JOINT_STEREO) { - for (i = 0; i < header.intensity_stereo_bound(); ++i) - subbands[i] = new SubbandLayer2Stereo(i); - for (; i < num_subbands; ++i) - subbands[i] = new SubbandLayer2IntensityStereo(i); - } else { - for (i = 0; i < num_subbands; ++i) - subbands[i] = new SubbandLayer2Stereo(i); - } - - } - - protected void readScaleFactorSelection() { - for (int i = 0; i < num_subbands; ++i) - ((SubbandLayer2) subbands[i]).read_scalefactor_selection(stream, crc); - } - - - /** - * Class for layer II subbands in single channel mode. - */ - static class SubbandLayer2 extends Subband { - // this table contains 3 requantized samples for each legal codeword - // when grouped in 5 bits, i.e. 3 quantizationsteps per sample - public static final float grouping_5bits[] = new float[] - { - -2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, - 0.0f, -2.0f / 3.0f, -2.0f / 3.0f, - 2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, - -2.0f / 3.0f, 0.0f, -2.0f / 3.0f, - 0.0f, 0.0f, -2.0f / 3.0f, - 2.0f / 3.0f, 0.0f, -2.0f / 3.0f, - -2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, - 0.0f, 2.0f / 3.0f, -2.0f / 3.0f, - 2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, - -2.0f / 3.0f, -2.0f / 3.0f, 0.0f, - 0.0f, -2.0f / 3.0f, 0.0f, - 2.0f / 3.0f, -2.0f / 3.0f, 0.0f, - -2.0f / 3.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 2.0f / 3.0f, 0.0f, 0.0f, - -2.0f / 3.0f, 2.0f / 3.0f, 0.0f, - 0.0f, 2.0f / 3.0f, 0.0f, - 2.0f / 3.0f, 2.0f / 3.0f, 0.0f, - -2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, - 0.0f, -2.0f / 3.0f, 2.0f / 3.0f, - 2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, - -2.0f / 3.0f, 0.0f, 2.0f / 3.0f, - 0.0f, 0.0f, 2.0f / 3.0f, - 2.0f / 3.0f, 0.0f, 2.0f / 3.0f, - -2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, - 0.0f, 2.0f / 3.0f, 2.0f / 3.0f, - 2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f - }; - - // this table contains 3 requantized samples for each legal codeword - // when grouped in 7 bits, i.e. 5 quantizationsteps per sample - public static final float grouping_7bits[] = new float[] - { - -0.8f, -0.8f, -0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.8f, -0.8f, - -0.8f, -0.4f, -0.8f, -0.4f, -0.4f, -0.8f, 0.0f, -0.4f, -0.8f, 0.4f, -0.4f, -0.8f, 0.8f, -0.4f, -0.8f, - -0.8f, 0.0f, -0.8f, -0.4f, 0.0f, -0.8f, 0.0f, 0.0f, -0.8f, 0.4f, 0.0f, -0.8f, 0.8f, 0.0f, -0.8f, - -0.8f, 0.4f, -0.8f, -0.4f, 0.4f, -0.8f, 0.0f, 0.4f, -0.8f, 0.4f, 0.4f, -0.8f, 0.8f, 0.4f, -0.8f, - -0.8f, 0.8f, -0.8f, -0.4f, 0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.4f, 0.8f, -0.8f, 0.8f, 0.8f, -0.8f, - -0.8f, -0.8f, -0.4f, -0.4f, -0.8f, -0.4f, 0.0f, -0.8f, -0.4f, 0.4f, -0.8f, -0.4f, 0.8f, -0.8f, -0.4f, - -0.8f, -0.4f, -0.4f, -0.4f, -0.4f, -0.4f, 0.0f, -0.4f, -0.4f, 0.4f, -0.4f, -0.4f, 0.8f, -0.4f, -0.4f, - -0.8f, 0.0f, -0.4f, -0.4f, 0.0f, -0.4f, 0.0f, 0.0f, -0.4f, 0.4f, 0.0f, -0.4f, 0.8f, 0.0f, -0.4f, - -0.8f, 0.4f, -0.4f, -0.4f, 0.4f, -0.4f, 0.0f, 0.4f, -0.4f, 0.4f, 0.4f, -0.4f, 0.8f, 0.4f, -0.4f, - -0.8f, 0.8f, -0.4f, -0.4f, 0.8f, -0.4f, 0.0f, 0.8f, -0.4f, 0.4f, 0.8f, -0.4f, 0.8f, 0.8f, -0.4f, - -0.8f, -0.8f, 0.0f, -0.4f, -0.8f, 0.0f, 0.0f, -0.8f, 0.0f, 0.4f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f, - -0.8f, -0.4f, 0.0f, -0.4f, -0.4f, 0.0f, 0.0f, -0.4f, 0.0f, 0.4f, -0.4f, 0.0f, 0.8f, -0.4f, 0.0f, - -0.8f, 0.0f, 0.0f, -0.4f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.0f, 0.0f, 0.8f, 0.0f, 0.0f, - -0.8f, 0.4f, 0.0f, -0.4f, 0.4f, 0.0f, 0.0f, 0.4f, 0.0f, 0.4f, 0.4f, 0.0f, 0.8f, 0.4f, 0.0f, - -0.8f, 0.8f, 0.0f, -0.4f, 0.8f, 0.0f, 0.0f, 0.8f, 0.0f, 0.4f, 0.8f, 0.0f, 0.8f, 0.8f, 0.0f, - -0.8f, -0.8f, 0.4f, -0.4f, -0.8f, 0.4f, 0.0f, -0.8f, 0.4f, 0.4f, -0.8f, 0.4f, 0.8f, -0.8f, 0.4f, - -0.8f, -0.4f, 0.4f, -0.4f, -0.4f, 0.4f, 0.0f, -0.4f, 0.4f, 0.4f, -0.4f, 0.4f, 0.8f, -0.4f, 0.4f, - -0.8f, 0.0f, 0.4f, -0.4f, 0.0f, 0.4f, 0.0f, 0.0f, 0.4f, 0.4f, 0.0f, 0.4f, 0.8f, 0.0f, 0.4f, - -0.8f, 0.4f, 0.4f, -0.4f, 0.4f, 0.4f, 0.0f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.8f, 0.4f, 0.4f, - -0.8f, 0.8f, 0.4f, -0.4f, 0.8f, 0.4f, 0.0f, 0.8f, 0.4f, 0.4f, 0.8f, 0.4f, 0.8f, 0.8f, 0.4f, - -0.8f, -0.8f, 0.8f, -0.4f, -0.8f, 0.8f, 0.0f, -0.8f, 0.8f, 0.4f, -0.8f, 0.8f, 0.8f, -0.8f, 0.8f, - -0.8f, -0.4f, 0.8f, -0.4f, -0.4f, 0.8f, 0.0f, -0.4f, 0.8f, 0.4f, -0.4f, 0.8f, 0.8f, -0.4f, 0.8f, - -0.8f, 0.0f, 0.8f, -0.4f, 0.0f, 0.8f, 0.0f, 0.0f, 0.8f, 0.4f, 0.0f, 0.8f, 0.8f, 0.0f, 0.8f, - -0.8f, 0.4f, 0.8f, -0.4f, 0.4f, 0.8f, 0.0f, 0.4f, 0.8f, 0.4f, 0.4f, 0.8f, 0.8f, 0.4f, 0.8f, - -0.8f, 0.8f, 0.8f, -0.4f, 0.8f, 0.8f, 0.0f, 0.8f, 0.8f, 0.4f, 0.8f, 0.8f, 0.8f, 0.8f, 0.8f - }; - - // this table contains 3 requantized samples for each legal codeword - // when grouped in 10 bits, i.e. 9 quantizationsteps per sample - public static final float grouping_10bits[] = - { - -8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, - -2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, - 4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, - -8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, - -2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, - 4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, - -8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, - -2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, - 4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, - -8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, - -2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, - 4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, - -8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -8.0f / 9.0f, - -2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 0.0f, 0.0f, -8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -8.0f / 9.0f, - 4.0f / 9.0f, 0.0f, -8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -8.0f / 9.0f, - -8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, - -2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, - 4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, - -8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, - -2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, - 4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, - -8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, - -2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, - 4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, - -8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, - -2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, - 4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, - -8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, - -2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, - 4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, - -8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, - -2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f, -6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, - 4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, - -8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, - -2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, - 4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, - -8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, - -2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, -2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, - 4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, - -8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f, -6.0f / 9.0f, -4.0f / 9.0f, 0.0f, -6.0f / 9.0f, - -2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 0.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f, 0.0f, -6.0f / 9.0f, - 4.0f / 9.0f, 0.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f, -6.0f / 9.0f, 8.0f / 9.0f, 0.0f, -6.0f / 9.0f, - -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, - -2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, - 4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, - -8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, - -2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, - 4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, - -8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, - -2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 0.0f, 6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, - 4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, - -8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, - -2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, - 4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, - -8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, - -2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, - 4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, - -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, - -2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 0.0f, -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, - 4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, - -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, - -2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, - 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, - -8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, - -2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 0.0f, -2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, - 4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, - -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 0.0f, -4.0f / 9.0f, - -2.0f / 9.0f, 0.0f, -4.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 2.0f / 9.0f, 0.0f, -4.0f / 9.0f, - 4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f, 8.0f / 9.0f, 0.0f, -4.0f / 9.0f, - -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, - -2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, - 4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, - -8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, - -2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 0.0f, 4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, - 4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, - -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, - -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f, 6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, - 4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, - -8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, - -2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, - 4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, - -8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, - -2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, - 4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, - -8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, - -2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 0.0f, -6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, - 4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, - -8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, - -2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 0.0f, -4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, - 4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, - -8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, - -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 0.0f, -2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, - 4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, - -8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, -2.0f / 9.0f, -4.0f / 9.0f, 0.0f, -2.0f / 9.0f, - -2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 0.0f, 0.0f, -2.0f / 9.0f, 2.0f / 9.0f, 0.0f, -2.0f / 9.0f, - 4.0f / 9.0f, 0.0f, -2.0f / 9.0f, 6.0f / 9.0f, 0.0f, -2.0f / 9.0f, 8.0f / 9.0f, 0.0f, -2.0f / 9.0f, - -8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, - -2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, - 4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, - -8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, - -2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 0.0f, 4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, - 4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, - -8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, - -2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 0.0f, 6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, - 4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, - -8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, - -2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, - 4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, - -8.0f / 9.0f, -8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -8.0f / 9.0f, 0.0f, - -2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 0.0f, -8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -8.0f / 9.0f, 0.0f, - 4.0f / 9.0f, -8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -8.0f / 9.0f, 0.0f, - -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f, -6.0f / 9.0f, 0.0f, - -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 0.0f, -6.0f / 9.0f, 0.0f, 2.0f / 9.0f, -6.0f / 9.0f, 0.0f, - 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 6.0f / 9.0f, -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 0.0f, - -8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -6.0f / 9.0f, -4.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 0.0f, - -2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 0.0f, - 4.0f / 9.0f, -4.0f / 9.0f, 0.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 0.0f, - -8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -6.0f / 9.0f, -2.0f / 9.0f, 0.0f, -4.0f / 9.0f, -2.0f / 9.0f, 0.0f, - -2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 0.0f, -2.0f / 9.0f, 0.0f, 2.0f / 9.0f, -2.0f / 9.0f, 0.0f, - 4.0f / 9.0f, -2.0f / 9.0f, 0.0f, 6.0f / 9.0f, -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, -2.0f / 9.0f, 0.0f, - -8.0f / 9.0f, 0.0f, 0.0f, -6.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 0.0f, 0.0f, - -2.0f / 9.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f / 9.0f, 0.0f, 0.0f, - 4.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 0.0f, 0.0f, 8.0f / 9.0f, 0.0f, 0.0f, - -8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f, 0.0f, -4.0f / 9.0f, 2.0f / 9.0f, 0.0f, - -2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 0.0f, 2.0f / 9.0f, 0.0f, 2.0f / 9.0f, 2.0f / 9.0f, 0.0f, - 4.0f / 9.0f, 2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 2.0f / 9.0f, 0.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f, - -8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -6.0f / 9.0f, 4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 4.0f / 9.0f, 0.0f, - -2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 0.0f, 4.0f / 9.0f, 0.0f, 2.0f / 9.0f, 4.0f / 9.0f, 0.0f, - 4.0f / 9.0f, 4.0f / 9.0f, 0.0f, 6.0f / 9.0f, 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 4.0f / 9.0f, 0.0f, - -8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, - -2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 6.0f / 9.0f, 0.0f, - 4.0f / 9.0f, 6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f, - -8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -6.0f / 9.0f, 8.0f / 9.0f, 0.0f, -4.0f / 9.0f, 8.0f / 9.0f, 0.0f, - -2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 0.0f, 8.0f / 9.0f, 0.0f, 2.0f / 9.0f, 8.0f / 9.0f, 0.0f, - 4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f, 0.0f, 8.0f / 9.0f, 8.0f / 9.0f, 0.0f, - -8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, - -2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, - 4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, - -8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, - -2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, - 4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, - -8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, - -2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 0.0f, -4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, - 4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, - -8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, - -2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, - 4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, - -8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, - -2.0f / 9.0f, 0.0f, 2.0f / 9.0f, 0.0f, 0.0f, 2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 2.0f / 9.0f, - 4.0f / 9.0f, 0.0f, 2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 2.0f / 9.0f, - -8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, - -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, - 4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, - -8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, - -2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, - 4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, - -8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, - -2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, - 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, - -8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, - -2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f, 8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, - 4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, - -8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, - -2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, - 4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, - -8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, - -2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 0.0f, -6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, - 4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, - -8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, - -2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, - 4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, - -8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, - -2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 0.0f, -2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, - 4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, - -8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 4.0f / 9.0f, -4.0f / 9.0f, 0.0f, 4.0f / 9.0f, - -2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 0.0f, 0.0f, 4.0f / 9.0f, 2.0f / 9.0f, 0.0f, 4.0f / 9.0f, - 4.0f / 9.0f, 0.0f, 4.0f / 9.0f, 6.0f / 9.0f, 0.0f, 4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 4.0f / 9.0f, - -8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, - -2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, - 4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, - -8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, - -2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 0.0f, 4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, - 4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, - -8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, - -2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 0.0f, 6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, - 4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, - -8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, - -2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, - 4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, - -8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, - -2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, - 4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, - -8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, - -2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f, -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, - 4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, - -8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, - -2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, - 4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, - -8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, - -2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 0.0f, -2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, - 4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, - -8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -6.0f / 9.0f, 0.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f, 6.0f / 9.0f, - -2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 2.0f / 9.0f, 0.0f, 6.0f / 9.0f, - 4.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f, 0.0f, 6.0f / 9.0f, - -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, - -2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, - 4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, - -8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, - -2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 0.0f, 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, - 4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, - -8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, - -2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, - 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, - -8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, - -2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, - 4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, - -8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, - -2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, - 4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, - -8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, - -2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 0.0f, -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, - 4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, - -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, - -2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 0.0f, -4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, - 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, - -8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, - -2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 0.0f, -2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, - 4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, - -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 0.0f, 8.0f / 9.0f, - -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, 0.0f, 0.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f, 8.0f / 9.0f, - 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 8.0f / 9.0f, 0.0f, 8.0f / 9.0f, - -8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, - -2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, - 4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, - -8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, - -2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, - 4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, - -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, - -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, - 4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, - -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, - -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 0.0f, 8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, - 4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f - }; - - // data taken from ISO/IEC DIS 11172, Annexes 3-B.2[abcd] and 3-B.4: - - // subbands 0-2 in tables 3-B.2a and 2b: (index is allocation) - public static final int table_ab1_codelength[] = - // bits per codeword - {0, 5, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - - public static final float table_ab1_groupingtables[][] = - // pointer to sample grouping table, or NULL-pointer if ungrouped - {null, grouping_5bits, null, null, null, null, null, null, null, null, null, null, null, null, null, null}; - - public static final float table_ab1_factor[] = - // factor for requantization: (real)sample * factor - 1.0 gives requantized sample - {0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32.0f, 1.0f / 64.0f, - 1.0f / 128.0f, 1.0f / 256.0f, 1.0f / 512.0f, 1.0f / 1024.0f, 1.0f / 2048.0f, - 1.0f / 4096.0f, 1.0f / 8192.0f, 1.0f / 16384.0f, 1.0f / 32768.0f}; - - public static final float table_ab1_c[] = - // factor c for requantization from table 3-B.4 - {0.0f, 1.33333333333f, 1.14285714286f, 1.06666666666f, 1.03225806452f, - 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, - 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00006103888f, 1.00003051851f, - 1.00001525902f}; - - public static final float table_ab1_d[] = - // addend d for requantization from table 3-B.4 - {0.0f, 0.50000000000f, 0.25000000000f, 0.12500000000f, 0.06250000000f, - 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, - 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00012207031f, 0.00006103516f, - 0.00003051758f}; - - // subbands 3-... tables 3-B.2a and 2b: - public static final float[] table_ab234_groupingtables[] = - {null, grouping_5bits, grouping_7bits, null, grouping_10bits, null, null, null, null, null, null, null, null, null, null, null}; - - // subbands 3-10 in tables 3-B.2a and 2b: - public static final int table_ab2_codelength[] = - {0, 5, 7, 3, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16}; - public static final float table_ab2_factor[] = - {0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 8.0f, 1.0f / 16.0f, - 1.0f / 32.0f, 1.0f / 64.0f, 1.0f / 128.0f, 1.0f / 256.0f, 1.0f / 512.0f, - 1.0f / 1024.0f, 1.0f / 2048.0f, 1.0f / 4096.0f, 1.0f / 32768.0f}; - public static final float table_ab2_c[] = - {0.0f, 1.33333333333f, 1.60000000000f, 1.14285714286f, 1.77777777777f, - 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, - 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, - 1.00001525902f}; - public static final float table_ab2_d[] = - {0.0f, 0.50000000000f, 0.50000000000f, 0.25000000000f, 0.50000000000f, - 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, - 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, - 0.00003051758f}; - - // subbands 11-22 in tables 3-B.2a and 2b: - public static final int table_ab3_codelength[] = {0, 5, 7, 3, 10, 4, 5, 16}; - public static final float table_ab3_factor[] = - {0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32768.0f}; - public static final float table_ab3_c[] = - {0.0f, 1.33333333333f, 1.60000000000f, 1.14285714286f, 1.77777777777f, - 1.06666666666f, 1.03225806452f, 1.00001525902f}; - public static final float table_ab3_d[] = - {0.0f, 0.50000000000f, 0.50000000000f, 0.25000000000f, 0.50000000000f, - 0.12500000000f, 0.06250000000f, 0.00003051758f}; - - // subbands 23-... in tables 3-B.2a and 2b: - public static final int table_ab4_codelength[] = {0, 5, 7, 16}; - public static final float table_ab4_factor[] = {0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 32768.0f}; - public static final float table_ab4_c[] = {0.0f, 1.33333333333f, 1.60000000000f, 1.00001525902f}; - public static final float table_ab4_d[] = {0.0f, 0.50000000000f, 0.50000000000f, 0.00003051758f}; - - // subbands in tables 3-B.2c and 2d: - public static final int table_cd_codelength[] = - {0, 5, 7, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; - public static final float table_cd_groupingtables[][] = - {null, grouping_5bits, grouping_7bits, grouping_10bits, null, null, null, null, null, null, null, null, null, null, null, null}; - public static final float table_cd_factor[] = - {0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32.0f, 1.0f / 64.0f, - 1.0f / 128.0f, 1.0f / 256.0f, 1.0f / 512.0f, 1.0f / 1024.0f, 1.0f / 2048.0f, 1.0f / 4096.0f, - 1.0f / 8192.0f, 1.0f / 16384.0f}; - public static final float table_cd_c[] = - {0.0f, 1.33333333333f, 1.60000000000f, 1.77777777777f, 1.06666666666f, - 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, - 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00006103888f, - 1.00003051851f}; - public static final float table_cd_d[] = - {0.0f, 0.50000000000f, 0.50000000000f, 0.50000000000f, 0.12500000000f, - 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, - 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00012207031f, - 0.00006103516f}; - - - protected int subbandnumber; - protected int allocation; - protected int scfsi; - protected float scalefactor1, scalefactor2, scalefactor3; - protected int[] codelength = {0}; - protected float groupingtable[][] = new float[2][]; - //protected float[][] groupingtable = {{0},{0}} ; - protected float[] factor = {0.0f}; - protected int groupnumber; - protected int samplenumber; - protected float[] samples = new float[3]; - protected float[] c = {0}; - protected float[] d = {0}; - - /** - * Constructor - */ - public SubbandLayer2(int subbandnumber) { - this.subbandnumber = subbandnumber; - groupnumber = samplenumber = 0; - } - - - /** - * - */ - protected int get_allocationlength(Header header) { - if (header.version() == Header.MPEG1) { - int channel_bitrate = header.bitrate_index(); - - // calculate bitrate per channel: - if (header.mode() != Header.SINGLE_CHANNEL) - if (channel_bitrate == 4) - channel_bitrate = 1; - else - channel_bitrate -= 4; - - if (channel_bitrate == 1 || channel_bitrate == 2) - // table 3-B.2c or 3-B.2d - if (subbandnumber <= 1) - return 4; - else - return 3; - else - // tables 3-B.2a or 3-B.2b - if (subbandnumber <= 10) - return 4; - else if (subbandnumber <= 22) - return 3; - else - return 2; - } else { // MPEG-2 LSF -- Jeff - - // table B.1 of ISO/IEC 13818-3 - if (subbandnumber <= 3) - return 4; - else if (subbandnumber <= 10) - return 3; - else - return 2; - } - } - - /** - * - */ - protected void prepare_sample_reading(Header header, int allocation, - //float[][] groupingtable, - int channel, - float[] factor, int[] codelength, - float[] c, float[] d) { - int channel_bitrate = header.bitrate_index(); - // calculate bitrate per channel: - if (header.mode() != Header.SINGLE_CHANNEL) - if (channel_bitrate == 4) - channel_bitrate = 1; - else - channel_bitrate -= 4; - - if (channel_bitrate == 1 || channel_bitrate == 2) { - // table 3-B.2c or 3-B.2d - groupingtable[channel] = table_cd_groupingtables[allocation]; - factor[0] = table_cd_factor[allocation]; - codelength[0] = table_cd_codelength[allocation]; - c[0] = table_cd_c[allocation]; - d[0] = table_cd_d[allocation]; - } else { - // tables 3-B.2a or 3-B.2b - if (subbandnumber <= 2) { - groupingtable[channel] = table_ab1_groupingtables[allocation]; - factor[0] = table_ab1_factor[allocation]; - codelength[0] = table_ab1_codelength[allocation]; - c[0] = table_ab1_c[allocation]; - d[0] = table_ab1_d[allocation]; - } else { - groupingtable[channel] = table_ab234_groupingtables[allocation]; - if (subbandnumber <= 10) { - factor[0] = table_ab2_factor[allocation]; - codelength[0] = table_ab2_codelength[allocation]; - c[0] = table_ab2_c[allocation]; - d[0] = table_ab2_d[allocation]; - } else if (subbandnumber <= 22) { - factor[0] = table_ab3_factor[allocation]; - codelength[0] = table_ab3_codelength[allocation]; - c[0] = table_ab3_c[allocation]; - d[0] = table_ab3_d[allocation]; - } else { - factor[0] = table_ab4_factor[allocation]; - codelength[0] = table_ab4_codelength[allocation]; - c[0] = table_ab4_c[allocation]; - d[0] = table_ab4_d[allocation]; - } - } - } - } - - - /** - * - */ - public void read_allocation(Bitstream stream, Header header, Crc16 crc) { - int length = get_allocationlength(header); - allocation = stream.get_bits(length); - if (crc != null) - crc.add_bits(allocation, length); - } - - /** - * - */ - public void read_scalefactor_selection(Bitstream stream, Crc16 crc) { - if (allocation != 0) { - scfsi = stream.get_bits(2); - if (crc != null) crc.add_bits(scfsi, 2); - } - } - - /** - * - */ - public void read_scalefactor(Bitstream stream, Header header) { - if (allocation != 0) { - switch (scfsi) { - case 0: - scalefactor1 = scalefactors[stream.get_bits(6)]; - scalefactor2 = scalefactors[stream.get_bits(6)]; - scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - case 1: - scalefactor1 = scalefactor2 = scalefactors[stream.get_bits(6)]; - scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - case 2: - scalefactor1 = scalefactor2 = scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - case 3: - scalefactor1 = scalefactors[stream.get_bits(6)]; - scalefactor2 = scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - } - prepare_sample_reading(header, allocation, 0, - factor, codelength, c, d); - } - } - - /** - * - */ - public boolean read_sampledata(Bitstream stream) { - if (allocation != 0) - if (groupingtable[0] != null) { - int samplecode = stream.get_bits(codelength[0]); - // create requantized samples: - samplecode += samplecode << 1; - float[] target = samples; - float[] source = groupingtable[0]; - /* - int tmp = 0; - int temp = 0; - target[tmp++] = source[samplecode + temp]; - temp++; - target[tmp++] = source[samplecode + temp]; - temp++; - target[tmp] = source[samplecode + temp]; - */ - //Bugfix: - int tmp = 0; - int temp = samplecode; - - if (temp > source.length - 3) temp = source.length - 3; - - target[tmp] = source[temp]; - temp++; - tmp++; - target[tmp] = source[temp]; - temp++; - tmp++; - target[tmp] = source[temp]; - - // memcpy (samples, groupingtable + samplecode, 3 * sizeof (real)); - } else { - samples[0] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); - samples[1] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); - samples[2] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); - } - - samplenumber = 0; - if (++groupnumber == 12) - return true; - else - return false; - } - - /** - * - */ - public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { - if ((allocation != 0) && (channels != OutputChannels.RIGHT_CHANNEL)) { - float sample = samples[samplenumber]; - - if (groupingtable[0] == null) - sample = (sample + d[0]) * c[0]; - if (groupnumber <= 4) - sample *= scalefactor1; - else if (groupnumber <= 8) - sample *= scalefactor2; - else - sample *= scalefactor3; - filter1.input_sample(sample, subbandnumber); - } - - if (++samplenumber == 3) - return true; - else - return false; - } - } - - ; - - /** - * Class for layer II subbands in joint stereo mode. - */ - static class SubbandLayer2IntensityStereo extends SubbandLayer2 { - protected int channel2_scfsi; - protected float channel2_scalefactor1, channel2_scalefactor2, channel2_scalefactor3; - - /** - * Constructor - */ - public SubbandLayer2IntensityStereo(int subbandnumber) { - super(subbandnumber); - } - - /** - * - */ - public void read_allocation(Bitstream stream, Header header, Crc16 crc) { - super.read_allocation(stream, header, crc); - } - - /** - * - */ - public void read_scalefactor_selection(Bitstream stream, Crc16 crc) { - if (allocation != 0) { - scfsi = stream.get_bits(2); - channel2_scfsi = stream.get_bits(2); - if (crc != null) { - crc.add_bits(scfsi, 2); - crc.add_bits(channel2_scfsi, 2); - } - } - } - - /** - * - */ - public void read_scalefactor(Bitstream stream, Header header) { - if (allocation != 0) { - super.read_scalefactor(stream, header); - switch (channel2_scfsi) { - case 0: - channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; - channel2_scalefactor2 = scalefactors[stream.get_bits(6)]; - channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - - case 1: - channel2_scalefactor1 = channel2_scalefactor2 = scalefactors[stream.get_bits(6)]; - channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - - case 2: - channel2_scalefactor1 = channel2_scalefactor2 = - channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - - case 3: - channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; - channel2_scalefactor2 = channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - } - } - - } - - /** - * - */ - public boolean read_sampledata(Bitstream stream) { - return super.read_sampledata(stream); - } - - /** - * - */ - public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { - if (allocation != 0) { - float sample = samples[samplenumber]; - - if (groupingtable[0] == null) - sample = (sample + d[0]) * c[0]; - if (channels == OutputChannels.BOTH_CHANNELS) { - float sample2 = sample; - if (groupnumber <= 4) { - sample *= scalefactor1; - sample2 *= channel2_scalefactor1; - } else if (groupnumber <= 8) { - sample *= scalefactor2; - sample2 *= channel2_scalefactor2; - } else { - sample *= scalefactor3; - sample2 *= channel2_scalefactor3; - } - filter1.input_sample(sample, subbandnumber); - filter2.input_sample(sample2, subbandnumber); - } else if (channels == OutputChannels.LEFT_CHANNEL) { - if (groupnumber <= 4) - sample *= scalefactor1; - else if (groupnumber <= 8) - sample *= scalefactor2; - else - sample *= scalefactor3; - filter1.input_sample(sample, subbandnumber); - } else { - if (groupnumber <= 4) - sample *= channel2_scalefactor1; - else if (groupnumber <= 8) - sample *= channel2_scalefactor2; - else - sample *= channel2_scalefactor3; - filter1.input_sample(sample, subbandnumber); - } - } - - if (++samplenumber == 3) - return true; - else - return false; - } - } - - ; - - /** - * Class for layer II subbands in stereo mode. - */ - static class SubbandLayer2Stereo extends SubbandLayer2 { - protected int channel2_allocation; - protected int channel2_scfsi; - protected float channel2_scalefactor1, channel2_scalefactor2, channel2_scalefactor3; - //protected boolean channel2_grouping; ???? Never used! - protected int[] channel2_codelength = {0}; - //protected float[][] channel2_groupingtable = {{0},{0}}; - protected float[] channel2_factor = {0}; - protected float[] channel2_samples; - protected float[] channel2_c = {0}; - protected float[] channel2_d = {0}; - - /** - * Constructor - */ - public SubbandLayer2Stereo(int subbandnumber) { - super(subbandnumber); - channel2_samples = new float[3]; - } - - /** - * - */ - public void read_allocation(Bitstream stream, Header header, Crc16 crc) { - int length = get_allocationlength(header); - allocation = stream.get_bits(length); - channel2_allocation = stream.get_bits(length); - if (crc != null) { - crc.add_bits(allocation, length); - crc.add_bits(channel2_allocation, length); - } - } - - /** - * - */ - public void read_scalefactor_selection(Bitstream stream, Crc16 crc) { - if (allocation != 0) { - scfsi = stream.get_bits(2); - if (crc != null) - crc.add_bits(scfsi, 2); - } - if (channel2_allocation != 0) { - channel2_scfsi = stream.get_bits(2); - if (crc != null) - crc.add_bits(channel2_scfsi, 2); - } - } - - /** - * - */ - public void read_scalefactor(Bitstream stream, Header header) { - super.read_scalefactor(stream, header); - if (channel2_allocation != 0) { - switch (channel2_scfsi) { - case 0: - channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; - channel2_scalefactor2 = scalefactors[stream.get_bits(6)]; - channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - - case 1: - channel2_scalefactor1 = channel2_scalefactor2 = - scalefactors[stream.get_bits(6)]; - channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - - case 2: - channel2_scalefactor1 = channel2_scalefactor2 = - channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; - break; - - case 3: - channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; - channel2_scalefactor2 = channel2_scalefactor3 = - scalefactors[stream.get_bits(6)]; - break; - } - prepare_sample_reading(header, channel2_allocation, 1, - channel2_factor, channel2_codelength, channel2_c, - channel2_d); - } - } - - /** - * - */ - public boolean read_sampledata(Bitstream stream) { - boolean returnvalue = super.read_sampledata(stream); - - if (channel2_allocation != 0) - if (groupingtable[1] != null) { - int samplecode = stream.get_bits(channel2_codelength[0]); - // create requantized samples: - samplecode += samplecode << 1; - /* - float[] target = channel2_samples; - float[] source = channel2_groupingtable[0]; - int tmp = 0; - int temp = 0; - target[tmp++] = source[samplecode + temp]; - temp++; - target[tmp++] = source[samplecode + temp]; - temp++; - target[tmp] = source[samplecode + temp]; - // memcpy (channel2_samples, channel2_groupingtable + samplecode, 3 * sizeof (real)); - */ - float[] target = channel2_samples; - float[] source = groupingtable[1]; - int tmp = 0; - int temp = samplecode; - target[tmp] = source[temp]; - temp++; - tmp++; - target[tmp] = source[temp]; - temp++; - tmp++; - target[tmp] = source[temp]; - - } else { - channel2_samples[0] = (float) ((stream.get_bits(channel2_codelength[0])) * - channel2_factor[0] - 1.0); - channel2_samples[1] = (float) ((stream.get_bits(channel2_codelength[0])) * - channel2_factor[0] - 1.0); - channel2_samples[2] = (float) ((stream.get_bits(channel2_codelength[0])) * - channel2_factor[0] - 1.0); - } - return returnvalue; - } - - /** - * - */ - public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { - boolean returnvalue = super.put_next_sample(channels, filter1, filter2); - if ((channel2_allocation != 0) && (channels != OutputChannels.LEFT_CHANNEL)) { - float sample = channel2_samples[samplenumber - 1]; - - if (groupingtable[1] == null) - sample = (sample + channel2_d[0]) * channel2_c[0]; - - if (groupnumber <= 4) - sample *= channel2_scalefactor1; - else if (groupnumber <= 8) - sample *= channel2_scalefactor2; - else - sample *= channel2_scalefactor3; - if (channels == OutputChannels.BOTH_CHANNELS) - filter2.input_sample(sample, subbandnumber); - else - filter1.input_sample(sample, subbandnumber); - } - return returnvalue; - } - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIIIDecoder.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIIIDecoder.java deleted file mode 100644 index 5295cc91e28f5873e81f58180b27d4b906444f5e..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/LayerIIIDecoder.java +++ /dev/null @@ -1,2420 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * - * 18/06/01 Michael Scheerer, Fixed bugs which causes - * negative indexes in method huffmann_decode and in method - * dequanisize_sample. - * - * 16/07/01 Michael Scheerer, Catched a bug in method - * huffmann_decode, which causes an outOfIndexException. - * Cause : Indexnumber of 24 at SfBandIndex, - * which has only a length of 22. I have simply and dirty - * fixed the index to <= 22, because I'm not really be able - * to fix the bug. The Indexnumber is taken from the MP3 - * file and the origin Ma-Player with the same code works - * well. - * - * 02/19/99 Java Conversion by E.B, javalayer@javazoom.net - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Class Implementing Layer 3 Decoder. - * - * @since 0.0 - */ -final class LayerIIIDecoder implements FrameDecoder { - final double d43 = (4.0 / 3.0); - - public int[] scalefac_buffer; - - // MDM: removed, as this wasn't being used. - //private float CheckSumOut1d = 0.0f; - private int CheckSumHuff = 0; - private int[] is_1d; - private float[][][] ro; - private float[][][] lr; - private float[] out_1d; - private float[][] prevblck; - private float[][] k; - private int[] nonzero; - private Bitstream stream; - private Header header; - private SynthesisFilter filter1, filter2; - private Obuffer buffer; - private int which_channels; - private BitReserve br; - private III_side_info_t si; - - private temporaire2[] III_scalefac_t; - private temporaire2[] scalefac; - // private III_scalefac_t scalefac; - - private int max_gr; - private int frame_start; - private int part2_start; - private int channels; - private int first_channel; - private int last_channel; - private int sfreq; - - - /** - * Constructor. - */ - // REVIEW: these constructor arguments should be moved to the - // decodeFrame() method, where possible, so that one - public LayerIIIDecoder(Bitstream stream0, Header header0, - SynthesisFilter filtera, SynthesisFilter filterb, - Obuffer buffer0, int which_ch0) { - huffcodetab.inithuff(); - is_1d = new int[SBLIMIT * SSLIMIT + 4]; - ro = new float[2][SBLIMIT][SSLIMIT]; - lr = new float[2][SBLIMIT][SSLIMIT]; - out_1d = new float[SBLIMIT * SSLIMIT]; - prevblck = new float[2][SBLIMIT * SSLIMIT]; - k = new float[2][SBLIMIT * SSLIMIT]; - nonzero = new int[2]; - - //III_scalefact_t - III_scalefac_t = new temporaire2[2]; - III_scalefac_t[0] = new temporaire2(); - III_scalefac_t[1] = new temporaire2(); - scalefac = III_scalefac_t; - // L3TABLE INIT - - sfBandIndex = new SBI[9]; // SZD: MPEG2.5 +3 indices - int[] l0 = {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576}; - int[] s0 = {0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192}; - int[] l1 = {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 330, 394, 464, 540, 576}; - int[] s1 = {0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192}; - int[] l2 = {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576}; - int[] s2 = {0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192}; - - int[] l3 = {0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418, 576}; - int[] s3 = {0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192}; - int[] l4 = {0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384, 576}; - int[] s4 = {0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192}; - int[] l5 = {0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550, 576}; - int[] s5 = {0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192}; - // SZD: MPEG2.5 - int[] l6 = {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576}; - int[] s6 = {0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192}; - int[] l7 = {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576}; - int[] s7 = {0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192}; - int[] l8 = {0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570, 572, 574, 576}; - int[] s8 = {0, 8, 16, 24, 36, 52, 72, 96, 124, 160, 162, 164, 166, 192}; - - sfBandIndex[0] = new SBI(l0, s0); - sfBandIndex[1] = new SBI(l1, s1); - sfBandIndex[2] = new SBI(l2, s2); - - sfBandIndex[3] = new SBI(l3, s3); - sfBandIndex[4] = new SBI(l4, s4); - sfBandIndex[5] = new SBI(l5, s5); - //SZD: MPEG2.5 - sfBandIndex[6] = new SBI(l6, s6); - sfBandIndex[7] = new SBI(l7, s7); - sfBandIndex[8] = new SBI(l8, s8); - // END OF L3TABLE INIT - - if (reorder_table == null) { // SZD: generate LUT - reorder_table = new int[9][]; - for (int i = 0; i < 9; i++) - reorder_table[i] = reorder(sfBandIndex[i].s); - } - - // Sftable - int[] ll0 = {0, 6, 11, 16, 21}; - int[] ss0 = {0, 6, 12}; - sftable = new Sftable(ll0, ss0); - // END OF Sftable - - // scalefac_buffer - scalefac_buffer = new int[54]; - // END OF scalefac_buffer - - stream = stream0; - header = header0; - filter1 = filtera; - filter2 = filterb; - buffer = buffer0; - which_channels = which_ch0; - - frame_start = 0; - channels = (header.mode() == Header.SINGLE_CHANNEL) ? 1 : 2; - max_gr = (header.version() == Header.MPEG1) ? 2 : 1; - - sfreq = header.sample_frequency() + - ((header.version() == Header.MPEG1) ? 3 : - (header.version() == Header.MPEG25_LSF) ? 6 : 0); // SZD - - if (channels == 2) { - switch (which_channels) { - case OutputChannels.LEFT_CHANNEL: - case OutputChannels.DOWNMIX_CHANNELS: - first_channel = last_channel = 0; - break; - - case OutputChannels.RIGHT_CHANNEL: - first_channel = last_channel = 1; - break; - - case OutputChannels.BOTH_CHANNELS: - default: - first_channel = 0; - last_channel = 1; - break; - } - } else { - first_channel = last_channel = 0; - } - - for (int ch = 0; ch < 2; ch++) - for (int j = 0; j < 576; j++) - prevblck[ch][j] = 0.0f; - - nonzero[0] = nonzero[1] = 576; - - br = new BitReserve(); - si = new III_side_info_t(); - } - - /** - * Notify decoder that a seek is being made. - */ - public void seek_notify() { - frame_start = 0; - for (int ch = 0; ch < 2; ch++) - for (int j = 0; j < 576; j++) - prevblck[ch][j] = 0.0f; - br = new BitReserve(); - } - - public void decodeFrame() { - decode(); - } - - /** - * Decode one frame, filling the buffer with the output samples. - */ - - // subband samples are buffered and passed to the - // SynthesisFilter in one go. - private float[] samples1 = new float[32]; - private float[] samples2 = new float[32]; - - public void decode() { - int nSlots = header.slots(); - int flush_main; - int gr, ch, ss, sb, sb18; - int main_data_end; - int bytes_to_discard; - int i; - - get_side_info(); - - for (i = 0; i < nSlots; i++) - br.hputbuf(stream.get_bits(8)); - - main_data_end = br.hsstell() >>> 3; // of previous frame - - if ((flush_main = (br.hsstell() & 7)) != 0) { - br.hgetbits(8 - flush_main); - main_data_end++; - } - - bytes_to_discard = frame_start - main_data_end - - si.main_data_begin; - - frame_start += nSlots; - - if (bytes_to_discard < 0) - return; - - if (main_data_end > 4096) { - frame_start -= 4096; - br.rewindNbytes(4096); - } - - for (; bytes_to_discard > 0; bytes_to_discard--) - br.hgetbits(8); - - for (gr = 0; gr < max_gr; gr++) { - - for (ch = 0; ch < channels; ch++) { - part2_start = br.hsstell(); - - if (header.version() == Header.MPEG1) - get_scale_factors(ch, gr); - else // MPEG-2 LSF, SZD: MPEG-2.5 LSF - get_LSF_scale_factors(ch, gr); - - huffman_decode(ch, gr); - // System.out.println("CheckSum HuffMan = " + CheckSumHuff); - dequantize_sample(ro[ch], ch, gr); - } - - stereo(gr); - - if ((which_channels == OutputChannels.DOWNMIX_CHANNELS) && (channels > 1)) - do_downmix(); - - for (ch = first_channel; ch <= last_channel; ch++) { - - reorder(lr[ch], ch, gr); - antialias(ch, gr); - //for (int hb = 0;hb<576;hb++) CheckSumOut1d = CheckSumOut1d + out_1d[hb]; - //System.out.println("CheckSumOut1d = "+CheckSumOut1d); - - hybrid(ch, gr); - - //for (int hb = 0;hb<576;hb++) CheckSumOut1d = CheckSumOut1d + out_1d[hb]; - //System.out.println("CheckSumOut1d = "+CheckSumOut1d); - - for (sb18 = 18; sb18 < 576; sb18 += 36) // Frequency inversion - for (ss = 1; ss < SSLIMIT; ss += 2) - out_1d[sb18 + ss] = -out_1d[sb18 + ss]; - - if ((ch == 0) || (which_channels == OutputChannels.RIGHT_CHANNEL)) { - for (ss = 0; ss < SSLIMIT; ss++) { // Polyphase synthesis - sb = 0; - for (sb18 = 0; sb18 < 576; sb18 += 18) { - samples1[sb] = out_1d[sb18 + ss]; - //filter1.input_sample(out_1d[sb18+ss], sb); - sb++; - } - filter1.input_samples(samples1); - filter1.calculate_pcm_samples(buffer); - } - } else { - for (ss = 0; ss < SSLIMIT; ss++) { // Polyphase synthesis - sb = 0; - for (sb18 = 0; sb18 < 576; sb18 += 18) { - samples2[sb] = out_1d[sb18 + ss]; - //filter2.input_sample(out_1d[sb18+ss], sb); - sb++; - } - filter2.input_samples(samples2); - filter2.calculate_pcm_samples(buffer); - } - - } - } // channels - } // granule - - - // System.out.println("Counter = ................................."+counter); - //if (counter < 609) - //{ - counter++; - buffer.write_buffer(1); - //} - //else if (counter == 609) - //{ - // buffer.close(); - // counter++; - //} - //else - //{ - //} - - } - - /** - * Reads the side info from the stream, assuming the entire. - * frame has been read already. - * Mono : 136 bits (= 17 bytes) - * Stereo : 256 bits (= 32 bytes) - */ - private boolean get_side_info() { - int ch, gr; - if (header.version() == Header.MPEG1) { - - si.main_data_begin = stream.get_bits(9); - if (channels == 1) - si.private_bits = stream.get_bits(5); - else si.private_bits = stream.get_bits(3); - - for (ch = 0; ch < channels; ch++) { - si.ch[ch].scfsi[0] = stream.get_bits(1); - si.ch[ch].scfsi[1] = stream.get_bits(1); - si.ch[ch].scfsi[2] = stream.get_bits(1); - si.ch[ch].scfsi[3] = stream.get_bits(1); - } - - for (gr = 0; gr < 2; gr++) { - for (ch = 0; ch < channels; ch++) { - si.ch[ch].gr[gr].part2_3_length = stream.get_bits(12); - si.ch[ch].gr[gr].big_values = stream.get_bits(9); - si.ch[ch].gr[gr].global_gain = stream.get_bits(8); - si.ch[ch].gr[gr].scalefac_compress = stream.get_bits(4); - si.ch[ch].gr[gr].window_switching_flag = stream.get_bits(1); - if ((si.ch[ch].gr[gr].window_switching_flag) != 0) { - si.ch[ch].gr[gr].block_type = stream.get_bits(2); - si.ch[ch].gr[gr].mixed_block_flag = stream.get_bits(1); - - si.ch[ch].gr[gr].table_select[0] = stream.get_bits(5); - si.ch[ch].gr[gr].table_select[1] = stream.get_bits(5); - - si.ch[ch].gr[gr].subblock_gain[0] = stream.get_bits(3); - si.ch[ch].gr[gr].subblock_gain[1] = stream.get_bits(3); - si.ch[ch].gr[gr].subblock_gain[2] = stream.get_bits(3); - - // Set region_count parameters since they are implicit in this case. - - if (si.ch[ch].gr[gr].block_type == 0) { - // Side info bad: block_type == 0 in split block - return false; - } else if (si.ch[ch].gr[gr].block_type == 2 - && si.ch[ch].gr[gr].mixed_block_flag == 0) { - si.ch[ch].gr[gr].region0_count = 8; - } else { - si.ch[ch].gr[gr].region0_count = 7; - } - si.ch[ch].gr[gr].region1_count = 20 - - si.ch[ch].gr[gr].region0_count; - } else { - si.ch[ch].gr[gr].table_select[0] = stream.get_bits(5); - si.ch[ch].gr[gr].table_select[1] = stream.get_bits(5); - si.ch[ch].gr[gr].table_select[2] = stream.get_bits(5); - si.ch[ch].gr[gr].region0_count = stream.get_bits(4); - si.ch[ch].gr[gr].region1_count = stream.get_bits(3); - si.ch[ch].gr[gr].block_type = 0; - } - si.ch[ch].gr[gr].preflag = stream.get_bits(1); - si.ch[ch].gr[gr].scalefac_scale = stream.get_bits(1); - si.ch[ch].gr[gr].count1table_select = stream.get_bits(1); - } - } - - } else { // MPEG-2 LSF, SZD: MPEG-2.5 LSF - - si.main_data_begin = stream.get_bits(8); - if (channels == 1) - si.private_bits = stream.get_bits(1); - else si.private_bits = stream.get_bits(2); - - for (ch = 0; ch < channels; ch++) { - - si.ch[ch].gr[0].part2_3_length = stream.get_bits(12); - si.ch[ch].gr[0].big_values = stream.get_bits(9); - si.ch[ch].gr[0].global_gain = stream.get_bits(8); - si.ch[ch].gr[0].scalefac_compress = stream.get_bits(9); - si.ch[ch].gr[0].window_switching_flag = stream.get_bits(1); - - if ((si.ch[ch].gr[0].window_switching_flag) != 0) { - - si.ch[ch].gr[0].block_type = stream.get_bits(2); - si.ch[ch].gr[0].mixed_block_flag = stream.get_bits(1); - si.ch[ch].gr[0].table_select[0] = stream.get_bits(5); - si.ch[ch].gr[0].table_select[1] = stream.get_bits(5); - - si.ch[ch].gr[0].subblock_gain[0] = stream.get_bits(3); - si.ch[ch].gr[0].subblock_gain[1] = stream.get_bits(3); - si.ch[ch].gr[0].subblock_gain[2] = stream.get_bits(3); - - // Set region_count parameters since they are implicit in this case. - - if (si.ch[ch].gr[0].block_type == 0) { - // Side info bad: block_type == 0 in split block - return false; - } else if (si.ch[ch].gr[0].block_type == 2 - && si.ch[ch].gr[0].mixed_block_flag == 0) { - si.ch[ch].gr[0].region0_count = 8; - } else { - si.ch[ch].gr[0].region0_count = 7; - si.ch[ch].gr[0].region1_count = 20 - - si.ch[ch].gr[0].region0_count; - } - - } else { - si.ch[ch].gr[0].table_select[0] = stream.get_bits(5); - si.ch[ch].gr[0].table_select[1] = stream.get_bits(5); - si.ch[ch].gr[0].table_select[2] = stream.get_bits(5); - si.ch[ch].gr[0].region0_count = stream.get_bits(4); - si.ch[ch].gr[0].region1_count = stream.get_bits(3); - si.ch[ch].gr[0].block_type = 0; - } - - si.ch[ch].gr[0].scalefac_scale = stream.get_bits(1); - si.ch[ch].gr[0].count1table_select = stream.get_bits(1); - } // for(ch=0; ch>> 4) / 5; - new_slen[1] = (scalefac_comp >>> 4) % 5; - new_slen[2] = (scalefac_comp & 0xF) >>> 2; - new_slen[3] = (scalefac_comp & 3); - si.ch[ch].gr[gr].preflag = 0; - blocknumber = 0; - - } else if (scalefac_comp < 500) { - - new_slen[0] = ((scalefac_comp - 400) >>> 2) / 5; - new_slen[1] = ((scalefac_comp - 400) >>> 2) % 5; - new_slen[2] = (scalefac_comp - 400) & 3; - new_slen[3] = 0; - si.ch[ch].gr[gr].preflag = 0; - blocknumber = 1; - - } else if (scalefac_comp < 512) { - - new_slen[0] = (scalefac_comp - 500) / 3; - new_slen[1] = (scalefac_comp - 500) % 3; - new_slen[2] = 0; - new_slen[3] = 0; - si.ch[ch].gr[gr].preflag = 1; - blocknumber = 2; - } - } - - if ((((mode_ext == 1) || (mode_ext == 3)) && (ch == 1))) { - int_scalefac_comp = scalefac_comp >>> 1; - - if (int_scalefac_comp < 180) { - new_slen[0] = int_scalefac_comp / 36; - new_slen[1] = (int_scalefac_comp % 36) / 6; - new_slen[2] = (int_scalefac_comp % 36) % 6; - new_slen[3] = 0; - si.ch[ch].gr[gr].preflag = 0; - blocknumber = 3; - } else if (int_scalefac_comp < 244) { - new_slen[0] = ((int_scalefac_comp - 180) & 0x3F) >>> 4; - new_slen[1] = ((int_scalefac_comp - 180) & 0xF) >>> 2; - new_slen[2] = (int_scalefac_comp - 180) & 3; - new_slen[3] = 0; - si.ch[ch].gr[gr].preflag = 0; - blocknumber = 4; - } else if (int_scalefac_comp < 255) { - new_slen[0] = (int_scalefac_comp - 244) / 3; - new_slen[1] = (int_scalefac_comp - 244) % 3; - new_slen[2] = 0; - new_slen[3] = 0; - si.ch[ch].gr[gr].preflag = 0; - blocknumber = 5; - } - } - - for (int x = 0; x < 45; x++) // why 45, not 54? - scalefac_buffer[x] = 0; - - m = 0; - for (int i = 0; i < 4; i++) { - for (int j = 0; j < nr_of_sfb_block[blocknumber][blocktypenumber][i]; - j++) { - scalefac_buffer[m] = (new_slen[i] == 0) ? 0 : - br.hgetbits(new_slen[i]); - m++; - - } // for (unint32 j ... - } // for (uint32 i ... - } - - /** - * - */ - private void get_LSF_scale_factors(int ch, int gr) { - int m = 0; - int sfb, window; - gr_info_s gr_info = (si.ch[ch].gr[gr]); - - get_LSF_scale_data(ch, gr); - - if ((gr_info.window_switching_flag != 0) && (gr_info.block_type == 2)) { - if (gr_info.mixed_block_flag != 0) { // MIXED - for (sfb = 0; sfb < 8; sfb++) { - scalefac[ch].l[sfb] = scalefac_buffer[m]; - m++; - } - for (sfb = 3; sfb < 12; sfb++) { - for (window = 0; window < 3; window++) { - scalefac[ch].s[window][sfb] = scalefac_buffer[m]; - m++; - } - } - for (window = 0; window < 3; window++) - scalefac[ch].s[window][12] = 0; - - } else { // SHORT - - for (sfb = 0; sfb < 12; sfb++) { - for (window = 0; window < 3; window++) { - scalefac[ch].s[window][sfb] = scalefac_buffer[m]; - m++; - } - } - - for (window = 0; window < 3; window++) - scalefac[ch].s[window][12] = 0; - } - } else { // LONG types 0,1,3 - - for (sfb = 0; sfb < 21; sfb++) { - scalefac[ch].l[sfb] = scalefac_buffer[m]; - m++; - } - scalefac[ch].l[21] = 0; // Jeff - scalefac[ch].l[22] = 0; - } - } - - /** - * - */ - int[] x = {0}; - int[] y = {0}; - int[] v = {0}; - int[] w = {0}; - - private void huffman_decode(int ch, int gr) { - x[0] = 0; - y[0] = 0; - v[0] = 0; - w[0] = 0; - - int part2_3_end = part2_start + si.ch[ch].gr[gr].part2_3_length; - int num_bits; - int region1Start; - int region2Start; - int index; - - int buf, buf1; - - huffcodetab h; - - // Find region boundary for short block case - - if (((si.ch[ch].gr[gr].window_switching_flag) != 0) && - (si.ch[ch].gr[gr].block_type == 2)) { - - // Region2. - //MS: Extrahandling for 8KHZ - region1Start = (sfreq == 8) ? 72 : 36; // sfb[9/3]*3=36 or in case 8KHZ = 72 - region2Start = 576; // No Region2 for short block case - - } else { // Find region boundary for long block case - - buf = si.ch[ch].gr[gr].region0_count + 1; - buf1 = buf + si.ch[ch].gr[gr].region1_count + 1; - - if (buf1 > sfBandIndex[sfreq].l.length - 1) buf1 = sfBandIndex[sfreq].l.length - 1; - - region1Start = sfBandIndex[sfreq].l[buf]; - region2Start = sfBandIndex[sfreq].l[buf1]; /* MI */ - } - - index = 0; - // Read bigvalues area - for (int i = 0; i < (si.ch[ch].gr[gr].big_values << 1); i += 2) { - if (i < region1Start) h = huffcodetab.ht[si.ch[ch].gr[gr].table_select[0]]; - else if (i < region2Start) h = huffcodetab.ht[si.ch[ch].gr[gr].table_select[1]]; - else h = huffcodetab.ht[si.ch[ch].gr[gr].table_select[2]]; - - huffcodetab.huffman_decoder(h, x, y, v, w, br); - //if (index >= is_1d.length) System.out.println("i0="+i+"/"+(si.ch[ch].gr[gr].big_values<<1)+" Index="+index+" is_1d="+is_1d.length); - - is_1d[index++] = x[0]; - is_1d[index++] = y[0]; - - CheckSumHuff = CheckSumHuff + x[0] + y[0]; - // System.out.println("x = "+x[0]+" y = "+y[0]); - } - - // Read count1 area - h = huffcodetab.ht[si.ch[ch].gr[gr].count1table_select + 32]; - num_bits = br.hsstell(); - - while ((num_bits < part2_3_end) && (index < 576)) { - - huffcodetab.huffman_decoder(h, x, y, v, w, br); - - is_1d[index++] = v[0]; - is_1d[index++] = w[0]; - is_1d[index++] = x[0]; - is_1d[index++] = y[0]; - CheckSumHuff = CheckSumHuff + v[0] + w[0] + x[0] + y[0]; - // System.out.println("v = "+v[0]+" w = "+w[0]); - // System.out.println("x = "+x[0]+" y = "+y[0]); - num_bits = br.hsstell(); - } - - if (num_bits > part2_3_end) { - br.rewindNbits(num_bits - part2_3_end); - index -= 4; - } - - num_bits = br.hsstell(); - - // Dismiss stuffing bits - if (num_bits < part2_3_end) - br.hgetbits(part2_3_end - num_bits); - - // Zero out rest - - if (index < 576) - nonzero[ch] = index; - else - nonzero[ch] = 576; - - if (index < 0) index = 0; - - // may not be necessary - for (; index < 576; index++) - is_1d[index] = 0; - } - - /** - * - */ - private void i_stereo_k_values(int is_pos, int io_type, int i) { - if (is_pos == 0) { - k[0][i] = 1.0f; - k[1][i] = 1.0f; - } else if ((is_pos & 1) != 0) { - k[0][i] = io[io_type][(is_pos + 1) >>> 1]; - k[1][i] = 1.0f; - } else { - k[0][i] = 1.0f; - k[1][i] = io[io_type][is_pos >>> 1]; - } - } - - /** - * - */ - private void dequantize_sample(float xr[][], int ch, int gr) { - gr_info_s gr_info = (si.ch[ch].gr[gr]); - int cb = 0; - int next_cb_boundary; - int cb_begin = 0; - int cb_width = 0; - int index = 0, t_index, j; - float g_gain; - float[][] xr_1d = xr; - - // choose correct scalefactor band per block type, initalize boundary - - if ((gr_info.window_switching_flag != 0) && (gr_info.block_type == 2)) { - if (gr_info.mixed_block_flag != 0) - next_cb_boundary = sfBandIndex[sfreq].l[1]; // LONG blocks: 0,1,3 - else { - cb_width = sfBandIndex[sfreq].s[1]; - next_cb_boundary = (cb_width << 2) - cb_width; - cb_begin = 0; - } - } else { - next_cb_boundary = sfBandIndex[sfreq].l[1]; // LONG blocks: 0,1,3 - } - - // Compute overall (global) scaling. - - g_gain = (float) Math.pow(2.0, (0.25 * (gr_info.global_gain - 210.0))); - - for (j = 0; j < nonzero[ch]; j++) { - // Modif E.B 02/22/99 - int reste = j % SSLIMIT; - int quotien = (int) ((j - reste) / SSLIMIT); - if (is_1d[j] == 0) xr_1d[quotien][reste] = 0.0f; - else { - int abv = is_1d[j]; - // Pow Array fix (11/17/04) - if (abv < t_43.length) { - if (is_1d[j] > 0) xr_1d[quotien][reste] = g_gain * t_43[abv]; - else { - if (-abv < t_43.length) xr_1d[quotien][reste] = -g_gain * t_43[-abv]; - else xr_1d[quotien][reste] = -g_gain * (float) Math.pow(-abv, d43); - } - } else { - if (is_1d[j] > 0) xr_1d[quotien][reste] = g_gain * (float) Math.pow(abv, d43); - else xr_1d[quotien][reste] = -g_gain * (float) Math.pow(-abv, d43); - } - } - } - - // apply formula per block type - for (j = 0; j < nonzero[ch]; j++) { - // Modif E.B 02/22/99 - int reste = j % SSLIMIT; - int quotien = (int) ((j - reste) / SSLIMIT); - - if (index == next_cb_boundary) { /* Adjust critical band boundary */ - if ((gr_info.window_switching_flag != 0) && (gr_info.block_type == 2)) { - if (gr_info.mixed_block_flag != 0) { - - if (index == sfBandIndex[sfreq].l[8]) { - next_cb_boundary = sfBandIndex[sfreq].s[4]; - next_cb_boundary = (next_cb_boundary << 2) - - next_cb_boundary; - cb = 3; - cb_width = sfBandIndex[sfreq].s[4] - - sfBandIndex[sfreq].s[3]; - - cb_begin = sfBandIndex[sfreq].s[3]; - cb_begin = (cb_begin << 2) - cb_begin; - - } else if (index < sfBandIndex[sfreq].l[8]) { - - next_cb_boundary = sfBandIndex[sfreq].l[(++cb) + 1]; - - } else { - - next_cb_boundary = sfBandIndex[sfreq].s[(++cb) + 1]; - next_cb_boundary = (next_cb_boundary << 2) - - next_cb_boundary; - - cb_begin = sfBandIndex[sfreq].s[cb]; - cb_width = sfBandIndex[sfreq].s[cb + 1] - - cb_begin; - cb_begin = (cb_begin << 2) - cb_begin; - } - - } else { - - next_cb_boundary = sfBandIndex[sfreq].s[(++cb) + 1]; - next_cb_boundary = (next_cb_boundary << 2) - - next_cb_boundary; - - cb_begin = sfBandIndex[sfreq].s[cb]; - cb_width = sfBandIndex[sfreq].s[cb + 1] - - cb_begin; - cb_begin = (cb_begin << 2) - cb_begin; - } - - } else { // long blocks - - next_cb_boundary = sfBandIndex[sfreq].l[(++cb) + 1]; - - } - } - - // Do long/short dependent scaling operations - - if ((gr_info.window_switching_flag != 0) && - (((gr_info.block_type == 2) && (gr_info.mixed_block_flag == 0)) || - ((gr_info.block_type == 2) && (gr_info.mixed_block_flag != 0) && (j >= 36)))) { - - t_index = (index - cb_begin) / cb_width; - /* xr[sb][ss] *= pow(2.0, ((-2.0 * gr_info.subblock_gain[t_index]) - -(0.5 * (1.0 + gr_info.scalefac_scale) - * scalefac[ch].s[t_index][cb]))); */ - int idx = scalefac[ch].s[t_index][cb] - << gr_info.scalefac_scale; - idx += (gr_info.subblock_gain[t_index] << 2); - - xr_1d[quotien][reste] *= two_to_negative_half_pow[idx]; - - } else { // LONG block types 0,1,3 & 1st 2 subbands of switched blocks - /* xr[sb][ss] *= pow(2.0, -0.5 * (1.0+gr_info.scalefac_scale) - * (scalefac[ch].l[cb] - + gr_info.preflag * pretab[cb])); */ - int idx = scalefac[ch].l[cb]; - - if (gr_info.preflag != 0) - idx += pretab[cb]; - - idx = idx << gr_info.scalefac_scale; - xr_1d[quotien][reste] *= two_to_negative_half_pow[idx]; - } - index++; - } - - for (j = nonzero[ch]; j < 576; j++) { - // Modif E.B 02/22/99 - int reste = j % SSLIMIT; - int quotien = (int) ((j - reste) / SSLIMIT); - if (reste < 0) reste = 0; - if (quotien < 0) quotien = 0; - xr_1d[quotien][reste] = 0.0f; - } - - return; - } - - /** - * - */ - private void reorder(float xr[][], int ch, int gr) { - gr_info_s gr_info = (si.ch[ch].gr[gr]); - int freq, freq3; - int index; - int sfb, sfb_start, sfb_lines; - int src_line, des_line; - float[][] xr_1d = xr; - - if ((gr_info.window_switching_flag != 0) && (gr_info.block_type == 2)) { - - for (index = 0; index < 576; index++) - out_1d[index] = 0.0f; - - if (gr_info.mixed_block_flag != 0) { - // NO REORDER FOR LOW 2 SUBBANDS - for (index = 0; index < 36; index++) { - // Modif E.B 02/22/99 - int reste = index % SSLIMIT; - int quotien = (int) ((index - reste) / SSLIMIT); - out_1d[index] = xr_1d[quotien][reste]; - } - // REORDERING FOR REST SWITCHED SHORT - /*for( sfb=3,sfb_start=sfBandIndex[sfreq].s[3], - sfb_lines=sfBandIndex[sfreq].s[4] - sfb_start; - sfb < 13; sfb++,sfb_start = sfBandIndex[sfreq].s[sfb], - sfb_lines = sfBandIndex[sfreq].s[sfb+1] - sfb_start ) - {*/ - for (sfb = 3; sfb < 13; sfb++) { - //System.out.println("sfreq="+sfreq+" sfb="+sfb+" sfBandIndex="+sfBandIndex.length+" sfBandIndex[sfreq].s="+sfBandIndex[sfreq].s.length); - sfb_start = sfBandIndex[sfreq].s[sfb]; - sfb_lines = sfBandIndex[sfreq].s[sfb + 1] - sfb_start; - - int sfb_start3 = (sfb_start << 2) - sfb_start; - - for (freq = 0, freq3 = 0; freq < sfb_lines; - freq++, freq3 += 3) { - - src_line = sfb_start3 + freq; - des_line = sfb_start3 + freq3; - // Modif E.B 02/22/99 - int reste = src_line % SSLIMIT; - int quotien = (int) ((src_line - reste) / SSLIMIT); - - out_1d[des_line] = xr_1d[quotien][reste]; - src_line += sfb_lines; - des_line++; - - reste = src_line % SSLIMIT; - quotien = (int) ((src_line - reste) / SSLIMIT); - - out_1d[des_line] = xr_1d[quotien][reste]; - src_line += sfb_lines; - des_line++; - - reste = src_line % SSLIMIT; - quotien = (int) ((src_line - reste) / SSLIMIT); - - out_1d[des_line] = xr_1d[quotien][reste]; - } - } - - } else { // pure short - for (index = 0; index < 576; index++) { - int j = reorder_table[sfreq][index]; - int reste = j % SSLIMIT; - int quotien = (int) ((j - reste) / SSLIMIT); - out_1d[index] = xr_1d[quotien][reste]; - } - } - } else { // long blocks - for (index = 0; index < 576; index++) { - // Modif E.B 02/22/99 - int reste = index % SSLIMIT; - int quotien = (int) ((index - reste) / SSLIMIT); - out_1d[index] = xr_1d[quotien][reste]; - } - } - } - - /** - * - */ - - int[] is_pos = new int[576]; - float[] is_ratio = new float[576]; - - private void stereo(int gr) { - int sb, ss; - - if (channels == 1) { // mono , bypass xr[0][][] to lr[0][][] - - for (sb = 0; sb < SBLIMIT; sb++) - for (ss = 0; ss < SSLIMIT; ss += 3) { - lr[0][sb][ss] = ro[0][sb][ss]; - lr[0][sb][ss + 1] = ro[0][sb][ss + 1]; - lr[0][sb][ss + 2] = ro[0][sb][ss + 2]; - } - - } else { - - gr_info_s gr_info = (si.ch[0].gr[gr]); - int mode_ext = header.mode_extension(); - int sfb; - int i; - int lines, temp, temp2; - - boolean ms_stereo = ((header.mode() == Header.JOINT_STEREO) && ((mode_ext & 0x2) != 0)); - boolean i_stereo = ((header.mode() == Header.JOINT_STEREO) && ((mode_ext & 0x1) != 0)); - boolean lsf = ((header.version() == Header.MPEG2_LSF || header.version() == Header.MPEG25_LSF)); // SZD - - int io_type = (gr_info.scalefac_compress & 1); - - // initialization - - for (i = 0; i < 576; i++) { - is_pos[i] = 7; - - is_ratio[i] = 0.0f; - } - - if (i_stereo) { - if ((gr_info.window_switching_flag != 0) && (gr_info.block_type == 2)) { - if (gr_info.mixed_block_flag != 0) { - - int max_sfb = 0; - - for (int j = 0; j < 3; j++) { - int sfbcnt; - sfbcnt = 2; - for (sfb = 12; sfb >= 3; sfb--) { - i = sfBandIndex[sfreq].s[sfb]; - lines = sfBandIndex[sfreq].s[sfb + 1] - i; - i = (i << 2) - i + (j + 1) * lines - 1; - - while (lines > 0) { - if (ro[1][i / 18][i % 18] != 0.0f) { - // MDM: in java, array access is very slow. - // Is quicker to compute div and mod values. - //if (ro[1][ss_div[i]][ss_mod[i]] != 0.0f) { - sfbcnt = sfb; - sfb = -10; - lines = -10; - } - - lines--; - i--; - - } // while (lines > 0) - - } // for (sfb=12 ... - sfb = sfbcnt + 1; - - if (sfb > max_sfb) - max_sfb = sfb; - - while (sfb < 12) { - temp = sfBandIndex[sfreq].s[sfb]; - sb = sfBandIndex[sfreq].s[sfb + 1] - temp; - i = (temp << 2) - temp + j * sb; - - for (; sb > 0; sb--) { - is_pos[i] = scalefac[1].s[j][sfb]; - if (is_pos[i] != 7) - if (lsf) - i_stereo_k_values(is_pos[i], io_type, i); - else - is_ratio[i] = TAN12[is_pos[i]]; - - i++; - } // for (; sb>0... - sfb++; - } // while (sfb < 12) - sfb = sfBandIndex[sfreq].s[10]; - sb = sfBandIndex[sfreq].s[11] - sfb; - sfb = (sfb << 2) - sfb + j * sb; - temp = sfBandIndex[sfreq].s[11]; - sb = sfBandIndex[sfreq].s[12] - temp; - i = (temp << 2) - temp + j * sb; - - for (; sb > 0; sb--) { - is_pos[i] = is_pos[sfb]; - - if (lsf) { - k[0][i] = k[0][sfb]; - k[1][i] = k[1][sfb]; - } else { - is_ratio[i] = is_ratio[sfb]; - } - i++; - } // for (; sb > 0 ... - } - if (max_sfb <= 3) { - i = 2; - ss = 17; - sb = -1; - while (i >= 0) { - if (ro[1][i][ss] != 0.0f) { - sb = (i << 4) + (i << 1) + ss; - i = -1; - } else { - ss--; - if (ss < 0) { - i--; - ss = 17; - } - } // if (ro ... - } // while (i>=0) - i = 0; - while (sfBandIndex[sfreq].l[i] <= sb) - i++; - sfb = i; - i = sfBandIndex[sfreq].l[i]; - for (; sfb < 8; sfb++) { - sb = sfBandIndex[sfreq].l[sfb + 1] - sfBandIndex[sfreq].l[sfb]; - for (; sb > 0; sb--) { - is_pos[i] = scalefac[1].l[sfb]; - if (is_pos[i] != 7) - if (lsf) - i_stereo_k_values(is_pos[i], io_type, i); - else - is_ratio[i] = TAN12[is_pos[i]]; - i++; - } // for (; sb>0 ... - } // for (; sfb<8 ... - } // for (j=0 ... - } else { // if (gr_info.mixed_block_flag) - for (int j = 0; j < 3; j++) { - int sfbcnt; - sfbcnt = -1; - for (sfb = 12; sfb >= 0; sfb--) { - temp = sfBandIndex[sfreq].s[sfb]; - lines = sfBandIndex[sfreq].s[sfb + 1] - temp; - i = (temp << 2) - temp + (j + 1) * lines - 1; - - while (lines > 0) { - if (ro[1][i / 18][i % 18] != 0.0f) { - // MDM: in java, array access is very slow. - // Is quicker to compute div and mod values. - //if (ro[1][ss_div[i]][ss_mod[i]] != 0.0f) { - sfbcnt = sfb; - sfb = -10; - lines = -10; - } - lines--; - i--; - } // while (lines > 0) */ - - } // for (sfb=12 ... - sfb = sfbcnt + 1; - while (sfb < 12) { - temp = sfBandIndex[sfreq].s[sfb]; - sb = sfBandIndex[sfreq].s[sfb + 1] - temp; - i = (temp << 2) - temp + j * sb; - for (; sb > 0; sb--) { - is_pos[i] = scalefac[1].s[j][sfb]; - if (is_pos[i] != 7) - if (lsf) - i_stereo_k_values(is_pos[i], io_type, i); - else - is_ratio[i] = TAN12[is_pos[i]]; - i++; - } // for (; sb>0 ... - sfb++; - } // while (sfb<12) - - temp = sfBandIndex[sfreq].s[10]; - temp2 = sfBandIndex[sfreq].s[11]; - sb = temp2 - temp; - sfb = (temp << 2) - temp + j * sb; - sb = sfBandIndex[sfreq].s[12] - temp2; - i = (temp2 << 2) - temp2 + j * sb; - - for (; sb > 0; sb--) { - is_pos[i] = is_pos[sfb]; - - if (lsf) { - k[0][i] = k[0][sfb]; - k[1][i] = k[1][sfb]; - } else { - is_ratio[i] = is_ratio[sfb]; - } - i++; - } // for (; sb>0 ... - } // for (sfb=12 - } // for (j=0 ... - } else { // if (gr_info.window_switching_flag ... - i = 31; - ss = 17; - sb = 0; - while (i >= 0) { - if (ro[1][i][ss] != 0.0f) { - sb = (i << 4) + (i << 1) + ss; - i = -1; - } else { - ss--; - if (ss < 0) { - i--; - ss = 17; - } - } - } - i = 0; - while (sfBandIndex[sfreq].l[i] <= sb) - i++; - - sfb = i; - i = sfBandIndex[sfreq].l[i]; - for (; sfb < 21; sfb++) { - sb = sfBandIndex[sfreq].l[sfb + 1] - sfBandIndex[sfreq].l[sfb]; - for (; sb > 0; sb--) { - is_pos[i] = scalefac[1].l[sfb]; - if (is_pos[i] != 7) - if (lsf) - i_stereo_k_values(is_pos[i], io_type, i); - else - is_ratio[i] = TAN12[is_pos[i]]; - i++; - } - } - sfb = sfBandIndex[sfreq].l[20]; - for (sb = 576 - sfBandIndex[sfreq].l[21]; (sb > 0) && (i < 576); sb--) { - is_pos[i] = is_pos[sfb]; // error here : i >=576 - - if (lsf) { - k[0][i] = k[0][sfb]; - k[1][i] = k[1][sfb]; - } else { - is_ratio[i] = is_ratio[sfb]; - } - i++; - } // if (gr_info.mixed_block_flag) - } // if (gr_info.window_switching_flag ... - } // if (i_stereo) - - i = 0; - for (sb = 0; sb < SBLIMIT; sb++) - for (ss = 0; ss < SSLIMIT; ss++) { - if (is_pos[i] == 7) { - if (ms_stereo) { - lr[0][sb][ss] = (ro[0][sb][ss] + ro[1][sb][ss]) * 0.707106781f; - lr[1][sb][ss] = (ro[0][sb][ss] - ro[1][sb][ss]) * 0.707106781f; - } else { - lr[0][sb][ss] = ro[0][sb][ss]; - lr[1][sb][ss] = ro[1][sb][ss]; - } - } else if (i_stereo) { - - if (lsf) { - lr[0][sb][ss] = ro[0][sb][ss] * k[0][i]; - lr[1][sb][ss] = ro[0][sb][ss] * k[1][i]; - } else { - lr[1][sb][ss] = ro[0][sb][ss] / (float) (1 + is_ratio[i]); - lr[0][sb][ss] = lr[1][sb][ss] * is_ratio[i]; - } - } - /* else { - System.out.println("Error in stereo processing\n"); - } */ - i++; - } - - } // channels == 2 - - } - - /** - * - */ - private void antialias(int ch, int gr) { - int sb18, ss, sb18lim; - gr_info_s gr_info = (si.ch[ch].gr[gr]); - // 31 alias-reduction operations between each pair of sub-bands - // with 8 butterflies between each pair - - if ((gr_info.window_switching_flag != 0) && (gr_info.block_type == 2) && - !(gr_info.mixed_block_flag != 0)) - return; - - if ((gr_info.window_switching_flag != 0) && (gr_info.mixed_block_flag != 0) && - (gr_info.block_type == 2)) { - sb18lim = 18; - } else { - sb18lim = 558; - } - - for (sb18 = 0; sb18 < sb18lim; sb18 += 18) { - for (ss = 0; ss < 8; ss++) { - int src_idx1 = sb18 + 17 - ss; - int src_idx2 = sb18 + 18 + ss; - float bu = out_1d[src_idx1]; - float bd = out_1d[src_idx2]; - out_1d[src_idx1] = (bu * cs[ss]) - (bd * ca[ss]); - out_1d[src_idx2] = (bd * cs[ss]) + (bu * ca[ss]); - } - } - } - - /** - * - */ - - // MDM: tsOutCopy and rawout do not need initializing, so the arrays - // can be reused. - float[] tsOutCopy = new float[18]; - float[] rawout = new float[36]; - - private void hybrid(int ch, int gr) { - int bt; - int sb18; - gr_info_s gr_info = (si.ch[ch].gr[gr]); - float[] tsOut; - - float[][] prvblk; - - for (sb18 = 0; sb18 < 576; sb18 += 18) { - bt = ((gr_info.window_switching_flag != 0) && (gr_info.mixed_block_flag != 0) && - (sb18 < 36)) ? 0 : gr_info.block_type; - - tsOut = out_1d; - // Modif E.B 02/22/99 - for (int cc = 0; cc < 18; cc++) - tsOutCopy[cc] = tsOut[cc + sb18]; - - inv_mdct(tsOutCopy, rawout, bt); - - - for (int cc = 0; cc < 18; cc++) - tsOut[cc + sb18] = tsOutCopy[cc]; - // Fin Modif - - // overlap addition - prvblk = prevblck; - - tsOut[0 + sb18] = rawout[0] + prvblk[ch][sb18 + 0]; - prvblk[ch][sb18 + 0] = rawout[18]; - tsOut[1 + sb18] = rawout[1] + prvblk[ch][sb18 + 1]; - prvblk[ch][sb18 + 1] = rawout[19]; - tsOut[2 + sb18] = rawout[2] + prvblk[ch][sb18 + 2]; - prvblk[ch][sb18 + 2] = rawout[20]; - tsOut[3 + sb18] = rawout[3] + prvblk[ch][sb18 + 3]; - prvblk[ch][sb18 + 3] = rawout[21]; - tsOut[4 + sb18] = rawout[4] + prvblk[ch][sb18 + 4]; - prvblk[ch][sb18 + 4] = rawout[22]; - tsOut[5 + sb18] = rawout[5] + prvblk[ch][sb18 + 5]; - prvblk[ch][sb18 + 5] = rawout[23]; - tsOut[6 + sb18] = rawout[6] + prvblk[ch][sb18 + 6]; - prvblk[ch][sb18 + 6] = rawout[24]; - tsOut[7 + sb18] = rawout[7] + prvblk[ch][sb18 + 7]; - prvblk[ch][sb18 + 7] = rawout[25]; - tsOut[8 + sb18] = rawout[8] + prvblk[ch][sb18 + 8]; - prvblk[ch][sb18 + 8] = rawout[26]; - tsOut[9 + sb18] = rawout[9] + prvblk[ch][sb18 + 9]; - prvblk[ch][sb18 + 9] = rawout[27]; - tsOut[10 + sb18] = rawout[10] + prvblk[ch][sb18 + 10]; - prvblk[ch][sb18 + 10] = rawout[28]; - tsOut[11 + sb18] = rawout[11] + prvblk[ch][sb18 + 11]; - prvblk[ch][sb18 + 11] = rawout[29]; - tsOut[12 + sb18] = rawout[12] + prvblk[ch][sb18 + 12]; - prvblk[ch][sb18 + 12] = rawout[30]; - tsOut[13 + sb18] = rawout[13] + prvblk[ch][sb18 + 13]; - prvblk[ch][sb18 + 13] = rawout[31]; - tsOut[14 + sb18] = rawout[14] + prvblk[ch][sb18 + 14]; - prvblk[ch][sb18 + 14] = rawout[32]; - tsOut[15 + sb18] = rawout[15] + prvblk[ch][sb18 + 15]; - prvblk[ch][sb18 + 15] = rawout[33]; - tsOut[16 + sb18] = rawout[16] + prvblk[ch][sb18 + 16]; - prvblk[ch][sb18 + 16] = rawout[34]; - tsOut[17 + sb18] = rawout[17] + prvblk[ch][sb18 + 17]; - prvblk[ch][sb18 + 17] = rawout[35]; - } - } - - /** - * - */ - private void do_downmix() { - for (int sb = 0; sb < SSLIMIT; sb++) { - for (int ss = 0; ss < SSLIMIT; ss += 3) { - lr[0][sb][ss] = (lr[0][sb][ss] + lr[1][sb][ss]) * 0.5f; - lr[0][sb][ss + 1] = (lr[0][sb][ss + 1] + lr[1][sb][ss + 1]) * 0.5f; - lr[0][sb][ss + 2] = (lr[0][sb][ss + 2] + lr[1][sb][ss + 2]) * 0.5f; - } - } - } - - /** - * Fast INV_MDCT. - */ - - public void inv_mdct(float[] in, float[] out, int block_type) { - float[] win_bt; - int i; - - float tmpf_0, tmpf_1, tmpf_2, tmpf_3, tmpf_4, tmpf_5, tmpf_6, tmpf_7, tmpf_8, tmpf_9; - float tmpf_10, tmpf_11, tmpf_12, tmpf_13, tmpf_14, tmpf_15, tmpf_16, tmpf_17; - - tmpf_0 = tmpf_1 = tmpf_2 = tmpf_3 = tmpf_4 = tmpf_5 = tmpf_6 = tmpf_7 = tmpf_8 = tmpf_9 = - tmpf_10 = tmpf_11 = tmpf_12 = tmpf_13 = tmpf_14 = tmpf_15 = tmpf_16 = tmpf_17 = 0.0f; - - - if (block_type == 2) { - - /* - * - * Under MicrosoftVM 2922, This causes a GPF, or - * At best, an ArrayIndexOutOfBoundsExceptin. - for(int p=0;p<36;p+=9) - { - out[p] = out[p+1] = out[p+2] = out[p+3] = - out[p+4] = out[p+5] = out[p+6] = out[p+7] = - out[p+8] = 0.0f; - } - */ - out[0] = 0.0f; - out[1] = 0.0f; - out[2] = 0.0f; - out[3] = 0.0f; - out[4] = 0.0f; - out[5] = 0.0f; - out[6] = 0.0f; - out[7] = 0.0f; - out[8] = 0.0f; - out[9] = 0.0f; - out[10] = 0.0f; - out[11] = 0.0f; - out[12] = 0.0f; - out[13] = 0.0f; - out[14] = 0.0f; - out[15] = 0.0f; - out[16] = 0.0f; - out[17] = 0.0f; - out[18] = 0.0f; - out[19] = 0.0f; - out[20] = 0.0f; - out[21] = 0.0f; - out[22] = 0.0f; - out[23] = 0.0f; - out[24] = 0.0f; - out[25] = 0.0f; - out[26] = 0.0f; - out[27] = 0.0f; - out[28] = 0.0f; - out[29] = 0.0f; - out[30] = 0.0f; - out[31] = 0.0f; - out[32] = 0.0f; - out[33] = 0.0f; - out[34] = 0.0f; - out[35] = 0.0f; - - int six_i = 0; - - for (i = 0; i < 3; i++) { - // 12 point IMDCT - // Begin 12 point IDCT - // Input aliasing for 12 pt IDCT - in[15 + i] += in[12 + i]; - in[12 + i] += in[9 + i]; - in[9 + i] += in[6 + i]; - in[6 + i] += in[3 + i]; - in[3 + i] += in[0 + i]; - - // Input aliasing on odd indices (for 6 point IDCT) - in[15 + i] += in[9 + i]; - in[9 + i] += in[3 + i]; - - // 3 point IDCT on even indices - float pp1, pp2, sum; - pp2 = in[12 + i] * 0.500000000f; - pp1 = in[6 + i] * 0.866025403f; - sum = in[0 + i] + pp2; - tmpf_1 = in[0 + i] - in[12 + i]; - tmpf_0 = sum + pp1; - tmpf_2 = sum - pp1; - - // End 3 point IDCT on even indices - // 3 point IDCT on odd indices (for 6 point IDCT) - pp2 = in[15 + i] * 0.500000000f; - pp1 = in[9 + i] * 0.866025403f; - sum = in[3 + i] + pp2; - tmpf_4 = in[3 + i] - in[15 + i]; - tmpf_5 = sum + pp1; - tmpf_3 = sum - pp1; - // End 3 point IDCT on odd indices - // Twiddle factors on odd indices (for 6 point IDCT) - - tmpf_3 *= 1.931851653f; - tmpf_4 *= 0.707106781f; - tmpf_5 *= 0.517638090f; - - // Output butterflies on 2 3 point IDCT's (for 6 point IDCT) - float save = tmpf_0; - tmpf_0 += tmpf_5; - tmpf_5 = save - tmpf_5; - save = tmpf_1; - tmpf_1 += tmpf_4; - tmpf_4 = save - tmpf_4; - save = tmpf_2; - tmpf_2 += tmpf_3; - tmpf_3 = save - tmpf_3; - - // End 6 point IDCT - // Twiddle factors on indices (for 12 point IDCT) - - tmpf_0 *= 0.504314480f; - tmpf_1 *= 0.541196100f; - tmpf_2 *= 0.630236207f; - tmpf_3 *= 0.821339815f; - tmpf_4 *= 1.306562965f; - tmpf_5 *= 3.830648788f; - - // End 12 point IDCT - - // Shift to 12 point modified IDCT, multiply by window type 2 - tmpf_8 = -tmpf_0 * 0.793353340f; - tmpf_9 = -tmpf_0 * 0.608761429f; - tmpf_7 = -tmpf_1 * 0.923879532f; - tmpf_10 = -tmpf_1 * 0.382683432f; - tmpf_6 = -tmpf_2 * 0.991444861f; - tmpf_11 = -tmpf_2 * 0.130526192f; - - tmpf_0 = tmpf_3; - tmpf_1 = tmpf_4 * 0.382683432f; - tmpf_2 = tmpf_5 * 0.608761429f; - - tmpf_3 = -tmpf_5 * 0.793353340f; - tmpf_4 = -tmpf_4 * 0.923879532f; - tmpf_5 = -tmpf_0 * 0.991444861f; - - tmpf_0 *= 0.130526192f; - - out[six_i + 6] += tmpf_0; - out[six_i + 7] += tmpf_1; - out[six_i + 8] += tmpf_2; - out[six_i + 9] += tmpf_3; - out[six_i + 10] += tmpf_4; - out[six_i + 11] += tmpf_5; - out[six_i + 12] += tmpf_6; - out[six_i + 13] += tmpf_7; - out[six_i + 14] += tmpf_8; - out[six_i + 15] += tmpf_9; - out[six_i + 16] += tmpf_10; - out[six_i + 17] += tmpf_11; - - six_i += 6; - } - } else { - // 36 point IDCT - // input aliasing for 36 point IDCT - in[17] += in[16]; - in[16] += in[15]; - in[15] += in[14]; - in[14] += in[13]; - in[13] += in[12]; - in[12] += in[11]; - in[11] += in[10]; - in[10] += in[9]; - in[9] += in[8]; - in[8] += in[7]; - in[7] += in[6]; - in[6] += in[5]; - in[5] += in[4]; - in[4] += in[3]; - in[3] += in[2]; - in[2] += in[1]; - in[1] += in[0]; - - // 18 point IDCT for odd indices - // input aliasing for 18 point IDCT - in[17] += in[15]; - in[15] += in[13]; - in[13] += in[11]; - in[11] += in[9]; - in[9] += in[7]; - in[7] += in[5]; - in[5] += in[3]; - in[3] += in[1]; - - float tmp0, tmp1, tmp2, tmp3, tmp4, tmp0_, tmp1_, tmp2_, tmp3_; - float tmp0o, tmp1o, tmp2o, tmp3o, tmp4o, tmp0_o, tmp1_o, tmp2_o, tmp3_o; - - // Fast 9 Point Inverse Discrete Cosine Transform - // - // By Francois-Raymond Boyer - // mailto:boyerf@iro.umontreal.ca - // http://www.iro.umontreal.ca/~boyerf - // - // The code has been optimized for Intel processors - // (takes a lot of time to convert float to and from iternal FPU representation) - // - // It is a simple "factorization" of the IDCT matrix. - - // 9 point IDCT on even indices - - // 5 points on odd indices (not realy an IDCT) - float i00 = in[0] + in[0]; - float iip12 = i00 + in[12]; - - tmp0 = iip12 + in[4] * 1.8793852415718f + in[8] * 1.532088886238f + in[16] * 0.34729635533386f; - tmp1 = i00 + in[4] - in[8] - in[12] - in[12] - in[16]; - tmp2 = iip12 - in[4] * 0.34729635533386f - in[8] * 1.8793852415718f + in[16] * 1.532088886238f; - tmp3 = iip12 - in[4] * 1.532088886238f + in[8] * 0.34729635533386f - in[16] * 1.8793852415718f; - tmp4 = in[0] - in[4] + in[8] - in[12] + in[16]; - - // 4 points on even indices - float i66_ = in[6] * 1.732050808f; // Sqrt[3] - - tmp0_ = in[2] * 1.9696155060244f + i66_ + in[10] * 1.2855752193731f + in[14] * 0.68404028665134f; - tmp1_ = (in[2] - in[10] - in[14]) * 1.732050808f; - tmp2_ = in[2] * 1.2855752193731f - i66_ - in[10] * 0.68404028665134f + in[14] * 1.9696155060244f; - tmp3_ = in[2] * 0.68404028665134f - i66_ + in[10] * 1.9696155060244f - in[14] * 1.2855752193731f; - - // 9 point IDCT on odd indices - // 5 points on odd indices (not realy an IDCT) - float i0 = in[0 + 1] + in[0 + 1]; - float i0p12 = i0 + in[12 + 1]; - - tmp0o = i0p12 + in[4 + 1] * 1.8793852415718f + in[8 + 1] * 1.532088886238f + in[16 + 1] * 0.34729635533386f; - tmp1o = i0 + in[4 + 1] - in[8 + 1] - in[12 + 1] - in[12 + 1] - in[16 + 1]; - tmp2o = i0p12 - in[4 + 1] * 0.34729635533386f - in[8 + 1] * 1.8793852415718f + in[16 + 1] * 1.532088886238f; - tmp3o = i0p12 - in[4 + 1] * 1.532088886238f + in[8 + 1] * 0.34729635533386f - in[16 + 1] * 1.8793852415718f; - tmp4o = (in[0 + 1] - in[4 + 1] + in[8 + 1] - in[12 + 1] + in[16 + 1]) * 0.707106781f; // Twiddled - - // 4 points on even indices - float i6_ = in[6 + 1] * 1.732050808f; // Sqrt[3] - - tmp0_o = in[2 + 1] * 1.9696155060244f + i6_ + in[10 + 1] * 1.2855752193731f + in[14 + 1] * 0.68404028665134f; - tmp1_o = (in[2 + 1] - in[10 + 1] - in[14 + 1]) * 1.732050808f; - tmp2_o = in[2 + 1] * 1.2855752193731f - i6_ - in[10 + 1] * 0.68404028665134f + in[14 + 1] * 1.9696155060244f; - tmp3_o = in[2 + 1] * 0.68404028665134f - i6_ + in[10 + 1] * 1.9696155060244f - in[14 + 1] * 1.2855752193731f; - - // Twiddle factors on odd indices - // and - // Butterflies on 9 point IDCT's - // and - // twiddle factors for 36 point IDCT - - float e, o; - e = tmp0 + tmp0_; - o = (tmp0o + tmp0_o) * 0.501909918f; - tmpf_0 = e + o; - tmpf_17 = e - o; - e = tmp1 + tmp1_; - o = (tmp1o + tmp1_o) * 0.517638090f; - tmpf_1 = e + o; - tmpf_16 = e - o; - e = tmp2 + tmp2_; - o = (tmp2o + tmp2_o) * 0.551688959f; - tmpf_2 = e + o; - tmpf_15 = e - o; - e = tmp3 + tmp3_; - o = (tmp3o + tmp3_o) * 0.610387294f; - tmpf_3 = e + o; - tmpf_14 = e - o; - tmpf_4 = tmp4 + tmp4o; - tmpf_13 = tmp4 - tmp4o; - e = tmp3 - tmp3_; - o = (tmp3o - tmp3_o) * 0.871723397f; - tmpf_5 = e + o; - tmpf_12 = e - o; - e = tmp2 - tmp2_; - o = (tmp2o - tmp2_o) * 1.183100792f; - tmpf_6 = e + o; - tmpf_11 = e - o; - e = tmp1 - tmp1_; - o = (tmp1o - tmp1_o) * 1.931851653f; - tmpf_7 = e + o; - tmpf_10 = e - o; - e = tmp0 - tmp0_; - o = (tmp0o - tmp0_o) * 5.736856623f; - tmpf_8 = e + o; - tmpf_9 = e - o; - - // end 36 point IDCT */ - // shift to modified IDCT - win_bt = win[block_type]; - - out[0] = -tmpf_9 * win_bt[0]; - out[1] = -tmpf_10 * win_bt[1]; - out[2] = -tmpf_11 * win_bt[2]; - out[3] = -tmpf_12 * win_bt[3]; - out[4] = -tmpf_13 * win_bt[4]; - out[5] = -tmpf_14 * win_bt[5]; - out[6] = -tmpf_15 * win_bt[6]; - out[7] = -tmpf_16 * win_bt[7]; - out[8] = -tmpf_17 * win_bt[8]; - out[9] = tmpf_17 * win_bt[9]; - out[10] = tmpf_16 * win_bt[10]; - out[11] = tmpf_15 * win_bt[11]; - out[12] = tmpf_14 * win_bt[12]; - out[13] = tmpf_13 * win_bt[13]; - out[14] = tmpf_12 * win_bt[14]; - out[15] = tmpf_11 * win_bt[15]; - out[16] = tmpf_10 * win_bt[16]; - out[17] = tmpf_9 * win_bt[17]; - out[18] = tmpf_8 * win_bt[18]; - out[19] = tmpf_7 * win_bt[19]; - out[20] = tmpf_6 * win_bt[20]; - out[21] = tmpf_5 * win_bt[21]; - out[22] = tmpf_4 * win_bt[22]; - out[23] = tmpf_3 * win_bt[23]; - out[24] = tmpf_2 * win_bt[24]; - out[25] = tmpf_1 * win_bt[25]; - out[26] = tmpf_0 * win_bt[26]; - out[27] = tmpf_0 * win_bt[27]; - out[28] = tmpf_1 * win_bt[28]; - out[29] = tmpf_2 * win_bt[29]; - out[30] = tmpf_3 * win_bt[30]; - out[31] = tmpf_4 * win_bt[31]; - out[32] = tmpf_5 * win_bt[32]; - out[33] = tmpf_6 * win_bt[33]; - out[34] = tmpf_7 * win_bt[34]; - out[35] = tmpf_8 * win_bt[35]; - } - } - - private int counter = 0; - private static final int SSLIMIT = 18; - private static final int SBLIMIT = 32; - // Size of the table of whole numbers raised to 4/3 power. - // This may be adjusted for performance without any problems. - //public static final int POW_TABLE_LIMIT=512; - - /************************************************************/ - /* L3TABLE */ - - /************************************************************/ - - static class SBI { - public int[] l; - public int[] s; - - public SBI() { - l = new int[23]; - s = new int[14]; - } - - public SBI(int[] thel, int[] thes) { - l = thel; - s = thes; - } - } - - static class gr_info_s { - public int part2_3_length = 0; - public int big_values = 0; - public int global_gain = 0; - public int scalefac_compress = 0; - public int window_switching_flag = 0; - public int block_type = 0; - public int mixed_block_flag = 0; - public int[] table_select; - public int[] subblock_gain; - public int region0_count = 0; - public int region1_count = 0; - public int preflag = 0; - public int scalefac_scale = 0; - public int count1table_select = 0; - - /** - * Dummy Constructor - */ - public gr_info_s() { - table_select = new int[3]; - subblock_gain = new int[3]; - } - } - - static class temporaire { - public int[] scfsi; - public gr_info_s[] gr; - - /** - * Dummy Constructor - */ - public temporaire() { - scfsi = new int[4]; - gr = new gr_info_s[2]; - gr[0] = new gr_info_s(); - gr[1] = new gr_info_s(); - } - } - - static class III_side_info_t { - - public int main_data_begin = 0; - public int private_bits = 0; - public temporaire[] ch; - - /** - * Dummy Constructor - */ - public III_side_info_t() { - ch = new temporaire[2]; - ch[0] = new temporaire(); - ch[1] = new temporaire(); - } - } - - static class temporaire2 { - public int[] l; /* [cb] */ - public int[][] s; /* [window][cb] */ - - /** - * Dummy Constructor - */ - public temporaire2() { - l = new int[23]; - s = new int[3][13]; - } - } - //class III_scalefac_t - //{ - // public temporaire2[] tab; - // /** - // * Dummy Constructor - // */ - // public III_scalefac_t() - // { - // tab = new temporaire2[2]; - // } - //} - - private static final int slen[][] = - { - {0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4}, - {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3} - }; - - public static final int pretab[] = - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0}; - - private SBI[] sfBandIndex; // Init in the constructor. - - public static final float two_to_negative_half_pow[] = - {1.0000000000E+00f, 7.0710678119E-01f, 5.0000000000E-01f, 3.5355339059E-01f, - 2.5000000000E-01f, 1.7677669530E-01f, 1.2500000000E-01f, 8.8388347648E-02f, - 6.2500000000E-02f, 4.4194173824E-02f, 3.1250000000E-02f, 2.2097086912E-02f, - 1.5625000000E-02f, 1.1048543456E-02f, 7.8125000000E-03f, 5.5242717280E-03f, - 3.9062500000E-03f, 2.7621358640E-03f, 1.9531250000E-03f, 1.3810679320E-03f, - 9.7656250000E-04f, 6.9053396600E-04f, 4.8828125000E-04f, 3.4526698300E-04f, - 2.4414062500E-04f, 1.7263349150E-04f, 1.2207031250E-04f, 8.6316745750E-05f, - 6.1035156250E-05f, 4.3158372875E-05f, 3.0517578125E-05f, 2.1579186438E-05f, - 1.5258789062E-05f, 1.0789593219E-05f, 7.6293945312E-06f, 5.3947966094E-06f, - 3.8146972656E-06f, 2.6973983047E-06f, 1.9073486328E-06f, 1.3486991523E-06f, - 9.5367431641E-07f, 6.7434957617E-07f, 4.7683715820E-07f, 3.3717478809E-07f, - 2.3841857910E-07f, 1.6858739404E-07f, 1.1920928955E-07f, 8.4293697022E-08f, - 5.9604644775E-08f, 4.2146848511E-08f, 2.9802322388E-08f, 2.1073424255E-08f, - 1.4901161194E-08f, 1.0536712128E-08f, 7.4505805969E-09f, 5.2683560639E-09f, - 3.7252902985E-09f, 2.6341780319E-09f, 1.8626451492E-09f, 1.3170890160E-09f, - 9.3132257462E-10f, 6.5854450798E-10f, 4.6566128731E-10f, 3.2927225399E-10f - }; - - - public static final float t_43[] = create_t_43(); - - static private float[] create_t_43() { - float[] t43 = new float[8192]; - final double d43 = (4.0 / 3.0); - - for (int i = 0; i < 8192; i++) { - t43[i] = (float) Math.pow(i, d43); - } - return t43; - } - - public static final float io[][] = - { - {1.0000000000E+00f, 8.4089641526E-01f, 7.0710678119E-01f, 5.9460355751E-01f, - 5.0000000001E-01f, 4.2044820763E-01f, 3.5355339060E-01f, 2.9730177876E-01f, - 2.5000000001E-01f, 2.1022410382E-01f, 1.7677669530E-01f, 1.4865088938E-01f, - 1.2500000000E-01f, 1.0511205191E-01f, 8.8388347652E-02f, 7.4325444691E-02f, - 6.2500000003E-02f, 5.2556025956E-02f, 4.4194173826E-02f, 3.7162722346E-02f, - 3.1250000002E-02f, 2.6278012978E-02f, 2.2097086913E-02f, 1.8581361173E-02f, - 1.5625000001E-02f, 1.3139006489E-02f, 1.1048543457E-02f, 9.2906805866E-03f, - 7.8125000006E-03f, 6.5695032447E-03f, 5.5242717285E-03f, 4.6453402934E-03f}, - {1.0000000000E+00f, 7.0710678119E-01f, 5.0000000000E-01f, 3.5355339060E-01f, - 2.5000000000E-01f, 1.7677669530E-01f, 1.2500000000E-01f, 8.8388347650E-02f, - 6.2500000001E-02f, 4.4194173825E-02f, 3.1250000001E-02f, 2.2097086913E-02f, - 1.5625000000E-02f, 1.1048543456E-02f, 7.8125000002E-03f, 5.5242717282E-03f, - 3.9062500001E-03f, 2.7621358641E-03f, 1.9531250001E-03f, 1.3810679321E-03f, - 9.7656250004E-04f, 6.9053396603E-04f, 4.8828125002E-04f, 3.4526698302E-04f, - 2.4414062501E-04f, 1.7263349151E-04f, 1.2207031251E-04f, 8.6316745755E-05f, - 6.1035156254E-05f, 4.3158372878E-05f, 3.0517578127E-05f, 2.1579186439E-05f} - }; - - - public static final float TAN12[] = - { - 0.0f, 0.26794919f, 0.57735027f, 1.0f, - 1.73205081f, 3.73205081f, 9.9999999e10f, -3.73205081f, - -1.73205081f, -1.0f, -0.57735027f, -0.26794919f, - 0.0f, 0.26794919f, 0.57735027f, 1.0f - }; - - // REVIEW: in java, the array lookup may well be slower than - // the actual calculation - // 576 / 18 -/* - private static final int ss_div[] = - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 - }; - - // 576 % 18 - private static final int ss_mod[] = - { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 - }; -*/ - private static /*final*/ int reorder_table[][]/* = loadReorderTable()*/; // SZD: will be generated on demand - - /** - * Loads the data for the reorder - */ - /*private static int[][] loadReorderTable() // SZD: table will be generated - { - try - { - Class elemType = int[][].class.getComponentType(); - Object o = JavaLayerUtils.deserializeArrayResource("l3reorder.ser", elemType, 6); - return (int[][])o; - } - catch (IOException ex) - { - throw new ExceptionInInitializerError(ex); - } - }*/ - static int[] reorder(int scalefac_band[]) { // SZD: converted from LAME - int j = 0; - int ix[] = new int[576]; - for (int sfb = 0; sfb < 13; sfb++) { - int start = scalefac_band[sfb]; - int end = scalefac_band[sfb + 1]; - for (int window = 0; window < 3; window++) - for (int i = start; i < end; i++) - ix[3 * i + window] = j++; - } - return ix; - } - - /*static final int reorder_table_data[][]; = - { - { 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11, 12, 16, 20, 13, - 17, 21, 14, 18, 22, 15, 19, 23, 24, 28, 32, 25, 29, 33, 26, 30, - 34, 27, 31, 35, 36, 42, 48, 37, 43, 49, 38, 44, 50, 39, 45, 51, - 40, 46, 52, 41, 47, 53, 54, 60, 66, 55, 61, 67, 56, 62, 68, 57, - 63, 69, 58, 64, 70, 59, 65, 71, 72, 80, 88, 73, 81, 89, 74, 82, - 90, 75, 83, 91, 76, 84, 92, 77, 85, 93, 78, 86, 94, 79, 87, 95, - 96,106,116, 97,107,117, 98,108,118, 99,109,119,100,110,120,101, - 111,121,102,112,122,103,113,123,104,114,124,105,115,125,126,140, - 154,127,141,155,128,142,156,129,143,157,130,144,158,131,145,159, - 132,146,160,133,147,161,134,148,162,135,149,163,136,150,164,137, - 151,165,138,152,166,139,153,167,168,186,204,169,187,205,170,188, - 206,171,189,207,172,190,208,173,191,209,174,192,210,175,193,211, - 176,194,212,177,195,213,178,196,214,179,197,215,180,198,216,181, - 199,217,182,200,218,183,201,219,184,202,220,185,203,221,222,248, - 274,223,249,275,224,250,276,225,251,277,226,252,278,227,253,279, - 228,254,280,229,255,281,230,256,282,231,257,283,232,258,284,233, - 259,285,234,260,286,235,261,287,236,262,288,237,263,289,238,264, - 290,239,265,291,240,266,292,241,267,293,242,268,294,243,269,295, - 244,270,296,245,271,297,246,272,298,247,273,299,300,332,364,301, - 333,365,302,334,366,303,335,367,304,336,368,305,337,369,306,338, - 370,307,339,371,308,340,372,309,341,373,310,342,374,311,343,375, - 312,344,376,313,345,377,314,346,378,315,347,379,316,348,380,317, - 349,381,318,350,382,319,351,383,320,352,384,321,353,385,322,354, - 386,323,355,387,324,356,388,325,357,389,326,358,390,327,359,391, - 328,360,392,329,361,393,330,362,394,331,363,395,396,438,480,397, - 439,481,398,440,482,399,441,483,400,442,484,401,443,485,402,444, - 486,403,445,487,404,446,488,405,447,489,406,448,490,407,449,491, - 408,450,492,409,451,493,410,452,494,411,453,495,412,454,496,413, - 455,497,414,456,498,415,457,499,416,458,500,417,459,501,418,460, - 502,419,461,503,420,462,504,421,463,505,422,464,506,423,465,507, - 424,466,508,425,467,509,426,468,510,427,469,511,428,470,512,429, - 471,513,430,472,514,431,473,515,432,474,516,433,475,517,434,476, - 518,435,477,519,436,478,520,437,479,521,522,540,558,523,541,559, - 524,542,560,525,543,561,526,544,562,527,545,563,528,546,564,529, - 547,565,530,548,566,531,549,567,532,550,568,533,551,569,534,552, - 570,535,553,571,536,554,572,537,555,573,538,556,574,539,557,575}, - { 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11, 12, 16, 20, 13, - 17, 21, 14, 18, 22, 15, 19, 23, 24, 28, 32, 25, 29, 33, 26, 30, - 34, 27, 31, 35, 36, 42, 48, 37, 43, 49, 38, 44, 50, 39, 45, 51, - 40, 46, 52, 41, 47, 53, 54, 62, 70, 55, 63, 71, 56, 64, 72, 57, - 65, 73, 58, 66, 74, 59, 67, 75, 60, 68, 76, 61, 69, 77, 78, 88, - 98, 79, 89, 99, 80, 90,100, 81, 91,101, 82, 92,102, 83, 93,103, - 84, 94,104, 85, 95,105, 86, 96,106, 87, 97,107,108,120,132,109, - 121,133,110,122,134,111,123,135,112,124,136,113,125,137,114,126, - 138,115,127,139,116,128,140,117,129,141,118,130,142,119,131,143, - 144,158,172,145,159,173,146,160,174,147,161,175,148,162,176,149, - 163,177,150,164,178,151,165,179,152,166,180,153,167,181,154,168, - 182,155,169,183,156,170,184,157,171,185,186,204,222,187,205,223, - 188,206,224,189,207,225,190,208,226,191,209,227,192,210,228,193, - 211,229,194,212,230,195,213,231,196,214,232,197,215,233,198,216, - 234,199,217,235,200,218,236,201,219,237,202,220,238,203,221,239, - 240,264,288,241,265,289,242,266,290,243,267,291,244,268,292,245, - 269,293,246,270,294,247,271,295,248,272,296,249,273,297,250,274, - 298,251,275,299,252,276,300,253,277,301,254,278,302,255,279,303, - 256,280,304,257,281,305,258,282,306,259,283,307,260,284,308,261, - 285,309,262,286,310,263,287,311,312,344,376,313,345,377,314,346, - 378,315,347,379,316,348,380,317,349,381,318,350,382,319,351,383, - 320,352,384,321,353,385,322,354,386,323,355,387,324,356,388,325, - 357,389,326,358,390,327,359,391,328,360,392,329,361,393,330,362, - 394,331,363,395,332,364,396,333,365,397,334,366,398,335,367,399, - 336,368,400,337,369,401,338,370,402,339,371,403,340,372,404,341, - 373,405,342,374,406,343,375,407,408,452,496,409,453,497,410,454, - 498,411,455,499,412,456,500,413,457,501,414,458,502,415,459,503, - 416,460,504,417,461,505,418,462,506,419,463,507,420,464,508,421, - 465,509,422,466,510,423,467,511,424,468,512,425,469,513,426,470, - 514,427,471,515,428,472,516,429,473,517,430,474,518,431,475,519, - 432,476,520,433,477,521,434,478,522,435,479,523,436,480,524,437, - 481,525,438,482,526,439,483,527,440,484,528,441,485,529,442,486, - 530,443,487,531,444,488,532,445,489,533,446,490,534,447,491,535, - 448,492,536,449,493,537,450,494,538,451,495,539,540,552,564,541, - 553,565,542,554,566,543,555,567,544,556,568,545,557,569,546,558, - 570,547,559,571,548,560,572,549,561,573,550,562,574,551,563,575}, - { 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11, 12, 16, 20, 13, - 17, 21, 14, 18, 22, 15, 19, 23, 24, 28, 32, 25, 29, 33, 26, 30, - 34, 27, 31, 35, 36, 42, 48, 37, 43, 49, 38, 44, 50, 39, 45, 51, - 40, 46, 52, 41, 47, 53, 54, 62, 70, 55, 63, 71, 56, 64, 72, 57, - 65, 73, 58, 66, 74, 59, 67, 75, 60, 68, 76, 61, 69, 77, 78, 88, - 98, 79, 89, 99, 80, 90,100, 81, 91,101, 82, 92,102, 83, 93,103, - 84, 94,104, 85, 95,105, 86, 96,106, 87, 97,107,108,120,132,109, - 121,133,110,122,134,111,123,135,112,124,136,113,125,137,114,126, - 138,115,127,139,116,128,140,117,129,141,118,130,142,119,131,143, - 144,158,172,145,159,173,146,160,174,147,161,175,148,162,176,149, - 163,177,150,164,178,151,165,179,152,166,180,153,167,181,154,168, - 182,155,169,183,156,170,184,157,171,185,186,204,222,187,205,223, - 188,206,224,189,207,225,190,208,226,191,209,227,192,210,228,193, - 211,229,194,212,230,195,213,231,196,214,232,197,215,233,198,216, - 234,199,217,235,200,218,236,201,219,237,202,220,238,203,221,239, - 240,264,288,241,265,289,242,266,290,243,267,291,244,268,292,245, - 269,293,246,270,294,247,271,295,248,272,296,249,273,297,250,274, - 298,251,275,299,252,276,300,253,277,301,254,278,302,255,279,303, - 256,280,304,257,281,305,258,282,306,259,283,307,260,284,308,261, - 285,309,262,286,310,263,287,311,312,342,372,313,343,373,314,344, - 374,315,345,375,316,346,376,317,347,377,318,348,378,319,349,379, - 320,350,380,321,351,381,322,352,382,323,353,383,324,354,384,325, - 355,385,326,356,386,327,357,387,328,358,388,329,359,389,330,360, - 390,331,361,391,332,362,392,333,363,393,334,364,394,335,365,395, - 336,366,396,337,367,397,338,368,398,339,369,399,340,370,400,341, - 371,401,402,442,482,403,443,483,404,444,484,405,445,485,406,446, - 486,407,447,487,408,448,488,409,449,489,410,450,490,411,451,491, - 412,452,492,413,453,493,414,454,494,415,455,495,416,456,496,417, - 457,497,418,458,498,419,459,499,420,460,500,421,461,501,422,462, - 502,423,463,503,424,464,504,425,465,505,426,466,506,427,467,507, - 428,468,508,429,469,509,430,470,510,431,471,511,432,472,512,433, - 473,513,434,474,514,435,475,515,436,476,516,437,477,517,438,478, - 518,439,479,519,440,480,520,441,481,521,522,540,558,523,541,559, - 524,542,560,525,543,561,526,544,562,527,545,563,528,546,564,529, - 547,565,530,548,566,531,549,567,532,550,568,533,551,569,534,552, - 570,535,553,571,536,554,572,537,555,573,538,556,574,539,557,575}, - { 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11, 12, 16, 20, 13, - 17, 21, 14, 18, 22, 15, 19, 23, 24, 28, 32, 25, 29, 33, 26, 30, - 34, 27, 31, 35, 36, 40, 44, 37, 41, 45, 38, 42, 46, 39, 43, 47, - 48, 54, 60, 49, 55, 61, 50, 56, 62, 51, 57, 63, 52, 58, 64, 53, - 59, 65, 66, 74, 82, 67, 75, 83, 68, 76, 84, 69, 77, 85, 70, 78, - 86, 71, 79, 87, 72, 80, 88, 73, 81, 89, 90,100,110, 91,101,111, - 92,102,112, 93,103,113, 94,104,114, 95,105,115, 96,106,116, 97, - 107,117, 98,108,118, 99,109,119,120,132,144,121,133,145,122,134, - 146,123,135,147,124,136,148,125,137,149,126,138,150,127,139,151, - 128,140,152,129,141,153,130,142,154,131,143,155,156,170,184,157, - 171,185,158,172,186,159,173,187,160,174,188,161,175,189,162,176, - 190,163,177,191,164,178,192,165,179,193,166,180,194,167,181,195, - 168,182,196,169,183,197,198,216,234,199,217,235,200,218,236,201, - 219,237,202,220,238,203,221,239,204,222,240,205,223,241,206,224, - 242,207,225,243,208,226,244,209,227,245,210,228,246,211,229,247, - 212,230,248,213,231,249,214,232,250,215,233,251,252,274,296,253, - 275,297,254,276,298,255,277,299,256,278,300,257,279,301,258,280, - 302,259,281,303,260,282,304,261,283,305,262,284,306,263,285,307, - 264,286,308,265,287,309,266,288,310,267,289,311,268,290,312,269, - 291,313,270,292,314,271,293,315,272,294,316,273,295,317,318,348, - 378,319,349,379,320,350,380,321,351,381,322,352,382,323,353,383, - 324,354,384,325,355,385,326,356,386,327,357,387,328,358,388,329, - 359,389,330,360,390,331,361,391,332,362,392,333,363,393,334,364, - 394,335,365,395,336,366,396,337,367,397,338,368,398,339,369,399, - 340,370,400,341,371,401,342,372,402,343,373,403,344,374,404,345, - 375,405,346,376,406,347,377,407,408,464,520,409,465,521,410,466, - 522,411,467,523,412,468,524,413,469,525,414,470,526,415,471,527, - 416,472,528,417,473,529,418,474,530,419,475,531,420,476,532,421, - 477,533,422,478,534,423,479,535,424,480,536,425,481,537,426,482, - 538,427,483,539,428,484,540,429,485,541,430,486,542,431,487,543, - 432,488,544,433,489,545,434,490,546,435,491,547,436,492,548,437, - 493,549,438,494,550,439,495,551,440,496,552,441,497,553,442,498, - 554,443,499,555,444,500,556,445,501,557,446,502,558,447,503,559, - 448,504,560,449,505,561,450,506,562,451,507,563,452,508,564,453, - 509,565,454,510,566,455,511,567,456,512,568,457,513,569,458,514, - 570,459,515,571,460,516,572,461,517,573,462,518,574,463,519,575}, - { 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11, 12, 16, 20, 13, - 17, 21, 14, 18, 22, 15, 19, 23, 24, 28, 32, 25, 29, 33, 26, 30, - 34, 27, 31, 35, 36, 40, 44, 37, 41, 45, 38, 42, 46, 39, 43, 47, - 48, 54, 60, 49, 55, 61, 50, 56, 62, 51, 57, 63, 52, 58, 64, 53, - 59, 65, 66, 72, 78, 67, 73, 79, 68, 74, 80, 69, 75, 81, 70, 76, - 82, 71, 77, 83, 84, 94,104, 85, 95,105, 86, 96,106, 87, 97,107, - 88, 98,108, 89, 99,109, 90,100,110, 91,101,111, 92,102,112, 93, - 103,113,114,126,138,115,127,139,116,128,140,117,129,141,118,130, - 142,119,131,143,120,132,144,121,133,145,122,134,146,123,135,147, - 124,136,148,125,137,149,150,164,178,151,165,179,152,166,180,153, - 167,181,154,168,182,155,169,183,156,170,184,157,171,185,158,172, - 186,159,173,187,160,174,188,161,175,189,162,176,190,163,177,191, - 192,208,224,193,209,225,194,210,226,195,211,227,196,212,228,197, - 213,229,198,214,230,199,215,231,200,216,232,201,217,233,202,218, - 234,203,219,235,204,220,236,205,221,237,206,222,238,207,223,239, - 240,260,280,241,261,281,242,262,282,243,263,283,244,264,284,245, - 265,285,246,266,286,247,267,287,248,268,288,249,269,289,250,270, - 290,251,271,291,252,272,292,253,273,293,254,274,294,255,275,295, - 256,276,296,257,277,297,258,278,298,259,279,299,300,326,352,301, - 327,353,302,328,354,303,329,355,304,330,356,305,331,357,306,332, - 358,307,333,359,308,334,360,309,335,361,310,336,362,311,337,363, - 312,338,364,313,339,365,314,340,366,315,341,367,316,342,368,317, - 343,369,318,344,370,319,345,371,320,346,372,321,347,373,322,348, - 374,323,349,375,324,350,376,325,351,377,378,444,510,379,445,511, - 380,446,512,381,447,513,382,448,514,383,449,515,384,450,516,385, - 451,517,386,452,518,387,453,519,388,454,520,389,455,521,390,456, - 522,391,457,523,392,458,524,393,459,525,394,460,526,395,461,527, - 396,462,528,397,463,529,398,464,530,399,465,531,400,466,532,401, - 467,533,402,468,534,403,469,535,404,470,536,405,471,537,406,472, - 538,407,473,539,408,474,540,409,475,541,410,476,542,411,477,543, - 412,478,544,413,479,545,414,480,546,415,481,547,416,482,548,417, - 483,549,418,484,550,419,485,551,420,486,552,421,487,553,422,488, - 554,423,489,555,424,490,556,425,491,557,426,492,558,427,493,559, - 428,494,560,429,495,561,430,496,562,431,497,563,432,498,564,433, - 499,565,434,500,566,435,501,567,436,502,568,437,503,569,438,504, - 570,439,505,571,440,506,572,441,507,573,442,508,574,443,509,575}, - { 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11, 12, 16, 20, 13, - 17, 21, 14, 18, 22, 15, 19, 23, 24, 28, 32, 25, 29, 33, 26, 30, - 34, 27, 31, 35, 36, 40, 44, 37, 41, 45, 38, 42, 46, 39, 43, 47, - 48, 54, 60, 49, 55, 61, 50, 56, 62, 51, 57, 63, 52, 58, 64, 53, - 59, 65, 66, 74, 82, 67, 75, 83, 68, 76, 84, 69, 77, 85, 70, 78, - 86, 71, 79, 87, 72, 80, 88, 73, 81, 89, 90,102,114, 91,103,115, - 92,104,116, 93,105,117, 94,106,118, 95,107,119, 96,108,120, 97, - 109,121, 98,110,122, 99,111,123,100,112,124,101,113,125,126,142, - 158,127,143,159,128,144,160,129,145,161,130,146,162,131,147,163, - 132,148,164,133,149,165,134,150,166,135,151,167,136,152,168,137, - 153,169,138,154,170,139,155,171,140,156,172,141,157,173,174,194, - 214,175,195,215,176,196,216,177,197,217,178,198,218,179,199,219, - 180,200,220,181,201,221,182,202,222,183,203,223,184,204,224,185, - 205,225,186,206,226,187,207,227,188,208,228,189,209,229,190,210, - 230,191,211,231,192,212,232,193,213,233,234,260,286,235,261,287, - 236,262,288,237,263,289,238,264,290,239,265,291,240,266,292,241, - 267,293,242,268,294,243,269,295,244,270,296,245,271,297,246,272, - 298,247,273,299,248,274,300,249,275,301,250,276,302,251,277,303, - 252,278,304,253,279,305,254,280,306,255,281,307,256,282,308,257, - 283,309,258,284,310,259,285,311,312,346,380,313,347,381,314,348, - 382,315,349,383,316,350,384,317,351,385,318,352,386,319,353,387, - 320,354,388,321,355,389,322,356,390,323,357,391,324,358,392,325, - 359,393,326,360,394,327,361,395,328,362,396,329,363,397,330,364, - 398,331,365,399,332,366,400,333,367,401,334,368,402,335,369,403, - 336,370,404,337,371,405,338,372,406,339,373,407,340,374,408,341, - 375,409,342,376,410,343,377,411,344,378,412,345,379,413,414,456, - 498,415,457,499,416,458,500,417,459,501,418,460,502,419,461,503, - 420,462,504,421,463,505,422,464,506,423,465,507,424,466,508,425, - 467,509,426,468,510,427,469,511,428,470,512,429,471,513,430,472, - 514,431,473,515,432,474,516,433,475,517,434,476,518,435,477,519, - 436,478,520,437,479,521,438,480,522,439,481,523,440,482,524,441, - 483,525,442,484,526,443,485,527,444,486,528,445,487,529,446,488, - 530,447,489,531,448,490,532,449,491,533,450,492,534,451,493,535, - 452,494,536,453,495,537,454,496,538,455,497,539,540,552,564,541, - 553,565,542,554,566,543,555,567,544,556,568,545,557,569,546,558, - 570,547,559,571,548,560,572,549,561,573,550,562,574,551,563,575} - }; -*/ - - private static final float cs[] = - { - 0.857492925712f, 0.881741997318f, 0.949628649103f, 0.983314592492f, - 0.995517816065f, 0.999160558175f, 0.999899195243f, 0.999993155067f - }; - - private static final float ca[] = - { - -0.5144957554270f, -0.4717319685650f, -0.3133774542040f, -0.1819131996110f, - -0.0945741925262f, -0.0409655828852f, -0.0141985685725f, -0.00369997467375f - }; - - /************************************************************/ - /* END OF L3TABLE */ - /************************************************************/ - - /************************************************************/ - /* L3TYPE */ - /************************************************************/ - - - /***************************************************************/ - /* END OF L3TYPE */ - /***************************************************************/ - - /***************************************************************/ - /* INV_MDCT */ - /***************************************************************/ - public static final float win[][] = - { - {-1.6141214951E-02f, -5.3603178919E-02f, -1.0070713296E-01f, -1.6280817573E-01f, - -4.9999999679E-01f, -3.8388735032E-01f, -6.2061144372E-01f, -1.1659756083E+00f, - -3.8720752656E+00f, -4.2256286556E+00f, -1.5195289984E+00f, -9.7416483388E-01f, - -7.3744074053E-01f, -1.2071067773E+00f, -5.1636156596E-01f, -4.5426052317E-01f, - -4.0715656898E-01f, -3.6969460527E-01f, -3.3876269197E-01f, -3.1242222492E-01f, - -2.8939587111E-01f, -2.6880081906E-01f, -5.0000000266E-01f, -2.3251417468E-01f, - -2.1596714708E-01f, -2.0004979098E-01f, -1.8449493497E-01f, -1.6905846094E-01f, - -1.5350360518E-01f, -1.3758624925E-01f, -1.2103922149E-01f, -2.0710679058E-01f, - -8.4752577594E-02f, -6.4157525656E-02f, -4.1131172614E-02f, -1.4790705759E-02f}, - - {-1.6141214951E-02f, -5.3603178919E-02f, -1.0070713296E-01f, -1.6280817573E-01f, - -4.9999999679E-01f, -3.8388735032E-01f, -6.2061144372E-01f, -1.1659756083E+00f, - -3.8720752656E+00f, -4.2256286556E+00f, -1.5195289984E+00f, -9.7416483388E-01f, - -7.3744074053E-01f, -1.2071067773E+00f, -5.1636156596E-01f, -4.5426052317E-01f, - -4.0715656898E-01f, -3.6969460527E-01f, -3.3908542600E-01f, -3.1511810350E-01f, - -2.9642226150E-01f, -2.8184548650E-01f, -5.4119610000E-01f, -2.6213228100E-01f, - -2.5387916537E-01f, -2.3296291359E-01f, -1.9852728987E-01f, -1.5233534808E-01f, - -9.6496400054E-02f, -3.3423828516E-02f, 0.0000000000E+00f, 0.0000000000E+00f, - 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f}, - - {-4.8300800645E-02f, -1.5715656932E-01f, -2.8325045177E-01f, -4.2953747763E-01f, - -1.2071067795E+00f, -8.2426483178E-01f, -1.1451749106E+00f, -1.7695290101E+00f, - -4.5470225061E+00f, -3.4890531002E+00f, -7.3296292804E-01f, -1.5076514758E-01f, - 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, - 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, - 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, - 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, - 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, - 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f}, - - {0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f, - 0.0000000000E+00f, 0.0000000000E+00f, -1.5076513660E-01f, -7.3296291107E-01f, - -3.4890530566E+00f, -4.5470224727E+00f, -1.7695290031E+00f, -1.1451749092E+00f, - -8.3137738100E-01f, -1.3065629650E+00f, -5.4142014250E-01f, -4.6528974900E-01f, - -4.1066990750E-01f, -3.7004680800E-01f, -3.3876269197E-01f, -3.1242222492E-01f, - -2.8939587111E-01f, -2.6880081906E-01f, -5.0000000266E-01f, -2.3251417468E-01f, - -2.1596714708E-01f, -2.0004979098E-01f, -1.8449493497E-01f, -1.6905846094E-01f, - -1.5350360518E-01f, -1.3758624925E-01f, -1.2103922149E-01f, -2.0710679058E-01f, - -8.4752577594E-02f, -6.4157525656E-02f, -4.1131172614E-02f, -1.4790705759E-02f} - }; - /***************************************************************/ - /* END OF INV_MDCT */ - - /***************************************************************/ - - class Sftable { - public int[] l; - public int[] s; - - public Sftable() { - l = new int[5]; - s = new int[3]; - } - - public Sftable(int[] thel, int[] thes) { - l = thel; - s = thes; - } - } - - public Sftable sftable; - - public static final int nr_of_sfb_block[][][] = - {{{6, 5, 5, 5}, {9, 9, 9, 9}, {6, 9, 9, 9}}, - {{6, 5, 7, 3}, {9, 9, 12, 6}, {6, 9, 12, 6}}, - {{11, 10, 0, 0}, {18, 18, 0, 0}, {15, 18, 0, 0}}, - {{7, 7, 7, 0}, {12, 12, 12, 0}, {6, 15, 12, 0}}, - {{6, 6, 6, 3}, {12, 9, 9, 6}, {6, 12, 9, 6}}, - {{8, 8, 5, 0}, {15, 12, 9, 0}, {6, 18, 9, 0}}}; - - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Manager.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Manager.java deleted file mode 100644 index b6d33270f4c018ff48c5479916dab93d3bccd3d9..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Manager.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Work in progress. - *

- * Manages a number of controls. - */ -public class Manager //implements Control -{ - public void addControl(Control c) { - - } - - public void removeControl(Control c) { - - } - - public void removeAll() { - - } - - // control interface delegates to a managed control - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Obuffer.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Obuffer.java deleted file mode 100644 index 9762212be829be2ad7936253fbf9cbb30ff888b0..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Obuffer.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Added appendSamples() method for efficiency. MDM. - * 15/02/99 ,Java Conversion by E.B ,ebsp@iname.com, JavaLayer - * - * Declarations for output buffer, includes operating system - * implementation of the virtual Obuffer. Optional routines - * enabling seeks and stops added by Jeff Tsay. - * - * @(#) obuffer.h 1.8, last edit: 6/15/94 16:51:56 - * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) - * @(#) Berlin University of Technology - * - * Idea and first implementation for u-law output with fast downsampling by - * Jim Boucher (jboucher@flash.bu.edu) - * - * LinuxObuffer class written by - * Louis P. Kruger (lpkruger@phoenix.princeton.edu) - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Base Class for audio output. - */ -public abstract class Obuffer { - public static final int OBUFFERSIZE = 2 * 1152; // max. 2 * 1152 samples per frame - public static final int MAXCHANNELS = 2; // max. number of channels - - /** - * Takes a 16 Bit PCM sample. - */ - public abstract void append(int channel, short value); - - /** - * Accepts 32 new PCM samples. - */ - public void appendSamples(int channel, float[] f) { - short s; - for (int i = 0; i < 32; ) { - s = clip(f[i++]); - append(channel, s); - } - } - - /** - * Clip Sample to 16 Bits - */ - private final short clip(float sample) { - return ((sample > 32767.0f) ? 32767 : - ((sample < -32768.0f) ? -32768 : - (short) sample)); - } - - /** - * Write the samples to the file or directly to the audio hardware. - */ - public abstract void write_buffer(int val); - - public abstract void close(); - - /** - * Clears all data in the buffer (for seeking). - */ - public abstract void clear_buffer(); - - /** - * Notify the buffer that the user has stopped the stream. - */ - public abstract void set_stop_flag(); -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/OutputChannels.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/OutputChannels.java deleted file mode 100644 index 361e4682fd30c24b93e5e71c7caab21c929e34d7..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/OutputChannels.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial implementation. mdm@techie.com. - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - - -/** - * A Type-safe representation of the the supported output channel - * constants. - *

- * This class is immutable and, hence, is thread safe. - * - * @author Mat McGowan 12/12/99 - * @since 0.0.7 - */ -public class OutputChannels { - /** - * Flag to indicate output should include both channels. - */ - public static final int BOTH_CHANNELS = 0; - - /** - * Flag to indicate output should include the left channel only. - */ - public static final int LEFT_CHANNEL = 1; - - /** - * Flag to indicate output should include the right channel only. - */ - public static final int RIGHT_CHANNEL = 2; - - /** - * Flag to indicate output is mono. - */ - public static final int DOWNMIX_CHANNELS = 3; - - - public static final OutputChannels LEFT = new OutputChannels(LEFT_CHANNEL); - public static final OutputChannels RIGHT = new OutputChannels(RIGHT_CHANNEL); - public static final OutputChannels BOTH = new OutputChannels(BOTH_CHANNELS); - public static final OutputChannels DOWNMIX = new OutputChannels(DOWNMIX_CHANNELS); - - - private /*final*/ int outputChannels; - - /** - * Creates an OutputChannels instance - * corresponding to the given channel code. - * - * @param code one of the OutputChannels channel code constants. - * @throws IllegalArgumentException if code is not a valid - * channel code. - */ - static public OutputChannels fromInt(int code) { - switch (code) { - case LEFT_CHANNEL: - return LEFT; - case RIGHT_CHANNEL: - return RIGHT; - case BOTH_CHANNELS: - return BOTH; - case DOWNMIX_CHANNELS: - return DOWNMIX; - default: - throw new IllegalArgumentException("Invalid channel code: " + code); - } - } - - private OutputChannels(int channels) { - outputChannels = channels; - - if (channels < 0 || channels > 3) - throw new IllegalArgumentException("channels"); - } - - /** - * Retrieves the code representing the desired output channels. - * Will be one of LEFT_CHANNEL, RIGHT_CHANNEL, BOTH_CHANNELS - * or DOWNMIX_CHANNELS. - * - * @return the channel code represented by this instance. - */ - public int getChannelsOutputCode() { - return outputChannels; - } - - /** - * Retrieves the number of output channels represented - * by this channel output type. - * - * @return The number of output channels for this channel output - * type. This will be 2 for BOTH_CHANNELS only, and 1 - * for all other types. - */ - public int getChannelCount() { - int count = (outputChannels == BOTH_CHANNELS) ? 2 : 1; - return count; - } - - - public boolean equals(Object o) { - boolean equals = false; - - if (o instanceof OutputChannels) { - OutputChannels oc = (OutputChannels) o; - equals = (oc.outputChannels == outputChannels); - } - - return equals; - } - - public int hashCode() { - return outputChannels; - } - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/SampleBuffer.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/SampleBuffer.java deleted file mode 100644 index 77390b8364b06840f121150685634d0d781c840e..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/SampleBuffer.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * - * 12/12/99 Initial Version based on FileObuffer. mdm@techie.com. - * - * FileObuffer: - * 15/02/99 Java Conversion by E.B ,javalayer@javazoom.net - * - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * The SampleBuffer class implements an output buffer - * that provides storage for a fixed size block of samples. - */ -public class SampleBuffer extends Obuffer { - private short[] buffer; - private int[] bufferp; - private int channels; - private int frequency; - - /** - * Constructor - */ - public SampleBuffer(int sample_frequency, int number_of_channels) { - buffer = new short[OBUFFERSIZE]; - bufferp = new int[MAXCHANNELS]; - channels = number_of_channels; - frequency = sample_frequency; - - for (int i = 0; i < number_of_channels; ++i) - bufferp[i] = (short) i; - - } - - public int getChannelCount() { - return this.channels; - } - - public int getSampleFrequency() { - return this.frequency; - } - - public short[] getBuffer() { - return this.buffer; - } - - public int getBufferLength() { - return bufferp[0]; - } - - /** - * Takes a 16 Bit PCM sample. - */ - public void append(int channel, short value) { - buffer[bufferp[channel]] = value; - bufferp[channel] += channels; - } - - public void appendSamples(int channel, float[] f) { - int pos = bufferp[channel]; - - short s; - float fs; - for (int i = 0; i < 32; ) { - fs = f[i++]; - fs = (fs > 32767.0f ? 32767.0f - : (fs < -32767.0f ? -32767.0f : fs)); - - s = (short) fs; - buffer[pos] = s; - pos += channels; - } - - bufferp[channel] = pos; - } - - - /** - * Write the samples to the file (Random Acces). - */ - public void write_buffer(int val) { - - //for (int i = 0; i < channels; ++i) - // bufferp[i] = (short)i; - - } - - public void close() { - } - - /** - * - */ - public void clear_buffer() { - for (int i = 0; i < channels; ++i) - bufferp[i] = (short) i; - } - - /** - * - */ - public void set_stop_flag() { - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Source.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Source.java deleted file mode 100644 index 5d3ddae62ff1a3cb336b17c33c8245a9f87713c3..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/Source.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -import java.io.IOException; - -/** - * Work in progress. - *

- * Class to describe a seekable data source. - */ -public interface Source { - - public static final long LENGTH_UNKNOWN = -1; - - public int read(byte[] b, int offs, int len) - throws IOException; - - - public boolean willReadBlock(); - - public boolean isSeekable(); - - public long length(); - - public long tell(); - - public long seek(long pos); - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/SynthesisFilter.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/SynthesisFilter.java deleted file mode 100644 index 06da02c7d43859bc6aeda74c7d242b620825c340..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/SynthesisFilter.java +++ /dev/null @@ -1,1767 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * - * 04/01/00 Fixes for running under build 23xx Microsoft JVM. mdm. - * - * 19/12/99 Performance improvements to compute_pcm_samples(). - * Mat McGowan. mdm@techie.com. - * - * 16/02/99 Java Conversion by E.B , javalayer@javazoom.net - * - * @(#) synthesis_filter.h 1.8, last edit: 6/15/94 16:52:00 - * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) - * @(#) Berlin University of Technology - * - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ -package v4lk.lwbd.decoders.processing.jlayer; - -import java.io.IOException; - -/** - * A class for the synthesis filter bank. - * This class does a fast downsampling from 32, 44.1 or 48 kHz to 8 kHz, if ULAW is defined. - * Frequencies above 4 kHz are removed by ignoring higher subbands. - */ -final class SynthesisFilter { - private float[] v1; - private float[] v2; - private float[] actual_v; // v1 or v2 - private int actual_write_pos; // 0-15 - private float[] samples; // 32 new subband samples - private int channel; - private float scalefactor; - private float[] eq; - - /** - * Quality value for controlling CPU usage/quality tradeoff. - */ - /* - private int quality; - - private int v_inc; - - - - public static final int HIGH_QUALITY = 1; - public static final int MEDIUM_QUALITY = 2; - public static final int LOW_QUALITY = 4; - */ - - /** - * Contructor. - * The scalefactor scales the calculated float pcm samples to short values - * (raw pcm samples are in [-1.0, 1.0], if no violations occur). - */ - public SynthesisFilter(int channelnumber, float factor, float[] eq0) { - if (d == null) { - d = load_d(); - d16 = splitArray(d, 16); - } - - v1 = new float[512]; - v2 = new float[512]; - samples = new float[32]; - channel = channelnumber; - scalefactor = factor; - setEQ(eq); - //setQuality(HIGH_QUALITY); - - reset(); - } - - public void setEQ(float[] eq0) { - this.eq = eq0; - if (eq == null) { - eq = new float[32]; - for (int i = 0; i < 32; i++) - eq[i] = 1.0f; - } - if (eq.length < 32) { - throw new IllegalArgumentException("eq0"); - } - - } - - /* - private void setQuality(int quality0) - { - switch (quality0) - { - case HIGH_QUALITY: - case MEDIUM_QUALITY: - case LOW_QUALITY: - v_inc = 16 * quality0; - quality = quality0; - break; - default : - throw new IllegalArgumentException("Unknown quality value"); - } - } - - public int getQuality() - { - return quality; - } - */ - - /** - * Reset the synthesis filter. - */ - public void reset() { - //float[] floatp; - // float[] floatp2; - - // initialize v1[] and v2[]: - //for (floatp = v1 + 512, floatp2 = v2 + 512; floatp > v1; ) - // *--floatp = *--floatp2 = 0.0; - for (int p = 0; p < 512; p++) - v1[p] = v2[p] = 0.0f; - - // initialize samples[]: - //for (floatp = samples + 32; floatp > samples; ) - // *--floatp = 0.0; - for (int p2 = 0; p2 < 32; p2++) - samples[p2] = 0.0f; - - actual_v = v1; - actual_write_pos = 15; - } - - - /** - * Inject Sample. - */ - public void input_sample(float sample, int subbandnumber) { - samples[subbandnumber] = eq[subbandnumber] * sample; - } - - public void input_samples(float[] s) { - for (int i = 31; i >= 0; i--) { - samples[i] = s[i] * eq[i]; - } - } - - /** - * Compute new values via a fast cosine transform. - */ - private void compute_new_v() { - // p is fully initialized from x1 - //float[] p = _p; - // pp is fully initialized from p - //float[] pp = _pp; - - //float[] new_v = _new_v; - - //float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure 3-A.2 in ISO DIS 11172-3 - //float[] p = new float[16]; - //float[] pp = new float[16]; - - /* - for (int i=31; i>=0; i--) - { - new_v[i] = 0.0f; - } - */ - - float new_v0, new_v1, new_v2, new_v3, new_v4, new_v5, new_v6, new_v7, new_v8, new_v9; - float new_v10, new_v11, new_v12, new_v13, new_v14, new_v15, new_v16, new_v17, new_v18, new_v19; - float new_v20, new_v21, new_v22, new_v23, new_v24, new_v25, new_v26, new_v27, new_v28, new_v29; - float new_v30, new_v31; - - new_v0 = new_v1 = new_v2 = new_v3 = new_v4 = new_v5 = new_v6 = new_v7 = new_v8 = new_v9 = - new_v10 = new_v11 = new_v12 = new_v13 = new_v14 = new_v15 = new_v16 = new_v17 = new_v18 = new_v19 = - new_v20 = new_v21 = new_v22 = new_v23 = new_v24 = new_v25 = new_v26 = new_v27 = new_v28 = new_v29 = - new_v30 = new_v31 = 0.0f; - - -// float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure 3-A.2 in ISO DIS 11172-3 -// float[] p = new float[16]; -// float[] pp = new float[16]; - - float[] s = samples; - - float s0 = s[0]; - float s1 = s[1]; - float s2 = s[2]; - float s3 = s[3]; - float s4 = s[4]; - float s5 = s[5]; - float s6 = s[6]; - float s7 = s[7]; - float s8 = s[8]; - float s9 = s[9]; - float s10 = s[10]; - float s11 = s[11]; - float s12 = s[12]; - float s13 = s[13]; - float s14 = s[14]; - float s15 = s[15]; - float s16 = s[16]; - float s17 = s[17]; - float s18 = s[18]; - float s19 = s[19]; - float s20 = s[20]; - float s21 = s[21]; - float s22 = s[22]; - float s23 = s[23]; - float s24 = s[24]; - float s25 = s[25]; - float s26 = s[26]; - float s27 = s[27]; - float s28 = s[28]; - float s29 = s[29]; - float s30 = s[30]; - float s31 = s[31]; - - float p0 = s0 + s31; - float p1 = s1 + s30; - float p2 = s2 + s29; - float p3 = s3 + s28; - float p4 = s4 + s27; - float p5 = s5 + s26; - float p6 = s6 + s25; - float p7 = s7 + s24; - float p8 = s8 + s23; - float p9 = s9 + s22; - float p10 = s10 + s21; - float p11 = s11 + s20; - float p12 = s12 + s19; - float p13 = s13 + s18; - float p14 = s14 + s17; - float p15 = s15 + s16; - - float pp0 = p0 + p15; - float pp1 = p1 + p14; - float pp2 = p2 + p13; - float pp3 = p3 + p12; - float pp4 = p4 + p11; - float pp5 = p5 + p10; - float pp6 = p6 + p9; - float pp7 = p7 + p8; - float pp8 = (p0 - p15) * cos1_32; - float pp9 = (p1 - p14) * cos3_32; - float pp10 = (p2 - p13) * cos5_32; - float pp11 = (p3 - p12) * cos7_32; - float pp12 = (p4 - p11) * cos9_32; - float pp13 = (p5 - p10) * cos11_32; - float pp14 = (p6 - p9) * cos13_32; - float pp15 = (p7 - p8) * cos15_32; - - p0 = pp0 + pp7; - p1 = pp1 + pp6; - p2 = pp2 + pp5; - p3 = pp3 + pp4; - p4 = (pp0 - pp7) * cos1_16; - p5 = (pp1 - pp6) * cos3_16; - p6 = (pp2 - pp5) * cos5_16; - p7 = (pp3 - pp4) * cos7_16; - p8 = pp8 + pp15; - p9 = pp9 + pp14; - p10 = pp10 + pp13; - p11 = pp11 + pp12; - p12 = (pp8 - pp15) * cos1_16; - p13 = (pp9 - pp14) * cos3_16; - p14 = (pp10 - pp13) * cos5_16; - p15 = (pp11 - pp12) * cos7_16; - - - pp0 = p0 + p3; - pp1 = p1 + p2; - pp2 = (p0 - p3) * cos1_8; - pp3 = (p1 - p2) * cos3_8; - pp4 = p4 + p7; - pp5 = p5 + p6; - pp6 = (p4 - p7) * cos1_8; - pp7 = (p5 - p6) * cos3_8; - pp8 = p8 + p11; - pp9 = p9 + p10; - pp10 = (p8 - p11) * cos1_8; - pp11 = (p9 - p10) * cos3_8; - pp12 = p12 + p15; - pp13 = p13 + p14; - pp14 = (p12 - p15) * cos1_8; - pp15 = (p13 - p14) * cos3_8; - - p0 = pp0 + pp1; - p1 = (pp0 - pp1) * cos1_4; - p2 = pp2 + pp3; - p3 = (pp2 - pp3) * cos1_4; - p4 = pp4 + pp5; - p5 = (pp4 - pp5) * cos1_4; - p6 = pp6 + pp7; - p7 = (pp6 - pp7) * cos1_4; - p8 = pp8 + pp9; - p9 = (pp8 - pp9) * cos1_4; - p10 = pp10 + pp11; - p11 = (pp10 - pp11) * cos1_4; - p12 = pp12 + pp13; - p13 = (pp12 - pp13) * cos1_4; - p14 = pp14 + pp15; - p15 = (pp14 - pp15) * cos1_4; - - // this is pretty insane coding - float tmp1; - new_v19/*36-17*/ = -(new_v4 = (new_v12 = p7) + p5) - p6; - new_v27/*44-17*/ = -p6 - p7 - p4; - new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13; - new_v17/*34-17*/ = -(new_v2 = p15 + p13 + p9) - p14; - new_v21/*38-17*/ = (tmp1 = -p14 - p15 - p10 - p11) - p13; - new_v29/*46-17*/ = -p14 - p15 - p12 - p8; - new_v25/*42-17*/ = tmp1 - p12; - new_v31/*48-17*/ = -p0; - new_v0 = p1; - new_v23/*40-17*/ = -(new_v8 = p3) - p2; - - p0 = (s0 - s31) * cos1_64; - p1 = (s1 - s30) * cos3_64; - p2 = (s2 - s29) * cos5_64; - p3 = (s3 - s28) * cos7_64; - p4 = (s4 - s27) * cos9_64; - p5 = (s5 - s26) * cos11_64; - p6 = (s6 - s25) * cos13_64; - p7 = (s7 - s24) * cos15_64; - p8 = (s8 - s23) * cos17_64; - p9 = (s9 - s22) * cos19_64; - p10 = (s10 - s21) * cos21_64; - p11 = (s11 - s20) * cos23_64; - p12 = (s12 - s19) * cos25_64; - p13 = (s13 - s18) * cos27_64; - p14 = (s14 - s17) * cos29_64; - p15 = (s15 - s16) * cos31_64; - - - pp0 = p0 + p15; - pp1 = p1 + p14; - pp2 = p2 + p13; - pp3 = p3 + p12; - pp4 = p4 + p11; - pp5 = p5 + p10; - pp6 = p6 + p9; - pp7 = p7 + p8; - pp8 = (p0 - p15) * cos1_32; - pp9 = (p1 - p14) * cos3_32; - pp10 = (p2 - p13) * cos5_32; - pp11 = (p3 - p12) * cos7_32; - pp12 = (p4 - p11) * cos9_32; - pp13 = (p5 - p10) * cos11_32; - pp14 = (p6 - p9) * cos13_32; - pp15 = (p7 - p8) * cos15_32; - - - p0 = pp0 + pp7; - p1 = pp1 + pp6; - p2 = pp2 + pp5; - p3 = pp3 + pp4; - p4 = (pp0 - pp7) * cos1_16; - p5 = (pp1 - pp6) * cos3_16; - p6 = (pp2 - pp5) * cos5_16; - p7 = (pp3 - pp4) * cos7_16; - p8 = pp8 + pp15; - p9 = pp9 + pp14; - p10 = pp10 + pp13; - p11 = pp11 + pp12; - p12 = (pp8 - pp15) * cos1_16; - p13 = (pp9 - pp14) * cos3_16; - p14 = (pp10 - pp13) * cos5_16; - p15 = (pp11 - pp12) * cos7_16; - - - pp0 = p0 + p3; - pp1 = p1 + p2; - pp2 = (p0 - p3) * cos1_8; - pp3 = (p1 - p2) * cos3_8; - pp4 = p4 + p7; - pp5 = p5 + p6; - pp6 = (p4 - p7) * cos1_8; - pp7 = (p5 - p6) * cos3_8; - pp8 = p8 + p11; - pp9 = p9 + p10; - pp10 = (p8 - p11) * cos1_8; - pp11 = (p9 - p10) * cos3_8; - pp12 = p12 + p15; - pp13 = p13 + p14; - pp14 = (p12 - p15) * cos1_8; - pp15 = (p13 - p14) * cos3_8; - - - p0 = pp0 + pp1; - p1 = (pp0 - pp1) * cos1_4; - p2 = pp2 + pp3; - p3 = (pp2 - pp3) * cos1_4; - p4 = pp4 + pp5; - p5 = (pp4 - pp5) * cos1_4; - p6 = pp6 + pp7; - p7 = (pp6 - pp7) * cos1_4; - p8 = pp8 + pp9; - p9 = (pp8 - pp9) * cos1_4; - p10 = pp10 + pp11; - p11 = (pp10 - pp11) * cos1_4; - p12 = pp12 + pp13; - p13 = (pp12 - pp13) * cos1_4; - p14 = pp14 + pp15; - p15 = (pp14 - pp15) * cos1_4; - - - // manually doing something that a compiler should handle sucks - // coding like this is hard to read - float tmp2; - new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) - + p5 + p13; - new_v7 = (new_v9 = p15 + p11 + p3) + p13; - new_v16/*33-17*/ = -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14; - new_v18/*35-17*/ = -(new_v3 = tmp1 + p5 + p7) - p6 - p14; - - new_v22/*39-17*/ = (tmp1 = -p10 - p11 - p14 - p15) - - p13 - p2 - p3; - new_v20/*37-17*/ = tmp1 - p13 - p5 - p6 - p7; - new_v24/*41-17*/ = tmp1 - p12 - p2 - p3; - new_v26/*43-17*/ = tmp1 - p12 - (tmp2 = p4 + p6 + p7); - new_v30/*47-17*/ = (tmp1 = -p8 - p12 - p14 - p15) - p0; - new_v28/*45-17*/ = tmp1 - tmp2; - - // insert V[0-15] (== new_v[0-15]) into actual v: - // float[] x2 = actual_v + actual_write_pos; - float dest[] = actual_v; - - int pos = actual_write_pos; - - dest[0 + pos] = new_v0; - dest[16 + pos] = new_v1; - dest[32 + pos] = new_v2; - dest[48 + pos] = new_v3; - dest[64 + pos] = new_v4; - dest[80 + pos] = new_v5; - dest[96 + pos] = new_v6; - dest[112 + pos] = new_v7; - dest[128 + pos] = new_v8; - dest[144 + pos] = new_v9; - dest[160 + pos] = new_v10; - dest[176 + pos] = new_v11; - dest[192 + pos] = new_v12; - dest[208 + pos] = new_v13; - dest[224 + pos] = new_v14; - dest[240 + pos] = new_v15; - - // V[16] is always 0.0: - dest[256 + pos] = 0.0f; - - // insert V[17-31] (== -new_v[15-1]) into actual v: - dest[272 + pos] = -new_v15; - dest[288 + pos] = -new_v14; - dest[304 + pos] = -new_v13; - dest[320 + pos] = -new_v12; - dest[336 + pos] = -new_v11; - dest[352 + pos] = -new_v10; - dest[368 + pos] = -new_v9; - dest[384 + pos] = -new_v8; - dest[400 + pos] = -new_v7; - dest[416 + pos] = -new_v6; - dest[432 + pos] = -new_v5; - dest[448 + pos] = -new_v4; - dest[464 + pos] = -new_v3; - dest[480 + pos] = -new_v2; - dest[496 + pos] = -new_v1; - - // insert V[32] (== -new_v[0]) into other v: - dest = (actual_v == v1) ? v2 : v1; - - dest[0 + pos] = -new_v0; - // insert V[33-48] (== new_v[16-31]) into other v: - dest[16 + pos] = new_v16; - dest[32 + pos] = new_v17; - dest[48 + pos] = new_v18; - dest[64 + pos] = new_v19; - dest[80 + pos] = new_v20; - dest[96 + pos] = new_v21; - dest[112 + pos] = new_v22; - dest[128 + pos] = new_v23; - dest[144 + pos] = new_v24; - dest[160 + pos] = new_v25; - dest[176 + pos] = new_v26; - dest[192 + pos] = new_v27; - dest[208 + pos] = new_v28; - dest[224 + pos] = new_v29; - dest[240 + pos] = new_v30; - dest[256 + pos] = new_v31; - - // insert V[49-63] (== new_v[30-16]) into other v: - dest[272 + pos] = new_v30; - dest[288 + pos] = new_v29; - dest[304 + pos] = new_v28; - dest[320 + pos] = new_v27; - dest[336 + pos] = new_v26; - dest[352 + pos] = new_v25; - dest[368 + pos] = new_v24; - dest[384 + pos] = new_v23; - dest[400 + pos] = new_v22; - dest[416 + pos] = new_v21; - dest[432 + pos] = new_v20; - dest[448 + pos] = new_v19; - dest[464 + pos] = new_v18; - dest[480 + pos] = new_v17; - dest[496 + pos] = new_v16; -/* - } - else - { - v1[0 + actual_write_pos] = -new_v0; - // insert V[33-48] (== new_v[16-31]) into other v: - v1[16 + actual_write_pos] = new_v16; - v1[32 + actual_write_pos] = new_v17; - v1[48 + actual_write_pos] = new_v18; - v1[64 + actual_write_pos] = new_v19; - v1[80 + actual_write_pos] = new_v20; - v1[96 + actual_write_pos] = new_v21; - v1[112 + actual_write_pos] = new_v22; - v1[128 + actual_write_pos] = new_v23; - v1[144 + actual_write_pos] = new_v24; - v1[160 + actual_write_pos] = new_v25; - v1[176 + actual_write_pos] = new_v26; - v1[192 + actual_write_pos] = new_v27; - v1[208 + actual_write_pos] = new_v28; - v1[224 + actual_write_pos] = new_v29; - v1[240 + actual_write_pos] = new_v30; - v1[256 + actual_write_pos] = new_v31; - - // insert V[49-63] (== new_v[30-16]) into other v: - v1[272 + actual_write_pos] = new_v30; - v1[288 + actual_write_pos] = new_v29; - v1[304 + actual_write_pos] = new_v28; - v1[320 + actual_write_pos] = new_v27; - v1[336 + actual_write_pos] = new_v26; - v1[352 + actual_write_pos] = new_v25; - v1[368 + actual_write_pos] = new_v24; - v1[384 + actual_write_pos] = new_v23; - v1[400 + actual_write_pos] = new_v22; - v1[416 + actual_write_pos] = new_v21; - v1[432 + actual_write_pos] = new_v20; - v1[448 + actual_write_pos] = new_v19; - v1[464 + actual_write_pos] = new_v18; - v1[480 + actual_write_pos] = new_v17; - v1[496 + actual_write_pos] = new_v16; - } -*/ - } - - /** - * Compute new values via a fast cosine transform. - */ - private void compute_new_v_old() { - // p is fully initialized from x1 - //float[] p = _p; - // pp is fully initialized from p - //float[] pp = _pp; - - //float[] new_v = _new_v; - - float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure 3-A.2 in ISO DIS 11172-3 - float[] p = new float[16]; - float[] pp = new float[16]; - - - for (int i = 31; i >= 0; i--) { - new_v[i] = 0.0f; - } - -// float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure 3-A.2 in ISO DIS 11172-3 -// float[] p = new float[16]; -// float[] pp = new float[16]; - - float[] x1 = samples; - - p[0] = x1[0] + x1[31]; - p[1] = x1[1] + x1[30]; - p[2] = x1[2] + x1[29]; - p[3] = x1[3] + x1[28]; - p[4] = x1[4] + x1[27]; - p[5] = x1[5] + x1[26]; - p[6] = x1[6] + x1[25]; - p[7] = x1[7] + x1[24]; - p[8] = x1[8] + x1[23]; - p[9] = x1[9] + x1[22]; - p[10] = x1[10] + x1[21]; - p[11] = x1[11] + x1[20]; - p[12] = x1[12] + x1[19]; - p[13] = x1[13] + x1[18]; - p[14] = x1[14] + x1[17]; - p[15] = x1[15] + x1[16]; - - pp[0] = p[0] + p[15]; - pp[1] = p[1] + p[14]; - pp[2] = p[2] + p[13]; - pp[3] = p[3] + p[12]; - pp[4] = p[4] + p[11]; - pp[5] = p[5] + p[10]; - pp[6] = p[6] + p[9]; - pp[7] = p[7] + p[8]; - pp[8] = (p[0] - p[15]) * cos1_32; - pp[9] = (p[1] - p[14]) * cos3_32; - pp[10] = (p[2] - p[13]) * cos5_32; - pp[11] = (p[3] - p[12]) * cos7_32; - pp[12] = (p[4] - p[11]) * cos9_32; - pp[13] = (p[5] - p[10]) * cos11_32; - pp[14] = (p[6] - p[9]) * cos13_32; - pp[15] = (p[7] - p[8]) * cos15_32; - - p[0] = pp[0] + pp[7]; - p[1] = pp[1] + pp[6]; - p[2] = pp[2] + pp[5]; - p[3] = pp[3] + pp[4]; - p[4] = (pp[0] - pp[7]) * cos1_16; - p[5] = (pp[1] - pp[6]) * cos3_16; - p[6] = (pp[2] - pp[5]) * cos5_16; - p[7] = (pp[3] - pp[4]) * cos7_16; - p[8] = pp[8] + pp[15]; - p[9] = pp[9] + pp[14]; - p[10] = pp[10] + pp[13]; - p[11] = pp[11] + pp[12]; - p[12] = (pp[8] - pp[15]) * cos1_16; - p[13] = (pp[9] - pp[14]) * cos3_16; - p[14] = (pp[10] - pp[13]) * cos5_16; - p[15] = (pp[11] - pp[12]) * cos7_16; - - - pp[0] = p[0] + p[3]; - pp[1] = p[1] + p[2]; - pp[2] = (p[0] - p[3]) * cos1_8; - pp[3] = (p[1] - p[2]) * cos3_8; - pp[4] = p[4] + p[7]; - pp[5] = p[5] + p[6]; - pp[6] = (p[4] - p[7]) * cos1_8; - pp[7] = (p[5] - p[6]) * cos3_8; - pp[8] = p[8] + p[11]; - pp[9] = p[9] + p[10]; - pp[10] = (p[8] - p[11]) * cos1_8; - pp[11] = (p[9] - p[10]) * cos3_8; - pp[12] = p[12] + p[15]; - pp[13] = p[13] + p[14]; - pp[14] = (p[12] - p[15]) * cos1_8; - pp[15] = (p[13] - p[14]) * cos3_8; - - p[0] = pp[0] + pp[1]; - p[1] = (pp[0] - pp[1]) * cos1_4; - p[2] = pp[2] + pp[3]; - p[3] = (pp[2] - pp[3]) * cos1_4; - p[4] = pp[4] + pp[5]; - p[5] = (pp[4] - pp[5]) * cos1_4; - p[6] = pp[6] + pp[7]; - p[7] = (pp[6] - pp[7]) * cos1_4; - p[8] = pp[8] + pp[9]; - p[9] = (pp[8] - pp[9]) * cos1_4; - p[10] = pp[10] + pp[11]; - p[11] = (pp[10] - pp[11]) * cos1_4; - p[12] = pp[12] + pp[13]; - p[13] = (pp[12] - pp[13]) * cos1_4; - p[14] = pp[14] + pp[15]; - p[15] = (pp[14] - pp[15]) * cos1_4; - - // this is pretty insane coding - float tmp1; - new_v[36 - 17] = -(new_v[4] = (new_v[12] = p[7]) + p[5]) - p[6]; - new_v[44 - 17] = -p[6] - p[7] - p[4]; - new_v[6] = (new_v[10] = (new_v[14] = p[15]) + p[11]) + p[13]; - new_v[34 - 17] = -(new_v[2] = p[15] + p[13] + p[9]) - p[14]; - new_v[38 - 17] = (tmp1 = -p[14] - p[15] - p[10] - p[11]) - p[13]; - new_v[46 - 17] = -p[14] - p[15] - p[12] - p[8]; - new_v[42 - 17] = tmp1 - p[12]; - new_v[48 - 17] = -p[0]; - new_v[0] = p[1]; - new_v[40 - 17] = -(new_v[8] = p[3]) - p[2]; - - p[0] = (x1[0] - x1[31]) * cos1_64; - p[1] = (x1[1] - x1[30]) * cos3_64; - p[2] = (x1[2] - x1[29]) * cos5_64; - p[3] = (x1[3] - x1[28]) * cos7_64; - p[4] = (x1[4] - x1[27]) * cos9_64; - p[5] = (x1[5] - x1[26]) * cos11_64; - p[6] = (x1[6] - x1[25]) * cos13_64; - p[7] = (x1[7] - x1[24]) * cos15_64; - p[8] = (x1[8] - x1[23]) * cos17_64; - p[9] = (x1[9] - x1[22]) * cos19_64; - p[10] = (x1[10] - x1[21]) * cos21_64; - p[11] = (x1[11] - x1[20]) * cos23_64; - p[12] = (x1[12] - x1[19]) * cos25_64; - p[13] = (x1[13] - x1[18]) * cos27_64; - p[14] = (x1[14] - x1[17]) * cos29_64; - p[15] = (x1[15] - x1[16]) * cos31_64; - - - pp[0] = p[0] + p[15]; - pp[1] = p[1] + p[14]; - pp[2] = p[2] + p[13]; - pp[3] = p[3] + p[12]; - pp[4] = p[4] + p[11]; - pp[5] = p[5] + p[10]; - pp[6] = p[6] + p[9]; - pp[7] = p[7] + p[8]; - pp[8] = (p[0] - p[15]) * cos1_32; - pp[9] = (p[1] - p[14]) * cos3_32; - pp[10] = (p[2] - p[13]) * cos5_32; - pp[11] = (p[3] - p[12]) * cos7_32; - pp[12] = (p[4] - p[11]) * cos9_32; - pp[13] = (p[5] - p[10]) * cos11_32; - pp[14] = (p[6] - p[9]) * cos13_32; - pp[15] = (p[7] - p[8]) * cos15_32; - - - p[0] = pp[0] + pp[7]; - p[1] = pp[1] + pp[6]; - p[2] = pp[2] + pp[5]; - p[3] = pp[3] + pp[4]; - p[4] = (pp[0] - pp[7]) * cos1_16; - p[5] = (pp[1] - pp[6]) * cos3_16; - p[6] = (pp[2] - pp[5]) * cos5_16; - p[7] = (pp[3] - pp[4]) * cos7_16; - p[8] = pp[8] + pp[15]; - p[9] = pp[9] + pp[14]; - p[10] = pp[10] + pp[13]; - p[11] = pp[11] + pp[12]; - p[12] = (pp[8] - pp[15]) * cos1_16; - p[13] = (pp[9] - pp[14]) * cos3_16; - p[14] = (pp[10] - pp[13]) * cos5_16; - p[15] = (pp[11] - pp[12]) * cos7_16; - - - pp[0] = p[0] + p[3]; - pp[1] = p[1] + p[2]; - pp[2] = (p[0] - p[3]) * cos1_8; - pp[3] = (p[1] - p[2]) * cos3_8; - pp[4] = p[4] + p[7]; - pp[5] = p[5] + p[6]; - pp[6] = (p[4] - p[7]) * cos1_8; - pp[7] = (p[5] - p[6]) * cos3_8; - pp[8] = p[8] + p[11]; - pp[9] = p[9] + p[10]; - pp[10] = (p[8] - p[11]) * cos1_8; - pp[11] = (p[9] - p[10]) * cos3_8; - pp[12] = p[12] + p[15]; - pp[13] = p[13] + p[14]; - pp[14] = (p[12] - p[15]) * cos1_8; - pp[15] = (p[13] - p[14]) * cos3_8; - - - p[0] = pp[0] + pp[1]; - p[1] = (pp[0] - pp[1]) * cos1_4; - p[2] = pp[2] + pp[3]; - p[3] = (pp[2] - pp[3]) * cos1_4; - p[4] = pp[4] + pp[5]; - p[5] = (pp[4] - pp[5]) * cos1_4; - p[6] = pp[6] + pp[7]; - p[7] = (pp[6] - pp[7]) * cos1_4; - p[8] = pp[8] + pp[9]; - p[9] = (pp[8] - pp[9]) * cos1_4; - p[10] = pp[10] + pp[11]; - p[11] = (pp[10] - pp[11]) * cos1_4; - p[12] = pp[12] + pp[13]; - p[13] = (pp[12] - pp[13]) * cos1_4; - p[14] = pp[14] + pp[15]; - p[15] = (pp[14] - pp[15]) * cos1_4; - - - // manually doing something that a compiler should handle sucks - // coding like this is hard to read - float tmp2; - new_v[5] = (new_v[11] = (new_v[13] = (new_v[15] = p[15]) + p[7]) + p[11]) - + p[5] + p[13]; - new_v[7] = (new_v[9] = p[15] + p[11] + p[3]) + p[13]; - new_v[33 - 17] = -(new_v[1] = (tmp1 = p[13] + p[15] + p[9]) + p[1]) - p[14]; - new_v[35 - 17] = -(new_v[3] = tmp1 + p[5] + p[7]) - p[6] - p[14]; - - new_v[39 - 17] = (tmp1 = -p[10] - p[11] - p[14] - p[15]) - - p[13] - p[2] - p[3]; - new_v[37 - 17] = tmp1 - p[13] - p[5] - p[6] - p[7]; - new_v[41 - 17] = tmp1 - p[12] - p[2] - p[3]; - new_v[43 - 17] = tmp1 - p[12] - (tmp2 = p[4] + p[6] + p[7]); - new_v[47 - 17] = (tmp1 = -p[8] - p[12] - p[14] - p[15]) - p[0]; - new_v[45 - 17] = tmp1 - tmp2; - - // insert V[0-15] (== new_v[0-15]) into actual v: - x1 = new_v; - // float[] x2 = actual_v + actual_write_pos; - float[] dest = actual_v; - - dest[0 + actual_write_pos] = x1[0]; - dest[16 + actual_write_pos] = x1[1]; - dest[32 + actual_write_pos] = x1[2]; - dest[48 + actual_write_pos] = x1[3]; - dest[64 + actual_write_pos] = x1[4]; - dest[80 + actual_write_pos] = x1[5]; - dest[96 + actual_write_pos] = x1[6]; - dest[112 + actual_write_pos] = x1[7]; - dest[128 + actual_write_pos] = x1[8]; - dest[144 + actual_write_pos] = x1[9]; - dest[160 + actual_write_pos] = x1[10]; - dest[176 + actual_write_pos] = x1[11]; - dest[192 + actual_write_pos] = x1[12]; - dest[208 + actual_write_pos] = x1[13]; - dest[224 + actual_write_pos] = x1[14]; - dest[240 + actual_write_pos] = x1[15]; - - // V[16] is always 0.0: - dest[256 + actual_write_pos] = 0.0f; - - // insert V[17-31] (== -new_v[15-1]) into actual v: - dest[272 + actual_write_pos] = -x1[15]; - dest[288 + actual_write_pos] = -x1[14]; - dest[304 + actual_write_pos] = -x1[13]; - dest[320 + actual_write_pos] = -x1[12]; - dest[336 + actual_write_pos] = -x1[11]; - dest[352 + actual_write_pos] = -x1[10]; - dest[368 + actual_write_pos] = -x1[9]; - dest[384 + actual_write_pos] = -x1[8]; - dest[400 + actual_write_pos] = -x1[7]; - dest[416 + actual_write_pos] = -x1[6]; - dest[432 + actual_write_pos] = -x1[5]; - dest[448 + actual_write_pos] = -x1[4]; - dest[464 + actual_write_pos] = -x1[3]; - dest[480 + actual_write_pos] = -x1[2]; - dest[496 + actual_write_pos] = -x1[1]; - - // insert V[32] (== -new_v[0]) into other v: - - } - - /** - * Compute PCM Samples. - */ - - private float[] _tmpOut = new float[32]; - - - private void compute_pcm_samples0(Obuffer buffer) { - final float[] vp = actual_v; - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - float pcm_sample; - final float[] dp = d16[i]; - pcm_sample = (float) (((vp[0 + dvp] * dp[0]) + - (vp[15 + dvp] * dp[1]) + - (vp[14 + dvp] * dp[2]) + - (vp[13 + dvp] * dp[3]) + - (vp[12 + dvp] * dp[4]) + - (vp[11 + dvp] * dp[5]) + - (vp[10 + dvp] * dp[6]) + - (vp[9 + dvp] * dp[7]) + - (vp[8 + dvp] * dp[8]) + - (vp[7 + dvp] * dp[9]) + - (vp[6 + dvp] * dp[10]) + - (vp[5 + dvp] * dp[11]) + - (vp[4 + dvp] * dp[12]) + - (vp[3 + dvp] * dp[13]) + - (vp[2 + dvp] * dp[14]) + - (vp[1 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples1(Obuffer buffer) { - final float[] vp = actual_v; - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[1 + dvp] * dp[0]) + - (vp[0 + dvp] * dp[1]) + - (vp[15 + dvp] * dp[2]) + - (vp[14 + dvp] * dp[3]) + - (vp[13 + dvp] * dp[4]) + - (vp[12 + dvp] * dp[5]) + - (vp[11 + dvp] * dp[6]) + - (vp[10 + dvp] * dp[7]) + - (vp[9 + dvp] * dp[8]) + - (vp[8 + dvp] * dp[9]) + - (vp[7 + dvp] * dp[10]) + - (vp[6 + dvp] * dp[11]) + - (vp[5 + dvp] * dp[12]) + - (vp[4 + dvp] * dp[13]) + - (vp[3 + dvp] * dp[14]) + - (vp[2 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples2(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[2 + dvp] * dp[0]) + - (vp[1 + dvp] * dp[1]) + - (vp[0 + dvp] * dp[2]) + - (vp[15 + dvp] * dp[3]) + - (vp[14 + dvp] * dp[4]) + - (vp[13 + dvp] * dp[5]) + - (vp[12 + dvp] * dp[6]) + - (vp[11 + dvp] * dp[7]) + - (vp[10 + dvp] * dp[8]) + - (vp[9 + dvp] * dp[9]) + - (vp[8 + dvp] * dp[10]) + - (vp[7 + dvp] * dp[11]) + - (vp[6 + dvp] * dp[12]) + - (vp[5 + dvp] * dp[13]) + - (vp[4 + dvp] * dp[14]) + - (vp[3 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples3(Obuffer buffer) { - final float[] vp = actual_v; - - int idx = 0; - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[3 + dvp] * dp[0]) + - (vp[2 + dvp] * dp[1]) + - (vp[1 + dvp] * dp[2]) + - (vp[0 + dvp] * dp[3]) + - (vp[15 + dvp] * dp[4]) + - (vp[14 + dvp] * dp[5]) + - (vp[13 + dvp] * dp[6]) + - (vp[12 + dvp] * dp[7]) + - (vp[11 + dvp] * dp[8]) + - (vp[10 + dvp] * dp[9]) + - (vp[9 + dvp] * dp[10]) + - (vp[8 + dvp] * dp[11]) + - (vp[7 + dvp] * dp[12]) + - (vp[6 + dvp] * dp[13]) + - (vp[5 + dvp] * dp[14]) + - (vp[4 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples4(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[4 + dvp] * dp[0]) + - (vp[3 + dvp] * dp[1]) + - (vp[2 + dvp] * dp[2]) + - (vp[1 + dvp] * dp[3]) + - (vp[0 + dvp] * dp[4]) + - (vp[15 + dvp] * dp[5]) + - (vp[14 + dvp] * dp[6]) + - (vp[13 + dvp] * dp[7]) + - (vp[12 + dvp] * dp[8]) + - (vp[11 + dvp] * dp[9]) + - (vp[10 + dvp] * dp[10]) + - (vp[9 + dvp] * dp[11]) + - (vp[8 + dvp] * dp[12]) + - (vp[7 + dvp] * dp[13]) + - (vp[6 + dvp] * dp[14]) + - (vp[5 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples5(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[5 + dvp] * dp[0]) + - (vp[4 + dvp] * dp[1]) + - (vp[3 + dvp] * dp[2]) + - (vp[2 + dvp] * dp[3]) + - (vp[1 + dvp] * dp[4]) + - (vp[0 + dvp] * dp[5]) + - (vp[15 + dvp] * dp[6]) + - (vp[14 + dvp] * dp[7]) + - (vp[13 + dvp] * dp[8]) + - (vp[12 + dvp] * dp[9]) + - (vp[11 + dvp] * dp[10]) + - (vp[10 + dvp] * dp[11]) + - (vp[9 + dvp] * dp[12]) + - (vp[8 + dvp] * dp[13]) + - (vp[7 + dvp] * dp[14]) + - (vp[6 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples6(Obuffer buffer) { - final float[] vp = actual_v; - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[6 + dvp] * dp[0]) + - (vp[5 + dvp] * dp[1]) + - (vp[4 + dvp] * dp[2]) + - (vp[3 + dvp] * dp[3]) + - (vp[2 + dvp] * dp[4]) + - (vp[1 + dvp] * dp[5]) + - (vp[0 + dvp] * dp[6]) + - (vp[15 + dvp] * dp[7]) + - (vp[14 + dvp] * dp[8]) + - (vp[13 + dvp] * dp[9]) + - (vp[12 + dvp] * dp[10]) + - (vp[11 + dvp] * dp[11]) + - (vp[10 + dvp] * dp[12]) + - (vp[9 + dvp] * dp[13]) + - (vp[8 + dvp] * dp[14]) + - (vp[7 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples7(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[7 + dvp] * dp[0]) + - (vp[6 + dvp] * dp[1]) + - (vp[5 + dvp] * dp[2]) + - (vp[4 + dvp] * dp[3]) + - (vp[3 + dvp] * dp[4]) + - (vp[2 + dvp] * dp[5]) + - (vp[1 + dvp] * dp[6]) + - (vp[0 + dvp] * dp[7]) + - (vp[15 + dvp] * dp[8]) + - (vp[14 + dvp] * dp[9]) + - (vp[13 + dvp] * dp[10]) + - (vp[12 + dvp] * dp[11]) + - (vp[11 + dvp] * dp[12]) + - (vp[10 + dvp] * dp[13]) + - (vp[9 + dvp] * dp[14]) + - (vp[8 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples8(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[8 + dvp] * dp[0]) + - (vp[7 + dvp] * dp[1]) + - (vp[6 + dvp] * dp[2]) + - (vp[5 + dvp] * dp[3]) + - (vp[4 + dvp] * dp[4]) + - (vp[3 + dvp] * dp[5]) + - (vp[2 + dvp] * dp[6]) + - (vp[1 + dvp] * dp[7]) + - (vp[0 + dvp] * dp[8]) + - (vp[15 + dvp] * dp[9]) + - (vp[14 + dvp] * dp[10]) + - (vp[13 + dvp] * dp[11]) + - (vp[12 + dvp] * dp[12]) + - (vp[11 + dvp] * dp[13]) + - (vp[10 + dvp] * dp[14]) + - (vp[9 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples9(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[9 + dvp] * dp[0]) + - (vp[8 + dvp] * dp[1]) + - (vp[7 + dvp] * dp[2]) + - (vp[6 + dvp] * dp[3]) + - (vp[5 + dvp] * dp[4]) + - (vp[4 + dvp] * dp[5]) + - (vp[3 + dvp] * dp[6]) + - (vp[2 + dvp] * dp[7]) + - (vp[1 + dvp] * dp[8]) + - (vp[0 + dvp] * dp[9]) + - (vp[15 + dvp] * dp[10]) + - (vp[14 + dvp] * dp[11]) + - (vp[13 + dvp] * dp[12]) + - (vp[12 + dvp] * dp[13]) + - (vp[11 + dvp] * dp[14]) + - (vp[10 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples10(Obuffer buffer) { - final float[] vp = actual_v; - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[10 + dvp] * dp[0]) + - (vp[9 + dvp] * dp[1]) + - (vp[8 + dvp] * dp[2]) + - (vp[7 + dvp] * dp[3]) + - (vp[6 + dvp] * dp[4]) + - (vp[5 + dvp] * dp[5]) + - (vp[4 + dvp] * dp[6]) + - (vp[3 + dvp] * dp[7]) + - (vp[2 + dvp] * dp[8]) + - (vp[1 + dvp] * dp[9]) + - (vp[0 + dvp] * dp[10]) + - (vp[15 + dvp] * dp[11]) + - (vp[14 + dvp] * dp[12]) + - (vp[13 + dvp] * dp[13]) + - (vp[12 + dvp] * dp[14]) + - (vp[11 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples11(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[11 + dvp] * dp[0]) + - (vp[10 + dvp] * dp[1]) + - (vp[9 + dvp] * dp[2]) + - (vp[8 + dvp] * dp[3]) + - (vp[7 + dvp] * dp[4]) + - (vp[6 + dvp] * dp[5]) + - (vp[5 + dvp] * dp[6]) + - (vp[4 + dvp] * dp[7]) + - (vp[3 + dvp] * dp[8]) + - (vp[2 + dvp] * dp[9]) + - (vp[1 + dvp] * dp[10]) + - (vp[0 + dvp] * dp[11]) + - (vp[15 + dvp] * dp[12]) + - (vp[14 + dvp] * dp[13]) + - (vp[13 + dvp] * dp[14]) + - (vp[12 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples12(Obuffer buffer) { - final float[] vp = actual_v; - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[12 + dvp] * dp[0]) + - (vp[11 + dvp] * dp[1]) + - (vp[10 + dvp] * dp[2]) + - (vp[9 + dvp] * dp[3]) + - (vp[8 + dvp] * dp[4]) + - (vp[7 + dvp] * dp[5]) + - (vp[6 + dvp] * dp[6]) + - (vp[5 + dvp] * dp[7]) + - (vp[4 + dvp] * dp[8]) + - (vp[3 + dvp] * dp[9]) + - (vp[2 + dvp] * dp[10]) + - (vp[1 + dvp] * dp[11]) + - (vp[0 + dvp] * dp[12]) + - (vp[15 + dvp] * dp[13]) + - (vp[14 + dvp] * dp[14]) + - (vp[13 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples13(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[13 + dvp] * dp[0]) + - (vp[12 + dvp] * dp[1]) + - (vp[11 + dvp] * dp[2]) + - (vp[10 + dvp] * dp[3]) + - (vp[9 + dvp] * dp[4]) + - (vp[8 + dvp] * dp[5]) + - (vp[7 + dvp] * dp[6]) + - (vp[6 + dvp] * dp[7]) + - (vp[5 + dvp] * dp[8]) + - (vp[4 + dvp] * dp[9]) + - (vp[3 + dvp] * dp[10]) + - (vp[2 + dvp] * dp[11]) + - (vp[1 + dvp] * dp[12]) + - (vp[0 + dvp] * dp[13]) + - (vp[15 + dvp] * dp[14]) + - (vp[14 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples14(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - final float[] dp = d16[i]; - float pcm_sample; - - pcm_sample = (float) (((vp[14 + dvp] * dp[0]) + - (vp[13 + dvp] * dp[1]) + - (vp[12 + dvp] * dp[2]) + - (vp[11 + dvp] * dp[3]) + - (vp[10 + dvp] * dp[4]) + - (vp[9 + dvp] * dp[5]) + - (vp[8 + dvp] * dp[6]) + - (vp[7 + dvp] * dp[7]) + - (vp[6 + dvp] * dp[8]) + - (vp[5 + dvp] * dp[9]) + - (vp[4 + dvp] * dp[10]) + - (vp[3 + dvp] * dp[11]) + - (vp[2 + dvp] * dp[12]) + - (vp[1 + dvp] * dp[13]) + - (vp[0 + dvp] * dp[14]) + - (vp[15 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - private void compute_pcm_samples15(Obuffer buffer) { - final float[] vp = actual_v; - - //int inc = v_inc; - final float[] tmpOut = _tmpOut; - int dvp = 0; - - // fat chance of having this loop unroll - for (int i = 0; i < 32; i++) { - float pcm_sample; - final float dp[] = d16[i]; - pcm_sample = (float) (((vp[15 + dvp] * dp[0]) + - (vp[14 + dvp] * dp[1]) + - (vp[13 + dvp] * dp[2]) + - (vp[12 + dvp] * dp[3]) + - (vp[11 + dvp] * dp[4]) + - (vp[10 + dvp] * dp[5]) + - (vp[9 + dvp] * dp[6]) + - (vp[8 + dvp] * dp[7]) + - (vp[7 + dvp] * dp[8]) + - (vp[6 + dvp] * dp[9]) + - (vp[5 + dvp] * dp[10]) + - (vp[4 + dvp] * dp[11]) + - (vp[3 + dvp] * dp[12]) + - (vp[2 + dvp] * dp[13]) + - (vp[1 + dvp] * dp[14]) + - (vp[0 + dvp] * dp[15]) - ) * scalefactor); - - tmpOut[i] = pcm_sample; - dvp += 16; - } // for - } - - private void compute_pcm_samples(Obuffer buffer) { - - switch (actual_write_pos) { - case 0: - compute_pcm_samples0(buffer); - break; - case 1: - compute_pcm_samples1(buffer); - break; - case 2: - compute_pcm_samples2(buffer); - break; - case 3: - compute_pcm_samples3(buffer); - break; - case 4: - compute_pcm_samples4(buffer); - break; - case 5: - compute_pcm_samples5(buffer); - break; - case 6: - compute_pcm_samples6(buffer); - break; - case 7: - compute_pcm_samples7(buffer); - break; - case 8: - compute_pcm_samples8(buffer); - break; - case 9: - compute_pcm_samples9(buffer); - break; - case 10: - compute_pcm_samples10(buffer); - break; - case 11: - compute_pcm_samples11(buffer); - break; - case 12: - compute_pcm_samples12(buffer); - break; - case 13: - compute_pcm_samples13(buffer); - break; - case 14: - compute_pcm_samples14(buffer); - break; - case 15: - compute_pcm_samples15(buffer); - break; - } - - if (buffer != null) { - buffer.appendSamples(channel, _tmpOut); - } - -/* - // MDM: I was considering putting in quality control for - // low-spec CPUs, but the performance gain (about 10-15%) - // did not justify the considerable drop in audio quality. - switch (inc) - { - case 16: - buffer.appendSamples(channel, tmpOut); - break; - case 32: - for (int i=0; i<16; i++) - { - buffer.append(channel, (short)tmpOut[i]); - buffer.append(channel, (short)tmpOut[i]); - } - break; - case 64: - for (int i=0; i<8; i++) - { - buffer.append(channel, (short)tmpOut[i]); - buffer.append(channel, (short)tmpOut[i]); - buffer.append(channel, (short)tmpOut[i]); - buffer.append(channel, (short)tmpOut[i]); - } - break; - - } -*/ - } - - /** - * Calculate 32 PCM samples and put the into the Obuffer-object. - */ - - public void calculate_pcm_samples(Obuffer buffer) { - compute_new_v(); - compute_pcm_samples(buffer); - - actual_write_pos = (actual_write_pos + 1) & 0xf; - actual_v = (actual_v == v1) ? v2 : v1; - - // initialize samples[]: - //for (register float *floatp = samples + 32; floatp > samples; ) - // *--floatp = 0.0f; - - // MDM: this may not be necessary. The Layer III decoder always - // outputs 32 subband samples, but I haven't checked layer I & II. - for (int p = 0; p < 32; p++) - samples[p] = 0.0f; - } - - - private static final double MY_PI = 3.14159265358979323846; - private static final float cos1_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 64.0))); - private static final float cos3_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 64.0))); - private static final float cos5_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 64.0))); - private static final float cos7_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 64.0))); - private static final float cos9_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 9.0 / 64.0))); - private static final float cos11_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 11.0 / 64.0))); - private static final float cos13_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 13.0 / 64.0))); - private static final float cos15_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 15.0 / 64.0))); - private static final float cos17_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 17.0 / 64.0))); - private static final float cos19_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 19.0 / 64.0))); - private static final float cos21_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 21.0 / 64.0))); - private static final float cos23_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 23.0 / 64.0))); - private static final float cos25_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 25.0 / 64.0))); - private static final float cos27_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 27.0 / 64.0))); - private static final float cos29_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 29.0 / 64.0))); - private static final float cos31_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 31.0 / 64.0))); - private static final float cos1_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 32.0))); - private static final float cos3_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 32.0))); - private static final float cos5_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 32.0))); - private static final float cos7_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 32.0))); - private static final float cos9_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 9.0 / 32.0))); - private static final float cos11_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 11.0 / 32.0))); - private static final float cos13_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 13.0 / 32.0))); - private static final float cos15_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 15.0 / 32.0))); - private static final float cos1_16 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 16.0))); - private static final float cos3_16 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 16.0))); - private static final float cos5_16 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 16.0))); - private static final float cos7_16 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 16.0))); - private static final float cos1_8 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 8.0))); - private static final float cos3_8 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 8.0))); - private static final float cos1_4 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 4.0))); - - // Note: These values are not in the same order - // as in Annex 3-B.3 of the ISO/IEC DIS 11172-3 - // private float d[] = {0.000000000, -4.000442505}; - - private static float d[] = null; - - /** - * d[] split into subarrays of length 16. This provides for - * more faster access by allowing a block of 16 to be addressed - * with constant offset. - **/ - private static float d16[][] = null; - - /** - * Loads the data for the d[] from the resource SFd.ser. - * - * @return the loaded values for d[]. - */ - static private float[] load_d() { - try { - Class elemType = Float.TYPE; - Object o = JavaLayerUtils.deserializeArrayResource("sfd.ser", elemType, 512); - return (float[]) o; - } catch (IOException ex) { - throw new ExceptionInInitializerError(ex); - } - } - - /** - * Converts a 1D array into a number of smaller arrays. This is used - * to achieve offset + constant indexing into an array. Each sub-array - * represents a block of values of the original array. - * - * @param array The array to split up into blocks. - * @param blockSize The size of the blocks to split the array - * into. This must be an exact divisor of - * the length of the array, or some data - * will be lost from the main array. - * @return An array of arrays in which each element in the returned - * array will be of length blockSize. - */ - static private float[][] splitArray(final float[] array, final int blockSize) { - int size = array.length / blockSize; - float[][] split = new float[size][]; - for (int i = 0; i < size; i++) { - split[i] = subArray(array, i * blockSize, blockSize); - } - return split; - } - - /** - * Returns a subarray of an existing array. - * - * @param array The array to retrieve a subarra from. - * @param offs The offset in the array that corresponds to - * the first index of the subarray. - * @param len The number of indeces in the subarray. - * @return The subarray, which may be of length 0. - */ - static private float[] subArray(final float[] array, final int offs, int len) { - if (offs + len > array.length) { - len = array.length - offs; - } - - if (len < 0) - len = 0; - - float[] subarray = new float[len]; - for (int i = 0; i < len; i++) { - subarray[i] = array[offs + i]; - } - - return subarray; - } - - // The original data for d[]. This data is loaded from a file - // to reduce the overall package size and to improve performance. -/* - static final float d_data[] = { - 0.000000000f, -0.000442505f, 0.003250122f, -0.007003784f, - 0.031082153f, -0.078628540f, 0.100311279f, -0.572036743f, - 1.144989014f, 0.572036743f, 0.100311279f, 0.078628540f, - 0.031082153f, 0.007003784f, 0.003250122f, 0.000442505f, - -0.000015259f, -0.000473022f, 0.003326416f, -0.007919312f, - 0.030517578f, -0.084182739f, 0.090927124f, -0.600219727f, - 1.144287109f, 0.543823242f, 0.108856201f, 0.073059082f, - 0.031478882f, 0.006118774f, 0.003173828f, 0.000396729f, - -0.000015259f, -0.000534058f, 0.003387451f, -0.008865356f, - 0.029785156f, -0.089706421f, 0.080688477f, -0.628295898f, - 1.142211914f, 0.515609741f, 0.116577148f, 0.067520142f, - 0.031738281f, 0.005294800f, 0.003082275f, 0.000366211f, - -0.000015259f, -0.000579834f, 0.003433228f, -0.009841919f, - 0.028884888f, -0.095169067f, 0.069595337f, -0.656219482f, - 1.138763428f, 0.487472534f, 0.123474121f, 0.061996460f, - 0.031845093f, 0.004486084f, 0.002990723f, 0.000320435f, - -0.000015259f, -0.000625610f, 0.003463745f, -0.010848999f, - 0.027801514f, -0.100540161f, 0.057617188f, -0.683914185f, - 1.133926392f, 0.459472656f, 0.129577637f, 0.056533813f, - 0.031814575f, 0.003723145f, 0.002899170f, 0.000289917f, - -0.000015259f, -0.000686646f, 0.003479004f, -0.011886597f, - 0.026535034f, -0.105819702f, 0.044784546f, -0.711318970f, - 1.127746582f, 0.431655884f, 0.134887695f, 0.051132202f, - 0.031661987f, 0.003005981f, 0.002792358f, 0.000259399f, - -0.000015259f, -0.000747681f, 0.003479004f, -0.012939453f, - 0.025085449f, -0.110946655f, 0.031082153f, -0.738372803f, - 1.120223999f, 0.404083252f, 0.139450073f, 0.045837402f, - 0.031387329f, 0.002334595f, 0.002685547f, 0.000244141f, - -0.000030518f, -0.000808716f, 0.003463745f, -0.014022827f, - 0.023422241f, -0.115921021f, 0.016510010f, -0.765029907f, - 1.111373901f, 0.376800537f, 0.143264771f, 0.040634155f, - 0.031005859f, 0.001693726f, 0.002578735f, 0.000213623f, - -0.000030518f, -0.000885010f, 0.003417969f, -0.015121460f, - 0.021575928f, -0.120697021f, 0.001068115f, -0.791213989f, - 1.101211548f, 0.349868774f, 0.146362305f, 0.035552979f, - 0.030532837f, 0.001098633f, 0.002456665f, 0.000198364f, - -0.000030518f, -0.000961304f, 0.003372192f, -0.016235352f, - 0.019531250f, -0.125259399f, -0.015228271f, -0.816864014f, - 1.089782715f, 0.323318481f, 0.148773193f, 0.030609131f, - 0.029937744f, 0.000549316f, 0.002349854f, 0.000167847f, - -0.000030518f, -0.001037598f, 0.003280640f, -0.017349243f, - 0.017257690f, -0.129562378f, -0.032379150f, -0.841949463f, - 1.077117920f, 0.297210693f, 0.150497437f, 0.025817871f, - 0.029281616f, 0.000030518f, 0.002243042f, 0.000152588f, - -0.000045776f, -0.001113892f, 0.003173828f, -0.018463135f, - 0.014801025f, -0.133590698f, -0.050354004f, -0.866363525f, - 1.063217163f, 0.271591187f, 0.151596069f, 0.021179199f, - 0.028533936f, -0.000442505f, 0.002120972f, 0.000137329f, - -0.000045776f, -0.001205444f, 0.003051758f, -0.019577026f, - 0.012115479f, -0.137298584f, -0.069168091f, -0.890090942f, - 1.048156738f, 0.246505737f, 0.152069092f, 0.016708374f, - 0.027725220f, -0.000869751f, 0.002014160f, 0.000122070f, - -0.000061035f, -0.001296997f, 0.002883911f, -0.020690918f, - 0.009231567f, -0.140670776f, -0.088775635f, -0.913055420f, - 1.031936646f, 0.221984863f, 0.151962280f, 0.012420654f, - 0.026840210f, -0.001266479f, 0.001907349f, 0.000106812f, - -0.000061035f, -0.001388550f, 0.002700806f, -0.021789551f, - 0.006134033f, -0.143676758f, -0.109161377f, -0.935195923f, - 1.014617920f, 0.198059082f, 0.151306152f, 0.008316040f, - 0.025909424f, -0.001617432f, 0.001785278f, 0.000106812f, - -0.000076294f, -0.001480103f, 0.002487183f, -0.022857666f, - 0.002822876f, -0.146255493f, -0.130310059f, -0.956481934f, - 0.996246338f, 0.174789429f, 0.150115967f, 0.004394531f, - 0.024932861f, -0.001937866f, 0.001693726f, 0.000091553f, - -0.000076294f, -0.001586914f, 0.002227783f, -0.023910522f, - -0.000686646f, -0.148422241f, -0.152206421f, -0.976852417f, - 0.976852417f, 0.152206421f, 0.148422241f, 0.000686646f, - 0.023910522f, -0.002227783f, 0.001586914f, 0.000076294f, - -0.000091553f, -0.001693726f, 0.001937866f, -0.024932861f, - -0.004394531f, -0.150115967f, -0.174789429f, -0.996246338f, - 0.956481934f, 0.130310059f, 0.146255493f, -0.002822876f, - 0.022857666f, -0.002487183f, 0.001480103f, 0.000076294f, - -0.000106812f, -0.001785278f, 0.001617432f, -0.025909424f, - -0.008316040f, -0.151306152f, -0.198059082f, -1.014617920f, - 0.935195923f, 0.109161377f, 0.143676758f, -0.006134033f, - 0.021789551f, -0.002700806f, 0.001388550f, 0.000061035f, - -0.000106812f, -0.001907349f, 0.001266479f, -0.026840210f, - -0.012420654f, -0.151962280f, -0.221984863f, -1.031936646f, - 0.913055420f, 0.088775635f, 0.140670776f, -0.009231567f, - 0.020690918f, -0.002883911f, 0.001296997f, 0.000061035f, - -0.000122070f, -0.002014160f, 0.000869751f, -0.027725220f, - -0.016708374f, -0.152069092f, -0.246505737f, -1.048156738f, - 0.890090942f, 0.069168091f, 0.137298584f, -0.012115479f, - 0.019577026f, -0.003051758f, 0.001205444f, 0.000045776f, - -0.000137329f, -0.002120972f, 0.000442505f, -0.028533936f, - -0.021179199f, -0.151596069f, -0.271591187f, -1.063217163f, - 0.866363525f, 0.050354004f, 0.133590698f, -0.014801025f, - 0.018463135f, -0.003173828f, 0.001113892f, 0.000045776f, - -0.000152588f, -0.002243042f, -0.000030518f, -0.029281616f, - -0.025817871f, -0.150497437f, -0.297210693f, -1.077117920f, - 0.841949463f, 0.032379150f, 0.129562378f, -0.017257690f, - 0.017349243f, -0.003280640f, 0.001037598f, 0.000030518f, - -0.000167847f, -0.002349854f, -0.000549316f, -0.029937744f, - -0.030609131f, -0.148773193f, -0.323318481f, -1.089782715f, - 0.816864014f, 0.015228271f, 0.125259399f, -0.019531250f, - 0.016235352f, -0.003372192f, 0.000961304f, 0.000030518f, - -0.000198364f, -0.002456665f, -0.001098633f, -0.030532837f, - -0.035552979f, -0.146362305f, -0.349868774f, -1.101211548f, - 0.791213989f, -0.001068115f, 0.120697021f, -0.021575928f, - 0.015121460f, -0.003417969f, 0.000885010f, 0.000030518f, - -0.000213623f, -0.002578735f, -0.001693726f, -0.031005859f, - -0.040634155f, -0.143264771f, -0.376800537f, -1.111373901f, - 0.765029907f, -0.016510010f, 0.115921021f, -0.023422241f, - 0.014022827f, -0.003463745f, 0.000808716f, 0.000030518f, - -0.000244141f, -0.002685547f, -0.002334595f, -0.031387329f, - -0.045837402f, -0.139450073f, -0.404083252f, -1.120223999f, - 0.738372803f, -0.031082153f, 0.110946655f, -0.025085449f, - 0.012939453f, -0.003479004f, 0.000747681f, 0.000015259f, - -0.000259399f, -0.002792358f, -0.003005981f, -0.031661987f, - -0.051132202f, -0.134887695f, -0.431655884f, -1.127746582f, - 0.711318970f, -0.044784546f, 0.105819702f, -0.026535034f, - 0.011886597f, -0.003479004f, 0.000686646f, 0.000015259f, - -0.000289917f, -0.002899170f, -0.003723145f, -0.031814575f, - -0.056533813f, -0.129577637f, -0.459472656f, -1.133926392f, - 0.683914185f, -0.057617188f, 0.100540161f, -0.027801514f, - 0.010848999f, -0.003463745f, 0.000625610f, 0.000015259f, - -0.000320435f, -0.002990723f, -0.004486084f, -0.031845093f, - -0.061996460f, -0.123474121f, -0.487472534f, -1.138763428f, - 0.656219482f, -0.069595337f, 0.095169067f, -0.028884888f, - 0.009841919f, -0.003433228f, 0.000579834f, 0.000015259f, - -0.000366211f, -0.003082275f, -0.005294800f, -0.031738281f, - -0.067520142f, -0.116577148f, -0.515609741f, -1.142211914f, - 0.628295898f, -0.080688477f, 0.089706421f, -0.029785156f, - 0.008865356f, -0.003387451f, 0.000534058f, 0.000015259f, - -0.000396729f, -0.003173828f, -0.006118774f, -0.031478882f, - -0.073059082f, -0.108856201f, -0.543823242f, -1.144287109f, - 0.600219727f, -0.090927124f, 0.084182739f, -0.030517578f, - 0.007919312f, -0.003326416f, 0.000473022f, 0.000015259f - }; - */ - -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/au2lin.ser b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/au2lin.ser deleted file mode 100644 index 0b20bc8bbd97303c0e82602289279017a3d51517..0000000000000000000000000000000000000000 Binary files a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/au2lin.ser and /dev/null differ diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/huffcodetab.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/huffcodetab.java deleted file mode 100644 index 5a86067a6c27a3b15678de96e4b557593120f61d..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/huffcodetab.java +++ /dev/null @@ -1,586 +0,0 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 16/11/99 Renamed class, added javadoc, and changed table - * name from String to 3 chars. mdm@techie.com - * 02/15/99 Java Conversion by E.B, javalayer@javazoom.net - * - * 04/19/97 : Adapted from the ISO MPEG Audio Subgroup Software Simulation - * Group's public c source for its MPEG audio decoder. Miscellaneous - * changes by Jeff Tsay (ctsay@pasteur.eecs.berkeley.edu). - *----------------------------------------------------------------------- - * Copyright (c) 1991 MPEG/audio software simulation group, All Rights Reserved - * MPEG/audio coding/decoding software, work in progress - * NOT for public distribution until verified and approved by the - * MPEG/audio committee. For further information, please contact - * Davis Pan, 508-493-2241, e-mail: pan@3d.enet.dec.com - * - * VERSION 4.1 - * changes made since last update: - * date programmers comment - * 27.2.92 F.O.Witte (ITT Intermetall) - * 8/24/93 M. Iwadare Changed for 1 pass decoding. - * 7/14/94 J. Koller useless 'typedef' before huffcodetab removed - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -package v4lk.lwbd.decoders.processing.jlayer; - -/** - * Class to implements Huffman decoder. - */ -final class huffcodetab { - private static final int MXOFF = 250; - private static final int HTN = 34; - - private char tablename0 = ' '; /* string, containing table_description */ - private char tablename1 = ' '; /* string, containing table_description */ - private char tablename2 = ' '; /* string, containing table_description */ - - private int xlen; /* max. x-index+ */ - private int ylen; /* max. y-index+ */ - private int linbits; /* number of linbits */ - private int linmax; /* max number to be stored in linbits */ - private int ref; /* a positive value indicates a reference */ - private int[] table = null; /* pointer to array[xlen][ylen] */ - private int[] hlen = null; /* pointer to array[xlen][ylen] */ - private int[][] val = null; /* decoder tree */ - private int treelen; /* length of decoder tree */ - - private static int ValTab0[][] = { - {0, 0} // dummy - }; - - private static int ValTab1[][] = { - {2, 1}, {0, 0}, {2, 1}, {0, 16}, {2, 1}, {0, 1}, {0, 17}, - }; - - private static int ValTab2[][] = { - {2, 1}, {0, 0}, {4, 1}, {2, 1}, {0, 16}, {0, 1}, {2, 1}, {0, 17}, {4, 1}, {2, 1}, - {0, 32}, {0, 33}, {2, 1}, {0, 18}, {2, 1}, {0, 2}, {0, 34}, - }; - - private static int ValTab3[][] = { - {4, 1}, {2, 1}, {0, 0}, {0, 1}, {2, 1}, {0, 17}, {2, 1}, {0, 16}, {4, 1}, {2, 1}, - {0, 32}, {0, 33}, {2, 1}, {0, 18}, {2, 1}, {0, 2}, {0, 34}, - }; - - private static int ValTab4[][] = {{0, 0}}; // dummy - - private static int ValTab5[][] = { - {2, 1}, {0, 0}, {4, 1}, {2, 1}, {0, 16}, {0, 1}, {2, 1}, {0, 17}, {8, 1}, {4, 1}, - {2, 1}, {0, 32}, {0, 2}, {2, 1}, {0, 33}, {0, 18}, {8, 1}, {4, 1}, {2, 1}, {0, 34}, - {0, 48}, {2, 1}, {0, 3}, {0, 19}, {2, 1}, {0, 49}, {2, 1}, {0, 50}, {2, 1}, {0, 35}, - {0, 51}, - }; - - private static int ValTab6[][] = { - {6, 1}, {4, 1}, {2, 1}, {0, 0}, {0, 16}, {0, 17}, {6, 1}, {2, 1}, {0, 1}, {2, 1}, - {0, 32}, {0, 33}, {6, 1}, {2, 1}, {0, 18}, {2, 1}, {0, 2}, {0, 34}, {4, 1}, {2, 1}, - {0, 49}, {0, 19}, {4, 1}, {2, 1}, {0, 48}, {0, 50}, {2, 1}, {0, 35}, {2, 1}, {0, 3}, - {0, 51}, - }; - - private static int ValTab7[][] = { - {2, 1}, {0, 0}, {4, 1}, {2, 1}, {0, 16}, {0, 1}, {8, 1}, {2, 1}, {0, 17}, {4, 1}, - {2, 1}, {0, 32}, {0, 2}, {0, 33}, {18, 1}, {6, 1}, {2, 1}, {0, 18}, {2, 1}, {0, 34}, - {0, 48}, {4, 1}, {2, 1}, {0, 49}, {0, 19}, {4, 1}, {2, 1}, {0, 3}, {0, 50}, {2, 1}, - {0, 35}, {0, 4}, {10, 1}, {4, 1}, {2, 1}, {0, 64}, {0, 65}, {2, 1}, {0, 20}, {2, 1}, - {0, 66}, {0, 36}, {12, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 51}, {0, 67}, {0, 80}, {4, 1}, - {2, 1}, {0, 52}, {0, 5}, {0, 81}, {6, 1}, {2, 1}, {0, 21}, {2, 1}, {0, 82}, {0, 37}, - {4, 1}, {2, 1}, {0, 68}, {0, 53}, {4, 1}, {2, 1}, {0, 83}, {0, 84}, {2, 1}, {0, 69}, - {0, 85}, - }; - - private static int ValTab8[][] = { - {6, 1}, {2, 1}, {0, 0}, {2, 1}, {0, 16}, {0, 1}, {2, 1}, {0, 17}, {4, 1}, {2, 1}, - {0, 33}, {0, 18}, {14, 1}, {4, 1}, {2, 1}, {0, 32}, {0, 2}, {2, 1}, {0, 34}, {4, 1}, - {2, 1}, {0, 48}, {0, 3}, {2, 1}, {0, 49}, {0, 19}, {14, 1}, {8, 1}, {4, 1}, {2, 1}, - {0, 50}, {0, 35}, {2, 1}, {0, 64}, {0, 4}, {2, 1}, {0, 65}, {2, 1}, {0, 20}, {0, 66}, - {12, 1}, {6, 1}, {2, 1}, {0, 36}, {2, 1}, {0, 51}, {0, 80}, {4, 1}, {2, 1}, {0, 67}, - {0, 52}, {0, 81}, {6, 1}, {2, 1}, {0, 21}, {2, 1}, {0, 5}, {0, 82}, {6, 1}, {2, 1}, - {0, 37}, {2, 1}, {0, 68}, {0, 53}, {2, 1}, {0, 83}, {2, 1}, {0, 69}, {2, 1}, {0, 84}, - {0, 85}, - }; - - private static int ValTab9[][] = { - {8, 1}, {4, 1}, {2, 1}, {0, 0}, {0, 16}, {2, 1}, {0, 1}, {0, 17}, {10, 1}, {4, 1}, - {2, 1}, {0, 32}, {0, 33}, {2, 1}, {0, 18}, {2, 1}, {0, 2}, {0, 34}, {12, 1}, {6, 1}, - {4, 1}, {2, 1}, {0, 48}, {0, 3}, {0, 49}, {2, 1}, {0, 19}, {2, 1}, {0, 50}, {0, 35}, - {12, 1}, {4, 1}, {2, 1}, {0, 65}, {0, 20}, {4, 1}, {2, 1}, {0, 64}, {0, 51}, {2, 1}, - {0, 66}, {0, 36}, {10, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 4}, {0, 80}, {0, 67}, {2, 1}, - {0, 52}, {0, 81}, {8, 1}, {4, 1}, {2, 1}, {0, 21}, {0, 82}, {2, 1}, {0, 37}, {0, 68}, - {6, 1}, {4, 1}, {2, 1}, {0, 5}, {0, 84}, {0, 83}, {2, 1}, {0, 53}, {2, 1}, {0, 69}, - {0, 85}, - }; - - private static int ValTab10[][] = { - {2, 1}, {0, 0}, {4, 1}, {2, 1}, {0, 16}, {0, 1}, {10, 1}, {2, 1}, {0, 17}, {4, 1}, - {2, 1}, {0, 32}, {0, 2}, {2, 1}, {0, 33}, {0, 18}, {28, 1}, {8, 1}, {4, 1}, {2, 1}, - {0, 34}, {0, 48}, {2, 1}, {0, 49}, {0, 19}, {8, 1}, {4, 1}, {2, 1}, {0, 3}, {0, 50}, - {2, 1}, {0, 35}, {0, 64}, {4, 1}, {2, 1}, {0, 65}, {0, 20}, {4, 1}, {2, 1}, {0, 4}, - {0, 51}, {2, 1}, {0, 66}, {0, 36}, {28, 1}, {10, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 80}, - {0, 5}, {0, 96}, {2, 1}, {0, 97}, {0, 22}, {12, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 67}, - {0, 52}, {0, 81}, {2, 1}, {0, 21}, {2, 1}, {0, 82}, {0, 37}, {4, 1}, {2, 1}, {0, 38}, - {0, 54}, {0, 113}, {20, 1}, {8, 1}, {2, 1}, {0, 23}, {4, 1}, {2, 1}, {0, 68}, {0, 83}, - {0, 6}, {6, 1}, {4, 1}, {2, 1}, {0, 53}, {0, 69}, {0, 98}, {2, 1}, {0, 112}, {2, 1}, - {0, 7}, {0, 100}, {14, 1}, {4, 1}, {2, 1}, {0, 114}, {0, 39}, {6, 1}, {2, 1}, {0, 99}, - {2, 1}, {0, 84}, {0, 85}, {2, 1}, {0, 70}, {0, 115}, {8, 1}, {4, 1}, {2, 1}, {0, 55}, - {0, 101}, {2, 1}, {0, 86}, {0, 116}, {6, 1}, {2, 1}, {0, 71}, {2, 1}, {0, 102}, {0, 117}, - {4, 1}, {2, 1}, {0, 87}, {0, 118}, {2, 1}, {0, 103}, {0, 119}, - }; - - private static int ValTab11[][] = { - {6, 1}, {2, 1}, {0, 0}, {2, 1}, {0, 16}, {0, 1}, {8, 1}, {2, 1}, {0, 17}, {4, 1}, - {2, 1}, {0, 32}, {0, 2}, {0, 18}, {24, 1}, {8, 1}, {2, 1}, {0, 33}, {2, 1}, {0, 34}, - {2, 1}, {0, 48}, {0, 3}, {4, 1}, {2, 1}, {0, 49}, {0, 19}, {4, 1}, {2, 1}, {0, 50}, - {0, 35}, {4, 1}, {2, 1}, {0, 64}, {0, 4}, {2, 1}, {0, 65}, {0, 20}, {30, 1}, {16, 1}, - {10, 1}, {4, 1}, {2, 1}, {0, 66}, {0, 36}, {4, 1}, {2, 1}, {0, 51}, {0, 67}, {0, 80}, - {4, 1}, {2, 1}, {0, 52}, {0, 81}, {0, 97}, {6, 1}, {2, 1}, {0, 22}, {2, 1}, {0, 6}, - {0, 38}, {2, 1}, {0, 98}, {2, 1}, {0, 21}, {2, 1}, {0, 5}, {0, 82}, {16, 1}, {10, 1}, - {6, 1}, {4, 1}, {2, 1}, {0, 37}, {0, 68}, {0, 96}, {2, 1}, {0, 99}, {0, 54}, {4, 1}, - {2, 1}, {0, 112}, {0, 23}, {0, 113}, {16, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 7}, {0, 100}, - {0, 114}, {2, 1}, {0, 39}, {4, 1}, {2, 1}, {0, 83}, {0, 53}, {2, 1}, {0, 84}, {0, 69}, - {10, 1}, {4, 1}, {2, 1}, {0, 70}, {0, 115}, {2, 1}, {0, 55}, {2, 1}, {0, 101}, {0, 86}, - {10, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 85}, {0, 87}, {0, 116}, {2, 1}, {0, 71}, {0, 102}, - {4, 1}, {2, 1}, {0, 117}, {0, 118}, {2, 1}, {0, 103}, {0, 119}, - }; - - private static int ValTab12[][] = { - {12, 1}, {4, 1}, {2, 1}, {0, 16}, {0, 1}, {2, 1}, {0, 17}, {2, 1}, {0, 0}, {2, 1}, - {0, 32}, {0, 2}, {16, 1}, {4, 1}, {2, 1}, {0, 33}, {0, 18}, {4, 1}, {2, 1}, {0, 34}, - {0, 49}, {2, 1}, {0, 19}, {2, 1}, {0, 48}, {2, 1}, {0, 3}, {0, 64}, {26, 1}, {8, 1}, - {4, 1}, {2, 1}, {0, 50}, {0, 35}, {2, 1}, {0, 65}, {0, 51}, {10, 1}, {4, 1}, {2, 1}, - {0, 20}, {0, 66}, {2, 1}, {0, 36}, {2, 1}, {0, 4}, {0, 80}, {4, 1}, {2, 1}, {0, 67}, - {0, 52}, {2, 1}, {0, 81}, {0, 21}, {28, 1}, {14, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 82}, - {0, 37}, {2, 1}, {0, 83}, {0, 53}, {4, 1}, {2, 1}, {0, 96}, {0, 22}, {0, 97}, {4, 1}, - {2, 1}, {0, 98}, {0, 38}, {6, 1}, {4, 1}, {2, 1}, {0, 5}, {0, 6}, {0, 68}, {2, 1}, - {0, 84}, {0, 69}, {18, 1}, {10, 1}, {4, 1}, {2, 1}, {0, 99}, {0, 54}, {4, 1}, {2, 1}, - {0, 112}, {0, 7}, {0, 113}, {4, 1}, {2, 1}, {0, 23}, {0, 100}, {2, 1}, {0, 70}, {0, 114}, - {10, 1}, {6, 1}, {2, 1}, {0, 39}, {2, 1}, {0, 85}, {0, 115}, {2, 1}, {0, 55}, {0, 86}, - {8, 1}, {4, 1}, {2, 1}, {0, 101}, {0, 116}, {2, 1}, {0, 71}, {0, 102}, {4, 1}, {2, 1}, - {0, 117}, {0, 87}, {2, 1}, {0, 118}, {2, 1}, {0, 103}, {0, 119}, - }; - - private static int ValTab13[][] = { - {2, 1}, {0, 0}, {6, 1}, {2, 1}, {0, 16}, {2, 1}, {0, 1}, {0, 17}, {28, 1}, {8, 1}, - {4, 1}, {2, 1}, {0, 32}, {0, 2}, {2, 1}, {0, 33}, {0, 18}, {8, 1}, {4, 1}, {2, 1}, - {0, 34}, {0, 48}, {2, 1}, {0, 3}, {0, 49}, {6, 1}, {2, 1}, {0, 19}, {2, 1}, {0, 50}, - {0, 35}, {4, 1}, {2, 1}, {0, 64}, {0, 4}, {0, 65}, {70, 1}, {28, 1}, {14, 1}, {6, 1}, - {2, 1}, {0, 20}, {2, 1}, {0, 51}, {0, 66}, {4, 1}, {2, 1}, {0, 36}, {0, 80}, {2, 1}, - {0, 67}, {0, 52}, {4, 1}, {2, 1}, {0, 81}, {0, 21}, {4, 1}, {2, 1}, {0, 5}, {0, 82}, - {2, 1}, {0, 37}, {2, 1}, {0, 68}, {0, 83}, {14, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 96}, - {0, 6}, {2, 1}, {0, 97}, {0, 22}, {4, 1}, {2, 1}, {0, 128}, {0, 8}, {0, 129}, {16, 1}, - {8, 1}, {4, 1}, {2, 1}, {0, 53}, {0, 98}, {2, 1}, {0, 38}, {0, 84}, {4, 1}, {2, 1}, - {0, 69}, {0, 99}, {2, 1}, {0, 54}, {0, 112}, {6, 1}, {4, 1}, {2, 1}, {0, 7}, {0, 85}, - {0, 113}, {2, 1}, {0, 23}, {2, 1}, {0, 39}, {0, 55}, {72, 1}, {24, 1}, {12, 1}, {4, 1}, - {2, 1}, {0, 24}, {0, 130}, {2, 1}, {0, 40}, {4, 1}, {2, 1}, {0, 100}, {0, 70}, {0, 114}, - {8, 1}, {4, 1}, {2, 1}, {0, 132}, {0, 72}, {2, 1}, {0, 144}, {0, 9}, {2, 1}, {0, 145}, - {0, 25}, {24, 1}, {14, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 115}, {0, 101}, {2, 1}, {0, 86}, - {0, 116}, {4, 1}, {2, 1}, {0, 71}, {0, 102}, {0, 131}, {6, 1}, {2, 1}, {0, 56}, {2, 1}, - {0, 117}, {0, 87}, {2, 1}, {0, 146}, {0, 41}, {14, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 103}, - {0, 133}, {2, 1}, {0, 88}, {0, 57}, {2, 1}, {0, 147}, {2, 1}, {0, 73}, {0, 134}, {6, 1}, - {2, 1}, {0, 160}, {2, 1}, {0, 104}, {0, 10}, {2, 1}, {0, 161}, {0, 26}, {68, 1}, {24, 1}, - {12, 1}, {4, 1}, {2, 1}, {0, 162}, {0, 42}, {4, 1}, {2, 1}, {0, 149}, {0, 89}, {2, 1}, - {0, 163}, {0, 58}, {8, 1}, {4, 1}, {2, 1}, {0, 74}, {0, 150}, {2, 1}, {0, 176}, {0, 11}, - {2, 1}, {0, 177}, {0, 27}, {20, 1}, {8, 1}, {2, 1}, {0, 178}, {4, 1}, {2, 1}, {0, 118}, - {0, 119}, {0, 148}, {6, 1}, {4, 1}, {2, 1}, {0, 135}, {0, 120}, {0, 164}, {4, 1}, {2, 1}, - {0, 105}, {0, 165}, {0, 43}, {12, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 90}, {0, 136}, {0, 179}, - {2, 1}, {0, 59}, {2, 1}, {0, 121}, {0, 166}, {6, 1}, {4, 1}, {2, 1}, {0, 106}, {0, 180}, - {0, 192}, {4, 1}, {2, 1}, {0, 12}, {0, 152}, {0, 193}, {60, 1}, {22, 1}, {10, 1}, {6, 1}, - {2, 1}, {0, 28}, {2, 1}, {0, 137}, {0, 181}, {2, 1}, {0, 91}, {0, 194}, {4, 1}, {2, 1}, - {0, 44}, {0, 60}, {4, 1}, {2, 1}, {0, 182}, {0, 107}, {2, 1}, {0, 196}, {0, 76}, {16, 1}, - {8, 1}, {4, 1}, {2, 1}, {0, 168}, {0, 138}, {2, 1}, {0, 208}, {0, 13}, {2, 1}, {0, 209}, - {2, 1}, {0, 75}, {2, 1}, {0, 151}, {0, 167}, {12, 1}, {6, 1}, {2, 1}, {0, 195}, {2, 1}, - {0, 122}, {0, 153}, {4, 1}, {2, 1}, {0, 197}, {0, 92}, {0, 183}, {4, 1}, {2, 1}, {0, 29}, - {0, 210}, {2, 1}, {0, 45}, {2, 1}, {0, 123}, {0, 211}, {52, 1}, {28, 1}, {12, 1}, {4, 1}, - {2, 1}, {0, 61}, {0, 198}, {4, 1}, {2, 1}, {0, 108}, {0, 169}, {2, 1}, {0, 154}, {0, 212}, - {8, 1}, {4, 1}, {2, 1}, {0, 184}, {0, 139}, {2, 1}, {0, 77}, {0, 199}, {4, 1}, {2, 1}, - {0, 124}, {0, 213}, {2, 1}, {0, 93}, {0, 224}, {10, 1}, {4, 1}, {2, 1}, {0, 225}, {0, 30}, - {4, 1}, {2, 1}, {0, 14}, {0, 46}, {0, 226}, {8, 1}, {4, 1}, {2, 1}, {0, 227}, {0, 109}, - {2, 1}, {0, 140}, {0, 228}, {4, 1}, {2, 1}, {0, 229}, {0, 186}, {0, 240}, {38, 1}, {16, 1}, - {4, 1}, {2, 1}, {0, 241}, {0, 31}, {6, 1}, {4, 1}, {2, 1}, {0, 170}, {0, 155}, {0, 185}, - {2, 1}, {0, 62}, {2, 1}, {0, 214}, {0, 200}, {12, 1}, {6, 1}, {2, 1}, {0, 78}, {2, 1}, - {0, 215}, {0, 125}, {2, 1}, {0, 171}, {2, 1}, {0, 94}, {0, 201}, {6, 1}, {2, 1}, {0, 15}, - {2, 1}, {0, 156}, {0, 110}, {2, 1}, {0, 242}, {0, 47}, {32, 1}, {16, 1}, {6, 1}, {4, 1}, - {2, 1}, {0, 216}, {0, 141}, {0, 63}, {6, 1}, {2, 1}, {0, 243}, {2, 1}, {0, 230}, {0, 202}, - {2, 1}, {0, 244}, {0, 79}, {8, 1}, {4, 1}, {2, 1}, {0, 187}, {0, 172}, {2, 1}, {0, 231}, - {0, 245}, {4, 1}, {2, 1}, {0, 217}, {0, 157}, {2, 1}, {0, 95}, {0, 232}, {30, 1}, {12, 1}, - {6, 1}, {2, 1}, {0, 111}, {2, 1}, {0, 246}, {0, 203}, {4, 1}, {2, 1}, {0, 188}, {0, 173}, - {0, 218}, {8, 1}, {2, 1}, {0, 247}, {4, 1}, {2, 1}, {0, 126}, {0, 127}, {0, 142}, {6, 1}, - {4, 1}, {2, 1}, {0, 158}, {0, 174}, {0, 204}, {2, 1}, {0, 248}, {0, 143}, {18, 1}, {8, 1}, - {4, 1}, {2, 1}, {0, 219}, {0, 189}, {2, 1}, {0, 234}, {0, 249}, {4, 1}, {2, 1}, {0, 159}, - {0, 235}, {2, 1}, {0, 190}, {2, 1}, {0, 205}, {0, 250}, {14, 1}, {4, 1}, {2, 1}, {0, 221}, - {0, 236}, {6, 1}, {4, 1}, {2, 1}, {0, 233}, {0, 175}, {0, 220}, {2, 1}, {0, 206}, {0, 251}, - {8, 1}, {4, 1}, {2, 1}, {0, 191}, {0, 222}, {2, 1}, {0, 207}, {0, 238}, {4, 1}, {2, 1}, - {0, 223}, {0, 239}, {2, 1}, {0, 255}, {2, 1}, {0, 237}, {2, 1}, {0, 253}, {2, 1}, {0, 252}, - {0, 254}, - }; - - private static int ValTab14[][] = { - {0, 0} // dummy - }; - - private static int ValTab15[][] = { - {16, 1}, {6, 1}, {2, 1}, {0, 0}, {2, 1}, {0, 16}, {0, 1}, {2, 1}, {0, 17}, {4, 1}, - {2, 1}, {0, 32}, {0, 2}, {2, 1}, {0, 33}, {0, 18}, {50, 1}, {16, 1}, {6, 1}, {2, 1}, - {0, 34}, {2, 1}, {0, 48}, {0, 49}, {6, 1}, {2, 1}, {0, 19}, {2, 1}, {0, 3}, {0, 64}, - {2, 1}, {0, 50}, {0, 35}, {14, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 4}, {0, 20}, {0, 65}, - {4, 1}, {2, 1}, {0, 51}, {0, 66}, {2, 1}, {0, 36}, {0, 67}, {10, 1}, {6, 1}, {2, 1}, - {0, 52}, {2, 1}, {0, 80}, {0, 5}, {2, 1}, {0, 81}, {0, 21}, {4, 1}, {2, 1}, {0, 82}, - {0, 37}, {4, 1}, {2, 1}, {0, 68}, {0, 83}, {0, 97}, {90, 1}, {36, 1}, {18, 1}, {10, 1}, - {6, 1}, {2, 1}, {0, 53}, {2, 1}, {0, 96}, {0, 6}, {2, 1}, {0, 22}, {0, 98}, {4, 1}, - {2, 1}, {0, 38}, {0, 84}, {2, 1}, {0, 69}, {0, 99}, {10, 1}, {6, 1}, {2, 1}, {0, 54}, - {2, 1}, {0, 112}, {0, 7}, {2, 1}, {0, 113}, {0, 85}, {4, 1}, {2, 1}, {0, 23}, {0, 100}, - {2, 1}, {0, 114}, {0, 39}, {24, 1}, {16, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 70}, {0, 115}, - {2, 1}, {0, 55}, {0, 101}, {4, 1}, {2, 1}, {0, 86}, {0, 128}, {2, 1}, {0, 8}, {0, 116}, - {4, 1}, {2, 1}, {0, 129}, {0, 24}, {2, 1}, {0, 130}, {0, 40}, {16, 1}, {8, 1}, {4, 1}, - {2, 1}, {0, 71}, {0, 102}, {2, 1}, {0, 131}, {0, 56}, {4, 1}, {2, 1}, {0, 117}, {0, 87}, - {2, 1}, {0, 132}, {0, 72}, {6, 1}, {4, 1}, {2, 1}, {0, 144}, {0, 25}, {0, 145}, {4, 1}, - {2, 1}, {0, 146}, {0, 118}, {2, 1}, {0, 103}, {0, 41}, {92, 1}, {36, 1}, {18, 1}, {10, 1}, - {4, 1}, {2, 1}, {0, 133}, {0, 88}, {4, 1}, {2, 1}, {0, 9}, {0, 119}, {0, 147}, {4, 1}, - {2, 1}, {0, 57}, {0, 148}, {2, 1}, {0, 73}, {0, 134}, {10, 1}, {6, 1}, {2, 1}, {0, 104}, - {2, 1}, {0, 160}, {0, 10}, {2, 1}, {0, 161}, {0, 26}, {4, 1}, {2, 1}, {0, 162}, {0, 42}, - {2, 1}, {0, 149}, {0, 89}, {26, 1}, {14, 1}, {6, 1}, {2, 1}, {0, 163}, {2, 1}, {0, 58}, - {0, 135}, {4, 1}, {2, 1}, {0, 120}, {0, 164}, {2, 1}, {0, 74}, {0, 150}, {6, 1}, {4, 1}, - {2, 1}, {0, 105}, {0, 176}, {0, 177}, {4, 1}, {2, 1}, {0, 27}, {0, 165}, {0, 178}, {14, 1}, - {8, 1}, {4, 1}, {2, 1}, {0, 90}, {0, 43}, {2, 1}, {0, 136}, {0, 151}, {2, 1}, {0, 179}, - {2, 1}, {0, 121}, {0, 59}, {8, 1}, {4, 1}, {2, 1}, {0, 106}, {0, 180}, {2, 1}, {0, 75}, - {0, 193}, {4, 1}, {2, 1}, {0, 152}, {0, 137}, {2, 1}, {0, 28}, {0, 181}, {80, 1}, {34, 1}, - {16, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 91}, {0, 44}, {0, 194}, {6, 1}, {4, 1}, {2, 1}, - {0, 11}, {0, 192}, {0, 166}, {2, 1}, {0, 167}, {0, 122}, {10, 1}, {4, 1}, {2, 1}, {0, 195}, - {0, 60}, {4, 1}, {2, 1}, {0, 12}, {0, 153}, {0, 182}, {4, 1}, {2, 1}, {0, 107}, {0, 196}, - {2, 1}, {0, 76}, {0, 168}, {20, 1}, {10, 1}, {4, 1}, {2, 1}, {0, 138}, {0, 197}, {4, 1}, - {2, 1}, {0, 208}, {0, 92}, {0, 209}, {4, 1}, {2, 1}, {0, 183}, {0, 123}, {2, 1}, {0, 29}, - {2, 1}, {0, 13}, {0, 45}, {12, 1}, {4, 1}, {2, 1}, {0, 210}, {0, 211}, {4, 1}, {2, 1}, - {0, 61}, {0, 198}, {2, 1}, {0, 108}, {0, 169}, {6, 1}, {4, 1}, {2, 1}, {0, 154}, {0, 184}, - {0, 212}, {4, 1}, {2, 1}, {0, 139}, {0, 77}, {2, 1}, {0, 199}, {0, 124}, {68, 1}, {34, 1}, - {18, 1}, {10, 1}, {4, 1}, {2, 1}, {0, 213}, {0, 93}, {4, 1}, {2, 1}, {0, 224}, {0, 14}, - {0, 225}, {4, 1}, {2, 1}, {0, 30}, {0, 226}, {2, 1}, {0, 170}, {0, 46}, {8, 1}, {4, 1}, - {2, 1}, {0, 185}, {0, 155}, {2, 1}, {0, 227}, {0, 214}, {4, 1}, {2, 1}, {0, 109}, {0, 62}, - {2, 1}, {0, 200}, {0, 140}, {16, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 228}, {0, 78}, {2, 1}, - {0, 215}, {0, 125}, {4, 1}, {2, 1}, {0, 229}, {0, 186}, {2, 1}, {0, 171}, {0, 94}, {8, 1}, - {4, 1}, {2, 1}, {0, 201}, {0, 156}, {2, 1}, {0, 241}, {0, 31}, {6, 1}, {4, 1}, {2, 1}, - {0, 240}, {0, 110}, {0, 242}, {2, 1}, {0, 47}, {0, 230}, {38, 1}, {18, 1}, {8, 1}, {4, 1}, - {2, 1}, {0, 216}, {0, 243}, {2, 1}, {0, 63}, {0, 244}, {6, 1}, {2, 1}, {0, 79}, {2, 1}, - {0, 141}, {0, 217}, {2, 1}, {0, 187}, {0, 202}, {8, 1}, {4, 1}, {2, 1}, {0, 172}, {0, 231}, - {2, 1}, {0, 126}, {0, 245}, {8, 1}, {4, 1}, {2, 1}, {0, 157}, {0, 95}, {2, 1}, {0, 232}, - {0, 142}, {2, 1}, {0, 246}, {0, 203}, {34, 1}, {18, 1}, {10, 1}, {6, 1}, {4, 1}, {2, 1}, - {0, 15}, {0, 174}, {0, 111}, {2, 1}, {0, 188}, {0, 218}, {4, 1}, {2, 1}, {0, 173}, {0, 247}, - {2, 1}, {0, 127}, {0, 233}, {8, 1}, {4, 1}, {2, 1}, {0, 158}, {0, 204}, {2, 1}, {0, 248}, - {0, 143}, {4, 1}, {2, 1}, {0, 219}, {0, 189}, {2, 1}, {0, 234}, {0, 249}, {16, 1}, {8, 1}, - {4, 1}, {2, 1}, {0, 159}, {0, 220}, {2, 1}, {0, 205}, {0, 235}, {4, 1}, {2, 1}, {0, 190}, - {0, 250}, {2, 1}, {0, 175}, {0, 221}, {14, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 236}, {0, 206}, - {0, 251}, {4, 1}, {2, 1}, {0, 191}, {0, 237}, {2, 1}, {0, 222}, {0, 252}, {6, 1}, {4, 1}, - {2, 1}, {0, 207}, {0, 253}, {0, 238}, {4, 1}, {2, 1}, {0, 223}, {0, 254}, {2, 1}, {0, 239}, - {0, 255}, - }; - - private static int ValTab16[][] = { - {2, 1}, {0, 0}, {6, 1}, {2, 1}, {0, 16}, {2, 1}, {0, 1}, {0, 17}, {42, 1}, {8, 1}, - {4, 1}, {2, 1}, {0, 32}, {0, 2}, {2, 1}, {0, 33}, {0, 18}, {10, 1}, {6, 1}, {2, 1}, - {0, 34}, {2, 1}, {0, 48}, {0, 3}, {2, 1}, {0, 49}, {0, 19}, {10, 1}, {4, 1}, {2, 1}, - {0, 50}, {0, 35}, {4, 1}, {2, 1}, {0, 64}, {0, 4}, {0, 65}, {6, 1}, {2, 1}, {0, 20}, - {2, 1}, {0, 51}, {0, 66}, {4, 1}, {2, 1}, {0, 36}, {0, 80}, {2, 1}, {0, 67}, {0, 52}, - {138, 1}, {40, 1}, {16, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 5}, {0, 21}, {0, 81}, {4, 1}, - {2, 1}, {0, 82}, {0, 37}, {4, 1}, {2, 1}, {0, 68}, {0, 53}, {0, 83}, {10, 1}, {6, 1}, - {4, 1}, {2, 1}, {0, 96}, {0, 6}, {0, 97}, {2, 1}, {0, 22}, {0, 98}, {8, 1}, {4, 1}, - {2, 1}, {0, 38}, {0, 84}, {2, 1}, {0, 69}, {0, 99}, {4, 1}, {2, 1}, {0, 54}, {0, 112}, - {0, 113}, {40, 1}, {18, 1}, {8, 1}, {2, 1}, {0, 23}, {2, 1}, {0, 7}, {2, 1}, {0, 85}, - {0, 100}, {4, 1}, {2, 1}, {0, 114}, {0, 39}, {4, 1}, {2, 1}, {0, 70}, {0, 101}, {0, 115}, - {10, 1}, {6, 1}, {2, 1}, {0, 55}, {2, 1}, {0, 86}, {0, 8}, {2, 1}, {0, 128}, {0, 129}, - {6, 1}, {2, 1}, {0, 24}, {2, 1}, {0, 116}, {0, 71}, {2, 1}, {0, 130}, {2, 1}, {0, 40}, - {0, 102}, {24, 1}, {14, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 131}, {0, 56}, {2, 1}, {0, 117}, - {0, 132}, {4, 1}, {2, 1}, {0, 72}, {0, 144}, {0, 145}, {6, 1}, {2, 1}, {0, 25}, {2, 1}, - {0, 9}, {0, 118}, {2, 1}, {0, 146}, {0, 41}, {14, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 133}, - {0, 88}, {2, 1}, {0, 147}, {0, 57}, {4, 1}, {2, 1}, {0, 160}, {0, 10}, {0, 26}, {8, 1}, - {2, 1}, {0, 162}, {2, 1}, {0, 103}, {2, 1}, {0, 87}, {0, 73}, {6, 1}, {2, 1}, {0, 148}, - {2, 1}, {0, 119}, {0, 134}, {2, 1}, {0, 161}, {2, 1}, {0, 104}, {0, 149}, {220, 1}, {126, 1}, - {50, 1}, {26, 1}, {12, 1}, {6, 1}, {2, 1}, {0, 42}, {2, 1}, {0, 89}, {0, 58}, {2, 1}, - {0, 163}, {2, 1}, {0, 135}, {0, 120}, {8, 1}, {4, 1}, {2, 1}, {0, 164}, {0, 74}, {2, 1}, - {0, 150}, {0, 105}, {4, 1}, {2, 1}, {0, 176}, {0, 11}, {0, 177}, {10, 1}, {4, 1}, {2, 1}, - {0, 27}, {0, 178}, {2, 1}, {0, 43}, {2, 1}, {0, 165}, {0, 90}, {6, 1}, {2, 1}, {0, 179}, - {2, 1}, {0, 166}, {0, 106}, {4, 1}, {2, 1}, {0, 180}, {0, 75}, {2, 1}, {0, 12}, {0, 193}, - {30, 1}, {14, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 181}, {0, 194}, {0, 44}, {4, 1}, {2, 1}, - {0, 167}, {0, 195}, {2, 1}, {0, 107}, {0, 196}, {8, 1}, {2, 1}, {0, 29}, {4, 1}, {2, 1}, - {0, 136}, {0, 151}, {0, 59}, {4, 1}, {2, 1}, {0, 209}, {0, 210}, {2, 1}, {0, 45}, {0, 211}, - {18, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 30}, {0, 46}, {0, 226}, {6, 1}, {4, 1}, {2, 1}, - {0, 121}, {0, 152}, {0, 192}, {2, 1}, {0, 28}, {2, 1}, {0, 137}, {0, 91}, {14, 1}, {6, 1}, - {2, 1}, {0, 60}, {2, 1}, {0, 122}, {0, 182}, {4, 1}, {2, 1}, {0, 76}, {0, 153}, {2, 1}, - {0, 168}, {0, 138}, {6, 1}, {2, 1}, {0, 13}, {2, 1}, {0, 197}, {0, 92}, {4, 1}, {2, 1}, - {0, 61}, {0, 198}, {2, 1}, {0, 108}, {0, 154}, {88, 1}, {86, 1}, {36, 1}, {16, 1}, {8, 1}, - {4, 1}, {2, 1}, {0, 139}, {0, 77}, {2, 1}, {0, 199}, {0, 124}, {4, 1}, {2, 1}, {0, 213}, - {0, 93}, {2, 1}, {0, 224}, {0, 14}, {8, 1}, {2, 1}, {0, 227}, {4, 1}, {2, 1}, {0, 208}, - {0, 183}, {0, 123}, {6, 1}, {4, 1}, {2, 1}, {0, 169}, {0, 184}, {0, 212}, {2, 1}, {0, 225}, - {2, 1}, {0, 170}, {0, 185}, {24, 1}, {10, 1}, {6, 1}, {4, 1}, {2, 1}, {0, 155}, {0, 214}, - {0, 109}, {2, 1}, {0, 62}, {0, 200}, {6, 1}, {4, 1}, {2, 1}, {0, 140}, {0, 228}, {0, 78}, - {4, 1}, {2, 1}, {0, 215}, {0, 229}, {2, 1}, {0, 186}, {0, 171}, {12, 1}, {4, 1}, {2, 1}, - {0, 156}, {0, 230}, {4, 1}, {2, 1}, {0, 110}, {0, 216}, {2, 1}, {0, 141}, {0, 187}, {8, 1}, - {4, 1}, {2, 1}, {0, 231}, {0, 157}, {2, 1}, {0, 232}, {0, 142}, {4, 1}, {2, 1}, {0, 203}, - {0, 188}, {0, 158}, {0, 241}, {2, 1}, {0, 31}, {2, 1}, {0, 15}, {0, 47}, {66, 1}, {56, 1}, - {2, 1}, {0, 242}, {52, 1}, {50, 1}, {20, 1}, {8, 1}, {2, 1}, {0, 189}, {2, 1}, {0, 94}, - {2, 1}, {0, 125}, {0, 201}, {6, 1}, {2, 1}, {0, 202}, {2, 1}, {0, 172}, {0, 126}, {4, 1}, - {2, 1}, {0, 218}, {0, 173}, {0, 204}, {10, 1}, {6, 1}, {2, 1}, {0, 174}, {2, 1}, {0, 219}, - {0, 220}, {2, 1}, {0, 205}, {0, 190}, {6, 1}, {4, 1}, {2, 1}, {0, 235}, {0, 237}, {0, 238}, - {6, 1}, {4, 1}, {2, 1}, {0, 217}, {0, 234}, {0, 233}, {2, 1}, {0, 222}, {4, 1}, {2, 1}, - {0, 221}, {0, 236}, {0, 206}, {0, 63}, {0, 240}, {4, 1}, {2, 1}, {0, 243}, {0, 244}, {2, 1}, - {0, 79}, {2, 1}, {0, 245}, {0, 95}, {10, 1}, {2, 1}, {0, 255}, {4, 1}, {2, 1}, {0, 246}, - {0, 111}, {2, 1}, {0, 247}, {0, 127}, {12, 1}, {6, 1}, {2, 1}, {0, 143}, {2, 1}, {0, 248}, - {0, 249}, {4, 1}, {2, 1}, {0, 159}, {0, 250}, {0, 175}, {8, 1}, {4, 1}, {2, 1}, {0, 251}, - {0, 191}, {2, 1}, {0, 252}, {0, 207}, {4, 1}, {2, 1}, {0, 253}, {0, 223}, {2, 1}, {0, 254}, - {0, 239}, - }; - - private static int ValTab24[][] = { - {60, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 0}, {0, 16}, {2, 1}, {0, 1}, {0, 17}, {14, 1}, - {6, 1}, {4, 1}, {2, 1}, {0, 32}, {0, 2}, {0, 33}, {2, 1}, {0, 18}, {2, 1}, {0, 34}, - {2, 1}, {0, 48}, {0, 3}, {14, 1}, {4, 1}, {2, 1}, {0, 49}, {0, 19}, {4, 1}, {2, 1}, - {0, 50}, {0, 35}, {4, 1}, {2, 1}, {0, 64}, {0, 4}, {0, 65}, {8, 1}, {4, 1}, {2, 1}, - {0, 20}, {0, 51}, {2, 1}, {0, 66}, {0, 36}, {6, 1}, {4, 1}, {2, 1}, {0, 67}, {0, 52}, - {0, 81}, {6, 1}, {4, 1}, {2, 1}, {0, 80}, {0, 5}, {0, 21}, {2, 1}, {0, 82}, {0, 37}, - {250, 1}, {98, 1}, {34, 1}, {18, 1}, {10, 1}, {4, 1}, {2, 1}, {0, 68}, {0, 83}, {2, 1}, - {0, 53}, {2, 1}, {0, 96}, {0, 6}, {4, 1}, {2, 1}, {0, 97}, {0, 22}, {2, 1}, {0, 98}, - {0, 38}, {8, 1}, {4, 1}, {2, 1}, {0, 84}, {0, 69}, {2, 1}, {0, 99}, {0, 54}, {4, 1}, - {2, 1}, {0, 113}, {0, 85}, {2, 1}, {0, 100}, {0, 70}, {32, 1}, {14, 1}, {6, 1}, {2, 1}, - {0, 114}, {2, 1}, {0, 39}, {0, 55}, {2, 1}, {0, 115}, {4, 1}, {2, 1}, {0, 112}, {0, 7}, - {0, 23}, {10, 1}, {4, 1}, {2, 1}, {0, 101}, {0, 86}, {4, 1}, {2, 1}, {0, 128}, {0, 8}, - {0, 129}, {4, 1}, {2, 1}, {0, 116}, {0, 71}, {2, 1}, {0, 24}, {0, 130}, {16, 1}, {8, 1}, - {4, 1}, {2, 1}, {0, 40}, {0, 102}, {2, 1}, {0, 131}, {0, 56}, {4, 1}, {2, 1}, {0, 117}, - {0, 87}, {2, 1}, {0, 132}, {0, 72}, {8, 1}, {4, 1}, {2, 1}, {0, 145}, {0, 25}, {2, 1}, - {0, 146}, {0, 118}, {4, 1}, {2, 1}, {0, 103}, {0, 41}, {2, 1}, {0, 133}, {0, 88}, {92, 1}, - {34, 1}, {16, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 147}, {0, 57}, {2, 1}, {0, 148}, {0, 73}, - {4, 1}, {2, 1}, {0, 119}, {0, 134}, {2, 1}, {0, 104}, {0, 161}, {8, 1}, {4, 1}, {2, 1}, - {0, 162}, {0, 42}, {2, 1}, {0, 149}, {0, 89}, {4, 1}, {2, 1}, {0, 163}, {0, 58}, {2, 1}, - {0, 135}, {2, 1}, {0, 120}, {0, 74}, {22, 1}, {12, 1}, {4, 1}, {2, 1}, {0, 164}, {0, 150}, - {4, 1}, {2, 1}, {0, 105}, {0, 177}, {2, 1}, {0, 27}, {0, 165}, {6, 1}, {2, 1}, {0, 178}, - {2, 1}, {0, 90}, {0, 43}, {2, 1}, {0, 136}, {0, 179}, {16, 1}, {10, 1}, {6, 1}, {2, 1}, - {0, 144}, {2, 1}, {0, 9}, {0, 160}, {2, 1}, {0, 151}, {0, 121}, {4, 1}, {2, 1}, {0, 166}, - {0, 106}, {0, 180}, {12, 1}, {6, 1}, {2, 1}, {0, 26}, {2, 1}, {0, 10}, {0, 176}, {2, 1}, - {0, 59}, {2, 1}, {0, 11}, {0, 192}, {4, 1}, {2, 1}, {0, 75}, {0, 193}, {2, 1}, {0, 152}, - {0, 137}, {67, 1}, {34, 1}, {16, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 28}, {0, 181}, {2, 1}, - {0, 91}, {0, 194}, {4, 1}, {2, 1}, {0, 44}, {0, 167}, {2, 1}, {0, 122}, {0, 195}, {10, 1}, - {6, 1}, {2, 1}, {0, 60}, {2, 1}, {0, 12}, {0, 208}, {2, 1}, {0, 182}, {0, 107}, {4, 1}, - {2, 1}, {0, 196}, {0, 76}, {2, 1}, {0, 153}, {0, 168}, {16, 1}, {8, 1}, {4, 1}, {2, 1}, - {0, 138}, {0, 197}, {2, 1}, {0, 92}, {0, 209}, {4, 1}, {2, 1}, {0, 183}, {0, 123}, {2, 1}, - {0, 29}, {0, 210}, {9, 1}, {4, 1}, {2, 1}, {0, 45}, {0, 211}, {2, 1}, {0, 61}, {0, 198}, - {85, 250}, {4, 1}, {2, 1}, {0, 108}, {0, 169}, {2, 1}, {0, 154}, {0, 212}, {32, 1}, {16, 1}, - {8, 1}, {4, 1}, {2, 1}, {0, 184}, {0, 139}, {2, 1}, {0, 77}, {0, 199}, {4, 1}, {2, 1}, - {0, 124}, {0, 213}, {2, 1}, {0, 93}, {0, 225}, {8, 1}, {4, 1}, {2, 1}, {0, 30}, {0, 226}, - {2, 1}, {0, 170}, {0, 185}, {4, 1}, {2, 1}, {0, 155}, {0, 227}, {2, 1}, {0, 214}, {0, 109}, - {20, 1}, {10, 1}, {6, 1}, {2, 1}, {0, 62}, {2, 1}, {0, 46}, {0, 78}, {2, 1}, {0, 200}, - {0, 140}, {4, 1}, {2, 1}, {0, 228}, {0, 215}, {4, 1}, {2, 1}, {0, 125}, {0, 171}, {0, 229}, - {10, 1}, {4, 1}, {2, 1}, {0, 186}, {0, 94}, {2, 1}, {0, 201}, {2, 1}, {0, 156}, {0, 110}, - {8, 1}, {2, 1}, {0, 230}, {2, 1}, {0, 13}, {2, 1}, {0, 224}, {0, 14}, {4, 1}, {2, 1}, - {0, 216}, {0, 141}, {2, 1}, {0, 187}, {0, 202}, {74, 1}, {2, 1}, {0, 255}, {64, 1}, {58, 1}, - {32, 1}, {16, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 172}, {0, 231}, {2, 1}, {0, 126}, {0, 217}, - {4, 1}, {2, 1}, {0, 157}, {0, 232}, {2, 1}, {0, 142}, {0, 203}, {8, 1}, {4, 1}, {2, 1}, - {0, 188}, {0, 218}, {2, 1}, {0, 173}, {0, 233}, {4, 1}, {2, 1}, {0, 158}, {0, 204}, {2, 1}, - {0, 219}, {0, 189}, {16, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 234}, {0, 174}, {2, 1}, {0, 220}, - {0, 205}, {4, 1}, {2, 1}, {0, 235}, {0, 190}, {2, 1}, {0, 221}, {0, 236}, {8, 1}, {4, 1}, - {2, 1}, {0, 206}, {0, 237}, {2, 1}, {0, 222}, {0, 238}, {0, 15}, {4, 1}, {2, 1}, {0, 240}, - {0, 31}, {0, 241}, {4, 1}, {2, 1}, {0, 242}, {0, 47}, {2, 1}, {0, 243}, {0, 63}, {18, 1}, - {8, 1}, {4, 1}, {2, 1}, {0, 244}, {0, 79}, {2, 1}, {0, 245}, {0, 95}, {4, 1}, {2, 1}, - {0, 246}, {0, 111}, {2, 1}, {0, 247}, {2, 1}, {0, 127}, {0, 143}, {10, 1}, {4, 1}, {2, 1}, - {0, 248}, {0, 249}, {4, 1}, {2, 1}, {0, 159}, {0, 175}, {0, 250}, {8, 1}, {4, 1}, {2, 1}, - {0, 251}, {0, 191}, {2, 1}, {0, 252}, {0, 207}, {4, 1}, {2, 1}, {0, 253}, {0, 223}, {2, 1}, - {0, 254}, {0, 239}, - }; - - private static int ValTab32[][] = { - {2, 1}, {0, 0}, {8, 1}, {4, 1}, {2, 1}, {0, 8}, {0, 4}, {2, 1}, {0, 1}, {0, 2}, - {8, 1}, {4, 1}, {2, 1}, {0, 12}, {0, 10}, {2, 1}, {0, 3}, {0, 6}, {6, 1}, {2, 1}, - {0, 9}, {2, 1}, {0, 5}, {0, 7}, {4, 1}, {2, 1}, {0, 14}, {0, 13}, {2, 1}, {0, 15}, - {0, 11}, - }; - - private static int ValTab33[][] = { - {16, 1}, {8, 1}, {4, 1}, {2, 1}, {0, 0}, {0, 1}, {2, 1}, {0, 2}, {0, 3}, {4, 1}, - {2, 1}, {0, 4}, {0, 5}, {2, 1}, {0, 6}, {0, 7}, {8, 1}, {4, 1}, {2, 1}, {0, 8}, - {0, 9}, {2, 1}, {0, 10}, {0, 11}, {4, 1}, {2, 1}, {0, 12}, {0, 13}, {2, 1}, {0, 14}, - {0, 15}, - }; - - - public static huffcodetab[] ht = null; /* Simulate extern struct */ - - private static int[] bitbuf = new int[32]; - - /** - * Big Constructor : Computes all Huffman Tables. - */ - private huffcodetab(String S, int XLEN, int YLEN, int LINBITS, int LINMAX, int REF, - int[] TABLE, int[] HLEN, int[][] VAL, int TREELEN) { - tablename0 = S.charAt(0); - tablename1 = S.charAt(1); - tablename2 = S.charAt(2); - xlen = XLEN; - ylen = YLEN; - linbits = LINBITS; - linmax = LINMAX; - ref = REF; - table = TABLE; - hlen = HLEN; - val = VAL; - treelen = TREELEN; - } - - - /** - * Do the huffman-decoding. - * note! for counta,countb -the 4 bit value is returned in y, - * discard x. - */ - public static int huffman_decoder(huffcodetab h, int[] x, int[] y, int[] v, int[] w, BitReserve br) { - // array of all huffcodtable headers - // 0..31 Huffman code table 0..31 - // 32,33 count1-tables - - int dmask = 1 << ((4 * 8) - 1); - int hs = 4 * 8; - int level; - int point = 0; - int error = 1; - level = dmask; - - if (h.val == null) return 2; - - /* table 0 needs no bits */ - if (h.treelen == 0) { - x[0] = y[0] = 0; - return 0; - } - - /* Lookup in Huffman table. */ - - /*int bitsAvailable = 0; - int bitIndex = 0; - - int bits[] = bitbuf;*/ - do { - if (h.val[point][0] == 0) { /*end of tree*/ - x[0] = h.val[point][1] >>> 4; - y[0] = h.val[point][1] & 0xf; - error = 0; - break; - } - - // hget1bit() is called thousands of times, and so needs to be - // ultra fast. - /* - if (bitIndex==bitsAvailable) - { - bitsAvailable = br.readBits(bits, 32); - bitIndex = 0; - } - */ - //if (bits[bitIndex++]!=0) - if (br.hget1bit() != 0) { - while (h.val[point][1] >= MXOFF) point += h.val[point][1]; - point += h.val[point][1]; - } else { - while (h.val[point][0] >= MXOFF) point += h.val[point][0]; - point += h.val[point][0]; - } - level >>>= 1; - // MDM: ht[0] is always 0; - } while ((level != 0) || (point < 0 /*ht[0].treelen*/)); - - // put back any bits not consumed - /* - int unread = (bitsAvailable-bitIndex); - if (unread>0) - br.rewindNbits(unread); - */ - /* Process sign encodings for quadruples tables. */ - // System.out.println(h.tablename); - if (h.tablename0 == '3' && (h.tablename1 == '2' || h.tablename1 == '3')) { - v[0] = (y[0] >> 3) & 1; - w[0] = (y[0] >> 2) & 1; - x[0] = (y[0] >> 1) & 1; - y[0] = y[0] & 1; - - /* v, w, x and y are reversed in the bitstream. - switch them around to make test bistream work. */ - - if (v[0] != 0) - if (br.hget1bit() != 0) v[0] = -v[0]; - if (w[0] != 0) - if (br.hget1bit() != 0) w[0] = -w[0]; - if (x[0] != 0) - if (br.hget1bit() != 0) x[0] = -x[0]; - if (y[0] != 0) - if (br.hget1bit() != 0) y[0] = -y[0]; - } else { - // Process sign and escape encodings for dual tables. - // x and y are reversed in the test bitstream. - // Reverse x and y here to make test bitstream work. - - if (h.linbits != 0) - if ((h.xlen - 1) == x[0]) - x[0] += br.hgetbits(h.linbits); - if (x[0] != 0) - if (br.hget1bit() != 0) x[0] = -x[0]; - if (h.linbits != 0) - if ((h.ylen - 1) == y[0]) - y[0] += br.hgetbits(h.linbits); - if (y[0] != 0) - if (br.hget1bit() != 0) y[0] = -y[0]; - } - return error; - } - - public static void inithuff() { - - if (ht != null) - return; - - ht = new huffcodetab[HTN]; - ht[0] = new huffcodetab("0 ", 0, 0, 0, 0, -1, null, null, ValTab0, 0); - ht[1] = new huffcodetab("1 ", 2, 2, 0, 0, -1, null, null, ValTab1, 7); - ht[2] = new huffcodetab("2 ", 3, 3, 0, 0, -1, null, null, ValTab2, 17); - ht[3] = new huffcodetab("3 ", 3, 3, 0, 0, -1, null, null, ValTab3, 17); - ht[4] = new huffcodetab("4 ", 0, 0, 0, 0, -1, null, null, ValTab4, 0); - ht[5] = new huffcodetab("5 ", 4, 4, 0, 0, -1, null, null, ValTab5, 31); - ht[6] = new huffcodetab("6 ", 4, 4, 0, 0, -1, null, null, ValTab6, 31); - ht[7] = new huffcodetab("7 ", 6, 6, 0, 0, -1, null, null, ValTab7, 71); - ht[8] = new huffcodetab("8 ", 6, 6, 0, 0, -1, null, null, ValTab8, 71); - ht[9] = new huffcodetab("9 ", 6, 6, 0, 0, -1, null, null, ValTab9, 71); - ht[10] = new huffcodetab("10 ", 8, 8, 0, 0, -1, null, null, ValTab10, 127); - ht[11] = new huffcodetab("11 ", 8, 8, 0, 0, -1, null, null, ValTab11, 127); - ht[12] = new huffcodetab("12 ", 8, 8, 0, 0, -1, null, null, ValTab12, 127); - ht[13] = new huffcodetab("13 ", 16, 16, 0, 0, -1, null, null, ValTab13, 511); - ht[14] = new huffcodetab("14 ", 0, 0, 0, 0, -1, null, null, ValTab14, 0); - ht[15] = new huffcodetab("15 ", 16, 16, 0, 0, -1, null, null, ValTab15, 511); - ht[16] = new huffcodetab("16 ", 16, 16, 1, 1, -1, null, null, ValTab16, 511); - ht[17] = new huffcodetab("17 ", 16, 16, 2, 3, 16, null, null, ValTab16, 511); - ht[18] = new huffcodetab("18 ", 16, 16, 3, 7, 16, null, null, ValTab16, 511); - ht[19] = new huffcodetab("19 ", 16, 16, 4, 15, 16, null, null, ValTab16, 511); - ht[20] = new huffcodetab("20 ", 16, 16, 6, 63, 16, null, null, ValTab16, 511); - ht[21] = new huffcodetab("21 ", 16, 16, 8, 255, 16, null, null, ValTab16, 511); - ht[22] = new huffcodetab("22 ", 16, 16, 10, 1023, 16, null, null, ValTab16, 511); - ht[23] = new huffcodetab("23 ", 16, 16, 13, 8191, 16, null, null, ValTab16, 511); - ht[24] = new huffcodetab("24 ", 16, 16, 4, 15, -1, null, null, ValTab24, 512); - ht[25] = new huffcodetab("25 ", 16, 16, 5, 31, 24, null, null, ValTab24, 512); - ht[26] = new huffcodetab("26 ", 16, 16, 6, 63, 24, null, null, ValTab24, 512); - ht[27] = new huffcodetab("27 ", 16, 16, 7, 127, 24, null, null, ValTab24, 512); - ht[28] = new huffcodetab("28 ", 16, 16, 8, 255, 24, null, null, ValTab24, 512); - ht[29] = new huffcodetab("29 ", 16, 16, 9, 511, 24, null, null, ValTab24, 512); - ht[30] = new huffcodetab("30 ", 16, 16, 11, 2047, 24, null, null, ValTab24, 512); - ht[31] = new huffcodetab("31 ", 16, 16, 13, 8191, 24, null, null, ValTab24, 512); - ht[32] = new huffcodetab("32 ", 1, 16, 0, 0, -1, null, null, ValTab32, 31); - ht[33] = new huffcodetab("33 ", 1, 16, 0, 0, -1, null, null, ValTab33, 31); - } -} diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/readme.txt b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/readme.txt deleted file mode 100644 index 7a765ec7dc2ca0fd02707e4125873125553e285a..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/decoders/processing/jlayer/readme.txt +++ /dev/null @@ -1,15 +0,0 @@ - -TODO: - - -Implement high-level Player and Converter classes. - -Add MP1 and MP2 support and test. - -Add option to run each "stage" on own thread. -E.g. read & parse input, decode subbands, subband synthesis, audio output. - -Retrofit seek support (temporarily removed when reworking classes.) - - -Document and give example code. \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/util/Beat.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/util/Beat.java deleted file mode 100644 index 347ea80e6d531083be8d042e8ad9967d2f4717f1..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/util/Beat.java +++ /dev/null @@ -1,40 +0,0 @@ -package v4lk.lwbd.util; - -/*** - * Represents a single rhythmic onset at a discrete point in time, - * with a discrete sound energy in the range [0, 1] - * @author featherdev - * - */ - -public class Beat implements Cloneable { - - /** - * the millisecond that beat occurs in the song - */ - public final long timeMs; - /** - * beat energy, normalized to [0..1] - */ - public final float energy; - - public Beat(long timeMs, float energy) { - this.timeMs = timeMs; - this.energy = energy; - } - - @Override - public Object clone() throws CloneNotSupportedException { - return super.clone(); - } - - @Override - public String toString() { - int totalSeconds = (int) (timeMs / 1000f); - int minutes = (int) (totalSeconds / 60f); - int seconds = totalSeconds - (60 * minutes); - - return "energy " + String.format("%.2f", energy) + " @ " + minutes + ":" + seconds; - } - -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/util/BeatsProcessor.java b/java/lc-audio-bpm/src/main/java/v4lk/lwbd/util/BeatsProcessor.java deleted file mode 100644 index fbf4cd5521bd60a93b3a7108c0a39fb110bd1fdc..0000000000000000000000000000000000000000 --- a/java/lc-audio-bpm/src/main/java/v4lk/lwbd/util/BeatsProcessor.java +++ /dev/null @@ -1,57 +0,0 @@ -package v4lk.lwbd.util; - -import java.util.ArrayList; - -/** - * Postprocessing functions for the beats you get from BeatDetector. - * How convenient! - * - * @author Quentin Young - */ -public class BeatsProcessor { - - /** - * Thins beats so that consecutive beats are separated by - * at least milliseconds. Comparison is by sound - * energy. - * - * @param beats array of Beat objects, sorted by time - * @param gapMs minimum time between beats in milliseconds - */ - public static Beat[] thinBeats(Beat[] beats, long gapMs) { - // thin and store survivors to list - ArrayList temp = new ArrayList(); - Beat currBeat, prevBeat = beats[0]; - for (int i = 1; i < beats.length; i++) { - currBeat = beats[i]; - if (currBeat.timeMs - prevBeat.timeMs >= gapMs) - temp.add(currBeat); - else { - Beat winner = currBeat.energy > prevBeat.energy ? currBeat : prevBeat; - int index = temp.size() - 1; - temp.set(index, winner); - } - } - - return temp.toArray(new Beat[temp.size()]); - } - - /** - * Filters beats by sound energy. - * - * @param beats array of Beat objects - * @param minimum minimum sound energy [0..1] - * @param maximum maximum sound energy [0..1] - * @return - */ - public static Beat[] filterByEnergy(Beat[] beats, float minimum, float maximum) { - ArrayList result = new ArrayList(); - - for (Beat b : beats) { - if (b.energy > minimum && b.energy < maximum) - result.add(b); - } - - return result.toArray(new Beat[result.size()]); - } -} \ No newline at end of file diff --git a/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/l3reorder.ser b/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/l3reorder.ser deleted file mode 100644 index da216fcf469620b74fadec2ab33eb91cc99572d5..0000000000000000000000000000000000000000 Binary files a/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/l3reorder.ser and /dev/null differ diff --git a/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/lin2au.ser b/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/lin2au.ser deleted file mode 100644 index ec1c83d30ea12860174bd9b54e93f9aaac0e0371..0000000000000000000000000000000000000000 Binary files a/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/lin2au.ser and /dev/null differ diff --git a/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/sfd.ser b/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/sfd.ser deleted file mode 100644 index 440c7c6782245e6ce8f3d155dfab1d19c2a25d4d..0000000000000000000000000000000000000000 Binary files a/java/lc-audio-bpm/src/main/resources/v4lk/lwbd/decoders/processing/jlayer/sfd.ser and /dev/null differ diff --git a/java/lc-chain-blocktail-app/.gitignore b/java/lc-chain-blocktail-app/.gitignore deleted file mode 100644 index 1d1fe94df492104ae6b144c08727a0fa8f15ab86..0000000000000000000000000000000000000000 --- a/java/lc-chain-blocktail-app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Dockerfile \ No newline at end of file diff --git a/java/lc-chain-blocktail-app/LICENSE.md b/java/lc-chain-blocktail-app/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-chain-blocktail-app/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-chain-blocktail-app/build.gradle b/java/lc-chain-blocktail-app/build.gradle deleted file mode 100644 index 4bb325de488d5b9ee2ce3ff181e8c367a071f768..0000000000000000000000000000000000000000 --- a/java/lc-chain-blocktail-app/build.gradle +++ /dev/null @@ -1,53 +0,0 @@ -plugins { - id 'java' - id 'java-library' - id 'application' - id "com.palantir.docker" version "0.33.0" -} - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' -version '1.2-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' - implementation 'org.web3j:core:4.8.7' - implementation project(':lc-mecha') -} - -test { - useJUnitPlatform() -} - -application { - mainClass = 'leigh.chain.blocktail.BlockTailApp' -} - - -docker { - name "docker.leigh-co.com/${project.name}:${project.version}" - files tasks.distTar.outputs -} - - -task dockerfile() { - doLast { - new File(projectDir, 'Dockerfile').text = """FROM docker.leigh-co.com/openjdk:17-alpine -EXPOSE 52018 -RUN mkdir /app -COPY ${project.name}-${project.version}.tar /dist.tar -RUN tar xfv /dist.tar -RUN rm /dist.tar -ENTRYPOINT ["/${project.name}-${project.version}/bin/${project.name}"] -""" - } -} - - diff --git a/java/lc-chain-blocktail-app/src/main/java/lc/chain/blocktail/BlockTailApp.java b/java/lc-chain-blocktail-app/src/main/java/lc/chain/blocktail/BlockTailApp.java deleted file mode 100644 index b73f6821d01e2877bcf0456a7ae728ae0977c325..0000000000000000000000000000000000000000 --- a/java/lc-chain-blocktail-app/src/main/java/lc/chain/blocktail/BlockTailApp.java +++ /dev/null @@ -1,58 +0,0 @@ -package lc.chain.blocktail; - -import io.reactivex.Flowable; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.StringAccumulatorV2; -import lc.mecha.util.UniversalJob; -import org.web3j.protocol.Web3j; -import org.web3j.protocol.core.DefaultBlockParameterName; -import org.web3j.protocol.core.methods.response.EthBlock; -import org.web3j.protocol.http.HttpService; - -public class BlockTailApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(BlockTailApp.class); - - public static void main(String[] args) { - if (args.length != 3) { - System.err.println("Usage: BlockTail url replay continuous"); - System.err.println("Example: BlockTail http://localhost:8545 false true"); - System.exit(UniversalJob.RET_BADARGS); - } - - Web3j web3j = Web3j.build(new HttpService(args[0])); - - boolean replay = Boolean.parseBoolean(args[1]); - boolean continuous = Boolean.parseBoolean(args[2]); - - Flowable subscription; - if (replay) { - if (continuous) { - subscription = web3j.replayPastAndFutureBlocksFlowable(DefaultBlockParameterName.EARLIEST, true); - } else { - subscription = web3j.replayPastBlocksFlowable(DefaultBlockParameterName.EARLIEST, true); - } - } else { - subscription = web3j.blockFlowable(true); - } - - System.out.println("BLOCK_ID,TIMESTAMP,MINER,SIZE"); - - // Weird case. - if (!replay && !continuous) System.exit(UniversalJob.RET_OK); - - subscription.blockingForEach(ethBlock -> { - EthBlock.Block b = ethBlock.getBlock(); - - StringAccumulatorV2 sa = new StringAccumulatorV2(","); - sa.push(String.valueOf(b.getNumber())); - sa.push(String.valueOf(b.getTimestamp())); - sa.push(b.getMiner()); - sa.push(b.getSize().toString()); - - System.out.println(sa.asString()); - }); - - System.exit(UniversalJob.RET_OK); - } -} diff --git a/java/lc-chain-pki-app/.gitignore b/java/lc-chain-pki-app/.gitignore deleted file mode 100644 index 94143827ed065ca0d7d5be1b765d255c5c32cd9a..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki-app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Dockerfile diff --git a/java/lc-chain-pki-app/LICENSE.md b/java/lc-chain-pki-app/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki-app/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-chain-pki-app/build.gradle b/java/lc-chain-pki-app/build.gradle deleted file mode 100644 index afc15ce8447858ecb92e6116ac2b378e5c29a2fd..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki-app/build.gradle +++ /dev/null @@ -1,49 +0,0 @@ -plugins { - id 'java' - id 'application' - id "com.palantir.docker" version "0.33.0" -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' -version '1.3-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-chain-pki') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} - -application { - mainClass = 'leigh.chain.pki.pkitool.PKITool' -} - - -docker { - name "docker.leigh-co.com/${project.name}:${project.version}" - files tasks.distTar.outputs -} - -task dockerfile() { - doLast { - new File(projectDir, 'Dockerfile').text = """FROM docker.leigh-co.com/openjdk:17-alpine -EXPOSE 52018 -RUN mkdir /app -COPY ${project.name}-${project.version}.tar /dist.tar -RUN tar xfv /dist.tar -RUN rm /dist.tar -ENTRYPOINT ["/${project.name}-${project.version}/bin/${project.name}"] -""" - } -} - - diff --git a/java/lc-chain-pki-app/src/main/java/lc/chain/pki/pkitool/PKITool.java b/java/lc-chain-pki-app/src/main/java/lc/chain/pki/pkitool/PKITool.java deleted file mode 100644 index 2c774bd5f1d662eac66193ba6eb99faabe839665..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki-app/src/main/java/lc/chain/pki/pkitool/PKITool.java +++ /dev/null @@ -1,85 +0,0 @@ -package lc.chain.pki.pkitool; - -import lc.chain.pki.PKI; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; -import org.apache.commons.lang.StringUtils; -import org.web3j.crypto.CipherException; - -import java.io.IOException; - -/** - * The PKI tool is a low-level command-line tool for originating PKI transactions. Through - * the use of this tool it is possible to claim names, create secondaries, and issue - * burn notices. - *

- * The following environment variables must be set to use this tool: - * - * LC_GETH_URL - The GETH RPC URL. e.g. http://localhost:8545 - * LC_PKI_PRIMARY_WALLET - The path to the primary wallet file. - * LC_PKI_PRIMARY_PW - The password for the primary wallet file. - *

- * Upon normal operation the tool will output a JSON object to STDOUT containing relevant information. Additional - * information & logging may be provided to STDERR. - * - * @author Alex Leigh - */ -public class PKITool { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(PKITool.class); - public static String ENV_PRIMARY_WALLET = "LC_PKI_PRIMARY_WALLET"; - public static String ENV_PRIMARY_PW = "LC_PKI_PRIMARY_PW"; - public static String LC_RPC_URL = "LC_RPC_URL"; - - public static void main(String[] args) throws CipherException, IOException { - UniversalJob.banner(logger, "PKITool"); - - String wallet = System.getenv(ENV_PRIMARY_WALLET); - String walletPw = System.getenv(ENV_PRIMARY_PW); - String gethUrl = System.getenv(LC_RPC_URL); - - if (StringUtils.isEmpty(wallet)) { - logger.error(ENV_PRIMARY_WALLET + " environment variable must be set."); - System.exit(UniversalJob.RET_BADENV); - } - - if (StringUtils.isEmpty(walletPw)) { - logger.error(ENV_PRIMARY_PW + " environment variable must be set."); - System.exit(UniversalJob.RET_BADENV); - } - - if (StringUtils.isEmpty(gethUrl)) { - logger.error(LC_RPC_URL + " environment variable must be set."); - System.exit(UniversalJob.RET_BADENV); - } - - if (args.length != 3) { - logger.info("Usage: PKITool name validityDays serviceUrl"); - System.exit(UniversalJob.RET_BADARGS); - } - - // PkiTool name validityPeriod serviceUrl - String name = args[0]; - int validityDays = Integer.parseInt(args[1]); - String serviceUrl = args[2]; - - String txnHash = PKI.submitNameClaim(gethUrl, wallet, walletPw, name, serviceUrl, validityDays); - - if (txnHash == null) { - logger.error("Submission failed."); - JSONObject jo = new JSONObject(); - jo.put("status", "error"); - System.out.println(jo); - System.exit(UniversalJob.RET_ERROR); - } - - logger.info("Name claim submitted. [txnHash: {}] [name: {}] [validity: {}] [serviceUrl: {}]", - txnHash, name, validityDays, serviceUrl); - - JSONObject jo = new JSONObject(); - jo.put("txnHash", txnHash); - jo.put("status", "ok"); - System.out.println(jo); - } -} diff --git a/java/lc-chain-pki-svc/LICENSE.md b/java/lc-chain-pki-svc/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki-svc/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-chain-pki-svc/build.gradle b/java/lc-chain-pki-svc/build.gradle deleted file mode 100644 index 5119dbe872b175798b90741564f605f38e9b45d0..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki-svc/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ -plugins { - id 'java' - id 'application' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-chain-pki') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} - -application { - mainClass = 'leigh.chain.pki.pkitool.PKITool' -} \ No newline at end of file diff --git a/java/lc-chain-pki-svc/src/main/java/lc/chain/pki/service/PKIService.java b/java/lc-chain-pki-svc/src/main/java/lc/chain/pki/service/PKIService.java deleted file mode 100644 index af20c3785f931171ff20ab3bb839bb87b9348e6c..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki-svc/src/main/java/lc/chain/pki/service/PKIService.java +++ /dev/null @@ -1,101 +0,0 @@ -package lc.chain.pki.service; - -import lc.chain.BlockScanner; -import lc.chain.BlockTranHandler; -import lc.chain.ReplayOption; -import lc.chain.directory.DirectoryStateMachine; -import lc.chain.directory.DirectoryStore; -import lc.chain.directory.Identity; -import lc.chain.directory.RamDirectoryStore; -import lc.chain.pki.NameClaim; -import lc.chain.pki.PKIAddresses; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; -import org.bouncycastle.util.encoders.Hex; -import org.web3j.protocol.core.methods.response.EthBlock; - -import java.io.*; -import java.time.Instant; - -/** - * @author Alex Leigh - */ -public class PKIService { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(PKIService.class); - private final DirectoryStateMachine dsm; - - public static void main(String[] args) throws IOException, ClassNotFoundException { - UniversalJob.banner(logger, "PKIService"); - - // PKIService svc = new PKIService("http://10.52.4.6:8545"); - // svc.saveToFile(new File("dsm.dat")); - - PKIService svc = new PKIService(new File("dsm.dat")); - svc.dump(); - System.exit(UniversalJob.RET_OK); - } - - public DirectoryStore getStore() { - return dsm.getStore(); - } - - public PKIService(String rpcUrl) { - dsm = new DirectoryStateMachine(new RamDirectoryStore()); - loadFromRPC(rpcUrl); - } - - public PKIService(File file) throws IOException, ClassNotFoundException { - try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)))) { - dsm = (DirectoryStateMachine) ois.readObject(); - } - } - - public void dump() { - DirectoryStore ds = dsm.getStore(); - for (String s : ds.getNames()) { - Identity id = ds.getIdentityByName(s, Instant.now()); - logger.info("Name. {}", id); - } - } - - public void saveToFile(File file) throws IOException { - try (ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)))) { - oos.writeObject(dsm); - } - logger.info("Saved DSM. [file: {}]", file); - } - - public void loadFromRPC(String rpcUrl) { - BlockScanner scanner = new BlockScanner(rpcUrl, ReplayOption.PAST, new BlockTranHandler() { - @Override - public void event(EthBlock.Block block, EthBlock.TransactionObject txn) { - logger.info("TXN [to: {}] [value: {}]", txn.getTo(), txn.getValue()); - - if (PKIAddresses.OP_NAME_CLAIM.equals(txn.getTo())) { - try { - // Remove the leading 0x - byte[] d = Hex.decode(txn.getInput().substring(2)); - JSONObject obj = new JSONObject(new String(d)); - - String from = txn.getFrom(); - String name = obj.getString(NameClaim.KEY_NAME); - String serviceUrl = obj.getString(NameClaim.KEY_SERVICE_URL); - int validityPeriod = obj.getInt(NameClaim.KEY_VALIDITY_DAYS); - Instant when = Instant.ofEpochSecond(block.getTimestamp().longValue()); - - if (from != null && name != null && serviceUrl != null && validityPeriod > 0 - && validityPeriod <= NameClaim.MAX_VALIDITY) { - dsm.processNameClaim(from, name, validityPeriod, serviceUrl, when); - } - } catch (RuntimeException e) { - e.printStackTrace(); - } - } - } - }); - scanner.scan(); - logger.info("Scan finished."); - } -} diff --git a/java/lc-chain-pki/LICENSE.md b/java/lc-chain-pki/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-chain-pki/build.gradle b/java/lc-chain-pki/build.gradle deleted file mode 100644 index ffe8c9e0a899ca8583a07250e72cf8ab032eab06..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-chain') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-chain-pki/src/main/java/lc/chain/pki/NameClaim.java b/java/lc-chain-pki/src/main/java/lc/chain/pki/NameClaim.java deleted file mode 100644 index 81366f37ac2eb743b826722c57d6bc20d97ebd84..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki/src/main/java/lc/chain/pki/NameClaim.java +++ /dev/null @@ -1,55 +0,0 @@ -package lc.chain.pki; - -import lc.mecha.json.JSONObject; - -/** - * This message represents a naming claim. - * - * @author Alex Leigh - */ -public class NameClaim { - public static String KEY_NAME = "n"; - public static String KEY_SERVICE_URL = "s"; - public static String KEY_VALIDITY_DAYS = "v"; - public static int MAX_VALIDITY = 31 * 6; - - private final String name; - private final String serviceUrl; - private final int validityDays; - - public NameClaim(String name, String serviceUrl, int validityDays) { - this.name = name; - this.serviceUrl = serviceUrl; - this.validityDays = validityDays; - - if (validityDays < 0 || validityDays > MAX_VALIDITY) { - throw new IllegalArgumentException("Invalid validity period."); - } - } - - /** - * Formulate this name claim as a JSON request. This is the message that is - * written to the blockchain. Note that the serialized version will not include - * the origination address; this is contained within the transaction header stored - * on the blockchain and does not need to be duplicated here. - */ - public String toJSON() { - JSONObject obj = new JSONObject(); - obj.put(KEY_NAME, name); - obj.put(KEY_SERVICE_URL, serviceUrl); - obj.put(KEY_VALIDITY_DAYS, validityDays); - return obj.toString(); - } - - public String getName() { - return name; - } - - public String getServiceUrl() { - return serviceUrl; - } - - public int getValidityDays() { - return validityDays; - } -} diff --git a/java/lc-chain-pki/src/main/java/lc/chain/pki/NameUtils.java b/java/lc-chain-pki/src/main/java/lc/chain/pki/NameUtils.java deleted file mode 100644 index df9e0053aad3ee3e4e4fe66514cd7db8293b2225..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki/src/main/java/lc/chain/pki/NameUtils.java +++ /dev/null @@ -1,22 +0,0 @@ -package lc.chain.pki; - -public class NameUtils { - /** - * Returns true if the provided string is a legal identity name. To be valid - * an identity name may only contain letters, numbers, and the '-' symbol. - *

- * BUGS: This method currently does not successfully validate foreign unicode characters, - * but should. - */ - public static boolean isValid(String s) { - if (s == null) return false; - int len = s.length(); - for (int i = 0; i < len; i++) { - char c = s.charAt(i); - if (c != '-' && !Character.isLetterOrDigit(s.charAt(i))) { - return false; - } - } - return true; - } -} diff --git a/java/lc-chain-pki/src/main/java/lc/chain/pki/PKI.java b/java/lc-chain-pki/src/main/java/lc/chain/pki/PKI.java deleted file mode 100644 index 9fe1aba4c39c79396090ed226111e16e98e93415..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki/src/main/java/lc/chain/pki/PKI.java +++ /dev/null @@ -1,34 +0,0 @@ -package lc.chain.pki; - -import lc.chain.LeighChain; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.web3j.crypto.CipherException; -import org.web3j.crypto.WalletUtils; - -import java.io.IOException; - -/** - * This class provides convenience functions for interacting with the PKI on the LeighChain. - * - * @author Alex Leigh - */ -public class PKI { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(PKI.class); - - /** - * Submit a name claim to the LeighChain. - * - * validityDays must be valid. If it is not, an exception will be thrown. - */ - public static String submitNameClaim(String gethUrl, String wallet, String walletPw, - String name, String serviceUrl, int validityDays) throws CipherException, IOException { - // This will throw if the validity period is illegal - NameClaim claim = new NameClaim(name, serviceUrl, validityDays); - - logger.info("Is name claim addr valid: {}", - WalletUtils.isValidAddress(PKIAddresses.OP_NAME_CLAIM)); - - return LeighChain.submit(gethUrl, wallet, walletPw, PKIAddresses.OP_NAME_CLAIM, claim.toJSON()); - } -} diff --git a/java/lc-chain-pki/src/main/java/lc/chain/pki/PKIAddresses.java b/java/lc-chain-pki/src/main/java/lc/chain/pki/PKIAddresses.java deleted file mode 100644 index 0bb7201bba512ed67481c50a6dd14d43297b5b16..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki/src/main/java/lc/chain/pki/PKIAddresses.java +++ /dev/null @@ -1,11 +0,0 @@ -package lc.chain.pki; - -/** - * This class contains well-known LEIGHChain addresses for various PKI transactions. - * - * @author Alex Leigh - */ -public class PKIAddresses { - public static String OP_TEST_NAME_CLAIM = "0x2948fbeca204b54d733bc7298416ea2d6f8fa3a1"; - public static String OP_NAME_CLAIM = "0xa25d01e9843ffab68a7e4622eec41f710509a79e"; -} diff --git a/java/lc-chain-pki/src/test/java/lc/chain/pki/NameClaimTest.java b/java/lc-chain-pki/src/test/java/lc/chain/pki/NameClaimTest.java deleted file mode 100644 index b63a3b1fca3c93673ffc93c3f3c596049876bf5a..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki/src/test/java/lc/chain/pki/NameClaimTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package lc.chain.pki; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; - -public class NameClaimTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(NameClaimTest.class); - - @Test - public void testThing() { - NameClaim claim = new NameClaim("lc", - "http://leigh-co.com/service.json", NameClaim.MAX_VALIDITY); - String json = claim.toJSON(); - logger.info("Built msg: {}", json); - } -} diff --git a/java/lc-chain-pki/src/test/java/lc/chain/pki/NameUtilsTest.java b/java/lc-chain-pki/src/test/java/lc/chain/pki/NameUtilsTest.java deleted file mode 100644 index f8b81ebe2142e9677d7fda35a36d8843da333881..0000000000000000000000000000000000000000 --- a/java/lc-chain-pki/src/test/java/lc/chain/pki/NameUtilsTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package lc.chain.pki; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class NameUtilsTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(NameUtilsTest.class); - - @Test - public void testNameValid() { - assertTrue(NameUtils.isValid("abc")); - assertFalse(NameUtils.isValid(" abc")); - assertFalse(NameUtils.isValid("abc ")); - assertFalse(NameUtils.isValid(" abc")); - assertFalse(NameUtils.isValid(" ab c")); - assertFalse(NameUtils.isValid("abc.def")); - assertTrue(NameUtils.isValid("ab-c")); - } -} diff --git a/java/lc-chain/LICENSE.md b/java/lc-chain/LICENSE.md deleted file mode 100644 index 4f720fbadd5bfaa9e2be16bdf6a63a225b60b24e..0000000000000000000000000000000000000000 --- a/java/lc-chain/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-chain/build.gradle b/java/lc-chain/build.gradle deleted file mode 100644 index 53256cac0efd14c1ec4a1c841d620dc9e2f73fff..0000000000000000000000000000000000000000 --- a/java/lc-chain/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api 'org.web3j:core:4.8.7' - api project(':lc-mecha') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} diff --git a/java/lc-chain/src/main/java/lc/chain/BlockScanner.java b/java/lc-chain/src/main/java/lc/chain/BlockScanner.java deleted file mode 100644 index b0eafda201c775ed21cc6849f71f761dfe758704..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/BlockScanner.java +++ /dev/null @@ -1,59 +0,0 @@ -package lc.chain; - -import io.reactivex.Flowable; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.web3j.protocol.Web3j; -import org.web3j.protocol.core.DefaultBlockParameterName; -import org.web3j.protocol.core.methods.response.EthBlock; -import org.web3j.protocol.http.HttpService; - -import java.util.List; - -/** - * Implementation of a block scanner. - * - * @author Alex Leigh - */ -public class BlockScanner { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(BlockScanner.class); - private final String rpcUrl; - private final ReplayOption replay; - private final BlockTranHandler handler; - - public BlockScanner(String rpcUrl, ReplayOption replay, BlockTranHandler handler) { - this.rpcUrl = rpcUrl; - this.replay = replay; - this.handler = handler; - } - - /** - * BUGS: This method does not exit if the PAST is scanned. - */ - public void scan() { - Web3j web3j = Web3j.build(new HttpService(rpcUrl)); - - // TODO: Will potential scientific notation from BigInteger cause problems here? - Flowable subscription = switch (replay) { - case PAST -> web3j.replayPastBlocksFlowable(DefaultBlockParameterName.EARLIEST, - true); - case FUTURE -> web3j.blockFlowable(true); - case PAST_AND_FUTURE -> web3j.replayPastAndFutureBlocksFlowable(DefaultBlockParameterName.EARLIEST, - true); - default -> throw new IllegalArgumentException("Unknown replay option"); - }; - - subscription.blockingForEach(ethBlock -> { - EthBlock.Block b = ethBlock.getBlock(); - - if (!b.getTransactions().isEmpty()) { - logger.info("Found non-empty block. [blockId: {}]", b.getNumber()); - - List t = b.getTransactions(); - for (EthBlock.TransactionResult tr : t) { - handler.event(b, (EthBlock.TransactionObject) tr.get()); - } - } - }); - } -} diff --git a/java/lc-chain/src/main/java/lc/chain/BlockTranHandler.java b/java/lc-chain/src/main/java/lc/chain/BlockTranHandler.java deleted file mode 100644 index 2b0bfa5c6b2a219a4680229a2d9e7675e98b1766..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/BlockTranHandler.java +++ /dev/null @@ -1,7 +0,0 @@ -package lc.chain; - -import org.web3j.protocol.core.methods.response.EthBlock; - -public interface BlockTranHandler { - void event(EthBlock.Block block, EthBlock.TransactionObject txn); -} diff --git a/java/lc-chain/src/main/java/lc/chain/LeighChain.java b/java/lc-chain/src/main/java/lc/chain/LeighChain.java deleted file mode 100644 index 55b52537dc720b7c18e080f135556b53e61eaf54..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/LeighChain.java +++ /dev/null @@ -1,73 +0,0 @@ -package lc.chain; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.bouncycastle.util.encoders.Hex; -import org.web3j.crypto.*; -import org.web3j.protocol.Web3j; -import org.web3j.protocol.core.DefaultBlockParameterName; -import org.web3j.protocol.core.methods.response.EthGetTransactionCount; -import org.web3j.protocol.core.methods.response.EthSendTransaction; -import org.web3j.protocol.http.HttpService; -import org.web3j.utils.Convert; -import org.web3j.utils.Numeric; - -import java.io.IOException; -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; - -/** - * This class implements convenience methods for interacting with the LeighChain. - * - * @author Alex Leigh - */ -public class LeighChain { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(LeighChain.class); - - /** - * Submit a zero-value eth 1.0 transaction to the LeighChain via geth. The gas limit and - * price are set to 21,000. - *

- * If successful, the transaction hash is returned. This hash can be used to monitor - * the process of the transaction to determine if it is eventually mined into a block. - */ - public static String submit(String gethUrl, String wallet, String walletPw, - String destAddr, String data) - throws CipherException, IOException { - Web3j web3 = Web3j.build(new HttpService(gethUrl)); - - Credentials credentials = WalletUtils.loadCredentials(walletPw, wallet); - - BigInteger gasLimit = BigInteger.valueOf(100000); - BigInteger gasPrice = Convert.toWei("100", Convert.Unit.GWEI).toBigInteger(); - EthGetTransactionCount ethGetTransactionCount = web3.ethGetTransactionCount(credentials.getAddress(), - DefaultBlockParameterName.LATEST).send(); - BigInteger nonce = ethGetTransactionCount.getTransactionCount(); - - // There is basically a race here, since if something else publishes, we'll duplicate - // the nonce. There is basically nothing to be done about this. - - String encodedData = Hex.toHexString(data.getBytes(StandardCharsets.UTF_8)); - - logger.info("Created hex string: {}", encodedData); - - RawTransaction rawTransaction = RawTransaction.createTransaction( - nonce, - gasPrice, - gasLimit, - destAddr, - BigInteger.valueOf(0), encodedData); - - byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); - - // Convert it to Hexadecimal String to be sent to the node - String hexValue = Numeric.toHexString(signedMessage); - EthSendTransaction ethSendTransaction = web3.ethSendRawTransaction(hexValue).send(); - - String txHash = ethSendTransaction.getTransactionHash(); - - logger.info("Transaction posted. [hash: {}]", txHash); - - return txHash; - } -} diff --git a/java/lc-chain/src/main/java/lc/chain/ReplayOption.java b/java/lc-chain/src/main/java/lc/chain/ReplayOption.java deleted file mode 100644 index b7e9ac976b91995f2cdefb1924244c7856903b1c..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/ReplayOption.java +++ /dev/null @@ -1,10 +0,0 @@ -package lc.chain; - -/** - * Indicates whether a scanner should scan the past, the future, or both. - * - * @author Alex Leigh - */ -public enum ReplayOption { - PAST, FUTURE, PAST_AND_FUTURE -} diff --git a/java/lc-chain/src/main/java/lc/chain/directory/DirectoryDaemon.java b/java/lc-chain/src/main/java/lc/chain/directory/DirectoryDaemon.java deleted file mode 100644 index 965af4dd26a0acb7ee2795a8ddd1fc0fbe749465..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/directory/DirectoryDaemon.java +++ /dev/null @@ -1,50 +0,0 @@ -package lc.chain.directory; - -import lc.chain.BlockScanner; -import lc.chain.BlockTranHandler; -import lc.chain.ReplayOption; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; -import org.bouncycastle.util.encoders.Hex; -import org.web3j.protocol.core.methods.response.EthBlock; - -/** - * This daemon implements the LeighChain directory service. - * - * @author Alex Leigh - */ -public class DirectoryDaemon { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DirectoryDaemon.class); - - public static void main(String[] args) { - UniversalJob.banner(logger, "DirectoryDaemon"); - - DirectoryStateMachine dsm = new DirectoryStateMachine(new RamDirectoryStore()); - - if (args.length != 1) { - System.err.println("Usage: DirectoryDaemon url"); - System.err.println("Example: DirectoryDaemon http://localhost:8545"); - System.exit(UniversalJob.RET_BADARGS); - } - - BlockScanner scanner = new BlockScanner(args[0], ReplayOption.PAST, new BlockTranHandler() { - @Override - public void event(EthBlock.Block block, EthBlock.TransactionObject txn) { - logger.info("TXN [to: {}] [value: {}]", txn.getTo(), txn.getValue()); - - String v = txn.getInput(); - logger.info("Raw input: {}", v); - if (v.startsWith("0x")) v = v.substring(2); - - byte[] d = Hex.decode(v); - logger.info("Decoded input: {}", new String(d)); - } - }); - scanner.scan(); - logger.info("Scan finished."); - - // This is required because the block filter never seems to really exit. - System.exit(UniversalJob.RET_OK); - } -} diff --git a/java/lc-chain/src/main/java/lc/chain/directory/DirectoryStateMachine.java b/java/lc-chain/src/main/java/lc/chain/directory/DirectoryStateMachine.java deleted file mode 100644 index 7e7a1f04812c90391a399f13738d1f165a2eabbe..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/directory/DirectoryStateMachine.java +++ /dev/null @@ -1,88 +0,0 @@ -package lc.chain.directory; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.Serial; -import java.io.Serializable; -import java.time.Instant; -import java.time.temporal.ChronoUnit; - -/** - * This class contains the logic necessary to replay a transaction ledger and populate a {@link DirectoryStore} object - * with the current state of the directory. - * - * @author Alex Leigh - */ -public class DirectoryStateMachine implements Serializable { - @Serial - private static final long serialVersionUID = 0L; - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DirectoryStateMachine.class); - private final DirectoryStore store; - - public DirectoryStore getStore() { - return store; - } - - public DirectoryStateMachine(DirectoryStore store) { - this.store = store; - } - - /** - * Process a name claim on the behalf of an address. - *

- * validityDays must be >=1 and <= 6*31. when is a trusted value. - */ - public boolean processNameClaim(String address, String name, - int validityDays, String serviceUrl, Instant when) { - - logger.info("Processing name claim. [address: {}] [name: {}] [valid: {}] [service: {}]", - address, name, validityDays, serviceUrl); - - if (validityDays > 6 * 31 || validityDays < 1) return false; - - Identity existing = store.getIdentityByName(name, when); - - if (existing != null) { - String existingAddress = existing.getAddress(); - - if (!existingAddress.equals(address)) { - logger.info("Name already claimed. [claimAddr: {}] [existingAddr: {}] [name: {}]", - address,existingAddress, name); - return false; - } else { - // This claimant already has an existing valid claim. Just update the expiry time and service URL. - Instant newExpiry = when.plus(validityDays, ChronoUnit.DAYS); - existing.setNameClaimExpire(newExpiry); - existing.setServiceUrl(serviceUrl); - return true; - } - } - - // No existing claim, so we straight up get to create one. - Identity id = store.getIdentityByAddr(address); - - if (id == null) { - id = new Identity(); - id.setAddress(address); - } else { - // If we already have an ID there must be an old name entry. - store.removeName(id.getName()); - } - - id.setName(name); - id.setServiceUrl(serviceUrl); - id.setNameClaimExpire(when.plus(validityDays, ChronoUnit.DAYS)); - - store.putIdentity(id); - - return true; - } - - @Override - public String toString() { - return "DirectoryStateMachine{" + - "store=" + store + - '}'; - } -} diff --git a/java/lc-chain/src/main/java/lc/chain/directory/DirectoryStore.java b/java/lc-chain/src/main/java/lc/chain/directory/DirectoryStore.java deleted file mode 100644 index 63a84c29a930a9bf2a8e48f77ea3370c5c67fc43..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/directory/DirectoryStore.java +++ /dev/null @@ -1,31 +0,0 @@ -package lc.chain.directory; - -import java.time.Instant; -import java.util.Set; - -/** - * Classes implementing this interface provides storage for the directory state. - * - * @author Alex Leigh - */ -public interface DirectoryStore { - /** - * Return the {@link Identity} record for the given name if a valid current claim exists. If there was a valid claim - * that is expired at the time this method is invoked, then null will be returned. - */ - Identity getIdentityByName(String name, Instant when); - - /** - * Return the {@link Identity} record for the given address, if it exists in the store. - */ - Identity getIdentityByAddr(String address); - - /** - * Store a new identity. This method assumes the identity is trusted (is verified and correct). - */ - void putIdentity(Identity id); - - void removeName(String name); - - public Set getNames(); -} diff --git a/java/lc-chain/src/main/java/lc/chain/directory/Identity.java b/java/lc-chain/src/main/java/lc/chain/directory/Identity.java deleted file mode 100644 index abd1ac0717becc0185c78b9b2a07b377d4dcf280..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/directory/Identity.java +++ /dev/null @@ -1,84 +0,0 @@ -package lc.chain.directory; - -import java.io.Serial; -import java.io.Serializable; -import java.time.Instant; -import java.util.Objects; - -/** - * This class represents a recognized identity within the directory service. In an Etherium blockchain implementation - * the identity should have a 1:1 relationship with a wallet. - * - * @author Alex Leigh - */ -public class Identity implements Serializable { - @Serial - private static final long serialVersionUID = 0L; - private String address; - private String name; - private Instant nameClaimExpire; - private String serviceUrl; - - public void setNameClaimExpire(Instant nameClaimExpire) { - this.nameClaimExpire = nameClaimExpire; - } - - /** - * Returns true if the expiry time for this claim is after the current time. - */ - public boolean isNameClaimValid(Instant when) { - if(nameClaimExpire==null) return false; - return !nameClaimExpire.isBefore(when); - } - - public String getServiceUrl() { - return serviceUrl; - } - - public void setServiceUrl(String serviceUrl) { - this.serviceUrl = serviceUrl; - } - - public String getAddress() { - return address; - } - - public Instant getNameClaimExpire() { - return nameClaimExpire; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Identity identity = (Identity) o; - return Objects.equals(address, identity.address); - } - - @Override - public int hashCode() { - return Objects.hash(address); - } - - @Override - public String toString() { - return "Identity{" + - "address='" + address + '\'' + - ", name='" + name + '\'' + - ", nameClaimExpire=" + nameClaimExpire + - ", serviceUrl='" + serviceUrl + '\'' + - '}'; - } -} diff --git a/java/lc-chain/src/main/java/lc/chain/directory/RamDirectoryStore.java b/java/lc-chain/src/main/java/lc/chain/directory/RamDirectoryStore.java deleted file mode 100644 index 7bde8eb81b6f6e586079aa6790b8c89b9c444d3d..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/directory/RamDirectoryStore.java +++ /dev/null @@ -1,72 +0,0 @@ -package lc.chain.directory; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.Serial; -import java.io.Serializable; -import java.time.Instant; -import java.util.HashMap; -import java.util.Set; - -/** - * This class implements the {@link DirectoryStore} interface using in-memory storage. - * - * @author Alex Leigh - */ -public class RamDirectoryStore implements DirectoryStore, Serializable { - @Serial - private static final long serialVersionUID = 0L; - private static final MechaLogger logger = MechaLoggerFactory.getLogger(RamDirectoryStore.class); - - private final HashMap nameIdx = new HashMap<>(); - private final HashMap addrIdx = new HashMap<>(); - - public Set getNames() { - return nameIdx.keySet(); - } - - @Override - public Identity getIdentityByName(String name, Instant when) { - // TODO: Locale - String lowerName = name.toLowerCase(); - - Identity id = nameIdx.get(lowerName); - - if (id == null) return null; - - if (!id.isNameClaimValid(when)) { - nameIdx.remove(lowerName); - return null; - } - return id; - } - - @Override - public Identity getIdentityByAddr(String address) { - return addrIdx.get(address); - } - - public void putIdentity(Identity id) { - logger.info("Storing new identity: {}", id); - addrIdx.put(id.getAddress(), id); - String nm = id.getName(); - if (nm != null) { - // TODO: Locale? - nameIdx.put(nm.toLowerCase(), id); - } - } - - @Override - public void removeName(String name) { - nameIdx.remove(name); - } - - @Override - public String toString() { - return "RamDirectoryStore{" + - "nameIdx=" + nameIdx + - ", addrIdx=" + addrIdx + - '}'; - } -} \ No newline at end of file diff --git a/java/lc-chain/src/main/java/lc/chain/etherium/ChainScannerApp.java b/java/lc-chain/src/main/java/lc/chain/etherium/ChainScannerApp.java deleted file mode 100644 index fff750346f1430a7189a111849d73c9dceec4f10..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/etherium/ChainScannerApp.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.chain.etherium; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.VelocityWatch; -import org.web3j.protocol.Web3j; -import org.web3j.protocol.core.DefaultBlockParameter; -import org.web3j.protocol.core.methods.response.EthBlock; -import org.web3j.protocol.http.HttpService; - -import java.io.IOException; -import java.math.BigInteger; -import java.util.List; - -public class ChainScannerApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ChainScannerApp.class); - - public static void main(String[] args) throws IOException { - Web3j web3j = Web3j.build(new HttpService("http://localhost:8545")); - - VelocityWatch vw = new VelocityWatch(logger); - - // FIXME: Replace this with streaming filters - performance, utility. - - for (int i = 0; i < 34000; i++) { - vw.event("block"); - // DefaultBlockParameterName.LATEST - EthBlock ethBlock = - web3j.ethGetBlockByNumber(DefaultBlockParameter.valueOf(BigInteger.valueOf(i)), false).send(); - List tran = ethBlock.getBlock().getTransactions(); - if (tran.size() > 0) { - logger.info("Non-empty block: {}", ethBlock.getId()); - processBlock(tran); - } - } - } - - public static void processBlock(List tran) { - for (EthBlock.TransactionResult r : tran) { - Object o = r.get(); - logger.info("--> txn {} {}", o, o.getClass()); - } - } -} diff --git a/java/lc-chain/src/main/java/lc/chain/etherium/CheckBalanceApp.java b/java/lc-chain/src/main/java/lc/chain/etherium/CheckBalanceApp.java deleted file mode 100644 index ed265415ed09b6b809c5bf91985c309c7b901920..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/etherium/CheckBalanceApp.java +++ /dev/null @@ -1,29 +0,0 @@ -package lc.chain.etherium; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.web3j.protocol.Web3j; -import org.web3j.protocol.core.DefaultBlockParameterName; -import org.web3j.protocol.core.methods.response.EthGetBalance; -import org.web3j.protocol.http.HttpService; -import org.web3j.utils.Convert; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.concurrent.ExecutionException; - -public class CheckBalanceApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(CheckBalanceApp.class); - - public static void main(String args[]) throws IOException, ExecutionException, InterruptedException { - Web3j web3 = Web3j.build(new HttpService("http://localhost:8545")); - // "0x21dc9adacb308530daa08c5258ae86a54e06aece" - // "0x400a72097cdeeA17525D9FE9cC975D23B8997ea3" - - EthGetBalance balanceWei = web3.ethGetBalance("0x21dc9adacb308530daa08c5258ae86a54e06aece", - DefaultBlockParameterName.LATEST).send(); - BigDecimal balanceInEther = Convert.fromWei(balanceWei.getBalance().toString(), Convert.Unit.ETHER); - - logger.info("Balance. [wei: {}] [coin: {}]: ", balanceWei.getBalance(), balanceInEther); - } -} diff --git a/java/lc-chain/src/main/java/lc/chain/etherium/SendTransaction.java b/java/lc-chain/src/main/java/lc/chain/etherium/SendTransaction.java deleted file mode 100644 index 864788b07bc84de50517ba5cd31167f176e9557d..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/etherium/SendTransaction.java +++ /dev/null @@ -1,67 +0,0 @@ -package lc.chain.etherium; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.web3j.crypto.Credentials; -import org.web3j.crypto.RawTransaction; -import org.web3j.crypto.TransactionEncoder; -import org.web3j.crypto.WalletUtils; -import org.web3j.protocol.Web3j; -import org.web3j.protocol.core.DefaultBlockParameterName; -import org.web3j.protocol.core.methods.response.EthGetTransactionCount; -import org.web3j.protocol.core.methods.response.EthSendTransaction; -import org.web3j.protocol.http.HttpService; -import org.web3j.tx.RawTransactionManager; -import org.web3j.tx.TransactionManager; -import org.web3j.tx.response.NoOpProcessor; -import org.web3j.tx.response.TransactionReceiptProcessor; -import org.web3j.utils.Convert; -import org.web3j.utils.Numeric; - -import java.math.BigInteger; - -public class SendTransaction { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SendTransaction.class); - public static int CHAIN_ID = 52; - - public static void main(String[] args) throws Exception { - Web3j web3 = Web3j.build(new HttpService("http://localhost:8545")); - - // "/Users/aleigh/Library/Ethereum/keystore/UTC--2022-03-19T03-29-48.574324665Z--400a72097cdeea17525d9fe9cc975d23b8997ea3" - // /Users/aleigh/Library/Ethereum/keystore/UTC--2022-03-19T18-40-38.284371000Z--21dc9adacb308530daa08c5258ae86a54e06aece - - Credentials credentials = WalletUtils.loadCredentials("", - "/Users/aleigh/Library/Ethereum/keystore/UTC--2022-03-19T03-29-48.574324665Z--400a72097cdeea17525d9fe9cc975d23b8997ea3"); - TransactionReceiptProcessor transactionReceiptProcessor = new NoOpProcessor(web3); - TransactionManager transactionManager = new RawTransactionManager(web3, credentials, CHAIN_ID, transactionReceiptProcessor); - - logger.info("TM from: {}", transactionManager.getFromAddress()); - - BigInteger gasLimit = BigInteger.valueOf(31000); - BigInteger gasPrice = Convert.toWei("21000", Convert.Unit.GWEI).toBigInteger(); - EthGetTransactionCount ethGetTransactionCount = web3.ethGetTransactionCount(credentials.getAddress(), DefaultBlockParameterName.LATEST).send(); - BigInteger nonce = ethGetTransactionCount.getTransactionCount(); - logger.info("Current nonce: {}", nonce); - - // 6336 - - RawTransaction rawTransaction = RawTransaction.createTransaction( - nonce, - gasPrice, - gasLimit, - "0x21dc9adacb308530daa08c5258ae86a54e06aece", - BigInteger.valueOf(0), "Hello World!"); - byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); - // Convert it to Hexadecimal String to be sent to the node - String hexValue = Numeric.toHexString(signedMessage); - - logger.info("Built message: {}", hexValue); - - EthSendTransaction ethSendTransaction = web3.ethSendRawTransaction(hexValue).send(); - - String transactionHash = ethSendTransaction.getTransactionHash(); - - logger.info("Result: {}", transactionHash); - } - -} \ No newline at end of file diff --git a/java/lc-chain/src/main/java/lc/chain/etherium/Transfer.java b/java/lc-chain/src/main/java/lc/chain/etherium/Transfer.java deleted file mode 100644 index a8f2c11810027098cbeaeb5624f9f1628c4626b7..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/etherium/Transfer.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2019 Web3 Labs Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package lc.chain.etherium; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.web3j.crypto.Credentials; -import org.web3j.protocol.Web3j; -import org.web3j.protocol.core.RemoteCall; -import org.web3j.protocol.core.methods.response.TransactionReceipt; -import org.web3j.protocol.exceptions.TransactionException; -import org.web3j.tx.ManagedTransaction; -import org.web3j.tx.RawTransactionManager; -import org.web3j.tx.TransactionManager; -import org.web3j.utils.Convert; -import org.web3j.utils.Numeric; - -import java.io.IOException; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.Optional; -import java.util.concurrent.ExecutionException; - -/** - * Class for performing Ether transactions on the Ethereum blockchain. - */ -public class Transfer extends ManagedTransaction { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Transfer.class); - - // This is the cost to send Ether between parties - public static final BigInteger GAS_LIMIT = BigInteger.valueOf(21000); - - public Transfer(Web3j web3j, TransactionManager transactionManager) { - super(web3j, transactionManager); - } - - /** - * Given the duration required to execute a transaction, asyncronous execution is strongly - * recommended via {@link Transfer#sendFunds(String, BigDecimal, Convert.Unit)}. - * - * @param toAddress destination address - * @param value amount to send - * @param unit of specified send - * @return {@link Optional} containing our transaction receipt - * @throws ExecutionException if the computation threw an exception - * @throws InterruptedException if the current thread was interrupted while waiting - * @throws TransactionException if the transaction was not mined while waiting - */ - private TransactionReceipt send(String toAddress, BigDecimal value, Convert.Unit unit) - throws IOException, InterruptedException, TransactionException { - - BigInteger gasPrice = requestCurrentGasPrice(); - return send(toAddress, value, unit, gasPrice, GAS_LIMIT); - } - - private TransactionReceipt send( - String toAddress, - BigDecimal value, - Convert.Unit unit, - BigInteger gasPrice, - BigInteger gasLimit) - throws IOException, InterruptedException, TransactionException { - - BigDecimal weiValue = Convert.toWei(value, unit); - if (!Numeric.isIntegerValue(weiValue)) { - throw new UnsupportedOperationException( - "Non decimal Wei value provided: " - + value - + " " - + unit.toString() - + " = " - + weiValue - + " Wei"); - } - - String resolvedAddress = ensResolver.resolve(toAddress); - return send(resolvedAddress, "", weiValue.toBigIntegerExact(), gasPrice, gasLimit); - } - - public static RemoteCall sendFunds( - Web3j web3j, - Credentials credentials, - String toAddress, - BigDecimal value, - Convert.Unit unit) - throws InterruptedException, IOException, TransactionException { - - TransactionManager transactionManager = new RawTransactionManager(web3j, credentials); - - return new RemoteCall<>( - () -> new Transfer(web3j, transactionManager).send(toAddress, value, unit)); - } - - /** - * Execute the provided function as a transaction asynchronously. This is intended for one-off - * fund transfers. For multiple, create an instance. - * - * @param toAddress destination address - * @param value amount to send - * @param unit of specified send - * @return {@link RemoteCall} containing executing transaction - */ - public RemoteCall sendFunds( - String toAddress, BigDecimal value, Convert.Unit unit) { - return new RemoteCall<>(() -> send(toAddress, value, unit)); - } - - public RemoteCall sendFunds( - String toAddress, - BigDecimal value, - Convert.Unit unit, - BigInteger gasPrice, - BigInteger gasLimit) { - return new RemoteCall<>(() -> send(toAddress, value, unit, gasPrice, gasLimit)); - } - - public static RemoteCall sendFundsEIP1559( - Web3j web3j, - Credentials credentials, - String toAddress, - BigDecimal value, - Convert.Unit unit, - BigInteger gasLimit, - BigInteger maxPriorityFeePerGas, - BigInteger maxFeePerGas) - throws IOException { - TransactionManager transactionManager = new RawTransactionManager(web3j, credentials); - - return new RemoteCall<>( - () -> - new Transfer(web3j, transactionManager) - .sendEIP1559( - 52, - toAddress, - value, - unit, - gasLimit, - maxPriorityFeePerGas, - maxFeePerGas)); - } - - private TransactionReceipt sendEIP1559( - long chainId, - String toAddress, - BigDecimal value, - Convert.Unit unit, - BigInteger gasLimit, - BigInteger maxPriorityFeePerGas, - BigInteger maxFeePerGas) - throws IOException, InterruptedException, TransactionException { - - logger.info("sendEIP1559 called. [chainId: {}]", chainId); - - BigDecimal weiValue = Convert.toWei(value, unit); - if (!Numeric.isIntegerValue(weiValue)) { - throw new UnsupportedOperationException( - "Non decimal Wei value provided: " - + value - + " " - + unit.toString() - + " = " - + weiValue - + " Wei"); - } - - String resolvedAddress = ensResolver.resolve(toAddress); - return sendEIP1559( - chainId, - resolvedAddress, - "", - weiValue.toBigIntegerExact(), - gasLimit, - maxPriorityFeePerGas, - maxFeePerGas); - } -} diff --git a/java/lc-chain/src/main/java/lc/chain/msg/SignedMessage.java b/java/lc-chain/src/main/java/lc/chain/msg/SignedMessage.java deleted file mode 100644 index 1bf0c138b3304657c2c01d0b84733631822f1f30..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/main/java/lc/chain/msg/SignedMessage.java +++ /dev/null @@ -1,99 +0,0 @@ -package lc.chain.msg; - -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.java_websocket.util.Base64; -import org.web3j.crypto.CipherException; -import org.web3j.crypto.Credentials; -import org.web3j.crypto.Sign; -import org.web3j.crypto.WalletUtils; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.security.SignatureException; -import java.util.Objects; - -/** - * This class represents a cryptographically signed message. The message contents themselves are arbitrary. The - * message is signed using an Etherium wallet. The purpose for signing messages in this way is to provide attestation - * off-chain which is traceable back to an Etherium wallet. - *

- * The contents may be binary, in which case they will be represented as a Base64 string in the envelope. The contents - * may be a regular UTF8 string, including JSON, in which case they will be represented directly in the envelope. It - * is up to the caller to know whether or not their content is suitable for string encoding or requires binary encoding, - * since as a matter of performance, this class does not inspect the contents other than to generate the cryptographic - * signature. - * - * @author Alex Leigh - */ -public class SignedMessage { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SignedMessage.class); - private String content; - private Sign.SignatureData signatureData; - - public void sign(String fn, String password) throws CipherException, IOException, SignatureException { - Credentials credentials = WalletUtils.loadCredentials(password, fn); - signatureData = Sign.signMessage(content.getBytes(StandardCharsets.UTF_8), - credentials.getEcKeyPair()); - } - - public void recoverKey() { - /* - Sign.SignatureData recovered = new Sign.SignatureData(signatureData.getV(), - signatureData.getR(), signatureData.getS()); - - BigInteger recovKey = Sign.signedMessageToKey(content, recovered); - logger.info("Recovered key: {}", Keys.getAddress(recovKey)); - */ - } - - /** - * Return a new JSON envelope representing the signature of this message along with the message itself. If the - * message has not been signed an exception is thrown. - */ - public JSONObject getJSONEnvelope() { - if (signatureData == null) throw new IllegalStateException("Message has not been signed."); - JSONObject jo = new JSONObject(); - jo.put("m", new String(content)); - - jo.put("v", Base64.encodeBytes(signatureData.getV())); - jo.put("r", Base64.encodeBytes(signatureData.getR())); - jo.put("s", Base64.encodeBytes(signatureData.getS())); - return jo; - } - - - /** - * Set the content to the provided string data. If a signature had previously been created, it will be removed, - * so sign() will need to be called again. - */ - public void setContent(String content) { - this.content = content; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - SignedMessage that = (SignedMessage) o; - return Objects.equals(content, that.content); - } - - public String getContent() { - return content; - } - - @Override - public int hashCode() { - return Objects.hash(content); - } - - @Override - public String toString() { - return "SignedMessage{" + - "content='" + content + '\'' + - ", signatureData=" + signatureData + - '}'; - } -} diff --git a/java/lc-chain/src/test/java/lc/chain/WalletTest.java b/java/lc-chain/src/test/java/lc/chain/WalletTest.java deleted file mode 100644 index 9279101b8e551a078a5eac736d8cde3e3ade6bcb..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/test/java/lc/chain/WalletTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package lc.chain; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; -import org.web3j.crypto.CipherException; -import org.web3j.crypto.WalletUtils; - -import java.io.IOException; -import java.nio.file.Files; -import java.security.InvalidAlgorithmParameterException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; - -public class WalletTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(WalletTest.class); - - @Test - public void testWallet() throws IOException, InvalidAlgorithmParameterException, CipherException, NoSuchAlgorithmException, NoSuchProviderException { - String fileName = - WalletUtils.generateNewWalletFile( "abc123", - Files.createTempDirectory(null).toFile()); - - logger.info("Created temporary wallet. [fn: {}]", fileName); - } - -} diff --git a/java/lc-chain/src/test/java/lc/chain/directory/DirectoryStateMachineTest.java b/java/lc-chain/src/test/java/lc/chain/directory/DirectoryStateMachineTest.java deleted file mode 100644 index e61cae580b3d202243fab25c7706b99d55745147..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/test/java/lc/chain/directory/DirectoryStateMachineTest.java +++ /dev/null @@ -1,83 +0,0 @@ -package lc.chain.directory; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; - -import java.time.Instant; -import java.time.temporal.ChronoUnit; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class DirectoryStateMachineTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DirectoryStateMachineTest.class); - - @Test - public void testInvalidExpiry() { - DirectoryStore ds = new RamDirectoryStore(); - DirectoryStateMachine dsm = new DirectoryStateMachine(ds); - String testName = "l"; - String testAddr = "0x52"; - String serviceUrl = "http://svc.l.c/service.json"; - - Instant when = Instant.now(); - - dsm.processNameClaim(testAddr, testName, 0, - serviceUrl, when); - Identity id = ds.getIdentityByName(testName, when); - assert (id == null); - - dsm.processNameClaim(testAddr, testName, 7*31, - serviceUrl, when); - id = ds.getIdentityByName(testName, when); - assert (id == null); - - } - - @Test - public void testNameExpire() { - DirectoryStore ds = new RamDirectoryStore(); - DirectoryStateMachine dsm = new DirectoryStateMachine(ds); - String testName = "l"; - String testAddr = "0x52"; - String serviceUrl = "http://svc.l.c/service.json"; - - Instant when = Instant.now(); - - dsm.processNameClaim(testAddr, testName, 14, - serviceUrl, when); - - Identity id = ds.getIdentityByName(testName, when); - assert (id != null); - - id = ds.getIdentityByName(testName, when.plus(15, ChronoUnit.DAYS)); - assert (id == null); - } - - @Test - public void testBasicClaim() { - DirectoryStore ds = new RamDirectoryStore(); - DirectoryStateMachine dsm = new DirectoryStateMachine(ds); - String testName = "l"; - String testAddr = "0x52"; - String serviceUrl = "http://svc.l.c/service.json"; - - Instant when = Instant.now(); - - dsm.processNameClaim(testAddr, testName, 14, - serviceUrl, when); - - // Make sure the naming took - Identity id = ds.getIdentityByName(testName, when); - assert (id != null); - assertEquals(testName, id.getName()); - assertEquals(serviceUrl, id.getServiceUrl()); - - id = ds.getIdentityByAddr(testAddr); - assert (id != null); - assertEquals(testName, id.getName()); - assertEquals(serviceUrl, id.getServiceUrl()); - - logger.info("DSM state: {}", dsm); - } -} diff --git a/java/lc-chain/src/test/java/lc/chain/msg/SignedMessageTest.java b/java/lc-chain/src/test/java/lc/chain/msg/SignedMessageTest.java deleted file mode 100644 index c410043206bb3f1686fc654407464d71a099f989..0000000000000000000000000000000000000000 --- a/java/lc-chain/src/test/java/lc/chain/msg/SignedMessageTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package lc.chain.msg; - -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; -import org.web3j.crypto.CipherException; - -import java.io.IOException; -import java.security.SignatureException; - -public class SignedMessageTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SignedMessageTest.class); - private final String PW = "eHjbwCJRe4mLHDuY"; - private final String FN = "../keystore/UTC--2022-03-30T23-25-32.462178000Z--6bdb22c0897cc0d0dbf3942b33e28adf3c6f98be"; - - @Test - public void testThing() throws CipherException, IOException, SignatureException { - SignedMessage msg = new SignedMessage(); - - JSONObject m = new JSONObject(); - m.put("firstName", "Alex"); - m.put("lastName", "Leigh"); - msg.setContent(m.toString()); - msg.sign(FN, PW); - - logger.info("Generated signed message: {}", msg.getJSONEnvelope()); - } -} diff --git a/java/lc-cloudbox/.gitignore b/java/lc-cloudbox/.gitignore deleted file mode 100644 index ede7310f5aa22a8bb16f7393dedac5d9b0cba2c9..0000000000000000000000000000000000000000 --- a/java/lc-cloudbox/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -kabe.log -velocity.log -.DS_Store -statistic.xml -.gradle -/*/build/ -/build/ -gradle-app.setting -!gradle-wrapper.jar -.gradletasknamecache -.idea/ -*.iml -out/ -.cache -node_modules -/*/.idea -.vi -/*/graph.eo -.vai -graph.bak -.idea -tests.vai -vds.log -hosts.json -tests.vai.old \ No newline at end of file diff --git a/java/lc-cloudbox/LICENSE.md b/java/lc-cloudbox/LICENSE.md deleted file mode 100644 index 226d1f25b12e58e21c29a6c1869d1ec05095d443..0000000000000000000000000000000000000000 --- a/java/lc-cloudbox/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-cloudbox/build.gradle b/java/lc-cloudbox/build.gradle deleted file mode 100644 index 0a9eef1ac74121e571bf9decdfd58effa9884c36..0000000000000000000000000000000000000000 --- a/java/lc-cloudbox/build.gradle +++ /dev/null @@ -1,22 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-mecha-exec') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-cloudbox/src/main/java/lc/cloudbox/cisco/CiscoController.java b/java/lc-cloudbox/src/main/java/lc/cloudbox/cisco/CiscoController.java deleted file mode 100644 index 1712e28d35d1d471ff6c54d58431d67d62442193..0000000000000000000000000000000000000000 --- a/java/lc-cloudbox/src/main/java/lc/cloudbox/cisco/CiscoController.java +++ /dev/null @@ -1,24 +0,0 @@ -package lc.cloudbox.cisco; - -import lc.mecha.cred.Credential; - -/** - * A simple class for storing the login information required to generate {@link CiscoSession} objects. - * - * @author Alex Leigh - */ -public class CiscoController { - private final String hostname; - private final Credential loginCred; - private final String enablePw; - - public CiscoController(String hostname, Credential loginCred, String enablePw) { - this.hostname = hostname; - this.loginCred = loginCred; - this.enablePw = enablePw; - } - - public CiscoSession getSession() throws Exception { - return new CiscoSession(hostname, loginCred, enablePw); - } -} diff --git a/java/lc-cloudbox/src/main/java/lc/cloudbox/cisco/CiscoSession.java b/java/lc-cloudbox/src/main/java/lc/cloudbox/cisco/CiscoSession.java deleted file mode 100644 index 6d7b9a8adec8e072864663dd50bc5ca27c5add30..0000000000000000000000000000000000000000 --- a/java/lc-cloudbox/src/main/java/lc/cloudbox/cisco/CiscoSession.java +++ /dev/null @@ -1,187 +0,0 @@ -package lc.cloudbox.cisco; - -import com.jcraft.jsch.Channel; -import com.jcraft.jsch.JSch; -import com.jcraft.jsch.Session; -import lc.mecha.cred.Credential; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import net.sf.expectit.Expect; -import net.sf.expectit.ExpectBuilder; - -import java.io.IOException; -import java.util.Properties; - -import static net.sf.expectit.matcher.Matchers.contains; - -/** - * This class provides support for remote execution and configuration of Cisco series routers. - * - * @author Alex Leigh - */ -public class CiscoSession implements AutoCloseable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(CiscoSession.class); - private final JSch jSch = new JSch(); - private final Session session; - private final Channel channel; - private final String enablePw; - private final Expect expect; - private String hostname; - private boolean isEnabled = false; - private boolean isConfig = false; - - /** - * Set the tunnel destination for the given interface, for example, Tunnel0. - */ - public void setTunnelDestination(int tunnelId, String dest) throws IOException { - enable(); - config(); - expect.sendLine("crypto ikev2 keyring ike2-keyring"); - expect.expect(contains("#")); - - expect.sendLine("peer tun" + tunnelId); - expect.expect(contains("#")); - - expect.sendLine("address " + dest); - expect.expect(contains("#")); - - expect.sendLine("crypto ikev2 profile ike2-tun" + tunnelId + "-profile"); - expect.expect(contains("#")); - - expect.sendLine("match identity remote address " + dest); - expect.expect(contains("#")); - - expect.sendLine("int tunnel" + tunnelId); - expect.expect(contains("(config-if)#")); - - expect.sendLine("tunnel destination " + dest); - expect.expect(contains("#")); - - expect.sendLine("end"); - expect.expect(contains("#")); - - expect.sendLine("wr mem"); - expect.expect(contains("#")); - } - - /** - * Create a new controller. This will immediately connect to the router, so the caller should not delay in - * calling the accessory methods in order to operate on the router. close() should be called in - * call cases when the caller is done with this object. - */ - public CiscoSession(String host, Credential cred, String enablePw) throws Exception { - session = jSch.getSession(cred.getUsername(), host); - Properties config = new Properties(); - config.put("StrictHostKeyChecking", "no"); - session.setConfig(config); - session.setPassword(cred.getPassword()); - session.connect(); - channel = session.openChannel("shell"); - this.enablePw = enablePw; - - expect = new ExpectBuilder() - .withOutput(channel.getOutputStream()) - .withInputs(channel.getInputStream(), channel.getExtInputStream()) - .withEchoOutput(System.out) - .withEchoInput(System.err) - .withExceptionOnFailure() - .build(); - channel.connect(); - - loginAndHostname(); - } - - /** - * Given a raw response, determine the hostname of the router. This will be used to more accurately parse - * further responses from it. - */ - public String hostname(String prompt) { - String clean = prompt.strip(); - return clean.replace(">", ""); - } - - /** - * Login to the router and setup the initial conditions. This also gets the routers hostname, which will be - * used later to build expectation. - */ - private void loginAndHostname() throws IOException { - String prompt = expect.expect(contains(">")).getInput(); - hostname = hostname(prompt); - expect.sendLine("terminal length 0"); - expect.expect(contains(expectedPrompt())); - } - - /** - * Raise the session enable level. This requires that loginAndHostname() has previously been - * called. If the session is already enabled, this method does nothing. Once enabled, there is no support - * for leaving the enable condition. Sending the command to exit will leave the isEnabled - * flag in the wrong state. - */ - private void enable() throws IOException { - if (isEnabled) return; - - expect.sendLine("enable"); - expect.expect(contains("Password:")); - expect.sendLine(enablePw); - expect.expect(contains(hostname + "#")); - isEnabled = true; - } - - /** - * Enter configure mode on the remote router. If the router is already in configure mode, this method - * does nothing. - */ - private void config() throws IOException { - expect.sendLine("conf t"); - // We have to manually work it out here, because we don't want to set the config flag in the event of an - // error condition on the remote router. - String p = isEnabled ? "#" : ">"; - expect.expect(contains(hostname + "(config)" + p)); - isConfig = true; - } - - private void endConfigure() throws IOException { - expect.sendLine("exit"); - String p = isEnabled ? "#" : ">"; - expect.expect(contains(hostname + p)); - isConfig = false; - } - - /** - * Return the current expected prompt given the state of the remote router - enabled or not, configured - * or not. This method works better if the hostname is known from a previous call to - * loginAndHostname(), but if the hostanme is not know, simple prompts will be returned, - * such as > and #. - */ - public String expectedPrompt() { - // tbh I don't even know if you can config outside of enable, but I don't want to be the guy who - // wrote the bug when turns out one ark night that it is possible. - - String h = hostname; - if (h == null) { - h = ""; - } - - if (!isConfig) { - if (!isEnabled) { - return h + ">"; - } else { - return h + "#"; - } - } else { - if (!isEnabled) { - return h + "(config)>"; - } else { - return h + "(config)#"; - } - } - } - - @Override - public void close() throws Exception { - logger.info("close() called."); - expect.close(); - session.disconnect(); - channel.disconnect(); - } -} diff --git a/java/lc-conflux/.gitignore b/java/lc-conflux/.gitignore deleted file mode 100644 index ede7310f5aa22a8bb16f7393dedac5d9b0cba2c9..0000000000000000000000000000000000000000 --- a/java/lc-conflux/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -kabe.log -velocity.log -.DS_Store -statistic.xml -.gradle -/*/build/ -/build/ -gradle-app.setting -!gradle-wrapper.jar -.gradletasknamecache -.idea/ -*.iml -out/ -.cache -node_modules -/*/.idea -.vi -/*/graph.eo -.vai -graph.bak -.idea -tests.vai -vds.log -hosts.json -tests.vai.old \ No newline at end of file diff --git a/java/lc-conflux/LICENSE.md b/java/lc-conflux/LICENSE.md deleted file mode 100644 index cb0d6ccde175abfbf02884b9373349fb118682b2..0000000000000000000000000000000000000000 --- a/java/lc-conflux/LICENSE.md +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) 1994, 2021 Alex Leigh, All Rights Reserved - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Alex Leigh - * The copyright notice above does not evidence any actual or intended - * publication of such source code. - * - * Disclosure, copying, distribution, or transmission of this code without - * express permission is prohibited. - */ diff --git a/java/lc-conflux/build.gradle b/java/lc-conflux/build.gradle deleted file mode 100644 index a82443d964e39bd7b5437b770ba47c472abda7f6..0000000000000000000000000000000000000000 --- a/java/lc-conflux/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-mecha') - api project(':lc-mecha-nodegraph') - api project(':lc-eo') - api project(':lc-eo-schema') - api group: 'org.graalvm.js', name: 'js', version: '20.3.0' - api group: 'org.graalvm.js', name: 'js-scriptengine', version: '20.3.0' - api group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1' - testImplementation group: 'junit', name: 'junit', version: '4.12' -} \ No newline at end of file diff --git a/java/lc-conflux/src/main/java/lc/conflux/Conflux.java b/java/lc-conflux/src/main/java/lc/conflux/Conflux.java deleted file mode 100644 index 48297ba6382cd0bd6ec07cee7b7b5db74db0b5a7..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/Conflux.java +++ /dev/null @@ -1,27 +0,0 @@ -package lc.conflux; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author Alex Leigh - */ -public class Conflux { - private final HashMap datasources = new HashMap<>(); - private final Model model; - - public Conflux(Model model) { - this.model = model; - } - - public Map getDataSources() { - return datasources; - } - - @Override - public String toString() { - return "Conflux{" + - "datasources=" + datasources + - '}'; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/DataFrame.java b/java/lc-conflux/src/main/java/lc/conflux/DataFrame.java deleted file mode 100644 index 25bf2ac2c357b5b2b5292071b42204f2424ea6b0..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/DataFrame.java +++ /dev/null @@ -1,99 +0,0 @@ -package lc.conflux; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.math.IntIntervals; -import lc.mecha.sort.SortPolicy; - -import java.util.List; -import java.util.Locale; - -/** - * Classes implementing this interface provide a Conflux DataFrame, a specialized data structure designed for - * interactive data exploration. - *

- * As a design note, there is zero requirement that the object stored within the DataFrame be homogeneous. - * - * @author Alex Leigh - */ -public interface DataFrame { - int size(); - - EO get(int idx); - - void replaceData(EOLoop data); - - void clearFilters(); - - - /** - * Set the sort policy for this frame. To remove sorting and return to the natural order of the data, - * pass null. This will not actually sort the view. - *

- * Once the sort policy has been set into the dataframe, do not modify it. The policy will be used in the - * future by the frame when certain operations are performed (like re-filtering or updating the underlying - * data). Additionally, if the policy is modified outside of the class at a later time, it will not trigger - * a sort within the frame. To re-sort the frame, call this method with a new policy. - * - * @param policy The policy or null - */ - void setSortPolicy(SortPolicy policy); - - /** - * Set a quick filter for the given key. Setting the filter does not apply it to the data, so the view remains - * unchanged after this method is called. To apply the filters, call applyFilters(). - */ - void setQuickFilter(String key, String filter); - - EOLoop applyFilters(EOLoop secondary); - - /** - * Apply all outstanding filters and sort the frame. This produces an updated version of the view. - */ - void process() throws Exception; - - /** - * Get the current selection, if any. This method will always return a {@link IntIntervals} object, it may simply - * be empty. There is no guarantee that the resulting object has been compacted. To change the selection the - * caller may modify the returned object. - */ - IntIntervals getSelection(); - - /** - * Return the current state of the view in the form of a read-only list. - * - * @return The view. - */ - List getView(); - - /** - * Create a new empty EO in the frame. This implicitly adds it to the end of the view regardless of the current - * filter parameters. - * - * @return - */ - EO create(String type); - - void add(EO obj); - - /** - * Remove an object from the frame, given its view index. An object of the given index must exist in the - * frame. - * - * @param viewIdx The view index of the object to remove. - */ - void delete(int viewIdx); - - /** - * Return the objects in the view which are currently selected. If no objects are selected, an empty list is - * returned. - */ - List getSelected(); - - /** - * Return the {@link Locale} associated with this dataframe. - */ - Locale getLocale(); - - void deleteSelected(); -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/DataFrameImpl.java b/java/lc-conflux/src/main/java/lc/conflux/DataFrameImpl.java deleted file mode 100644 index 73f6b0f4a4551e4c8b1e8beaef3b457aeb58517c..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/DataFrameImpl.java +++ /dev/null @@ -1,304 +0,0 @@ -package lc.conflux; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.math.IntIntervals; -import lc.mecha.sort.SortPolicy; - -import java.util.*; - -/** - * A DataFrame provides a filterable, sortable view into a originalData graph. - * - * @author Alex Leigh - * @since mk14 mod10 (CRYSTAL) - */ -public class DataFrameImpl implements DataFrame { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DataFrameImpl.class); - private final IntIntervals selection = new IntIntervals(); - private final HashMap filters = new HashMap<>(); - private List view; - private EOLoop data; - private Locale locale = Locale.ENGLISH; - private SortPolicy sortPolicy; - - public DataFrameImpl() { - this(new EOLoop()); - } - - /** - * Create a new frame which wraps the provided {@link EOLoop}. - */ - public DataFrameImpl(EOLoop data) { - assert (data != null); - view = new ArrayList<>(); - this.data = data; - // By default, the view is everything in no particular order. - for (EO eo : data) { - view.add(eo); - } - } - - /** - * Return the {@link Locale} associated with this dataframe. - */ - public Locale getLocale() { - return locale; - } - - @Override - public void deleteSelected() { - logger.debug("deleteSelected() called. [selected]: {}", selection); - - HashSet toRemove = new HashSet<>(); - for (Integer i : selection.getIntegers()) { - try { - toRemove.add(view.get(i)); - } catch (IndexOutOfBoundsException e) { - // That's fine, everything is fine. - } - } - - logger.debug("Found objects to delete: {}", toRemove); - - data.remove(toRemove); - for (EO obj : toRemove) { - view.remove(obj); - } - selection.clear(); - - logger.debug("deleteSelected(): [view: {}]", view); - } - - public void setLocale(Locale locale) { - this.locale = locale; - } - - /** - * Return the size of the frame in rows. If rows have been filtered or otherwise manipulated, this is the - * number of rows visible in the view, not the total number of rows in the underlying originalData. - */ - @Override - public int size() { - return view.size(); - } - - public List getView() { - return Collections.unmodifiableList(view); - } - - @Override - public EO create(String type) { - logger.debug("Creating... [data: {}]", data.hashCode()); - EO obj = new EO(type); - add(obj); - return obj; - } - - public void add(EO obj) { - data.add(obj); - // We hot-wire the object into the view, because as a new object it may not match the previous sort or - // filter operations, but we want it to appear to the user anyways. - view.add(obj); - } - - /** - * logger.debug the object at the given view position. Note that this will side-effect the view indicies of any - * objects after this object from changing. For example, given 1 2 3, if you remove 2, 3 will become the new - * 2. - */ - @Override - public void delete(int viewIdx) { - logger.debug("Attempting to remove object. [idx: {}] [viewSz: {}] [dataSz: {}]", viewIdx, - view.size(), data.size()); - - EO old = view.remove(viewIdx); - - try { - data.remove(data.indexOf(old)); - } catch (IndexOutOfBoundsException e) { - logger.warn("delete(): {}", e); - } - - logger.debug("Frame size now: {}", data.size()); - } - - @Override - public List getSelected() { - // TODO: Performance sucks. - ArrayList selected = new ArrayList<>(); - for (int i = 0; i < view.size(); i++) { - if (selection.contains(i)) { - selected.add(view.get(i)); - } - } - - logger.debug("Returning selected objects. [selection: {}] [found: {}]", selection, selected); - - return selected; - } - - /** - * Return the row at the given index, or null if there is no such row. - */ - @Override - public EO get(int idx) { - return view.get(idx); - } - - @Override - public IntIntervals getSelection() { - // TODO: Return a read-only copy - return selection; - } - - /** - * Replace the originalData contained in this frame with the provided loop. This does not reset the filters - * or selections. This implementation retains the provided {@link EOLoop} object, releasing the previously - * assigned loop. - */ - @Override - public void replaceData(EOLoop data) { - this.data = data; - this.process(); - } - - /** - * Add the provided objects to the current selection, if they happen to be present. Note that this does not - * reset the existing selection state. the given objects in the view, if they happen to be present. - * - * @param selected The objects to select. - */ - private void select(List selected) { - logger.debug("select() called. [old: {}] [new: {}]", selection, selected); - // TODO: Performance sucks - for (EO obj : selected) { - int idx = view.indexOf(obj); - if (idx == -1) { - continue; - } - selection.add(idx, idx); - } - selection.compact(); - } - - - private void sort() { - logger.debug("sort() called. [policy: {}] [view: {}]", sortPolicy, view); - - if (sortPolicy == null || sortPolicy.getFields().size() == 0) return; - - List oldSelected = getSelected(); - Comparator comp = sortPolicy.buildComparator(); - view.sort(comp); - logger.debug("Sorted. [view: {}]", view); - - selection.clear(); - select(oldSelected); - } - - @Override - /** - * Set the sort policy for this frame. This will not actually perform the sort; to do that, - * process() must be called. - */ - public void setSortPolicy(SortPolicy policy) { - this.sortPolicy = policy; - } - - /** - * Set a filter string for one of the frame fields. Setting the filter does not apply it, to do that, - * call applyFilters(). The filter consists of a series of terms, all of which must be present - * in the originalData row value in order for the filter to match. The matching is case-insensitive. - *

- * To remove a filter, call setFilter() with a null filter. - */ - @Override - public void setQuickFilter(String key, String filter) { - logger.debug("Setting filters. [key: {}] [filter: {}]", key, filter); - - if (filter == null) { - filters.remove(key); - } else { - filters.put(key, filter.toLowerCase(locale)); - } - } - - public void clearFilters() { - filters.clear(); - } - - /** - * Apply the filters (if any) which have been set with the setFilter() method. This will produce - * the view from the underlying data. If a sort policy has been set via the setSortPolicy() - * method, the view will be sorted according to that policy. - *

- * If there was a selection prior to calling applyFilters(), the selection will be updated to - * contain any objects remaining in the view, in their new locations. - */ - @Override - public EOLoop applyFilters(EOLoop secondary) { - // TODO This method contains a legacy for when the view could be foreign - simplify - List oldSelected = getSelected(); - - EOLoop filtered = new EOLoop(); - EOLoop secondaryFiltered = null; - if (secondary != null) { - secondaryFiltered = new EOLoop(); - } - - int viewIdx = 0; - for (int dataIdx = 0; dataIdx < data.size(); dataIdx++) { - boolean retain = true; - EO row = data.get(dataIdx); - - for (Map.Entry filter : filters.entrySet()) { - String value = row.getValueString(filter.getKey()); - if (value == null) { - retain = false; - break; - } - - value = value.toLowerCase(); - - String term = filter.getValue(); - // Term is already lower-case - if (!value.toLowerCase(locale).contains(term)) { - retain = false; - break; - } - if (!retain) - break; - } - - if (retain) { - filtered.add(row); - viewIdx++; - if (secondaryFiltered != null) { - secondaryFiltered.add(secondary.get(dataIdx)); - } - } - } - - // We do this because we may have been passed a foreign list implementation, and we need to preserve it - view.clear(); - for (EO eo : filtered) { - view.add(eo); - } - - // Performing the sort() would try to fix the selections, but there is no need here, so we are sure to - // clear the selection before the call. - selection.clear(); - sort(); - select(oldSelected); - - return secondaryFiltered; - } - - @Override - public void process() { - applyFilters(null); - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/DataSource.java b/java/lc-conflux/src/main/java/lc/conflux/DataSource.java deleted file mode 100644 index ebc888c2aeca3868a392a5a3a287776c179d6afb..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/DataSource.java +++ /dev/null @@ -1,26 +0,0 @@ -package lc.conflux; - -import lc.eo.EO; -import lc.eo.EOLoop; - -import java.io.IOException; -import java.util.UUID; - -/** - * Classes implementing this interface provide access to low-level data stored outside of Conflux. This is the - * primary way that data is brought into the environment for processing. - * - * @author Alex Leigh - */ -public interface DataSource { - /** - * Return the underlying data associated with this datasource. - * - * @return The data. - * @throws IOException - * @throws ClassNotFoundException - */ - EOLoop getData() throws IOException, ClassNotFoundException; - - EO getObject(UUID dstRecordId); -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/DataSourceBinder.java b/java/lc-conflux/src/main/java/lc/conflux/DataSourceBinder.java deleted file mode 100644 index bced5c27c50473c4ce1dc766a88448501e6c94a7..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/DataSourceBinder.java +++ /dev/null @@ -1,18 +0,0 @@ -package lc.conflux; - -import java.io.IOException; - -/** - * Classes implementing this interface store named {@link DataSource} objects. - * - * @author Alex Leigh - */ -public interface DataSourceBinder { - /** - * Return the {@link DataSource} of the given name to the caller, or null if no such - * DataSource is registered. name must not be null. - * - * @param name The {@link DataSource}. - */ - DataSource getDataSource(String name) throws IOException, ClassNotFoundException; -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/Model.java b/java/lc-conflux/src/main/java/lc/conflux/Model.java deleted file mode 100644 index 1a902ddf2edb745f4485fcf8815e7a456eeeaaf9..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/Model.java +++ /dev/null @@ -1,48 +0,0 @@ -package lc.conflux; - -import lc.mecha.nodegraph.Node; - -import java.util.ArrayList; -import java.util.List; - -public class Model { - private final ArrayList nodes = new ArrayList<>(); - - /** - * Return an array of all the nodes contained within this model. Returns an empty list if there are no - * nodes in the model. - */ - public List getNodes() { - return nodes; - } - - /** - * Return a {@link List} of all the nodes in this model matching the supplied class. Returns an empty list - * if there are no matching nodes. - */ - public List getNodes(Class clazz) { - ArrayList classNodes = new ArrayList<>(); - for (Node n : nodes) { - if (clazz.equals(n.getClass())) classNodes.add(n); - } - return classNodes; - } - - /** - * Return the first {@link Node} matching the given class. If multiple nodes match the given class, it is not - * specified which is returned. Returns null if there is no matching node. - */ - public Node getNode(Class clazz) { - for (Node n : nodes) { - if (clazz.equals(n.getClass())) return n; - } - return null; - } - - public Node getNode(String id) { - for (Node node : nodes) { - if (id.equals(node.getId())) return node; - } - return null; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/RamDataSource.java b/java/lc-conflux/src/main/java/lc/conflux/RamDataSource.java deleted file mode 100644 index f73ae471982f31f881c98b12af9318922f7e6615..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/RamDataSource.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.conflux; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.Serializable; -import java.util.UUID; - -/** - * A simple implementation of the {@link DataSource} interface provided by heap storage. - * - * @author Alex Leigh - */ -public class RamDataSource implements DataSource, Serializable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(RamDataSource.class); - private static final long serialVersionUID = 1L; - private final EOLoop data; - - - public RamDataSource() { - data = new EOLoop(); - } - - public RamDataSource(EOLoop data) { - // For debugging - assert (data != null); - this.data = data; - } - - @Override - public EOLoop getData() { - return data; - } - - public EO getObject(UUID id) { - for (EO eo : data) { - UUID objId = eo.getValueUUID("_id"); - if (id.equals(objId)) return eo; - } - return null; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/RecordPointer.java b/java/lc-conflux/src/main/java/lc/conflux/RecordPointer.java deleted file mode 100644 index f86f87249f7661b136040bd243a221b22117ed8c..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/RecordPointer.java +++ /dev/null @@ -1,56 +0,0 @@ -package lc.conflux; - -import java.io.Serializable; -import java.util.Objects; -import java.util.UUID; - -/** - * This class implements a record pointer. The pointer stores a reference from a source record to a destination record, - * such that the destination record can be modified over time. The pointer is said to have a source, for the purpose - * that the pointer may be deleted when that source record is deleted. - * - * @author Alex Leigh - */ -public class RecordPointer implements Serializable { - private static final long serialVersionUID = 1L; - private final UUID srcRecordId; - private UUID dstRecordId; - - public RecordPointer(UUID srcRecordId, UUID dstRecordId) { - this.srcRecordId = srcRecordId; - this.dstRecordId = dstRecordId; - } - - public UUID getSrcRecordId() { - return srcRecordId; - } - - public UUID getDstRecordId() { - return dstRecordId; - } - - public void setDstRecordId(UUID dstRecordId) { - this.dstRecordId = dstRecordId; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - RecordPointer that = (RecordPointer) o; - return Objects.equals(srcRecordId, that.srcRecordId) && Objects.equals(dstRecordId, that.dstRecordId); - } - - @Override - public int hashCode() { - return Objects.hash(srcRecordId, dstRecordId); - } - - @Override - public String toString() { - return "RecordPointer{" + - "srcRecordId=" + srcRecordId + - ", dstRecordId=" + dstRecordId + - '}'; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/RecordPointerSet.java b/java/lc-conflux/src/main/java/lc/conflux/RecordPointerSet.java deleted file mode 100644 index 7cbc10e553689469e20aa6510fd721518259ca22..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/RecordPointerSet.java +++ /dev/null @@ -1,9 +0,0 @@ -package lc.conflux; - -import java.util.UUID; - -public interface RecordPointerSet { - RecordPointer getRecordPointer(UUID id); - - UUID addRecordPointer(RecordPointer ptr); -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AggregateNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AggregateNode.java deleted file mode 100644 index a40725e054599ee3237449ff4a7d169c593e8213..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AggregateNode.java +++ /dev/null @@ -1,62 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.Node; -import lc.mecha.nodegraph.ProcessorState; -import lc.mecha.nodegraph.UselessAttribute; - -import java.io.Serializable; - -/** - * A {@link Node} which provides aggregate row operations. - * - * @author Alex Leigh - */ -public abstract class AggregateNode extends Node { - public static final String NODE_NAME = "leigh.conflux.v1.Aggregate"; - public static final String KEY_INPUT_OBJECTS = "objs"; - public static final String KEY_OUTPUT_VALUE = "value"; - private static final MechaLogger logger = MechaLoggerFactory.getLogger(AggregateNode.class); - - public static AggregateNode build(String type, String id) { - switch (type) { - case "sum": - return new SumNode(id); - case MinNode.TYPE: - return new MinNode(id); - case MaxNode.TYPE: - return new MaxNode(id); - case CountNode.TYPE: - return new CountNode(id); - case AverageNode.TYPE: - return new AverageNode(id); - } - throw new IllegalStateException("Unknown aggregate type: " + type); - } - - public AggregateNode(String id) { - super(id); - addOutput(KEY_OUTPUT_VALUE, new UselessAttribute() { - public Serializable getSingleValue(ProcessorState state) throws Exception { - start(state); - logger.info("KEY_OUTPUT_VALUE read..."); - EOLoop rows = getInputObjects(KEY_INPUT_OBJECTS, state); - logger.info("Located rows: {}", rows); - String key = getInputStaticString(KEY_INPUT_OBJECTS, state); - for (EO eo : rows) { - processRow(eo, key, state); - } - return finish(state); - } - }); - } - - public abstract void start(ProcessorState state); - - public abstract void processRow(EO row, String key, ProcessorState state) throws Exception; - - public abstract Serializable finish(ProcessorState state); -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AttributeValueNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AttributeValueNode.java deleted file mode 100644 index 2caecfa904163324d3156d814c26691b50019986..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AttributeValueNode.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.Node; -import lc.mecha.nodegraph.ProcessorState; -import lc.mecha.nodegraph.UselessAttribute; - -import java.io.Serializable; - -/** - * A Singleton node converts an anonymous value into a named value. - * - * @author Alex Leigh - */ -public class AttributeValueNode extends Node { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(AttributeValueNode.class); - public static final String NODE_NAME = "leigh.conflux.v1.AttributeValue"; - public static final String KEY_OUTPUT_VALUE = "obj"; - public static final String KEY_INPUT_VALUE = "value"; - public static final String KEY_INPUT_NAME = "name"; - public static final String KEY_INPUT_DISPLAY_VALUE = "displayValue"; - public static final String KEY_INPUT_COLOR = "color"; - public static final String KEY_INPUT_FONTWEIGHT = "fontWeight"; - - public AttributeValueNode(String id) { - super(id); - addOutput(KEY_OUTPUT_VALUE, new UselessAttribute() { - public EO getObjectValue(ProcessorState state) throws Exception { - String key = getInputSingleString(KEY_INPUT_NAME, state); - Serializable value = getInputSingle(KEY_INPUT_VALUE, state); - Serializable displayValue = getInputSingle(KEY_INPUT_DISPLAY_VALUE, state); - Serializable color = getInputSingle(KEY_INPUT_COLOR, state); - Serializable fontWeight = getInputSingle(KEY_INPUT_FONTWEIGHT, state); - - logger.debug("KEY_OUTPUT_VALUE: [k: {}] [v: {}] [d: {}] [c: {}]", key, value, displayValue, color); - EO result = new EO(); - result.setValue(key, value); - - if (displayValue != null) result.setMetaValue(key, KEY_INPUT_DISPLAY_VALUE, displayValue, true); - if (color != null) result.setMetaValue(key, KEY_INPUT_COLOR, color, true); - if (fontWeight != null) result.setMetaValue(key, KEY_INPUT_FONTWEIGHT, fontWeight, true); - - logger.debug("Post processed object: {}", result); - - return result; - } - }); - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AverageNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AverageNode.java deleted file mode 100644 index c2283279580ac3c0665aec59e63cc367616de0e6..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/AverageNode.java +++ /dev/null @@ -1,37 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.mecha.nodegraph.ProcessorState; - -import java.io.Serializable; -import java.math.BigDecimal; - -public class AverageNode extends AggregateNode { - public static final String TYPE = "avg"; - BigDecimal value; - int count; - - public AverageNode(String id) { - super(id); - } - - @Override - public void start(ProcessorState state) { - count = 0; - value = BigDecimal.ZERO; - } - - @Override - public void processRow(EO row, String key, ProcessorState state) throws Exception { - BigDecimal x = row.getValueBigDecimal(key); - count++; - if (x != null) - value = value.add(x); - } - - @Override - public Serializable finish(ProcessorState state) { - if (count == 0) return null; - return value.divide(BigDecimal.valueOf(count)); - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/CommandNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/CommandNode.java deleted file mode 100644 index b79f50f89fe59d41e2cca3d26b1f9611469ca0ad..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/CommandNode.java +++ /dev/null @@ -1,15 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.mecha.nodegraph.Node; - -public class CommandNode extends Node { - public static final String NODE_NAME = "leigh.conflux.v1.CommandNode"; - public static final String KEY_IN_FUNC = "func"; - public static final String KEY_IN_API = "api"; - public static final String KEY_IN_ICON = "icon"; - public static final String KEY_OUT_ACTION = "action"; - - public CommandNode(String id) { - super(id); - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/CountNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/CountNode.java deleted file mode 100644 index 2ccfb8c300e65bf6e5321e08c28e61299fd6df72..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/CountNode.java +++ /dev/null @@ -1,35 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.ProcessorState; - -import java.io.Serializable; - -public class CountNode extends AggregateNode { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(CountNode.class); - public static final String TYPE = "count"; - int value; - - public CountNode(String id) { - super(id); - } - - @Override - public void start(ProcessorState state) { - value = 0; - logger.info("Count starting..."); - } - - @Override - public void processRow(EO row, String key, ProcessorState state) { - value++; - logger.info("Counted row"); - } - - @Override - public Serializable finish(ProcessorState state) { - return value; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/ExpressionNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/ExpressionNode.java deleted file mode 100644 index 639906f1a3d0f9138e88f591387b9404375e2c2d..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/ExpressionNode.java +++ /dev/null @@ -1,97 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.Node; -import lc.mecha.nodegraph.ProcessorState; -import lc.mecha.nodegraph.UselessAttribute; -import lc.mecha.util.Snavig; -import org.apache.commons.lang.math.NumberUtils; - -import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; -import java.io.Serializable; - -/** - * Process a Graal expression. - * - * @author Alex Leigh - */ -public class ExpressionNode extends Node { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ExpressionNode.class); - public static final String NODE_NAME = "leigh.conflux.v1.Expression"; - public static final String KEY_IN_EXPR = "expr"; - public static final String KEY_IN_A = "a"; - public static final String KEY_IN_B = "b"; - public static final String KEY_IN_C = "c"; - public static final String KEY_IN_D = "d"; - public static final String KEY_VAR_A = "a"; - public static final String KEY_VAR_B = "b"; - public static final String KEY_VAR_C = "c"; - public static final String KEY_VAR_D = "d"; - - public static final String KEY_OUT_VALUE = "value"; - private final ScriptEngine scriptEngine; - - public ExpressionNode(String id) { - super(id); - ScriptEngineManager mgr = new ScriptEngineManager(); - scriptEngine = mgr.getEngineByName("graal.js"); - - assert (scriptEngine != null); - - addOutput(KEY_OUT_VALUE, new UselessAttribute() { - public Serializable getSingleValue(ProcessorState state) throws Exception { - Serializable aVal = getValue(KEY_IN_A, state); - Serializable bVal = getValue(KEY_IN_B, state); - Serializable cVal = getValue(KEY_IN_C, state); - Serializable dVal = getValue(KEY_IN_D, state); - - logger.debug("Read values. [a: {}] [b: {}] [c: {}] [d: {}]", aVal, bVal, cVal, dVal); - - scriptEngine.put(KEY_VAR_A, aVal); - scriptEngine.put(KEY_VAR_B, bVal); - scriptEngine.put(KEY_VAR_C, cVal); - scriptEngine.put(KEY_VAR_D, dVal); - - Object o = scriptEngine.eval(String.valueOf(getInputSingle(KEY_IN_EXPR, state))); - String v = String.valueOf(o); - if (o != null && v.equals("null")) return null; - return v; - } - }); - } - - /** - * Return a String value given different sorts of inputs that this node might experience. - */ - private Serializable getValue(String key, ProcessorState state) throws Exception { - Serializable x = getInputSingle(key, state); - /* - if (x == null) { - EO obj = getInputObject(key, state); - logger.debug("Object input case. [obj: {}]", obj); - if(obj!=null) { - x = obj.getValue(key); - } - } - */ - - if (x == null) return null; - - String s = Snavig.convertToString(x); - - if (NumberUtils.isNumber(s)) { - return NumberUtils.createNumber(s); - } - - // FIXME: This will lose precision for integers - try { - return Double.parseDouble(s); - } catch (NumberFormatException e) { - // Intentionally Blank - } - - return x; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/LookupAttributeNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/LookupAttributeNode.java deleted file mode 100644 index 26bfa4efa1186ab627dddb8e3f83071153aa246b..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/LookupAttributeNode.java +++ /dev/null @@ -1,18 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.mecha.nodegraph.Node; - -public class LookupAttributeNode extends Node { - public static final String NODE_NAME = "leigh.conflux.v1.LookupAttributeNode"; - public static final String KEY_INPUT_SRCATTR = "srcAttr"; - public static final String KEY_INPUT_DSTATTR = "dstAttr"; - public static final String KEY_INPUT_LABEL = "label"; - public static final String KEY_INPUT_ISOUTPUT = "isOutput"; - public static final String KEY_INPUT_ISLOOKUP = "isLookup"; - public static final String KEY_INPUT_UI_INDEX = "uiIndex"; - public static final String KEY_OUTPUT_CFG = "lookupAttrCfg"; - - public LookupAttributeNode(String id) { - super(id); - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/LoopNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/LoopNode.java deleted file mode 100644 index a4f73574197afdd31f490fd72f4b3954c1bc8162..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/LoopNode.java +++ /dev/null @@ -1,152 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.Attribute; -import lc.mecha.nodegraph.Node; -import lc.mecha.nodegraph.ProcessorState; -import lc.mecha.nodegraph.UselessAttribute; -import org.apache.commons.lang.StringUtils; - -import java.util.ArrayList; - -/** - * This node loops through an input set, applying transformations to each object in that set, outputting a new set - * of computed values. - *

- * The Loop operates on the input object set KEY_INPUT_OBJS. For every object in that set, it will read the - * values from every node connected to KEY_INPUT_PROC. So for example, if there are 256 objects in - * the input set, it will read the process nodes 256 times. When the process nodes are read, - * KEY_OUTPUT_CURSOR contains all the objects from the attribute of the current - * object in KEY_INPUT_OBJS. For example, if the attribute is "nums", the 1st time process is read, - * KEY_OUTPUT_CURSOR will contain the contents of the 1st object's "nums" attribute. - *

- * The values produced by the process nodes are gathered together into a new synthetic object, and that synthetic - * object is added to a synthetic record set which is made available at KEY_OUTPUT_OBJS. - * When the loop has finished processing, the number of objects in the synthetic output set will be equal to the - * number of objects in the input set, and the order will be the same. Therefore, the 5th synthetic object contains - * the product of the 5th input object, etc. - * - * @author Alex Leigh - */ -public class LoopNode extends Node { - public static final String NODE_NAME = "leigh.conflux.v1.Loop"; - public static final String KEY_INPUT_OBJS = "objs"; - public static final String KEY_IN_PATH = "path"; - public static final String KEY_INPUT_ATTR = "objAttr"; - public static final String KEY_OUTPUT_OBJS = "objs"; - public static final String KEY_OUTPUT_CURSOR = "cursor"; - public static final String KEY_INPUT_PROC = "process"; - private static final MechaLogger logger = MechaLoggerFactory.getLogger(LoopNode.class); - private EOLoop outputSet; - private EOLoop currentRows; - private EOLoop filteredSet; - - public LoopNode(String id) { - super(id); - addOutput(KEY_OUTPUT_OBJS, new UselessAttribute() { - public EOLoop getObjectsValue(ProcessorState state) throws Exception { - logger.debug("KEY_OUTPUT_OBJS read."); - process(state); - return outputSet; - } - }); - - addOutput(KEY_OUTPUT_CURSOR, new UselessAttribute() { - public EOLoop getObjectsValue(ProcessorState state) { - logger.debug("KEY_OUTPUT_CURSOR attribute read. Returning {}", currentRows); - return currentRows; - } - - public EO getObjectValue(ProcessorState state) { - if (currentRows != null && currentRows.size() > 0) return currentRows.get(0); - return null; - } - }); - } - - - /** - * Attempt to filter the input set, if a filter has been set. If this is the case, then the output set will - * be synthetic. If no filter has been set, then the output set will be the same as the input set. - */ - private void filter(ProcessorState state) throws Exception { - filteredSet = getInputObjects(KEY_INPUT_OBJS, state); - } - - public void process(ProcessorState state) throws Exception { - filter(state); - - String childKey = getInputStaticString(KEY_INPUT_ATTR, state); - String path = getInputStaticString(KEY_IN_PATH, state); - - if (StringUtils.isBlank(path)) { - logger.debug("Direct case."); - outputSet = filteredSet; - } else { - outputSet = new EOLoop(); - for (EO obj : filteredSet) { - logger.debug("Recursive case."); - obj.recurse(outputSet, path); - } - } - - logger.debug("Loop processing. [objSz: {}] [procSz: {}] [key: {}] [me: {}]", - filteredSet.size(), outputSet.size(), childKey, this.hashCode()); - - if (!StringUtils.isBlank(childKey)) { - processChildren(childKey, state); - return; - } - - ArrayList inputs = getInputs(KEY_INPUT_PROC); - - // Not children, so we are going to process "parents". - for (EO inputRow : outputSet) { - currentRows = new EOLoop().add(inputRow); - - logger.debug("Firing loop. [sz: {}] [k: {}] [obj: {}] {}", currentRows.size(), childKey, - inputRow, currentRows); - - // Read all the input nodes, and copy their produced value into the data object - - if (inputs != null) { - for (Attribute input : inputs) { - EO ieo = input.getObjectValue(state); - logger.debug("Process input: [ieo: {} {}] [input: {}]", ieo, ieo.hashCode(), input); - if (ieo != null) { - inputRow.merge(ieo); - } - } - } - } - } - - private void processChildren(String childKey, ProcessorState state) throws Exception { - for (EO inputRow : outputSet) { - // Set the current row output to this row. - logger.debug("Input row: {}", inputRow); - - if (!inputRow.containsKey(childKey)) { - logger.warn("Input object does not contain child key. Results will be null."); - } - currentRows = inputRow.getValueLoop(childKey); - - logger.debug("Current rows. [sz: {}] [k: {}] [obj: {}] {}", currentRows.size(), childKey, - inputRow, currentRows); - - // Read all the input graphs - ArrayList inputs = getInputs(KEY_INPUT_PROC); - if (inputs != null) { - for (Attribute input : inputs) { - logger.debug("Process input: {}", input); - EO ieo = input.getObjectValue(state); - if (ieo != null) - inputRow.setAll(ieo); - } - } - } - } -} \ No newline at end of file diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MaxNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MaxNode.java deleted file mode 100644 index 1c5d07ebcb2810bb9802acf77212fe084409e60f..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MaxNode.java +++ /dev/null @@ -1,39 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.mecha.nodegraph.ProcessorState; - -import java.io.Serializable; -import java.math.BigDecimal; - -public class MaxNode extends AggregateNode { - public static final String TYPE = "max"; - - BigDecimal value; - - public MaxNode(String id) { - super(id); - } - - @Override - public void start(ProcessorState state) { - value = null; - } - - @Override - public void processRow(EO row, String key, ProcessorState state) throws Exception { - BigDecimal x = row.getValueBigDecimal(key); - - if (x != null) { - if (value == null) - value = x; - else if (value.compareTo(x) < 0) - value = x; - } - } - - @Override - public Serializable finish(ProcessorState state) { - return value; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MergeNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MergeNode.java deleted file mode 100644 index 2e366fcd5c9c75addb85bf0fd6650e8f5bc5da49..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MergeNode.java +++ /dev/null @@ -1,53 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.nodegraph.Attribute; -import lc.mecha.nodegraph.Node; -import lc.mecha.nodegraph.ProcessorState; -import lc.mecha.nodegraph.UselessAttribute; - -import java.util.ArrayList; - -/** - * This node produces a new rowset from a n rowsets, by combining objects in each set. The new set contains - * new EOs. - * - * @author Alex Leigh - */ -public class MergeNode extends Node { - public static final String KEY_INPUT_ROWS = "rows"; - public static final String KEY_OUTPUT_ROWS = "rows"; - - public MergeNode(String id) { - super(id); - addOutput(KEY_OUTPUT_ROWS, new UselessAttribute() { - public EOLoop getObjectsValue(ProcessorState state) throws Exception { - ArrayList loops = new ArrayList<>(); - for (Attribute a : getInputs(KEY_INPUT_ROWS)) { - EOLoop loop = a.getObjectsValue(state); - if (loop != null) loops.add(loop); - } - - EOLoop newLoop = new EOLoop(); - - for (int i = 0; i < loops.get(0).size(); i++) { - newLoop.add(merge(loops, i)); - } - - return newLoop; - } - }); - } - - private EO merge(ArrayList loops, int idx) { - EO merged = new EO(); - - for (EOLoop loop : loops) { - EO obj = loop.get(idx); - merged.setAll(obj); - } - - return merged; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MinNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MinNode.java deleted file mode 100644 index 03e67c9920330f054f3e29b9977e13dfe1c863d6..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/MinNode.java +++ /dev/null @@ -1,39 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.mecha.nodegraph.ProcessorState; - -import java.io.Serializable; -import java.math.BigDecimal; - -public class MinNode extends AggregateNode { - public static final String TYPE = "min"; - - BigDecimal value; - - public MinNode(String id) { - super(id); - } - - @Override - public void start(ProcessorState state) { - value = null; - } - - @Override - public void processRow(EO row, String key, ProcessorState state) throws Exception { - BigDecimal x = row.getValueBigDecimal(key); - - if (x != null) { - if (value == null) - value = x; - else if (value.compareTo(x) > 0) - value = x; - } - } - - @Override - public Serializable finish(ProcessorState state) { - return value; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/RecordSetNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/RecordSetNode.java deleted file mode 100644 index 146646c6cee0658e2bdff29f9978c6d3b4116f3f..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/RecordSetNode.java +++ /dev/null @@ -1,53 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.conflux.DataSource; -import lc.conflux.DataSourceBinder; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.Node; -import lc.mecha.nodegraph.ProcessorState; -import lc.mecha.nodegraph.UselessAttribute; - -/** - * A graph node for loading object data into a Conflux graph from a foreign system via a {@link DataSource} object. - * It is up to the individual implementation to provide the mechanics for getting rows into this node for the - * purposes of processing the model. - *

- * The node provides the KEY_IN_NAME attribute, which when read should provide the name of the - * datasource to be read by the node. - * - * @author Alex Leigh - */ -public class RecordSetNode extends Node { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(RecordSetNode.class); - public final static String KEY_OUT_OBJS = "objs"; - public final static String KEY_IN_NAME = "name"; - // FIXME: This is the wrong namespace - public static final String NODE_NAME = "qody.vision.v1.RecordSet"; - - /** - * Create a new DataSourceCode which wraps the provided {@link DataSource}. The DataSource.getData() - * method will be called whenever this nodes KEY_OUT_ROWS property is read, so this node returns - * the actual datasource (not a copy). - */ - public RecordSetNode(String id, DataSourceBinder binder) { - super(id); - addOutput(KEY_OUT_OBJS, new UselessAttribute() { - public EOLoop getObjectsValue(ProcessorState state) throws Exception { - String dsName = getInputSingleString(KEY_IN_NAME, state); - logger.debug("Reading objs. [name: {}]", dsName); - if (dsName != null) { - DataSource ds = binder.getDataSource(dsName); - logger.debug("Located datasource: {}", ds); - if (ds != null) { - // logger.debug("Read node from instance. {}", ds.getData().hashCode()); - return ds.getData(); - } - } - logger.warn("Unable to obtain a rowset."); - return null; - } - }); - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/SumNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/SumNode.java deleted file mode 100644 index cba17598045a69deebed259ccd6888190cdbbd6c..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/SumNode.java +++ /dev/null @@ -1,39 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.ProcessorState; - -import java.math.BigDecimal; - -/** - * Implementation of a sum aggregation. - * - * @author Alex Leigh - */ -public class SumNode extends AggregateNode { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SumNode.class); - private BigDecimal value = BigDecimal.ZERO; - - public SumNode(String id) { - super(id); - } - - @Override - public void start(ProcessorState state) { - value = BigDecimal.ZERO; - } - - public void processRow(EO row, String key, ProcessorState state) throws Exception { - BigDecimal x = row.getValueBigDecimal(key); - logger.debug("Processing row: [key: {}] [x: {}] {}", key, x, row); - if (x != null) - value = value.add(x); - } - - @Override - public BigDecimal finish(ProcessorState state) { - return value; - } -} diff --git a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/UpdateNode.java b/java/lc-conflux/src/main/java/lc/conflux/nodegraph/UpdateNode.java deleted file mode 100644 index b23ca0d8337172a12187e60ff38926116f0c452f..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/main/java/lc/conflux/nodegraph/UpdateNode.java +++ /dev/null @@ -1,30 +0,0 @@ -package lc.conflux.nodegraph; - -import lc.eo.EO; -import lc.mecha.nodegraph.Node; -import lc.mecha.nodegraph.ProcessorState; -import lc.mecha.util.Snavig; - -import java.io.Serializable; - -public class UpdateNode extends Node { - public static final String KEY_INPUT_OBJ = "obj"; - public static final String KEY_INPUT_KEY = "key"; - public static final String KEY_INPUT_VALUE = "value"; - - public UpdateNode(String id) { - super(id); - } - - /** - * Perform the update operation by reading a key/value pair from upstream and writing that into the provided - * object. - */ - public void process(ProcessorState state) throws Exception { - EO input = getInputObject(KEY_INPUT_OBJ, state); - String key = Snavig.convertToString(getInputSingle(KEY_INPUT_KEY, state)); - Serializable value = getInputSingle(KEY_INPUT_VALUE, state); - - input.setValue(key, value); - } -} diff --git a/java/lc-conflux/src/test/java/lc/conflux/DataFrameTest.java b/java/lc-conflux/src/test/java/lc/conflux/DataFrameTest.java deleted file mode 100644 index 9129a73a537affadef7a6032c142228f73573258..0000000000000000000000000000000000000000 --- a/java/lc-conflux/src/test/java/lc/conflux/DataFrameTest.java +++ /dev/null @@ -1,92 +0,0 @@ -package lc.conflux; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.eo.sort.EOSortPolicy; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.sort.FieldSort; -import lc.mecha.sort.SortCardinality; -import org.junit.Test; - -import java.util.List; -import java.util.Locale; - -import static org.junit.Assert.assertEquals; - -/** - * JUnit test for the {@link DataFrame} class and related functionality. - * - * @author Alex Leigh - */ -public class DataFrameTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DataFrameTest.class); - - @Test - public void testFilter() throws Exception { - EOLoop data = new EOLoop(); - data.add(new EO("person").setValue("firstName", "C. Alexander") - .setValue("lastName", "Leigh")); - data.add(new EO("person").setValue("firstName", "Nikki") - .setValue("lastName", "Windon")); - - DataFrame df = new DataFrameImpl(data); - assertEquals(2, df.size()); - - df.setQuickFilter("firstName", "Alex"); - assertEquals(2, df.size()); - - df.process(); - assertEquals(1, df.size()); - EO first = df.getView().get(0); - assertEquals("Leigh", first.getValue("lastName")); - } - - @Test - public void testAscendingSort() throws Exception { - EOLoop data = new EOLoop(); - data.add(new EO("person").setValue("firstName", "Nikki") - .setValue("lastName", "Windon")); - data.add(new EO("person").setValue("firstName", "C. Alexander") - .setValue("lastName", "Leigh")); - DataFrame df = new DataFrameImpl(data); - - // Select Nikki - df.getSelection().add(0, 0); - - EOSortPolicy sort = new EOSortPolicy(Locale.US); - sort.addField(new FieldSort("lastName", SortCardinality.ASCENDING)); - df.setSortPolicy(sort); - df.process(); - - // Check that Leigh is now first - EO first = df.getView().get(0); - assertEquals("Leigh", first.get("lastName")); - - // Verify that Nikki is still selected - List selected = df.getSelected(); - assertEquals(1, selected.size()); - EO firstSelected = selected.get(0); - - assertEquals("Windon", firstSelected.getValue("lastName")); - } - - @Test - public void testDescendingSort() throws Exception { - EOLoop data = new EOLoop(); - data.add(new EO("person").setValue("firstName", "C. Alexander") - .setValue("lastName", "Leigh")); - data.add(new EO("person").setValue("firstName", "Nikki") - .setValue("lastName", "Windon")); - DataFrame df = new DataFrameImpl(data); - - EOSortPolicy sort = new EOSortPolicy(Locale.US); - sort.addField(new FieldSort("lastName", SortCardinality.DESCENDING)); - df.setSortPolicy(sort); - df.process(); - - EO first = df.getView().get(0); - df.process(); - assertEquals("Windon", first.get("lastName")); - } -} diff --git a/java/lc-data-flight/build.gradle b/java/lc-data-flight/build.gradle deleted file mode 100644 index b060fcf09a592a5cfeabf34235c4b31d9404ae45..0000000000000000000000000000000000000000 --- a/java/lc-data-flight/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 -group 'leighco' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project (':lc-mecha') - api 'org.apache.commons:commons-csv:1.9.0' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-data-flight/src/main/java/lc/data/flight/FlightDataLoader.java b/java/lc-data-flight/src/main/java/lc/data/flight/FlightDataLoader.java deleted file mode 100644 index 8fef0839c5ce05e4411a49f34df35ced1348b57a..0000000000000000000000000000000000000000 --- a/java/lc-data-flight/src/main/java/lc/data/flight/FlightDataLoader.java +++ /dev/null @@ -1,43 +0,0 @@ -package lc.data.flight; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.commons.csv.CSVFormat; -import org.apache.commons.csv.CSVParser; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; - -/** - * This class loads the flight data into RAM. - * - * @author Alex Leigh - * @since 1.0 - */ - -public class FlightDataLoader { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(FlightDataLoader.class); - public static final String KEY_SRC = "src"; - public static final String KEY_DST = "dst"; - public static final String KEY_SRC_CITY = "src_city"; - public static final String KEY_DST_CITY = "dst_city"; - public static final String KEY_PAX = "pax"; - public static final String KEY_SEATS = "seats"; - public static final String KEY_FLIGHTS = "flights"; - public static final String KEY_DISTANCE = "distance"; - public static final String KEY_DATE = "date"; - public static final String KEY_SRC_POP = "src_pop"; - public static final String KEY_DST_POP = "dst_pop"; - - public CSVParser load() throws IOException { - InputStream data = this.getClass().getResourceAsStream("/lc/data/flight/flight_edges.tsv"); - Reader in = new InputStreamReader(data); - return CSVFormat.DEFAULT - .withDelimiter('\t') - .withHeader(KEY_SRC, KEY_DST, KEY_SRC_CITY, KEY_DST_CITY, KEY_PAX, KEY_SEATS, KEY_FLIGHTS, - KEY_DISTANCE, KEY_DATE, KEY_SRC_POP, KEY_DST_POP) - .parse(in); - } -} diff --git a/java/lc-data-flight/src/main/resources/lc/data/flight/flight_edges.tsv b/java/lc-data-flight/src/main/resources/lc/data/flight/flight_edges.tsv deleted file mode 100644 index 5aec638e0f7c00437542be1d88db54f0a0d49a03..0000000000000000000000000000000000000000 Binary files a/java/lc-data-flight/src/main/resources/lc/data/flight/flight_edges.tsv and /dev/null differ diff --git a/java/lc-data-flight/src/main/resources/lc/data/flight/flight_edges.yaml b/java/lc-data-flight/src/main/resources/lc/data/flight/flight_edges.yaml deleted file mode 100644 index 81c134b325810c57cfe6a4bacfed8077098474dd..0000000000000000000000000000000000000000 --- a/java/lc-data-flight/src/main/resources/lc/data/flight/flight_edges.yaml +++ /dev/null @@ -1,81 +0,0 @@ ---- -infochimps_schema: - title: Infochimps Simple Schema (ICSS) - version: 0.1.1 - generated_at: Tue Aug 03 17:08:40 +0000 2010 - url: "http://infochimps.org/datasets/d35-million-us-domestic-flights-from-1990-to-2009.yaml" - description: >- - This is an Infochimps Simple Schema (ICSS). - - It describes data on Infochimps.org and is meant to be both human - and machine readable. - - An ICSS file is distributed with every download on Infochimps and - is also available by request to the above URL. - - ICSS files bundled with downloads are generated at the time the - download was created so they can become out of date as changes are - made to the data. If this ICSS came with data you downloaded then - it is possible that it is already out of date. You can get the - most recent version at the URL above. - -dataset: - id: 16091 - title: 3.5 Million+ US Domestic Flights from 1990 to 2009 - subtitle: ~ - main_link: ~ - url: "http://infochimps.org/datasets/d35-million-us-domestic-flights-from-1990-to-2009" - created_at: "Tue Aug 03 15:39:04 UTC 2010" - updated_at: "Tue Aug 03 15:39:05 UTC 2010" - tags: [ airline,airport,aviation,big,bts,domestic,flight,flights,government,metropolitan,network,rita,statistics,transportation,transtats ] - categories: [ Economics, Social Sciences ] - created_by: - id: 675 - username: Ganglion - name: Jacob Perkins - institution: ~ - main_link: ~ - url: "http://infochimps.org/users/Ganglion" - description: >- - h2. Description: - - Over 3.5 million monthly domestic flight records from 1990 to 2009. Data are arranged as an adjacency list with metadata. Ready for immediate database import and analysis. - - h2. Fields: - - table{backgroud:grey}. - |Short name|Type|Description| - |Origin|String| Three letter airport code of the origin airport | - |Destination|String| Three letter airport code of the destination airport | - |Origin City|String| Origin city name | - |Destination City|String| Destination city name | - |Passengers|Integer| Number of passengers transported from origin to destination | - |Seats|Integer| Number of seats available on flights from origin to destination | - |Flights|Integer| Number of flights between origin and destination (multiple records for one month, many with flights > 1)| - |Distance|Integer| Distance (to nearest mile) flown between origin and destination | - |Fly Date|Integer| The date (yyyymm) of flight | - |Origin Population|Integer| Origin city's population as reported by US Census | - |Destination Population|Integer| Destination city's population as reported by US Census | - - h2. Snippet: - - |MFR|RDM|Medford, OR |Bend, OR| 0| 0|1| 156|200810| 200298|157730| - |AMA|EKO|Amarillo, TX |Elko, NV|124|124|1| 858|199308| 202960| 40259| - |TUS|EKO|Tucson, AZ |Elko, NV|112|124|1| 658|199308| 711392| 40259| - |AMA|EKO|Amarillo, TX |Elko, NV|115|124|1| 858|199406| 206315| 41668| - |ICT|EKO|Wichita, KS |Elko, NV|100|124|1|1007|199607| 552884| 45034| - |SPS|EKO|Wichita Falls, TX|Elko, NV|122|124|1|1059|199603| 147683| 45034| - - h3. Source(s) - - 1. "US Census Bureau":http://www.census.gov/ - 2. "RITA/Transtats, Bureau of Transportation Statistics":http://www.bts.gov/ - - license: - - sources: - - packages: - - fields: - diff --git a/java/lc-data-flight/src/test/java/lc/data/flight/FlightDataTest.java b/java/lc-data-flight/src/test/java/lc/data/flight/FlightDataTest.java deleted file mode 100644 index e3b2d9caae41ea804b7df054b3da3376bdd9d76e..0000000000000000000000000000000000000000 --- a/java/lc-data-flight/src/test/java/lc/data/flight/FlightDataTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package lc.data.flight; - -import org.apache.commons.csv.CSVParser; -import org.apache.commons.csv.CSVRecord; -import org.junit.jupiter.api.Test; - -import java.io.IOException; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class FlightDataTest { - @Test - public void testFlightData() throws IOException { - FlightDataLoader fdr = new FlightDataLoader(); - CSVParser data = fdr.load(); - for (CSVRecord r : data) { - assertEquals("MHK", r.get(FlightDataLoader.KEY_SRC)); - break; - } - data.close(); - } -} diff --git a/java/lc-dns-svc/.gitignore b/java/lc-dns-svc/.gitignore deleted file mode 100644 index c9c56767351f2752f2fad6e75af920655d3efa8d..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Dockerfile - diff --git a/java/lc-dns-svc/LICENSE.md b/java/lc-dns-svc/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-dns-svc/build.gradle b/java/lc-dns-svc/build.gradle deleted file mode 100644 index e3aee5b8cac64e76ab518006c337d135993196ff..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/build.gradle +++ /dev/null @@ -1,50 +0,0 @@ -plugins { - id 'java' - id 'application' - id "com.palantir.docker" version "0.33.0" -} - -group 'leighco' -version '1.33-SNAPSHOT' - -sourceCompatibility = 17 -targetCompatibility = 17 - - -repositories { - mavenCentral() -} - -dependencies { - implementation 'dnsjava:dnsjava:3.5.0' - implementation project(':lc-mecha') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} - -application { - mainClass = 'lc.dns.service.DNSDaemon' -} - -docker { - name "docker.leigh-co.com/${project.name}:${project.version}" - files tasks.distTar.outputs -} - -task dockerfile() { - doLast { - new File(projectDir, 'Dockerfile').text = """FROM docker.leigh-co.com/openjdk:17-alpine -EXPOSE 52018 -RUN mkdir /app -COPY ${project.name}-${project.version}.tar /dist.tar -RUN tar xfv /dist.tar -RUN rm /dist.tar -ENTRYPOINT ["/${project.name}-${project.version}/bin/${project.name}"] -""" - } -} - diff --git a/java/lc-dns-svc/src/main/java/lc/dns/service/DNSDaemon.java b/java/lc-dns-svc/src/main/java/lc/dns/service/DNSDaemon.java deleted file mode 100644 index 17507425aaa33da50ae03444a1548c34cd4d44d5..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/src/main/java/lc/dns/service/DNSDaemon.java +++ /dev/null @@ -1,19 +0,0 @@ -package lc.dns.service; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.net.MalformedURLException; -import java.net.UnknownHostException; - -public class DNSDaemon { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DNSDaemon.class); - - public static void main(String[] args) throws UnknownHostException, MalformedURLException { - UniversalJob.banner(logger, "DNSDaemon"); - - DNSService svc = new DNSService(53); - svc.run(); - } -} diff --git a/java/lc-dns-svc/src/main/java/lc/dns/service/DNSService.java b/java/lc-dns-svc/src/main/java/lc/dns/service/DNSService.java deleted file mode 100644 index 2f3aae0accf9d78de93fc890e569ecb7276f34a1..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/src/main/java/lc/dns/service/DNSService.java +++ /dev/null @@ -1,86 +0,0 @@ -package lc.dns.service; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.VelocityWatch; -import org.xbill.DNS.Message; -import org.xbill.DNS.SimpleResolver; -import org.xbill.DNS.Type; - -import java.io.IOException; -import java.net.*; -import java.util.LinkedList; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * Simple implementation of a DNS server. This implementation attempts to lookup queries in a {@link NameStore}, - * and, failing that, forwards the query to 8.8.8.8. - * - * @author Alex Leigh - */ -public class DNSService implements Runnable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DNSService.class); - private static final int UDP_SIZE = 512; - private final int port; - private final SimpleResolver resolver; - private final LinkedList stores = new LinkedList<>(); - private final ExecutorService executorService = Executors.newFixedThreadPool(128); - - DNSService(int port) throws UnknownHostException, MalformedURLException { - this.port = port; - resolver = new SimpleResolver("8.8.8.8"); - - stores.add(new LeighCoZone()); - stores.add(new EvilNameStore()); - } - - public void run() { - VelocityWatch vw = new VelocityWatch(logger); - - try { - DatagramSocket socket = new DatagramSocket(port); - //noinspection InfiniteLoopStatement - while (true) { - byte[] in = new byte[UDP_SIZE]; - DatagramPacket indp = new DatagramPacket(in, UDP_SIZE); - socket.receive(indp); - - vw.event(indp.getAddress().toString()); - - executorService.submit(() -> { - try { - query(socket, in, indp.getAddress(), indp.getPort()); - } catch (Exception e) { - // e.printStackTrace(); - } - }); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - private void query(DatagramSocket socket, byte[] in, InetAddress dstAddr, int dstPort) throws IOException { - Message request = new Message(in); - Message reply = null; - - for (NameStore store : stores) { - reply = store.doQuery(request); - if (reply != null) break; - } - - logger.trace("query [name: {}] [type: {}] [relay: {}]", request.getQuestion().getName().toString(), - Type.string(request.getQuestion().getType()), reply == null); - - if (reply == null) - reply = resolver.send(request); - - if (reply != null) { - byte[] resp = reply.toWire(); - DatagramPacket outdp = new DatagramPacket(resp, resp.length, - dstAddr, dstPort); - socket.send(outdp); - } - } -} \ No newline at end of file diff --git a/java/lc-dns-svc/src/main/java/lc/dns/service/DNSUtil.java b/java/lc-dns-svc/src/main/java/lc/dns/service/DNSUtil.java deleted file mode 100644 index a62b16fc69440698c39ffda642324d7e9fc9f040..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/src/main/java/lc/dns/service/DNSUtil.java +++ /dev/null @@ -1,41 +0,0 @@ -package lc.dns.service; - -import org.xbill.DNS.*; - -import java.io.IOException; -import java.net.InetAddress; - -public class DNSUtil { - - public static Message buildReply(Message request, InetAddress add) { - Message reply = new Message(request.getHeader().getID()); - reply.getHeader().setFlag(Flags.RD); - reply.getHeader().setFlag(Flags.QR); - reply.getHeader().setFlag(Flags.RA); - reply.addRecord(request.getQuestion(), Section.QUESTION); - - reply.addRecord(new ARecord(request.getQuestion().getName(), DClass.IN, 60, add), Section.ANSWER); - return reply; - } - - public static Message buildReply(Message request, String hostname) throws IOException { - Message reply = new Message(request.getHeader().getID()); - reply.getHeader().setFlag(Flags.RD); - reply.getHeader().setFlag(Flags.QR); - reply.getHeader().setFlag(Flags.RA); - reply.addRecord(request.getQuestion(), Section.QUESTION); - - reply.addRecord(new PTRRecord(request.getQuestion().getName(), - DClass.IN, 60, new Name(hostname)), Section.ANSWER); - return reply; - } - - public static Message buildEmpty(Message request) throws IOException { - Message reply = new Message(request.getHeader().getID()); - reply.getHeader().setFlag(Flags.RD); - reply.getHeader().setFlag(Flags.QR); - reply.getHeader().setFlag(Flags.RA); - reply.addRecord(request.getQuestion(), Section.QUESTION); - return reply; - } -} diff --git a/java/lc-dns-svc/src/main/java/lc/dns/service/EvilNameStore.java b/java/lc-dns-svc/src/main/java/lc/dns/service/EvilNameStore.java deleted file mode 100644 index 7a7a84f726ab5d3957aeedc706f136cc9362bd34..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/src/main/java/lc/dns/service/EvilNameStore.java +++ /dev/null @@ -1,74 +0,0 @@ -package lc.dns.service; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.VelocityWatch; -import org.xbill.DNS.Message; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.UnknownHostException; -import java.util.HashSet; -import java.util.Scanner; - -/** - * This implementation of {@link NameStore} provides an evil name repository. Queries for evil names will be - * returned, but pointing at 127.0.0.1, resulting in a black hole. - * - * @author Alex Leigh - */ -public class EvilNameStore implements NameStore { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EvilNameStore.class); - private final HashSet evil = new HashSet<>(); - - public EvilNameStore() throws UnknownHostException, MalformedURLException { - new Thread(() -> { - - VelocityWatch vw = new VelocityWatch(logger, 1); - logger.info("Loading EVIL urls."); - try { - // We delay here in case we are our own DNS server. - Thread.sleep(500); - loadEvilNames(new URL("https://v.firebog.net/hosts/Easyprivacy.txt"), vw); - loadEvilNames(new URL("https://v.firebog.net/hosts/AdguardDNS.txt"), vw); - loadEvilNames(new URL("https://v.firebog.net/hosts/Admiral.txt"), vw); - loadEvilNames(new URL("https://v.firebog.net/hosts/Easylist.txt"), vw); - loadEvilNames(new URL("https://v.firebog.net/hosts/Prigent-Ads.txt"), vw); - loadEvilNames(new URL("https://v.firebog.net/hosts/Prigent-Malware.txt"), vw); - loadEvilNames(new URL("https://v.firebog.net/hosts/Shalla-mal.txt"), vw); - vw.status(); - logger.info("Loaded evil names. [cnt: {}]", evil.size()); - } catch (MalformedURLException | InterruptedException e) { - e.printStackTrace(); - } - }).start(); - } - - public void loadEvilNames(URL url, VelocityWatch vw) { - String ustr = url.toString(); - try { - Scanner s = new Scanner(url.openStream()); - while (s.hasNext()) { - String ln = s.nextLine(); - vw.event(ustr); - evil.add(ln + "."); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public Message doQuery(Message request) throws IOException { - String name = request.getQuestion().getName().toString(); - - if (evil.contains(name)) { - logger.info("Evil query blocked. [name: {}]", name); - // ha.. ha.. ha.. - return DNSUtil.buildEmpty(request); - } - - return null; - } -} diff --git a/java/lc-dns-svc/src/main/java/lc/dns/service/LeighCoZone.java b/java/lc-dns-svc/src/main/java/lc/dns/service/LeighCoZone.java deleted file mode 100644 index 2efa34a97e2216112aedf200e30e732fede7b4d8..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/src/main/java/lc/dns/service/LeighCoZone.java +++ /dev/null @@ -1,77 +0,0 @@ -package lc.dns.service; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.xbill.DNS.Message; -import org.xbill.DNS.Type; - -import java.io.IOException; -import java.net.InetAddress; - -/** - * An emergency implementation of {@link NameStore} to meet the needs for the LEGIH&CO network following the - * implosion of FreeIPA. - *

- * Note that there is something of a quirk in this implementation in that if a host is not discovered here, - * it will still forward the address to the Internet. In the case of site-local DNS this means that it will - * fall back to public DNS. Feature or bug? You decide. - * - * @author Alex Leigh - */ -public class LeighCoZone implements NameStore { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(LeighCoZone.class); - - @Override - public Message doQuery(Message request) throws IOException { - int t = request.getQuestion().getType(); - String name = request.getQuestion().getName().toString(); - - if (t == Type.A) { - return switch (name) { - case "bungie.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.35")); - case "db1.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.22")); - case "db2.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.21")); - case "db3.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.17")); - case "db4.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.63")); - case "dist0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.8")); - case "docker.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.51")); - case "dream.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.29")); - case "esp0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.30")); - case "esp1.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.64")); - case "fs1.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.34")); - case "ghibli.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.44")); - case "gitlab.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.26")); - case "helium.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.24")); - case "irc0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.67")); - case "leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.51")); - case "m3.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.68")); - case "massive.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.28")); - case "mc5.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.31")); - case "mctest0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.33")); - case "mine0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.15")); - case "moon.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.32")); - case "mq0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.62")); - case "mx0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.27")); - case "mx1.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("52.42.175.17")); - case "n0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.14")); - case "n1.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.59")); - case "ns0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.11")); - case "pixel.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.66")); - case "slb0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.51")); - case "tik0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.33")); - case "web0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.20")); - case "world.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.5")); - case "zebra.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.100")); - case "b0.leigh-co.com." -> DNSUtil.buildReply(request, InetAddress.getByName("10.52.4.16")); - default -> null; - }; - } else if (t == Type.PTR) { - return switch (name) { - case "24.4.52.10.in-addr.arpa." -> DNSUtil.buildReply(request, "helium.leigh-co.com."); - case "67.4.52.10.in-addr.arpa." -> DNSUtil.buildReply(request, "irc0.leigh-co.com."); - default -> null; - }; - } - return null; - } -} diff --git a/java/lc-dns-svc/src/main/java/lc/dns/service/NameStore.java b/java/lc-dns-svc/src/main/java/lc/dns/service/NameStore.java deleted file mode 100644 index 3c583aff5a6a85651d2ce221336c12c0d77b4cca..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/src/main/java/lc/dns/service/NameStore.java +++ /dev/null @@ -1,12 +0,0 @@ -package lc.dns.service; - -import org.xbill.DNS.Message; - -import java.io.IOException; - -public interface NameStore { - /** - * Perform a query against this store. If the request does not match a name, return null. - */ - Message doQuery(Message request) throws IOException; -} diff --git a/java/lc-dns-svc/src/test/java/lc/infra/dnsd/TestResolver.java b/java/lc-dns-svc/src/test/java/lc/infra/dnsd/TestResolver.java deleted file mode 100644 index 6ad51f2c27dd7b03fb73aaeb91441fb53f225991..0000000000000000000000000000000000000000 --- a/java/lc-dns-svc/src/test/java/lc/infra/dnsd/TestResolver.java +++ /dev/null @@ -1,143 +0,0 @@ -package lc.infra.dnsd; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xbill.DNS.Record; -import org.xbill.DNS.*; - -import java.io.IOException; -import java.net.DatagramPacket; -import java.net.DatagramSocket; -import java.net.InetAddress; -import java.time.Duration; -import java.util.ArrayList; -import java.util.List; - - -public class TestResolver { - private static final Logger logger = LoggerFactory.getLogger(TestResolver.class); - - @Test - public void simpleResolver() throws IOException { - TestDNSServer server = new TestDNSServer(53); - server.start(); - SimpleResolver resolver = new SimpleResolver(InetAddress.getLocalHost()); - resolver.setTimeout(Duration.ofSeconds(1)); - - Lookup lookup = new Lookup(Name.root, Type.A); - lookup.setResolver(resolver); - lookup.setCache(null); - - lookup.run(); - - Assertions.assertEquals(1, server.getRequestCount()); - - server.stop(); - } - - // Disabled test b/c it is not passing - public void extendedResolver() throws IOException { - List servers = new ArrayList<>(); - List resolvers = new ArrayList<>(); - for (int i = 0; i < 5; i++) { - int port = 1000 + i * 100 + 53; - TestDNSServer s = new TestDNSServer(port); - s.start(); - servers.add(s); - SimpleResolver r = new SimpleResolver(InetAddress.getLocalHost()); - r.setPort(port); - // r.setTimeout(Duration.ofSeconds(1)); // Timeout of each resolver will be overwritten to ExtendedResolver.DEFAULT_TIMEOUT - resolvers.add(r); - } - - ExtendedResolver resolver = new ExtendedResolver(resolvers); - resolver.setTimeout(Duration.ofSeconds(1)); - resolver.setRetries(5); - - Lookup lookup = new Lookup(Name.root, Type.A); - lookup.setResolver(resolver); - lookup.setCache(null); - - long startTime = System.currentTimeMillis(); - lookup.run(); - logger.error(String.format("time: %d", (System.currentTimeMillis() - startTime) / 1000)); - - for (TestDNSServer s : servers) { - Assertions.assertEquals(5, s.getRequestCount()); // This will fail as ExtendedResolver does not work as I expected - s.stop(); - } - } - - private static class TestDNSServer { - private Thread thread = null; - private volatile boolean running = false; - private static final int UDP_SIZE = 512; - private final int port; - private int requestCount = 0; - - TestDNSServer(int port) { - this.port = port; - } - - public void start() { - running = true; - thread = new Thread(() -> { - try { - serve(); - } catch (IOException ex) { - stop(); - throw new RuntimeException(ex); - } - }); - thread.start(); - } - - public void stop() { - running = false; - thread.interrupt(); - thread = null; - } - - public int getRequestCount() { - return requestCount; - } - - private void serve() throws IOException { - DatagramSocket socket = new DatagramSocket(port); - while (running) { - process(socket); - } - } - - private void process(DatagramSocket socket) throws IOException { - byte[] in = new byte[UDP_SIZE]; - - // Read the request - DatagramPacket indp = new DatagramPacket(in, UDP_SIZE); - socket.receive(indp); - ++requestCount; - logger.info(String.format("processing... %d", requestCount)); - - // Build the response - Message request = new Message(in); - Message response = new Message(request.getHeader().getID()); - response.addRecord(request.getQuestion(), Section.QUESTION); - // Add answers as needed - response.addRecord(Record.fromString(Name.root, Type.A, DClass.IN, 86400, "1.2.3.4", Name.root), Section.ANSWER); - - // Make it timeout, comment this section if a success response is needed - try { - Thread.sleep(5000); - } catch (InterruptedException ex) { - logger.error("Interrupted"); - return; - } - - byte[] resp = response.toWire(); - DatagramPacket outdp = new DatagramPacket(resp, resp.length, indp.getAddress(), indp.getPort()); - socket.send(outdp); - } - } -} \ No newline at end of file diff --git a/java/lc-eo-bson/LICENSE.md b/java/lc-eo-bson/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-eo-bson/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-eo-bson/build.gradle b/java/lc-eo-bson/build.gradle deleted file mode 100644 index e1637316b1a5278db2c0123fbc07bdd7a4abb030..0000000000000000000000000000000000000000 --- a/java/lc-eo-bson/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leigh' - -apply plugin: 'application' - -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-eo-json') - testImplementation group: 'junit', name: 'junit', version: '4.12' - api 'org.mongodb:bson:4.3.2' -} - -mainClassName = 'leigh.esp.engine.Engine' diff --git a/java/lc-eo-bson/src/main/java/lc/eo/mongo/EOBsonSerializer.java b/java/lc-eo-bson/src/main/java/lc/eo/mongo/EOBsonSerializer.java deleted file mode 100644 index c3d1842b5603002256f5a43a56d34514079e06fc..0000000000000000000000000000000000000000 --- a/java/lc-eo-bson/src/main/java/lc/eo/mongo/EOBsonSerializer.java +++ /dev/null @@ -1,25 +0,0 @@ -package lc.eo.mongo; - -import lc.eo.EO; -import lc.eo.EOJsonSerializer; -import lc.mecha.json.JSONObject; -import org.bson.Document; - -/** - * This class provides wrapper functions for converting an {@link EO} to/from a - * {@link org.bson.BsonDocument}. - * - * @author Alex Leigh - */ -public class EOBsonSerializer { - public static Document eoToDoc(EO eo) { - JSONObject jsonObj = EOJsonSerializer.toJson(eo); - String json = jsonObj.toString(); - Document doc = org.bson.Document.parse(json); - return doc; - } - - public static EO docToEo(Document doc) { - return EOJsonSerializer.toEo(new JSONObject(doc.toJson())); - } -} diff --git a/java/lc-eo-bson/src/main/java/lc/eo/mongo/EOCodec.java b/java/lc-eo-bson/src/main/java/lc/eo/mongo/EOCodec.java deleted file mode 100644 index 276c1d517fc1373490219b91beffc344c00c65db..0000000000000000000000000000000000000000 --- a/java/lc-eo-bson/src/main/java/lc/eo/mongo/EOCodec.java +++ /dev/null @@ -1,64 +0,0 @@ -package lc.eo.mongo; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.bson.BsonReader; -import org.bson.BsonType; -import org.bson.BsonWriter; -import org.bson.codecs.Codec; -import org.bson.codecs.DecoderContext; -import org.bson.codecs.EncoderContext; - -/** - * Implementation of a BSON {@link Codec} for the EO class. - *

- * NOTE THIS IS A PARTIAL IMPLEMENTATION, DO NOT USE. - * - * @author Alex Leigh - */ -@Deprecated -public class EOCodec implements Codec { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EOCodec.class); - - @Override - public EO decode(BsonReader reader, DecoderContext decoderContext) { - EO eo = new EO(); - - reader.readStartDocument(); - - while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { - String fieldName = reader.readName(); - switch (fieldName) { - case "_id": - reader.readObjectId(); - break; - case "type": - eo.setApiType(reader.readString()); - break; - } - } - - reader.readEndDocument(); - - return eo; - } - - @Override - public void encode(BsonWriter writer, EO value, EncoderContext encoderContext) { - writer.writeStartDocument(); - - String apiType = value.getType(); - if (apiType != null) { - writer.writeName("type"); - writer.writeString(value.getType()); - } - - writer.writeEndDocument(); - } - - @Override - public Class getEncoderClass() { - return EO.class; - } -} diff --git a/java/lc-eo-changestream/build.gradle b/java/lc-eo-changestream/build.gradle deleted file mode 100644 index 3e655b68d521feeba41944b158b9a5eaf7813b5a..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -group 'leighco' -version '1.3-SNAPSHOT' - -sourceCompatibility = JavaVersion.VERSION_11 -targetCompatibility = JavaVersion.VERSION_11 - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-eo-schema') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeLogger.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeLogger.java deleted file mode 100644 index 9cf84184b7f2cfc7ad465a44e02c2e464488cdeb..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeLogger.java +++ /dev/null @@ -1,15 +0,0 @@ -package lc.eo.changestream; - -import lc.eo.EO; - -import java.util.ArrayList; - -/** - * Classes implementing this interface are capable of logging transactions. - * - * @author Alex Leigh - * @since mk1 - */ -public interface ChangeLogger { - void comitted(long changeNumber, ArrayList change) throws Exception; -} diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeStream.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeStream.java deleted file mode 100644 index 137bf1e69183cfc8d08dd93fc657ab08decbbf36..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeStream.java +++ /dev/null @@ -1,120 +0,0 @@ -package lc.eo.changestream; - -import lc.eo.EO; -import lc.eo.EOListener; -import lc.eo.EOLoop; -import lc.eo.EditTracker; -import lc.eo.changestream.schema.v1.*; -import lc.mecha.log.MechaLogger; - -import java.io.Serializable; -import java.util.ArrayList; - -/** - * Implementation of an {@link EditTracker} which implements an ephemeral change stream. - * - * @author Alex Leigh - * @since mk1 - */ -public class ChangeStream implements EditTracker { - ArrayList txn = new ArrayList<>(); - - /** - * Return a loop of all the accumulated changes in this change stream. - */ - public ArrayList getChanges() { - return txn; - } - - private void addChanges(ArrayList txn, EO obj) { - // TODO: Support differential changes - for (String key : obj.getKeys()) { - // Since the object is new, every attribute is new - Serializable val = obj.get(key); - if (val instanceof EOLoop) continue; - - EO set = Attribute_setElementDAO.create(); - Attribute_setElementDAO.setId(set, obj.getId()); - Attribute_setElementDAO.setKey(set, key); - set.setValue(Attribute_setElementDAO.KEY_VALUE, val); - txn.add(set); - } - } - - /** - * Reset the state of the tracker discarding all logged changes. - */ - public ArrayList commit() { - ArrayList last = new ArrayList<>(txn); - txn.clear(); - return last; - } - - @Override - public void attributeUpdate(EO eo, String key, Serializable oldValue, Serializable newValue, EOListener listener) { - if (newValue == null) { - EO unset = Attribute_deleteElementDAO.create(); - Attribute_deleteElementDAO.setId(unset, eo.getId()); - Attribute_deleteElementDAO.setKey(unset, key); - txn.add(unset); - } else { - EO set = Attribute_setElementDAO.create(); - Attribute_setElementDAO.setId(set, eo.getId()); - Attribute_setElementDAO.setKey(set, key); - set.setValue(Attribute_setElementDAO.KEY_VALUE, newValue); - txn.add(set); - } - } - - @Override - public void loopRemoved(EOLoop loop, EO removedEo, int index) { - EO remove = Loop_removeElementDAO.create(); - Loop_removeElementDAO.setId(remove, loop.getParent().getId()); - Loop_removeElementDAO.setKey(remove, loop.getParentKey()); - Loop_removeElementDAO.setIndex(remove, index); - txn.add(remove); - } - - @Override - public void loopAdded(EOLoop loop, EO addedEo) { - EO add = Loop_addElementDAO.create(); - Loop_addElementDAO.setId(add, loop.getParent().getId()); - Loop_addElementDAO.setKey(add, loop.getParentKey()); - Loop_addElementDAO.setChildId(add, addedEo.getId()); - txn.add(add); - } - - @Override - public void loopSet(EOLoop loop, EO setEO, int index) { - EO set = Loop_setElementDAO.create(); - Loop_setElementDAO.setId(set, loop.getParent().getId()); - Loop_setElementDAO.setKey(set, loop.getParentKey()); - Loop_setElementDAO.setChildId(set, setEO.getId()); - Loop_setElementDAO.setIndex(set, index); - txn.add(set); - } - - @Override - public void objectAdded(EO obj) { - EO create = Object_addElementDAO.create(); - Object_addElementDAO.setId(create, obj.getId()); - Object_addElementDAO.setType(create, obj.getType()); - txn.add(create); - addChanges(txn, obj); - } - - @Override - public void objectRemoved(EO obj) { - EO removeObj = Object_removeElementDAO.create(); - Object_removeElementDAO.setId(removeObj, obj.getId()); - txn.add(removeObj); - } - - public void logChanges(MechaLogger log) { - log.info("--- BEGIN"); - for (EO eo : getChanges()) { - log.info("Change: {}", eo); - } - log.info("--- END"); - } -} diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/DebugChangeLogger.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/DebugChangeLogger.java deleted file mode 100644 index 2f2d63509523ce54acd80797ff3fd7fb230f6584..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/DebugChangeLogger.java +++ /dev/null @@ -1,16 +0,0 @@ -package lc.eo.changestream; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.ArrayList; - -public class DebugChangeLogger implements ChangeLogger { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DebugChangeLogger.class); - - @Override - public void comitted(long changeNumber, ArrayList change) { - logger.info("Transaction comitted: {}", change); - } -} diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/EditContext.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/EditContext.java deleted file mode 100644 index 261009141652bea67f1ccb0985f3aab91e8d27e0..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/EditContext.java +++ /dev/null @@ -1,57 +0,0 @@ -package lc.eo.changestream; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.ArrayList; - -/** - * An edit context holds a stream along with a root object. - *

- * This class is not synchronized. If the ChangeStream is updated in parallel while any of the EditContext - * methods are running the result is undefined. - * - * @author Alex Leigh - * @since mk1 - */ -public class EditContext { - private final EO root; - private final ChangeStream stream = new ChangeStream(); - private long changeNumber = 0; - private final ChangeLogger txnLogger; - - public EditContext(EO root, ChangeLogger txnLogger) { - this.root = root; - this.txnLogger = txnLogger; - root.setEditTracker(stream); - } - - /** - * Return the root object associated with this edit context. - */ - public EO getRoot() { - return root; - } - - /** - * Commit the current change state. This will reset the underlying change stream and will increment the change - * counter. The number of the change representing the commit is returned. - */ - public long commit() throws Exception { - long now = changeNumber; - MechaLogger logger = MechaLoggerFactory.getLogger(EditContext.class); - ArrayList txn = stream.commit(); - logger.info("Saved transaction: {}", txn); - changeNumber++; - txnLogger.comitted(now, txn); - return now; - } - - /** - * Return the change number of the current change (not the last committed change). - */ - public long getChangeNumber() { - return changeNumber; - } -} diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/SchemaGenerator.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/SchemaGenerator.java deleted file mode 100644 index 5e553f3bcc9571e29991f9c95ad70c7058ed60e5..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/SchemaGenerator.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.DAOGenerator; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.SchemaElementDAO; -import lc.eo.schema.util.AttributeUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * Generate the schema for lc-eo-changestream. - * - * @author Alex Leigh - * @since mk1 - */ -public final class SchemaGenerator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaGenerator.class); - private static final String BASE_PKG = "lc.eo.changestream.v1"; - - // Observe the procedures of a general alert - - public static EO generate() { - final EO schema = lc.eo.schema.util.SchemaUtil.create(BASE_PKG + ".schema"); - - final EO changeSet = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(changeSet); - ElementElementDAO.setEoType(changeSet, BASE_PKG + ".change_set"); - ElementElementDAO.getAttributes(changeSet).add(AttributeUtil.create("changes", "changes", EODataType.loop)); - - final EO loopSet = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(loopSet); - ElementElementDAO.setEoType(loopSet, BASE_PKG + ".loop_set"); - ElementElementDAO.getAttributes(loopSet).add(AttributeUtil.create("id", "id", EODataType.uuid)); - ElementElementDAO.getAttributes(loopSet).add(AttributeUtil.create("key", "key")); - ElementElementDAO.getAttributes(loopSet).add(AttributeUtil.create("index", "index", EODataType.number)); - ElementElementDAO.getAttributes(loopSet).add(AttributeUtil.create("childId", "Child EO ID", EODataType.uuid)); - - final EO loopRemove = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(loopRemove); - ElementElementDAO.setEoType(loopRemove, BASE_PKG + ".loop_remove"); - ElementElementDAO.getAttributes(loopRemove).add(AttributeUtil.create("id", "id", EODataType.uuid)); - ElementElementDAO.getAttributes(loopRemove).add(AttributeUtil.create("key", "key")); - ElementElementDAO.getAttributes(loopRemove).add(AttributeUtil.create("index", "Index", EODataType.number)); - - final EO loopAdded = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(loopAdded); - ElementElementDAO.setEoType(loopAdded, BASE_PKG + ".loop_add"); - ElementElementDAO.getAttributes(loopAdded).add(AttributeUtil.create("id", "id", EODataType.uuid)); - ElementElementDAO.getAttributes(loopAdded).add(AttributeUtil.create("key", "key")); - ElementElementDAO.getAttributes(loopAdded).add(AttributeUtil.create("childId", "Child EO ID", EODataType.uuid)); - - final EO deleteAttribute = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(deleteAttribute); - ElementElementDAO.setEoType(deleteAttribute, BASE_PKG + ".attribute_delete"); - ElementElementDAO.getAttributes(deleteAttribute).add(AttributeUtil.create("id", "id", EODataType.uuid)); - ElementElementDAO.getAttributes(deleteAttribute).add(AttributeUtil.create("key", "key")); - - final EO setAttribute = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(setAttribute); - ElementElementDAO.setEoType(setAttribute, BASE_PKG + ".attribute_set"); - ElementElementDAO.getAttributes(setAttribute).add(AttributeUtil.create("id", "id", EODataType.uuid)); - ElementElementDAO.getAttributes(setAttribute).add(AttributeUtil.create("key", "key")); - ElementElementDAO.getAttributes(setAttribute).add(AttributeUtil.create("value", "value")); - - final EO objectRemove = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(objectRemove); - ElementElementDAO.setEoType(objectRemove, BASE_PKG + ".object_remove"); - ElementElementDAO.getAttributes(objectRemove).add(AttributeUtil.create("id", "id", EODataType.uuid)); - - final EO objectAdd = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(objectAdd); - ElementElementDAO.setEoType(objectAdd, BASE_PKG + ".object_add"); - ElementElementDAO.getAttributes(objectAdd).add(AttributeUtil.create("id", "id", EODataType.uuid)); - ElementElementDAO.getAttributes(objectAdd).add(AttributeUtil.create("type", "Type")); - return schema; - } - - public static void main(final String... args) throws IOException { - UniversalJob.banner(logger, "Apotheosis mk3", "2014-2022 Alex Leigh"); - final EO schema = generate(); - final DAOGenerator gen = new DAOGenerator(new File("lc-eo-changestream/src/main/java")); - gen.generateJava("lc.eo.changestream.schema.v1", schema); - try (PrintWriter pw = new PrintWriter(new FileWriter(new File("out.js")))) { - gen.generateEcma5(pw, "lc.eo.changestream.v1", schema); - } - logger.info("Generated schema: {}", schema); - } -} diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Attribute_deleteElementDAO.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Attribute_deleteElementDAO.java deleted file mode 100644 index 783a49dd8cc1711132b938fbf05c35a1f4b93109..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Attribute_deleteElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Attribute_deleteElementDAO { - public static final String API_TYPE = "lc.eo.changestream.v1.attribute_delete"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_KEY = "key"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=6e9a936f-a99f-4e31-ac4e-e4a2880dc555, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=16804526-4aee-4162-8548-4a92db0ba357, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=5da04b24-c7d8-40c5-8fe6-93a1ba6721d2, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e64330d3-312c-45d4-b1e1-9e871b7126de, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getKey(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_KEY); - } - - public static void setKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_KEY, value); - } - - public static void setKeyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_KEY, label); - } - - public static void getLabelOrValueKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_KEY); - } - - public static void setIfUnsetKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_KEY, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Attribute_setElementDAO.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Attribute_setElementDAO.java deleted file mode 100644 index 3cfe042592a6f80f8ef1811d72adf7ebe38744dc..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Attribute_setElementDAO.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Attribute_setElementDAO { - public static final String API_TYPE = "lc.eo.changestream.v1.attribute_set"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_KEY = "key"; - public static final String KEY_VALUE = "value"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=335f4bf5-e278-464b-933e-f4c1a5730c2a, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=12df1cd2-3bf6-4c44-9d9d-6cda4c17ab48, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=8b915420-e117-4a81-ae56-df23b0e0a295, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=723f290e-8dda-4eb1-b746-a126ce7e0f6f, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getKey(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_KEY); - } - - public static void setKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_KEY, value); - } - - public static void setKeyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_KEY, label); - } - - public static void getLabelOrValueKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_KEY); - } - - public static void setIfUnsetKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_KEY, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=b8c223a1-289a-4263-8ec2-28c7d1d562d8, data={eoType=value, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=f8d99001-5d8c-43d9-a7d1-80d4a9751055, data={text=value, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getValue(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_VALUE); - } - - public static void setValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_VALUE, value); - } - - public static void setValueLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_VALUE, label); - } - - public static void getLabelOrValueValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_VALUE); - } - - public static void setIfUnsetValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_VALUE, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Change_setElementDAO.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Change_setElementDAO.java deleted file mode 100644 index e2f25f9054cc29864de7f8d3bbba96049e62475f..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Change_setElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Change_setElementDAO { - public static final String API_TYPE = "lc.eo.changestream.v1.change_set"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_CHANGES = "changes"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=9ec3d43d-9c35-42e0-9b03-e1c9989d8542, data={eoType=changes, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=4225b071-28fe-43d7-ab13-8f7f5e9dfb43, data={text=changes, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getChanges(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CHANGES); - } - - public static void setChanges(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGES, value); - } - - public static void setChangesLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CHANGES, label); - } - - public static void getLabelOrValueChanges(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CHANGES); - } - - public static void setIfUnsetChanges(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CHANGES, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_addElementDAO.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_addElementDAO.java deleted file mode 100644 index 4fb1bc83ed102a97f50319eac2062ddb651457f3..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_addElementDAO.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Loop_addElementDAO { - public static final String API_TYPE = "lc.eo.changestream.v1.loop_add"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_KEY = "key"; - public static final String KEY_CHILDID = "childId"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=0711935e-9525-412d-8d0f-d16da9115399, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=399293ae-6729-4c25-ab05-50a4b7417d4f, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=ba2c14fe-d602-4d48-a508-8b3affb69bc5, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=09a08417-5846-475c-869c-aaef3081b774, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getKey(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_KEY); - } - - public static void setKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_KEY, value); - } - - public static void setKeyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_KEY, label); - } - - public static void getLabelOrValueKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_KEY); - } - - public static void setIfUnsetKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_KEY, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=60fa1731-2e33-4d16-8d57-d7c26b544f8b, data={eoType=childId, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=78c6e2a3-608a-4353-a12e-4d111d3bd691, data={text=Child EO ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getChildId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_CHILDID); - } - - public static void setChildId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHILDID, value); - } - - public static void setChildIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CHILDID, label); - } - - public static void getLabelOrValueChildId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CHILDID); - } - - public static void setIfUnsetChildId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CHILDID, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_removeElementDAO.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_removeElementDAO.java deleted file mode 100644 index f4dadf2c0adb0f943dda48a99c2462a0a12e2895..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_removeElementDAO.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Loop_removeElementDAO { - public static final String API_TYPE = "lc.eo.changestream.v1.loop_remove"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_KEY = "key"; - public static final String KEY_INDEX = "index"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=1533eb7f-d4e8-4c2b-ae9b-260cf55de222, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=4e560415-1d5f-4d85-a2f2-78762e2e1c09, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=3278dad2-8ee1-4403-8c6c-bd7437ca2ef2, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=47ce4b59-ad93-47bd-bf17-8a7bbc0ee7e9, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getKey(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_KEY); - } - - public static void setKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_KEY, value); - } - - public static void setKeyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_KEY, label); - } - - public static void getLabelOrValueKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_KEY); - } - - public static void setIfUnsetKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_KEY, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=4ebb782c-b20d-4d5c-b1e8-a2cb1d937305, data={eoType=index, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=8e832adb-70ed-4b7e-a49a-d91ea40388aa, data={text=Index, locale=en}, meta=null}]} , type=number}, meta=null} */ - - - public static void setIndex(final EO eo, int value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, float value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, double value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, long value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, short value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static java.math.BigDecimal getIndex(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getNumber(KEY_INDEX); - } - - public static void setIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndexLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_INDEX, label); - } - - public static void getLabelOrValueIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_INDEX); - } - - public static void setIfUnsetIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_INDEX, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_setElementDAO.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_setElementDAO.java deleted file mode 100644 index 9e0ed609535a233a1d88a859d964f10a6ea4ef07..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Loop_setElementDAO.java +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Loop_setElementDAO { - public static final String API_TYPE = "lc.eo.changestream.v1.loop_set"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_KEY = "key"; - public static final String KEY_INDEX = "index"; - public static final String KEY_CHILDID = "childId"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=4ff74153-4085-48ff-bf44-446e767b032b, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=ac21b155-c22b-42af-a982-0887bc44273a, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=6741fb7a-1d96-4984-a0b2-97b3346533c9, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=2f4e12dd-27d9-45e4-a66b-1853deb08e63, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getKey(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_KEY); - } - - public static void setKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_KEY, value); - } - - public static void setKeyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_KEY, label); - } - - public static void getLabelOrValueKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_KEY); - } - - public static void setIfUnsetKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_KEY, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=da07d883-e376-4768-bf87-264fcab6354e, data={eoType=index, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=4b44e047-f64e-42b6-adec-03e1abdafebe, data={text=index, locale=en}, meta=null}]} , type=number}, meta=null} */ - - - public static void setIndex(final EO eo, int value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, float value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, double value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, long value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, short value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static java.math.BigDecimal getIndex(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getNumber(KEY_INDEX); - } - - public static void setIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndexLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_INDEX, label); - } - - public static void getLabelOrValueIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_INDEX); - } - - public static void setIfUnsetIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_INDEX, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=2365ae19-1874-428c-acba-e41bb41a6675, data={eoType=childId, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=c60848ad-d58e-4ffe-a824-896ec8036cec, data={text=Child EO ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getChildId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_CHILDID); - } - - public static void setChildId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHILDID, value); - } - - public static void setChildIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CHILDID, label); - } - - public static void getLabelOrValueChildId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CHILDID); - } - - public static void setIfUnsetChildId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CHILDID, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Object_addElementDAO.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Object_addElementDAO.java deleted file mode 100644 index 140d4e505a2afb426fa210d10c8217f06e06e33f..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Object_addElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Object_addElementDAO { - public static final String API_TYPE = "lc.eo.changestream.v1.object_add"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_TYPE = "type"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=eac10692-b4c1-4b64-8a9c-38af2b60c3cf, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=46c85401-794a-434c-b6ec-ed2e6fe5a704, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=06ee16ca-749f-4cca-9a83-0d962aa94641, data={eoType=type, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=1013612d-bf3b-44d7-880d-1ebd5268f4fc, data={text=Type, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getType(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TYPE); - } - - public static void setType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TYPE, value); - } - - public static void setTypeLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TYPE, label); - } - - public static void getLabelOrValueType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TYPE); - } - - public static void setIfUnsetType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TYPE, value); - } - - -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Object_removeElementDAO.java b/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Object_removeElementDAO.java deleted file mode 100644 index 1d485de36b00eadbd809787d8de93969f043d2a0..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/main/java/lc/eo/changestream/schema/v1/Object_removeElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.changestream.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Object_removeElementDAO { - public static final String API_TYPE = "lc.eo.changestream.v1.object_remove"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=46d4084e-92a2-4fd0-bc2c-94876ee5dfb7, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=834d08f4-19ee-441b-ac8b-e42e94dc9254, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-changestream/src/test/java/lc/eo/changestream/ChangeStreamTest.java b/java/lc-eo-changestream/src/test/java/lc/eo/changestream/ChangeStreamTest.java deleted file mode 100644 index 0d81230d70a20de6e73c601e55b000e3bfcc372b..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/test/java/lc/eo/changestream/ChangeStreamTest.java +++ /dev/null @@ -1,139 +0,0 @@ -package lc.eo.changestream; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * Some basic testing / auditing for the {@link ChangeStream} class. - *

- * Limitations: - *

- * The quality of these tests is relatively poor. They should evaluate the actual contents of the change - * stream, not just its size. - * - * @author Alex Leigh - * @since mk1 - */ -public class ChangeStreamTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ChangeStreamTest.class); - - @Test - public void testComplexLoopAdd() { - ChangeStream cs = new ChangeStream(); - EO people = new EO(); - people.setEditTracker(cs); - - EOLoop peopleLoop = people.getValueLoop("people"); - EO alex = new EO().setValue("name", "Alex"); - alex.getValueLoop("phones").add(new EO().setValue("phone", "123-4567")); - - peopleLoop.add(alex); - - cs.logChanges(logger); - } - - @Test - public void testLoopAdd() { - ChangeStream cs = new ChangeStream(); - EO people = new EO(); - people.setEditTracker(cs); - EOLoop peopleLoop = people.getValueLoop("people"); - peopleLoop.add(new EO().setValue("name", "Alex")); - cs.logChanges(logger); - assertEquals(4, cs.getChanges().size()); - } - - @Test - public void testLoopRemoveById() { - ChangeStream cs = new ChangeStream(); - EO people = new EO(); - people.setEditTracker(cs); - EOLoop peopleLoop = people.getValueLoop("people"); - peopleLoop.add(new EO().setValue("name", "Alex")); - assertEquals(4, cs.getChanges().size()); - peopleLoop.remove(0); - cs.logChanges(logger); - assertEquals(5, cs.getChanges().size()); - } - - @Test - public void testLoopRemoveByReference() { - ChangeStream cs = new ChangeStream(); - EO people = new EO(); - people.setEditTracker(cs); - EOLoop peopleLoop = people.getValueLoop("people"); - EO alex = new EO().setValue("name", "Alex"); - peopleLoop.add(alex); - assertEquals(4, cs.getChanges().size()); - peopleLoop.remove(alex); - cs.logChanges(logger); - assertEquals(5, cs.getChanges().size()); - } - - @Test - public void testChangeStream() { - ChangeStream cs = new ChangeStream(); - EO people = new EO(); - people.setEditTracker(cs); - cs.logChanges(logger); - assertEquals(1, cs.getChanges().size()); - - EOLoop peopleLoop = people.getValueLoop("people"); - peopleLoop.add(new EO().setValue("name", "Alex")); - cs.logChanges(logger); - assertEquals(4, cs.getChanges().size()); - - peopleLoop.add(new EO().setValue("name", "Nikki")); - cs.logChanges(logger); - assertEquals(7, cs.getChanges().size()); - } - - @Test - public void testObjectRemove() { - ChangeStream cs = new ChangeStream(); - EO people = new EO(); - people.setEditTracker(cs); - assertEquals(1, cs.getChanges().size()); - - EOLoop peopleLoop = people.getValueLoop("people"); - peopleLoop.add(new EO().setValue("name", "Alex")); - assertEquals(4, cs.getChanges().size()); - - people.removeEditTracker(); - cs.logChanges(logger); - assertEquals(6, cs.getChanges().size()); - } - - @Test - public void testAttributeSet() { - ChangeStream cs = new ChangeStream(); - EO test = new EO(); - test.setEditTracker(cs); - - test.setValue("message", "Hello World"); - assertEquals(2, cs.getChanges().size()); - - test.setValue("message", "Goodbye World"); - cs.logChanges(logger); - assertEquals(3, cs.getChanges().size()); - } - - @Test - public void testAttributeUnset() { - ChangeStream cs = new ChangeStream(); - EO test = new EO(); - test.setEditTracker(cs); - - test.setValue("message", "Hello World"); - assertEquals(2, cs.getChanges().size()); - - test.setValue("message", null); - cs.logChanges(logger); - assertEquals(3, cs.getChanges().size()); - } -} diff --git a/java/lc-eo-changestream/src/test/java/lc/eo/changestream/EditContextTest.java b/java/lc-eo-changestream/src/test/java/lc/eo/changestream/EditContextTest.java deleted file mode 100644 index 5e0bba81b4faac37814369d7bca417f0a36ff8ae..0000000000000000000000000000000000000000 --- a/java/lc-eo-changestream/src/test/java/lc/eo/changestream/EditContextTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package lc.eo.changestream; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; - -import java.util.concurrent.atomic.AtomicBoolean; - -public class EditContextTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EditContextTest.class); - - @Test - public void testLogger() throws Exception { - EO root = new EO(); - AtomicBoolean worked = new AtomicBoolean(false); - EditContext ctx = new EditContext(root, (changeNumber, txn) -> worked.set(true)); - ctx.commit(); - assert (worked.get()); - } - - @Test - public void testEditContext() throws Exception { - EO root = new EO(); - EditContext ctx = new EditContext(root, new DebugChangeLogger()); - - root.setValue("first", "Alex"); - root.setValue("last", "Leigh"); - - ctx.commit(); - } -} diff --git a/java/lc-eo-json/LICENSE.md b/java/lc-eo-json/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-eo-json/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-eo-json/build.gradle b/java/lc-eo-json/build.gradle deleted file mode 100644 index 3640c138d63e5c1e3f9c9865262ada0ea38b3299..0000000000000000000000000000000000000000 --- a/java/lc-eo-json/build.gradle +++ /dev/null @@ -1,60 +0,0 @@ - -plugins { - id 'java' - id 'java-library' - id 'maven-publish' -} -// Because of Android -sourceCompatibility = JavaVersion.VERSION_11 -targetCompatibility = JavaVersion.VERSION_11 - -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-eo') - testImplementation group: 'junit', name: 'junit', version: '4.12' -} - -publishing { - publications { - mavenJava(MavenPublication) { - artifactId = 'lc-eo-json' - from components.java - versionMapping { - usage('java-api') { - fromResolutionOf('runtimeClasspath') - } - usage('java-runtime') { - fromResolutionResult() - } - } - pom { - name = 'LEIGH EO JSON' - description = 'EO JSON' - url = 'http://leigh-co.com' - licenses { - license { - name = 'COMMERCIAL' - url = 'http://leigh-co.com' - } - } - developers { - developer { - id = 'aleigh' - name = 'Alex Leigh' - email = 'a@leigh-co.com' - } - } - } - } - } - repositories { - maven { - url = "$buildDir/repos/dist" - } - } -} diff --git a/java/lc-eo-json/src/main/java/lc/eo/EOJsonSerializer.java b/java/lc-eo-json/src/main/java/lc/eo/EOJsonSerializer.java deleted file mode 100644 index 1860a54532042f6b0a03cde0c42962b8b5d85a11..0000000000000000000000000000000000000000 --- a/java/lc-eo-json/src/main/java/lc/eo/EOJsonSerializer.java +++ /dev/null @@ -1,150 +0,0 @@ -package lc.eo; - -import lc.mecha.json.JSONArray; -import lc.mecha.json.JSONException; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -public class EOJsonSerializer { - public static final String TYPE_KEY = "_type"; - public static final String ID_KEY = "_id"; - public static final String META_KEY = "_meta"; - public static final String UNDERSCORE = "_"; - public static final String META_VALUE = "value"; - public static final String META_ISWEAK = "isWeak"; - - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EOJsonSerializer.class); - - /** - * Deserialize a JSON object into an {@link EO}. - */ - public static EO toEo(JSONObject object) { - // Believe it or not - his implementation is so terrible it will throw if - // the key is not found in the object. - - UUID idUuid; - - if (object.has(ID_KEY)) { - idUuid = UUID.fromString(object.getString(ID_KEY)); - } else { - idUuid = UUID.randomUUID(); - } - - EO eo; - try { - eo = new EO(object.getString(TYPE_KEY), idUuid); - } catch (JSONException e) { - eo = new EO(idUuid); - } - - for (final String key : object.keySet()) { - // JSONObject will provide strings as such, and booleans as Boolean - if (!key.startsWith(UNDERSCORE) && !object.isNull(key)) { - final Object val = object.opt(key); - if (val instanceof JSONArray) { - EOLoop loop = toEoLoop((JSONArray) val); - eo.setValue(key, loop); - // goodness - } else { - // We do this in case it actually comes out as a JSONObject due to a bad serialization - Object o = object.opt(key); - if (o instanceof Serializable) { - eo.setValue(key, (Serializable) object.opt(key)); - } else { - logger.warn("Could not deserialize JSON value. Dropping that value. [key: {}] [val: {} {}]", - key, o.getClass(), o); - throw new IllegalArgumentException("Could not deserialize JSON"); - } - } - } - } - - JSONObject metaRoot = object.optJSONObject(META_KEY); - if (metaRoot != null) { - for (String apiKey : metaRoot.keySet()) { - JSONObject metaArray = metaRoot.getJSONObject(apiKey); - logger.info("meta: {}", metaArray); - for (String metaType : metaArray.keySet()) { - JSONObject metaParam = metaArray.getJSONObject(metaType); - String metaValue = metaParam.getString(META_VALUE); - boolean metaIsWeak = metaParam.getBoolean(META_ISWEAK); - eo.setMetaValue(apiKey, metaType, metaValue, metaIsWeak); - } - } - } - - return eo; - } - - public static EOLoop toEoLoop(JSONArray val) { - EOLoop loop = new EOLoop(); - for (int i = 0; i < val.length(); i++) { - try { - loop.add(EOJsonSerializer.toEo(val.getJSONObject(i))); - } catch (JSONException e) { - logger.warn("JSON was illegal. {}", e); - } - } - return loop; - } - - /** - * Returns this EO in the form of a JSON graph. The graph is compatible with the JSONObject - * constructor. - */ - public static JSONObject toJson(EO eo) throws JSONException { - final JSONObject obj = new JSONObject(); - // Store the data keys in JSON. - if (eo.getKeys().size() > 0) { - for (final Map.Entry entry : eo.getData().entrySet()) { - if (entry.getKey().startsWith(UNDERSCORE)) continue; - if (entry.getValue() instanceof EOLoop) { - final JSONArray array = new JSONArray(); - obj.put(entry.getKey(), array); - for (final EO value : (EOLoop) entry.getValue()) { - array.put(EOJsonSerializer.toJson(value)); - } - } else { - obj.put(entry.getKey(), entry.getValue()); - } - } - } - - obj.put(TYPE_KEY, eo.getType()); - obj.put(ID_KEY, eo.getId().toString()); - - if (eo.getMeta()!= null) { - JSONObject metaObj = new JSONObject(); - for (Map.Entry> metaAttr : eo.getMeta().entrySet()) { - JSONObject metaAttrJson = new JSONObject(); - metaObj.put(metaAttr.getKey(), metaAttrJson); - for (Map.Entry metaValue : metaAttr.getValue().entrySet()) { - JSONObject metaValueJson = new JSONObject(); - String type = metaValue.getKey(); - - // This relies on the premise that the label will ALWAYS be prefixed in the EO. - // So this is tightly coupled with EO.java - - if(type.startsWith("_")) { - metaValueJson.put(META_ISWEAK, true); - } else if (type.startsWith("#")) { - metaValueJson.put(META_ISWEAK, false); - } - metaValueJson.put(META_VALUE, metaValue.getValue()); - metaAttrJson.put(type.substring(1), metaValueJson); - } - } - if (metaObj.keySet().size() > 0) { - obj.put(META_KEY, metaObj); - } - } - - return obj; - } -} diff --git a/java/lc-eo-json/src/main/java/lc/eo/json/JsonInput.java b/java/lc-eo-json/src/main/java/lc/eo/json/JsonInput.java deleted file mode 100644 index cece65c250aac271fb98a06548dcff1f8d161dae..0000000000000000000000000000000000000000 --- a/java/lc-eo-json/src/main/java/lc/eo/json/JsonInput.java +++ /dev/null @@ -1,41 +0,0 @@ -package lc.eo.json; - -import lc.eo.EO; -import lc.eo.EOJsonSerializer; -import lc.eo.io.EOInputStream; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.NoSuchElementException; - -public class JsonInput implements EOInputStream, AutoCloseable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(JsonInput.class); - private final BufferedReader reader; - - public JsonInput(InputStream inputStream) { - reader = new BufferedReader(new InputStreamReader(inputStream)); - } - - public EO readEo() throws IOException { - try { - // logger.info("=============="); - String line = reader.readLine(); - if (line == null) return null; - // logger.info("Line: -->{}<--", line); - JSONObject jo = new JSONObject(line); - return EOJsonSerializer.toEo(jo); - } catch (NoSuchElementException e) { - return null; - } - } - - @Override - public void close() throws IOException { - reader.close(); - } -} diff --git a/java/lc-eo-json/src/main/java/lc/eo/json/JsonOutput.java b/java/lc-eo-json/src/main/java/lc/eo/json/JsonOutput.java deleted file mode 100644 index 896a11308f4705f9102a4baac1a57af43fe4caef..0000000000000000000000000000000000000000 --- a/java/lc-eo-json/src/main/java/lc/eo/json/JsonOutput.java +++ /dev/null @@ -1,34 +0,0 @@ -package lc.eo.json; - -import lc.eo.EO; -import lc.eo.EOJsonSerializer; -import lc.eo.io.EOOutputStream; -import lc.mecha.json.JSONObject; - -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; - -public class JsonOutput implements EOOutputStream { - private final OutputStream os; - - public JsonOutput(OutputStream outputStream) { - this.os = outputStream; - } - - public void writeEO(EO obj) throws IOException { - JSONObject json = EOJsonSerializer.toJson(obj); - os.write(json.toString().getBytes(StandardCharsets.UTF_8)); - os.write("\r\n".getBytes(StandardCharsets.UTF_8)); - } - - @Override - public void close() throws IOException { - os.close(); - } - - public void flush() throws IOException { - os.flush(); - } - -} diff --git a/java/lc-eo-json/src/test/java/lc/eo/json/TestEoJson.java b/java/lc-eo-json/src/test/java/lc/eo/json/TestEoJson.java deleted file mode 100644 index d0ff43b63e6c893829abd9a5ce1cdcffabbb3af5..0000000000000000000000000000000000000000 --- a/java/lc-eo-json/src/test/java/lc/eo/json/TestEoJson.java +++ /dev/null @@ -1,58 +0,0 @@ -package lc.eo.json; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.Test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.UUID; - -import static org.junit.Assert.assertEquals; - -public class TestEoJson { - private final UUID id = UUID.fromString("9fd57a37-1b15-4871-9180-80b195b27a9d"); - - private static final MechaLogger logger = MechaLoggerFactory.getLogger(TestEoJson.class); - - @Test - public void testThing() throws IOException { - EO hello = new EO("greeting"); - hello.setValue("msg", "Hello World!"); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - JsonOutput jsonOut = new JsonOutput(out); - jsonOut.writeEO(hello); - jsonOut.close(); - - logger.info("Encoded: {}", out.toString()); - - JsonInput jsonIn = new JsonInput(new ByteArrayInputStream(out.toByteArray())); - EO readBack = jsonIn.readEo(); - logger.info("Readback : {}", readBack); - readBack = jsonIn.readEo(); - logger.info("Readback : {}", readBack); - } - - @Test - public void testMeta() throws IOException { - EO eo = new EO(id); - - eo.setValue("first", "alex"); - eo.setMetaValue("first", "display_text", "Alex", false); - - logger.info("eo: {}", eo); - - ByteArrayOutputStream out = new ByteArrayOutputStream(); - JsonOutput jsonOut = new JsonOutput(out); - jsonOut.writeEO(eo); - jsonOut.close(); - - logger.info("Encoded: {}", out.toString()); - - assertEquals("{\"_meta\":{\"first\":{\"display_text\":{\"isWeak\":false,\"value\":\"Alex\"}}},\"_id\":\"9fd57a37-1b15-4871-9180-80b195b27a9d\",\"first\":\"alex\"}", out.toString()); - } - -} \ No newline at end of file diff --git a/java/lc-eo-schema/.gitignore b/java/lc-eo-schema/.gitignore deleted file mode 100644 index ede7310f5aa22a8bb16f7393dedac5d9b0cba2c9..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -kabe.log -velocity.log -.DS_Store -statistic.xml -.gradle -/*/build/ -/build/ -gradle-app.setting -!gradle-wrapper.jar -.gradletasknamecache -.idea/ -*.iml -out/ -.cache -node_modules -/*/.idea -.vi -/*/graph.eo -.vai -graph.bak -.idea -tests.vai -vds.log -hosts.json -tests.vai.old \ No newline at end of file diff --git a/java/lc-eo-schema/LICENSE.md b/java/lc-eo-schema/LICENSE.md deleted file mode 100644 index 226d1f25b12e58e21c29a6c1869d1ec05095d443..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-eo-schema/build.gradle b/java/lc-eo-schema/build.gradle deleted file mode 100644 index c5daba9a4276bba818125f6604a059739a6e3ba6..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/build.gradle +++ /dev/null @@ -1,60 +0,0 @@ -plugins { - id 'java' - id 'java-library' - id 'maven-publish' -} -repositories { - mavenCentral() -} - -version '20.0-SNAPSHOT' - -// Because of Android -sourceCompatibility = JavaVersion.VERSION_11 -targetCompatibility = JavaVersion.VERSION_11 - -dependencies { - api 'org.apache.velocity:velocity:1.7' - api project(':lc-eo') - testImplementation group: 'junit', name: 'junit', version: '4.12' -} - -publishing { - publications { - mavenJava(MavenPublication) { - artifactId = 'leigh-eo-schema' - from components.java - versionMapping { - usage('java-api') { - fromResolutionOf('runtimeClasspath') - } - usage('java-runtime') { - fromResolutionResult() - } - } - pom { - name = 'LEIGH Enterprise Objects Schemas' - description = 'Enterprise Objects Schemas' - url = 'http://leigh-co.com' - licenses { - license { - name = 'COMMERCIAL' - url = 'http://leigh-co.com' - } - } - developers { - developer { - id = 'aleigh' - name = 'Alex Leigh' - email = 'a@leigh-co.com' - } - } - } - } - } - repositories { - maven { - url = "$buildDir/repos/dist" - } - } -} diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/AcceptTypeElementDAO.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/AcceptTypeElementDAO.java deleted file mode 100644 index 824cb244b6d6e18acd53572b7bd0ef225d0518a8..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/AcceptTypeElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class AcceptTypeElementDAO { - public static final String API_TYPE = "lc.eo.schema.AcceptType"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ELEMENTAPINAME = "elementApiName"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={validators=EOLoop{array=[EO{typeName='lc.eo.schema.ValidatorNotEmpty', data={}, meta=null}]} , eoType=elementApiName, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Element API Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getElementApiName(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_ELEMENTAPINAME); - } - - public static void setElementApiName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ELEMENTAPINAME, value); - } - - public static void setElementApiNameLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ELEMENTAPINAME, label); - } - - public static void getLabelOrValueElementApiName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ELEMENTAPINAME); - } - - public static void setIfUnsetElementApiName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ELEMENTAPINAME, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/AttributeElementDAO.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/AttributeElementDAO.java deleted file mode 100644 index e331b7c0c2acd1cf2ee51c58e752519deaa1ede3..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/AttributeElementDAO.java +++ /dev/null @@ -1,413 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; -import lc.eo.EOLoop; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class AttributeElementDAO { - public static final String API_TYPE = "lc.eo.schema.Attribute"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_EOTYPE = "eoType"; - public static final String KEY_LABEL = "label"; - public static final String KEY_TYPE = "type"; - public static final String KEY_ISCASEINSENSITIVE = "isCaseInsensitive"; - public static final String KEY_ISHIDDEN = "isHidden"; - public static final String KEY_ISPROTECTED = "isProtected"; - public static final String KEY_FIXEDCHOICES = "fixedChoices"; - public static final String KEY_VALIDATORS = "validators"; - public static final String KEY_HELP = "help"; - public static final String KEY_DEFAULTVALUE = "defaultValue"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=eoType, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=EO Type, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getEoType(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_EOTYPE); - } - - public static void setEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_EOTYPE, value); - } - - public static void setEoTypeLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_EOTYPE, label); - } - - public static void getLabelOrValueEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_EOTYPE); - } - - public static void setIfUnsetEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_EOTYPE, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=[EO{typeName='lc.eo.schema.AcceptType', data={elementApiName=lc.eo.schema.Text}, meta=null}]} , eoType=label, label=Label}, meta=null} */ - - public static void appendLabel(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_LABEL); - loop.add(label); - } - - - public static EOLoop getLabel(EO eo) { - EOLoop o = eo.getValueLoop(KEY_LABEL); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_LABEL, o); - } - return o; - } - - public static void setLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=type, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Type, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getType(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TYPE); - } - - public static void setType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TYPE, value); - } - - public static void setTypeLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TYPE, label); - } - - public static void getLabelOrValueType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TYPE); - } - - public static void setIfUnsetType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TYPE, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=isCaseInsensitive, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Case Insensitive, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIsCaseInsensitive(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_ISCASEINSENSITIVE); - } - - public static void setIsCaseInsensitive(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ISCASEINSENSITIVE, value); - } - - public static void setIsCaseInsensitiveLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ISCASEINSENSITIVE, label); - } - - public static void getLabelOrValueIsCaseInsensitive(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ISCASEINSENSITIVE); - } - - public static void setIfUnsetIsCaseInsensitive(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ISCASEINSENSITIVE, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=isHidden, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Hidden, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIsHidden(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_ISHIDDEN); - } - - public static void setIsHidden(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ISHIDDEN, value); - } - - public static void setIsHiddenLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ISHIDDEN, label); - } - - public static void getLabelOrValueIsHidden(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ISHIDDEN); - } - - public static void setIfUnsetIsHidden(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ISHIDDEN, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=isProtected, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Protected, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIsProtected(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_ISPROTECTED); - } - - public static void setIsProtected(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ISPROTECTED, value); - } - - public static void setIsProtectedLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ISPROTECTED, label); - } - - public static void getLabelOrValueIsProtected(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ISPROTECTED); - } - - public static void setIfUnsetIsProtected(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ISPROTECTED, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=null} , eoType=fixedChoices, label=Fixed Choices}, meta=null} */ - - public static void appendFixedChoices(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_FIXEDCHOICES); - loop.add(label); - } - - - public static EOLoop getFixedChoices(EO eo) { - EOLoop o = eo.getValueLoop(KEY_FIXEDCHOICES); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_FIXEDCHOICES, o); - } - return o; - } - - public static void setFixedChoices(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_FIXEDCHOICES, value); - } - - public static void setFixedChoicesLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_FIXEDCHOICES, label); - } - - public static void getLabelOrValueFixedChoices(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_FIXEDCHOICES); - } - - public static void setIfUnsetFixedChoices(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_FIXEDCHOICES, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=null} , eoType=validators, label=Validators}, meta=null} */ - - public static void appendValidators(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_VALIDATORS); - loop.add(label); - } - - - public static EOLoop getValidators(EO eo) { - EOLoop o = eo.getValueLoop(KEY_VALIDATORS); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_VALIDATORS, o); - } - return o; - } - - public static void setValidators(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_VALIDATORS, value); - } - - public static void setValidatorsLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_VALIDATORS, label); - } - - public static void getLabelOrValueValidators(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_VALIDATORS); - } - - public static void setIfUnsetValidators(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_VALIDATORS, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=help, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Help Text, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getHelp(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_HELP); - } - - public static void setHelp(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_HELP, value); - } - - public static void setHelpLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_HELP, label); - } - - public static void getLabelOrValueHelp(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_HELP); - } - - public static void setIfUnsetHelp(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_HELP, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=defaultValue, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Default Value, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getDefaultValue(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_DEFAULTVALUE); - } - - public static void setDefaultValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_DEFAULTVALUE, value); - } - - public static void setDefaultValueLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_DEFAULTVALUE, label); - } - - public static void getLabelOrValueDefaultValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_DEFAULTVALUE); - } - - public static void setIfUnsetDefaultValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_DEFAULTVALUE, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/DAOGenerator.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/DAOGenerator.java deleted file mode 100644 index 04b5400c397494be30d23670cc6d5fa26b0da6aa..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/DAOGenerator.java +++ /dev/null @@ -1,164 +0,0 @@ -package lc.eo.schema; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.StringUtil; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; -import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.PrintWriter; -import java.util.Properties; - -/** - * This tool generates the source-code for DAO objects based on their ESP based - * schema. This is handy for developing Java tooling that interacts with ESP records. - * - * @author Alex Leigh - */ -public final class DAOGenerator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DAOGenerator.class); - // The name for the DAO class - private final static String KEY_JAVACLASS = "javaClass"; - // The package for the DAO class - private final static String KEY_JAVAPKG = "javaPackage"; - // The element EO - private final static String KEY_ELEMENT = "element"; - private final static String KEY_ATTRIBUTES = "attributes"; - private final static String KEY_GENERATOR = "generator"; - private final static String KEY_ECMAPKG = "ecmaPackage"; - private final File baseDirectory; - private final VelocityEngine velocity; - - public DAOGenerator(final File baseDirectory) { - this.baseDirectory = baseDirectory; - velocity = new VelocityEngine(); - final Properties props = new Properties(); - props.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); - props.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName()); - velocity.init(props); - } - - /** - * Capitalize the first letter in the provided string. This method is provided for the benefit of the - * template so that we do not need to involve other classes in the template execution context. - * - * @param str The string to capitalize - * @return The capitalized String - */ - @SuppressWarnings("unused") - public String capitalize(final String str) { - return org.apache.velocity.util.StringUtils.capitalizeFirstLetter(str); - } - - /** - * This method is provided for the benefit of the template. - * - * @param str - * @return - */ - @SuppressWarnings("unused") - public String toUpperCase(final String str) { - return str.toUpperCase(); - } - - @SuppressWarnings("unused") - public String inferType(final EO field) { - if (field.getType().equals(LoopElementDAO.API_TYPE)) - return "EOLoop"; - - logger.debug("Inferring type on {}", field); - - String typ = EODataType.getType(EODataType.valueOf(AttributeElementDAO.getType(field))).getCanonicalName(); - - //logger.info("inferred type: {} {}", field, typ); - - return typ; - } - - @SuppressWarnings("unused") - public String inferAccessor(final EO field) { - if (field.getType().equals(LoopElementDAO.API_TYPE)) - return "getValueLoop"; - - return EODataType.getAccessor(EODataType.valueOf(AttributeElementDAO.getType(field))); - } - - /** - * Used by the template; returns a java class name for the given element name. This is - * the KEY_NAME of the element with a capitalized first letter. - * - * @param element The element to return the name for. - * @return The name - */ - public String elementClassName(final EO element) { - return org.apache.velocity.util.StringUtils.capitalizeFirstLetter(StringUtil.last(ElementElementDAO.getEoType(element) + "ElementDAO", "\\.")); - } - - /** - * Generate a set of DAO classes from the provided schema. The classes will be generated into the - * provided package name - specify in . format e.g. "com.foo.bar". If files already exist, they will - * be silently overwritten. - * - * @param basePkg - * @param schema - * @throws FileNotFoundException - */ - public void generateJava(final String basePkg, final EO schema) throws FileNotFoundException { - final Template javaTemplate = velocity.getTemplate("lc/eo/schema/JavaDAO.vm"); - - final String pkgBase = basePkg.replace('.', '/'); - - logger.info("Creating new DAO source-code file: {}", pkgBase); - - final File classPkg = new File(baseDirectory, pkgBase); - classPkg.mkdirs(); - - for (final EO element : SchemaElementDAO.getElements(schema)) { - final VelocityContext vc = new VelocityContext(); - vc.put(KEY_JAVACLASS, elementClassName(element)); - vc.put(KEY_JAVAPKG, basePkg); - vc.put(KEY_ELEMENT, element); - vc.put(KEY_ATTRIBUTES, ElementElementDAO.getAttributes(element)); - vc.put(KEY_GENERATOR, this); - - logger.info("Element: {}", element); - - final File javaClassFile = new File(classPkg, elementClassName(element) + ".java"); - - logger.info("Writing class: {}", javaClassFile); - - final PrintWriter javaPw = new PrintWriter(javaClassFile); - javaTemplate.merge(vc, javaPw); - javaPw.close(); - } - } - - /** - * Write the DAOs to a the provided output writer. Providing the same writer to successive calls - * of this method allows the output ECMAScript v5 classes to be accumulated into a single file for - * ease of use. - * - * @since mk12 mod0 (RETROGRADE) - */ - public void generateEcma5(final PrintWriter output, final String ecmaPkg, final EO schema) throws FileNotFoundException { - final Template jsTemplate = velocity.getTemplate("lc/eo/schema/ECMA5.vm"); - - for (final EO element : SchemaElementDAO.getElements(schema)) { - final VelocityContext vc = new VelocityContext(); - vc.put(KEY_JAVACLASS, elementClassName(element)); - vc.put(KEY_ECMAPKG, ecmaPkg); - vc.put(KEY_ELEMENT, element); - vc.put(KEY_ATTRIBUTES, ElementElementDAO.getAttributes(element)); - vc.put(KEY_GENERATOR, this); - - jsTemplate.merge(vc, output); - } - } -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/ElementElementDAO.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/ElementElementDAO.java deleted file mode 100644 index 432208ee6734e705be844a14a0dd1f6319039c86..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/ElementElementDAO.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; -import lc.eo.EOLoop; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class ElementElementDAO { - public static final String API_TYPE = "lc.eo.schema.Element"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_EOTYPE = "eoType"; - public static final String KEY_ATTRIBUTES = "attributes"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=eoType, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=EO Type, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getEoType(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_EOTYPE); - } - - public static void setEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_EOTYPE, value); - } - - public static void setEoTypeLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_EOTYPE, label); - } - - public static void getLabelOrValueEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_EOTYPE); - } - - public static void setIfUnsetEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_EOTYPE, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=null} , eoType=attributes, label=Attributes}, meta=null} */ - - public static void appendAttributes(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_ATTRIBUTES); - loop.add(label); - } - - - public static EOLoop getAttributes(EO eo) { - EOLoop o = eo.getValueLoop(KEY_ATTRIBUTES); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_ATTRIBUTES, o); - } - return o; - } - - public static void setAttributes(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ATTRIBUTES, value); - } - - public static void setAttributesLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ATTRIBUTES, label); - } - - public static void getLabelOrValueAttributes(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ATTRIBUTES); - } - - public static void setIfUnsetAttributes(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ATTRIBUTES, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/FixedChoiceElementDAO.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/FixedChoiceElementDAO.java deleted file mode 100644 index a1b769daa0f543343dbd34b51a88c266ffc409ba..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/FixedChoiceElementDAO.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; -import lc.eo.EOLoop; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class FixedChoiceElementDAO { - public static final String API_TYPE = "lc.eo.schema.FixedChoice"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_VALUE = "value"; - public static final String KEY_LABEL = "label"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=value, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Value, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getValue(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_VALUE); - } - - public static void setValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_VALUE, value); - } - - public static void setValueLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_VALUE, label); - } - - public static void getLabelOrValueValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_VALUE); - } - - public static void setIfUnsetValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_VALUE, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=[EO{typeName='lc.eo.schema.AcceptType', data={elementApiName=lc.eo.schema.Text}, meta=null}]} , eoType=label, label=Label}, meta=null} */ - - public static void appendLabel(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_LABEL); - loop.add(label); - } - - - public static EOLoop getLabel(EO eo) { - EOLoop o = eo.getValueLoop(KEY_LABEL); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_LABEL, o); - } - return o; - } - - public static void setLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/LoopElementDAO.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/LoopElementDAO.java deleted file mode 100644 index e18da3a26555ecfda53bb0389ba002ae59c0503a..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/LoopElementDAO.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; -import lc.eo.EOLoop; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class LoopElementDAO { - public static final String API_TYPE = "lc.eo.schema.Loop"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_EOTYPE = "eoType"; - public static final String KEY_LABEL = "label"; - public static final String KEY_ACCEPTTYPES = "acceptTypes"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=eoType, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=EO Type, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getEoType(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_EOTYPE); - } - - public static void setEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_EOTYPE, value); - } - - public static void setEoTypeLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_EOTYPE, label); - } - - public static void getLabelOrValueEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_EOTYPE); - } - - public static void setIfUnsetEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_EOTYPE, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=[EO{typeName='lc.eo.schema.AcceptType', data={elementApiName=lc.eo.schema.Text}, meta=null}]} , eoType=label, label=Label}, meta=null} */ - - public static void appendLabel(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_LABEL); - loop.add(label); - } - - - public static EOLoop getLabel(EO eo) { - EOLoop o = eo.getValueLoop(KEY_LABEL); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_LABEL, o); - } - return o; - } - - public static void setLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=[EO{typeName='lc.eo.schema.AcceptType', data={elementApiName=lc.eo.schema.AcceptType}, meta=null}]} , eoType=acceptTypes, label=Accept Types}, meta=null} */ - - public static void appendAcceptTypes(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_ACCEPTTYPES); - loop.add(label); - } - - - public static EOLoop getAcceptTypes(EO eo) { - EOLoop o = eo.getValueLoop(KEY_ACCEPTTYPES); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_ACCEPTTYPES, o); - } - return o; - } - - public static void setAcceptTypes(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ACCEPTTYPES, value); - } - - public static void setAcceptTypesLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ACCEPTTYPES, label); - } - - public static void getLabelOrValueAcceptTypes(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ACCEPTTYPES); - } - - public static void setIfUnsetAcceptTypes(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ACCEPTTYPES, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/SchemaElementDAO.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/SchemaElementDAO.java deleted file mode 100644 index d950e34f4bbbda827cd27c8bba440d562bd61751..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/SchemaElementDAO.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; -import lc.eo.EOLoop; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class SchemaElementDAO { - public static final String API_TYPE = "lc.eo.schema.Schema"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_EOTYPE = "eoType"; - public static final String KEY_LABEL = "label"; - public static final String KEY_ELEMENTS = "elements"; - public static final String KEY_PROCEDURES = "procedures"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=eoType, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=EO Type, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getEoType(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_EOTYPE); - } - - public static void setEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_EOTYPE, value); - } - - public static void setEoTypeLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_EOTYPE, label); - } - - public static void getLabelOrValueEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_EOTYPE); - } - - public static void setIfUnsetEoType(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_EOTYPE, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=[EO{typeName='lc.eo.schema.AcceptType', data={elementApiName=lc.eo.schema.Text}, meta=null}]} , eoType=label, label=Label}, meta=null} */ - - public static void appendLabel(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_LABEL); - loop.add(label); - } - - - public static EOLoop getLabel(EO eo) { - EOLoop o = eo.getValueLoop(KEY_LABEL); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_LABEL, o); - } - return o; - } - - public static void setLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=null} , eoType=elements, label=Elements}, meta=null} */ - - public static void appendElements(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_ELEMENTS); - loop.add(label); - } - - - public static EOLoop getElements(EO eo) { - EOLoop o = eo.getValueLoop(KEY_ELEMENTS); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_ELEMENTS, o); - } - return o; - } - - public static void setElements(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ELEMENTS, value); - } - - public static void setElementsLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ELEMENTS, label); - } - - public static void getLabelOrValueElements(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ELEMENTS); - } - - public static void setIfUnsetElements(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ELEMENTS, value); - } - - - /* EO{typeName='lc.eo.schema.Loop', data={acceptTypes=EOLoop{array=null} , eoType=procedures, label=Custom Procedures}, meta=null} */ - - public static void appendProcedures(EO eo, EO label) { - EOLoop loop = eo.getValueLoop(KEY_PROCEDURES); - loop.add(label); - } - - - public static EOLoop getProcedures(EO eo) { - EOLoop o = eo.getValueLoop(KEY_PROCEDURES); - if (o == null) { - o = new EOLoop(); - eo.setValue(KEY_PROCEDURES, o); - } - return o; - } - - public static void setProcedures(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_PROCEDURES, value); - } - - public static void setProceduresLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_PROCEDURES, label); - } - - public static void getLabelOrValueProcedures(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_PROCEDURES); - } - - public static void setIfUnsetProcedures(final EO eo, EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_PROCEDURES, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/SchemaUtil.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/SchemaUtil.java deleted file mode 100644 index 7ec602e3de64f8293bb1b9776aa360a1a288ad03..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/SchemaUtil.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.commons.lang.StringUtils; - -import java.util.Iterator; -import java.util.Locale; -import java.util.Map; - -/** - * This class provides utility functionality for working with EO instances. - * - * @author Alex Leigh - */ -public final class SchemaUtil { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaUtil.class); - - /** - * Set all the default values from the schema into the given EO. If replace is true then - * existing values in the eo will be replaced with the default value. - *

- * If the EO contains loops, the method will recurse through the loops, setting default values in all - * the children. - * - * @param eo - * @param schema - */ - public static void setDefaults(final EO eo, final EO schema, final boolean replace) { - final EO elementSchema = lc.eo.schema.util.SchemaUtil.getElement(schema, eo.getType()); - - logger.debug("Validating against schema: {}", schema); - - if (elementSchema == null) { - throw new IllegalArgumentException("Element not found in schema: " + eo.getType()); - } - - Iterator it = ElementElementDAO.getAttributes(elementSchema).iterator(AttributeElementDAO.API_TYPE); - while (it.hasNext()) { - EO field = it.next(); - String defaultValue = AttributeElementDAO.getDefaultValue(field); - if (defaultValue == null) continue; - - // If we are not replacing, and we have the value, iterate - if (!replace) { - if (eo.contains(AttributeElementDAO.getEoType(field))) continue; - } - - // Set the default value into the target eo - eo.setValue(AttributeElementDAO.getEoType(field), defaultValue); - } - - it = ElementElementDAO.getAttributes(elementSchema).iterator(LoopElementDAO.API_TYPE); - while (it.hasNext()) { - EO loopSchema = it.next(); - EOLoop loop = eo.getValueLoop(LoopElementDAO.getEoType(loopSchema)); - if (loop == null) continue; - for (EO loopObject : loop) { - setDefaults(loopObject, schema, replace); - } - } - } - - /** - * Validate the contents of the EO based on the provided schema. Any errors will be written into - * the errors section of the EO. - *

- * The method does not recurse into EOLoops. - * - * @param eo - * @param schema - */ - public static void validate(final EO eo, final EO schema) { - final EO elementSchema = lc.eo.schema.util.SchemaUtil.getRootElement(schema); - - logger.debug("Validating against schema: {}", schema); - - if (elementSchema == null) { - throw new IllegalArgumentException("Element not found in schema: " + eo.getType()); - } - - for (final EO field : ElementElementDAO.getAttributes(elementSchema)) { - logger.debug("Validating field: {}", field); - - logger.debug("Validators: {}", AttributeElementDAO.getValidators(field)); - for (final EO validator : AttributeElementDAO.getValidators(field)) { - logger.debug("Found validator {} for {}", validator, field); - switch (validator.getType()) { - case ValidatorNotEmptyElementDAO.API_TYPE: - logger.debug("Checking empty..."); - if (eo.isEmpty(AttributeElementDAO.getEoType(field))) { - logger.debug("VAL FAIL"); - eo.putError(AttributeElementDAO.getEoType(field), "Value must not be empty."); - } - } - } - } - } - - /** - * Ensures that all strings in the object for fields which are marked as being case insensitive are in - * upper-case format. The routine does not make any attempt to assess or correct fields which are not - * denoted as being a string type, even if they are marked as being case-insensitive. - *

- * The method does not recurse into EOLoops. - */ - public static void fixCase(final EO eo, final EO schema, final Locale locale) { - logger.debug("fixCase() called against: {}", schema); - - final EO elementSchema = lc.eo.schema.util.SchemaUtil.getRootElement(schema); - - if (elementSchema == null) { - throw new IllegalArgumentException("Element not found in schema: " + eo.getType()); - } - - for (final EO field : ElementElementDAO.getAttributes(elementSchema)) { - if (!AttributeElementDAO.assertType(field)) { - logger.debug("Field was not a field"); - continue; - } - if (!AttributeElementDAO.getIsCaseInsensitive(field)) { - logger.debug("Field was not set as case insensitive"); - continue; - } - if (field.getValueEspType(AttributeElementDAO.KEY_TYPE) != EODataType.string) { - logger.debug("Field was not a string: {}", AttributeElementDAO.getType(field)); - continue; - } - - logger.debug("Asserting case for: {}", field); - final String apiName = AttributeElementDAO.getEoType(field); - logger.debug("apiName: {}", apiName); - - final String value = eo.getValueString(apiName); - logger.debug("value: {}", value); - if (value == null) continue; - - if (!StringUtils.isAllUpperCase(value)) - eo.setValue(apiName, value.toUpperCase(locale)); - } - } - - /** - * Add the given EO, which is a schema, to the given map. The key for the map will be the name for the schema. - * - * @param dst - * @param src - */ - public static void addSchemaMap(Map dst, EO src) { - dst.put(SchemaElementDAO.getEoType(src), src); - } - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/TextElementDAO.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/TextElementDAO.java deleted file mode 100644 index 35cc2e2174fe326f3fc01ec2a50b5e40ba1d61a3..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/TextElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class TextElementDAO { - public static final String API_TYPE = "lc.eo.schema.Text"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_LOCALE = "locale"; - public static final String KEY_TEXT = "text"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=locale, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Locale, locale=en}, meta=null}]} , type=locale}, meta=null} */ - - - public static java.util.Locale getLocale(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLocale(KEY_LOCALE); - } - - public static void setLocale(final EO eo, java.util.Locale value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LOCALE, value); - } - - public static void setLocaleLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LOCALE, label); - } - - public static void getLabelOrValueLocale(final EO eo, java.util.Locale value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LOCALE); - } - - public static void setIfUnsetLocale(final EO eo, java.util.Locale value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LOCALE, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=text, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Text, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getText(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TEXT); - } - - public static void setText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TEXT, value); - } - - public static void setTextLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TEXT, label); - } - - public static void getLabelOrValueText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TEXT); - } - - public static void setIfUnsetText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TEXT, value); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/ValidatorNotEmptyElementDAO.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/ValidatorNotEmptyElementDAO.java deleted file mode 100644 index 47b4e6eaad9409f8459128ec9ce7ada6be22d1d7..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/ValidatorNotEmptyElementDAO.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class ValidatorNotEmptyElementDAO { - public static final String API_TYPE = "lc.eo.schema.ValidatorNotEmpty"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - - public static String apiType(final EO eo) { - return eo.getType(); -} - - -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/Apotheosis.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/util/Apotheosis.java deleted file mode 100644 index 1a107102fa7ec0a1b43edc296edf8697928bfcf8..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/Apotheosis.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema.util; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.*; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * This class generates the schema^2 (that is, the schema for the schema). In turn this schema can be used to generateJava - * the DAO objects for the schema components (Element, Loop, Field, etc). These schema DAOs are used throughout - * the ESP codebase. - * - * @author Alex Leigh - */ -public final class Apotheosis { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Apotheosis.class); - - // Observe the procedures of a general alert - - public static EO generate() { - final EO schema = SchemaUtil.create(SchemaUtil.API_KEY); - final EO labelField = SchemaUtil.createLabelField(); - final EO eoTypeField = AttributeUtil.create("eoType", "EO Type", EODataType.string); - - SchemaElementDAO.appendLabel(schema, TextUtil.defaultLabel("Record Schema")); - - // The Makers of the Makers fall before the child - - // Label - final EO label = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(label); - ElementElementDAO.setEoType(label, TextElementDAO.API_TYPE); - ElementElementDAO.getAttributes(label).add(AttributeUtil.create("locale", "Locale", EODataType.locale)); - ElementElementDAO.getAttributes(label).add(AttributeUtil.create("text", "Text")); - - // Progress reports are arriving. - - // Element - final EO element = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(element); - ElementElementDAO.setEoType(element, ElementUtil.API_NAME); - ElementElementDAO.getAttributes(element).add(eoTypeField); - ElementElementDAO.getAttributes(element).add(LoopUtil.create("attributes", "Attributes")); - - // Field - final EO attribute = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(attribute); - ElementElementDAO.setEoType(attribute, AttributeUtil.API_NAME); - ElementElementDAO.getAttributes(attribute).add(eoTypeField); - ElementElementDAO.getAttributes(attribute).add(labelField); - ElementElementDAO.getAttributes(attribute).add(AttributeUtil.create("type", "Type")); - ElementElementDAO.getAttributes(attribute).add(AttributeUtil.create("isCaseInsensitive", "Case Insensitive", - EODataType.bool)); - // Hidden fields will not display in standard forms - ElementElementDAO.getAttributes(attribute).add(AttributeUtil.create("isHidden", "Hidden", EODataType.bool)); - ElementElementDAO.getAttributes(attribute).add(AttributeUtil.create("isProtected", "Protected", EODataType.bool)); - ElementElementDAO.getAttributes(attribute).add(LoopUtil.create("fixedChoices", "Fixed Choices")); - ElementElementDAO.getAttributes(attribute).add(LoopUtil.create("validators", "Validators")); - ElementElementDAO.getAttributes(attribute).add(AttributeUtil.create("help", "Help Text")); - ElementElementDAO.getAttributes(attribute).add(AttributeUtil.create("defaultValue", "Default Value")); - - // Loop - final EO loop = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(loop); - ElementElementDAO.setEoType(loop, LoopUtil.API_NAME); - ElementElementDAO.getAttributes(loop).add(eoTypeField); - ElementElementDAO.getAttributes(loop).add(labelField); - ElementElementDAO.getAttributes(loop).add(LoopUtil.create("acceptTypes", "Accept Types", - new String[]{AcceptTypeElementDAO.API_TYPE})); - - // FixedChoice - final EO acceptType = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(acceptType); - ElementElementDAO.setEoType(acceptType, AcceptTypeElementDAO.API_TYPE); - ElementElementDAO.getAttributes(acceptType).add(AttributeUtil.createNotNull("elementApiName", "Element API Name")); - - // FixedChoice - final EO fixedChoice = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(fixedChoice); - ElementElementDAO.setEoType(fixedChoice, FixedChoiceElementDAO.API_TYPE); - ElementElementDAO.getAttributes(fixedChoice).add(AttributeUtil.create(FixedChoiceElementDAO.KEY_VALUE, "Value", - EODataType.string)); - ElementElementDAO.getAttributes(fixedChoice).add(labelField); - - // Schema - final EO schemaElement = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(schemaElement); - ElementElementDAO.setEoType(schemaElement, SchemaUtil.API_KEY); - ElementElementDAO.getAttributes(schemaElement).add(eoTypeField); - ElementElementDAO.getAttributes(schemaElement).add(labelField); - ElementElementDAO.getAttributes(schemaElement).add(LoopUtil.create("elements", "Elements")); - ElementElementDAO.getAttributes(schemaElement).add(LoopUtil.create("procedures", "Custom Procedures")); - - final EO notEmptyValidator = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(notEmptyValidator); - ElementElementDAO.setEoType(notEmptyValidator, "lc.eo.schema.ValidatorNotEmpty"); - - return schema; - } - - public static void main(final String... args) throws IOException { - UniversalJob.banner(logger, "Apotheosis mk3", "2014-2022 Alex Leigh"); - final EO schema = generate(); - final DAOGenerator gen = new DAOGenerator(new File("lc-eo-schema/src/main/java")); - gen.generateJava("lc.eo.schema", schema); - try (PrintWriter pw = new PrintWriter(new FileWriter(new File("out.js")))) { - gen.generateEcma5(pw, "lc.pkg", schema); - } - - logger.info("Generated schema: {}", schema); - } -} diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/AttributeUtil.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/util/AttributeUtil.java deleted file mode 100644 index 9b73683c2d9f64ec165f9df07f6fcbec644622b8..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/AttributeUtil.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema.util; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.AttributeElementDAO; -import lc.eo.schema.ValidatorNotEmptyElementDAO; - -/** - * Utility class for interacting with field elements. - * - * @author Alex Leigh - */ -public final class AttributeUtil { - public static String API_NAME = AttributeElementDAO.API_TYPE; - - public static EO help(EO field, String help) { - AttributeElementDAO.setHelp(field, help); - return field; - } - - public static EO create(final String apiName, final String label) { - return create(apiName, label, EODataType.string); - } - - public static EO createNotNull(final String apiName, final String label) { - return createNotNull(apiName, label, EODataType.string); - } - - public static EO createNotNull(final String apiName, final String label, final EODataType type) { - final EO field = create(apiName, label); - AttributeElementDAO.getValidators(field).add(ValidatorNotEmptyElementDAO.create()); - AttributeElementDAO.setType(field, type.toString()); - return field; - } - - - public static EO create(final String apiName, final String label, final EODataType type) { - final EO field = AttributeElementDAO.create(); - AttributeElementDAO.setEoType(field, apiName); - AttributeElementDAO.appendLabel(field, TextUtil.defaultLabel(label)); - AttributeElementDAO.setType(field, type.toString()); - - return field; - } - - public static EO createCaseInsensitive(final String apiName, final String label) { - final EO field = create(apiName, label); - AttributeElementDAO.setIsCaseInsensitive(field, true); - return field; - } - - - public static EO createProtectedCaseInsensitive(final String apiName, final String label) { - final EO field = create(apiName, label); - AttributeElementDAO.setIsCaseInsensitive(field, true); - AttributeElementDAO.setIsProtected(field, true); - return field; - } - - public static EO createProtectedCaseInsensitiveNotNull(final String apiName, final String label) { - final EO field = createNotNull(apiName, label); - AttributeElementDAO.setIsCaseInsensitive(field, true); - AttributeElementDAO.setIsProtected(field, true); - return field; - } - - - public static EO createNotNullCaseInsensitive(final String apiName, final String label) { - final EO field = createNotNull(apiName, label); - AttributeElementDAO.setIsCaseInsensitive(field, true); - return field; - } - - /** - * Given a field element, returns the Java Class as denoted by EODataType - * for the field. This is useful if you need to know what sort of a class the field - * is expected to provide. - * - * @param field - * @return - */ - public static Class getTypeClass(final EO field) { - return EODataType.getType(EODataType.valueOf(AttributeElementDAO.getType(field))); - } - - public static EO addNotNullValidator(final EO field) { - AttributeElementDAO.getValidators(field).add(ValidatorNotEmptyElementDAO.create()); - return field; - } -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/ElementUtil.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/util/ElementUtil.java deleted file mode 100644 index e2b1c82f6321283cfebb60ffc92303382b44a6d6..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/ElementUtil.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema.util; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.eo.schema.AttributeElementDAO; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.LoopElementDAO; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -/** - * Utility class for interacting with Elements. - * - * @author Alex Leigh - */ -public final class ElementUtil { - public static String API_NAME = ElementElementDAO.API_TYPE; - - public static EO create(final String apiName) { - final EO eo = ElementElementDAO.create(); - ElementElementDAO.setEoType(eo, apiName); - return eo; - } - - /** - * Set the protected status of all fields in element to true. - * - * @param element - */ - public static void protectAll(final EO element) { - for (final EO field : ElementElementDAO.getAttributes(element)) { - if (!AttributeElementDAO.assertType(field)) - continue; - AttributeElementDAO.setIsProtected(field, true); - } - } - - public static void addField(final EO eo, final EO field) { - ElementElementDAO.getAttributes(eo).add(field); - } - - /** - * Returns true if this element only contains fields, otherwise, returns false. - * - * @param element - * @return - */ - public static boolean containsOnlyFields(final EO element) { - final EOLoop fields = ElementElementDAO.getAttributes(element); - return fields.onlyContains(AttributeUtil.API_NAME); - } - - /** - * Return field/loop of the given API name from the given element. If the element does not - * contain any fields, or a field by that API name is not found, null is returned. - * - * @param element - * @param apiName - * @return - */ - public static EO getField(final EO element, final String apiName) { - final EOLoop fields = ElementElementDAO.getAttributes(element); - if (fields == null) return null; - - // Try the fields first - Iterator it = fields.iterator(AttributeElementDAO.API_TYPE); - while (it.hasNext()) { - final EO field = it.next(); - if (AttributeElementDAO.getEoType(field).equals(apiName)) - return field; - } - - // Then try the loops - it = fields.iterator(LoopElementDAO.API_TYPE); - while (it.hasNext()) { - final EO field = it.next(); - if (LoopElementDAO.getEoType(field).equals(apiName)) - return field; - } - - // Nothing found? Too bad, so sad. - - return null; - } - - /** - * Returns a Set containing the API names for every field within - * the given element. Only API names for Fields are returns, not Loops or any - * other kinds of constructs. - * - * @param element - * @return - */ - public static Map getFieldKeys(final EO element) { - - final HashMap names = new HashMap<>(); - - for (final EO field : ElementElementDAO.getAttributes(element)) { - if (!AttributeElementDAO.assertType(field)) - continue; - final Class c = AttributeUtil.getTypeClass(field); - names.put(AttributeElementDAO.getEoType(field), c); - } - - return names; - } - - /** - * Return the first field in the element. Loops and other types are ignored. - * - * @param element - * @return - */ - public static EO getFirstField(final EO element) { - final EOLoop fields = ElementElementDAO.getAttributes(element); - if (fields == null) return null; - - // Try the fields first - Iterator it = fields.iterator(AttributeElementDAO.API_TYPE); - if (it.hasNext()) { - return it.next(); - } - - return null; - } -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/FixedChoiceUtil.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/util/FixedChoiceUtil.java deleted file mode 100644 index c02d4cfe1643b63e03aa38641b60122d2c098e87..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/FixedChoiceUtil.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema.util; - -import lc.eo.EO; -import lc.eo.schema.AttributeElementDAO; -import lc.eo.schema.FixedChoiceElementDAO; - -/** - * Utility class for interacting with Fixed Choice elements. - * - * @author Alex Leigh - */ -public final class FixedChoiceUtil { - public static EO create(final String value, final String label) { - final EO eo = FixedChoiceElementDAO.create(); - FixedChoiceElementDAO.setValue(eo, value); - AttributeElementDAO.appendLabel(eo, TextUtil.defaultLabel(label)); - return eo; - } -} diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/LoopUtil.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/util/LoopUtil.java deleted file mode 100644 index 698a175fa2d24db225c44eba9ff2ad21e1ac6367..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/LoopUtil.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema.util; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.eo.schema.AcceptTypeElementDAO; -import lc.eo.schema.LoopElementDAO; - -/** - * Utility class for interacting with loop elements. - * - * @author Alex Leigh - */ -public final class LoopUtil { - public static String API_NAME = LoopElementDAO.API_TYPE; - public static String KEY_LABEL = "label"; - - public static EO create(final String apiName, final String label, final String[] acceptTypes) { - final EO eo = new EO(API_NAME); - eo.setValue(LoopElementDAO.KEY_EOTYPE, apiName); - eo.setValue(KEY_LABEL, label); - - final EOLoop ats = LoopElementDAO.getAcceptTypes(eo); - - for (final String s : acceptTypes) { - final EO accept = AcceptTypeElementDAO.create(); - AcceptTypeElementDAO.setElementApiName(accept, s); - ats.add(accept); - } - return eo; - } - - public static EO create(final String apiName, final String label) { - return create(apiName, label, new String[]{}); - } - - /** - * Returns the first acceptable type for this loop. - * - * @param loopSchema - * @return - */ - public static String getFirstAcceptType(EO loopSchema) { - EOLoop acceptTypes = LoopElementDAO.getAcceptTypes(loopSchema); - return AcceptTypeElementDAO.getElementApiName(acceptTypes.get(0)); - } - -} diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/SchemaUtil.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/util/SchemaUtil.java deleted file mode 100644 index 78993cb8e5b76d5eb6af94c1565068fa5466ec89..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/SchemaUtil.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema.util; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.SchemaElementDAO; -import lc.eo.schema.TextElementDAO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.UUID; - -/** - * Previously the schema contained a pointer to the root element. In the modern incarnation the root element - * always has the same API name as the schema itself, and therefore can always be inferred. This came about because there - * was seldom/never a practical situation where they needed to be different. - * - * @author Alex Leigh - */ -public final class SchemaUtil { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaUtil.class); - public static String API_KEY = SchemaElementDAO.API_TYPE; - public static String KEY_ELEMENTS = "elements"; - // The magical schema ID. This is a global constant. - public static UUID SCHEMA_ID = UUID.fromString("0684fb60-16a9-11e4-8c21-0800200c9a66"); - - public static EO createLabelField(String fieldName, String fieldDesc) { - return LoopUtil.create(fieldName, fieldDesc, new String[]{TextElementDAO.API_TYPE}); - } - - public static EO createLabelField() { - return createLabelField("label", "Label"); - } - - @Deprecated - public static EO create() { - final EO eo = new EO(API_KEY); - eo.setValue(KEY_ELEMENTS, new EOLoop()); - return eo; - } - - public static EO getRootElement(final EO schema) { - logger.debug("Searching for root element in: {}", schema); - return getElement(schema, SchemaElementDAO.getEoType(schema)); - } - - public static EO getElement(final EO schema, final String apiName) { - for (final EO element : SchemaElementDAO.getElements(schema)) { - if (ElementElementDAO.getEoType(element).equals(apiName)) - return element; - } - return null; - } - - public static EO create(final String apiName) { - final EO eo = SchemaElementDAO.create(); - SchemaElementDAO.setEoType(eo, apiName); - return eo; - } - - - public static void addElement(final EO eo, final EO element) { - EOLoop loop = (EOLoop) eo.getValue(KEY_ELEMENTS); - if (loop == null) { - loop = new EOLoop(); - eo.setValue(KEY_ELEMENTS, loop); - } - loop.add(element); - } -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/TextUtil.java b/java/lc-eo-schema/src/main/java/lc/eo/schema/util/TextUtil.java deleted file mode 100644 index c5099d236857c5ea2e782b552603097eb58fccc0..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/java/lc/eo/schema/util/TextUtil.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.schema.util; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.eo.schema.TextElementDAO; - -import java.util.Locale; - -/** - * Utility class for interacting with Text elements. - * - * @author Alex Leigh - */ -public class TextUtil { - public static final Locale defaultLocale = Locale.ENGLISH; - - public static String getDefaultText(EOLoop loop) { - return getText(loop, defaultLocale); - } - - - public static EO defaultLabel(final String text) { - final EO label = TextElementDAO.create(); - TextElementDAO.setText(label, text); - TextElementDAO.setLocale(label, defaultLocale); - return label; - } - - /** - * Given a loop of TextElement EOs, return the one that matches the given locale. - * - * @param loop - * @return - */ - public static String getText(EOLoop loop, Locale locale) { - for (EO text : loop) { - if (!TextElementDAO.assertType(text)) - continue; - if (locale.equals(TextElementDAO.getLocale(text))) - return TextElementDAO.getText(text); - } - - for (EO text : loop) { - if (!TextElementDAO.assertType(text)) - continue; - if (defaultLocale.equals(TextElementDAO.getLocale(text))) - return TextElementDAO.getText(text); - } - - return null; - } - - public static Locale getDefaultLocale() { - return defaultLocale; - } - - public static String getLabelValueString(EO src, String key, Locale locale) { - EOLoop loop = src.getValueLoop(key); - if (loop != null) { - return getText(loop, locale); - } - return null; - } -} \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/resources/lc/eo/schema/ECMA5.vm b/java/lc-eo-schema/src/main/resources/lc/eo/schema/ECMA5.vm deleted file mode 100644 index 0f4461e788574744971856bfeae23b4e7ac873ef..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/resources/lc/eo/schema/ECMA5.vm +++ /dev/null @@ -1,48 +0,0 @@ -${ecmaPackage}.${javaClass} = {}; - -${ecmaPackage}.${javaClass}.eoType = "${element.getValue("eoType")}"; - -#foreach($i in ${attributes}) - ${ecmaPackage}.${javaClass}.KEY_${generator.toUpperCase(${i.getValue("eoType")})} = "${i.getValue("eoType")}"; -#end - -${ecmaPackage}.${javaClass}.create = function() { -return {'_type': '${element.getValue("eoType")}'}; -}; - -${ecmaPackage}.${javaClass}.assertType = function(eo) { -return ${ecmaPackage}.${javaClass}.eoType === eo['_type']; -}; - -#foreach($i in ${attributes}) - -/* $i */ - - #if(${generator.inferType($i)} == "EOLoop") - ${ecmaPackage}.${javaClass}.append${generator.capitalize(${i.getValue("eoType")})} = function(eo, label) { - var loop = eo[(${ecmaPackage}.${javaClass}.KEY_${generator.toUpperCase(${i.getValue("eoType")})})]; - loop.add(label); - }; - #end - - ${ecmaPackage}.${javaClass}.get${generator.capitalize(${i.getValue("eoType")})} = function(eo) { - #if(${generator.inferType($i)} == "EOLoop") - var o = eo[(${ecmaPackage}.${javaClass}.KEY_${generator.toUpperCase(${i.getValue("eoType")})})]; - if(o==null) { - o = new EOLoop(); - eo[(KEY_${generator.toUpperCase(${i.getValue("eoType")})}]=o; - } - return o; - #else - if(!${ecmaPackage}.${javaClass}.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + ${ecmaPackage}.${javaClass}.eoType + "]"; - return eo[(${ecmaPackage}.${javaClass}.KEY_${generator.toUpperCase(${i.getValue("eoType")})})]; - #end - -}; - - ${ecmaPackage}.${javaClass}.set${generator.capitalize(${i.getValue("eoType")})} = function(eo, value) { -if(!${ecmaPackage}.${javaClass}.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + ${ecmaPackage}.${javaClass}.eoType + "]"; -eo[${ecmaPackage}.${javaClass}.KEY_${generator.toUpperCase(${i.getValue("eoType")})}]=value; -}; - -#end \ No newline at end of file diff --git a/java/lc-eo-schema/src/main/resources/lc/eo/schema/JavaDAO.vm b/java/lc-eo-schema/src/main/resources/lc/eo/schema/JavaDAO.vm deleted file mode 100644 index abae90f4bb661150b679fc734cc184b64f50bc06..0000000000000000000000000000000000000000 --- a/java/lc-eo-schema/src/main/resources/lc/eo/schema/JavaDAO.vm +++ /dev/null @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2014-2022, by Alex Leigh. -* All rights reserved. -* -* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE -* The copyright notice above does not evidence any -* actual or intended publication of such source code. -*/ - -package $javaPackage; - -import lc.eo.EO; -import lc.eo.EOLoop; -import java.io.Serializable; -import java.time.Instant; -import java.util.UUID; - -/** -* This is a dynamically generated DAO class for accessing objects within an ESP graph. This class -* has been generated by DAOGenerator and should not be modified. -* -* @author DAOGenerator (synthetically generated class) -*/ -public final class ${javaClass} { -public static final String API_TYPE = "${element.getValue("eoType")}"; - -public static EO create() { -EO eo = new EO(API_TYPE); -return eo; -} - -public static boolean assertType(final EO eo) { -return eo.getType().equals(API_TYPE); -} - -#foreach($i in ${attributes}) -public static final String KEY_${generator.toUpperCase(${i.getValue("eoType")})} = "${i.getValue("eoType")}"; -#end - -public static String apiType(final EO eo) { -return eo.getType(); -} - -#foreach($i in ${attributes}) - -/* $i */ - - #if(${generator.inferType($i)} == "EOLoop") - public static void append${generator.capitalize(${i.getValue("eoType")})}(EO eo, EO label) { - EOLoop loop = eo.${generator.inferAccessor($i)}(KEY_${generator.toUpperCase(${i.getValue("eoType")})}); - loop.add(label); - } - #end - - #if(${generator.inferType($i)} == "java.math.BigDecimal") - public static void set${generator.capitalize(${i.getValue("eoType")})}(final EO eo, int value) { - if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, value); - } - - public static void set${generator.capitalize(${i.getValue("eoType")})}(final EO eo, float value) { - if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, value); - } - - public static void set${generator.capitalize(${i.getValue("eoType")})}(final EO eo, double value) { - if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, value); - } - - public static void set${generator.capitalize(${i.getValue("eoType")})}(final EO eo, long value) { - if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, value); - } - - public static void set${generator.capitalize(${i.getValue("eoType")})}(final EO eo, short value) { - if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, value); - } - #end - -public static ${generator.inferType($i)} get${generator.capitalize(${i.getValue("eoType")})}(EO eo) { - #if(${generator.inferType($i)} == "EOLoop") - EOLoop o = eo.${generator.inferAccessor($i)}(KEY_${generator.toUpperCase(${i.getValue("eoType")})}); - if(o==null) { - o = new EOLoop(); - eo.setValue(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, o); - } - return o; - #else - if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.${generator.inferAccessor($i)}(KEY_${generator.toUpperCase(${i.getValue("eoType")})}); - #end -} - -public static void set${generator.capitalize(${i.getValue("eoType")})}(final EO eo, ${generator.inferType($i)} value) { -if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); -eo.setValue(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, value); -} - -public static void set${generator.capitalize(${i.getValue("eoType")})}Label(final EO eo,final String label) { -if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); -eo.setLabel(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, label); -} - -public static void getLabelOrValue${generator.capitalize(${i.getValue( - "eoType")})}(final EO eo, ${generator.inferType($i)} value) { -if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); -eo.getLabelOrValue(KEY_${generator.toUpperCase(${i.getValue("eoType")})}); -} - -public static void setIfUnset${generator.capitalize(${i.getValue( - "eoType")})}(final EO eo, ${generator.inferType($i)} value) { -if(!assertType(eo)) throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); -eo.setValueIfUnset(KEY_${generator.toUpperCase(${i.getValue("eoType")})}, value); -} - -#end - -} \ No newline at end of file diff --git a/java/lc-eo-yaml/LICENSE.md b/java/lc-eo-yaml/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-eo-yaml/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-eo-yaml/build.gradle b/java/lc-eo-yaml/build.gradle deleted file mode 100644 index 9bfa399416291510d0a2025b3c7d403456c51327..0000000000000000000000000000000000000000 --- a/java/lc-eo-yaml/build.gradle +++ /dev/null @@ -1,19 +0,0 @@ - -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-eo') - api 'org.yaml:snakeyaml:1.29' - testImplementation group: 'junit', name: 'junit', version: '4.12' -} diff --git a/java/lc-eo-yaml/src/main/java/lc/eo/yaml/YamlInput.java b/java/lc-eo-yaml/src/main/java/lc/eo/yaml/YamlInput.java deleted file mode 100644 index 9142b73f578ff9ccb4902509efbcd11bcbe89114..0000000000000000000000000000000000000000 --- a/java/lc-eo-yaml/src/main/java/lc/eo/yaml/YamlInput.java +++ /dev/null @@ -1,64 +0,0 @@ -package lc.eo.yaml; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.yaml.snakeyaml.Yaml; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.Serializable; -import java.util.Map; -import java.util.Set; - -/** - * Implements a YAML parser for {@link EO} objects. - *

- * This is not a streaming parser; the entire content of the YAML will be read into memory on construction. - * - * @author Alex Leigh - */ -public class YamlInput implements Closeable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(YamlInput.class); - private final EOLoop loop; - private int position = 0; - - public YamlInput(InputStream is) { - Yaml yaml = new Yaml(); - Map parsed = yaml.load(is); - loop = new EOLoop(); - convert(loop, parsed); - } - - public EO readEo() { - if (position >= loop.size()) return null; - EO obj = loop.get(position); - position++; - return obj; - } - - @Override - public void close() throws IOException { - // Do nothing - } - - public static void convert(EOLoop dst, Map src) { - for (Map.Entry entry : src.entrySet()) { - EO child = new EO(); - dst.add(child); - Object value = entry.getValue(); - // logger.info("Found type: {}", entry.getValue().getClass()); - - // In YAML, a value may be a map, an array, or other. - - if (!(value instanceof Map) && !(value instanceof Set)) { - child.setValue(entry.getKey(), (Serializable) value); - } else { - EOLoop childLoop = child.getValueLoop(entry.getKey()); - convert(childLoop, (Map) value); - } - } - } -} diff --git a/java/lc-eo/.gitignore b/java/lc-eo/.gitignore deleted file mode 100644 index ede7310f5aa22a8bb16f7393dedac5d9b0cba2c9..0000000000000000000000000000000000000000 --- a/java/lc-eo/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -kabe.log -velocity.log -.DS_Store -statistic.xml -.gradle -/*/build/ -/build/ -gradle-app.setting -!gradle-wrapper.jar -.gradletasknamecache -.idea/ -*.iml -out/ -.cache -node_modules -/*/.idea -.vi -/*/graph.eo -.vai -graph.bak -.idea -tests.vai -vds.log -hosts.json -tests.vai.old \ No newline at end of file diff --git a/java/lc-eo/LICENSE.md b/java/lc-eo/LICENSE.md deleted file mode 100644 index 226d1f25b12e58e21c29a6c1869d1ec05095d443..0000000000000000000000000000000000000000 --- a/java/lc-eo/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-eo/build.gradle b/java/lc-eo/build.gradle deleted file mode 100644 index 5c5958d6a0ec7c0ccc985af2b975150fd25f479f..0000000000000000000000000000000000000000 --- a/java/lc-eo/build.gradle +++ /dev/null @@ -1,62 +0,0 @@ - -plugins { - id 'java' - id 'java-library' - id 'maven-publish' -} - -// Because of Android -sourceCompatibility = JavaVersion.VERSION_11 -targetCompatibility = JavaVersion.VERSION_11 - -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-mecha') - api 'commons-lang:commons-lang:2.6' - testImplementation group: 'junit', name: 'junit', version: '4.12' -} - -publishing { - publications { - mavenJava(MavenPublication) { - artifactId = 'leigh-eo' - from components.java - versionMapping { - usage('java-api') { - fromResolutionOf('runtimeClasspath') - } - usage('java-runtime') { - fromResolutionResult() - } - } - pom { - name = 'LEIGH Enterprise Objects' - description = 'Enterprise Objects' - url = 'http://leigh-co.com' - licenses { - license { - name = 'COMMERCIAL' - url = 'http://leigh-co.com' - } - } - developers { - developer { - id = 'aleigh' - name = 'Alex Leigh' - email = 'a@leigh-co.com' - } - } - } - } - } - repositories { - maven { - url = "$buildDir/repos/dist" - } - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/EO.java b/java/lc-eo/src/main/java/lc/eo/EO.java deleted file mode 100644 index 35d84dd37feda85465a6f9bc4c9023a0ae16aac3..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/EO.java +++ /dev/null @@ -1,743 +0,0 @@ -/* - * Copyright (c) 2004-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo; - -import lc.mecha.lang.NotImplementedException; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.math.IntIntervals; -import lc.mecha.util.Snavig; -import org.apache.commons.lang.StringUtils; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.net.Inet4Address; -import java.net.Inet6Address; -import java.time.Duration; -import java.time.Instant; -import java.util.*; -import java.util.regex.Pattern; - -/** - * Design Considerations: - *

- * An important philosophy of the EO is that the internal data-type (returned from getValue()) should - * not be relied on. For example, serializing an EO to a store and then retrieving it may change the internal - * data-types. Code that requires a given data-type should always call the type-specific getter so that (if necessary) - * type conversion can automatically be performed. For example, getValueInstant() instead of - * getValue(). - *

- * When a String representation of a value is required, call getValueString() instead of - * getValue().toString() as the EO implementation has specific string conversion mechanics to ensure - * the returned string can be properly type-converted by the EO class in the future. - *

- * The EO intentionally has no understanding of the meaning of the data it stores, and this extends to the content-types - * of that data. For example, if a given attribute contains a UUID, there is no intrinsic way to know whether that UUID - * refers, to a UUID or a binary reference of that ID, or to a value that should have been a string but the caller - * provided a UUID anyways. - *

- * It is an exercise for the caller to keep track of their business data meaning; this can either be done through - * schemas (as provided by ESP) or through other techniques such as encoding data-types or flags into the EO itself. - * - * We took from our environment and made from it something more. - *

- * It is a requirement that hashCode() and equals() be the same regardless of the contents. - * - * @author Alex Leigh - */ - -// TODO: Use loss of precision calculations from TypeConverter to improve class mechanics -public class EO implements Serializable, Cloneable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EO.class); - private static final long serialVersionUID = 18; - private static final String WEAK_META_PREFIX = "*"; - private static final String STRONG_META_PREFIX = "#"; - private static final String META_LABEL_KEY = "label"; - private static String pathPattern = Pattern.quote("/"); - private String typeName; - private final HashMap data = new HashMap<>(); - private transient EditTracker editTracker; - private HashMap> meta; - private final UUID id; - - public EO(String apiType, UUID id) { - this.typeName = apiType; - this.id = id; - - } - - /** - * Initialize a new element map with the given type name. The type name has no particular - * meaning to the EO implementation itself, but, maps the definition of the EO to an external - * schema. - */ - public EO(final String apiType) { - this.typeName = apiType; - id = UUID.randomUUID(); - } - - public EO() { - typeName = null; - id = UUID.randomUUID(); - } - - public EO(UUID id) { - typeName = null; - this.id = id; - } - - public UUID getId() { - return id; - } - - public EditTracker getEditTracker() { - return editTracker; - } - - /** - * Set the edit tracker for this EO. This will have the side-effect of setting the edit tracker for any - * loops contained within the EO. - *

- * Limitations - *

- * If an edit tracker is used, then the graph must be acyclic. - */ - public EO setEditTracker(EditTracker editTracker) { - assert (editTracker != null); - this.editTracker = editTracker; - editTracker.objectAdded(this); - for (Map.Entry entry : data.entrySet()) { - if (entry.getValue() instanceof EOLoop) { - ((EOLoop) entry.getValue()).setEditTracker(editTracker); - for (EO childObj : ((EOLoop) entry.getValue())) { - editTracker.loopAdded(((EOLoop) entry.getValue()), childObj); - } - } - } - return this; - } - - /** - * Remove the edit tracker for this EO. This will call objectRemoved() on the edit tracker. - */ - public void removeEditTracker() { - assert (this.editTracker != null); - - for (Map.Entry val : data.entrySet()) { - if (val.getValue() instanceof EOLoop) { - ((EOLoop) val.getValue()).removeEditTracker(); - } - } - - this.editTracker.objectRemoved(this); - this.editTracker = null; - } - - public void setApiType(String type) { - this.typeName = type; - } - - /** - * Return the meta map for the given apiName, if it exists, otherwise, return null>. - * If create is specified as true then the meta map will be created - * if it does not already exist. - */ - private HashMap getMetaMap(String key, boolean create) { - if (meta == null) { - if (create) { - meta = new HashMap<>(); - } else { - return null; - } - } - - HashMap attrMeta = meta.get(key); - if (attrMeta != null) { - return attrMeta; - } - - if (create) { - attrMeta = new HashMap<>(); - meta.put(key, attrMeta); - return attrMeta; - } - - return null; - } - - private HashMap getMetaMap(String key) { - return getMetaMap(key, false); - } - - /** - * Set a meta value for the given attribute. If the given attribute is removed from the EO, then all meta - * values for that attribute are also removed. - *

- * If the isWeak flag is set to true, then the meta value has special properties. If the attribute to which this - * meta value belongs is changed, the weak value will be removed. - */ - public void setMetaValue(String apiName, String metaKey, Serializable value, boolean isWeak) { - logger.debug("setMetaValue(): [apiName: {}] [metaKey: {}] [value: {}] [isWeak: {}]", - apiName, metaKey, value, isWeak); - if (meta == null) meta = new HashMap<>(); - HashMap attMeta = meta.get(apiName); - if (attMeta == null) { - attMeta = new HashMap<>(); - meta.put(apiName, attMeta); - } - - if (isWeak) { - attMeta.remove(STRONG_META_PREFIX + metaKey); - attMeta.put(WEAK_META_PREFIX + metaKey, value); - } else { - attMeta.remove(WEAK_META_PREFIX + metaKey); - attMeta.put(STRONG_META_PREFIX + metaKey, value); - } - } - - public Map> getMeta() { - return meta; - } - - /** - * Return the meta value, if any, for the given attribute. Returns null if there is no such - * meta value. - */ - public Serializable getMetaValue(String apiName, String metaKey) { - HashMap attMeta = getMetaMap(apiName); - if (attMeta == null) return null; - Serializable s = attMeta.get(STRONG_META_PREFIX + metaKey); - if (s != null) return s; - return attMeta.get(WEAK_META_PREFIX + metaKey); - } - - /** - * Remove all meta values for the given attribute. - */ - public void removeAllMeta(String apiName) { - if (meta != null) { - meta.remove(apiName); - } - } - - /** - * Add all the provides metaValues values to the meta values already stored - * in this EO for the given attribute. The keys for the provided meta values are expected - * to have already been prefixed for weak status. - */ - public void setAllMeta(String apiName, Map metaValues) { - HashMap attrMeta = getMetaMap(apiName, true); - attrMeta.putAll(metaValues); - } - - /** - * Remove all weak meta values for the given attribute. - */ - public void removeWeakMeta(String apiName) { - HashMap attMeta = getMetaMap(apiName); - if (attMeta == null) return; - - // We want to remove every key that begins with the weak prefix - ArrayList toRemove = new ArrayList<>(); - for (String metaKey : attMeta.keySet()) { - if (metaKey.startsWith(WEAK_META_PREFIX)) toRemove.add(metaKey); - } - attMeta.keySet().removeAll(toRemove); - } - - public boolean containsKey(String key) { - return data.containsKey(key); - } - - /** - * Returns true if this EO is - or is compatible with - the provided type. - */ - public boolean isType(String apiName) { - return StringUtils.equals(typeName, apiName); - } - - /** - * Provides a deep-copy of the given EO. - * - * @return - */ - public Object clone() { - throw new NotImplementedException(); - } - - /** - * Return a value from the EO while attempting to match the type of another object. This performs necessary - * type-conversions on the object stored internally to the EO. - *

- * If obj is null, the natural value from the EO will be returned. - */ - public Serializable getMatchingType(final String key, final Serializable obj) { - final Serializable v = getValue(key); - - // If we don't have a value, we can't type-convert it - if (v == null) - return null; - - // If they did not provide a value, we can't type-convert ours - if (obj == null) - return v; - - // Maybe they already match. - if (v.getClass().isAssignableFrom(obj.getClass())) { - return v; - } - - if (obj instanceof String) { - return getValueString(key); - } - - if (obj instanceof UUID) { - return getValueUUID(key); - } - - if (obj instanceof Instant) { - return getValueInstant(key); - } - - if (obj instanceof Date) { - return getValueDate(key); - } - - throw new IllegalArgumentException("Unable to match types. " + v.getClass() + " -> " + obj.getClass()); - } - - /** - * Returns true if the EO is multi-dimensional. The EO is considered multi-dimensional if it contains - * a loop. - * - * @return - */ - public boolean isMultiDimensional() { - for (final Map.Entry entry : data.entrySet()) { - final Object v = entry.getValue(); - if (v instanceof EOLoop) return true; - } - - return false; - } - - /** - * Clear all the values stored in this EO, including errors and global errors. The schema type - * for the EO will be preserved. - */ - public void clear() { - data.clear(); - if (meta != null) meta.clear(); - } - - public String getValueString(final String key, final String def) { - String x = getValueString(key); - if (StringUtils.isEmpty(x)) return def; - return x; - } - - /** - * Return the value in string form. - *

- * If the value is null, null is returned. - *

- * If the value is a Date, the time is returned in ISO format (rather than Date format). - */ - public String getValueString(final String key) { - return Snavig.convertToString(data.get(key)); - } - - public String getValueStringLowercase(final String key) { - return Snavig.convertToLowercaseString(data.get(key)); - } - - public Pattern getValuePattern(final String key) { - return Snavig.convertToPattern(data.get(key)); - } - - /** - * Identical to getValue() and provided for compatibility with 3rd party libraries, such as Velocity. - */ - public Serializable get(String key) { - return getValue(key); - } - - /** - * Returns null if there are no global errors. - * - * @return - */ - public List getGlobalErrors() { - // TODO: Implement - throw new NotImplementedException(); - } - - protected HashMap getData() { - return data; - } - - public Serializable remove(final String key) { - if (meta != null) meta.remove(key); - return data.remove(key); - } - - /** - * Returns true if the property exists and contains a positive boolean. Otherwise, - * returns negative, including when the property is unset in the object. - */ - public boolean getValueBoolean(final String key) { - return Snavig.convertToBoolean(data.get(key)); - } - - public Integer getValueInteger(final String key) { - return Snavig.convertToInteger(data.get(key)); - } - - public Double getValueDouble(final String key) { - return Snavig.convertToDouble(data.get(key)); - } - - public Float getValueFloat(final String key) { - return Snavig.convertToFloat(data.get(key)); - } - - public Instant getValueInstant(final String key) { - return Snavig.convertToInstant(data.get(key)); - } - - public BigDecimal getNumber(final String key) { - return Snavig.convertToBigDecimal(data.get(key)); - } - - public Duration getValueDuration(final String key) { - return Snavig.convertToDuration(data.get(key)); - } - - public UUID getValueUUID(final String key) { - return Snavig.convertToUUID(data.get(key)); - } - - public IntIntervals getValueIntIntervals(final String key) { - return Snavig.convertToIntIntervals(data.get(key)); - } - - public Date getValueDate(final String key) { - return Snavig.convertToDate(data.get(key)); - } - - /** - * For the given apiName, this method returns the associated label as stored in the "label" meta attribute. If - * a label is not available, then the string form for the value is returned instead. - */ - public String getLabelOrValue(final String key) { - String label = getMetaValueString(key, META_LABEL_KEY); - return label != null ? label : getValueString(key); - } - - public void setLabel(final String key, final String label) { - setMetaValue(key, META_LABEL_KEY, label, true); - } - - public EODataType getValueEspType(final String key) { - final Object value = data.get(key); - if (value == null) return null; - if (value instanceof EODataType) return (EODataType) value; - return EODataType.valueOf(String.valueOf(value)); - } - - // Be a wolf - - public void recurse(EOLoop dst, final String path) { - recurse(dst, path.split(pathPattern), 0); - } - - private void recurse(EOLoop dst, final String[] path, final int index) { - final Object value = data.get(path[index]); - - logger.debug("recurse(). [idx: {}] [path: {}] [value: {}]", index, path, value); - - if (!(value instanceof EOLoop)) return; - - int next = index + 1; - - if (next == path.length) { - dst.addAll((EOLoop) value); - return; - } - - for (EO eo : (EOLoop) value) { - eo.recurse(dst, path, next); - } - } - - /** - * Returns the value as a loop. If the value is null, a new loop will be created. If a value is set, - * but is not a loop, a {@link ClassCastException} will be thrown. - */ - public EOLoop getValueLoop(final String key) { - Serializable debug = data.get(key); - if (debug != null && !(debug instanceof EOLoop)) { - logger.warn("found bad value. [key: {}] [data: {}]", key, debug); - } - - EOLoop value = (EOLoop) data.get(key); - if (value == null) { - value = new EOLoop(); - value.setEditTracker(editTracker); - value.setParent(this, key); - data.put(key, value); - } - return value; - } - - public EO addAll(EO src) { - for (String key : src.getKeys()) { - setValue(key, src.getValue(key)); - } - return this; - } - - public void addGlobalError(final String msg) { - throw new NotImplementedException(); - } - - /** - * Set an error message into the EO for the given key. The error message is presumed to be locale-specific. - * The same EO is returned, allowing chaining of put operations. - */ - public EO putError(final String key, final String text) { - throw new NotImplementedException(); - } - - /** - * Indicate that this value is changing to the newly provided value. This method will only call the event - * listener if the value actually changes. - */ - private void valueUpdating(String key, Serializable oldValue, Serializable newValue, EOListener listener) { - if (editTracker != null) { - // We only dirty the attribute if it is actually changing here. - if (!Objects.equals(oldValue, newValue)) { - editTracker.attributeUpdate(this, key, oldValue, newValue, listener); - } - } - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - EO eo = (EO) o; - return id.equals(eo.id); - } - - @Override - public int hashCode() { - return Objects.hash(id); - } - - /** - * Set the given value into this EO. - *

- * Although this method takes {@link Serializable} for a value, this is not a guarantee that any Serializable - * class is compatible with any use-case, such as loading/storing via database adapters, serializing/deserializing - * to various encodings such as JSON, etc. - *

- * The value may not be an object, natural array or other structure. - * - * @param key The key to set. - * @param value The value to set the key to. - * @param listener - * @return - */ - public EO setValue(final String key, final Serializable value, EOListener listener) { - if (value instanceof EO) - throw new IllegalArgumentException("EO cannot be set as a value in an EO"); - - Serializable oldValue = data.get(key); - - if (value == null) { - data.remove(key); - valueUpdating(key, oldValue, value, listener); - return this; - } - - if (value instanceof String) { - data.put(key, value); - valueUpdating(key, oldValue, value, listener); - return this; - } - - if (value instanceof EOLoop) { - if (editTracker != null) ((EOLoop) value).setEditTracker(editTracker); - ((EOLoop) value).setParent(this, key); - } - - data.put(key, value); - removeWeakMeta(key); - valueUpdating(key, oldValue, value, listener); - - return this; - } - - /** - * Set a value into the EO for the given key. The same EO is returned allowing changing of put operations. - *

- * It is illegal to set an EO into an EO as a value, and attempting to do so will result in an - * IllegalArgumentException being thrown. Only other serializable classes and - * the EOLoop class are legal. - *

- * If a String is provided, and the string is empty, then this method will not add the - * value to the EO. If the value is null, then the value will be removed from the EO. Empty could include - * a string "" or a string consisting entirely of whitespace characters. - */ - public EO setValue(final String key, final Serializable value) { - return setValue(key, value, null); - } - - /** - * Set all the data elements in the provided object into this object. Returns this EO to the caller - * for the purpose of method chaining. This method does not copy the meta vvalues from the provided - * EO, to do that, use merge() instead. - */ - public EO setAll(EO obj) { - // TODO: This also needs to set the meta. - for (String key : obj.getKeys()) { - data.put(key, obj.get(key)); - } - return this; - } - - /** - * merge() works similarly to setAll() with the added mechanic that it copies - * the metadata from the provided obj as well. Returns this EO to the caller for the - * purpose of method chaining. - */ - public EO merge(EO obj) { - for (String key : obj.getKeys()) { - data.put(key, obj.get(key)); - HashMap metaAttr = obj.getMetaMap(key); - if (metaAttr != null) setAllMeta(key, metaAttr); - } - - logger.info("Merge: {} -> {}", obj, this); - return this; - } - - /** - * Set the provided value only if the key did not already exist in the EO. This is useful for fixing up - * default values. - */ - public boolean setValueIfUnset(final String key, final Serializable value) { - if (data.containsKey(key)) return false; - setValue(key, value); - return true; - - } - - /** - * Returns true if the given key is set in this EO and has a non-null value. - */ - public boolean contains(final String key) { - final Serializable o = data.get(key); - return o != null; - } - - /** - * Return the error string (if any is set) for the given key, or null if no error - * string has been set. - */ - public String getError(final String key) { - throw new NotImplementedException(); - } - - /** - * Return the value (if any is set) for the given key, or null if no value has been set. - */ - public Serializable getValue(final String key) { - return data.get(key); - } - - public boolean isEmpty(final String key) { - final Object o = data.get(key); - if (o == null) return true; - if (o instanceof String) { - return StringUtils.isEmpty((String) o); - } - return false; - } - - /** - * Return the value in the form of a Locale. If the value is provided as a String - * it should be in IETF BCP 47 format. Parsing the string is in accordance with the specification of - * Locale.forLanguageTag(). - */ - public Locale getValueLocale(final String key) { - return Snavig.convertToLocale(data.get(key)); - } - - public Inet4Address getInet4Address(final String key) { - return Snavig.convertToInet4Address(data.get(key)); - } - - public Inet6Address getInet6Address(final String key) { - return Snavig.convertToInet6Address(data.get(key)); - } - - public BigDecimal getValueBigDecimal(final String key) { - return Snavig.convertToBigDecimal(data.get(key)); - } - - /** - * Return the value in floating point format. If the value is not already a float, it will be converted - * using Float.parseFloat(). - */ - public Serializable getFloat(final String key) { - return Snavig.convertToFloat(key); - } - - /** - * Return the type name associated with this EO. - */ - - public String getType() { - return typeName; - } - - @Override - public String toString() { - return "EO{" + - "typeName='" + typeName + '\'' + - ", id=" + id + - ", data=" + data + - ", meta=" + meta + - '}'; - } - - public Set getKeys() { - return data.keySet(); - } - - public int size() { - return data.size(); - } - - /** - * Returns true if the given attribute contains an {@link EOLoop}. - */ - public boolean isValueLoop(String key) { - Serializable s = data.get(key); - if (s != null && s instanceof EOLoop) return true; - return false; - } - - public String getMetaValueString(String key, String keyDisplayValue) { - return Snavig.convertToString(getMetaValue(key, keyDisplayValue)); - } -} \ No newline at end of file diff --git a/java/lc-eo/src/main/java/lc/eo/EODataType.java b/java/lc-eo/src/main/java/lc/eo/EODataType.java deleted file mode 100644 index 67e6393173e31cfa0dcdbd625ff85920523cdbb2..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/EODataType.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.net.Inet4Address; -import java.net.Inet6Address; -import java.time.Instant; -import java.util.Locale; -import java.util.UUID; - -/** - * Field datatypes which are primarily used to hint to end-user interfaces as to the best - * way to display the field. They should not be confused with the actual data-type of a given - * field. For example, UUID fields typically would use the string field type. - * - * @author Alex Leigh - */ -public enum EODataType { - string, password, instant, hyperlink, loop, bool, object, uuid, locale, - ipv4, ipv6, number; - - private static final Logger logger = LoggerFactory.getLogger(EODataType.class); - - /** - * Return the name of the method which would be used on a DAO to access a field of the given type. - * - * @param type - * @return - */ - public static String getAccessor(final EODataType type) { - if (type == null) { - logger.error("getAccessor(): null type provided. Defaulting to getValueString()"); - return "getValueString"; - } - - logger.debug("Type matching for: {}", type); - - switch (type) { - case string: - case password: - case hyperlink: - return "getValueString"; - case instant: - return "getValueInstant"; - case loop: - return "getValueLoop"; - case bool: - return "getValueBoolean"; - case object: - return "getValue"; - case uuid: - return "getValueUUID"; - case locale: - return "getValueLocale"; - case ipv4: - return "getInet4Address"; - case ipv6: - return "getInet6Address"; - case number: - return "getNumber"; - } - throw new IllegalArgumentException("Unrecognized type"); - } - - /** - * Return the Java type which can be used to store the given value from the EO. This type is the same - * as would be assigned to a getter() for the value in a DAO. - */ - public static Class getType(EODataType type) { - if (type == null) { - logger.error("getType(): null type provided. Defaulting to string."); - type = EODataType.string; - } - - logger.debug("Type matching for: {}", type); - - switch (type) { - case string: - case password: - case hyperlink: - return String.class; - case instant: - return Instant.class; - case loop: - return EOLoop.class; - case bool: - return Boolean.class; - case object: - return Serializable.class; - case uuid: - return UUID.class; - case locale: - return Locale.class; - case ipv4: - return Inet4Address.class; - case ipv6: - return Inet6Address.class; - case number: - return BigDecimal.class; - } - throw new IllegalArgumentException("Unrecognized type"); - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/EOListener.java b/java/lc-eo/src/main/java/lc/eo/EOListener.java deleted file mode 100644 index c56d5648ec746f4533ded3c2eb1e89ce7ce8e0db..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/EOListener.java +++ /dev/null @@ -1,7 +0,0 @@ -package lc.eo; - -import java.io.Serializable; - -public interface EOListener { - void valueUpdated(EO eo, String key, Serializable oldValue, Serializable newValue) throws Exception; -} diff --git a/java/lc-eo/src/main/java/lc/eo/EOLoop.java b/java/lc-eo/src/main/java/lc/eo/EOLoop.java deleted file mode 100644 index 2bb52a19d5ed59ea16b8c41bd3ae1d6fbeb94d73..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/EOLoop.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (c) 2004-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo; - -import lc.eo.util.EOFilteringIterator; -import lc.mecha.lang.NotImplementedException; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.Serializable; -import java.util.*; - -/** - * EOLoop acts as an ordered array containing EO objects. - * - * @author Alex Leigh - */ -public class EOLoop implements Serializable, Iterable { - private static final long serialVersionUID = 1960993024123977523L; - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EOLoop.class); - private ArrayList array; - private transient EditTracker editTracker; - private EO parent; - private String parentKey; - - public EOLoop(List eos) { - allocateStorage(); - // We have no edit tracker by definition, so we don't have to call what does not exist - array.addAll(eos); - } - - public EOLoop() { - // Intentionally Blank - } - - public static MechaLogger getLogger() { - return logger; - } - - public EOLoop clear() { - if (array != null) array.clear(); - return this; - } - - /** - * Return the edit tracker associated with this loop, if any. - */ - public EditTracker getEditTracker() { - return editTracker; - } - - public void removeEditTracker() { - assert (this.editTracker != null); - if (array != null) { - for (EO eo : array) { - eo.removeEditTracker(); - } - } - this.editTracker = null; - } - - /** - * Set the edit tracker for this loop. This will have the side-effect of also setting the edit tracker - * for all EOs contained within the loop. - */ - public void setEditTracker(EditTracker editTracker) { - assert (this.editTracker == null); - this.editTracker = editTracker; - - // We may not have storage yet, no big deal. - if (array != null) { - for (EO eo : array) { - eo.setEditTracker(editTracker); - } - } - } - - /** - * Returns the parent, if any, for this loop. - */ - public EO getParent() { - return parent; - } - - /** - * Set the parent for this loop. This is called automatically by the parent {@link EO} when the loop is set. - */ - public void setParent(EO parent, String parentKey) { - assert (parentKey != null); - assert (parent != null); - assert (this.parent == null); - assert (this.parentKey == null); - this.parent = parent; - this.parentKey = parentKey; - } - - /** - * Find the first EO from this loop which contains a key matching value. - * - * @since mk14 mod10 (CRYSTAL) - */ - public EO findFirst(String key, Serializable value) { - if (array != null) { - for (EO eo : array) { - Serializable s = eo.getValue(key); - if (s != null && s.equals(value)) return eo; - } - } - return null; - } - - public EOLoop clone() { - EOLoop l = new EOLoop(); - l.setEditTracker(editTracker); - l.addAll(array); - return l; - } - - /** - * Sort the loop using the given comparator. - */ - public void sort(Comparator comparator) { - if (editTracker != null) { - throw new NotImplementedException("Not implemented when edit tracker is set."); - } - array.sort(comparator); - } - - private void allocateStorage() { - if (array == null) array = new ArrayList<>(); - } - - /** - * Return the index of the given object in this loop, or -1 if it does not exist. - */ - public int indexOf(Object o) { - return array.indexOf(o); - } - - /** - * Returns true if the loop only contains EOs of the given type, otherwise, returns - * false. If the loop is empty, true is returned. - */ - public boolean onlyContains(String apiName) { - for (EO eo : array) { - if (!eo.isType(apiName)) return false; - } - return true; - } - - /** - * Return an iterator which will only return EOs compatible with the given type. - */ - public Iterator iterator(String apiType) { - return new EOFilteringIterator(array.iterator(), apiType); - } - - public String getParentKey() { - return parentKey; - } - - public EOLoop add(final EO value) { - allocateStorage(); - array.add(value); - if (editTracker != null) { - value.setEditTracker(editTracker); - editTracker.loopAdded(this, value); - } - - return this; - } - - public EOLoop addWithoutTracker(final EO value) { - allocateStorage(); - array.add(value); - return this; - } - - public void addAll(final Collection values) { - allocateStorage(); - // We do this instead of addAll() to ensure that the event receiver is called - for (EO eo : values) { - add(eo); - } - } - - public void addAll(EOLoop loop) { - for (EO eo : loop) add(eo); - } - - public void set(int index, EO eo) { - array.set(index, eo); - if (editTracker != null) { - editTracker.loopSet(this, eo, index); - } - } - - public EO remove(final int index) { - if (array == null) return null; - EO child = array.remove(index); - logger.debug("Removed EO: {}", child); - if (editTracker != null) editTracker.loopRemoved(this, child, index); - return child; - } - - public void remove(Collection toRemove) { - for (EO eo : toRemove) { - logger.debug("Removing EO: [index: {}]", array.indexOf(eo)); - remove(array.indexOf(eo)); - } - } - - public void remove(EO eo) { - remove(array.indexOf(eo)); - } - - // It's 2145h. She probably thinks I'm looking at midget porn instead of working. - - public int size() { - if (array == null) return 0; - return array.size(); - } - - public EO get(final int idx) { - if (array == null) return null; - return array.get(idx); - } - - public ArrayList getArray() { - return array; - } - - public void setArray(ArrayList array) { - this.array = array; - } - - @Override - public String toString() { - return "EOLoop{" + - "array=" + array + - "} "; - } - - @Override - public Iterator iterator() { - allocateStorage(); - return array.iterator(); - } - - /** - * Remove all the objects from this loop after the given index position. For example, given 0,1,2,3 calling - * with 1 will result in 2,3 being removed. - */ - public void removeAfter(int idx) { - if (idx >= array.size()) return; - - for (int i = array.size() - 1; i > idx; i--) { - remove(i); - } - } - - /** - * Move the given EO up in the list position. If the EO is already at the top of the list, no change will occur. - * If the EO is not in the list, a runtime exception is thrown. - * - * @param obj - */ - public void moveUp(EO obj) { - int i = array.indexOf(obj); - if (i == -1) throw new RuntimeException("EO not found in loop."); - if (i == 0) return; - Collections.swap(array, i, i - 1); - } - - /** - * Move the given EO down in the list position. If the EO is already at the bottom of the list, no change will - * occur. - *

- * If the EO is not in the list, a runtime exception is thrown. - * - * @param obj - */ - public void moveDown(EO obj) { - int i = array.indexOf(obj); - if (i == -1) throw new RuntimeException("EO not found in loop."); - if (i == array.size() - 1) return; - Collections.swap(array, i, i + 1); - } - -} diff --git a/java/lc-eo/src/main/java/lc/eo/EditTracker.java b/java/lc-eo/src/main/java/lc/eo/EditTracker.java deleted file mode 100644 index 284a8ca1446695429b0c5b7c17f687bf9073762b..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/EditTracker.java +++ /dev/null @@ -1,43 +0,0 @@ -package lc.eo; - -import java.io.Serializable; - -/** - * Classes implementing this interface provide edit tracking functionality of some fashion. - * - * @author Alex Leigh - * @since mk10 mod14 (CRYSTAL) - */ -public interface EditTracker { - /** - * This method is called by an EO if an attribute value changes. If the value is being unset (deleted), - * then newValue is null. - */ - void attributeUpdate(EO eo, String key, Serializable oldValue, Serializable newValue, EOListener listener); - - /** - * This method is called by an {@link EOLoop} if an EO is removed from it. - */ - void loopRemoved(EOLoop loop, EO removedEo, int index); - - /** - * This method is called by an {@link EOLoop} if an EO is added to it. Adding to the loop implicitly adds - * to the end of the array (is an append operation). - */ - void loopAdded(EOLoop loop, EO addedEo); - - /** - * This method is called by an {@link EOLoop} when an index position is set. - */ - void loopSet(EOLoop loop, EO setEO, int index); - - /** - * This method is called by an {@link EO} when the edit tracker is set in it. - */ - void objectAdded(EO obj); - - /** - * This method is called by a {@link EO} when the edit tracker is removed on it. - */ - void objectRemoved(EO obj); -} diff --git a/java/lc-eo/src/main/java/lc/eo/io/EOInputStream.java b/java/lc-eo/src/main/java/lc/eo/io/EOInputStream.java deleted file mode 100644 index 98eb209ec094297a92f6ef4e1e4e63261c01b17f..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/io/EOInputStream.java +++ /dev/null @@ -1,9 +0,0 @@ -package lc.eo.io; - -import lc.eo.EO; - -import java.io.IOException; - -public interface EOInputStream extends AutoCloseable { - EO readEo() throws IOException; -} diff --git a/java/lc-eo/src/main/java/lc/eo/io/EOOutputStream.java b/java/lc-eo/src/main/java/lc/eo/io/EOOutputStream.java deleted file mode 100644 index 131d235f12fc2a94cd6099e21ae920b7d0dd1260..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/io/EOOutputStream.java +++ /dev/null @@ -1,7 +0,0 @@ -package lc.eo.io; - -import lc.eo.EO; - -public interface EOOutputStream extends AutoCloseable { - void writeEO(EO eo) throws Exception; -} diff --git a/java/lc-eo/src/main/java/lc/eo/io/LoggingEOOutputStream.java b/java/lc-eo/src/main/java/lc/eo/io/LoggingEOOutputStream.java deleted file mode 100644 index a341ab9031292df5caa3f52cd1cfc3385bc1efca..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/io/LoggingEOOutputStream.java +++ /dev/null @@ -1,22 +0,0 @@ -package lc.eo.io; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; - -public class LoggingEOOutputStream implements EOOutputStream { - private final MechaLogger logger; - - public LoggingEOOutputStream(MechaLogger logger) { - this.logger = logger; - } - - @Override - public void writeEO(EO eo) throws Exception { - logger.info("{}", eo); - } - - @Override - public void close() throws Exception { - // NOP - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/io/QueueEOInputStream.java b/java/lc-eo/src/main/java/lc/eo/io/QueueEOInputStream.java deleted file mode 100644 index 3e050f76e768cf69e38e7c3310797c7e353a565c..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/io/QueueEOInputStream.java +++ /dev/null @@ -1,29 +0,0 @@ -package lc.eo.io; - -import lc.eo.EO; - -import java.io.IOException; -import java.util.NoSuchElementException; -import java.util.Queue; - -public class QueueEOInputStream implements EOInputStream { - private final Queue queue; - - public QueueEOInputStream(Queue queue) { - this.queue = queue; - } - - @Override - public EO readEo() throws IOException { - try { - return queue.remove(); - } catch (NoSuchElementException e) { - return null; - } - } - - @Override - public void close() throws Exception { - // NOP - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/io/StackEOInputStream.java b/java/lc-eo/src/main/java/lc/eo/io/StackEOInputStream.java deleted file mode 100644 index da9659107efc4945f6c3c5bb449c57c489d6347d..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/io/StackEOInputStream.java +++ /dev/null @@ -1,35 +0,0 @@ -package lc.eo.io; - -import lc.eo.EO; - -import java.io.IOException; -import java.util.EmptyStackException; -import java.util.Stack; - -/** - * Implementation of EOInputStream based around a Stack. Reading from the stream - * drains the stack. - * - * @author Alex Leigh - */ -public class StackEOInputStream implements EOInputStream { - private final Stack stack; - - public StackEOInputStream(Stack stack) { - this.stack = stack; - } - - @Override - public EO readEo() throws IOException { - try { - return stack.pop(); - } catch (EmptyStackException e) { - return null; - } - } - - @Override - public void close() throws Exception { - // NOP - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/sort/EOAlphaNumericComparator.java b/java/lc-eo/src/main/java/lc/eo/sort/EOAlphaNumericComparator.java deleted file mode 100644 index d9e76bce2ebc8da61d8e1acc5e5b584e8631c90e..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/sort/EOAlphaNumericComparator.java +++ /dev/null @@ -1,35 +0,0 @@ -package lc.eo.sort; - -import com.davekoelle.AlphanumComparator; -import lc.eo.EO; -import lc.mecha.sort.SortCardinality; -import lc.mecha.util.StringUtil; - -import java.util.Locale; - -public class EOAlphaNumericComparator extends EOComparator { - // Implementation must be threadsafe - private final static AlphanumComparator comp = new AlphanumComparator(); - - protected EOAlphaNumericComparator(String key, SortCardinality cardinality, Locale locale) { - super(key, cardinality, locale); - } - - @Override - public int compare(EO o1, EO o2) { - String v1 = StringUtil.safeString(o1.getValueString(getKey())); - String v2 = StringUtil.safeString(o2.getValueString(getKey())); - - int result = comp.compare(v1, v2); - - switch (getCardinality()) { - case ASCENDING: - return result; - case DESCENDING: - if (result == 0) return 0; - return -result; - } - - return 0; - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/sort/EOComparator.java b/java/lc-eo/src/main/java/lc/eo/sort/EOComparator.java deleted file mode 100644 index 76d2e8fb157c1543aa89373df6ba0f500c6b2474..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/sort/EOComparator.java +++ /dev/null @@ -1,34 +0,0 @@ -package lc.eo.sort; - -import lc.eo.EO; -import lc.mecha.sort.SortCardinality; - -import java.text.Collator; -import java.util.Comparator; -import java.util.Locale; - -public abstract class EOComparator implements Comparator { - private final String key; - private final Collator collator; - private final SortCardinality cardinality; - - protected EOComparator(String key, SortCardinality cardinality, Locale locale) { - this.key = key; - this.collator = Collator.getInstance(locale); - this.cardinality = cardinality; - } - - public String getKey() { - return key; - } - - public Collator getCollator() { - return collator; - } - - public SortCardinality getCardinality() { - return cardinality; - } - - public abstract int compare(EO o1, EO o2); -} diff --git a/java/lc-eo/src/main/java/lc/eo/sort/EONumericComparator.java b/java/lc-eo/src/main/java/lc/eo/sort/EONumericComparator.java deleted file mode 100644 index ee27c2349f3792c8ada7d14d12984ebd9b8bf181..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/sort/EONumericComparator.java +++ /dev/null @@ -1,38 +0,0 @@ -package lc.eo.sort; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.sort.SortCardinality; - -import java.util.Locale; - -public class EONumericComparator extends EOComparator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EONumericComparator.class); - - public EONumericComparator(String key, SortCardinality cardinality, Locale locale) { - super(key, cardinality, locale); - } - - @Override - public int compare(EO o1, EO o2) { - Double v1 = o1.getValueDouble(getKey()); - Double v2 = o2.getValueDouble(getKey()); - - logger.debug("compare(). [key: {}] [v1: {}] [v2: {}]", getKey(), v1, v2); - - int result = Double.compare(v1, v2); - - switch (getCardinality()) { - case ASCENDING: - return result; - case DESCENDING: - if (result == 0) return 0; - logger.debug("Descending case. [ret: {}] [orig: {}]", -result, result); - return -result; - } - - // Should never reach... - throw new UnsupportedOperationException("Unknown cardinality."); - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/sort/EOSortPolicy.java b/java/lc-eo/src/main/java/lc/eo/sort/EOSortPolicy.java deleted file mode 100644 index c658694dfdb3241bc6d8f1697e8f5f2001169c24..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/sort/EOSortPolicy.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2001,2020 Alex Leigh, All Rights Reserved - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ALEX LEIGH The copyright - * notice above does not evidence any actual or intended publication of such - * source code. - * - * Use, disclosure, copying, distribution, or transmission of this code without - * express permission is prohibited. - */ - -package lc.eo.sort; - -import lc.eo.EO; -import lc.mecha.lang.MultiComparator; -import lc.mecha.sort.FieldSort; -import lc.mecha.sort.SortPolicy; - -import java.util.Comparator; -import java.util.Locale; - -/** - * This implementation of {@link SortPolicy} provides additional functionality for building - * {@link java.util.Comparator} stacks for performing the sort stated in the policy. - * - * @author Alex Leigh - * @since 15.1 - */ -public class EOSortPolicy extends SortPolicy { - public EOSortPolicy(Locale locale) { - super(locale); - } - - /** - * Build a comparator based on the current sort policy. - * - * @return The new comparator. - */ - public Comparator buildComparator() { - MultiComparator mc = new MultiComparator<>(); - for (FieldSort field : getFields()) { - EOAlphaNumericComparator eoc = new EOAlphaNumericComparator(field.getKey(), - field.getCardinality(), getLocale()); - mc.add(eoc); - } - return mc; - } -} \ No newline at end of file diff --git a/java/lc-eo/src/main/java/lc/eo/sort/EOStringComparator.java b/java/lc-eo/src/main/java/lc/eo/sort/EOStringComparator.java deleted file mode 100644 index d3de35b34323d21ae8a48e54747bafcf2e593dcc..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/sort/EOStringComparator.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2001,2020 Alex Leigh, All Rights Reserved - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ALEX LEIGH The copyright - * notice above does not evidence any actual or intended publication of such - * source code. - * - * Use, disclosure, copying, distribution, or transmission of this code without - * express permission is prohibited. - */ - -package lc.eo.sort; - -import lc.eo.EO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.sort.SortCardinality; -import lc.mecha.util.StringUtil; - -import java.util.Comparator; -import java.util.Locale; - -/** - * Implementation of a {@link Comparator} for {@link EO} which performs a {@link Locale}-specific standard - * alphabetic sort. - * - * @author Alex Leigh - */ -public class EOStringComparator extends EOComparator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EOStringComparator.class); - - public EOStringComparator(String key, SortCardinality cardinality, Locale locale) { - super(key, cardinality, locale); - } - - @Override - public int compare(EO o1, EO o2) { - String v1 = StringUtil.safeString(o1.getValueString(getKey())); - String v2 = StringUtil.safeString(o2.getValueString(getKey())); - - // Step 1, compare as if we are ascending. - int result = getCollator().compare(v1, v2); - - switch (getCardinality()) { - case ASCENDING: - return result; - case DESCENDING: - if (result == 0) return 0; - logger.debug("Descending case. [ret: {}] [orig: {}]", -result, result); - return -result; - } - - // Should never reach... - throw new UnsupportedOperationException("Unknown cardinality."); - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/util/EOFilteringIterator.java b/java/lc-eo/src/main/java/lc/eo/util/EOFilteringIterator.java deleted file mode 100644 index a90fb2751ea6cbd1825b9ba0e1bb161ed1f86659..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/util/EOFilteringIterator.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.eo.util; - -import lc.eo.EO; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Iterator; - -/** - * Iterator for EOs which provides a filtering mechanic. - * - * @author Alex Leigh - */ -public class EOFilteringIterator implements Iterator { - private static final Logger logger = LoggerFactory.getLogger(EOFilteringIterator.class); - private final Iterator parent; - private final String apiType; - private EO current = null; - - /** - * Create a new EOFilteringIterator based on the given iterator. This iterator will - * only return EOs from the loop which claim to be compatible with the given type according to - * each EO's isType() method. - *

- * The EOFilteringIterator will not recurse into children which might be found within the - * EOs. - * - * @param parent - * @param apiType - */ - public EOFilteringIterator(Iterator parent, String apiType) { - logger.debug("Filtering iterator created: {}", apiType); - this.parent = parent; - this.apiType = apiType; - feed(); - } - - @Override - public boolean hasNext() { - return current != null; - } - - @Override - public EO next() { - EO eo = current; - feed(); - return eo; - } - - private void feed() { - while (true) { - if (!parent.hasNext()) { - logger.debug("Parent has no next()."); - current = null; - return; - } - - current = parent.next(); - logger.debug("Loaded current: {}", current); - if (current.isType(apiType)) return; - } - } -} diff --git a/java/lc-eo/src/main/java/lc/eo/util/EOJoinKeyDeterminer.java b/java/lc-eo/src/main/java/lc/eo/util/EOJoinKeyDeterminer.java deleted file mode 100644 index 336c4305f5c80a7718cc7f2881adc72cd50a9e20..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/util/EOJoinKeyDeterminer.java +++ /dev/null @@ -1,10 +0,0 @@ -package lc.eo.util; - -import lc.eo.EO; - -public interface EOJoinKeyDeterminer { - /** - * Returns the key for the loop in the parent that this child should sort into. - */ - String getChildLoopGet(EO parent, EO child); -} diff --git a/java/lc-eo/src/main/java/lc/eo/util/EOUtil.java b/java/lc-eo/src/main/java/lc/eo/util/EOUtil.java deleted file mode 100644 index c0a3b59937bbeaf10e5b864c30f4fe0d49b41606..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/main/java/lc/eo/util/EOUtil.java +++ /dev/null @@ -1,91 +0,0 @@ -package lc.eo.util; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.Set; -import java.util.TreeSet; -import java.util.UUID; - -/** - * Utility methods for working with EOs. - * - * @author Alex Leigh - */ -public class EOUtil { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EOUtil.class); - - /** - * Set the id attribute of the provided EO to a randomly generated UUID. - */ - public static EO makeId(EO eo) { - eo.setValue("id", UUID.randomUUID()); - return eo; - } - - /** - * Iterates all the EOs contained within eo, visiting each only once, and adds them to the set - * dst. If add is true then eo itself will be added to dst. - * - * @since mk11 (ZERO CONTRAST) - */ - public static void scan(Set dst, EO eo, boolean add) { - if (dst.contains(eo)) return; - - if (add) dst.add(eo); - - for (String key : eo.getKeys()) { - Object o = eo.get(key); - if (o instanceof EOLoop) { - for (EO child : ((EOLoop) o)) { - scan(dst, child, true); - } - } - } - } - - /** - * Perform a join between two loop sets. - */ - public static void join(EOLoop parentLoop, EOLoop childLoop, String parentJoinKey, String childJoinKey, - EOJoinKeyDeterminer determiner) { - HashMap index = new HashMap<>(); - for (EO parent : parentLoop) { - Serializable keyVal = parent.get(parentJoinKey); - if (keyVal == null) { - logger.info("Parent was missing the join key. [eo: parent]", parentJoinKey); - continue; - } - - index.put(keyVal, parent); - } - - for (EO child : childLoop) { - Serializable keyVal = child.get(childJoinKey); - if (keyVal == null) { - logger.warn("Child EO missing join key. [eo: {}]", child); - continue; - } - - EO parent = index.get(keyVal); - if (parent == null) { - logger.warn("Parent EO not found for child EO. [key: {}]", keyVal); - continue; - } - - parent.getValueLoop(determiner.getChildLoopGet(parent, child)).add(child); - } - } - - public static Set findAllKeys(EOLoop loop) { - TreeSet keys = new TreeSet<>(); - for (EO eo : loop) { - keys.addAll(eo.getKeys()); - } - return keys; - } -} diff --git a/java/lc-eo/src/test/java/lc/eo/EOLoopTest.java b/java/lc-eo/src/test/java/lc/eo/EOLoopTest.java deleted file mode 100644 index c56202316957322b4250ba03551c63dd64def163..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/test/java/lc/eo/EOLoopTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package lc.eo; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class EOLoopTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EOLoopTest.class); - - @Test - public void testRemoveAfter() { - EOLoop loop = new EOLoop(); - loop.add(new EO("0")); - loop.add(new EO("1")); - loop.add(new EO("2")); - loop.add(new EO("3")); - loop.add(new EO("4")); - - loop.removeAfter(2); - - assertEquals(3, loop.size()); - - logger.info("Loop state: {}", loop); - } - - @Test - public void testParentViaAdd() { - EOLoop loop = new EOLoop(); - EO a = new EO(); - EO b = new EO(); - - a.setValue("test", loop); - assertEquals(a, loop.getParent()); - - b.setValue("test", loop); - assertEquals(b, loop.getParent()); - } - - @Test - public void testParentViaImply() { - EO a = new EO(); - EOLoop l = a.getValueLoop("test"); - assertEquals(a, l.getParent()); - } -} diff --git a/java/lc-eo/src/test/java/lc/eo/EOUtilTest.java b/java/lc-eo/src/test/java/lc/eo/EOUtilTest.java deleted file mode 100644 index 2737eee07258f22e299add3ab170e8083fcf77b8..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/test/java/lc/eo/EOUtilTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package lc.eo; - -import lc.eo.util.EOUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.Test; - -import java.util.HashSet; - -public class EOUtilTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EOUtilTest.class); - - @Test - public void scannerTest() { - EO person = new EO("person"); - EOLoop emails = person.getValueLoop("emails"); - emails.add(new EO("email").setValue("addr", "foo@bar.com")); - emails.add(new EO("email").setValue("addr", "bar@foo.com")); - - HashSet scan = new HashSet<>(); - EOUtil.scan(scan, person, false); - - logger.info("Scan result: {}", scan); - - assert (scan.size() == 2); - - scan.clear(); - - EOUtil.scan(scan, person, true); - - assert (scan.size() == 3); - } -} diff --git a/java/lc-eo/src/test/java/lc/eo/EditTrackerTest.java b/java/lc-eo/src/test/java/lc/eo/EditTrackerTest.java deleted file mode 100644 index c97220511a40294fc971dc89dbbd9a337cb94562..0000000000000000000000000000000000000000 --- a/java/lc-eo/src/test/java/lc/eo/EditTrackerTest.java +++ /dev/null @@ -1,82 +0,0 @@ -package lc.eo; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.Test; - -import java.io.Serializable; -import java.util.HashSet; - -import static org.junit.Assert.assertEquals; - -public class EditTrackerTest implements EditTracker { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EditTrackerTest.class); - private boolean testHelloPassed = false; - private boolean childAddPassed = false; - private boolean childRemovePassed = false; - private HashSet added = new HashSet<>(); - private HashSet removed = new HashSet<>(); - - @Override - public void attributeUpdate(EO eo, String key, Serializable oldValue, Serializable newValue, EOListener listener) { - logger.info("attributeUpdate: {} {}", eo, key); - if (key.equals("test")) testHelloPassed = true; - } - - @Override - public void loopRemoved(EOLoop loop, EO removedEo, int index) { - logger.info("loopRemoved: {} {} {}", loop, removedEo, index); - assert (removedEo.getValueBoolean("child")); - assertEquals(0, index); - childRemovePassed = true; - added.remove(removedEo); - removed.add(removedEo); - } - - /* It's always later thank you think, and this is the only time you get. */ - - @Override - public void loopAdded(EOLoop loop, EO addedEo) { - logger.info("Loop added: {} {} {}", loop, addedEo); - childAddPassed = addedEo.getValueBoolean("child"); - } - - @Override - public void loopSet(EOLoop loop, EO setEO, int index) { - - } - - @Override - public void objectAdded(EO obj) { - logger.info("objectAdded: {}", obj); - added.add(obj); - } - - @Override - public void objectRemoved(EO obj) { - - } - - @Test - public void editTrackerTest() { - EO eo = new EO(); - eo.setEditTracker(this); - - eo.setValue("test", "Hello World!"); - assert (testHelloPassed); - - EOLoop l = eo.getValueLoop("loop"); - EO child = new EO().setValue("child", true); - l.add(child); - assert (childAddPassed); - - assertEquals(2, added.size()); - assertEquals(0, removed.size()); - - l.remove(child); - assert (childRemovePassed); - - assertEquals(1, added.size()); - assertEquals(1, removed.size()); - } -} diff --git a/java/lc-esp-engine/README.md b/java/lc-esp-engine/README.md deleted file mode 100644 index 047004a22e4d23cbbed8b5e575b7f662379acfb1..0000000000000000000000000000000000000000 --- a/java/lc-esp-engine/README.md +++ /dev/null @@ -1,5 +0,0 @@ -This module implements the Enhanced Services Platform mk19. In this -version, the service returns to being a HTTP REST-based API service. - -The engine is presented as a library which is intended to be included in other modules which are -providing application-specific functionality. diff --git a/java/lc-esp-engine/build.gradle b/java/lc-esp-engine/build.gradle deleted file mode 100644 index d50b63eb9991f794f6a88c03f6ae36046cffbf71..0000000000000000000000000000000000000000 --- a/java/lc-esp-engine/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -group 'leighco' -version '20.0-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-mecha-http-server') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-esp-engine/src/main/java/lc/esp/engine/AuthenticatedHandler.java b/java/lc-esp-engine/src/main/java/lc/esp/engine/AuthenticatedHandler.java deleted file mode 100644 index ccc507dffe9a5b63b66ebfa70390260a3c385514..0000000000000000000000000000000000000000 --- a/java/lc-esp-engine/src/main/java/lc/esp/engine/AuthenticatedHandler.java +++ /dev/null @@ -1,103 +0,0 @@ -package lc.esp.engine; - -import jakarta.servlet.http.HttpServletResponse; -import lc.mecha.fabric.HandlerStatus; -import lc.mecha.http.server.PrefixedHandler; -import lc.mecha.http.server.WebTransaction; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.nio.charset.StandardCharsets; -import java.util.Base64; -import java.util.HashSet; -import java.util.Set; - -/** - * This handler implements authentication mechanics in a generic manner, so that implementing handlers do not need - * to concern themselves with the details of the authentication. This implementation supports only - * HTTP Basic authentication. - * - * @author Alex Leigh - * @since mk19 - */ -public abstract class AuthenticatedHandler extends PrefixedHandler { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(AuthenticatedHandler.class); - private final Directory dir; - - private final HashSet groupIds = new HashSet<>(); - - public AuthenticatedHandler(Set path, Directory dir) { - super(path); - this.dir = dir; - } - - /** - * Handle the given request and attempt to perform basic authentication against the configured directory store. - * If basic authentication is unsuccessful, 403 forbidden is returned to the caller. If an identity is successfully - * established, the handleAuthenticated() method is called. - */ - @Override - public HandlerStatus handlePrefixedWebRequest(WebTransaction request) throws Throwable { - try { - final String authorization = request.httpServletRequest.getHeader("Authorization"); - - if (authorization != null && authorization.toLowerCase().startsWith("basic")) { - String base64Credentials = authorization.substring("Basic".length()).trim(); - byte[] credDecoded = Base64.getDecoder().decode(base64Credentials); - String credentials = new String(credDecoded, StandardCharsets.UTF_8); - final String[] values = credentials.split(":", 2); - - String userId = dir.authenticate(values[0], values[1]); - - logger.info("AD returns: {}", userId); - - if (groupIds.size() > 0) { - Set groups = dir.findGroups(userId); - for (String requireId : groupIds) { - if (!groups.contains(requireId)) { - request.httpServletResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); - return HandlerStatus.BREAK; - } - } - } - - if (userId != null) { - return handleAuthenticated(request, dir, userId); - } - } - - request.httpServletResponse.setHeader("WWW-Authenticate", "BASIC realm=\"LEIGH&CO\""); - request.httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - return HandlerStatus.BREAK; - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - /** - * Add a group ID to the list of permitted groups. If there are no groups permitted, then authentication - * will succeed if the provided credentials are valid. If at least one group is provided, then the principal - * must be a member of that group. If multiple groups are provided, then the principal must be a member of - * all groups. - * - * @param groupId - */ - public void addGroupId(String groupId) { - groupIds.add(groupId); - } - - @Override - public String toString() { - return "AuthenticatedHandler{" + - "dir=" + dir + - ", groups=" + groupIds + - '}'; - } - - /** - * Handle the connection which has now been authenticated. The directory service matching the request is passed, - * as well as the userId for the user. - */ - public abstract HandlerStatus handleAuthenticated(WebTransaction request, Directory dir, String userId) throws Exception; -} diff --git a/java/lc-esp-engine/src/main/java/lc/esp/engine/Directory.java b/java/lc-esp-engine/src/main/java/lc/esp/engine/Directory.java deleted file mode 100644 index 31a919478b165278435523d32dbe78782902b924..0000000000000000000000000000000000000000 --- a/java/lc-esp-engine/src/main/java/lc/esp/engine/Directory.java +++ /dev/null @@ -1,54 +0,0 @@ -package lc.esp.engine; - -import lc.mecha.aaa.ActiveDirectory; - -import javax.naming.NamingException; -import java.util.Map; -import java.util.Set; - -/** - * This class implements the mk16 directory-service API. It provides a simplified shim for working with a - * Directory service implementation. - * - * @author Alex Leigh - * @since mk19 - */ -public class Directory { - private final ActiveDirectory ad; - - public Directory(ActiveDirectory ad) { - this.ad = ad; - } - - /** - * Authenticate the given username & password in the directory. If the authentication is successful, the userId - * for the principal is returned. In the context of ActiveDirectory this is the SID. - */ - public String authenticate(String username, String password) { - Map res = ad.authenticate(username, password); - if (res == null) return null; - return (String) res.get("objectSid"); - } - - public String findUser(String username) throws NamingException { - Set users = ad.findUser(username); - if (users.size() == 0) return null; - if (users.size() > 1) throw new NamingException(); - // What a dumb fucking interface. Thanks Java. - for (Map user : users) { - return (String) user.get("objectSid"); - } - - // Should never reach this. - return null; - } - - public void updatePassword(String userId, String newPassword) throws Exception { - ad.updatePassword(userId, newPassword); - } - - public Set findGroups(String userId) throws NamingException { - return ad.findGroups(userId); - } - -} diff --git a/java/lc-esp-engine/src/main/java/lc/esp/engine/ESPEngine.java b/java/lc-esp-engine/src/main/java/lc/esp/engine/ESPEngine.java deleted file mode 100644 index fdb79abbb7118ec0fed543745be09e108b25c33c..0000000000000000000000000000000000000000 --- a/java/lc-esp-engine/src/main/java/lc/esp/engine/ESPEngine.java +++ /dev/null @@ -1,94 +0,0 @@ -package lc.esp.engine; - -import lc.mecha.aaa.ActiveDirectory; -import lc.mecha.aaa.ActiveDirectoryConfig; -import lc.mecha.fabric.LiteralMessageSubscription; -import lc.mecha.http.client.HttpUtil; -import lc.mecha.http.server.PrefixedHandler; -import lc.mecha.http.server.WebPipeline; -import lc.mecha.http.server.WebServer; -import lc.mecha.json.JSONObject; -import lc.mecha.lang.DangerousRunnable; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; - -/** - * Enhanced Services Platform/ENGINE mk19 - *

- * This is the core Engine class for the ESP service. Unlike previous versions of ESP, this implementation does - * not harbor a main() class or offer a module system and is intended to be called from another - * main service class. - *

- * ESP/Engine expects the LC_ESP_ENGINE_CFG environment variable to be set whose contents is a - * URL to a JSON-format configuration file. The configuration file is expected to contain a JSON object with - * the following parameters: - *

- * dir_host: The LDAP host to perform basic authentication against. - * dir_username: The LDAP service account username. - * dir_password: The LDAP service account password. - * dir_search_base: The DN for the search-base to use when searching for LDAP users. - * dir_domain: The domain-name in DNS format (e.g. gdn.leigh-co.com), used for assembling UPNs. - * - * @author Alex Leigh - * @since mk19 - */ -public class ESPEngine implements DangerousRunnable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPEngine.class); - private final WebServer ws; - private final Directory directory; - private final static String ENV_CFG = "LC_ESP_ENGINE_CFG"; - private final static String CFG_DIR_HOST = "dir_host"; - private final static String CFG_DIR_USER = "dir_username"; - private final static String CFG_DIR_PW = "dir_password"; - private final static String CFG_DIR_BASE = "dir_search_base"; - private final static String CFG_DIR_DOMAIN = "dir_domain"; - - public ESPEngine() throws Exception { - ws = new WebServer(8080, 32); - - String cfgUrl = System.getenv(ENV_CFG); - if (cfgUrl == null) { - throw new Exception(ENV_CFG + " must be set."); - } - - HttpClient httpClient = HttpUtil.makeOverlyTrustingClient(null); - HttpResponse response = httpClient.execute(new HttpGet(cfgUrl)); - HttpEntity entity = response.getEntity(); - JSONObject cfg = new JSONObject(entity.getContent()); - - ActiveDirectoryConfig dirCfg = new ActiveDirectoryConfig( - cfg.getString(CFG_DIR_DOMAIN), - cfg.getString(CFG_DIR_HOST), - cfg.getString(CFG_DIR_BASE), - cfg.getString(CFG_DIR_USER), - cfg.getString(CFG_DIR_PW)); - - ActiveDirectory activeDirectory = new ActiveDirectory(dirCfg); - directory = new Directory(activeDirectory); - } - - public void register(PrefixedHandler handler) { - ws.getWebPipeline().getServicePipeline().getSubscriptionBase().subscribe( - new LiteralMessageSubscription<>(handler, WebPipeline.KEY_SERVICE)); - } - - @Override - public void runDangerously() { - UniversalJob.banner(logger, "ESP/Engine mk19 (PARA BELLUM)", "Alex Leigh"); - ws.start(); - } - - @Override - public void run() { - runDangerously(); - } - - public Directory getDirectory() { - return directory; - } -} diff --git a/java/lc-example-calcite/LICENSE.md b/java/lc-example-calcite/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-example-calcite/build.gradle b/java/lc-example-calcite/build.gradle deleted file mode 100644 index 9d01a4d5b104b6980f9425a5992bbcccb02feb57..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id 'java' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 -group 'leigh' -version '16.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-mecha') - implementation project(':lc-mecha-db') - implementation 'org.apache.calcite:calcite-core:1.28.0' - implementation 'commons-dbcp:commons-dbcp:1.4' - implementation 'mysql:mysql-connector-java:8.0.27' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvFilterableTable.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvFilterableTable.java deleted file mode 100644 index aa96bfa4b1c32ddce1d7dcbc92fdc61d94274533..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvFilterableTable.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.DataContext; -import org.apache.calcite.adapter.file.CsvEnumerator; -import org.apache.calcite.adapter.java.JavaTypeFactory; -import org.apache.calcite.linq4j.AbstractEnumerable; -import org.apache.calcite.linq4j.Enumerable; -import org.apache.calcite.linq4j.Enumerator; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.rex.RexCall; -import org.apache.calcite.rex.RexInputRef; -import org.apache.calcite.rex.RexLiteral; -import org.apache.calcite.rex.RexNode; -import org.apache.calcite.schema.FilterableTable; -import org.apache.calcite.sql.SqlKind; -import org.apache.calcite.util.ImmutableIntList; -import org.apache.calcite.util.Source; - -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; - -/** - * Table based on a CSV file that can implement simple filtering. - * - *

It implements the {@link FilterableTable} interface, so Calcite gets - * data by calling the {@link #scan(DataContext, List)} method. - */ -public class CsvFilterableTable extends CsvTable - implements FilterableTable { - /** Creates a CsvFilterableTable. */ - public CsvFilterableTable(Source source, RelProtoDataType protoRowType) { - super(source, protoRowType); - } - - @Override public String toString() { - return "CsvFilterableTable"; - } - - @Override public Enumerable<@Nullable Object[]> scan(DataContext root, List filters) { - JavaTypeFactory typeFactory = root.getTypeFactory(); - final List fieldTypes = getFieldTypes(typeFactory); - final @Nullable String[] filterValues = new String[fieldTypes.size()]; - filters.removeIf(filter -> addFilter(filter, filterValues)); - final List fields = ImmutableIntList.identity(fieldTypes.size()); - final AtomicBoolean cancelFlag = DataContext.Variable.CANCEL_FLAG.get(root); - return new AbstractEnumerable<@Nullable Object[]>() { - @Override public Enumerator<@Nullable Object[]> enumerator() { - return new CsvEnumerator<>(source, cancelFlag, false, filterValues, - CsvEnumerator.arrayConverter(fieldTypes, fields, false)); - } - }; - } - - private static boolean addFilter(RexNode filter, @Nullable Object[] filterValues) { - if (filter.isA(SqlKind.AND)) { - // We cannot refine(remove) the operands of AND, - // it will cause o.a.c.i.TableScanNode.createFilterable filters check failed. - ((RexCall) filter).getOperands().forEach(subFilter -> addFilter(subFilter, filterValues)); - } else if (filter.isA(SqlKind.EQUALS)) { - final RexCall call = (RexCall) filter; - RexNode left = call.getOperands().get(0); - if (left.isA(SqlKind.CAST)) { - left = ((RexCall) left).operands.get(0); - } - final RexNode right = call.getOperands().get(1); - if (left instanceof RexInputRef - && right instanceof RexLiteral) { - final int index = ((RexInputRef) left).getIndex(); - if (filterValues[index] == null) { - filterValues[index] = ((RexLiteral) right).getValue2().toString(); - return true; - } - } - } - return false; - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvProjectTableScanRule.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvProjectTableScanRule.java deleted file mode 100644 index 476e2b844bc6940da19b6394f5935e28cb763438..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvProjectTableScanRule.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.plan.RelOptRuleCall; -import org.apache.calcite.plan.RelRule; -import org.apache.calcite.rel.logical.LogicalProject; -import org.apache.calcite.rex.RexInputRef; -import org.apache.calcite.rex.RexNode; - -import org.immutables.value.Value; - -import java.util.List; - -/** - * Planner rule that projects from a {@link CsvTableScan} scan just the columns - * needed to satisfy a projection. If the projection's expressions are trivial, - * the projection is removed. - * - * @see CsvRules#PROJECT_SCAN - */ -@Value.Enclosing -public class CsvProjectTableScanRule - extends RelRule { - - /** Creates a CsvProjectTableScanRule. */ - protected CsvProjectTableScanRule(Config config) { - super(config); - } - - @Override public void onMatch(RelOptRuleCall call) { - final LogicalProject project = call.rel(0); - final CsvTableScan scan = call.rel(1); - int[] fields = getProjectFields(project.getProjects()); - if (fields == null) { - // Project contains expressions more complex than just field references. - return; - } - call.transformTo( - new CsvTableScan( - scan.getCluster(), - scan.getTable(), - scan.csvTable, - fields)); - } - - private static int[] getProjectFields(List exps) { - final int[] fields = new int[exps.size()]; - for (int i = 0; i < exps.size(); i++) { - final RexNode exp = exps.get(i); - if (exp instanceof RexInputRef) { - fields[i] = ((RexInputRef) exp).getIndex(); - } else { - return null; // not a simple projection - } - } - return fields; - } - - /** Rule configuration. */ - @Value.Immutable(singleton = false) - public interface Config extends RelRule.Config { - Config DEFAULT = ImmutableCsvProjectTableScanRule.Config.builder() - .withOperandSupplier(b0 -> - b0.operand(LogicalProject.class).oneInput(b1 -> - b1.operand(CsvTableScan.class).noInputs())) - .build(); - - @Override default CsvProjectTableScanRule toRule() { - return new CsvProjectTableScanRule(this); - } - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvRules.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvRules.java deleted file mode 100644 index 0f232ccffb5037d0612bf22b6abac81008ddbee7..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvRules.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -/** Planner rules relating to the CSV adapter. */ -public abstract class CsvRules { - private CsvRules() {} - - /** Rule that matches a {@link org.apache.calcite.rel.core.Project} on - * a {@link CsvTableScan} and pushes down projects if possible. */ - public static final CsvProjectTableScanRule PROJECT_SCAN = - CsvProjectTableScanRule.Config.DEFAULT.toRule(); -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvScannableTable.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvScannableTable.java deleted file mode 100644 index 6d456fb9a027c6a39f71598be666e072c11c231e..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvScannableTable.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.DataContext; -import org.apache.calcite.adapter.file.CsvEnumerator; -import org.apache.calcite.adapter.java.JavaTypeFactory; -import org.apache.calcite.linq4j.AbstractEnumerable; -import org.apache.calcite.linq4j.Enumerable; -import org.apache.calcite.linq4j.Enumerator; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.schema.ScannableTable; -import org.apache.calcite.util.ImmutableIntList; -import org.apache.calcite.util.Source; - -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; - -/** - * Table based on a CSV file. - * - *

It implements the {@link ScannableTable} interface, so Calcite gets - * data by calling the {@link #scan(DataContext)} method. - */ -public class CsvScannableTable extends CsvTable - implements ScannableTable { - /** Creates a CsvScannableTable. */ - CsvScannableTable(Source source, RelProtoDataType protoRowType) { - super(source, protoRowType); - } - - @Override public String toString() { - return "CsvScannableTable"; - } - - @Override public Enumerable<@Nullable Object[]> scan(DataContext root) { - JavaTypeFactory typeFactory = root.getTypeFactory(); - final List fieldTypes = getFieldTypes(typeFactory); - final List fields = ImmutableIntList.identity(fieldTypes.size()); - final AtomicBoolean cancelFlag = DataContext.Variable.CANCEL_FLAG.get(root); - return new AbstractEnumerable<@Nullable Object[]>() { - @Override public Enumerator<@Nullable Object[]> enumerator() { - return new CsvEnumerator<>(source, cancelFlag, false, null, - CsvEnumerator.arrayConverter(fieldTypes, fields, false)); - } - }; - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvSchema.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvSchema.java deleted file mode 100644 index addefd37fe653919e3070273fc034892c9c52932..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvSchema.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.adapter.file.JsonScannableTable; -import org.apache.calcite.schema.Table; -import org.apache.calcite.schema.impl.AbstractSchema; -import org.apache.calcite.util.Source; -import org.apache.calcite.util.Sources; - -import com.google.common.collect.ImmutableMap; - -import java.io.File; -import java.util.Map; - -/** - * Schema mapped onto a directory of CSV files. Each table in the schema - * is a CSV file in that directory. - */ -public class CsvSchema extends AbstractSchema { - private final File directoryFile; - private final CsvTable.Flavor flavor; - private Map tableMap; - - /** - * Creates a CSV schema. - * - * @param directoryFile Directory that holds {@code .csv} files - * @param flavor Whether to instantiate flavor tables that undergo - * query optimization - */ - public CsvSchema(File directoryFile, CsvTable.Flavor flavor) { - super(); - this.directoryFile = directoryFile; - this.flavor = flavor; - } - - /** Looks for a suffix on a string and returns - * either the string with the suffix removed - * or the original string. */ - private static String trim(String s, String suffix) { - String trimmed = trimOrNull(s, suffix); - return trimmed != null ? trimmed : s; - } - - /** Looks for a suffix on a string and returns - * either the string with the suffix removed - * or null. */ - private static String trimOrNull(String s, String suffix) { - return s.endsWith(suffix) - ? s.substring(0, s.length() - suffix.length()) - : null; - } - - @Override protected Map getTableMap() { - if (tableMap == null) { - tableMap = createTableMap(); - } - return tableMap; - } - - private Map createTableMap() { - // Look for files in the directory ending in ".csv", ".csv.gz", ".json", - // ".json.gz". - final Source baseSource = Sources.of(directoryFile); - File[] files = directoryFile.listFiles((dir, name) -> { - final String nameSansGz = trim(name, ".gz"); - return nameSansGz.endsWith(".csv") - || nameSansGz.endsWith(".json"); - }); - if (files == null) { - System.out.println("directory " + directoryFile + " not found"); - files = new File[0]; - } - // Build a map from table name to table; each file becomes a table. - final ImmutableMap.Builder builder = ImmutableMap.builder(); - for (File file : files) { - Source source = Sources.of(file); - Source sourceSansGz = source.trim(".gz"); - final Source sourceSansJson = sourceSansGz.trimOrNull(".json"); - if (sourceSansJson != null) { - final Table table = new JsonScannableTable(source); - builder.put(sourceSansJson.relative(baseSource).path(), table); - } - final Source sourceSansCsv = sourceSansGz.trimOrNull(".csv"); - if (sourceSansCsv != null) { - final Table table = createTable(source); - builder.put(sourceSansCsv.relative(baseSource).path(), table); - } - } - return builder.build(); - } - - /** Creates different sub-type of table based on the "flavor" attribute. */ - private Table createTable(Source source) { - switch (flavor) { - case TRANSLATABLE: - return new CsvTranslatableTable(source, null); - case SCANNABLE: - return new CsvScannableTable(source, null); - case FILTERABLE: - return new CsvFilterableTable(source, null); - default: - throw new AssertionError("Unknown flavor " + this.flavor); - } - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvSchemaFactory.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvSchemaFactory.java deleted file mode 100644 index 79b96af9cc9b865f7f86d1e96203c5af2b0a5783..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvSchemaFactory.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.model.ModelHandler; -import org.apache.calcite.schema.Schema; -import org.apache.calcite.schema.SchemaFactory; -import org.apache.calcite.schema.SchemaPlus; - -import java.io.File; -import java.util.Locale; -import java.util.Map; - -/** - * Factory that creates a {@link CsvSchema}. - * - *

Allows a custom schema to be included in a model.json - * file. - */ -@SuppressWarnings("UnusedDeclaration") -public class CsvSchemaFactory implements SchemaFactory { - /** Public singleton, per factory contract. */ - public static final CsvSchemaFactory INSTANCE = new CsvSchemaFactory(); - - private CsvSchemaFactory() { - } - - @Override public Schema create(SchemaPlus parentSchema, String name, - Map operand) { - final String directory = (String) operand.get("directory"); - final File base = - (File) operand.get(ModelHandler.ExtraOperand.BASE_DIRECTORY.camelName); - File directoryFile = new File(directory); - if (base != null && !directoryFile.isAbsolute()) { - directoryFile = new File(base, directory); - } - String flavorName = (String) operand.get("flavor"); - CsvTable.Flavor flavor; - if (flavorName == null) { - flavor = CsvTable.Flavor.SCANNABLE; - } else { - flavor = CsvTable.Flavor.valueOf(flavorName.toUpperCase(Locale.ROOT)); - } - return new CsvSchema(directoryFile, flavor); - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvStreamScannableTable.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvStreamScannableTable.java deleted file mode 100644 index 683c4c4f4a4394c35247053d6709772129658139..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvStreamScannableTable.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.DataContext; -import org.apache.calcite.adapter.file.CsvEnumerator; -import org.apache.calcite.adapter.java.JavaTypeFactory; -import org.apache.calcite.linq4j.AbstractEnumerable; -import org.apache.calcite.linq4j.Enumerable; -import org.apache.calcite.linq4j.Enumerator; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.schema.ScannableTable; -import org.apache.calcite.schema.StreamableTable; -import org.apache.calcite.schema.Table; -import org.apache.calcite.util.ImmutableIntList; -import org.apache.calcite.util.Source; - -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; - -/** - * Table based on a CSV file. - * - *

It implements the {@link ScannableTable} interface, so Calcite gets - * data by calling the {@link #scan(DataContext)} method. - */ -public class CsvStreamScannableTable extends CsvScannableTable - implements StreamableTable { - /** Creates a CsvScannableTable. */ - CsvStreamScannableTable(Source source, RelProtoDataType protoRowType) { - super(source, protoRowType); - } - - @Override protected boolean isStream() { - return true; - } - - @Override public String toString() { - return "CsvStreamScannableTable"; - } - - @Override public Enumerable<@Nullable Object[]> scan(DataContext root) { - JavaTypeFactory typeFactory = root.getTypeFactory(); - final List fieldTypes = getFieldTypes(typeFactory); - final List fields = ImmutableIntList.identity(fieldTypes.size()); - final AtomicBoolean cancelFlag = DataContext.Variable.CANCEL_FLAG.get(root); - return new AbstractEnumerable<@Nullable Object[]>() { - @Override public Enumerator<@Nullable Object[]> enumerator() { - return new CsvEnumerator<>(source, cancelFlag, true, null, - CsvEnumerator.arrayConverter(fieldTypes, fields, true)); - } - }; - } - - @Override public Table stream() { - return this; - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvStreamTableFactory.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvStreamTableFactory.java deleted file mode 100644 index 49bb2e08232ba4e0d3ee9b1fbc6a655eb54a4893..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvStreamTableFactory.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.model.ModelHandler; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelDataTypeImpl; -import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.schema.SchemaPlus; -import org.apache.calcite.schema.TableFactory; -import org.apache.calcite.util.Source; -import org.apache.calcite.util.Sources; - -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.io.File; -import java.util.Map; - -/** - * Factory that creates a {@link CsvTranslatableTable}. - * - *

Allows a CSV table to be included in a model.json file, even in a - * schema that is not based upon {@link CsvSchema}.

- */ -@SuppressWarnings("UnusedDeclaration") -public class CsvStreamTableFactory implements TableFactory { - // public constructor, per factory contract - public CsvStreamTableFactory() { - } - - @Override public CsvTable create(SchemaPlus schema, String name, - Map operand, @Nullable RelDataType rowType) { - String fileName = (String) operand.get("file"); - File file = new File(fileName); - final File base = - (File) operand.get(ModelHandler.ExtraOperand.BASE_DIRECTORY.camelName); - if (base != null && !file.isAbsolute()) { - file = new File(base, fileName); - } - final Source source = Sources.of(file); - final RelProtoDataType protoRowType = - rowType != null ? RelDataTypeImpl.proto(rowType) : null; - return new CsvStreamScannableTable(source, protoRowType); - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTable.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTable.java deleted file mode 100644 index 17ad898dbad8db2991b2f649ef0972581dc2cdb9..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTable.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.adapter.file.CsvEnumerator; -import org.apache.calcite.adapter.java.JavaTypeFactory; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelDataTypeFactory; -import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.schema.impl.AbstractTable; -import org.apache.calcite.util.Source; - -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.util.ArrayList; -import java.util.List; - -/** - * Base class for table that reads CSV files. - */ -public abstract class CsvTable extends AbstractTable { - protected final Source source; - protected final @Nullable RelProtoDataType protoRowType; - private @Nullable RelDataType rowType; - private @Nullable List fieldTypes; - - /** Creates a CsvTable. */ - CsvTable(Source source, @Nullable RelProtoDataType protoRowType) { - this.source = source; - this.protoRowType = protoRowType; - } - - @Override public RelDataType getRowType(RelDataTypeFactory typeFactory) { - if (protoRowType != null) { - return protoRowType.apply(typeFactory); - } - if (rowType == null) { - rowType = CsvEnumerator.deduceRowType((JavaTypeFactory) typeFactory, source, - null, isStream()); - } - return rowType; - } - - /** Returns the field types of this CSV table. */ - public List getFieldTypes(RelDataTypeFactory typeFactory) { - if (fieldTypes == null) { - fieldTypes = new ArrayList<>(); - CsvEnumerator.deduceRowType((JavaTypeFactory) typeFactory, source, - fieldTypes, isStream()); - } - return fieldTypes; - } - - /** Returns whether the table represents a stream. */ - protected boolean isStream() { - return false; - } - - /** Various degrees of table "intelligence". */ - public enum Flavor { - SCANNABLE, FILTERABLE, TRANSLATABLE - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTableFactory.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTableFactory.java deleted file mode 100644 index fed7ddb338e62177590b7fe6fee6ef310f75ae22..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTableFactory.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.model.ModelHandler; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelDataTypeImpl; -import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.schema.SchemaPlus; -import org.apache.calcite.schema.TableFactory; -import org.apache.calcite.util.Source; -import org.apache.calcite.util.Sources; - -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.io.File; -import java.util.Map; - -/** - * Factory that creates a {@link CsvTranslatableTable}. - * - *

Allows a CSV table to be included in a model.json file, even in a - * schema that is not based upon {@link CsvSchema}. - */ -@SuppressWarnings("UnusedDeclaration") -public class CsvTableFactory implements TableFactory { - // public constructor, per factory contract - public CsvTableFactory() { - } - - @Override public CsvTable create(SchemaPlus schema, String name, - Map operand, @Nullable RelDataType rowType) { - String fileName = (String) operand.get("file"); - final File base = - (File) operand.get(ModelHandler.ExtraOperand.BASE_DIRECTORY.camelName); - final Source source = Sources.file(base, fileName); - final RelProtoDataType protoRowType = - rowType != null ? RelDataTypeImpl.proto(rowType) : null; - return new CsvScannableTable(source, protoRowType); - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTableScan.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTableScan.java deleted file mode 100644 index fbf3b9fe6a3d3acaa6d77ef5d2e2989592551c50..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTableScan.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.adapter.enumerable.EnumerableConvention; -import org.apache.calcite.adapter.enumerable.EnumerableRel; -import org.apache.calcite.adapter.enumerable.EnumerableRelImplementor; -import org.apache.calcite.adapter.enumerable.PhysType; -import org.apache.calcite.adapter.enumerable.PhysTypeImpl; -import org.apache.calcite.adapter.file.JsonTable; -import org.apache.calcite.linq4j.tree.Blocks; -import org.apache.calcite.linq4j.tree.Expressions; -import org.apache.calcite.linq4j.tree.Primitive; -import org.apache.calcite.plan.RelOptCluster; -import org.apache.calcite.plan.RelOptCost; -import org.apache.calcite.plan.RelOptPlanner; -import org.apache.calcite.plan.RelOptTable; -import org.apache.calcite.plan.RelTraitSet; -import org.apache.calcite.rel.RelNode; -import org.apache.calcite.rel.RelWriter; -import org.apache.calcite.rel.core.TableScan; -import org.apache.calcite.rel.metadata.RelMetadataQuery; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelDataTypeFactory; -import org.apache.calcite.rel.type.RelDataTypeField; - -import com.google.common.collect.ImmutableList; - -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.util.List; - -/** - * Relational expression representing a scan of a CSV file. - * - *

Like any table scan, it serves as a leaf node of a query tree. - */ -public class CsvTableScan extends TableScan implements EnumerableRel { - final CsvTranslatableTable csvTable; - final int[] fields; - - protected CsvTableScan(RelOptCluster cluster, RelOptTable table, - CsvTranslatableTable csvTable, int[] fields) { - super(cluster, cluster.traitSetOf(EnumerableConvention.INSTANCE), ImmutableList.of(), table); - this.csvTable = csvTable; - this.fields = fields; - - assert csvTable != null; - } - - @Override public RelNode copy(RelTraitSet traitSet, List inputs) { - assert inputs.isEmpty(); - return new CsvTableScan(getCluster(), table, csvTable, fields); - } - - @Override public RelWriter explainTerms(RelWriter pw) { - return super.explainTerms(pw) - .item("fields", Primitive.asList(fields)); - } - - @Override public RelDataType deriveRowType() { - final List fieldList = table.getRowType().getFieldList(); - final RelDataTypeFactory.Builder builder = - getCluster().getTypeFactory().builder(); - for (int field : fields) { - builder.add(fieldList.get(field)); - } - return builder.build(); - } - - @Override public void register(RelOptPlanner planner) { - planner.addRule(CsvRules.PROJECT_SCAN); - } - - @Override public @Nullable RelOptCost computeSelfCost(RelOptPlanner planner, - RelMetadataQuery mq) { - // Multiply the cost by a factor that makes a scan more attractive if it - // has significantly fewer fields than the original scan. - // - // The "+ 2D" on top and bottom keeps the function fairly smooth. - // - // For example, if table has 3 fields, project has 1 field, - // then factor = (1 + 2) / (3 + 2) = 0.6 - return super.computeSelfCost(planner, mq) - .multiplyBy(((double) fields.length + 2D) - / ((double) table.getRowType().getFieldCount() + 2D)); - } - - @Override public Result implement(EnumerableRelImplementor implementor, Prefer pref) { - PhysType physType = - PhysTypeImpl.of( - implementor.getTypeFactory(), - getRowType(), - pref.preferArray()); - - if (table instanceof JsonTable) { - return implementor.result( - physType, - Blocks.toBlock( - Expressions.call(table.getExpression(JsonTable.class), - "enumerable"))); - } - return implementor.result( - physType, - Blocks.toBlock( - Expressions.call(table.getExpression(CsvTranslatableTable.class), - "project", implementor.getRootExpression(), - Expressions.constant(fields)))); - } -} diff --git a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTranslatableTable.java b/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTranslatableTable.java deleted file mode 100644 index 51cc683dc451297dce8098b5c304412e3699838d..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/calcite/org/apache/calcite/adapter/csv/CsvTranslatableTable.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.calcite.adapter.csv; - -import org.apache.calcite.DataContext; -import org.apache.calcite.adapter.file.CsvEnumerator; -import org.apache.calcite.adapter.java.JavaTypeFactory; -import org.apache.calcite.linq4j.AbstractEnumerable; -import org.apache.calcite.linq4j.Enumerable; -import org.apache.calcite.linq4j.Enumerator; -import org.apache.calcite.linq4j.QueryProvider; -import org.apache.calcite.linq4j.Queryable; -import org.apache.calcite.linq4j.tree.Expression; -import org.apache.calcite.plan.RelOptTable; -import org.apache.calcite.rel.RelNode; -import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.schema.QueryableTable; -import org.apache.calcite.schema.SchemaPlus; -import org.apache.calcite.schema.Schemas; -import org.apache.calcite.schema.TranslatableTable; -import org.apache.calcite.util.ImmutableIntList; -import org.apache.calcite.util.Source; - -import java.lang.reflect.Type; -import java.util.concurrent.atomic.AtomicBoolean; - -/** - * Table based on a CSV file. - */ -public class CsvTranslatableTable extends CsvTable - implements QueryableTable, TranslatableTable { - /** Creates a CsvTable. */ - CsvTranslatableTable(Source source, RelProtoDataType protoRowType) { - super(source, protoRowType); - } - - @Override public String toString() { - return "CsvTranslatableTable"; - } - - /** Returns an enumerable over a given projection of the fields. */ - @SuppressWarnings("unused") // called from generated code - public Enumerable project(final DataContext root, - final int[] fields) { - final AtomicBoolean cancelFlag = DataContext.Variable.CANCEL_FLAG.get(root); - return new AbstractEnumerable() { - @Override public Enumerator enumerator() { - JavaTypeFactory typeFactory = root.getTypeFactory(); - return new CsvEnumerator<>( - source, - cancelFlag, - getFieldTypes(typeFactory), - ImmutableIntList.of(fields)); - } - }; - } - - @Override public Expression getExpression(SchemaPlus schema, String tableName, - Class clazz) { - return Schemas.tableExpression(schema, getElementType(), tableName, clazz); - } - - @Override public Type getElementType() { - return Object[].class; - } - - @Override public Queryable asQueryable(QueryProvider queryProvider, - SchemaPlus schema, String tableName) { - throw new UnsupportedOperationException(); - } - - @Override public RelNode toRel( - RelOptTable.ToRelContext context, - RelOptTable relOptTable) { - // Request all fields. - final int fieldCount = relOptTable.getRowType().getFieldCount(); - final int[] fields = CsvEnumerator.identityList(fieldCount); - return new CsvTableScan(context.getCluster(), relOptTable, this, fields); - } -} diff --git a/java/lc-example-calcite/doc/1802.10233.pdf b/java/lc-example-calcite/doc/1802.10233.pdf deleted file mode 100644 index 530693e556361ded369196597d81b4ff18d4c69e..0000000000000000000000000000000000000000 Binary files a/java/lc-example-calcite/doc/1802.10233.pdf and /dev/null differ diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/Department.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/Department.java deleted file mode 100644 index 8dc1a238f3bdebf13f228b6d7637ca2c8b89a1ad..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/Department.java +++ /dev/null @@ -1,19 +0,0 @@ -package lc.example.calcite; - -public class Department { - private final int id; - private final String name; - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public Department(int id, String name) { - this.id = id; - this.name = name; - } -} diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/Employee.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/Employee.java deleted file mode 100644 index c981bd79cad049086b8230586083ea6b3a233119..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/Employee.java +++ /dev/null @@ -1,13 +0,0 @@ -package lc.example.calcite; - -public class Employee { - public int id; - public String firstName; - public String lastName; - - public Employee(int id, String firstName, String lastName) { - this.id = id; - this.firstName = firstName; - this.lastName = lastName; - } -} diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/Example.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/Example.java deleted file mode 100644 index 425b0ea0285317487c7eb22e5ef94687462e3ef6..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/Example.java +++ /dev/null @@ -1,91 +0,0 @@ -package lc.example.calcite; - -import lc.example.calcite.adapter.ExampleSchema; -import lc.jdbc.JDBCUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.calcite.adapter.java.ReflectiveSchema; -import org.apache.calcite.adapter.jdbc.JdbcSchema; -import org.apache.calcite.jdbc.CalciteConnection; -import org.apache.calcite.schema.Schema; -import org.apache.calcite.schema.SchemaPlus; -import org.apache.commons.dbcp.BasicDataSource; - -import java.io.FileInputStream; -import java.io.IOException; -import java.sql.*; -import java.util.Properties; - -public class Example { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Example.class); - - public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException { - Class.forName("org.apache.calcite.jdbc.Driver"); - Properties info = new Properties(); - info.setProperty("lex", "JAVA"); - - - Properties p = new Properties(); - p.load(new FileInputStream("test.properties")); - BasicDataSource dataSource = new BasicDataSource(); - dataSource.setUrl("jdbc:mysql://db1.leigh-co.com/aleigh_test"); - dataSource.setUsername("aleigh"); - dataSource.setPassword(String.valueOf(p.get("db1_password"))); - - try (Connection con = DriverManager.getConnection("jdbc:calcite:", info); - CalciteConnection calciteConnection = con.unwrap(CalciteConnection.class)) { - - - SchemaPlus rootSchema = calciteConnection.getRootSchema(); - rootSchema.add("hr", new ReflectiveSchema(new HrSchema())); - Schema jdbcSchema = JdbcSchema.create(rootSchema, "test", dataSource, null, "aleigh_test"); - rootSchema.add("test", jdbcSchema); - rootSchema.add("example", new ExampleSchema(calciteConnection.getTypeFactory())); - - /* - try (Statement stmt = calciteConnection.createStatement()) { - stmt.executeQuery("insert into hr.emps (id,firstName,lastName) values (3,'Bob','Smith')"); - } - */ - - /* - try (Statement stmt = calciteConnection.createStatement()) { - try (ResultSet rs = stmt.executeQuery("SELECT * FROM example.clock")) { - JDBCUtil.printResultSet(logger, rs); - } - } - - */ - - try (Statement stmt = calciteConnection.createStatement()) { - stmt.execute("insert into example.box (msg) values ('Its Raining')"); - } - - try (Statement stmt = calciteConnection.createStatement()) { - stmt.execute("insert into example.box (msg) values ('Its Raining')"); - } - - - try (Statement stmt = calciteConnection.createStatement()) { - try (ResultSet rs = stmt.executeQuery("SELECT * FROM example.box")) { - JDBCUtil.printResultSet(logger, rs); - } - } - -/* - try (Statement stmt = calciteConnection.createStatement()) { - try (ResultSet rs = stmt.executeQuery("SELECT * FROM hr.emps where upper(lastName) like 'WIN%'")) { - JDBCUtil.printResultSet(logger, rs); - } - } -*/ - - /* - try (Statement stmt = con.createStatement()) { - stmt.execute("insert into test.discounts(id, title,expired_date,amount) values (0, 'calcite', '2021-04-23', 3.72)"); - } - - */ - } - } -} \ No newline at end of file diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/HrSchema.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/HrSchema.java deleted file mode 100644 index 552c33fc44b2e9059cee5a70576866dd6edc949b..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/HrSchema.java +++ /dev/null @@ -1,10 +0,0 @@ -package lc.example.calcite; - -public class HrSchema { - public final Employee[] emps = new Employee[2]; - - public HrSchema() { - emps[0] = new Employee(1, "Alex", "Leigh"); - emps[1] = new Employee(2, "Nikki", "Windon"); - } -} diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/AbstractModifiableTable.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/AbstractModifiableTable.java deleted file mode 100644 index 1e3e64a79bb125cb2d380bb4b7244f6c83627aae..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/AbstractModifiableTable.java +++ /dev/null @@ -1,33 +0,0 @@ -package lc.example.calcite.adapter; - -import org.apache.calcite.plan.RelOptCluster; -import org.apache.calcite.plan.RelOptTable; -import org.apache.calcite.prepare.Prepare; -import org.apache.calcite.rel.RelNode; -import org.apache.calcite.rel.core.TableModify; -import org.apache.calcite.rel.logical.LogicalTableModify; -import org.apache.calcite.rex.RexNode; -import org.apache.calcite.schema.ModifiableTable; -import org.apache.calcite.schema.impl.AbstractTable; - -import java.util.List; - -public abstract class AbstractModifiableTable extends AbstractTable implements ModifiableTable { - AbstractModifiableTable(String tableName) { - super(); - } - - @Override - public TableModify toModificationRel( - RelOptCluster cluster, - RelOptTable table, - Prepare.CatalogReader catalogReader, - RelNode child, - TableModify.Operation operation, - List updateColumnList, - List sourceExpressionList, - boolean flattened) { - return LogicalTableModify.create(table, catalogReader, child, operation, - updateColumnList, sourceExpressionList, flattened); - } -} diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleModTable.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleModTable.java deleted file mode 100644 index ea7a39dab72638155e0c1ca51399d70ebf0e305d..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleModTable.java +++ /dev/null @@ -1,93 +0,0 @@ -package lc.example.calcite.adapter; - -import org.apache.calcite.linq4j.Enumerator; -import org.apache.calcite.linq4j.Linq4j; -import org.apache.calcite.linq4j.QueryProvider; -import org.apache.calcite.linq4j.Queryable; -import org.apache.calcite.linq4j.tree.Expression; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelDataTypeFactory; -import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.schema.SchemaPlus; -import org.apache.calcite.schema.Schemas; -import org.apache.calcite.schema.Wrapper; -import org.apache.calcite.schema.impl.AbstractTableQueryable; -import org.apache.calcite.sql2rel.InitializerExpressionFactory; -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Objects; - -public class ExampleModTable extends AbstractModifiableTable - implements Wrapper { - final List rows = new ArrayList(); - @SuppressWarnings("unused") - private final RelProtoDataType protoStoredRowType; - private final RelProtoDataType protoRowType; - private final InitializerExpressionFactory initializerExpressionFactory; - - /** - * Creates a MutableArrayTable. - * - * @param name Name of table within its schema - * @param protoStoredRowType Prototype of row type of stored columns (all - * columns except virtual columns) - * @param protoRowType Prototype of row type (all columns) - * @param initializerExpressionFactory How columns are populated - */ - public ExampleModTable(String name, RelProtoDataType protoStoredRowType, - RelProtoDataType protoRowType, - InitializerExpressionFactory initializerExpressionFactory) { - super(name); - this.protoStoredRowType = Objects.requireNonNull(protoStoredRowType, "protoStoredRowType"); - this.protoRowType = Objects.requireNonNull(protoRowType, "protoRowType"); - this.initializerExpressionFactory = - Objects.requireNonNull(initializerExpressionFactory, "initializerExpressionFactory"); - } - - @Override - public Collection getModifiableCollection() { - return rows; - } - - @Override - public Queryable asQueryable(QueryProvider queryProvider, - SchemaPlus schema, String tableName) { - return new AbstractTableQueryable(queryProvider, schema, this, - tableName) { - @Override - public Enumerator enumerator() { - //noinspection unchecked - return (Enumerator) Linq4j.enumerator(rows); - } - }; - } - - @Override - public Type getElementType() { - return Object[].class; - } - - @Override - public Expression getExpression(SchemaPlus schema, String tableName, - Class clazz) { - return Schemas.tableExpression(schema, getElementType(), - tableName, clazz); - } - - @Override - public RelDataType getRowType(RelDataTypeFactory typeFactory) { - return protoRowType.apply(typeFactory); - } - - @Override - public @Nullable C unwrap(Class aClass) { - if (aClass.isInstance(initializerExpressionFactory)) { - return aClass.cast(initializerExpressionFactory); - } - return super.unwrap(aClass); - } -} \ No newline at end of file diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleSchema.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleSchema.java deleted file mode 100644 index 55126616a20595d7e82af3fe5cff7ac9daba1e6e..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleSchema.java +++ /dev/null @@ -1,54 +0,0 @@ -package lc.example.calcite.adapter; - -import com.google.common.collect.ImmutableMap; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.calcite.adapter.java.JavaTypeFactory; -import org.apache.calcite.rel.type.RelDataTypeFactory; -import org.apache.calcite.rel.type.RelDataTypeImpl; -import org.apache.calcite.schema.Table; -import org.apache.calcite.schema.impl.AbstractSchema; -import org.apache.calcite.sql.type.SqlTypeName; -import org.apache.calcite.sql2rel.InitializerExpressionFactory; -import org.apache.calcite.sql2rel.NullInitializerExpressionFactory; - -import java.util.Map; - -public class ExampleSchema extends AbstractSchema { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ExampleSchema.class); - private final JavaTypeFactory typeFactory; - private Map tableMap; - - public ExampleSchema(JavaTypeFactory typeFactory) { - this.typeFactory = typeFactory; - } - - @Override - protected Map getTableMap() { - if (tableMap == null) { - tableMap = createTableMap(); - } - return tableMap; - } - - private Map createTableMap() { - final ImmutableMap.Builder builder = ImmutableMap.builder(); - - builder.put("clock", new ExampleTable()); - - final InitializerExpressionFactory ief = - new NullInitializerExpressionFactory() { - - }; - - final RelDataTypeFactory.Builder boxBuilder = typeFactory.builder(); - final RelDataTypeFactory.Builder boxStoredBuilder = typeFactory.builder(); - - boxBuilder.add("msg", SqlTypeName.VARCHAR); - - builder.put("box", new ExampleModTable("box", RelDataTypeImpl.proto(boxBuilder.build()), - RelDataTypeImpl.proto(boxBuilder.build()), - ief)); - return builder.build(); - } -} diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleTable.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleTable.java deleted file mode 100644 index ac4d4f5b81f6bb78d15d2bfab69e3e7b528fd0a1..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleTable.java +++ /dev/null @@ -1,62 +0,0 @@ -package lc.example.calcite.adapter; - -import org.apache.calcite.DataContext; -import org.apache.calcite.linq4j.AbstractEnumerable2; -import org.apache.calcite.linq4j.Enumerable; -import org.apache.calcite.rel.type.RelDataType; -import org.apache.calcite.rel.type.RelDataTypeFactory; -import org.apache.calcite.schema.ScannableTable; -import org.apache.calcite.schema.impl.AbstractTable; -import org.apache.calcite.sql.type.SqlTypeName; -import org.apache.calcite.util.Pair; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Spliterator; -import java.util.function.Consumer; - -/** - * Example of a read-only table. - * - * @author Alex Leigh - */ -public class ExampleTable extends AbstractTable implements ScannableTable { - final List types = new ArrayList<>(); - final ArrayList data = new ArrayList<>(); - - public ExampleTable() { - data.add(new String[]{"Hello World!"}); - data.add(new String[]{"Hello PNW!"}); - } - - @Override - public RelDataType getRowType(RelDataTypeFactory typeFactory) { - final List names = new ArrayList<>(); - names.add("time"); - types.add(typeFactory.createSqlType(SqlTypeName.VARCHAR)); - return typeFactory.createStructType(Pair.zip(names, types)); - } - - @Override - public Enumerable scan(DataContext root) { - return new AbstractEnumerable2<>() { - @NotNull - @Override - public Iterator iterator() { - return data.iterator(); - } - - @Override - public void forEach(Consumer action) { - super.forEach(action); - } - - @Override - public Spliterator spliterator() { - return super.spliterator(); - } - }; - } -} diff --git a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleTableModify.java b/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleTableModify.java deleted file mode 100644 index 07d7318fe80b589f23cc6c426e5082284c57f2e0..0000000000000000000000000000000000000000 --- a/java/lc-example-calcite/src/main/java/lc/example/calcite/adapter/ExampleTableModify.java +++ /dev/null @@ -1,38 +0,0 @@ -package lc.example.calcite.adapter; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.calcite.plan.Convention; -import org.apache.calcite.plan.RelOptCluster; -import org.apache.calcite.plan.RelOptTable; -import org.apache.calcite.plan.RelTraitSet; -import org.apache.calcite.prepare.Prepare; -import org.apache.calcite.rel.RelNode; -import org.apache.calcite.rel.core.TableModify; -import org.apache.calcite.rex.RexNode; -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.util.List; - -public class ExampleTableModify extends TableModify { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ExampleTableModify.class); - - protected ExampleTableModify(RelOptCluster cluster, RelTraitSet traitSet, RelOptTable table, - Prepare.CatalogReader catalogReader, RelNode input, Operation operation, - @Nullable List updateColumnList, @Nullable List sourceExpressionList, - boolean flattened) { - super(cluster, traitSet, table, catalogReader, input, operation, - updateColumnList, sourceExpressionList, flattened); - } - - @Override - public ExampleTableModify copy(RelTraitSet traitSet, - List inputs) { - logger.info("copy() called"); - - assert traitSet.containsIfApplicable(Convention.NONE); - return new ExampleTableModify(getCluster(), traitSet, table, catalogReader, - sole(inputs), getOperation(), getUpdateColumnList(), - getSourceExpressionList(), isFlattened()); - } -} diff --git a/java/lc-example-graphql/LICENSE.md b/java/lc-example-graphql/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-example-graphql/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-example-graphql/build.gradle b/java/lc-example-graphql/build.gradle deleted file mode 100644 index 1fdcb06c193e963fd8fa590ed35040a1471ad553..0000000000000000000000000000000000000000 --- a/java/lc-example-graphql/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -plugins { - id 'java' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 -group 'leigh' -version '19.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-mecha') - implementation 'com.graphql-java:graphql-java:17.3' - implementation 'com.graphql-java:graphql-java-tools:5.2.4' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-example-graphql/src/main/java/lc/graphql/DataFetchers.java b/java/lc-example-graphql/src/main/java/lc/graphql/DataFetchers.java deleted file mode 100644 index 83145f3c2c3126784cb1b93d2373b6e5349a8275..0000000000000000000000000000000000000000 --- a/java/lc-example-graphql/src/main/java/lc/graphql/DataFetchers.java +++ /dev/null @@ -1,99 +0,0 @@ -package lc.graphql; - -import com.google.common.collect.ImmutableMap; -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -public class DataFetchers { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DataFetchers.class); - private static List> books = Arrays.asList( - ImmutableMap.of("id", "book-1", - "name", "Harry Potter and the Philosopher's Stone", - "pageCount", "223", - "authorId", "author-1"), - ImmutableMap.of("id", "book-2", - "name", "Moby Dick", - "pageCount", "635", - "authorId", "author-2"), - ImmutableMap.of("id", "book-3", - "name", "Interview with the vampire", - "pageCount", "371", - "authorId", "author-3") - ); - - private static List> authors = Arrays.asList( - ImmutableMap.of("id", "author-1", - "firstName", "Joanne", - "lastName", "Rowling"), - ImmutableMap.of("id", "author-2", - "firstName", "Herman", - "lastName", "Melville"), - ImmutableMap.of("id", "author-3", - "firstName", "Anne", - "lastName", "Rice") - ); - - public DataFetcher getPageCountDataFetcher() { - return dataFetchingEnvironment -> { - Map book = dataFetchingEnvironment.getSource(); - return book.get("totalPages"); - }; - } - - public DataFetcher getBookByIdDataFetcher() { - return dataFetchingEnvironment -> { - String bookId = dataFetchingEnvironment.getArgument("id"); - return books - .stream() - .filter(book -> book.get("id").equals(bookId)) - .findFirst() - .orElse(null); - }; - } - - public DataFetcher getAllBooks() { - return new DataFetcher() { - @Override - public Object get(DataFetchingEnvironment environment) throws Exception { - return books; - } - }; - } - - public DataFetcher getAuthorDataFetcher() { - return dataFetchingEnvironment -> { - Map book = dataFetchingEnvironment.getSource(); - String authorId = book.get("authorId"); - return authors - .stream() - .filter(author -> author.get("id").equals(authorId)) - .findFirst() - .orElse(null); - }; - } - - public DataFetcher hello() { - return new DataFetcher() { - @Override - public Object get(DataFetchingEnvironment environment) throws Exception { - String name = environment.getArgument("name"); - return "Hello, " + name + "!"; - } - }; - } - - public DataFetcher badFetcher() { - return new DataFetcher() { - @Override - public Object get(DataFetchingEnvironment environment) throws Exception { - throw new Exception("Ruh roh"); - } - }; - } -} diff --git a/java/lc-example-graphql/src/main/java/lc/graphql/Example.java b/java/lc-example-graphql/src/main/java/lc/graphql/Example.java deleted file mode 100644 index 02245599b6e248b088e91df2e8213f7c16abf477..0000000000000000000000000000000000000000 --- a/java/lc-example-graphql/src/main/java/lc/graphql/Example.java +++ /dev/null @@ -1,81 +0,0 @@ -package lc.graphql; - -import graphql.ExecutionResult; -import graphql.GraphQL; -import graphql.schema.GraphQLSchema; -import graphql.schema.idl.*; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.commons.io.IOUtils; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; - -import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; - -public class Example { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Example.class); - private DataFetchers graphQLDataFetchers = new DataFetchers(); - private GraphQL graphQL; - - public static void main(String[] args) throws IOException { - new Example(); - } - - public Example() throws IOException { - try (InputStream is = Example.class.getResourceAsStream("/schema.graphqls")) { - String sdl = IOUtils.toString(is, Charset.defaultCharset()); - GraphQLSchema graphQLSchema = buildSchema(sdl); - this.graphQL = GraphQL.newGraphQL(graphQLSchema).build(); - } - - ExecutionResult er = this.graphQL.execute("{\n" + - " bookById(id: \"book-1\"){\n" + - " id\n" + - " name\n" + - " author {\n" + - " firstName\n" + - " lastName\n" + - " }\n" + - " }\n" + - "}"); - logger.info("ER: {}", er); - - er = this.graphQL.execute("{\n" + - " allBooks {\n" + - " id\n" + - " name\n" + - " }\n" + - "}"); - logger.info("ER: {}", er); - - er = this.graphQL.execute("mutation {hello(name:\"Alex\")}"); - logger.info("ER: {}", er); - - er = this.graphQL.execute("mutation {bad(name:\"Alex\")}"); - logger.info("ER: {}", er); - } - - private GraphQLSchema buildSchema(String sdl) { - TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(sdl); - RuntimeWiring runtimeWiring = buildWiring(); - SchemaGenerator schemaGenerator = new SchemaGenerator(); - return schemaGenerator.makeExecutableSchema(typeRegistry, runtimeWiring); - } - - // In the GraphQLProvider class - private RuntimeWiring buildWiring() { - return RuntimeWiring.newRuntimeWiring() - .type(newTypeWiring("Query") - .dataFetcher("bookById", graphQLDataFetchers.getBookByIdDataFetcher()) - .dataFetcher("allBooks", graphQLDataFetchers.getAllBooks())) - .type(newTypeWiring("Book") - .dataFetcher("author", graphQLDataFetchers.getAuthorDataFetcher()) - .dataFetcher("pageCount", graphQLDataFetchers.getPageCountDataFetcher())) - .type(TypeRuntimeWiring.newTypeWiring("Mutation") - .dataFetcher("hello", graphQLDataFetchers.hello()) - .dataFetcher("bad", graphQLDataFetchers.badFetcher())) - .build(); - } -} \ No newline at end of file diff --git a/java/lc-example-graphql/src/main/resources/schema.graphqls b/java/lc-example-graphql/src/main/resources/schema.graphqls deleted file mode 100644 index 5173847594eee7d5595b72df30ff80f899ab1206..0000000000000000000000000000000000000000 --- a/java/lc-example-graphql/src/main/resources/schema.graphqls +++ /dev/null @@ -1,22 +0,0 @@ -type Query { - bookById(id: ID): Book - allBooks: [Book]! -} - -type Mutation { - hello(name: String!): String - bad(name: String!): String -} - -type Book { - id: ID - name: String - pageCount: Int - author: Author -} - -type Author { - id: ID - firstName: String - lastName: String -} \ No newline at end of file diff --git a/java/lc-example-xdr/README.md b/java/lc-example-xdr/README.md deleted file mode 100644 index 7835f4f7c819b10219ab3b8c36ace26c23f503eb..0000000000000000000000000000000000000000 --- a/java/lc-example-xdr/README.md +++ /dev/null @@ -1 +0,0 @@ -Example for working with XDR data in the Java environment. \ No newline at end of file diff --git a/java/lc-example-xdr/build.gradle b/java/lc-example-xdr/build.gradle deleted file mode 100644 index e16f9ce4f6d2a3b57c5e42307a1c505ca6868ae5..0000000000000000000000000000000000000000 --- a/java/lc-example-xdr/build.gradle +++ /dev/null @@ -1,19 +0,0 @@ -plugins { - id 'java' -} - -group 'leighco' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-gdn-api-svc/README.md b/java/lc-gdn-api-svc/README.md deleted file mode 100644 index e12c76a7d60aca5cc83bd90e8236182026636fc3..0000000000000000000000000000000000000000 --- a/java/lc-gdn-api-svc/README.md +++ /dev/null @@ -1,2 +0,0 @@ -docker run -d --restart always -e LC_GDN_CFG=abc123 -docker.leigh-co.com/lc-gdn-api-svc:1.0 \ No newline at end of file diff --git a/java/lc-gdn-api-svc/build.gradle b/java/lc-gdn-api-svc/build.gradle deleted file mode 100644 index b8b0fc07efea3e24d422f7ce03fcab18670ea29c..0000000000000000000000000000000000000000 --- a/java/lc-gdn-api-svc/build.gradle +++ /dev/null @@ -1,46 +0,0 @@ -plugins { - id 'java' - id "com.palantir.docker" version "0.33.0" - id 'application' -} - -group 'leighco' -version '1.10-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-esp-engine') - implementation project(':lc-cloudbox') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} - - -application { - mainClass = 'lc.gdn.api.GdnApiService' -} - -docker { - name "docker.leigh-co.com/${project.name}:${project.version}" - files tasks.distTar.outputs -} - -task dockerfile() { - doLast { - new File(projectDir, 'Dockerfile').text = """FROM docker.leigh-co.com/openjdk:17-alpine -EXPOSE 52018 -RUN mkdir /app -COPY ${project.name}-${project.version}.tar /dist.tar -RUN tar xfv /dist.tar -RUN rm /dist.tar -ENTRYPOINT ["/${project.name}-${project.version}/bin/${project.name}"] -""" - } -} \ No newline at end of file diff --git a/java/lc-gdn-api-svc/openapi.yaml b/java/lc-gdn-api-svc/openapi.yaml deleted file mode 100644 index 494cfda428d6a555bc44b7f3bf3940e7138b97e2..0000000000000000000000000000000000000000 --- a/java/lc-gdn-api-svc/openapi.yaml +++ /dev/null @@ -1,75 +0,0 @@ -openapi: 3.0.3 -info: - title: GDN API mk1 - description: Global Data Network API mk1 - version: 1.0.0 -servers: - - url: https://leigh-co.com/api/gdn/v1 - - url: http://localhost:8080/api/gdn/v1 -components: - securitySchemes: - BasicAuth: - scheme: basic - type: http -paths: - /echo: - get: - description: Echo the request to the caller. - security: - - BasicAuth: [ ] - responses: - '200': - description: OK - /ipsec/remote_ip: - put: - description: Update the IP address for an IPSEC endpoint. Call this function if the endpoint has changed for some reason, such as getting a new dynamic IP. The call will block until both gw0 and gw3 routers are updated. - security: - - BasicAuth: [ ] - parameters: - - required: true - description: GDN Tunnel ID - name: id - in: query - schema: - type: integer - - required: true - description: IPv4 Address - name: ip - in: query - schema: - type: string - responses: - '200': - description: OK - content: - application/json: - examples: - Success: - value: '{"router":["gw0.gdn.leigh-co.com","gw3.gdn.leigh-co.com"]}' - NOP: - value: '{"router":[]}' - '500': - description: Operation failed. If 500 is returned it is possible that one of the routers updated and the other did not. - '404': - description: Authorization failed. - '422': - description: No such tunnel exists or the IP address was invalid. - /user/password: - put: - description: Update the password for the currently logged in user. - security: - - BasicAuth: [ ] - parameters: - - required: true - description: The new password. - name: password - in: query - schema: - type: string - responses: - '200': - description: The password was changed successfully. - '500': - description: The operation failed. - '422': - description: Unable to change the password for the requested user. \ No newline at end of file diff --git a/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/EchoHandler.java b/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/EchoHandler.java deleted file mode 100644 index ac6d39165f4148c34b01aa1c23d816aa4cd16503..0000000000000000000000000000000000000000 --- a/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/EchoHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package lc.gdn.api; - -import jakarta.servlet.http.HttpServletRequest; -import lc.mecha.fabric.HandlerStatus; -import lc.mecha.http.server.PrefixedHandler; -import lc.mecha.http.server.WebTransaction; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.Arrays; -import java.util.Collections; -import java.util.Set; -import java.util.stream.Collectors; - -public class EchoHandler extends PrefixedHandler { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EchoHandler.class); - - public EchoHandler() { - super(Set.of("/api/gdn/v1/echo")); - } - - private String httpServletRequestToString(HttpServletRequest request) { - StringBuilder sb = new StringBuilder(); - - sb.append("Request Method = [" + request.getMethod() + "], "); - sb.append("Request URL Path = [" + request.getRequestURL() + "], "); - - String headers = - Collections.list(request.getHeaderNames()).stream() - .map(headerName -> headerName + " : " + Collections.list(request.getHeaders(headerName))) - .collect(Collectors.joining(", ")); - - if (headers.isEmpty()) { - sb.append("Request headers: NONE,"); - } else { - sb.append("Request headers: [" + headers + "],"); - } - - String parameters = - Collections.list(request.getParameterNames()).stream() - .map(p -> p + " : " + Arrays.asList(request.getParameterValues(p))) - .collect(Collectors.joining(", ")); - - if (parameters.isEmpty()) { - sb.append("Request parameters: NONE."); - } else { - sb.append("Request parameters: [" + parameters + "]."); - } - - return sb.toString(); - } - - @Override - public HandlerStatus handlePrefixedWebRequest(WebTransaction request) throws Throwable { - String req = httpServletRequestToString(request.httpServletRequest); - request.httpServletResponse.setContentType("text/plain"); - request.httpServletResponse.getOutputStream().write(req.getBytes()); - return HandlerStatus.BREAK; - } -} diff --git a/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/GdnApiService.java b/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/GdnApiService.java deleted file mode 100644 index c5bf1aea3d8b74b6b4851bad560fdbc3f8568c76..0000000000000000000000000000000000000000 --- a/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/GdnApiService.java +++ /dev/null @@ -1,14 +0,0 @@ -package lc.gdn.api; - -import lc.esp.engine.ESPEngine; - -public class GdnApiService { - public static void main(String[] args) throws Exception { - ESPEngine engine = new ESPEngine(); - - engine.register(new TunnelIPHandler(engine.getDirectory())); - engine.register(new UserPasswordHandler(engine.getDirectory())); - engine.register(new EchoHandler()); - engine.runDangerously(); - } -} diff --git a/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/TunnelIPHandler.java b/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/TunnelIPHandler.java deleted file mode 100644 index db034f194ad84586c9b2a4dcac2339f029f0b0be..0000000000000000000000000000000000000000 --- a/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/TunnelIPHandler.java +++ /dev/null @@ -1,163 +0,0 @@ -package lc.gdn.api; - -import jakarta.servlet.http.HttpServletResponse; -import lc.cloudbox.cisco.CiscoController; -import lc.esp.engine.Directory; -import lc.mecha.cred.Credential; -import lc.mecha.fabric.HandlerStatus; -import lc.mecha.http.client.HttpUtil; -import lc.mecha.http.server.PrefixedHandler; -import lc.mecha.http.server.WebTransaction; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; - -import java.net.Inet4Address; -import java.net.InetAddress; -import java.nio.charset.StandardCharsets; -import java.util.Base64; -import java.util.HashMap; -import java.util.Set; - -/** - * This service provides the GDN API endpoint. - * - * @author Alex Leigh - * @since 1.0 - */ -public class TunnelIPHandler extends PrefixedHandler { - public static final String ENV_CFG = "LC_GDN_CFG"; - private static final MechaLogger logger = MechaLoggerFactory.getLogger(TunnelIPHandler.class); - - // Users in this group will be able to modify any tunnel - private final static String SID_DOMAIN_ADMINS = "S-1-5-21-627184053-1050413898-3607107746-512"; - private final static String SID_TUNNEL0 = "S-1-5-21-627184053-1050413898-3607107746-2168"; - private final static String SID_TUNNEL3 = "S-1-5-21-627184053-1050413898-3607107746-2167"; - private final static String SID_TUNNEL5 = "S-1-5-21-627184053-1050413898-3607107746-2166"; - private final static String SID_TUNNEL8 = "S-1-5-21-627184053-1050413898-3607107746-1688"; - - private HashMap permissions = new HashMap<>(); - private HashMap cache = new HashMap<>(); - - private String gw0User, gw0Password, gw0Enable; - private String gw3User, gw3Password, gw3Enable; - private final Directory dir; - - public TunnelIPHandler(Directory dir) throws Exception { - super(Set.of("/api/gdn/v1/ipsec/remote_ip")); - - this.dir = dir; - - String cfgUrl = System.getenv(ENV_CFG); - if (cfgUrl == null) { - throw new Exception(ENV_CFG + " must be set."); - } - - HttpClient httpClient = HttpUtil.makeOverlyTrustingClient(null); - HttpResponse response = httpClient.execute(new HttpGet(cfgUrl)); - HttpEntity entity = response.getEntity(); - JSONObject cfg = new JSONObject(entity.getContent()); - - gw0User = cfg.getString("gw0_user"); - gw0Password = cfg.getString("gw0_password"); - gw0Enable = cfg.getString("gw0_enable"); - gw3User = cfg.getString("gw3_user"); - gw3Password = cfg.getString("gw3_password"); - gw3Enable = cfg.getString("gw3_enable"); - - permissions.put(0, SID_TUNNEL0); - permissions.put(3, SID_TUNNEL3); - permissions.put(5, SID_TUNNEL5); - permissions.put(8, SID_TUNNEL8); - } - - @Override - public HandlerStatus handlePrefixedWebRequest(WebTransaction request) throws Exception { - try { - final String authorization = request.httpServletRequest.getHeader("Authorization"); - - if (authorization != null && authorization.toLowerCase().startsWith("basic")) { - // Straight off is this even a tunnel we know about? - Integer tunNumber = Integer.parseInt(request.httpServletRequest.getParameter("id")); - if (!permissions.containsKey(tunNumber)) { - request.httpServletResponse.setStatus(422); - return HandlerStatus.BREAK; - } - - // Authorization: Basic base64credentials - String base64Credentials = authorization.substring("Basic".length()).trim(); - byte[] credDecoded = Base64.getDecoder().decode(base64Credentials); - String credentials = new String(credDecoded, StandardCharsets.UTF_8); - // credentials = username:password - final String[] values = credentials.split(":", 2); - - // FIXME: Should be gdn.leigh-co.com, but the SSL certs don't have a altname for this. - - - String userId = dir.authenticate(values[0], values[1]); - - logger.info("AD returns: {}", userId); - if (userId == null) { - request.httpServletResponse.setHeader("WWW-Authenticate", "BASIC realm=\"LEIGH&CO\""); - request.httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - return HandlerStatus.BREAK; - } - - Set groups = dir.findGroups(userId); - InetAddress ipAddr = Inet4Address.getByName(request.httpServletRequest.getParameter("ip")); - - // Are we authorized? - if (!groups.contains(SID_DOMAIN_ADMINS) && !groups.contains(permissions.get(tunNumber))) { - // FORBIDDEN since the u/p was good, but unauthorized. - request.httpServletResponse.setHeader("WWW-Authenticate", "BASIC realm=\"LEIGH&CO\""); - request.httpServletResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); - return HandlerStatus.BREAK; - } - - // We're authorized, so go do the thing. - - // Are we wasting our time? - InetAddress old = cache.get(tunNumber); - if (old != null && old.equals(ipAddr)) { - // This is not actually an update since last time; so do nothing. - request.httpServletResponse.setContentType("application/json"); - request.httpServletResponse.getOutputStream().write("{\"router\":[]}".getBytes()); - return HandlerStatus.BREAK; - } - - logger.info("Updating tunnel configuration. [tun: {}] [ip: {}]", tunNumber, ipAddr.getHostAddress()); - - CiscoController gw0 = new CiscoController("gw0.gdn.leigh-co.com", - new Credential(gw0User, gw0Password), gw0Enable); - CiscoController gw3 = new CiscoController("gw3.gdn.leigh-co.com", - new Credential(gw3User, gw3Password), gw3Enable); - - cache.put(tunNumber, ipAddr); - - synchronized (this) { - gw0.getSession().setTunnelDestination(tunNumber, ipAddr.getHostAddress()); - gw3.getSession().setTunnelDestination(tunNumber, ipAddr.getHostAddress()); - } - logger.info("Router updated."); - - request.httpServletResponse.setContentType("application/json"); - request.httpServletResponse.getOutputStream() - .write("{\"router\":[\"gw0.gdn.leigh-co.com\",\"gw3.gdn.leigh-co.com\"]}".getBytes()); - - return HandlerStatus.BREAK; - - } else { - request.httpServletResponse.setHeader("WWW-Authenticate", "BASIC realm=\"LEIGH&CO\""); - request.httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - return HandlerStatus.BREAK; - } - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } -} diff --git a/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/UserPasswordHandler.java b/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/UserPasswordHandler.java deleted file mode 100644 index 53239770fd993fd3f3fa8742509f0bd47a8e087d..0000000000000000000000000000000000000000 --- a/java/lc-gdn-api-svc/src/main/java/lc/gdn/api/UserPasswordHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -package lc.gdn.api; - -import lc.esp.engine.AuthenticatedHandler; -import lc.esp.engine.Directory; -import lc.mecha.fabric.HandlerStatus; -import lc.mecha.http.server.WebTransaction; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.commons.lang.StringUtils; - -import java.util.Set; - -public class UserPasswordHandler extends AuthenticatedHandler { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(UserPasswordHandler.class); - - public UserPasswordHandler(Directory ds) { - super(Set.of("/api/gdn/v1/user/password"), ds); - } - - @Override - public HandlerStatus handleAuthenticated(WebTransaction request, Directory ad, String authUserId) throws Exception { - String newPassword = request.httpServletRequest.getParameter("password"); - - if (StringUtils.isBlank(authUserId)) { - logger.warn("Unable to determine target user SID."); - request.httpServletResponse.setStatus(422); - return HandlerStatus.BREAK; - } - - ad.updatePassword(authUserId, newPassword); - - request.httpServletResponse.setStatus(200); - - return HandlerStatus.BREAK; - } -} diff --git a/java/lc-gis/LICENSE.md b/java/lc-gis/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-gis/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-gis/build.gradle b/java/lc-gis/build.gradle deleted file mode 100644 index 055e43ca86019503a2d75b7ff33f4f76130027d4..0000000000000000000000000000000000000000 --- a/java/lc-gis/build.gradle +++ /dev/null @@ -1,30 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 -repositories { - maven { - url "https://repo.osgeo.org/repository/release/" - } -} - -group 'leigh' -version '16.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api 'io.jenetics:jpx:2.2.0' - api project(':lc-mecha') - api 'org.geotools:gt-geojson:25.1' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-gis/src/main/java/lc/gis/geojson/GeoJsonExtractor.java b/java/lc-gis/src/main/java/lc/gis/geojson/GeoJsonExtractor.java deleted file mode 100644 index aa090c63243f06c10f37f62d415dfe6a6750a336..0000000000000000000000000000000000000000 --- a/java/lc-gis/src/main/java/lc/gis/geojson/GeoJsonExtractor.java +++ /dev/null @@ -1,28 +0,0 @@ -package lc.gis.geojson; - -import org.geotools.geojson.geom.GeometryJSON; -import org.locationtech.jts.geom.GeometryCollection; -import org.locationtech.jts.geom.Polygon; - -import java.io.Reader; -import java.io.StringReader; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class GeoJsonExtractor { - public static void main(String[] args) throws Exception { - String content = new String(Files.readAllBytes(Paths.get("/users/aleigh/proj/jlee/wc_ar_taxparcel.geojson")), "UTF-8"); - GeometryJSON gjson = new GeometryJSON(); - Reader reader = new StringReader(content); - - - GeometryCollection gc = gjson.readGeometryCollection(reader); - - - while (true) { - Polygon p = gjson.readPolygon(reader); - if (p == null) break; - System.out.println("polygon: " + p); - } - } -} diff --git a/java/lc-gis/src/main/java/lc/gis/gpx/TrackExtractor.java b/java/lc-gis/src/main/java/lc/gis/gpx/TrackExtractor.java deleted file mode 100644 index bc73748c22b87338557f620a20824775de9b0c77..0000000000000000000000000000000000000000 --- a/java/lc-gis/src/main/java/lc/gis/gpx/TrackExtractor.java +++ /dev/null @@ -1,39 +0,0 @@ -package lc.gis.gpx; - -import io.jenetics.jpx.GPX; -import io.jenetics.jpx.Track; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.IOException; -import java.nio.file.Paths; - -/** - * Utility to extract tracks from a monolithic GPX file into multiple GPX files. - * - * @author Alex Leigh - */ -public class TrackExtractor { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(TrackExtractor.class); - - public static void main(String[] args) throws IOException { - UniversalJob.banner(logger, "TrackExtractor"); - - if (args.length != 1) { - logger.error("Usage: TrackExtractor file.gpx"); - System.exit(UniversalJob.RET_BADARGS); - } - - GPX gpx = GPX.read(args[0]); - - logger.info("Loaded GPX file."); - - for (Track track : gpx.getTracks()) { - GPX trackGpx = GPX.builder().addTrack(track).build(); - String filename = track.getName() + ".gpx"; - logger.info("Writing track: [name: {}]", track.getName()); - GPX.write(trackGpx, Paths.get(filename)); - } - } -} diff --git a/java/lc-gnusto/.gitignore b/java/lc-gnusto/.gitignore deleted file mode 100644 index ede7310f5aa22a8bb16f7393dedac5d9b0cba2c9..0000000000000000000000000000000000000000 --- a/java/lc-gnusto/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -kabe.log -velocity.log -.DS_Store -statistic.xml -.gradle -/*/build/ -/build/ -gradle-app.setting -!gradle-wrapper.jar -.gradletasknamecache -.idea/ -*.iml -out/ -.cache -node_modules -/*/.idea -.vi -/*/graph.eo -.vai -graph.bak -.idea -tests.vai -vds.log -hosts.json -tests.vai.old \ No newline at end of file diff --git a/java/lc-gnusto/LICENSE.md b/java/lc-gnusto/LICENSE.md deleted file mode 100644 index 226d1f25b12e58e21c29a6c1869d1ec05095d443..0000000000000000000000000000000000000000 --- a/java/lc-gnusto/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-gnusto/build.gradle b/java/lc-gnusto/build.gradle deleted file mode 100644 index 7dc70726f8ce9f4a19500e5e5833d865b933a26e..0000000000000000000000000000000000000000 --- a/java/lc-gnusto/build.gradle +++ /dev/null @@ -1,68 +0,0 @@ -plugins { - id 'java' - id 'java-library' - id 'distribution' - id 'maven-publish' - id 'application' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-mecha') - api group: 'c3p0', name: 'c3p0', version: '0.9.1.2' - api group: 'mysql', name: 'mysql-connector-java', version: '8.0.22' - api group: 'org.mybatis', name: 'mybatis', version: '3.5.6' - testImplementation group: 'junit', name: 'junit', version: '4.12' -} - -jar { - manifest { - attributes('Implementation-Title': 'LEIGH Gnusto', 'Implementation-Version': archiveVersion) - } -} - -publishing { - publications { - mavenJava(MavenPublication) { - artifactId = 'leigh-gnusto' - from components.java - versionMapping { - usage('java-api') { - fromResolutionOf('runtimeClasspath') - } - usage('java-runtime') { - fromResolutionResult() - } - } - pom { - name = 'LEIGH Gnusto' - description = 'SQL Schema Management' - url = 'http://leigh-co.com' - licenses { - license { - name = 'COMMERCIAL' - url = 'http://leigh-co.com' - } - } - developers { - developer { - id = 'aleigh' - name = 'Alex Leigh' - email = 'a@leigh-co.com' - } - } - } - } - } - repositories { - maven { - url = "$buildDir/repos/dist" - } - } -} \ No newline at end of file diff --git a/java/lc-gnusto/src/main/java/lc/gnusto/Gnusto.java b/java/lc-gnusto/src/main/java/lc/gnusto/Gnusto.java deleted file mode 100644 index 15cafddc6646ee156a4df7dfa1883fefac0a294d..0000000000000000000000000000000000000000 --- a/java/lc-gnusto/src/main/java/lc/gnusto/Gnusto.java +++ /dev/null @@ -1,116 +0,0 @@ -package lc.gnusto; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.commons.io.FilenameUtils; -import org.apache.ibatis.jdbc.ScriptRunner; - -import java.io.*; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -/** - * Gnusto provides a simple framework for performing SQL schema migrations on a MySQL database. - * - * @author Alex Leigh - */ -public class Gnusto { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Gnusto.class); - - /** - * Prepare a database for use by Gnusto. This installs the Gnusto dictionary table(s) as required. If - * a Gnusto catalog is already installed in the database, it will be overwritten by this method. - */ - public void prepare(Connection con) throws SQLException, IOException { - SqlMigration migration = new SqlMigration("gnusto", 1) { - @Override - InputStream getInputStream() { - return Gnusto.class.getResourceAsStream("/lc/gnusto/mysql/schema-1.sql"); - } - }; - migrate(con, migration); - } - - /** - * Returns the stepping for the given schema, or -1 if this schema is not already installed - * in the database. This method requires that the gnu_schema_t table already be installed - * in the database, or a SQL exception is likely to be thrown. - */ - public int getSchemaStep(Connection con, String schemaName) throws SQLException { - try (PreparedStatement ps = con.prepareStatement("SELECT MAX(step) FROM gnu_schema_t WHERE nm=?")) { - ps.setString(1, schemaName); - try (ResultSet rs = ps.executeQuery()) { - if (rs.next()) { - return rs.getInt(1); - } - } - } - return -1; - } - - /** - * Attempt to run the given migration against the given connection. If the script successfully runs, - * the gnusto schema table will be updated to reflect that the new schema was installed. - */ - public void migrate(Connection con, SqlMigration migration) throws SQLException, FileNotFoundException { - logger.info("Running migration: {}", migration); - ScriptRunner sr = new ScriptRunner(con); - Reader reader = new InputStreamReader(new BufferedInputStream(migration.getInputStream())); - sr.runScript(reader); - try (PreparedStatement ps = con.prepareStatement("INSERT INTO gnu_schema_t (nm,step) VALUES (?,?)")) { - ps.setString(1, migration.getName()); - ps.setInt(2, migration.getStep()); - logger.info("Updating catalog. [nm: {}] [step: {}]", migration.getName(), migration.getStep()); - ps.execute(); - } - } - - /** - * Attempt to run the given migrations against the given connection. Loading multiple schemas at the same - * time is supported, but for a given step, the order in which the different schemas will be migrated is - * undefined. - */ - public void migrate(Connection con, List migrations) throws SQLException, FileNotFoundException { - ArrayList sorted = new ArrayList<>(migrations); - sorted.sort((o1, o2) -> ((Integer) o1.getStep()).compareTo(o2.getStep())); - - for (SqlMigration migration : migrations) { - int dbStep = getSchemaStep(con, migration.getName()); - if (dbStep < migration.getStep()) { - migrate(con, migration); - } - } - } - - public void migrate(Connection con, Path base) throws IOException, SQLException { - ArrayList migrations = new ArrayList<>(); - - Files.walkFileTree(base, new SimpleFileVisitor<>() { - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - if (file.toString().endsWith(".sql")) { - String basename = FilenameUtils.removeExtension(file.getFileName().toString()); - logger.info("Found migration. [basename: {}]", basename); - String[] fn = basename.split("-"); - migrations.add(new SqlMigration(fn[0], Integer.parseInt(fn[1])) { - @Override - InputStream getInputStream() throws FileNotFoundException { - return new FileInputStream(file.toFile()); - } - }); - } - return FileVisitResult.CONTINUE; - } - }); - - migrate(con, migrations); - } -} diff --git a/java/lc-gnusto/src/main/java/lc/gnusto/GnustoApp.java b/java/lc-gnusto/src/main/java/lc/gnusto/GnustoApp.java deleted file mode 100644 index 815fcbb705bac915abec75b07b77e3ffc6acd5c7..0000000000000000000000000000000000000000 --- a/java/lc-gnusto/src/main/java/lc/gnusto/GnustoApp.java +++ /dev/null @@ -1,48 +0,0 @@ -package lc.gnusto; - -import com.mchange.v2.c3p0.ComboPooledDataSource; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.beans.PropertyVetoException; -import java.io.IOException; -import java.nio.file.Path; -import java.sql.Connection; -import java.sql.SQLException; - -/** - * The GnustoApp applies migrations (if needed) to load a schema into a SQL database. - *

- * Limitations: For development purposes this is currently hard-coded to load into the leigh-astro development - * database. - * - * @author Alex Leigh - */ -public class GnustoApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(GnustoApp.class); - - public static void main(String args[]) throws PropertyVetoException, SQLException, IOException { - // TODO: Add a switch to prepare the database - // TODO: Make datasource configurable - if (args.length != 1) { - logger.info("Usage: GnustoApp sqldir"); - System.exit(UniversalJob.RET_BADARGS); - } - - ComboPooledDataSource cpds = new ComboPooledDataSource(); - cpds.setDriverClass("com.mysql.cj.jdbc.Driver"); - cpds.setJdbcUrl("jdbc:mysql://db1.leigh-co.com/music"); - cpds.setUser("music"); - cpds.setPassword(System.getenv("MUSIC_PW")); - - Gnusto g = new Gnusto(); - Path base = Path.of(args[0]); - try (Connection con = cpds.getConnection()) { - con.setAutoCommit(false); - // g.prepare(con); - g.migrate(con, base); - con.commit(); - } - } -} diff --git a/java/lc-gnusto/src/main/java/lc/gnusto/SqlMigration.java b/java/lc-gnusto/src/main/java/lc/gnusto/SqlMigration.java deleted file mode 100644 index fc9f1c5d57138827d9c673599788ebcd73d24c8d..0000000000000000000000000000000000000000 --- a/java/lc-gnusto/src/main/java/lc/gnusto/SqlMigration.java +++ /dev/null @@ -1,56 +0,0 @@ -package lc.gnusto; - -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.util.Objects; - -/** - * This class holds a single specific SQL migration. The migration is associated with a schema by name, as - * well as the version of that schema. - * - * @author Alex Leigh - */ -public abstract class SqlMigration { - private final String name; - private final int step; - - public SqlMigration(String name, int ver) { - this.name = name; - this.step = ver; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - SqlMigration that = (SqlMigration) o; - return step == that.step && Objects.equals(name, that.name); - } - - @Override - public int hashCode() { - return Objects.hash(name, step); - } - - public String getName() { - return name; - } - - public int getStep() { - return step; - } - - /** - * Return an input stream representing the script for this migration to the caller. It is not necessary to buffer - * the stream. - */ - abstract InputStream getInputStream() throws FileNotFoundException; - - @Override - public String toString() { - return "SqlMigration{" + - "name='" + name + '\'' + - ", step=" + step + - '}'; - } -} diff --git a/java/lc-gnusto/src/main/resources/lc/gnusto/mysql/schema-1.sql b/java/lc-gnusto/src/main/resources/lc/gnusto/mysql/schema-1.sql deleted file mode 100644 index 1ab3284b4d5021f576b9c004357a3f64cbc6cfbc..0000000000000000000000000000000000000000 --- a/java/lc-gnusto/src/main/resources/lc/gnusto/mysql/schema-1.sql +++ /dev/null @@ -1,9 +0,0 @@ -DROP TABLE IF EXISTS gnu_schema_t; -CREATE TABLE gnu_schema_t -( - nm VARCHAR(32) NOT NULL, - step INT NOT NULL, - ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); -ALTER TABLE gnu_schema_t - ADD CONSTRAINT gnu_schema_uc UNIQUE (nm, step); \ No newline at end of file diff --git a/java/lc-isf-tc/README.md b/java/lc-isf-tc/README.md deleted file mode 100644 index 0be511cc0adabc5cc8e3f355665b51476f4e1e76..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/README.md +++ /dev/null @@ -1,13 +0,0 @@ -Interactive Screen Facility / Terminal Coordinator - -This software provides a telnet-based interface to ISF screens. - -Screens consist of two files; a screen base containing the visual representation of the screen as it should be -presented to the user, and a screen definition which defines the field and other data elements of the screen. - -A screen may contain one or more widgets (fields, buttons, etc) each of which has a unique three-latter name. The -length of the name must be exactly three letters. The name is preceded by a % character and is case-insensitive. -For example, %upw. - -The screen definition consists of a JSON block which identifies the various configuration parameters for each of the -widgets on the screen. \ No newline at end of file diff --git a/java/lc-isf-tc/build.gradle b/java/lc-isf-tc/build.gradle deleted file mode 100644 index 09084d7b4f30c69dc0b96b44c0b93189f5bb92cf..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -plugins { - id 'java' -} - -group 'leighco' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-mecha') - implementation project(':mabe-lanterna') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-isf-tc/src/main/java/lc/isf/app/AppBinder.java b/java/lc-isf-tc/src/main/java/lc/isf/app/AppBinder.java deleted file mode 100644 index a59f673e16cc08b0e2fe564f68563672229cb6ed..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/app/AppBinder.java +++ /dev/null @@ -1,49 +0,0 @@ -package lc.isf.app; - -import lc.isf.screen.ScreenFactory; - -import java.util.HashMap; -import java.util.Map; - -/** - * This class contains all applications present within the system. Each application is identified with - * a unique stringname. - * - * @author Alex Leigh - * @since 1.0 - */ -public class AppBinder { - private final HashMap apps = new HashMap<>(); - public static final String APP_SYS = "sys"; - - public AppBinder() { - apps.put(APP_SYS, new ScreenApp() { - @Override - public CallReturn call(String func, Map values) { - String un = values.get("%unm"); - String pw = values.get("%upw"); - - if (un.equals("test") && pw.equals("Vancouver99")) { - return new NavigateReturn(AppBinder.APP_SYS, "main"); - } - - return new MessageReturn("Invalid login."); - } - - @Override - public ScreenFactory getScreenFactory() { - return new ScreenFactory(); - } - }); - } - - /** - * Return the given application to the caller, or null if no application by that name exists. - * - * @param name The application name. - * @return The application. - */ - public ScreenApp getApplication(String name) { - return apps.get(name); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/app/CallReturn.java b/java/lc-isf-tc/src/main/java/lc/isf/app/CallReturn.java deleted file mode 100644 index 6a489a9076974fbd7134e52f76b6cacac0684bf3..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/app/CallReturn.java +++ /dev/null @@ -1,11 +0,0 @@ -package lc.isf.app; - -/** - * Classes implementing this interface represent a response from an application call. - * - * @author Alex Leigh - * @since 1.0 - */ -public interface CallReturn { - -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/app/MessageReturn.java b/java/lc-isf-tc/src/main/java/lc/isf/app/MessageReturn.java deleted file mode 100644 index 5c4f3c3daa84586187316372ffa4cf842bad4170..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/app/MessageReturn.java +++ /dev/null @@ -1,34 +0,0 @@ -package lc.isf.app; - -import java.util.Objects; - -/** - * This form of a {@link CallReturn} indicates that a message should be displayed to the user. - * - * @author Alex Leigh - * @since 1.0 - */ -public class MessageReturn implements CallReturn { - private final String message; - - public MessageReturn(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - MessageReturn that = (MessageReturn) o; - return Objects.equals(message, that.message); - } - - @Override - public int hashCode() { - return Objects.hash(message); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/app/NavigateReturn.java b/java/lc-isf-tc/src/main/java/lc/isf/app/NavigateReturn.java deleted file mode 100644 index 1f30052bc88ed7f015810dac0524253d59361215..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/app/NavigateReturn.java +++ /dev/null @@ -1,41 +0,0 @@ -package lc.isf.app; - -import java.util.Objects; - -/** - * This return type indicates that the user should be navigated to a new screen. The destination screen does not - * have to be within the same application. - * - * @author Alex Leigh - * @since 1.0 - */ -public class NavigateReturn implements CallReturn { - private final String appName; - private final String screenName; - - public NavigateReturn(String appName, String screenName) { - this.appName = appName; - this.screenName = screenName; - } - - public String getAppName() { - return appName; - } - - public String getScreenName() { - return screenName; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - NavigateReturn that = (NavigateReturn) o; - return Objects.equals(appName, that.appName) && Objects.equals(screenName, that.screenName); - } - - @Override - public int hashCode() { - return Objects.hash(appName, screenName); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/app/ScreenApp.java b/java/lc-isf-tc/src/main/java/lc/isf/app/ScreenApp.java deleted file mode 100644 index 5354119e7abf48205631de9d83871122aaf6887b..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/app/ScreenApp.java +++ /dev/null @@ -1,18 +0,0 @@ -package lc.isf.app; - -import lc.isf.screen.ScreenFactory; - -import java.util.Map; - -public interface ScreenApp { - /** - * Perform a CALL against the application. This could result in a message being displayed to the user, or the - * session being navigated to a different screen. - */ - CallReturn call(String func, Map values); - - /** - * Return the {@link ScreenFactory} associated with this application. - */ - ScreenFactory getScreenFactory(); -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/screen/JsonScreenPackage.java b/java/lc-isf-tc/src/main/java/lc/isf/screen/JsonScreenPackage.java deleted file mode 100644 index 06e3c5ac5e6b961600dda88ccc3bbb1116a776b4..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/screen/JsonScreenPackage.java +++ /dev/null @@ -1,94 +0,0 @@ -package lc.isf.screen; - -import com.googlecode.lanterna.gui2.Button; -import lc.isf.tc.ScreenController; -import lc.isf.widget.ButtonWidget; -import lc.isf.widget.FieldWidget; -import lc.isf.widget.TextWidget; -import lc.isf.widget.Widget; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; - -public class JsonScreenPackage implements ScreenPackage { - public static final String KEY_COLS = "cols"; - public static final String KEY_ROWS = "rows"; - public static final String KEY_TYPE = "type"; - - private static final MechaLogger logger = MechaLoggerFactory.getLogger(JsonScreenPackage.class); - private final String fileBase; - private HashMap widgets = new HashMap<>(); - - public JsonScreenPackage(String fileBase, ScreenController ctl) throws IOException { - this.fileBase = fileBase; - logger.info("JSON init. [fileBase: {}]", fileBase); - try (InputStream is = getClass().getResourceAsStream(fileBase + ".json")) { - JSONObject obj = new JSONObject(is); - JSONObject widgets = obj.optJSONObject("widgets"); - if (widgets == null) return; - for (String key : widgets.keySet()) { - JSONObject def = widgets.getJSONObject(key); - String type = def.getString(KEY_TYPE); - - switch (type) { - case "field": { - logger.info("Instancing Field"); - int cols = def.optInt(KEY_COLS, 5); - FieldWidget wid = new FieldWidget(cols); - String mask = def.optString("mask", null); - if (mask != null) { - wid.getComponent().setMask(mask.charAt(0)); - } - String value = def.optString("value"); - if (value != null) wid.getComponent().setText(value); - this.widgets.put(key, wid); - } - break; - case "text": { - logger.info("Instancing Text"); - int cols = def.optInt(KEY_COLS, 5); - int rows = def.optInt(KEY_ROWS, 1); - TextWidget wid = new TextWidget(cols, rows); - String value = def.optString("value"); - if (value != null) wid.getComponent().setText(value); - this.widgets.put(key, wid); - } - break; - case "button": { - String label = def.getString("label"); - int cols = def.optInt(KEY_COLS, 5); - int rows = def.optInt(KEY_ROWS, 1); - String funcName = def.getString("call"); - ButtonWidget wid = new ButtonWidget(label, cols, rows); - wid.getComponent().addListener(new Button.Listener() { - @Override - public void onTriggered(Button button) { - ctl.call(funcName); - } - }); - this.widgets.put(key, wid); - } - break; - default: - throw new RuntimeException("Unknown widget type: " + type); - } - } - logger.info("Found widgets: {}", widgets); - } - } - - @Override - public Map getWidgets() { - return widgets; - } - - @Override - public InputStream getScreenBase() { - return getClass().getResourceAsStream(fileBase + ".scn"); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/screen/ScreenFactory.java b/java/lc-isf-tc/src/main/java/lc/isf/screen/ScreenFactory.java deleted file mode 100644 index 21def963403191f6fbb8e0681d4c8f67ee7bbecf..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/screen/ScreenFactory.java +++ /dev/null @@ -1,19 +0,0 @@ -package lc.isf.screen; - -import lc.isf.tc.ScreenController; - -import java.io.IOException; - -/** - * The place you go to make screens, of course. Screen factories are application specific, so to locate any - * given screen, you need to know the name of the application & the name of the screen. - * - * @author Alex Leigh - * @since 1.0 - */ -public class ScreenFactory { - public ScreenPackage makeScreenPkg(String name, ScreenController ctl) throws IOException { - // FIXME: Ensure this is actually a safe string - return new JsonScreenPackage("/screen/" + name, ctl); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/screen/ScreenPackage.java b/java/lc-isf-tc/src/main/java/lc/isf/screen/ScreenPackage.java deleted file mode 100644 index c210a24aee8bed252acead237b798a62746ae0f0..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/screen/ScreenPackage.java +++ /dev/null @@ -1,20 +0,0 @@ -package lc.isf.screen; - -import lc.isf.widget.Widget; - -import java.io.InputStream; -import java.util.Map; - -/** - * A screen package includes the screen base (the background) and all the widgets that appear on the screen. - * This class tracks the instanced widgets for the particular rendering environment; consequently it cannot - * be shared across multiple sessions. - * - * @author Alex Leigh - * @since 1.0 - */ -public interface ScreenPackage { - Map getWidgets(); - - InputStream getScreenBase(); -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/tc/InteractiveSession.java b/java/lc-isf-tc/src/main/java/lc/isf/tc/InteractiveSession.java deleted file mode 100644 index 7ffc81f081d581e438a289859de82e219e4d6fbd..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/tc/InteractiveSession.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.isf.tc; - -import com.googlecode.lanterna.terminal.Terminal; -import lc.isf.app.AppBinder; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.IOException; - -/** - * This class handles an individual user session. At any given time the session will be displaying a screen, - * which is coordinated by a {@link ScreenController}. The job of the session is to locate and run the first screen, - * and then to handle navigation between screens when one closes. - * - * @author Alex Leigh - * @since 1.0 - */ -public class InteractiveSession implements Runnable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(InteractiveSession.class); - private final Terminal terminal; - private final AppBinder binder; - - private ScreenPointer pointer; - - public InteractiveSession(Terminal terminal, AppBinder binder) { - this.terminal = terminal; - this.binder = binder; - - pointer = new ScreenPointer(AppBinder.APP_SYS, "login"); - } - - @Override - public void run() { - try { - //noinspection InfiniteLoopStatement - while (true) { - ScreenController sc = new ScreenController(binder.getApplication(pointer.getAppName()), - pointer.getScreenName(), - this); - sc.handle(terminal); - logger.info("Screen finished. Restarting."); - } - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public void setPointer(ScreenPointer pointer) { - this.pointer = pointer; - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/tc/Reference.java b/java/lc-isf-tc/src/main/java/lc/isf/tc/Reference.java deleted file mode 100644 index a88736e01a6f5a3b2bd1eec0be05cb65903a23c0..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/tc/Reference.java +++ /dev/null @@ -1,40 +0,0 @@ -package lc.isf.tc; - -import com.googlecode.lanterna.TerminalPosition; -import com.googlecode.lanterna.gui2.Component; -import lc.isf.widget.Widget; - -/** - * Holds a screen reference to a particular Widget. It is possible for a screen to have multiple - * references to the same widget, in which case it will be drawn multiple times. - * - * @author Alex Leigh - * @since 1.0 - */ -public class Reference { - private final TerminalPosition pos; - private final Widget widget; - - public Reference(TerminalPosition pos, Widget field) { - this.pos = pos; - this.widget = field; - } - - public TerminalPosition getPos() { - return pos; - } - - public Widget getWidget() { - return widget; - } - - /** - * Return the Lanterna component associated with this reference, while also setting its position to that of the - * reference. - */ - public Component getComponent() { - Component c = widget.getComponent(); - c.setPosition(pos); - return c; - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/tc/ScreenController.java b/java/lc-isf-tc/src/main/java/lc/isf/tc/ScreenController.java deleted file mode 100644 index 9c28aa824b26fb86fa35eec841113d1bdfbaa1dc..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/tc/ScreenController.java +++ /dev/null @@ -1,196 +0,0 @@ -package lc.isf.tc; - -import com.googlecode.lanterna.TerminalPosition; -import com.googlecode.lanterna.TerminalSize; -import com.googlecode.lanterna.graphics.ThemedTextGraphics; -import com.googlecode.lanterna.gui2.*; -import com.googlecode.lanterna.screen.Screen; -import com.googlecode.lanterna.screen.TerminalScreen; -import com.googlecode.lanterna.terminal.Terminal; -import lc.isf.app.CallReturn; -import lc.isf.app.MessageReturn; -import lc.isf.app.NavigateReturn; -import lc.isf.app.ScreenApp; -import lc.isf.screen.ScreenPackage; -import lc.isf.widget.Widget; -import lc.mecha.lang.StringValue; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * This "alternative" implementation experiments with overriding the default Lanterna rendering behavior to provide - * the desired screen positional environment. - * - * @author Alex Leigh - * @since 1.0 - */ -public class ScreenController { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ScreenController.class); - - // TODO: Make static - private final Pattern tokenPattern = Pattern.compile("%(\\w\\w\\w)"); - private final ScreenApp app; - private final ScreenPackage pkg; - private Window window; - private MultiWindowTextGUI textGUI; - private ArrayList references; - private InteractiveSession session; - - public ScreenController(ScreenApp app, String screenName, InteractiveSession session) throws IOException { - this.app = app; - pkg = app.getScreenFactory().makeScreenPkg(screenName, this); - this.session = session; - } - - public Map gatherValues() { - HashMap values = new HashMap<>(); - - /* - * We iterate the pkg instead of the screen to ensure that we send ALL values that are configured - * in the definition, not just those that happen to be displayed on the screen. This gives the - * opportunity for behavior similar to HTML hidden form fields. - */ - - for (Map.Entry entry : pkg.getWidgets().entrySet()) { - Widget w = entry.getValue(); - if (w instanceof StringValue) { - values.put(entry.getKey(), ((StringValue) w).getValue()); - } - } - - logger.info("Gathered values: {}", values); - - return values; - } - - public void handle(Terminal terminal) { - try { - Screen screen = new TerminalScreen(terminal); - screen.startScreen(); - textGUI = new MultiWindowTextGUI(screen); - references = new ArrayList<>(); - ArrayList lines = new ArrayList<>(); - - // textGUI.setTheme(LanternaThemes.getRegisteredTheme("businessmachine")); - - // Open the screen definition & search it for references - try (InputStream is = pkg.getScreenBase()) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(is))) { - int i = 0; - while (reader.ready()) { - String line = reader.readLine(); - - Matcher m = tokenPattern.matcher(line); - if (m.find()) { - logger.info("Group count: {}", m.groupCount()); - for (int g = 0; g < m.groupCount(); g++) { - String grp = m.group(g); - logger.info("Found: {} {}", grp, m.start()); - - Widget f = pkg.getWidgets().get(grp); - - if (f == null) { - line = line.replace(grp, "%ERR"); - } else { - // Replace the match with blanks so it doesn't draw. - line = line.replace(grp, " "); - references.add(new Reference(new TerminalPosition(m.start(), i), f)); - } - } - } - lines.add(line); - i++; - } - } - } - - // At this point, references is populated & lines contains the background for the content panel - - Panel contentArea = new Panel(); - contentArea.setBackgroundRenderer(new BackgroundRenderer() { - @Override - public void render(ThemedTextGraphics graphics, Panel panel) { - int i = 0; - for (String line : lines) { - graphics.putString(0, i, line); - i++; - } - } - }); - - contentArea.setLayoutManager(new AbsoluteLayout()); - window = new BasicWindow(); - window.setHints(Arrays.asList(Window.Hint.CENTERED, - Window.Hint.NO_DECORATIONS, - Window.Hint.NO_POST_RENDERING)); - - // The window needs to be AT LEAST as tall/wide as the screen base, or else it will be cut off. - - int maxLen = 0; - for (String line : lines) { - int z = line.length(); - if (z > maxLen) maxLen = z; - } - - window.setFixedSize(new TerminalSize(maxLen, lines.size())); - - for (Reference ref : references) { - Component c = ref.getComponent(); - contentArea.addComponent(c); - } - - window.setComponent(contentArea); - textGUI.addWindowAndWait(window); - screen.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - /** - * Display a popup message to the user in a modal dialog. - * - * @param msg The message to display to the user. - */ - public void popupMessage(String msg) { - Panel contentArea = new Panel(); - Window win = new BasicWindow(); - win.setHints(List.of(Window.Hint.CENTERED)); - - contentArea.addComponent(new Label(msg)); - Button b = new Button("OK"); - b.addListener(button -> win.close()); - contentArea.addComponent(b); - win.setComponent(contentArea); - textGUI.addWindow(win); - } - - public void process(CallReturn rv) { - logger.info("Processing call return: {}", rv); - if (rv instanceof MessageReturn) { - popupMessage(((MessageReturn) rv).getMessage()); - } else if (rv instanceof NavigateReturn) { - ScreenPointer ptr = new ScreenPointer((NavigateReturn) rv); - session.setPointer(ptr); - window.close(); - } else { - popupMessage("ERROR: Unknown call return class."); - } - } - - /** - * Called by the screen widgets when a function is invoked. This is responsible for routing the call to the - * application. - */ - public void call(String func) { - process(app.call(func, gatherValues())); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/tc/ScreenPointer.java b/java/lc-isf-tc/src/main/java/lc/isf/tc/ScreenPointer.java deleted file mode 100644 index c79a32dfac8527d2f2fa60190e28b5c48798fac1..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/tc/ScreenPointer.java +++ /dev/null @@ -1,41 +0,0 @@ -package lc.isf.tc; - -import lc.isf.app.NavigateReturn; - -import java.util.Objects; - -public class ScreenPointer { - private final String appName; - private final String screenName; - - public ScreenPointer(String appName, String screenName) { - this.appName = appName; - this.screenName = screenName; - } - - public ScreenPointer(NavigateReturn nav) { - this.appName = nav.getAppName(); - this.screenName = nav.getScreenName(); - } - - public String getAppName() { - return appName; - } - - public String getScreenName() { - return screenName; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ScreenPointer that = (ScreenPointer) o; - return Objects.equals(appName, that.appName) && Objects.equals(screenName, that.screenName); - } - - @Override - public int hashCode() { - return Objects.hash(appName, screenName); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/tc/TerminalControllerService.java b/java/lc-isf-tc/src/main/java/lc/isf/tc/TerminalControllerService.java deleted file mode 100644 index b56e82245336e2b560612c844f708c20b31aad1b..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/tc/TerminalControllerService.java +++ /dev/null @@ -1,45 +0,0 @@ -package lc.isf.tc; - -import com.googlecode.lanterna.terminal.ansi.TelnetTerminal; -import com.googlecode.lanterna.terminal.ansi.TelnetTerminalServer; -import lc.isf.app.AppBinder; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.IOException; - -/** - * This class listens on a TCP port for plaintext Telnet connections. When a connection is received, it launches - * an {@link InteractiveSession} for that session. - * - * @author Alex Leigh - * @since 1.0 - */ -public class TerminalControllerService { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(TerminalControllerService.class); - int telnetPort = 5252; - - public static void main(String[] args) { - new TerminalControllerService().run(); - } - - public void run() { - try { - final AppBinder binder = new AppBinder(); - System.err.print("Waiting for incoming telnet connection on port " + telnetPort + " ... "); - System.err.flush(); - TelnetTerminalServer tts = new TelnetTerminalServer(telnetPort); - while (true) { - try { - TelnetTerminal rawTerminal = tts.acceptConnection(); - System.err.println("Ok, got it!"); - new Thread(new InteractiveSession(rawTerminal, binder)).start(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } catch (IOException ioe) { - throw new RuntimeException(ioe); - } - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/widget/ButtonWidget.java b/java/lc-isf-tc/src/main/java/lc/isf/widget/ButtonWidget.java deleted file mode 100644 index 6e27e57afed0066b92b5a7a80b34737228eb2d4c..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/widget/ButtonWidget.java +++ /dev/null @@ -1,19 +0,0 @@ -package lc.isf.widget; - -import com.googlecode.lanterna.TerminalSize; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -public class ButtonWidget implements Widget { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ButtonWidget.class); - private final com.googlecode.lanterna.gui2.Button component; - - public ButtonWidget(String text, int cols, int rows) { - component = new com.googlecode.lanterna.gui2.Button(text).setSize(new TerminalSize(cols, rows)); - } - - @Override - public com.googlecode.lanterna.gui2.Button getComponent() { - return component; - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/widget/FieldWidget.java b/java/lc-isf-tc/src/main/java/lc/isf/widget/FieldWidget.java deleted file mode 100644 index f49475eb0841834b42b296d831de26296fae0301..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/widget/FieldWidget.java +++ /dev/null @@ -1,29 +0,0 @@ -package lc.isf.widget; - -import com.googlecode.lanterna.TerminalSize; -import com.googlecode.lanterna.gui2.TextBox; -import lc.mecha.lang.StringValue; - -/** - * A basic single-line field. We call it a field for the sake of tradition, but Lanterna refers to it as - * {@link TextBox} because both styles of inputs are served with the same control in that library. - * - * @author Alex Leigh - * @since 1.0 - */ -public class FieldWidget implements Widget, StringValue { - private TextBox component; - - public FieldWidget(int cols) { - component = new TextBox().setSize(new TerminalSize(cols, 1)); - } - - public TextBox getComponent() { - return component; - } - - @Override - public String getValue() { - return component.getText(); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/widget/TextWidget.java b/java/lc-isf-tc/src/main/java/lc/isf/widget/TextWidget.java deleted file mode 100644 index 9d2cc5f0c15e620f71fdd7a84b3194ef8386c415..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/widget/TextWidget.java +++ /dev/null @@ -1,28 +0,0 @@ -package lc.isf.widget; - -import com.googlecode.lanterna.TerminalSize; -import com.googlecode.lanterna.gui2.TextBox; -import lc.mecha.lang.StringValue; - -/** - * An ISF widget which represents a multi-line text area. - * - * @author Alex Leigh - * @since 1.0 - */ -public class TextWidget implements Widget, StringValue { - private TextBox component; - - public TextWidget(int cols, int rows) { - component = new TextBox("", TextBox.Style.MULTI_LINE).setSize(new TerminalSize(cols, rows)); - } - - public TextBox getComponent() { - return component; - } - - @Override - public String getValue() { - return component.getText(); - } -} diff --git a/java/lc-isf-tc/src/main/java/lc/isf/widget/Widget.java b/java/lc-isf-tc/src/main/java/lc/isf/widget/Widget.java deleted file mode 100644 index 8a8b350b00cb59e6c55ba6b674f9a18e01ed77e7..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/java/lc/isf/widget/Widget.java +++ /dev/null @@ -1,17 +0,0 @@ -package lc.isf.widget; - -import com.googlecode.lanterna.gui2.Component; - -/** - * A widget draws from a specified upper-left position on the screen. - * - * @author Alex Leigh - * @since 1.0 - */ -public interface Widget { - /** - * Return the Lanterna {@link Component} associated with this widget. This will not set the position of the - * component; to do that, call getComponent() on {@link lc.isf.tc.Reference} instead. - */ - Component getComponent(); -} diff --git a/java/lc-isf-tc/src/main/resources/screen/login.json b/java/lc-isf-tc/src/main/resources/screen/login.json deleted file mode 100644 index ea5d8eeb1059d176d1268c74f50561fb01bde089..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/resources/screen/login.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "widgets": { - "%unm": { - "type": "field", - "cols": 11, - "value": "test" - }, - "%upw": { - "cols": 11, - "type": "field", - "mask": "*" - }, - "%okb": { - "type": "button", - "label": "LOGON", - "cols": 11, - "rows": 1, - "call": "login" - } - } -} \ No newline at end of file diff --git a/java/lc-isf-tc/src/main/resources/screen/login.scn b/java/lc-isf-tc/src/main/resources/screen/login.scn deleted file mode 100644 index ac6d772244c83e2a96275729ec2f0d2877492083..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/resources/screen/login.scn +++ /dev/null @@ -1,12 +0,0 @@ - - LEIGH&CO Interactive Screen Facility mk1 - - +-------------------+ - | L E I G H & C O | - +-------------------+------------+ - | Username . . . . %unm | - GDN Password ------> | Password . . . . %upw | - | %okb | - +--------------------------------+ - - \ No newline at end of file diff --git a/java/lc-isf-tc/src/main/resources/screen/main.json b/java/lc-isf-tc/src/main/resources/screen/main.json deleted file mode 100644 index 02ad2de2d85e0f1e168e56d65fc6b164c19a91c0..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/resources/screen/main.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "widgets": { - "%cmd": { - "type": "field", - "cols": 3 - } - } -} \ No newline at end of file diff --git a/java/lc-isf-tc/src/main/resources/screen/main.scn b/java/lc-isf-tc/src/main/resources/screen/main.scn deleted file mode 100644 index 90931448264071ca41d27d7e3e3b5a87d8884f28..0000000000000000000000000000000000000000 --- a/java/lc-isf-tc/src/main/resources/screen/main.scn +++ /dev/null @@ -1,8 +0,0 @@ - - - ** MAIN MENU ** - - 1 => VPN Configuration - - -CMD=>%cmd \ No newline at end of file diff --git a/java/lc-isles-svc/build.gradle b/java/lc-isles-svc/build.gradle deleted file mode 100644 index 0b119d7d5d172d26f609d89b7ddb23853e39d8fb..0000000000000000000000000000000000000000 --- a/java/lc-isles-svc/build.gradle +++ /dev/null @@ -1,46 +0,0 @@ -plugins { - id 'java' - id 'application' - id "com.palantir.docker" version "0.33.0" -} - -group 'leighco' -version '1.7-SNAPSHOT' - -application { - mainClass = 'lc.isles.svc.IslesService' -} - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-isles') - implementation project(':lc-zero-sdk') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} - - -docker { - name "docker.leigh-co.com/${project.name}:${project.version}" - files tasks.distTar.outputs -} - -task dockerfile() { - doLast { - new File(projectDir, 'Dockerfile').text = """FROM docker.leigh-co.com/openjdk:17-alpine -EXPOSE 52018 -RUN mkdir /app -COPY ${project.name}-${project.version}.tar /dist.tar -RUN tar xfv /dist.tar -RUN rm /dist.tar -ENTRYPOINT ["/${project.name}-${project.version}/bin/${project.name}"] -""" - } -} diff --git a/java/lc-isles-svc/src/main/java/lc/isles/svc/IslesService.java b/java/lc-isles-svc/src/main/java/lc/isles/svc/IslesService.java deleted file mode 100644 index aa528c3bbf12d955aadc4502248288b913a7d92b..0000000000000000000000000000000000000000 --- a/java/lc-isles-svc/src/main/java/lc/isles/svc/IslesService.java +++ /dev/null @@ -1,20 +0,0 @@ -package lc.isles.svc; - -import lc.isles.SMS; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.pircbotx.exception.IrcException; - -import java.io.IOException; - -public class IslesService { - public static final String ENV_TWILIO_TOKEN = "TWILIO_TOKEN"; - public static final String ENV_TWILIO_SID = "TWILIO_SID"; - private static final MechaLogger logger = MechaLoggerFactory.getLogger(IslesService.class); - - public static void main(String[] args) throws IOException, IrcException, InterruptedException { - String token = System.getenv(ENV_TWILIO_TOKEN); - String sid = System.getenv(ENV_TWILIO_SID); - new SMS(sid, token); - } -} diff --git a/java/lc-isles/build.gradle b/java/lc-isles/build.gradle deleted file mode 100644 index f717572e03095af6215605145b295af677171342..0000000000000000000000000000000000000000 --- a/java/lc-isles/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -group 'leighco' -version '19.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-mecha') - api project(':lc-mecha-http-server') - api 'org.pircbotx:pircbotx:2.0.1' - api 'com.theokanning.openai-gpt3-java:api:0.8.1' - api group: "com.twilio.sdk", name: "twilio", version: "9.2.0" - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-isles/script/ivr.sh b/java/lc-isles/script/ivr.sh deleted file mode 100755 index b1d519e074d8e6567d637c4178f91c91b532db72..0000000000000000000000000000000000000000 --- a/java/lc-isles/script/ivr.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -say --data-format=LEF32@22050 -o isles-main.wav -v samantha "LEECO G D N, To dial a GDN number, press 1. To leave an emergency message, press 8" -say --data-format=LEF32@22050 -o unsecure.wav -v samantha "This line is unsecure" - diff --git a/java/lc-isles/src/main/java/lc/isles/IRCRelay.java b/java/lc-isles/src/main/java/lc/isles/IRCRelay.java deleted file mode 100644 index 0a6f79f6893d1a9bb407ec68a64143558b886468..0000000000000000000000000000000000000000 --- a/java/lc-isles/src/main/java/lc/isles/IRCRelay.java +++ /dev/null @@ -1,42 +0,0 @@ -package lc.isles; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.pircbotx.exception.IrcException; - -import java.io.IOException; -import java.util.HashMap; - -import static java.lang.Thread.sleep; - -public class IRCRelay { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(IRCRelay.class); - private final HashMap subscribers = new HashMap<>(); - - public IRCRelay(SMS sms) throws IOException, IrcException, InterruptedException { - // Prewire list for existing subscriptions - subscribers.put("+14254953016", new IRCSubscriber(sms, "+14254953016", "mattSMS")); - sleep(5000); - subscribers.put("+14257365172", new IRCSubscriber(sms, "+14257365172", "mariaSMS")); - } - - public synchronized IRCSubscriber getSubscriber(String number) throws IOException, IrcException { - IRCSubscriber sub = subscribers.get(number); - /* - if (sub == null) { - String nick = "sms" + number.substring(number.length() - 4); - sub = new IRCSubscriber(sms, number, nick); - subscribers.put(number, sub); - } - */ - return sub; - } - - public void receiveFromSms(String from, String message) throws IOException, IrcException { - IRCSubscriber sub = getSubscriber(from); - if (sub != null) { - logger.info("Sending message to SMS channel: {} {}", sub, message); - sub.sendMessage(message); - } - } -} diff --git a/java/lc-isles/src/main/java/lc/isles/IRCSubscriber.java b/java/lc-isles/src/main/java/lc/isles/IRCSubscriber.java deleted file mode 100644 index 2dbe5d493b21cb67a0bb86ef419fbabda9b74863..0000000000000000000000000000000000000000 --- a/java/lc-isles/src/main/java/lc/isles/IRCSubscriber.java +++ /dev/null @@ -1,73 +0,0 @@ -package lc.isles; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.commons.lang.StringUtils; -import org.pircbotx.Configuration; -import org.pircbotx.PircBotX; -import org.pircbotx.exception.IrcException; -import org.pircbotx.hooks.ListenerAdapter; -import org.pircbotx.hooks.types.GenericMessageEvent; - -import java.io.IOException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class IRCSubscriber extends ListenerAdapter { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(IRCSubscriber.class); - private final PircBotX bot; - private final String number; - private final SMS sms; - Pattern p = Pattern.compile("\\G\\s*(.{1," + 400 + "})(?=\\s|$)", Pattern.DOTALL); - - private final String channel = "#gnomes"; - - public IRCSubscriber(SMS sms, String number, String name) throws IOException, IrcException { - this.number = number; - this.sms = sms; - - //Configure what we want our bot to do - Configuration configuration = new Configuration.Builder() - .setName("ISLES IRC Relay") //Set the nick of the bot. CHANGE IN YOUR CODE - .setServer("irc0.gdn.leigh-co.com", 6667) //Join the freenode network - .addAutoJoinChannel(channel) //Join the official #pircbotx channel - .addListener(this) //Add our listener that will be called on Events - .setName(name) - .buildConfiguration(); - - //Create our bot with the configuration - bot = new PircBotX(configuration); - //Connect to the server - new Thread(() -> { - try { - bot.startBot(); - logger.info("startBot() exited."); - } catch (IOException | IrcException e) { - throw new RuntimeException(e); - } - }).start(); - } - - public void sendMessage(String msg) { - logger.info("Sending message to IRC channel: {}", msg); - - Matcher m = p.matcher(msg); - while (m.find()) { - String subStr = m.group(1); - if (!StringUtils.isBlank(subStr)) - bot.sendIRC().message(channel, m.group(1)); - } - } - - public void onGenericMessage(GenericMessageEvent event) throws Exception { - if (event.getUser().getNick().equals("irc0.leigh-co.com")) return; - - StringBuilder smsText = new StringBuilder(); - smsText.append("<"); - smsText.append(event.getUser().getNick()); - smsText.append("> "); - smsText.append(event.getMessage()); - - sms.sendMessage(number, smsText.toString()); - } -} diff --git a/java/lc-isles/src/main/java/lc/isles/SMS.java b/java/lc-isles/src/main/java/lc/isles/SMS.java deleted file mode 100644 index 29f6f1458e46313620a5c5926cfb06bdebcf2a28..0000000000000000000000000000000000000000 --- a/java/lc-isles/src/main/java/lc/isles/SMS.java +++ /dev/null @@ -1,98 +0,0 @@ -package lc.isles; - -import com.twilio.Twilio; -import com.twilio.rest.api.v2010.account.Message; -import com.twilio.type.PhoneNumber; -import lc.mecha.fabric.HandlerStatus; -import lc.mecha.fabric.LiteralMessageSubscription; -import lc.mecha.http.server.PrefixedHandler; -import lc.mecha.http.server.WebPipeline; -import lc.mecha.http.server.WebServer; -import lc.mecha.http.server.WebTransaction; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.StringAccumulatorV2; -import org.pircbotx.exception.IrcException; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.Set; - -/** - * A bi-directional messaging interface to the Twilio platform. Sent messages are handled directly with the API, - * while messages are received from a webhook URL that must be configured on the Twilio side. - * - * @author C. Alexander Leigh - */ -public class SMS extends PrefixedHandler { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SMS.class); - // Find your Account Sid and Token at twilio.com/user/account - public final String twilioAccountSid; - public final String twillioAccountToken; - private final IRCRelay relay = new IRCRelay(this); - private final WebServer ws; - - public SMS(String twilioAccountSid, String twillioAccountToken) throws IOException, - IrcException, InterruptedException { - super(Set.of("/isles/sms")); - - this.twilioAccountSid = twilioAccountSid; - this.twillioAccountToken = twillioAccountToken; - - ws = new WebServer(8080, 32); - ws.getWebPipeline().getServicePipeline().getSubscriptionBase().subscribe( - new LiteralMessageSubscription<>(this, WebPipeline.KEY_SERVICE)); - ws.start(); - } - - /** - * Send a new SMS message out this connection to Twilio. - */ - public void sendMessage(String to, String msg) { - Twilio.init(twilioAccountSid, twillioAccountToken); - Message message = Message.creator(new PhoneNumber(to), - new PhoneNumber("+15344447537"), - msg).create(); - logger.info("message: {}", message); - - System.out.println(message.getSid()); - } - - - @Override - public HandlerStatus handlePrefixedWebRequest(WebTransaction request) throws Throwable { - //[qtp1843368112-33] INFO lc.isles.SMS - WebHook called: {ToCountry=[US], - // MediaContentType0=[image/jpeg],ToState=[AZ],SmsMessageSid=[MMe25a91c94c0d065ee15d19149d3461ba], - // NumMedia=[1],ToCity=[],FromZip=[],SmsSid=[MMe25a91c94c0d065ee15d19149d3461ba], - // FromState=[WA],SmsStatus=[received],FromCity=[],Body=[],FromCountry=[US], - // To=[+16029627321],ToZip=[],NumSegments=[1],ReferralNumMedia=[0], - // MessageSid=[MMe25a91c94c0d065ee15d19149d3461ba], - // AccountSid=[AC0e799197a171826ada7aeef2b246f882], - // From=[+12063056616], - // MediaUrl0=[https://api.twilio.com/2010-04-01/Accounts/AC0e799197a171826ada7aeef2b246f882/Messages/MMe25a91c94c0d065ee15d19149d3461ba/Media/MEc9c99a97866d82029e527eb2e51a7171], - // ApiVersion=[2010-04-01]} - - logger.info("WebHook called: {}", request.httpServletRequest.getParameterMap()); - - String body = request.httpServletRequest.getParameter("Body"); - logger.info("Body: {}", body); - - // This is fucking awful. - String otherBody = new String(body.getBytes(StandardCharsets.UTF_8)); - - StringAccumulatorV2 sa = new StringAccumulatorV2(" "); - sa.add(request.httpServletRequest.getParameter("Body")); - - int numMedia = Integer.parseInt(request.httpServletRequest.getParameter("NumMedia")); - for (int i = 0; i < numMedia; i++) { - String mediaUrl = request.httpServletRequest.getParameter("MediaUrl" + i); - sa.add(mediaUrl); - } - - relay.receiveFromSms(request.httpServletRequest.getParameter("From"), sa.asString()); - - request.httpServletResponse.setStatus(200); - request.httpServletResponse.getOutputStream().write("OK".getBytes()); - return HandlerStatus.BREAK; - } -} diff --git a/java/lc-junk/build.gradle b/java/lc-junk/build.gradle deleted file mode 100644 index 7065f752a7dffd2d87475a5dea4be3888607445d..0000000000000000000000000000000000000000 --- a/java/lc-junk/build.gradle +++ /dev/null @@ -1,20 +0,0 @@ -plugins { - id 'java' -} - -group 'leighco' -version '19.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-mecha') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-junk/src/main/java/lc/junk/MsgGen.java b/java/lc-junk/src/main/java/lc/junk/MsgGen.java deleted file mode 100644 index ee12b5101908076bae672a5c77f7cd77a4553c13..0000000000000000000000000000000000000000 --- a/java/lc-junk/src/main/java/lc/junk/MsgGen.java +++ /dev/null @@ -1,16 +0,0 @@ -package lc.junk; - -import lc.mecha.json.JSONArray; -import lc.mecha.json.JSONObject; - -public class MsgGen { - public static void main(String[] args) { - JSONObject obj = new JSONObject(); - JSONArray arr = new JSONArray(); - obj.put("symbols", arr); - arr.put(new JSONObject().put("name","lc.test").put("value","1234")); - - System.out.println(obj); - - } -} diff --git a/java/lc-junk/src/main/java/lc/junk/NumToWords.java b/java/lc-junk/src/main/java/lc/junk/NumToWords.java deleted file mode 100644 index 4da07d90b5679e9d4db9efb5ae1850c369b9dd33..0000000000000000000000000000000000000000 --- a/java/lc-junk/src/main/java/lc/junk/NumToWords.java +++ /dev/null @@ -1,114 +0,0 @@ -package lc.junk; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.StringAccumulatorV2; - -/** - * This demonstration class converts an integer to a word format. For example, "109" becomes "one hundred nine". - * - * @author Alex Leigh - */ -public class NumToWords { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(NumToWords.class); - private final static int BILLION = 1000000000; - private final static int MILLION = 1000000; - private final static int HUNDRED = 100; - private final static int THOU = 1000; - private final static int TEN = 10; - - private static final String[] tensNames = { - "", - "ten", - "twenty", - "thirty", - "forty", - "fifty", - "sixty", - "seventy", - "eighty", - "ninety" - }; - - private static final String[] numNames = { - "", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "ten", - "eleven", - "twelve", - "thirteen", - "fourteen", - "fifteen", - "sixteen", - "seventeen", - "eighteen", - "nineteen" - }; - - /** - * Convert a number between 0...999 to a string representation and append it to the - * provided {@link StringAccumulatorV2}. - */ - private static void underThousand(StringAccumulatorV2 sa, int number) { - if (number >= 100) { - int hundreds = number / HUNDRED; - sa.push(numNames[hundreds]); - sa.push("hundred"); - number %= HUNDRED; - } - - if (number > 19) { - int tens = number / TEN; - sa.push(tensNames[tens]); - number %= TEN; - } - - if (number > 0) - sa.push(numNames[number]); - } - - /** - * Convert a number to a string representation and append it to the provided {@link StringAccumulatorV2} for - * the given scale (1000, 100000, etc). If a sufficient quantity of that scale is detected the postfix - * is also appended to the string. The remainder of the number is returned. - */ - private static int convertScale(StringAccumulatorV2 sa, int number, int scale, String postfix) { - int n = number / scale; - if (n == 0) return number; - - if (n > 0) { - underThousand(sa, n); - sa.push(postfix); - number %= scale; - } - - return number; - } - - /** - * Convert a number to a word representation. This implementation supports the English culture through - * billions. - */ - public static String convert(int number) { - StringAccumulatorV2 sa = new StringAccumulatorV2(" "); - - if (number == 0) return "zero"; - - number = convertScale(sa, number, BILLION, "billion"); - number = convertScale(sa, number, MILLION, "million"); - number = convertScale(sa, number, THOU, "thousand"); - - if (number > 0) - underThousand(sa, number); - - return sa.asString(); - } -} diff --git a/java/lc-junk/src/main/java/lc/junk/accelbyte/JsonExample.java b/java/lc-junk/src/main/java/lc/junk/accelbyte/JsonExample.java deleted file mode 100644 index ee341db5440f7bb5f2799bcc383e95803c0de1cf..0000000000000000000000000000000000000000 --- a/java/lc-junk/src/main/java/lc/junk/accelbyte/JsonExample.java +++ /dev/null @@ -1,11 +0,0 @@ -package lc.junk.accelbyte; - -import lc.mecha.json.JSONObject; - -public class JsonExample { - public static void main(String[] args) { - JSONObject obj = new JSONObject("{\"last\":\"Leigh\",\"first\":\"Alex\"}"); - System.out.print(obj.getString("first")); - - } -} diff --git a/java/lc-junk/src/test/java/lc/junk/NumToWordsTest.java b/java/lc-junk/src/test/java/lc/junk/NumToWordsTest.java deleted file mode 100644 index 6689964aacb9cd81b98920d38602e6021359edc6..0000000000000000000000000000000000000000 --- a/java/lc-junk/src/test/java/lc/junk/NumToWordsTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package lc.junk; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class NumToWordsTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(NumToWordsTest.class); - - @Test - public void testNumToWords() { - String s; - - s = NumToWords.convert(0); - assertEquals("zero", s); - - logger.info("Value: {}", s); - s = NumToWords.convert(1); - logger.info("Value: {}", s); - s = NumToWords.convert(16); - logger.info("Value: {}", s); - s = NumToWords.convert(100); - logger.info("Value: {}", s); - s = NumToWords.convert(118); - logger.info("Value: {}", s); - s = NumToWords.convert(200); - logger.info("Value: {}", s); - s = NumToWords.convert(219); - logger.info("Value: {}", s); - s = NumToWords.convert(800); - logger.info("Value: {}", s); - s = NumToWords.convert(801); - logger.info("Value: {}", s); - s = NumToWords.convert(1316); - logger.info("Value: {}", s); - s = NumToWords.convert(1000000); - logger.info("Value: {}", s); - s = NumToWords.convert(2000000); - logger.info("Value: {}", s); - s = NumToWords.convert(3000200); - logger.info("Value: {}", s); - s = NumToWords.convert(700000); - logger.info("Value: {}", s); - s = NumToWords.convert(9000000); - logger.info("Value: {}", s); - s = NumToWords.convert(9001000); - logger.info("Value: {}", s); - s = NumToWords.convert(123456789); - logger.info("Value: {}", s); - } -} diff --git a/java/lc-leighcraft/LICENSE.md b/java/lc-leighcraft/LICENSE.md deleted file mode 100644 index e01b85a26c64058e6bc364db4c1527d46625cd1b..0000000000000000000000000000000000000000 --- a/java/lc-leighcraft/LICENSE.md +++ /dev/null @@ -1 +0,0 @@ -Not for distribution. All rights reserved. \ No newline at end of file diff --git a/java/lc-leighcraft/build.gradle b/java/lc-leighcraft/build.gradle deleted file mode 100644 index 137348c6daeaafe1f758642ba1e0b514e34df588..0000000000000000000000000000000000000000 --- a/java/lc-leighcraft/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -plugins { - id 'java' -} - -group 'leighco' -version '1.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-mecha') - implementation 'io.github.jglrxavpok.hephaistos:common:2.5.3' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-leighcraft/src/main/java/lc/leighcraft/test/ChunkSectionGeneratorApp.java b/java/lc-leighcraft/src/main/java/lc/leighcraft/test/ChunkSectionGeneratorApp.java deleted file mode 100644 index d888b9062cfb6e951736f2968cbd29a615ed9063..0000000000000000000000000000000000000000 --- a/java/lc-leighcraft/src/main/java/lc/leighcraft/test/ChunkSectionGeneratorApp.java +++ /dev/null @@ -1,53 +0,0 @@ -package lc.leighcraft.test; - -import lc.mecha.json.JSONArray; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.Random; -import java.util.zip.GZIPOutputStream; - -/** - * This class generates test chunk sections for the purposes of testing serialization & compression - * implementations. - *

- * Initial testing shows a worst-case 16x chunk section to be about 21.4KB uncompressed or 9.5KB compressed - * with GZIP. Other compression algorithms might produce bigger results. Best-case chunk section will - * provide substantially better results due to runs on the block ids. - * - * @author C. Alexander Leigh - * @since 1.0 - */ -public class ChunkSectionGeneratorApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ChunkSectionGeneratorApp.class); - - public static void main(String args[]) throws IOException { - JSONArray blockIds = new JSONArray(); - Random r = new Random(); - - // Generate a fake section. Note this is a worst-case section since all the block-ids are going - // to be random. Uniform block-ids are much more likely to compress well. - for (int i = 0; i < 4096; i++) { - blockIds.put(r.nextInt() % 4096); - } - JSONObject section = new JSONObject(); - section.put("blocks", blockIds); - - // Naively encode the string to UTF8 and see how big it is. - String s = section.toString(); - logger.info("Section: [len: {}]", s.getBytes(StandardCharsets.UTF_8).length); - - // Attempt to write the same data into GZIP format so we can see the size difference. - try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) { - try (GZIPOutputStream gos = new GZIPOutputStream(bos)) { - gos.write(s.getBytes(StandardCharsets.UTF_8)); - gos.close(); - logger.info("GZIP [len: {}]", bos.toByteArray().length); - } - } - } -} \ No newline at end of file diff --git a/java/lc-leighcraft/src/main/java/lc/leighcraft/test/RegionConverter.java b/java/lc-leighcraft/src/main/java/lc/leighcraft/test/RegionConverter.java deleted file mode 100644 index d52da0f0dfc8d9614e8d0bc0d60f3dd03bf25567..0000000000000000000000000000000000000000 --- a/java/lc-leighcraft/src/main/java/lc/leighcraft/test/RegionConverter.java +++ /dev/null @@ -1,43 +0,0 @@ -package lc.leighcraft.test; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.jglrxavpok.hephaistos.mca.AnvilException; -import org.jglrxavpok.hephaistos.mca.BlockState; -import org.jglrxavpok.hephaistos.mca.ChunkColumn; -import org.jglrxavpok.hephaistos.mca.RegionFile; - -import java.io.File; -import java.io.IOException; -import java.io.RandomAccessFile; - -/** - * This class attempts to read the contents of chunk 0,0 in a given Anvil file and print it out to the - * screen. - * - * @author C. Alexander Leigh - * @since 1.0 - */ -public class RegionConverter { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(RegionConverter.class); - - public static void main(String args[]) throws IOException, AnvilException { - try (RandomAccessFile file = new RandomAccessFile(new File("c:/Users/aleigh/Desktop/example.mca"), "r")) { - RegionFile region = new RegionFile(file, 0, 0); - ChunkColumn column0_0 = region.getChunk(0, 0); - - if (column0_0 == null) { - throw new IllegalAccessError("Chunk not found in .mca file"); - } - - for (int z = 0; z < 16; z++) { - for (int x = 0; x < 16; x++) { - for (int y = column0_0.getMinY(); y <= column0_0.getMaxY(); y++) { - BlockState bs = column0_0.getBlockState(x, y, z); - logger.info("{} {} {} -> {} {}", x, y, z, bs.getName(), bs.getProperties()); - } - } - } - } - } -} diff --git a/java/lc-lighting/LICENSE.md b/java/lc-lighting/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-lighting/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-lighting/build.gradle b/java/lc-lighting/build.gradle deleted file mode 100644 index 9a77b76210ceff41fb200f772c803f9391a5b8ee..0000000000000000000000000000000000000000 --- a/java/lc-lighting/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -plugins { - id 'java' -} - -group 'leigh' -version '1.1-SNAPSHOT' -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 -repositories { - mavenCentral() -} - -dependencies { - implementation project (':lc-mecha') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/java/lc-lighting/src/main/java/lc/lighting/net/SACNTransmitter.java b/java/lc-lighting/src/main/java/lc/lighting/net/SACNTransmitter.java deleted file mode 100644 index 00df364304a6a1126b173f67a83d909e49481558..0000000000000000000000000000000000000000 --- a/java/lc-lighting/src/main/java/lc/lighting/net/SACNTransmitter.java +++ /dev/null @@ -1,115 +0,0 @@ -package lc.lighting.net; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.IOException; -import java.net.DatagramPacket; -import java.net.DatagramSocket; -import java.net.InetAddress; -import java.net.SocketException; -import java.nio.ByteBuffer; -import java.util.UUID; - -public class SACNTransmitter { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SACNTransmitter.class); - private static final int E131_PACKET_LEN = 638; - private static final int E131_SEQUENCE_OFS = 111; - private static final int E131_UNIVERSE_ID_HI = 113; - private static final int E131_UNIVERSE_ID_LOW = 114; - private static final int E131_DMX_PAYLOAD_OFS = 126; - private static final int E131_DMX_PAYLOAD_SIZE = 512; - - private final DatagramSocket ds = new DatagramSocket(); - private final InetAddress dstAddr; - private final int dstPort; - private final UUID controllerId = UUID.randomUUID(); - private final byte[] data = new byte[E131_PACKET_LEN]; - private final int universeNum; - private int sequence = 0; - - public SACNTransmitter(InetAddress dstAddr, int dstPort, int universeNum) throws SocketException { - this.dstAddr = dstAddr; - this.dstPort = dstPort; - this.universeNum = universeNum; - - data[0] = 0x00; - data[1] = 0x10; - data[2] = 0x00; - data[3] = 0x00; - data[4] = 0x41; - data[5] = 0x53; - data[6] = 0x43; - data[7] = 0x2d; - data[8] = 0x45; - data[9] = 0x31; - data[10] = 0x2e; - data[11] = 0x31; - data[12] = 0x37; - data[13] = 0x00; - data[14] = 0x00; - data[15] = 0x00; - data[16] = 0x72; - data[17] = 0x6e; - data[18] = 0x00; - data[19] = 0x00; - data[20] = 0x00; - data[21] = 0x04; - ByteBuffer pixelControllerUUID = ByteBuffer.wrap(new byte[16]); - pixelControllerUUID.putLong(controllerId.getMostSignificantBits()); - pixelControllerUUID.putLong(controllerId.getLeastSignificantBits()); - System.arraycopy(pixelControllerUUID.array(), 0, data, 22, 16); - data[38] = 0x72; - data[39] = 0x58; - data[40] = 0x00; - data[41] = 0x00; - data[42] = 0x00; - data[43] = 0x02; - data[44] = 'K'; - data[45] = 'a'; - data[46] = 'm'; - data[47] = 'i'; - data[48] = 'n'; - data[49] = 'a'; - data[50] = 'r'; - data[51] = 'i'; - data[56] = 0x00; - data[108] = 100; - data[109] = 0x00; - data[110] = 0x00; - data[111] = 0x00; - data[112] = 0x00; - data[115] = 0x72; - data[116] = 0x0b; - data[117] = 0x02; - data[118] = (byte) 0xa1; - data[119] = 0x00; - data[120] = 0x00; - data[121] = 0x00; - data[122] = 0x01; - data[123] = 0x02; - data[124] = 0x01; - data[125] = 0x00; - } - - /** - * MT-Safety: UNSAFE. - */ - public void send(byte[] channels) throws IOException { - // https://hoeser-medien.de/wp-content/uploads/ucls_e131_protocol.png - - data[E131_SEQUENCE_OFS] = (byte) (sequence % 255); - data[E131_UNIVERSE_ID_HI] = (byte) (universeNum >> 8); - data[E131_UNIVERSE_ID_LOW] = (byte) (universeNum & 255); - - int dataSize = E131_DMX_PAYLOAD_SIZE; - if (channels.length < E131_DMX_PAYLOAD_SIZE) { - dataSize = channels.length; - } - - System.arraycopy(channels, 0, data, E131_DMX_PAYLOAD_OFS, dataSize); - DatagramPacket dp = new DatagramPacket(data, 0, data.length, dstAddr, dstPort); - ds.send(dp); - sequence++; - } -} diff --git a/java/lc-lighting/src/main/java/lc/lighting/processor/ExampleProcessor.java b/java/lc-lighting/src/main/java/lc/lighting/processor/ExampleProcessor.java deleted file mode 100644 index a25f045e553e389f4dd8244aa73b8d377e227628..0000000000000000000000000000000000000000 --- a/java/lc-lighting/src/main/java/lc/lighting/processor/ExampleProcessor.java +++ /dev/null @@ -1,7 +0,0 @@ -package lc.lighting.processor; - -public class ExampleProcessor implements Processor { - public byte process(long clock, byte[] input) { - return (byte) (clock % 256); - } -} diff --git a/java/lc-lighting/src/main/java/lc/lighting/processor/Processor.java b/java/lc-lighting/src/main/java/lc/lighting/processor/Processor.java deleted file mode 100644 index 80f03e7d38964c28bb14ef2e3901c0bbe66495a1..0000000000000000000000000000000000000000 --- a/java/lc-lighting/src/main/java/lc/lighting/processor/Processor.java +++ /dev/null @@ -1,5 +0,0 @@ -package lc.lighting.processor; - -public interface Processor { - byte process(long clock, byte[] input); -} diff --git a/java/lc-lighting/src/main/java/lc/lighting/show/Show.java b/java/lc-lighting/src/main/java/lc/lighting/show/Show.java deleted file mode 100644 index 8d003eddfc12c7576650f38d0aefe59df8f242a5..0000000000000000000000000000000000000000 --- a/java/lc-lighting/src/main/java/lc/lighting/show/Show.java +++ /dev/null @@ -1,56 +0,0 @@ -package lc.lighting.show; - -import lc.lighting.net.SACNTransmitter; -import lc.lighting.processor.ExampleProcessor; -import lc.lighting.processor.Processor; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.VelocityWatch; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.SocketException; -import java.net.UnknownHostException; -import java.time.Instant; -import java.util.Arrays; -import java.util.Random; - -public class Show implements Runnable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(Show.class); - private final byte[] input = new byte[512]; - private final VelocityWatch vw = new VelocityWatch(logger); - private final Universe univs[]; - - public Show() throws UnknownHostException, SocketException { - univs = new Universe[1000]; - Processor p = new ExampleProcessor(); - Processor[] procs = new Processor[512]; - Arrays.fill(procs, p); - Random r = new Random(); - Arrays.fill(univs, new Universe(new SACNTransmitter(InetAddress.getByName("10.52.3.127"), r.nextInt(65535), 1), procs)); - } - - @Override - public void run() { - while (true) { - long now = Instant.now().toEpochMilli(); - for (Universe univ : univs) { - try { - univ.process(now, input); - } catch (IOException e) { - e.printStackTrace(); - } - } - vw.event("frame"); - } - } - - public static void main(String[] args) throws SocketException, UnknownHostException, InterruptedException { - for (int i = 0; i < 3; i++) { - logger.info("Starting show..."); - Thread t = new Thread(new Show()); - t.join(); - t.start(); - } - } -} diff --git a/java/lc-lighting/src/main/java/lc/lighting/show/Universe.java b/java/lc-lighting/src/main/java/lc/lighting/show/Universe.java deleted file mode 100644 index 5b903e145fe1cd8856e9eb14da6a53bbf37ffdcb..0000000000000000000000000000000000000000 --- a/java/lc-lighting/src/main/java/lc/lighting/show/Universe.java +++ /dev/null @@ -1,28 +0,0 @@ -package lc.lighting.show; - -import lc.lighting.net.SACNTransmitter; -import lc.lighting.processor.Processor; - -import java.io.IOException; - -public class Universe { - private final byte[] output = new byte[512]; - private final Processor[] procs; - private final SACNTransmitter tx; - - public Universe(SACNTransmitter tx, Processor[] procs) { - this.procs = procs; - this.tx = tx; - - // TODO: Check that the output / proc sizes are reasonable. - } - - public void process(long clock, byte[] input) throws IOException { - for (int i = 0; i < procs.length; i++) { - if (procs[i] == null) continue; - output[i] = procs[i].process(clock, input); - } - tx.send(output); - } - -} \ No newline at end of file diff --git a/java/lc-mecha-db-mongo/LICENSE.md b/java/lc-mecha-db-mongo/LICENSE.md deleted file mode 100644 index 2291a532567b727a6b296185e8be279898504bd3..0000000000000000000000000000000000000000 --- a/java/lc-mecha-db-mongo/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-mecha-db-mongo/build.gradle b/java/lc-mecha-db-mongo/build.gradle deleted file mode 100644 index 73b45625c49f9a95037badbe9d51f77228dd46ef..0000000000000000000000000000000000000000 --- a/java/lc-mecha-db-mongo/build.gradle +++ /dev/null @@ -1,19 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 -group 'leigh' -version '20.0-SNAPSHOT' -apply plugin: 'application' - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-eo-bson') - testImplementation group: 'junit', name: 'junit', version: '4.12' - api 'org.mongodb:mongodb-driver-sync:4.3.2' -} \ No newline at end of file diff --git a/java/lc-mecha-db-mongo/src/test/java/lc/mecha/db/mongo/MongoTest.java b/java/lc-mecha-db-mongo/src/test/java/lc/mecha/db/mongo/MongoTest.java deleted file mode 100644 index 3c68dcf665228f1d7d102dea0de56679225eb0a9..0000000000000000000000000000000000000000 --- a/java/lc-mecha-db-mongo/src/test/java/lc/mecha/db/mongo/MongoTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package lc.mecha.db.mongo; - -import com.mongodb.client.*; -import lc.eo.EO; -import lc.eo.mongo.EOBsonSerializer; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.bson.Document; - -import java.util.UUID; - -public class MongoTest { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(MongoTest.class); - - public void connectTest() { - MongoClient client = MongoClients.create("mongodb://10.52.4.61"); - MongoDatabase db = client.getDatabase("junit"); - String colName = UUID.randomUUID().toString(); - MongoCollection col = db.getCollection(colName); - - EO obj = new EO("junit.test"); - obj.setValue("firstName", "Nicole"); - obj.setValue("lastName", "Windon"); - obj.setLabel("firstName", "Nikki"); - - col.insertOne(EOBsonSerializer.eoToDoc(obj)); - - FindIterable iter = col.find(); - for(Document eoDoc : iter) { - EO readBack = EOBsonSerializer.docToEo(eoDoc); - logger.info("Read-back EO: {}", readBack); - } - - db.drop(); - } -} diff --git a/java/lc-mecha-javafx/.gitignore b/java/lc-mecha-javafx/.gitignore deleted file mode 100644 index ede7310f5aa22a8bb16f7393dedac5d9b0cba2c9..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -kabe.log -velocity.log -.DS_Store -statistic.xml -.gradle -/*/build/ -/build/ -gradle-app.setting -!gradle-wrapper.jar -.gradletasknamecache -.idea/ -*.iml -out/ -.cache -node_modules -/*/.idea -.vi -/*/graph.eo -.vai -graph.bak -.idea -tests.vai -vds.log -hosts.json -tests.vai.old \ No newline at end of file diff --git a/java/lc-mecha-javafx/LICENSE.md b/java/lc-mecha-javafx/LICENSE.md deleted file mode 100644 index 226d1f25b12e58e21c29a6c1869d1ec05095d443..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is 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. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -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. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -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 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. Use with the GNU Affero General Public License. - -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 Affero 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 special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -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 GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/java/lc-mecha-javafx/build.gradle b/java/lc-mecha-javafx/build.gradle deleted file mode 100644 index 089dc96329ed95e6696bc72d6bfb7a72809d7636..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - id 'java' - id 'org.openjfx.javafxplugin' version '0.0.9' - id 'java-library' -} - -apply plugin: 'application' -apply plugin: 'org.openjfx.javafxplugin' - -repositories { - mavenCentral() -} -version '20.0-SNAPSHOT' -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 -dependencies { - testImplementation group: 'junit', name: 'junit', version: '4.12' - api project(':lc-mecha') - api project(':lc-eo') -} - -javafx { - modules = [ 'javafx.controls', 'javafx.fxml' ] -} \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/java/de/michaelhoffer/DraggableNodePane.java b/java/lc-mecha-javafx/src/main/java/de/michaelhoffer/DraggableNodePane.java deleted file mode 100644 index bec1bf358b5ab6392133cdaf65a59cc7de19ef4c..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/de/michaelhoffer/DraggableNodePane.java +++ /dev/null @@ -1,109 +0,0 @@ -package de.michaelhoffer; - -import javafx.scene.Node; -import javafx.scene.layout.Pane; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -/** - * Implementation of a pane which is mouse-click draggable around its parent. - * - * @author Michael Hoffer, Alex Leigh - */ -public class DraggableNodePane extends Pane { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(DraggableNodePane.class); - // node position - private double x = 0; - private double y = 0; - // mouse position - private double mousex = 0; - private double mousey = 0; - private Node view; - private boolean dragging = false; - private boolean moveToFront = true; - - public DraggableNodePane() { - init(); - } - - public DraggableNodePane(Node view) { - this.view = view; - - getChildren().add(view); - init(); - } - - private void init() { - onMousePressedProperty().set(event -> { - // record the current mouse X and Y position on Node - mousex = event.getSceneX(); - mousey = event.getSceneY(); - - x = getLayoutX(); - y = getLayoutY(); - - if (isMoveToFront()) { - toFront(); - } - }); - - //Event Listener for MouseDragged - onMouseDraggedProperty().set(event -> { - // Get the exact moved X and Y - - double offsetX = event.getSceneX() - mousex; - double offsetY = event.getSceneY() - mousey; - - x += offsetX; - y += offsetY; - - double scaledX = x; - double scaledY = y; - - setLayoutX(scaledX); - setLayoutY(scaledY); - - dragging = true; - - // again set current Mouse x AND y position - mousex = event.getSceneX(); - mousey = event.getSceneY(); - - event.consume(); - }); - - onMouseClickedProperty().set(event -> dragging = false); - } - - /** - * @return the dragging - */ - protected boolean isDragging() { - return dragging; - } - - /** - * @return the view - */ - public Node getView() { - return view; - } - - /** - * @param moveToFront the moveToFront to set - */ - public void setMoveToFront(boolean moveToFront) { - this.moveToFront = moveToFront; - } - - /** - * @return the moveToFront - */ - public boolean isMoveToFront() { - return moveToFront; - } - - public void removeNode(Node n) { - getChildren().remove(n); - } -} \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/FileImageBinder.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/FileImageBinder.java deleted file mode 100644 index 2bc67225f0d8c4190571b02141f79e469162fd1f..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/FileImageBinder.java +++ /dev/null @@ -1,70 +0,0 @@ -package lc.mecha.javafx; - -import javafx.scene.image.Image; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.Objects; - -/** - * Implementation of {@link RamImageBinder} which loads its images from the local file system (not the resource - * loader). - *

- * MTS-safety: Unsafe. - * - * @author Alex Leigh - */ -public class FileImageBinder extends RamImageBinder { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(FileImageBinder.class); - private final String prefix; - private final String suffix; - - /** - * Create a new FileImageBinder, that will build file paths using the given prefix and suffixes. The prefix - * must include "file:", or another valid method for the {@link Image} class. - */ - public FileImageBinder(String prefix, String suffix) { - this.prefix = prefix; - this.suffix = suffix; - } - - public Image getImage(String name) { - Image img = super.getImage(name); - if (img == null) { - try { - String fn = prefix + name + suffix; - logger.debug("Attempting to load icon. [fn: {}]", fn); - img = new Image(fn); - } catch (Exception e) { - e.printStackTrace(); - } - - // Can it actually be null? The contract is vague. - if (img != null) { - putImage(name, img); - } - } - return img; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - FileImageBinder that = (FileImageBinder) o; - return Objects.equals(prefix, that.prefix) && Objects.equals(suffix, that.suffix); - } - - @Override - public int hashCode() { - return Objects.hash(prefix, suffix); - } - - @Override - public String toString() { - return "FileImageBinder{" + - "prefix='" + prefix + '\'' + - ", suffix='" + suffix + '\'' + - "} " + super.toString(); - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/ImageBinder.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/ImageBinder.java deleted file mode 100644 index 2a1a50feb8d8890cdfa668d1dcf78cc0f9e0b651..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/ImageBinder.java +++ /dev/null @@ -1,7 +0,0 @@ -package lc.mecha.javafx; - -import javafx.scene.image.Image; - -public interface ImageBinder { - Image getImage(String name); -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/JavaFXConstants.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/JavaFXConstants.java deleted file mode 100644 index e807f14b8e82305a1e6d2ee293d297e3ac208ee8..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/JavaFXConstants.java +++ /dev/null @@ -1,6 +0,0 @@ -package lc.mecha.javafx; - -public interface JavaFXConstants { - int REALLY_TALL_HEIGHT = 10000; - int REALLY_BIG_WIDTH = 10000; -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/NodeRuler.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/NodeRuler.java deleted file mode 100644 index 93e9087a982cde91595a78c6101d54dfe5e081a6..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/NodeRuler.java +++ /dev/null @@ -1,47 +0,0 @@ -package lc.mecha.javafx; - -import javafx.geometry.Bounds; -import javafx.scene.Group; -import javafx.scene.Node; -import javafx.scene.Scene; -import javafx.scene.text.Text; -import org.apache.commons.lang.StringUtils; - -/** - * This class provides the ability to measure JFX nodes before they are visible on the screen. This is useful for - * implementing layout managers which must know the render size of the node prior to rendering the node onto the - * screen. - * - * @author Alex Leigh - * @since mk14 mod19 (CRYSTAL) - */ -public class NodeRuler { - private static final String WIDE_CHAR = "w"; - /** - * Attempt to measure the given JFX node. The bounds that is returned will contain a width and height for the - * element. This method should not be called on nodes which are already part of a {@link Scene}. - */ - public static Bounds measure(Node node) { - Group root = new Group(); - - // Even though this appears unused, it is magical. Do not remove it. - Scene s = new Scene(root); - root.getChildren().add(node); - - root.applyCss(); - root.layout(); - - return node.getLayoutBounds(); - } - - public static double measureTextWidth(String str) { - final Text text = new Text(str); - new Scene(new Group(text)); - text.applyCss(); - return text.getLayoutBounds().getWidth(); - } - - public static double measureTextWidth(int chars) { - return measureTextWidth(StringUtils.repeat(WIDE_CHAR, chars)); - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/RamImageBinder.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/RamImageBinder.java deleted file mode 100644 index 6e26104973eca9da01303d7beaf594713049cfbb..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/RamImageBinder.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.mecha.javafx; - -import javafx.scene.image.Image; - -import java.util.HashMap; -import java.util.Objects; - -/** - * Relatively simple implementation of the {@link ImageBinder} specification. - */ -public class RamImageBinder implements ImageBinder { - // TODO: How about a LRU cache here instead - private final HashMap images = new HashMap<>(); - - @Override - public Image getImage(String name) { - return images.get(name); - } - - public void putImage(String name, Image image) { - if (image == null) images.remove(name); - images.put(name, image); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - RamImageBinder that = (RamImageBinder) o; - return Objects.equals(images, that.images); - } - - @Override - public int hashCode() { - return Objects.hash(images); - } - - @Override - public String toString() { - return "RamImageBinder{" + - "images=" + images + - '}'; - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/TableViewImage.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/TableViewImage.java deleted file mode 100644 index b546e1f9d8e0ae25c03a2bc6f33a4c9091abdd87..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/javafx/TableViewImage.java +++ /dev/null @@ -1,24 +0,0 @@ -package lc.mecha.javafx; - -import javafx.scene.image.ImageView; - -/** - * A helper class for inserting images into {@link javafx.scene.control.TableView} widgets. - * - * @author Alex Leigh - */ -public class TableViewImage { - private ImageView image; - - TableViewImage(ImageView img) { - this.image = img; - } - - public void setImage(ImageView value) { - image = value; - } - - public ImageView getImage() { - return image; - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/GraphSerializer.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/GraphSerializer.java deleted file mode 100644 index fd9eafd13b521d67b1379cf00592df1f3e0fe938..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/GraphSerializer.java +++ /dev/null @@ -1,161 +0,0 @@ -package lc.mecha.nodegraph; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.javafx.NodeGraphJFX; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Companion class to {@link NodeGraphJFX} which provides serialization functionality. This allows graph states to be - * loaded/saved. - * - * @author Alex Leigh - */ -public class GraphSerializer { - public static final String TYPE_NODE = "leigh.mecha.nodegraph.Node"; - public static final String TYPE_VALUE = "leigh.mecha.nodegraph.Value"; - public static final String TYPE_CONNECTION = "leigh.mecha.nodegraph.Connection"; - public static final String KEY_ID = "id"; - public static final String KEY_XPOS = "xPos"; - public static final String KEY_YPOS = "yPos"; - public static final String KEY_TYPE = "type"; - public static final String KEY_VALUES = "values"; - public static final String KEY_NAME = "name"; - public static final String KEY_VALUE = "value"; - public static final String KEY_SRCID = "srcId"; - public static final String KEY_SRCNAME = "srcName"; - public static final String KEY_DSTID = "dstId"; - public static final String KEY_DSTNAME = "dstName"; - public static final String KEY_CONNECTIONS = "connections"; - private static final MechaLogger logger = MechaLoggerFactory.getLogger(GraphSerializer.class); - - /** - * Convert the graph state from the {@link NodeGraphJFX} control into an {@link EOLoop} of node objects. - */ - public EOLoop save(NodeGraphJFX graph) { - logger.debug("save() called."); - EOLoop nodes = new EOLoop(); - - List objects = graph.getObjects(); - - for (NodeObject obj : objects) { - EO nodeState = new EO(TYPE_NODE); - nodeState.setValue(KEY_ID, obj.getId()); - nodeState.setValue(KEY_XPOS, obj.getPosX()); - nodeState.setValue(KEY_YPOS, obj.getPosY()); - nodeState.setValue(KEY_TYPE, obj.getNodeConfig().getName()); - EOLoop valueStates = nodeState.getValueLoop(KEY_VALUES); - - for (Map.Entry value : obj.getValues().entrySet()) { - EO valueState = new EO(TYPE_VALUE); - valueState.setValue(KEY_NAME, value.getKey()); - valueState.setValue(KEY_VALUE, value.getValue()); - valueStates.add(valueState); - } - - EOLoop conStates = nodeState.getValueLoop(KEY_CONNECTIONS); - for (NodeConnection connection : obj.getConnections()) { - // We allow this to fail for development purposes, to allow for changes between editions - try { - EO conState = new EO(TYPE_CONNECTION); - - conState.setValue(KEY_SRCID, connection.getSrcNode().getId()); - conState.setValue(KEY_SRCNAME, connection.getSrcAttribute().getName()); - conState.setValue(KEY_DSTID, connection.getDstNode().getId()); - conState.setValue(KEY_DSTNAME, connection.getDstAttribute().getName()); - - conStates.add(conState); - } catch (Exception e) { - e.printStackTrace(); - } - } - - logger.debug("node: {}", obj); - for (NodeConnection con : obj.getConnections()) { - logger.debug("-> connection [remoteId: {}] [srcAttr: {}] [dstAttr: {}]", - con.getDstNode().getId(), con.getSrcAttribute(), con.getDstAttribute()); - } - - nodes.add(nodeState); - } - - return nodes; - } - - public NodeConfig getConfig(List configs, String name) { - for (NodeConfig config : configs) { - if (name.equals(config.getName())) return config; - } - return null; - } - - public void load(NodeGraphJFX graph, EOLoop nodes, List configs) { - HashMap nodeObjects = new HashMap<>(); - - // First we build the nodes - for (EO node : nodes) { - logger.debug("Deserializing node..."); - - int id = node.getValueInteger(KEY_ID); - NodeConfig cfg = getConfig(configs, node.getValueString(KEY_TYPE)); - NodeObject obj = new NodeObject(id, cfg); - obj.setPosX(node.getValueDouble(KEY_XPOS)); - obj.setPosY(node.getValueDouble(KEY_YPOS)); - nodeObjects.put(obj.getId(), obj); - - EOLoop values = node.getValueLoop(KEY_VALUES); - for (EO value : values) { - logger.debug("Node value found: {}", value); - obj.getValues().put(value.getValueString(KEY_NAME), value.getValueString(KEY_VALUE)); - } - - logger.debug("Regenerated node: {}", obj); - } - - for (NodeObject x : nodeObjects.values()) { - logger.debug("Loaded. [obj: {}]", x); - } - - // Then we build the connections - for (EO node : nodes) { - EOLoop connections = node.getValueLoop(KEY_CONNECTIONS); - for (EO connection : connections) { - logger.debug("Building connection: {}", connection); - if (connection.size() == 0) { - logger.error("Illegal State"); - continue; - } - Integer srcId = connection.getValueInteger(KEY_SRCID); - Integer dstId = connection.getValueInteger(KEY_DSTID); - String srcName = connection.getValueString(KEY_SRCNAME); - String dstName = connection.getValueString(KEY_DSTNAME); - NodeObject srcObj = nodeObjects.get(srcId); - NodeObject dstObj = nodeObjects.get(dstId); - - if (srcObj == null || dstObj == null) { - logger.error("State corrupted. [flow: {}]", connection); - } - - NodeConfig srcNodeConfig = srcObj.getNodeConfig(); - NodeConfig dstNodeConfig = dstObj.getNodeConfig(); - - // Can happen if we have a missing node. We tolerate this. - if (srcNodeConfig == null || dstNodeConfig == null) continue; - - NodeAttribute srcAttr = srcNodeConfig.getAttr(srcName); - NodeAttribute dstAttr = dstNodeConfig.getAttr(dstName); - - NodeConnection nodeConnection = new NodeConnection(nodeObjects.get(srcId), srcAttr, - nodeObjects.get(dstId), dstAttr); - srcObj.getConnections().add(nodeConnection); - } - } - graph.load(new ArrayList<>(nodeObjects.values())); - } -} \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/GraphUtil.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/GraphUtil.java deleted file mode 100644 index cb771322b00b0d6b32c31e2891324b6254ef7ef4..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/GraphUtil.java +++ /dev/null @@ -1,20 +0,0 @@ -package lc.mecha.nodegraph; - -import lc.eo.EO; -import lc.eo.EOLoop; - -import java.io.Serializable; -import java.util.Objects; - -public class GraphUtil { - public static Serializable getValue(EO node, String key) { - EOLoop values = node.getValueLoop(GraphSerializer.KEY_VALUES); - for (EO value : values) { - String valueKey = value.getValueString(GraphSerializer.KEY_NAME); - if (Objects.equals(key, valueKey)) { - return value.get(GraphSerializer.KEY_VALUE); - } - } - return null; - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeAttribute.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeAttribute.java deleted file mode 100644 index 8c2a21691cf0ca816021492e3f05a7c95123e11f..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeAttribute.java +++ /dev/null @@ -1,58 +0,0 @@ -package lc.mecha.nodegraph; - -public class NodeAttribute { - private boolean hasInputSocket; - private boolean hasOutputSocket; - private String label; - private String name; - - public NodeAttribute(String name, String label) { - this.name = name; - this.label = label; - } - - public NodeAttribute(String name) { - this(name, name); - } - - public boolean isHasInputSocket() { - return hasInputSocket; - } - - @Override - public String toString() { - return "NodeAttribute{" + - "hasInputSocket=" + hasInputSocket + - ", hasOutputSocket=" + hasOutputSocket + - ", label='" + label + '\'' + - ", name='" + name + '\'' + - '}'; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public NodeAttribute setHasInputSocket(boolean hasInputSocket) { - this.hasInputSocket = hasInputSocket; - return this; - } - - public boolean isHasOutputSocket() { - return hasOutputSocket; - } - - public NodeAttribute setHasOutputSocket(boolean hasOutputSocket) { - this.hasOutputSocket = hasOutputSocket; - return this; - } - - public String getLabel() { - return label; - } - -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeConfig.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeConfig.java deleted file mode 100644 index 6387971738bff383bbfb0b7e6bbbdd565d199d4d..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeConfig.java +++ /dev/null @@ -1,71 +0,0 @@ -package lc.mecha.nodegraph; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - -/** - * The configuration for a graph node. This class only contains the schema (meta-information) for the node. The - * actual values are stored in the node itself. - * - * @author Alex Leigh - */ -public class NodeConfig { - private final String label; - private final String name; - - private final ArrayList attrs = new ArrayList<>(); - - public NodeConfig(String name, String label) { - this.label = label; - this.name = name; - } - - public String getName() { - return name; - } - - public String getLabel() { - return label; - } - - public void addAttr(NodeAttribute attr) { - attrs.add(attr); - } - - public List getAttrs() { - return Collections.unmodifiableList(attrs); - } - - public NodeAttribute getAttr(String name) { - for (NodeAttribute attr : attrs) { - if (name.equals(attr.getName())) return attr; - } - return null; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - NodeConfig that = (NodeConfig) o; - return Objects.equals(label, that.label) && - Objects.equals(name, that.name) && - Objects.equals(attrs, that.attrs); - } - - @Override - public int hashCode() { - return Objects.hash(label, name, attrs); - } - - @Override - public String toString() { - return "NodeConfig{" + - "label='" + label + '\'' + - ", name='" + name + '\'' + - ", attrs=" + attrs + - '}'; - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeConnection.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeConnection.java deleted file mode 100644 index 548c1044de32abbc4fb1386ecd957ba454fcd4c3..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeConnection.java +++ /dev/null @@ -1,65 +0,0 @@ -package lc.mecha.nodegraph; - -import java.util.Objects; - -/** - * POJO containing information about a connection between two nodes. - * - * @author Alex Leigh - */ -public class NodeConnection { - private final NodeObject srcNode; - private final NodeObject dstNode; - private final NodeAttribute srcAttribute; - private final NodeAttribute dstAttribute; - - public NodeConnection(NodeObject srcNode, NodeAttribute srcAttribute, - NodeObject dstNode, NodeAttribute dstAttribute) { - this.srcNode = srcNode; - this.dstNode = dstNode; - this.srcAttribute = srcAttribute; - this.dstAttribute = dstAttribute; - } - - public NodeObject getSrcNode() { - return srcNode; - } - - public NodeObject getDstNode() { - return dstNode; - } - - public NodeAttribute getSrcAttribute() { - return srcAttribute; - } - - public NodeAttribute getDstAttribute() { - return dstAttribute; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - NodeConnection that = (NodeConnection) o; - return Objects.equals(srcNode, that.srcNode) && - Objects.equals(dstNode, that.dstNode) && - Objects.equals(srcAttribute, that.srcAttribute) && - Objects.equals(dstAttribute, that.dstAttribute); - } - - @Override - public int hashCode() { - return Objects.hash(srcNode, dstNode, srcAttribute, dstAttribute); - } - - @Override - public String toString() { - return "NodeConnection{" + - "srcNode=" + srcNode.getId() + - ", dstNode=" + dstNode.getId() + - ", srcAttribute=" + srcAttribute + - ", dstAttribute=" + dstAttribute + - '}'; - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeGraph.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeGraph.java deleted file mode 100644 index 8dae469eea46ace55c5c46b8183c448e8433e229..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeGraph.java +++ /dev/null @@ -1,26 +0,0 @@ -package lc.mecha.nodegraph; - -import java.util.List; - -/** - * This class represents a node graph. Currently the graph is stored internally as a list of - * {@link NodeObject}s, which describe each of the nodes on the graph and together comprise the - * entire graph. - *

- * The NodeGraph stores connections "backwards", so for the purposes of a connection, the src is the receiving - * node and the dst is the sending node. This allows the graph to easily be transversed from child through - * its parental lineage, which is its typical use-case for Conflux. - * - * @author Alex Leigh - */ -public class NodeGraph { - private final List nodes; - - public NodeGraph(List nodes) { - this.nodes = nodes; - } - - public List getNodes() { - return nodes; - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeObject.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeObject.java deleted file mode 100644 index 47a2b293bd6378811257000a9ce5ecb38e542c83..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/NodeObject.java +++ /dev/null @@ -1,101 +0,0 @@ -package lc.mecha.nodegraph; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.ArrayList; -import java.util.HashMap; - -/** - * This class represents an individual node on a {@link NodeGraph}. The node has a visual position on the graph - * denoted by x,y coordinates, as well as optionally attributes and connections of those attributes to other - * nodes. - * - * @author Alex Leigh - */ -public class NodeObject { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(NodeObject.class); - private final int id; - private double posX; - private double posY; - private final NodeConfig nodeConfig; - private final ArrayList connections = new ArrayList<>(); - private final HashMap values = new HashMap<>(); - - public HashMap getValues() { - return values; - } - - public NodeObject(int id, NodeConfig nodeConfig) { - this.id = id; - this.nodeConfig = nodeConfig; - } - - @Override - public String toString() { - return "NodeObject{" + - "id=" + id + - ", posX=" + posX + - ", posY=" + posY + - ", nodeConfig=" + nodeConfig + - ", connections=" + connections + - ", values=" + values + - '}'; - } - - public double getPosX() { - return posX; - } - - public void setPosX(double posX) { - logger.info("X updating: {}", posX); - this.posX = posX; - } - - public double getPosY() { - return posY; - } - - public void setPosY(double posY) { - logger.info("Y updating: {}", posY); - this.posY = posY; - } - - /** - * Return the meta-configuration for the node. This is the configuration which is common to all instances - * of the node in a graph. - */ - public NodeConfig getNodeConfig() { - return nodeConfig; - } - - /** - * Return the integer id for the node. The id is unique within a given nodegraph and carries no other meaning. - * The id can change from one serialization to another, so it should not be relied on. - */ - public int getId() { - return id; - } - - /** - * Return a value for the given key if it has been set in the node. - */ - public String getValue(String key) { - return values.get(key); - } - - /** - * Set a value for the given key in the node. - */ - public void setValue(String key, String value) { - values.put(key, value); - } - - /** - * Return the connections for this node. Connections are stored on the outbound node (the origination node), - * so to find connections that connect to this node, you must search the other nodes in the graph. - */ - public ArrayList getConnections() { - return connections; - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/GraphListener.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/GraphListener.java deleted file mode 100644 index 16c08a3342d309337cc1a453f02aebfa27b68435..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/GraphListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package lc.mecha.nodegraph.javafx; - -public interface GraphListener { - void updated(); -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/NodeGraphJFX.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/NodeGraphJFX.java deleted file mode 100644 index 12b471dcaa6107498c7f419cf116dae4d9425cb9..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/NodeGraphJFX.java +++ /dev/null @@ -1,589 +0,0 @@ -package lc.mecha.nodegraph.javafx; - -import de.michaelhoffer.DraggableNodePane; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; -import javafx.event.ActionEvent; -import javafx.event.EventHandler; -import javafx.geometry.Bounds; -import javafx.geometry.Point2D; -import javafx.scene.Node; -import javafx.scene.control.*; -import javafx.scene.effect.DropShadow; -import javafx.scene.input.ContextMenuEvent; -import javafx.scene.input.InputEvent; -import javafx.scene.input.MouseDragEvent; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.Pane; -import javafx.scene.layout.VBox; -import javafx.scene.shape.Circle; -import javafx.scene.shape.Line; -import lc.mecha.javafx.JavaFXConstants; -import lc.mecha.javafx.NodeRuler; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.NodeAttribute; -import lc.mecha.nodegraph.NodeConfig; -import lc.mecha.nodegraph.NodeConnection; -import lc.mecha.nodegraph.NodeObject; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * JavaFX implementation of a Node Graph editor. - *

- * The implementation consists of a root {@link Pane} which contains the canvas. The connection lines are drawn - * directly onto the root pane. Within the pane, each Node (but not its connections) are represented by another child - * {@link Pane}, which is draggable. The mechanics for drawing the connections are located within the - * {@link SocketFlow} class. - * - * @author Alex Leigh - * @since mk14 mod19 (CRYSTAL) - */ - -// TODO Extract a useful interface which is not JavaFX-specific -// FIXME A bug exists where nulling a field should remove its local attribute and does not -// FIXME A bug exists where editing the nodegraph can leave dangling remote attributes (connections) -public class NodeGraphJFX { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(NodeGraphJFX.class); - public final Pane root; - private final EventHandler startHandler; - private final ArrayList connections = new ArrayList<>(); - private final ArrayList objects = new ArrayList<>(); - private final HashMap> sockets = new HashMap<>(); - private final int socketRadius = 7; - private final int nodeObjectPrefWidth = 170; - private final int nodeObjectPrefHeight = 80; - private final List nodesConfigs; - private final ArrayList listeners = new ArrayList<>(); - public Line line; - private int idSequence = 0; - // We stash the click location for the canvas here, since it gets lost in the event chain. - private double canvasClickX; - private double canvasClickY; - - /** - * Create a new NodegraphGenerator. The root pane (the pane the connection lines will be created in) is passed - * here. - */ - public NodeGraphJFX(Pane root, List nodesConfigs) { - this.nodesConfigs = nodesConfigs; - class DragStartHandler implements EventHandler { - @Override - public void handle(MouseEvent event) { - if (line == null) { - Node sourceNode = (Node) event.getSource(); - line = new Line(); - - // We have to go up here to get to the NodePane. - Bounds bounds = socketRootBounds(sourceNode); - - // start line at center of node - line.setStartX((bounds.getMinX() + bounds.getMaxX()) / 2); - line.setStartY((bounds.getMinY() + bounds.getMaxY()) / 2); - line.setEndX(line.getStartX()); - line.setEndY(line.getStartY()); - - setupLine(line); - - sourceNode.startFullDrag(); - root.getChildren().add(0, line); - } - } - } - startHandler = new DragStartHandler(); - - ContextMenu canvasMenu = buildCanvasMenu(); - - root.setOnContextMenuRequested(new EventHandler() { - @Override - public void handle(ContextMenuEvent evt) { - logger.debug("Canvas context menu requested."); - canvasClickX = evt.getScreenX(); - canvasClickY = evt.getScreenY(); - canvasMenu.show(root.getScene().getWindow(), evt.getScreenX(), evt.getScreenY()); - } - }); - - // This is a hack to ensure there is something to click on when the canvas first renders. - root.setPrefHeight(JavaFXConstants.REALLY_TALL_HEIGHT); - root.setPrefWidth(JavaFXConstants.REALLY_BIG_WIDTH); - - this.root = root; - } - - /** - * Set the line configuration for a draggable line. - * - * @param line - */ - public static void setupLine(Line line) { - line.setStrokeWidth(5); - } - - /** - * Given a node, return its root bounds (the bounds of its parent node). - */ - public static Bounds socketRootBounds(Node socketCircle) { - return socketCircle.getParent().localToParent(socketCircle.getBoundsInParent()); - } - - /** - * Given a list of sockets, find the one which matches the given attribute name and input/output type. - */ - public Circle findSocket(ArrayList sockets, String attrName, boolean isInput) { - logger.debug("findSocket: Called [attr: {}] [isInput: {}]", attrName, isInput); - for (Circle socket : sockets) { - SocketUserData ud = (SocketUserData) socket.getUserData(); - NodeAttribute attr = ud.getAttrCfg(); - - logger.debug("findSocket: Searching for ud: {}", attr); - - if (attrName.equals(attr.getName())) { - if (!isInput == ud.isOutput()) { - logger.debug("findSocket: Match!"); - return socket; - } - } - } - - logger.debug("findSocket: No match"); - return null; - } - - /** - * Given a set of node objects, load them into the editor. - */ - public void load(List nodes) { - // Generate first so they all exist when we go to make the connections - int hwm = 0; - - for (NodeObject node : nodes) { - generate(node); - int id = node.getId(); - if (id > hwm) hwm = id; - } - - logger.debug("load(): Sockets count: {}", sockets.size()); - - // The above did not create the connections, so we attempt to do that now. - - for (NodeObject node : nodes) { - ArrayList srcSockets = sockets.get(node.getId()); - - logger.debug("Found node sockets: {}", srcSockets); - - for (NodeConnection connection : node.getConnections()) { - try { - ArrayList dstSockets = sockets.get(connection.getDstNode().getId()); - logger.debug("Would have created connections: {}", connection); - - Circle srcSocket = findSocket(srcSockets, connection.getSrcAttribute().getName(), true); - Circle dstSocket = findSocket(dstSockets, connection.getDstAttribute().getName(), false); - - logger.debug("Located sockets for restored connection. [src: {}] [dst: {}]", srcSocket, dstSocket); - - SocketFlow flow = new SocketFlow(this, srcSocket, dstSocket); - flow.setObj(node); - flow.setObjConnection(connection); - connections.add(flow); - flow.drawConnection(root); - } catch (Exception e) { - // Intentionally blank. - } - } - } - - idSequence = hwm + 1; - } - - public ArrayList getListeners() { - return listeners; - } - - protected void notifyUpdate() { - for (GraphListener l : listeners) { - l.updated(); - } - } - - /** - * Clear the UI contents of the graph, including the associated state. - */ - public void clear() { - connections.clear(); - objects.clear(); - root.getChildren().clear(); - sockets.clear(); - notifyUpdate(); - } - - /** - * Return all the connections currently in this graph. Connections flow from source to destination. - */ - public ArrayList getConnections() { - return connections; - } - - public int getNodeObjectPrefWidth() { - return nodeObjectPrefWidth; - } - - private ContextMenu buildCanvasMenu() { - // Create ContextMenu - ContextMenu menu = new ContextMenu(); - - Menu newItem = new Menu("New"); - for (NodeConfig nodeConfig : nodesConfigs) { - MenuItem nodeItem = new MenuItem(nodeConfig.getLabel()); - nodeItem.setOnAction(new EventHandler() { - @Override - public void handle(ActionEvent event) { - // We previously stashed the contextmenu location - Point2D coords = root.screenToLocal(canvasClickX, canvasClickY); - generate(nodeConfig, coords.getX(), coords.getY()); - } - }); - newItem.getItems().add(nodeItem); - } - menu.getItems().add(newItem); - - MenuItem dumpItem = new MenuItem("Dump"); - dumpItem.setOnAction(event -> { - for (NodeObject obj : objects) { - logger.debug("[obj: {}]", obj); - } - }); - menu.getItems().add(dumpItem); - - - return menu; - } - - /** - * Remove the current drag line. - */ - private void removeDragLine() { - if (line != null) { - root.getChildren().remove(line); - line = null; - } - } - - public ArrayList getObjects() { - return objects; - } - - /** - * Given the provided node Configuration, return a JFX {@link Pane} containing the GUI for the object. The Pane will - * not have been added to the root node (this is the responsibility of the caller). This is done to allow - * layout operations to occur elsewhere. - *

- * The userdata for the Pane will contain a {@link NodeObject}. - *

- * If the node already has attribute values, they will be populated into the UI. If the node has connections, - * they will NOT be populated. This is because connections cannot be present until all the nodes are present - * in the graph, as the destination may not yet have been created. Consequently, the connections must be created - * as a separate tep. - */ - - public Pane generate(NodeObject obj) { - DraggableNodePane node = new DraggableNodePane(); - objects.add(obj); - node.setUserData(obj); - node.setTranslateX(obj.getPosX()); - node.setTranslateY(obj.getPosY()); - - DropShadow shadow = new DropShadow(); - node.setEffect(shadow); - - ContextMenu nodeContextMenu = new ContextMenu(); - MenuItem menuItem = new MenuItem("Delete"); - menuItem.setOnAction(event -> { - ArrayList pending = new ArrayList<>(); - - for (SocketFlow flow : connections) { - NodeObject srcObj = (NodeObject) flow.getSrc().getParent().getUserData(); - NodeObject dstObj = (NodeObject) flow.getDst().getParent().getUserData(); - - if (flow.getDst().getParent() == node || flow.getSrc().getParent() == node) { - logger.debug("Found remote connection to remove. [src: {}] [dst: {}]", - srcObj.getNodeConfig().getName(), dstObj.getNodeConfig().getName()); - - // FIXME: This is sort of uselessly side-effecting a call to notifyUpdate() which we call later - flow.removeConnection(root); - pending.add(flow); - - ArrayList toRemove = new ArrayList<>(); - for (NodeConnection con : srcObj.getConnections()) { - if (con.getDstNode() == obj) { - toRemove.add(con); - } - } - logger.debug("Removing from obj. [sz: {}]", toRemove.size()); - srcObj.getConnections().removeAll(toRemove); - } - } - - logger.debug("Removing connections. [sz: {}] [pending: {}]", pending.size(), pending); - root.getChildren().remove(node); - objects.remove(obj); - sockets.remove(obj.getId()); - - for (SocketFlow flow : pending) { - removeConnection(flow); - } - - // TODO: Redundant - notifyUpdate(); - }); - - nodeContextMenu.getItems().add(menuItem); - - node.setOnContextMenuRequested(evt -> { - // We do this so the context menu vanishes when we click outside of it. - nodeContextMenu.show(node.getScene().getWindow(), evt.getScreenX(), evt.getScreenY()); - evt.consume(); - }); - - EventHandler nde = evt -> { - // We moved - so re-draw all our connections at the new location. - for (SocketFlow flow : connections) { - flow.drawConnection(root); - } - }; - - node.addEventHandler(MouseEvent.MOUSE_DRAGGED, nde); - node.setPrefSize(nodeObjectPrefWidth, nodeObjectPrefHeight); - VBox vbox = new VBox(); - - // FIXME: We do not want to hard-code the font settings here, move to CSS / classes instead - - //vbox.setStyle("-fx-background-color: #a0a0a0;-fx-padding:5;"); - vbox.getStyleClass().add("leigh-mecha-ng-node"); - - Label title = new Label(obj.getNodeConfig().getLabel()); - //title.setStyle("-fx-font-weight: bold;"); - //title.setFont(Font.font("Verdana", FontWeight.BOLD, 12)); - - title.getStyleClass().add("leigh-mecha-ng-node-title"); - - double runningHeight = NodeRuler.measure(title).getHeight(); - - vbox.getChildren().add(title); - - // A list of all the circles (sockets) for this node. The userdata for the circle will contain the - // attribute configuration. - ArrayList sockets = new ArrayList<>(); - - for (NodeAttribute attr : obj.getNodeConfig().getAttrs()) { - VBox fieldGroup = new VBox(); - Label label = new Label(attr.getLabel()); - TextField tf = new TextField(); - - // We may already have a value from saved state, so populate it if so. - String inputValue = obj.getValue(attr.getName()); - if (inputValue != null) { - tf.setText(inputValue); - } - - tf.textProperty().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue observable, String oldValue, String newValue) { - logger.debug("Attribute textfield change listener called..."); - obj.setValue(attr.getName(), newValue); - notifyUpdate(); - } - }); - - fieldGroup.getChildren().addAll(label, tf); - - Bounds b = NodeRuler.measure(fieldGroup); - // For some reason - this is calculating too high - - double adjustedHeight = b.getHeight() - 5.25; - - vbox.getChildren().add(fieldGroup); - - if (attr.isHasInputSocket()) { - Circle inputCircle = new Circle(socketRadius); - inputCircle.getStyleClass().add("leigh-mecha-ng-input-socket"); - - inputCircle.relocate(-socketRadius, runningHeight + (adjustedHeight / 2)); - inputCircle.setUserData(new SocketUserData(attr, false)); - sockets.add(inputCircle); - } - - if (attr.isHasOutputSocket()) { - Circle outputCircle = new Circle(socketRadius); - outputCircle.getStyleClass().add("leigh-mecha-ng-output-socket"); - - outputCircle.relocate(b.getWidth() + socketRadius - 3, runningHeight + (adjustedHeight / 2)); - outputCircle.setUserData(new SocketUserData(attr, true)); - sockets.add(outputCircle); - } - - runningHeight += adjustedHeight; - } - - // We store these for later. - this.sockets.put(obj.getId(), sockets); - - // This is for the connections, not the node. - EventHandler dragReleaseHandler = evt -> { - // Prevent circular references - if (evt.getGestureSource() == evt.getSource()) { - logger.debug("drag source & target are identical"); - evt.consume(); - return; - } - - // We remove the line we were drawing, and replace it with a new line managed by this class. - SocketFlow flow = new SocketFlow(this); - - if (flow.isValid(evt)) { - for (SocketFlow f : connections) { - if (f.getSrc() == flow.getSrc() && f.getDst() == flow.getDst()) { - // This is a duplicate of a flow we already have - logger.warn("Attempt to create duplicate connection."); - evt.consume(); - return; - } - } - - logger.debug("Valid flow: {}", flow); - connections.add(flow); - - NodeObject srcObj = (NodeObject) flow.getSrc().getParent().getUserData(); - NodeObject dstObj = (NodeObject) flow.getDst().getParent().getUserData(); - SocketUserData srcSocket = (SocketUserData) flow.getSrc().getUserData(); - SocketUserData dstSocket = (SocketUserData) flow.getDst().getUserData(); - - NodeConnection connection = new NodeConnection(srcObj, srcSocket.getAttrCfg(), - dstObj, dstSocket.getAttrCfg()); - - // This must be undone if the flow is removed - obj.getConnections().add(connection); - flow.setObj(obj); - flow.setObjConnection(connection); - - logger.debug("Built connection: [src: {}] [dst:{}]", srcObj, dstObj); - notifyUpdate(); - - flow.drawConnection(root); - } else { - // We have an invalid flow, do nothing - } - - evt.consume(); - }; - - EventHandler socketDragEnteredHandler = evt -> { - if (line != null) { - // snap line end to node center - Node nd = (Node) evt.getSource(); - Bounds bounds = nd.getBoundsInParent(); - line.setEndX((bounds.getMinX() + bounds.getMaxX()) / 2); - line.setEndY((bounds.getMinY() + bounds.getMaxY()) / 2); - } - evt.consume(); - }; - - EventHandler socketMouseDraggedHandler = evt -> { - // This exists to prevent the event from bubbling up to the NodePane - if (line != null) { - // X & Y in the event are going to be relative to the circle - Node nd = (Node) evt.getSource(); - Bounds bounds = nd.getParent().localToParent(nd.getBoundsInParent()); - - line.setEndX(bounds.getCenterX() + evt.getX()); - line.setEndY(bounds.getCenterY() + evt.getY()); - } - evt.consume(); - }; - - for (Node n : sockets) { - // register handlers - n.setOnDragDetected(startHandler); - n.setOnMouseDragReleased(dragReleaseHandler); - n.setOnMouseDragEntered(socketDragEnteredHandler); - n.setOnMouseDragged(socketMouseDraggedHandler); - } - - root.setOnMouseReleased(evt -> { - // TODO: This is getting called regardless of dragReleaseHandler - // mouse released outside of a target -> remove line - removeDragLine(); - }); - - root.setOnMouseDragged(evt -> { - if (line != null) { - // If we are dragging - keep dragging. - line.setEndX(evt.getX()); - line.setEndY(evt.getY()); - evt.consume(); - } - // We don't consume so we can bubble up to maybe a ScrollPane if we are not currently dragging a connection - }); - - EventHandler paneDragExited = new EventHandler() { - @Override - public void handle(MouseEvent event) { - updateNodePosition(node); - notifyUpdate(); - } - }; - node.addEventHandler(MouseEvent.MOUSE_DRAGGED, paneDragExited); - - node.getChildren().add(vbox); - // We add the sockets (the circles) last so they have the highest z-order. - // We add them to the node pane so that they drag with the pane. - node.getChildren().addAll(sockets); - - root.getChildren().add(node); - - notifyUpdate(); - - return node; - } - - /** - * Generate a new node based on the provided configuration and the desired x/y position. The x/y position - * is relative to the graph. - */ - public Pane generate(NodeConfig nodeCfg, double xPos, double yPos) { - NodeObject obj = new NodeObject(idSequence++, nodeCfg); - obj.setPosX(xPos); - obj.setPosY(yPos); - return generate(obj); - } - - /** - * Update the stored x/y position for the given node, based on its movement in the nodegraph, typically as the - * result of user interaction. The x/y position is relative to the graph. - */ - public void updateNodePosition(Node node) { - Bounds newBounds = node.getBoundsInParent(); - NodeObject obj = (NodeObject) node.getUserData(); - - // Hacky fix for QOS-36. We get negative values from getBoundsInParent() so we add a correction here. - obj.setPosX((int) newBounds.getMinX() + 38); - obj.setPosY((int) newBounds.getMinY() + 38); - } - - /** - * Indicate that the given connection is being removed from the nodegraph. - */ - public void removeConnection(SocketFlow flow) { - connections.remove(flow); - - // The object that is being removed. - - NodeObject removedObj = flow.getObj(); - removedObj.getConnections().remove(flow.getObjConnection()); - - notifyUpdate(); - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/SocketFlow.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/SocketFlow.java deleted file mode 100644 index 3d682188216b8a1504cdb0c88d72332df84d302b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/SocketFlow.java +++ /dev/null @@ -1,160 +0,0 @@ -package lc.mecha.nodegraph.javafx; - -import javafx.geometry.Bounds; -import javafx.scene.control.ContextMenu; -import javafx.scene.control.MenuItem; -import javafx.scene.input.MouseDragEvent; -import javafx.scene.layout.Pane; -import javafx.scene.shape.Circle; -import javafx.scene.shape.Line; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.nodegraph.NodeConnection; -import lc.mecha.nodegraph.NodeObject; - -/** - * This class manages a JavaFX connection between two NodeGraph objects. The implementation draws {@link Line} between - * a pair of provided {@link Circle} nodes representing the sockets on the edges of the node. - * - * @author Alex Leigh - * @since mk14 mod19 (CRYSTAL) - */ -public class SocketFlow { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SocketFlow.class); - private Circle src; - private Circle dst; - private Line line; - private final NodeGraphJFX nodegraph; - private NodeObject obj; - private NodeConnection objConnection; - - public SocketFlow(NodeGraphJFX nodegraph) { - this.nodegraph = nodegraph; - } - - /** - * Create a new socket flow when the src and destination are already known. This is useful when loading a - * previously saved state. Once created, drawConnection() should be called to actually draw the connection - * between the nodes. - */ - public SocketFlow(NodeGraphJFX nodegraph, Circle src, Circle dst) { - this(nodegraph); - this.src = src; - this.dst = dst; - } - - /** - * Remove the socket flow from the given pane. This removes it from the UI and calls - * notifyUpdate() on the {@link lc.mecha.nodegraph.NodeGraph}. - * - * @param root - */ - public void removeConnection(Pane root) { - root.getChildren().remove(line); - line = null; - nodegraph.notifyUpdate(); - } - - public NodeObject getObj() { - return obj; - } - - public void setObj(NodeObject obj) { - this.obj = obj; - } - - public NodeConnection getObjConnection() { - return objConnection; - } - - public void setObjConnection(NodeConnection objConnection) { - this.objConnection = objConnection; - } - - /** - * Either create or update a connection JavaFX line between the given socket circles in the given pane. - *

- * If the connection has already been drawn into a pane, calling this method with a different pane will still - * update the old pane. - */ - public void drawConnection(Pane root) { - if (line == null) { - line = new Line(); - NodeGraphJFX.setupLine(line); - root.getChildren().add(line); - line.toBack(); - - ContextMenu contextMenu = new ContextMenu(); - MenuItem menuItem = new MenuItem("Delete"); - menuItem.setOnAction(event -> { - root.getChildren().remove(line); - line = null; - nodegraph.removeConnection(this); - event.consume(); - }); - contextMenu.getItems().add(menuItem); - - line.setOnContextMenuRequested(event -> { - contextMenu.show(line, event.getScreenX(), event.getScreenY()); - event.consume(); - }); - } - - Bounds srcBounds = NodeGraphJFX.socketRootBounds(src); - Bounds dstBounds = NodeGraphJFX.socketRootBounds(dst); - - // start line at center of node - line.setStartX((srcBounds.getMinX() + srcBounds.getMaxX()) / 2); - line.setStartY((srcBounds.getMinY() + srcBounds.getMaxY()) / 2); - line.setEndX((dstBounds.getMinX() + dstBounds.getMaxX()) / 2); - line.setEndY((dstBounds.getMinY() + dstBounds.getMaxY()) / 2); - } - - /** - * Determine if the mouse event for a drag operation results in a valid connection. Disqualifying conditions - * include the src and destination socket being identical, attempting to connect same-cardinality sockets, - * and having a missing src or destination. - *

- * Calling this method also sets up getSrc() and getDst() based on the cardinality - * of the sockets. In other words, getSrc() will always return the output socket. - */ - public boolean isValid(MouseDragEvent evt) { - Circle a = (Circle) evt.getGestureSource(); - Circle b = (Circle) evt.getSource(); - - if (a == null || b == null) return false; - - SocketUserData au = (SocketUserData) a.getUserData(); - SocketUserData bu = (SocketUserData) b.getUserData(); - - if (au == null || bu == null) return false; - if (au.isOutput() == bu.isOutput()) return false; - - // Determine cardinality here of the circles. - if (!au.isOutput()) { - src = a; - dst = b; - } else { - src = b; - dst = a; - } - - return true; - } - - public Circle getSrc() { - return src; - } - - public Circle getDst() { - return dst; - } - - @Override - public String toString() { - return "SocketFlow{" + - "src=" + src + - ", dst=" + dst + - '}'; - } -} diff --git a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/SocketUserData.java b/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/SocketUserData.java deleted file mode 100644 index e6d7c07d2dc5462089ec87ae97689b714aa9e89e..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/java/lc/mecha/nodegraph/javafx/SocketUserData.java +++ /dev/null @@ -1,38 +0,0 @@ -package lc.mecha.nodegraph.javafx; - -import lc.mecha.nodegraph.NodeAttribute; - -/** - * User-data meant to be associated with a socket circle on a node object. - *

- * This class exists since it is insufficient to store the {@link NodeAttribute} configuration, since that does not - * indicate whether the socket is the input or the output side. - * - * @author Alex Leigh - * @since mk14 mod19 (CRYSTAL) - */ -public class SocketUserData { - private final NodeAttribute attrCfg; - private final boolean isOutput; - - public SocketUserData(NodeAttribute attrCfg, boolean isOutput) { - this.attrCfg = attrCfg; - this.isOutput = isOutput; - } - - public NodeAttribute getAttrCfg() { - return attrCfg; - } - - public boolean isOutput() { - return isOutput; - } - - @Override - public String toString() { - return "SocketUserData{" + - "name='" + attrCfg + '\'' + - ", isOutput=" + isOutput + - '}'; - } -} diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-EUC-H.bcmap deleted file mode 100644 index 2655fc70ae706c7ba52a5d647cbfdfad6072c697..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-EUC-V.bcmap deleted file mode 100644 index f1ed8538287499647d923d7d8f517a00cdac4e3a..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-H.bcmap deleted file mode 100644 index 39e89d3339c74cbe06e7e4f76d60bf3556b0d4b6..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-RKSJ-H.bcmap deleted file mode 100644 index e4167cb51f66c60ef7d9500b450303b5da175574..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-RKSJ-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-RKSJ-V.bcmap deleted file mode 100644 index 50b1646e94bba61b3242a680fe3023337e191123..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-RKSJ-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-V.bcmap deleted file mode 100644 index d7af99b5e2ae9a21d534f1965c35a2b572143322..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap deleted file mode 100644 index 37077d01e26f9ee2427592f6deebb145d628e731..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap deleted file mode 100644 index acf23231aea22e1a95761f7eafd35f1d42ea6b84..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap deleted file mode 100644 index 2359bc529d160857cce4c1d1bfca1322290205c1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap deleted file mode 100644 index af8293829c90ce63cc4c5eda0318003785ffcba1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap deleted file mode 100644 index 780549de19de05b6cbea4ccd4737351bc9ff6104..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap deleted file mode 100644 index bfd3119c62d9976dde9b1e59c572c678cf5811a0..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap deleted file mode 100644 index 25ef14ab4af42f4b70ccac76cddac8f3b22d8813..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap deleted file mode 100644 index 02f713bb838a8cd46f5b262c934d0edc8c6e8fe9..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap deleted file mode 100644 index d08e0cc5d98b2d933ab848c69dd6c504fbf1787d..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-H.bcmap deleted file mode 100644 index 59442acafb613b0c090314379f9f4c2fa134a1a1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-RKSJ-H.bcmap deleted file mode 100644 index a3065e441a0e1f1a65e9109ec9bc4f826fccac24..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-RKSJ-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-RKSJ-V.bcmap deleted file mode 100644 index 040014cfc0880371c20a89212942727c5dc30a78..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-RKSJ-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-V.bcmap deleted file mode 100644 index 2f816d320f08b8671498299c4d00e4564d2ece6c..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Add-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap deleted file mode 100644 index 88ec04af49d1e8ab6038e3b36dd28daf4dcf0119..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap deleted file mode 100644 index 03a501477c91d8156723f0c274a37d397ed65bad..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap deleted file mode 100644 index 2aa95141f9f5802818e34b0aa626e34e7cfee805..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap deleted file mode 100644 index 86d8b8c79cfa3907281aa3f25a46f178b87aedfa..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap deleted file mode 100644 index f50fc6c14e67a228c4ba9a61b1357c16410e8228..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap deleted file mode 100644 index 6caf4a83146a60a2db652647b9cfed5fb71bd97c..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap deleted file mode 100644 index b77fb0705c28d647d0bf7b25246af566a791b2ec..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap deleted file mode 100644 index 69d79a2c2c2b00207ab27b68ebf4404aa17c6f2c..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-0.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-0.bcmap deleted file mode 100644 index 36101083fa8fd22399728ccf533c48e830781de0..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-0.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-1.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-1.bcmap deleted file mode 100644 index 707bb1065c76d69551c287141cb258519132ef8e..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-1.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-2.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-2.bcmap deleted file mode 100644 index f7648cc3ff02c44e9594ccbd71deec742e253c2f..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-2.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-3.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-3.bcmap deleted file mode 100644 index 852145890ede3dc04339de284993da270d62311d..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-3.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-4.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-4.bcmap deleted file mode 100644 index e40c63ab1e5c240841f3b465ade920d60be6328f..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-4.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-5.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-5.bcmap deleted file mode 100644 index d7623b500232b6e62f29c2c232e6c2469a527314..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-5.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap deleted file mode 100644 index 7586525936cc5398b86d3752a4eb45b15825b25c..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap deleted file mode 100644 index f0e94ec196757e8660b567d8ece7f99869927913..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap deleted file mode 100644 index dad42c5ad7dad57954fc9a051ee7e222e83bee45..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap deleted file mode 100644 index 090819a064533f20aa68f562275556397683ae81..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap deleted file mode 100644 index 087dfc155860e65d2dc828dd432ffe88239fde23..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap deleted file mode 100644 index 46aa9bffe576e9a8b714646aed7f9e1a4e99dfe2..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap deleted file mode 100644 index 5b4b65cc6292a5ba7d89e976565bf08814bb88b6..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap deleted file mode 100644 index e77d699ab6a1bfd1e3eab6db428222e108342aec..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap deleted file mode 100644 index 128a14107750da2939d920c3e0802798c36f2e18..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap deleted file mode 100644 index cef1a9985191f53c4a8a35811d1caeecdd1a1820..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap deleted file mode 100644 index 11ffa36df8404ab970df2a24b2d80b1dc6348436..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap deleted file mode 100644 index 3172308c79d57147cdbe05930228043faa48ca54..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap deleted file mode 100644 index f3371c0cbd14c89a7d2b5a72e4e4f9cdc6d6017e..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5-H.bcmap deleted file mode 100644 index beb4d228104cd985130e6eed7ccabdb63e94ce27..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5-V.bcmap deleted file mode 100644 index 2d4f87d5035f03485616d4986b6373fa0820d0af..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5pc-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5pc-H.bcmap deleted file mode 100644 index ce0013167f852a873b639e301088c094d468a750..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5pc-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5pc-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5pc-V.bcmap deleted file mode 100644 index 73b99ff2fbca40e7ca5501f61e3f2f29c1fc1af6..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/B5pc-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS-EUC-H.bcmap deleted file mode 100644 index 61d1d0cb001dd484630e52eb7e47eaabbdee62cd..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS-EUC-V.bcmap deleted file mode 100644 index 1a393a51e079d1b5e7898423463fac5e87170da2..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS1-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS1-H.bcmap deleted file mode 100644 index f738e218ae2b4e9c33a1833a49fe20027e869aa1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS1-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS1-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS1-V.bcmap deleted file mode 100644 index 9c3169f0d9a083b462427bf4e46a25296ebbd862..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS1-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS2-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS2-H.bcmap deleted file mode 100644 index c89b3527fe57ad3b32061f36b73c756ead3fb071..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS2-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS2-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS2-V.bcmap deleted file mode 100644 index 7588cec83e271feb04e3c7f3a6ee3a4c153f2052..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/CNS2-V.bcmap +++ /dev/null @@ -1,3 +0,0 @@ -RCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSECNS2-H \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETHK-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETHK-B5-H.bcmap deleted file mode 100644 index cb29415de4f5a669c1b47e34ab889b5fdee6e428..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETHK-B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETHK-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETHK-B5-V.bcmap deleted file mode 100644 index f09aec6318dbec88491e3e488526882eaa930f37..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETHK-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETen-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETen-B5-H.bcmap deleted file mode 100644 index c2d77462d298cdb261f5e2eed5218fcba35cbe4e..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETen-B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETen-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETen-B5-V.bcmap deleted file mode 100644 index 89bff159ec62cc86b7c4a3258ee0455cab10b76a..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETen-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETenms-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETenms-B5-H.bcmap deleted file mode 100644 index a7d69db5e32646c3fecf51bd03dc1a61c8189fae..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETenms-B5-H.bcmap +++ /dev/null @@ -1,3 +0,0 @@ -RCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSE ETen-B5-H` ^ \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETenms-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETenms-B5-V.bcmap deleted file mode 100644 index adc5d618d6912cb3a67e4745b63764120f93d17f..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/ETenms-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/EUC-H.bcmap deleted file mode 100644 index e92ea5b3b99b1f20d31c9760481de0472e72685b..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/EUC-V.bcmap deleted file mode 100644 index 7a7c183228dfdc5c236b7914ca68298520ac60a1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-H.bcmap deleted file mode 100644 index 3b5cde44dbaf7f78c716c3705590ae28e9bed265..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap deleted file mode 100644 index ea4d2d97b8bc1df2abebce0d4f8c58789f723eb1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap deleted file mode 100644 index 3457c2770913963731993654c838df133deabbb3..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-V.bcmap deleted file mode 100644 index 4999ca40412b66e87c56870c80cff32212483ee8..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Ext-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-EUC-H.bcmap deleted file mode 100644 index e39908b9844939a3c6d6baccced5771b8c1b1b2d..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-EUC-V.bcmap deleted file mode 100644 index d5be5446aa40898742183202ce0624b8acee5234..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-H.bcmap deleted file mode 100644 index 39189c54e363ebe2ea542addd6b629bdacd0e8e9..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-H.bcmap +++ /dev/null @@ -1,4 +0,0 @@ -RCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSE!!]aX!!]`21> p z$]"Rd-U7* 4%+ Z {/%<9Kb1]." `],"] -"]h"]F"]$"]"]`"]>"]"]z"]X"]6"]"]r"]P"]."] "]j"]H"]&"]"]b"]@"]"]|"]Z"]8"]"]t"]R"]0"]"]l"]J"]("]"]d"]B"] "X~']W"]5"]"]q"]O"]-"] "]i"]G"]%"]"]a"]?"]"]{"]Y"]7"]"]s"]Q"]/"] "]k"]I"]'"]"]c"]A"]"]}"]["]9 \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-V.bcmap deleted file mode 100644 index 310834512ffe49cbb7ca903abc2dc1aaa934e6f4..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GB-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK-EUC-H.bcmap deleted file mode 100644 index 05fff7e8254c995031783fb3b4892d58a6b176ac..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK-EUC-V.bcmap deleted file mode 100644 index 0cdf6bed6d450473f92e691e9015e4028113607e..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK2K-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK2K-H.bcmap deleted file mode 100644 index 46f6ba5967cdfb381f001eb1193f17b43d943962..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK2K-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK2K-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK2K-V.bcmap deleted file mode 100644 index d9a9479843eda25fb0a8fd69fb302740813d925f..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBK2K-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBKp-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBKp-EUC-H.bcmap deleted file mode 100644 index 5cb0af687ee20a10ecc367892ae49d7b1e74acd1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBKp-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBKp-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBKp-EUC-V.bcmap deleted file mode 100644 index bca93b8efbb18a13e15025ad41d23db8267d2577..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBKp-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-EUC-H.bcmap deleted file mode 100644 index 4b4e2d32294538b5093ed3870bb9de37abf21599..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-EUC-V.bcmap deleted file mode 100644 index 38f706699f395dcdad5c6ad93d1a9b6fe9f66c78..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-H.bcmap deleted file mode 100644 index 8437ac33771536813228e3f9c1cb6c35af3acc72..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-V.bcmap deleted file mode 100644 index 697ab4a8e756204de9d089c8c136579973c9c0c6..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBT-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap deleted file mode 100644 index f6e50e89363483070b25106b94f729ae38587d28..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap deleted file mode 100644 index 6c0d71a2d04473870c60dc59342400fe1b4ccc48..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBpc-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBpc-EUC-H.bcmap deleted file mode 100644 index c9edf67cf6d640607080ad2775c14760df77dd96..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBpc-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBpc-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBpc-EUC-V.bcmap deleted file mode 100644 index 31450c97f640ff40bd79677cd3e97f4485453d9b..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/GBpc-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/H.bcmap deleted file mode 100644 index 7b24ea4629d0d4cc9f0cd5852edde324156ef0b1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdla-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdla-B5-H.bcmap deleted file mode 100644 index 7d30c0500520d563d0e5891c8f4781c61ddcca5e..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdla-B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdla-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdla-B5-V.bcmap deleted file mode 100644 index 78946940d68cdd2ea1bec1230b1eb0b19b8d5deb..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdla-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdlb-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdlb-B5-H.bcmap deleted file mode 100644 index d829a231015161e107123e211d4a78110daab6bf..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdlb-B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdlb-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdlb-B5-V.bcmap deleted file mode 100644 index 2b572b50a47f09a51c777efabcaf6a9e3faa26c2..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKdlb-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKgccs-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKgccs-B5-H.bcmap deleted file mode 100644 index 971a4f23f791f75d4e604ad717735ee55529eda5..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKgccs-B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKgccs-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKgccs-B5-V.bcmap deleted file mode 100644 index d353ca256b54236a4acefafdbc08e5b719892014..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKgccs-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm314-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm314-B5-H.bcmap deleted file mode 100644 index 576dc01112bd7f28c30804661f546ece203c53d8..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm314-B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm314-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm314-B5-V.bcmap deleted file mode 100644 index 0e96d0e228e0608f77f035655140c6a235d4ea56..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm314-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm471-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm471-B5-H.bcmap deleted file mode 100644 index 11d170c75ed8696f0705f9fb9f5afcf3b0aff4c9..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm471-B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm471-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm471-B5-V.bcmap deleted file mode 100644 index 54959bf9e776c990460f2582adee80d317062d20..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKm471-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKscs-B5-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKscs-B5-H.bcmap deleted file mode 100644 index 6ef7857ad17cefc4ab714d209716002317c23baa..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKscs-B5-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKscs-B5-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKscs-B5-V.bcmap deleted file mode 100644 index 1fb2fa2a2ecdf5abd6b7cbf2cb5f2ee4f0b11fe2..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/HKscs-B5-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Hankaku.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Hankaku.bcmap deleted file mode 100644 index 4b8ec7fcef466bc4090dc13c8edb354cb94d0b67..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Hankaku.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Hiragana.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Hiragana.bcmap deleted file mode 100644 index 17e983e77264c62ee149d1c8ec576a23e8f90eda..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Hiragana.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-EUC-H.bcmap deleted file mode 100644 index a45c65f008e7d6ff34edaf53af15ea471d4f6d90..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-EUC-V.bcmap deleted file mode 100644 index 0e7b21f0a612b1acc41c1b23ad0060da539eaf2b..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-H.bcmap deleted file mode 100644 index b9b22b67879d4043c75b617a24f96b0bd47cf4ca..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-Johab-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-Johab-H.bcmap deleted file mode 100644 index 2531ffcf41acc01338f781c845c7f50f62fcc84a..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-Johab-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-Johab-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-Johab-V.bcmap deleted file mode 100644 index 367ceb226ab1e33624b30512716a3b65feb5a100..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-Johab-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-V.bcmap deleted file mode 100644 index 6ae2f0b6b7238adc67bd9231668d9853ea3c8e1e..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-H.bcmap deleted file mode 100644 index a8d4240e6adb3ac1db859085b769a0715be03c72..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap deleted file mode 100644 index 8b4ae18fd3efdbe020e4e1407d2f65125085a71a..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap deleted file mode 100644 index b655dbcfb123ed06c7eeb87dfc96ecf6759363dd..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-V.bcmap deleted file mode 100644 index 21f97f65b4a61adfa13f55d5a096ceab45eb485b..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCms-UHC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap deleted file mode 100644 index e06f361eb6d429290806b9f9cd7a0aebce22be4d..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap deleted file mode 100644 index f3c9113fcf0b02e1deea8246bfd27408becc8401..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Katakana.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Katakana.bcmap deleted file mode 100644 index 524303c4f0c20e6cd19aa1d35805e98c2c05cb7c..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Katakana.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/LICENSE b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/LICENSE deleted file mode 100644 index b1ad168ad0dd09b578cafec31d2666049b4d8718..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/LICENSE +++ /dev/null @@ -1,36 +0,0 @@ -%%Copyright: ----------------------------------------------------------- -%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated. -%%Copyright: All rights reserved. -%%Copyright: -%%Copyright: Redistribution and use in source and binary forms, with or -%%Copyright: without modification, are permitted provided that the -%%Copyright: following conditions are met: -%%Copyright: -%%Copyright: Redistributions of source code must retain the above -%%Copyright: copyright notice, this list of conditions and the following -%%Copyright: disclaimer. -%%Copyright: -%%Copyright: Redistributions in binary form must reproduce the above -%%Copyright: copyright notice, this list of conditions and the following -%%Copyright: disclaimer in the documentation and/or other materials -%%Copyright: provided with the distribution. -%%Copyright: -%%Copyright: Neither the name of Adobe Systems Incorporated nor the names -%%Copyright: of its contributors may be used to endorse or promote -%%Copyright: products derived from this software without specific prior -%%Copyright: written permission. -%%Copyright: -%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -%%Copyright: ----------------------------------------------------------- diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/NWP-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/NWP-H.bcmap deleted file mode 100644 index afc5e4b05ee6f4be4f17eb616742b59aee4c5ac1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/NWP-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/NWP-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/NWP-V.bcmap deleted file mode 100644 index bb5785e3278ab7a24b3080cf22ea0f609aab4595..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/NWP-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/RKSJ-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/RKSJ-H.bcmap deleted file mode 100644 index fb8d298e9bb8e090139bbc5e958f11a237672825..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/RKSJ-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/RKSJ-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/RKSJ-V.bcmap deleted file mode 100644 index a2555a6c048de98d68f534fbba18baf4b4311e50..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/RKSJ-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Roman.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Roman.bcmap deleted file mode 100644 index f896dcf1c7fb118fc491094edd6244e16856d586..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/Roman.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap deleted file mode 100644 index d5db27c5cf1f5b0e66e16f6314d042a4ef707222..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap deleted file mode 100644 index 1dc9b7a21bc59b6540d55b3d8933e5a6ba9f8947..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap deleted file mode 100644 index 961afefb66cb70ea2f10784029572e5f68ae4740..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap deleted file mode 100644 index df0cffe86b5e9f154c5ef6207120d6bd43706631..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap deleted file mode 100644 index 1ab18a14367cf31113eddf5ae15d9fb3549f39ab..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap deleted file mode 100644 index ad14662e25e7a4e3bd7f543c126ac24417bc3665..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap deleted file mode 100644 index 83c6bd7c4ff0abf4634765312b8a3026942d2b35..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap deleted file mode 100644 index 22a27e4ddbe26664c57f778a864b6872f6c2ba03..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap deleted file mode 100644 index 5bd6228ce62ec10f00316b136663ed6b60ebf9e5..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap deleted file mode 100644 index 53c534b7fecfd84e465c8943fe3adf500a4444f4..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap deleted file mode 100644 index b95045b400a77419292cab245f9f66f6298dbb5d..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap deleted file mode 100644 index 51f023e0d609798e72d46bf41309e092d72ccb07..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap deleted file mode 100644 index f0dbd14f3795a40b23cbe5b826f776f4ea7cba4c..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap deleted file mode 100644 index ce9c30a98541e23244876fef9dc67c2639fdd746..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap deleted file mode 100644 index 982ca462b1b047c945d3b7b0123eb42dfd8d48cd..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap deleted file mode 100644 index f78020dd4028d56497c44b7afa94985f0d18f8ce..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap deleted file mode 100644 index 7daf56afabf65a4707d7bb06d829f56b247c9e80..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap deleted file mode 100644 index ac9975c585ede6958758980ade161f687d40d58b..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap deleted file mode 100644 index 3da0a1c62f19f720590b54fc1de7b027af100945..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap deleted file mode 100644 index c50b9ddfde9da7ebb2f67eba68d58fa2cdee902a..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap deleted file mode 100644 index 6761344639bcde069cf7133d52e127536dcdd037..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap deleted file mode 100644 index 70bf90c0efb66da2a7aa19a820d766cfe3ef3183..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap deleted file mode 100644 index 7a83d53ae70ca3d81cda827cc224ec8c5efa4f17..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap deleted file mode 100644 index 7a8713539491f51c52ba3a1525d181efd32c1f0f..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap deleted file mode 100644 index 9f0334cac7f3852b4d06dc9e5cf0f9646ba21a5e..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap deleted file mode 100644 index 808a94f0fd9c3b3cb0267e5cfe4dced2e65ecb1c..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap deleted file mode 100644 index d768bf811ffeb0d794b732a82940fa1442af499f..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap deleted file mode 100644 index 3d5bf6fb4ef94b452ed1ef0df926fc2bee55e973..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap deleted file mode 100644 index 09eee10d4fb4b9fe1e70a1ee56825a207ae8034a..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap deleted file mode 100644 index 6c546001331cf4f2f68563229f994b55730dfdb1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap deleted file mode 100644 index 1b1a64f50d204b03ef0c5575233687830a1b053a..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap deleted file mode 100644 index 994aa9ef9f50495a3ac558630b0234680be23c2f..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap deleted file mode 100644 index 643f921b65819c9e8c80a97c51fc68a89053bd51..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap deleted file mode 100644 index c148f67f5e9fe4a108519eeaace89e708a51f8f5..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap deleted file mode 100644 index 1849d809a679e56414f4e18dce8ca3c41109e84e..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap deleted file mode 100644 index a83a677c56df6f1ac395d2ba71e60a08b0985e97..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap deleted file mode 100644 index f527248ad547015ad8af1181e646da3b235de08f..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap deleted file mode 100644 index e1a988dc9e80be9a0803e22d021b1e81fdcc5b94..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap deleted file mode 100644 index 47e054a961adb3d97caaa31c854d9b8ef4555bf9..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap deleted file mode 100644 index b5b94852a57b19bcb357a6cae2cae2e7910e05a1..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap deleted file mode 100644 index 026adcaad4c56cb1989bd31cbcf3ad21f3965a17..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap deleted file mode 100644 index fd4e66e81f3507b190fb2986a26a45c1c380e302..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap deleted file mode 100644 index 075efb7054901b1022af68e723647769cbe1d556..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap deleted file mode 100644 index 769d2142c03b10680800b3b6ae883e27fe04c5a2..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap deleted file mode 100644 index bdab208b69d287128195eccbd084c8cf4ca658c3..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap deleted file mode 100644 index 6ff8674af772af896d7d33c7addc37c57822f8a2..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap deleted file mode 100644 index 8dfa76a58eb720dd1992c2cc9abf1dd4b39c5a66..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/V.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/V.bcmap deleted file mode 100644 index fdec9906621904180f42bd5c91f377397fd6cf95..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/V.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/WP-Symbol.bcmap b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/WP-Symbol.bcmap deleted file mode 100644 index 46729bbf30f3b2f176492d907fb8ca3f6a1e3026..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/cmaps/WP-Symbol.bcmap and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/debugger.js b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/debugger.js deleted file mode 100644 index daa64805ed26c0fd3490187e85d12991c360851e..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/debugger.js +++ /dev/null @@ -1,625 +0,0 @@ -/* Copyright 2012 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* eslint-disable no-var */ - -"use strict"; - -var FontInspector = (function FontInspectorClosure() { - var fonts; - var active = false; - var fontAttribute = "data-font-name"; - - function removeSelection() { - const divs = document.querySelectorAll(`span[${fontAttribute}]`); - for (const div of divs) { - div.className = ""; - } - } - - function resetSelection() { - const divs = document.querySelectorAll(`span[${fontAttribute}]`); - for (const div of divs) { - div.className = "debuggerHideText"; - } - } - - function selectFont(fontName, show) { - const divs = document.querySelectorAll( - `span[${fontAttribute}=${fontName}]` - ); - for (const div of divs) { - div.className = show ? "debuggerShowText" : "debuggerHideText"; - } - } - - function textLayerClick(e) { - if ( - !e.target.dataset.fontName || - e.target.tagName.toUpperCase() !== "SPAN" - ) { - return; - } - var fontName = e.target.dataset.fontName; - var selects = document.getElementsByTagName("input"); - for (var i = 0; i < selects.length; ++i) { - var select = selects[i]; - if (select.dataset.fontName !== fontName) { - continue; - } - select.checked = !select.checked; - selectFont(fontName, select.checked); - select.scrollIntoView(); - } - } - - return { - // Properties/functions needed by PDFBug. - id: "FontInspector", - name: "Font Inspector", - panel: null, - manager: null, - init: function init(pdfjsLib) { - var panel = this.panel; - var tmp = document.createElement("button"); - tmp.addEventListener("click", resetSelection); - tmp.textContent = "Refresh"; - panel.appendChild(tmp); - - fonts = document.createElement("div"); - panel.appendChild(fonts); - }, - cleanup: function cleanup() { - fonts.textContent = ""; - }, - enabled: false, - get active() { - return active; - }, - set active(value) { - active = value; - if (active) { - document.body.addEventListener("click", textLayerClick, true); - resetSelection(); - } else { - document.body.removeEventListener("click", textLayerClick, true); - removeSelection(); - } - }, - // FontInspector specific functions. - fontAdded: function fontAdded(fontObj, url) { - function properties(obj, list) { - var moreInfo = document.createElement("table"); - for (var i = 0; i < list.length; i++) { - var tr = document.createElement("tr"); - var td1 = document.createElement("td"); - td1.textContent = list[i]; - tr.appendChild(td1); - var td2 = document.createElement("td"); - td2.textContent = obj[list[i]].toString(); - tr.appendChild(td2); - moreInfo.appendChild(tr); - } - return moreInfo; - } - - var moreInfo = properties(fontObj, ["name", "type"]); - const fontName = fontObj.loadedName; - var font = document.createElement("div"); - var name = document.createElement("span"); - name.textContent = fontName; - var download = document.createElement("a"); - if (url) { - url = /url\(['"]?([^)"']+)/.exec(url); - download.href = url[1]; - } else if (fontObj.data) { - download.href = URL.createObjectURL( - new Blob([fontObj.data], {type: fontObj.mimeType}) - ); - } - download.textContent = "Download"; - var logIt = document.createElement("a"); - logIt.href = ""; - logIt.textContent = "Log"; - logIt.addEventListener("click", function (event) { - event.preventDefault(); - console.log(fontObj); - }); - const select = document.createElement("input"); - select.setAttribute("type", "checkbox"); - select.dataset.fontName = fontName; - select.addEventListener("click", function () { - selectFont(fontName, select.checked); - }); - font.appendChild(select); - font.appendChild(name); - font.appendChild(document.createTextNode(" ")); - font.appendChild(download); - font.appendChild(document.createTextNode(" ")); - font.appendChild(logIt); - font.appendChild(moreInfo); - fonts.appendChild(font); - // Somewhat of a hack, should probably add a hook for when the text layer - // is done rendering. - setTimeout(() => { - if (this.active) { - resetSelection(); - } - }, 2000); - }, - }; -})(); - -var opMap; - -// Manages all the page steppers. -var StepperManager = (function StepperManagerClosure() { - var steppers = []; - var stepperDiv = null; - var stepperControls = null; - var stepperChooser = null; - var breakPoints = Object.create(null); - return { - // Properties/functions needed by PDFBug. - id: "Stepper", - name: "Stepper", - panel: null, - manager: null, - init: function init(pdfjsLib) { - var self = this; - stepperControls = document.createElement("div"); - stepperChooser = document.createElement("select"); - stepperChooser.addEventListener("change", function (event) { - self.selectStepper(this.value); - }); - stepperControls.appendChild(stepperChooser); - stepperDiv = document.createElement("div"); - this.panel.appendChild(stepperControls); - this.panel.appendChild(stepperDiv); - if (sessionStorage.getItem("pdfjsBreakPoints")) { - breakPoints = JSON.parse(sessionStorage.getItem("pdfjsBreakPoints")); - } - - opMap = Object.create(null); - for (var key in pdfjsLib.OPS) { - opMap[pdfjsLib.OPS[key]] = key; - } - }, - cleanup: function cleanup() { - stepperChooser.textContent = ""; - stepperDiv.textContent = ""; - steppers = []; - }, - enabled: false, - active: false, - // Stepper specific functions. - create: function create(pageIndex) { - var debug = document.createElement("div"); - debug.id = "stepper" + pageIndex; - debug.hidden = true; - debug.className = "stepper"; - stepperDiv.appendChild(debug); - var b = document.createElement("option"); - b.textContent = "Page " + (pageIndex + 1); - b.value = pageIndex; - stepperChooser.appendChild(b); - var initBreakPoints = breakPoints[pageIndex] || []; - var stepper = new Stepper(debug, pageIndex, initBreakPoints); - steppers.push(stepper); - if (steppers.length === 1) { - this.selectStepper(pageIndex, false); - } - return stepper; - }, - selectStepper: function selectStepper(pageIndex, selectPanel) { - var i; - pageIndex = pageIndex | 0; - if (selectPanel) { - this.manager.selectPanel(this); - } - for (i = 0; i < steppers.length; ++i) { - var stepper = steppers[i]; - stepper.panel.hidden = stepper.pageIndex !== pageIndex; - } - var options = stepperChooser.options; - for (i = 0; i < options.length; ++i) { - var option = options[i]; - option.selected = (option.value | 0) === pageIndex; - } - }, - saveBreakPoints: function saveBreakPoints(pageIndex, bps) { - breakPoints[pageIndex] = bps; - sessionStorage.setItem("pdfjsBreakPoints", JSON.stringify(breakPoints)); - }, - }; -})(); - -// The stepper for each page's IRQueue. -var Stepper = (function StepperClosure() { - // Shorter way to create element and optionally set textContent. - function c(tag, textContent) { - var d = document.createElement(tag); - if (textContent) { - d.textContent = textContent; - } - return d; - } - - function simplifyArgs(args) { - if (typeof args === "string") { - var MAX_STRING_LENGTH = 75; - return args.length <= MAX_STRING_LENGTH - ? args - : args.substring(0, MAX_STRING_LENGTH) + "..."; - } - if (typeof args !== "object" || args === null) { - return args; - } - if ("length" in args) { - // array - var simpleArgs = [], - i, - ii; - var MAX_ITEMS = 10; - for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) { - simpleArgs.push(simplifyArgs(args[i])); - } - if (i < args.length) { - simpleArgs.push("..."); - } - return simpleArgs; - } - var simpleObj = {}; - for (var key in args) { - simpleObj[key] = simplifyArgs(args[key]); - } - return simpleObj; - } - - // eslint-disable-next-line no-shadow - function Stepper(panel, pageIndex, initialBreakPoints) { - this.panel = panel; - this.breakPoint = 0; - this.nextBreakPoint = null; - this.pageIndex = pageIndex; - this.breakPoints = initialBreakPoints; - this.currentIdx = -1; - this.operatorListIdx = 0; - } - - Stepper.prototype = { - init: function init(operatorList) { - var panel = this.panel; - var content = c("div", "c=continue, s=step"); - var table = c("table"); - content.appendChild(table); - table.cellSpacing = 0; - var headerRow = c("tr"); - table.appendChild(headerRow); - headerRow.appendChild(c("th", "Break")); - headerRow.appendChild(c("th", "Idx")); - headerRow.appendChild(c("th", "fn")); - headerRow.appendChild(c("th", "args")); - panel.appendChild(content); - this.table = table; - this.updateOperatorList(operatorList); - }, - updateOperatorList: function updateOperatorList(operatorList) { - var self = this; - - function cboxOnClick() { - var x = +this.dataset.idx; - if (this.checked) { - self.breakPoints.push(x); - } else { - self.breakPoints.splice(self.breakPoints.indexOf(x), 1); - } - StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints); - } - - var MAX_OPERATORS_COUNT = 15000; - if (this.operatorListIdx > MAX_OPERATORS_COUNT) { - return; - } - - var chunk = document.createDocumentFragment(); - var operatorsToDisplay = Math.min( - MAX_OPERATORS_COUNT, - operatorList.fnArray.length - ); - for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) { - var line = c("tr"); - line.className = "line"; - line.dataset.idx = i; - chunk.appendChild(line); - var checked = this.breakPoints.includes(i); - var args = operatorList.argsArray[i] || []; - - var breakCell = c("td"); - var cbox = c("input"); - cbox.type = "checkbox"; - cbox.className = "points"; - cbox.checked = checked; - cbox.dataset.idx = i; - cbox.onclick = cboxOnClick; - - breakCell.appendChild(cbox); - line.appendChild(breakCell); - line.appendChild(c("td", i.toString())); - var fn = opMap[operatorList.fnArray[i]]; - var decArgs = args; - if (fn === "showText") { - var glyphs = args[0]; - var newArgs = []; - var str = []; - for (var j = 0; j < glyphs.length; j++) { - var glyph = glyphs[j]; - if (typeof glyph === "object" && glyph !== null) { - str.push(glyph.fontChar); - } else { - if (str.length > 0) { - newArgs.push(str.join("")); - str = []; - } - newArgs.push(glyph); // null or number - } - } - if (str.length > 0) { - newArgs.push(str.join("")); - } - decArgs = [newArgs]; - } - line.appendChild(c("td", fn)); - line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs)))); - } - if (operatorsToDisplay < operatorList.fnArray.length) { - var lastCell = c("td", "..."); - lastCell.colspan = 4; - chunk.appendChild(lastCell); - } - this.operatorListIdx = operatorList.fnArray.length; - this.table.appendChild(chunk); - }, - getNextBreakPoint: function getNextBreakPoint() { - this.breakPoints.sort(function (a, b) { - return a - b; - }); - for (var i = 0; i < this.breakPoints.length; i++) { - if (this.breakPoints[i] > this.currentIdx) { - return this.breakPoints[i]; - } - } - return null; - }, - breakIt: function breakIt(idx, callback) { - StepperManager.selectStepper(this.pageIndex, true); - var self = this; - var dom = document; - self.currentIdx = idx; - var listener = function (e) { - switch (e.keyCode) { - case 83: // step - dom.removeEventListener("keydown", listener); - self.nextBreakPoint = self.currentIdx + 1; - self.goTo(-1); - callback(); - break; - case 67: // continue - dom.removeEventListener("keydown", listener); - var breakPoint = self.getNextBreakPoint(); - self.nextBreakPoint = breakPoint; - self.goTo(-1); - callback(); - break; - } - }; - dom.addEventListener("keydown", listener); - self.goTo(idx); - }, - goTo: function goTo(idx) { - var allRows = this.panel.getElementsByClassName("line"); - for (var x = 0, xx = allRows.length; x < xx; ++x) { - var row = allRows[x]; - if ((row.dataset.idx | 0) === idx) { - row.style.backgroundColor = "rgb(251,250,207)"; - row.scrollIntoView(); - } else { - row.style.backgroundColor = null; - } - } - }, - }; - return Stepper; -})(); - -var Stats = (function Stats() { - var stats = []; - - function clear(node) { - while (node.hasChildNodes()) { - node.removeChild(node.lastChild); - } - } - - function getStatIndex(pageNumber) { - for (var i = 0, ii = stats.length; i < ii; ++i) { - if (stats[i].pageNumber === pageNumber) { - return i; - } - } - return false; - } - - return { - // Properties/functions needed by PDFBug. - id: "Stats", - name: "Stats", - panel: null, - manager: null, - init(pdfjsLib) { - }, - enabled: false, - active: false, - // Stats specific functions. - add(pageNumber, stat) { - if (!stat) { - return; - } - var statsIndex = getStatIndex(pageNumber); - if (statsIndex !== false) { - const b = stats[statsIndex]; - this.panel.removeChild(b.div); - stats.splice(statsIndex, 1); - } - var wrapper = document.createElement("div"); - wrapper.className = "stats"; - var title = document.createElement("div"); - title.className = "title"; - title.textContent = "Page: " + pageNumber; - var statsDiv = document.createElement("div"); - statsDiv.textContent = stat.toString(); - wrapper.appendChild(title); - wrapper.appendChild(statsDiv); - stats.push({pageNumber, div: wrapper}); - stats.sort(function (a, b) { - return a.pageNumber - b.pageNumber; - }); - clear(this.panel); - for (var i = 0, ii = stats.length; i < ii; ++i) { - this.panel.appendChild(stats[i].div); - } - }, - cleanup() { - stats = []; - clear(this.panel); - }, - }; -})(); - -// Manages all the debugging tools. -window.PDFBug = (function PDFBugClosure() { - var panelWidth = 300; - var buttons = []; - var activePanel = null; - - return { - tools: [FontInspector, StepperManager, Stats], - enable(ids) { - var all = false, - tools = this.tools; - if (ids.length === 1 && ids[0] === "all") { - all = true; - } - for (var i = 0; i < tools.length; ++i) { - var tool = tools[i]; - if (all || ids.includes(tool.id)) { - tool.enabled = true; - } - } - if (!all) { - // Sort the tools by the order they are enabled. - tools.sort(function (a, b) { - var indexA = ids.indexOf(a.id); - indexA = indexA < 0 ? tools.length : indexA; - var indexB = ids.indexOf(b.id); - indexB = indexB < 0 ? tools.length : indexB; - return indexA - indexB; - }); - } - }, - init(pdfjsLib, container) { - /* - * Basic Layout: - * PDFBug - * Controls - * Panels - * Panel - * Panel - * ... - */ - var ui = document.createElement("div"); - ui.id = "PDFBug"; - - var controls = document.createElement("div"); - controls.setAttribute("class", "controls"); - ui.appendChild(controls); - - var panels = document.createElement("div"); - panels.setAttribute("class", "panels"); - ui.appendChild(panels); - - container.appendChild(ui); - container.style.right = panelWidth + "px"; - - // Initialize all the debugging tools. - var tools = this.tools; - var self = this; - for (var i = 0; i < tools.length; ++i) { - var tool = tools[i]; - var panel = document.createElement("div"); - var panelButton = document.createElement("button"); - panelButton.textContent = tool.name; - panelButton.addEventListener( - "click", - (function (selected) { - return function (event) { - event.preventDefault(); - self.selectPanel(selected); - }; - })(i) - ); - controls.appendChild(panelButton); - panels.appendChild(panel); - tool.panel = panel; - tool.manager = this; - if (tool.enabled) { - tool.init(pdfjsLib); - } else { - panel.textContent = - tool.name + - " is disabled. To enable add " + - ' "' + - tool.id + - '" to the pdfBug parameter ' + - "and refresh (separate multiple by commas)."; - } - buttons.push(panelButton); - } - this.selectPanel(0); - }, - cleanup() { - for (var i = 0, ii = this.tools.length; i < ii; i++) { - if (this.tools[i].enabled) { - this.tools[i].cleanup(); - } - } - }, - selectPanel(index) { - if (typeof index !== "number") { - index = this.tools.indexOf(index); - } - if (index === activePanel) { - return; - } - activePanel = index; - var tools = this.tools; - for (var j = 0; j < tools.length; ++j) { - var isActive = j === index; - buttons[j].classList.toggle("active", isActive); - tools[j].active = isActive; - tools[j].panel.hidden = !isActive; - } - }, - }; -})(); diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-check.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-check.svg deleted file mode 100644 index d22f3e52b4f7fb8037970fb63f447c046895fe8d..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-check.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-comment.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-comment.svg deleted file mode 100644 index 4a7a21e62df1e141193e6e584d380d833cb86b36..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-comment.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-help.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-help.svg deleted file mode 100644 index 81a00ac16f2981f466da676fb3684ac6f1df4ac4..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-help.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-insert.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-insert.svg deleted file mode 100644 index ca9e9e20e66f70cbf864ddbc009ef4830fbcc5e9..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-insert.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-key.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-key.svg deleted file mode 100644 index 733edc0b81cc1216910c8f1235de19dfaf658f8c..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-key.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-newparagraph.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-newparagraph.svg deleted file mode 100644 index e75f98077e54342533050da133897eb5bc1cb77f..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-newparagraph.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-noicon.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-noicon.svg deleted file mode 100644 index 21423057a4b8c76c3a09bf712575ddd2d846c585..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-noicon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-note.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-note.svg deleted file mode 100644 index f5f2c16a5fd24bfc47195f4e83b8ed158a607e03..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-note.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-paragraph.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-paragraph.svg deleted file mode 100644 index be06ce9b3e675461e9499a3b09d50d7ab4a3d099..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/annotation-paragraph.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/findbarButton-next.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/findbarButton-next.svg deleted file mode 100644 index 8416c5a3116ebe28b9cd365dbfc0d61fa0d50d12..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/findbarButton-next.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/findbarButton-previous.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/findbarButton-previous.svg deleted file mode 100644 index a1db1acfd1928834f609a905d0af4c8a04943ad6..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/findbarButton-previous.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/grab.cur b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/grab.cur deleted file mode 100644 index db7ad5aed3ef958aa13903afa769386382a87ad3..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/grab.cur and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/grabbing.cur b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/grabbing.cur deleted file mode 100644 index e0dfd04e4d3fcbaa6588c8cbb9e9065609bcb862..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/grabbing.cur and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading-dark.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading-dark.svg deleted file mode 100644 index cec39a8771381349c0fde03efc0123b6c951d71d..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading-dark.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading-icon.gif b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading-icon.gif deleted file mode 100644 index 1c72ebb554be018511ae972c3f2361dff02dce02..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading-icon.gif and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading.svg deleted file mode 100644 index d63eaf01d67f635a3084f69e03033f01ed2f1ade..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/loading.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg deleted file mode 100644 index c2a2afcedf9fda3c9ffe46cc6e12a5e4de5b946c..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-firstPage.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-firstPage.svg deleted file mode 100644 index bfe093468b3bdb29dad888e11bb1e8d644b078cf..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-firstPage.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-handTool.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-handTool.svg deleted file mode 100644 index 5990cb835a6afa713080fafec1b43154b90716b6..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-handTool.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-lastPage.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-lastPage.svg deleted file mode 100644 index bc18c004742c201f23c6d395c1c66c1bd9d6876e..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-lastPage.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg deleted file mode 100644 index b8348e8b91d847bc74954fdb7e80ffbcd6fb3699..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg deleted file mode 100644 index f1adc001e5405a1de5a58b153889e1224cb0fd49..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg deleted file mode 100644 index fa757c79ac2797eb2ea07860642d0d5f64121586..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg deleted file mode 100644 index 06ac818f756cc2d3428089173b1206fb0ce0fd36..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg deleted file mode 100644 index 0b6b80c7a6345f8e43f3f1cb5cea1fa571daa21a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-selectTool.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-selectTool.svg deleted file mode 100644 index 0d1b88612924dab47a0192f2cdeee2debdeded51..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-selectTool.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg deleted file mode 100644 index 5d964e3d55074fc654a9e97236012b1d4071ded7..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg deleted file mode 100644 index cb8b92a92f9d6e37a0a196cfdb77232c591e9668..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg deleted file mode 100644 index 4b89d9b227f1b1fbbd03450e575e8bd5df011ed1..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/shadow.png b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/shadow.png deleted file mode 100644 index a00061ac7e12e1f24f955351c732f5884ed94e6d..0000000000000000000000000000000000000000 Binary files a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/shadow.png and /dev/null differ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-bookmark.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-bookmark.svg deleted file mode 100644 index a19c5658c046dc7d06ad0b7db481a91993da80f8..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-bookmark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-currentOutlineItem.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-currentOutlineItem.svg deleted file mode 100644 index d064a2a817b56f3702fe3768953f25a77dc59c0d..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-currentOutlineItem.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-download.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-download.svg deleted file mode 100644 index f251143a4ca8b7b5c0b04b203e009b2898d968d9..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-download.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-menuArrow.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-menuArrow.svg deleted file mode 100644 index dc8aa9753af4c3dc0074b963e1ee929ddcb40d4d..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-menuArrow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-openFile.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-openFile.svg deleted file mode 100644 index 2a4035ca32973c1ac52e06a090afcc2aa91c6b30..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-openFile.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-pageDown.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-pageDown.svg deleted file mode 100644 index a5fd02736eaad5435b6a55de393e724ac41c3f8b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-pageDown.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-pageUp.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-pageUp.svg deleted file mode 100644 index 798b5735fe382e3f43bc26f86c90e42eb490b3e2..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-pageUp.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-presentationMode.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-presentationMode.svg deleted file mode 100644 index f752f2325b5744180bdbb93d35ee59dc6daf2d13..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-presentationMode.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-print.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-print.svg deleted file mode 100644 index 69be1cd47a8018f6d25c8090c0979b2a52015dbc..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-print.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-search.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-search.svg deleted file mode 100644 index 8b4c0ba60ffa2e03c6e1098e84b8fbc36845a4b0..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-search.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg deleted file mode 100644 index 56c12d986a69f397d1ab40eab217ca1514bc8a22..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-sidebarToggle.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-sidebarToggle.svg deleted file mode 100644 index 0e5a97a28038e4028811e35c52bc001d0e77433a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-sidebarToggle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewAttachments.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewAttachments.svg deleted file mode 100644 index 1aeb022bd0fb22864f4ce3976f527c22ef57d054..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewAttachments.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewLayers.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewLayers.svg deleted file mode 100644 index e22d2de2bbea19a9b9ee9265fa4d56fcb1153b04..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewLayers.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewOutline.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewOutline.svg deleted file mode 100644 index d12c340c2fa76cde1f4a629af924dc85196dc866..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewOutline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewThumbnail.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewThumbnail.svg deleted file mode 100644 index 2d6e58644375a4a08945a3e68778029490bff251..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-viewThumbnail.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-zoomIn.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-zoomIn.svg deleted file mode 100644 index cfd30d0959dc821736cdb1c4b49a31d378362a2d..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-zoomIn.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-zoomOut.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-zoomOut.svg deleted file mode 100644 index 64a2e54807a1aff0684cc17f6143fa8a04f815ec..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/toolbarButton-zoomOut.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/treeitem-collapsed.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/treeitem-collapsed.svg deleted file mode 100644 index 084d133f692a06ee1e050d241aa24af17bcd3325..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/treeitem-collapsed.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/treeitem-expanded.svg b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/treeitem-expanded.svg deleted file mode 100644 index ca2dba2f6fa04389a3c6550d450a8e93d3366ba3..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/images/treeitem-expanded.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ach/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ach/viewer.properties deleted file mode 100644 index 3eff44c9ab8b8840a171ba92f6a20baedec77990..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ach/viewer.properties +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pot buk mukato -previous_label=Mukato -next.title=Pot buk malubo -next_label=Malubo -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pot buk -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=pi {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} me {{pagesCount}}) -zoom_out.title=Jwik Matidi -zoom_out_label=Jwik Matidi -zoom_in.title=Kwot Madit -zoom_in_label=Kwot Madit -zoom.title=Kwoti -presentation_mode.title=Lokke i kit me tyer -presentation_mode_label=Kit me tyer -open_file.title=Yab Pwail -open_file_label=Yab -print.title=Go -print_label=Go -download.title=Gam -download_label=Gam -bookmark.title=Neno ma kombedi (lok onyo yab i dirica manyen) -bookmark_label=Neno ma kombedi -# Secondary toolbar and context menu -tools.title=Gintic -tools_label=Gintic -first_page.title=Cit i pot buk mukwongo -first_page.label=Cit i pot buk mukwongo -first_page_label=Cit i pot buk mukwongo -last_page.title=Cit i pot buk magiko -last_page.label=Cit i pot buk magiko -last_page_label=Cit i pot buk magiko -page_rotate_cw.title=Wire i tung lacuc -page_rotate_cw.label=Wire i tung lacuc -page_rotate_cw_label=Wire i tung lacuc -page_rotate_ccw.title=Wire i tung lacam -page_rotate_ccw.label=Wire i tung lacam -page_rotate_ccw_label=Wire i tung lacam -cursor_text_select_tool.title=Cak gitic me yero coc -cursor_text_select_tool_label=Gitic me yero coc -cursor_hand_tool.title=Cak gitic me cing -cursor_hand_tool_label=Gitic cing -# Document properties dialog box -document_properties.title=Jami me gin acoya… -document_properties_label=Jami me gin acoya… -document_properties_file_name=Nying pwail: -document_properties_file_size=Dit pa pwail: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Wiye: -document_properties_author=Ngat mucoyo: -document_properties_subject=Subjek: -document_properties_keywords=Lok mapire tek: -document_properties_creation_date=Nino dwe me cwec: -document_properties_modification_date=Nino dwe me yub: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Lacwec: -document_properties_producer=Layub PDF: -document_properties_version=Kit PDF: -document_properties_page_count=Kwan me pot buk: -document_properties_page_size=Dit pa potbuk: -document_properties_page_size_unit_inches=i -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=atir -document_properties_page_size_orientation_landscape=arii -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Waraga -document_properties_page_size_name_legal=Cik -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=Eyo -document_properties_linearized_no=Pe -document_properties_close=Lor -print_progress_message=Yubo coc me agoya… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Juki -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Lok gintic ma inget -toggle_sidebar_notification.title=Lok lanyut me nget (wiyewiye tye i gin acoya/attachments) -toggle_sidebar_label=Lok gintic ma inget -document_outline.title=Nyut Wiyewiye me Gin acoya (dii-kiryo me yaro/kano jami weng) -document_outline_label=Pek pa gin acoya -attachments.title=Nyut twec -attachments_label=Twec -thumbs.title=Nyut cal -thumbs_label=Cal -findbar.title=Nong iye gin acoya -findbar_label=Nong -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pot buk {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Cal me pot buk {{page}} -# Find panel button title and messages -find_input.title=Nong -find_input.placeholder=Nong i dokumen… -find_previous.title=Nong timme pa lok mukato -find_previous_label=Mukato -find_next.title=Nong timme pa lok malubo -find_next_label=Malubo -find_highlight=Wer weng -find_match_case_label=Lok marwate -find_reached_top=Oo iwi gin acoya, omede ki i tere -find_reached_bottom=Oo i agiki me gin acoya, omede ki iwiye -find_not_found=Lok pe ononge -# Error panel labels -error_more_info=Ngec Mukene -error_less_info=Ngec Manok -error_close=Lor -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Kwena: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Can kikore {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Pwail: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rek: {{line}} -rendering_error=Bal otime i kare me nyuto pot buk. -# Predefined zoom values -page_scale_width=Lac me iye pot buk -page_scale_fit=Porre me pot buk -page_scale_auto=Kwot pire kene -page_scale_actual=Dite kikome -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Bal otime kun cano PDF. -invalid_file_error=Pwail me PDF ma pe atir onyo obale woko. -missing_file_error=Pwail me PDF tye ka rem. -unexpected_response_error=Lagam mape kigeno pa lapok tic. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Lok angea manok] -password_label=Ket mung me donyo me yabo pwail me PDF man. -password_invalid=Mung me donyo pe atir. Tim ber i tem doki. -password_ok=OK -password_cancel=Juki -printing_not_supported=Ciko: Layeny ma pe teno goyo liweng. -printing_not_ready=Ciko: PDF pe ocane weng me agoya. -web_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/af/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/af/viewer.properties deleted file mode 100644 index 17c0745e5b6dbfdb1b58dbc662cca613a4b2dea8..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/af/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Vorige bladsy -previous_label=Vorige -next.title=Volgende bladsy -next_label=Volgende -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Bladsy -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=van {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} van {{pagesCount}}) -zoom_out.title=Zoem uit -zoom_out_label=Zoem uit -zoom_in.title=Zoem in -zoom_in_label=Zoem in -zoom.title=Zoem -presentation_mode.title=Wissel na voorleggingsmodus -presentation_mode_label=Voorleggingsmodus -open_file.title=Open lêer -open_file_label=Open -print.title=Druk -print_label=Druk -download.title=Laai af -download_label=Laai af -bookmark.title=Huidige aansig (kopieer of open in nuwe venster) -bookmark_label=Huidige aansig -# Secondary toolbar and context menu -tools.title=Nutsgoed -tools_label=Nutsgoed -first_page.title=Gaan na eerste bladsy -first_page.label=Gaan na eerste bladsy -first_page_label=Gaan na eerste bladsy -last_page.title=Gaan na laaste bladsy -last_page.label=Gaan na laaste bladsy -last_page_label=Gaan na laaste bladsy -page_rotate_cw.title=Roteer kloksgewys -page_rotate_cw.label=Roteer kloksgewys -page_rotate_cw_label=Roteer kloksgewys -page_rotate_ccw.title=Roteer anti-kloksgewys -page_rotate_ccw.label=Roteer anti-kloksgewys -page_rotate_ccw_label=Roteer anti-kloksgewys -cursor_text_select_tool.title=Aktiveer gereedskap om teks te merk -cursor_text_select_tool_label=Teksmerkgereedskap -cursor_hand_tool.title=Aktiveer handjie -cursor_hand_tool_label=Handjie -# Document properties dialog box -document_properties.title=Dokumenteienskappe… -document_properties_label=Dokumenteienskappe… -document_properties_file_name=Lêernaam: -document_properties_file_size=Lêergrootte: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kG ({{size_b}} grepe) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MG ({{size_b}} grepe) -document_properties_title=Titel: -document_properties_author=Outeur: -document_properties_subject=Onderwerp: -document_properties_keywords=Sleutelwoorde: -document_properties_creation_date=Skeppingsdatum: -document_properties_modification_date=Wysigingsdatum: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Skepper: -document_properties_producer=PDF-vervaardiger: -document_properties_version=PDF-weergawe: -document_properties_page_count=Aantal bladsye: -document_properties_close=Sluit -print_progress_message=Berei tans dokument voor om te druk… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Kanselleer -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Sypaneel aan/af -toggle_sidebar_notification.title=Sypaneel aan/af (dokument bevat skema/aanhegsels) -toggle_sidebar_label=Sypaneel aan/af -document_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou) -document_outline_label=Dokumentoorsig -attachments.title=Wys aanhegsels -attachments_label=Aanhegsels -thumbs.title=Wys duimnaels -thumbs_label=Duimnaels -findbar.title=Soek in dokument -findbar_label=Vind -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Bladsy {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Duimnael van bladsy {{page}} -# Find panel button title and messages -find_input.title=Vind -find_input.placeholder=Soek in dokument… -find_previous.title=Vind die vorige voorkoms van die frase -find_previous_label=Vorige -find_next.title=Vind die volgende voorkoms van die frase -find_next_label=Volgende -find_highlight=Verlig almal -find_match_case_label=Kassensitief -find_reached_top=Bokant van dokument is bereik; gaan voort van onder af -find_reached_bottom=Einde van dokument is bereik; gaan voort van bo af -find_not_found=Frase nie gevind nie -# Error panel labels -error_more_info=Meer inligting -error_less_info=Minder inligting -error_close=Sluit -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (ID: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Boodskap: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stapel: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Lêer: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Lyn: {{line}} -rendering_error='n Fout het voorgekom toe die bladsy weergegee is. -# Predefined zoom values -page_scale_width=Bladsywydte -page_scale_fit=Pas bladsy -page_scale_auto=Outomatiese zoem -page_scale_actual=Werklike grootte -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error='n Fout het voorgekom met die laai van die PDF. -invalid_file_error=Ongeldige of korrupte PDF-lêer. -missing_file_error=PDF-lêer is weg. -unexpected_response_error=Onverwagse antwoord van bediener. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-annotasie] -password_label=Gee die wagwoord om dié PDF-lêer mee te open. -password_invalid=Ongeldige wagwoord. Probeer gerus weer. -password_ok=OK -password_cancel=Kanselleer -printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie. -printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie. -web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/an/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/an/viewer.properties deleted file mode 100644 index f8610bd7437fdc837b8cf726cd4a36ad9ddddd74..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/an/viewer.properties +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pachina anterior -previous_label=Anterior -next.title=Pachina siguient -next_label=Siguient -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pachina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Achiquir -zoom_out_label=Achiquir -zoom_in.title=Agrandir -zoom_in_label=Agrandir -zoom.title=Grandaria -presentation_mode.title=Cambear t'o modo de presentación -presentation_mode_label=Modo de presentación -open_file.title=Ubrir o fichero -open_file_label=Ubrir -print.title=Imprentar -print_label=Imprentar -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar u ubrir en una nueva finestra) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Ferramientas -tools_label=Ferramientas -first_page.title=Ir ta la primer pachina -first_page.label=Ir ta la primer pachina -first_page_label=Ir ta la primer pachina -last_page.title=Ir ta la zaguer pachina -last_page.label=Ir ta la zaguera pachina -last_page_label=Ir ta la zaguer pachina -page_rotate_cw.title=Chirar enta la dreita -page_rotate_cw.label=Chirar enta la dreita -page_rotate_cw_label=Chira enta la dreita -page_rotate_ccw.title=Chirar enta la zurda -page_rotate_ccw.label=Chirar en sentiu antihorario -page_rotate_ccw_label=Chirar enta la zurda -cursor_text_select_tool.title=Activar la ferramienta de selección de texto -cursor_text_select_tool_label=Ferramienta de selección de texto -cursor_hand_tool.title=Activar la ferramienta man -cursor_hand_tool_label=Ferramienta man -scroll_vertical.title=Usar lo desplazamiento vertical -scroll_vertical_label=Desplazamiento vertical -scroll_horizontal.title=Usar lo desplazamiento horizontal -scroll_horizontal_label=Desplazamiento horizontal -scroll_wrapped.title=Activaar lo desplazamiento contino -scroll_wrapped_label=Desplazamiento contino -spread_none.title=No unir vistas de pachinas -spread_none_label=Una pachina nomás -spread_odd.title=Mostrar vista de pachinas, con as impars a la zurda -spread_odd_label=Doble pachina, impar a la zurda -spread_even.title=Amostrar vista de pachinas, con as pars a la zurda -spread_even_label=Doble pachina, para a la zurda -# Document properties dialog box -document_properties.title=Propiedatz d'o documento... -document_properties_label=Propiedatz d'o documento... -document_properties_file_name=Nombre de fichero: -document_properties_file_size=Grandaria d'o fichero: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titol: -document_properties_author=Autor: -document_properties_subject=Afer: -document_properties_keywords=Parolas clau: -document_properties_creation_date=Calendata de creyación: -document_properties_modification_date=Calendata de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creyador: -document_properties_producer=Creyador de PDF: -document_properties_version=Versión de PDF: -document_properties_page_count=Numero de pachinas: -document_properties_page_size=Mida de pachina: -document_properties_page_size_unit_inches=pulgadas -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertical -document_properties_page_size_orientation_landscape=horizontal -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} x {{height}} {{unit}} {{orientation}} -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} x {{height}} {{unit}} {{name}}, {{orientation}} -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista web rapida: -document_properties_linearized_yes=Sí -document_properties_linearized_no=No -document_properties_close=Zarrar -print_progress_message=Se ye preparando la documentación pa imprentar… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancelar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Amostrar u amagar a barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos) -toggle_sidebar_notification2.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos/capas) -toggle_sidebar_label=Amostrar a barra lateral -document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items) -document_outline_label=Esquema d'o documento -attachments.title=Amostrar os adchuntos -attachments_label=Adchuntos -layers.title=Amostrar capas (doble clic para reiniciar totas las capas a lo estau per defecto) -layers_label=Capas -thumbs.title=Amostrar as miniaturas -thumbs_label=Miniaturas -findbar.title=Trobar en o documento -findbar_label=Trobar -additional_layers=Capas adicionals -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pachina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pachina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura d'a pachina {{page}} -# Find panel button title and messages -find_input.title=Trobar -find_input.placeholder=Trobar en o documento… -find_previous.title=Trobar l'anterior coincidencia d'a frase -find_previous_label=Anterior -find_next.title=Trobar a siguient coincidencia d'a frase -find_next_label=Siguient -find_highlight=Resaltar-lo tot -find_match_case_label=Coincidencia de mayusclas/minusclas -find_entire_word_label=Parolas completas -find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo -find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidencia -find_match_count[two]={{current}} de {{total}} coincidencias -find_match_count[few]={{current}} de {{total}} coincidencias -find_match_count[many]={{current}} de {{total}} coincidencias -find_match_count[other]={{current}} de {{total}} coincidencias -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mas de {{limit}} coincidencias -find_match_count_limit[one]=Mas de {{limit}} coincidencias -find_match_count_limit[two]=Mas que {{limit}} coincidencias -find_match_count_limit[few]=Mas que {{limit}} coincidencias -find_match_count_limit[many]=Mas que {{limit}} coincidencias -find_match_count_limit[other]=Mas que {{limit}} coincidencias -find_not_found=No s'ha trobau a frase -# Error panel labels -error_more_info=Mas información -error_less_info=Menos información -error_close=Zarrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensache: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fichero: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linia: {{line}} -rendering_error=Ha ocurriu una error en renderizar a pachina. -# Predefined zoom values -page_scale_width=Amplaria d'a pachina -page_scale_fit=Achuste d'a pachina -page_scale_auto=Grandaria automatica -page_scale_actual=Grandaria actual -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=S'ha produciu una error en cargar o PDF. -invalid_file_error=O PDF no ye valido u ye estorbau. -missing_file_error=No i ha fichero PDF. -unexpected_response_error=Respuesta a lo servicio inasperada. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotación {{type}}] -password_label=Introduzca a clau ta ubrir iste fichero PDF. -password_invalid=Clau invalida. Torna a intentar-lo. -password_ok=Acceptar -password_cancel=Cancelar -printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions. -printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo. -web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ar/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ar/viewer.properties deleted file mode 100644 index 0f1e0dd2fe47310d13dfec3dab0f69942ed76715..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ar/viewer.properties +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=الصفحة السابقة -previous_label=السابقة -next.title=الصفحة التالية -next_label=التالية -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=صفحة -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=من {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} من {{pagesCount}}) -zoom_out.title=بعّد -zoom_out_label=بعّد -zoom_in.title=قرّب -zoom_in_label=قرّب -zoom.title=التقريب -presentation_mode.title=انتقل لوضع العرض التقديمي -presentation_mode_label=وضع العرض التقديمي -open_file.title=افتح ملفًا -open_file_label=افتح -print.title=اطبع -print_label=اطبع -download.title=نزّل -download_label=نزّل -bookmark.title=المنظور الحالي (انسخ أو افتح في نافذة جديدة) -bookmark_label=المنظور الحالي -# Secondary toolbar and context menu -tools.title=الأدوات -tools_label=الأدوات -first_page.title=انتقل إلى الصفحة الأولى -first_page.label=انتقل إلى الصفحة الأولى -first_page_label=انتقل إلى الصفحة الأولى -last_page.title=انتقل إلى الصفحة الأخيرة -last_page.label=انتقل إلى الصفحة الأخيرة -last_page_label=انتقل إلى الصفحة الأخيرة -page_rotate_cw.title=أدر باتجاه عقارب الساعة -page_rotate_cw.label=أدر باتجاه عقارب الساعة -page_rotate_cw_label=أدر باتجاه عقارب الساعة -page_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة -page_rotate_ccw.label=أدر بعكس اتجاه عقارب الساعة -page_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة -cursor_text_select_tool.title=فعّل أداة اختيار النص -cursor_text_select_tool_label=أداة اختيار النص -cursor_hand_tool.title=فعّل أداة اليد -cursor_hand_tool_label=أداة اليد -scroll_vertical.title=استخدم التمرير الرأسي -scroll_vertical_label=التمرير الرأسي -scroll_horizontal.title=استخدم التمرير الأفقي -scroll_horizontal_label=التمرير الأفقي -scroll_wrapped.title=استخدم التمرير الملتف -scroll_wrapped_label=التمرير الملتف -spread_none.title=لا تدمج هوامش الصفحات مع بعضها البعض -spread_none_label=بلا هوامش -spread_odd.title=ادمج هوامش الصفحات الفردية -spread_odd_label=هوامش الصفحات الفردية -spread_even.title=ادمج هوامش الصفحات الزوجية -spread_even_label=هوامش الصفحات الزوجية -# Document properties dialog box -document_properties.title=خصائص المستند… -document_properties_label=خصائص المستند… -document_properties_file_name=اسم الملف: -document_properties_file_size=حجم الملف: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} ك.بايت ({{size_b}} بايت) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} م.بايت ({{size_b}} بايت) -document_properties_title=العنوان: -document_properties_author=المؤلف: -document_properties_subject=الموضوع: -document_properties_keywords=الكلمات الأساسية: -document_properties_creation_date=تاريخ الإنشاء: -document_properties_modification_date=تاريخ التعديل: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}، {{time}} -document_properties_creator=المنشئ: -document_properties_producer=منتج PDF: -document_properties_version=إصدارة PDF: -document_properties_page_count=عدد الصفحات: -document_properties_page_size=مقاس الورقة: -document_properties_page_size_unit_inches=بوصة -document_properties_page_size_unit_millimeters=ملم -document_properties_page_size_orientation_portrait=طوليّ -document_properties_page_size_orientation_landscape=عرضيّ -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=خطاب -document_properties_page_size_name_legal=قانونيّ -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string=‏{{width}} × ‏{{height}} ‏{{unit}} (‏{{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string=‏{{width}} × ‏{{height}} ‏{{unit}} (‏{{name}}، {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=العرض السريع عبر الوِب: -document_properties_linearized_yes=نعم -document_properties_linearized_no=لا -document_properties_close=أغلق -print_progress_message=يُحضّر المستند للطباعة… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}٪ -print_progress_close=ألغِ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=بدّل ظهور الشريط الجانبي -toggle_sidebar_notification.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات) -toggle_sidebar_notification2.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات أو طبقات) -toggle_sidebar_label=بدّل ظهور الشريط الجانبي -document_outline.title=اعرض فهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر) -document_outline_label=مخطط المستند -attachments.title=اعرض المرفقات -attachments_label=المُرفقات -layers.title=اعرض الطبقات (انقر مرتين لتصفير كل الطبقات إلى الحالة المبدئية) -layers_label=‏‏الطبقات -thumbs.title=اعرض مُصغرات -thumbs_label=مُصغّرات -findbar.title=ابحث في المستند -findbar_label=ابحث -additional_layers=الطبقات الإضافية -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=صفحة {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=صفحة {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=مصغّرة صفحة {{page}} -# Find panel button title and messages -find_input.title=ابحث -find_input.placeholder=ابحث في المستند… -find_previous.title=ابحث عن التّواجد السّابق للعبارة -find_previous_label=السابق -find_next.title=ابحث عن التّواجد التّالي للعبارة -find_next_label=التالي -find_highlight=أبرِز الكل -find_match_case_label=طابق حالة الأحرف -find_entire_word_label=كلمات كاملة -find_reached_top=تابعت من الأسفل بعدما وصلت إلى بداية المستند -find_reached_bottom=تابعت من الأعلى بعدما وصلت إلى نهاية المستند -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} من أصل مطابقة واحدة -find_match_count[two]={{current}} من أصل مطابقتين -find_match_count[few]={{current}} من أصل {{total}} مطابقات -find_match_count[many]={{current}} من أصل {{total}} مطابقة -find_match_count[other]={{current}} من أصل {{total}} مطابقة -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=فقط -find_match_count_limit[one]=أكثر من مطابقة واحدة -find_match_count_limit[two]=أكثر من مطابقتين -find_match_count_limit[few]=أكثر من {{limit}} مطابقات -find_match_count_limit[many]=أكثر من {{limit}} مطابقة -find_match_count_limit[other]=أكثر من {{limit}} مطابقة -find_not_found=لا وجود للعبارة -# Error panel labels -error_more_info=معلومات أكثر -error_less_info=معلومات أقل -error_close=أغلق -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=‏PDF.js ن{{version}} ‏(بناء: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=الرسالة: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=الرصّة: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=الملف: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=السطر: {{line}} -rendering_error=حدث خطأ أثناء عرض الصفحة. -# Predefined zoom values -page_scale_width=عرض الصفحة -page_scale_fit=ملائمة الصفحة -page_scale_auto=تقريب تلقائي -page_scale_actual=الحجم الفعلي -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}٪ -# Loading indicator messages -loading_error=حدث عطل أثناء تحميل ملف PDF. -invalid_file_error=ملف PDF تالف أو غير صحيح. -missing_file_error=ملف PDF غير موجود. -unexpected_response_error=استجابة خادوم غير متوقعة. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}، {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[تعليق {{type}}] -password_label=أدخل لكلمة السر لفتح هذا الملف. -password_invalid=كلمة سر خطأ. من فضلك أعد المحاولة. -password_ok=حسنا -password_cancel=ألغِ -printing_not_supported=تحذير: لا يدعم هذا المتصفح الطباعة بشكل كامل. -printing_not_ready=تحذير: ملف PDF لم يُحمّل كاملًا للطباعة. -web_fonts_disabled=خطوط الوب مُعطّلة: تعذّر استخدام خطوط PDF المُضمّنة. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ast/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ast/viewer.properties deleted file mode 100644 index 0be68d5a21a3e14f3be6728cb0790a9edb74e9e1..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ast/viewer.properties +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Páxina anterior -previous_label=Anterior -next.title=Páxina siguiente -next_label=Siguiente -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Páxina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Ferramientes -tools_label=Ferramientes -scroll_vertical_label=Desplazamientu vertical -scroll_horizontal_label=Desplazamientu horizontal -scroll_wrapped_label=Desplazamientu continuu -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertical -document_properties_page_size_orientation_landscape=horizontal -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=Sí -document_properties_linearized_no=Non -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -# Find panel button title and messages -find_entire_word_label=Pallabres completes -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit[zero]=Más de {{limit}} coincidencies -find_match_count_limit[one]=Más de {{limit}} coincidencia -find_match_count_limit[two]=Más de {{limit}} coincidencies -find_match_count_limit[few]=Más de {{limit}} coincidencies -find_match_count_limit[many]=Más de {{limit}} coincidencies -find_match_count_limit[other]=Más de {{limit}} coincidencies -# Error panel labels -error_more_info=Más información -error_less_info=Menos información -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (compilación: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaxe: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ficheru: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Llinia: {{line}} -# Predefined zoom values -page_scale_auto=Zoom automáticu -page_scale_actual=Tamañu real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Asocedió un fallu mentanto se cargaba'l PDF. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=Aceptar -password_cancel=Encaboxar - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/az/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/az/viewer.properties deleted file mode 100644 index 48bc9a23aa5f48eed59f2c42e5ca6551f8d37d6b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/az/viewer.properties +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Əvvəlki səhifə -previous_label=Əvvəlkini tap -next.title=Növbəti səhifə -next_label=İrəli -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Səhifə -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} / {{pagesCount}}) -zoom_out.title=Uzaqlaş -zoom_out_label=Uzaqlaş -zoom_in.title=Yaxınlaş -zoom_in_label=Yaxınlaş -zoom.title=Yaxınlaşdırma -presentation_mode.title=Təqdimat Rejiminə Keç -presentation_mode_label=Təqdimat Rejimi -open_file.title=Fayl Aç -open_file_label=Aç -print.title=Yazdır -print_label=Yazdır -download.title=Endir -download_label=Endir -bookmark.title=Hazırkı görünüş (köçür və ya yeni pəncərədə aç) -bookmark_label=Hazırkı görünüş -# Secondary toolbar and context menu -tools.title=Alətlər -tools_label=Alətlər -first_page.title=İlk Səhifəyə get -first_page.label=İlk Səhifəyə get -first_page_label=İlk Səhifəyə get -last_page.title=Son Səhifəyə get -last_page.label=Son Səhifəyə get -last_page_label=Son Səhifəyə get -page_rotate_cw.title=Saat İstiqamətində Fırlat -page_rotate_cw.label=Saat İstiqamətində Fırlat -page_rotate_cw_label=Saat İstiqamətində Fırlat -page_rotate_ccw.title=Saat İstiqamətinin Əksinə Fırlat -page_rotate_ccw.label=Saat İstiqamətinin Əksinə Fırlat -page_rotate_ccw_label=Saat İstiqamətinin Əksinə Fırlat -cursor_text_select_tool.title=Yazı seçmə alətini aktivləşdir -cursor_text_select_tool_label=Yazı seçmə aləti -cursor_hand_tool.title=Əl alətini aktivləşdir -cursor_hand_tool_label=Əl aləti -scroll_vertical.title=Şaquli sürüşdürmə işlət -scroll_vertical_label=Şaquli sürüşdürmə -scroll_horizontal.title=Üfüqi sürüşdürmə işlət -scroll_horizontal_label=Üfüqi sürüşdürmə -scroll_wrapped.title=Bükülü sürüşdürmə işlət -scroll_wrapped_label=Bükülü sürüşdürmə -spread_none.title=Yan-yana birləşdirilmiş səhifələri işlətmə -spread_none_label=Birləşdirmə -spread_odd.title=Yan-yana birləşdirilmiş səhifələri tək nömrəli səhifələrdən başlat -spread_odd_label=Tək nömrəli -spread_even.title=Yan-yana birləşdirilmiş səhifələri cüt nömrəli səhifələrdən başlat -spread_even_label=Cüt nömrəli -# Document properties dialog box -document_properties.title=Sənəd xüsusiyyətləri… -document_properties_label=Sənəd xüsusiyyətləri… -document_properties_file_name=Fayl adı: -document_properties_file_size=Fayl ölçüsü: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bayt) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bayt) -document_properties_title=Başlık: -document_properties_author=Müəllif: -document_properties_subject=Mövzu: -document_properties_keywords=Açar sözlər: -document_properties_creation_date=Yaradılış Tarixi : -document_properties_modification_date=Dəyişdirilmə Tarixi : -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Yaradan: -document_properties_producer=PDF yaradıcısı: -document_properties_version=PDF versiyası: -document_properties_page_count=Səhifə sayı: -document_properties_page_size=Səhifə Ölçüsü: -document_properties_page_size_unit_inches=inç -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portret -document_properties_page_size_orientation_landscape=albom -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Məktub -document_properties_page_size_name_legal=Hüquqi -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Bəli -document_properties_linearized_no=Xeyr -document_properties_close=Qapat -print_progress_message=Sənəd çap üçün hazırlanır… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Ləğv et -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Yan Paneli Aç/Bağla -toggle_sidebar_notification.title=Yan paneli çevir (sənəddə icmal/bağlama var) -toggle_sidebar_notification2.title=Yan paneli çevir (sənəddə icmal/bağlamalar/laylar mövcuddur) -toggle_sidebar_label=Yan Paneli Aç/Bağla -document_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq üçün iki dəfə klikləyin) -document_outline_label=Sənəd strukturu -attachments.title=Bağlamaları göstər -attachments_label=Bağlamalar -layers.title=Layları göstər (bütün layları ilkin halına sıfırlamaq üçün iki dəfə klikləyin) -layers_label=Laylar -thumbs.title=Kiçik şəkilləri göstər -thumbs_label=Kiçik şəkillər -findbar.title=Sənəddə Tap -findbar_label=Tap -additional_layers=Əlavə laylar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Səhifə {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Səhifə{{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} səhifəsinin kiçik vəziyyəti -# Find panel button title and messages -find_input.title=Tap -find_input.placeholder=Sənəddə tap… -find_previous.title=Bir öncəki uyğun gələn sözü tapır -find_previous_label=Geri -find_next.title=Bir sonrakı uyğun gələn sözü tapır -find_next_label=İrəli -find_highlight=İşarələ -find_match_case_label=Böyük/kiçik hərfə həssaslıq -find_entire_word_label=Tam sözlər -find_reached_top=Sənədin yuxarısına çatdı, aşağıdan davam edir -find_reached_bottom=Sənədin sonuna çatdı, yuxarıdan davam edir -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} / {{total}} uyğunluq -find_match_count[two]={{current}} / {{total}} uyğunluq -find_match_count[few]={{current}} / {{total}} uyğunluq -find_match_count[many]={{current}} / {{total}} uyğunluq -find_match_count[other]={{current}} / {{total}} uyğunluq -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}}-dan çox uyğunluq -find_match_count_limit[one]={{limit}}-dən çox uyğunluq -find_match_count_limit[two]={{limit}}-dən çox uyğunluq -find_match_count_limit[few]={{limit}} uyğunluqdan daha çox -find_match_count_limit[many]={{limit}} uyğunluqdan daha çox -find_match_count_limit[other]={{limit}} uyğunluqdan daha çox -find_not_found=Uyğunlaşma tapılmadı -# Error panel labels -error_more_info=Daha çox məlumati -error_less_info=Daha az məlumat -error_close=Qapat -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (yığma: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=İsmarıc: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stek: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fayl: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Sətir: {{line}} -rendering_error=Səhifə göstərilərkən səhv yarandı. -# Predefined zoom values -page_scale_width=Səhifə genişliyi -page_scale_fit=Səhifəni sığdır -page_scale_auto=Avtomatik yaxınlaşdır -page_scale_actual=Hazırkı Həcm -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF yüklenərkən bir səhv yarandı. -invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl. -missing_file_error=PDF fayl yoxdur. -unexpected_response_error=Gözlənilməz server cavabı. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotasiyası] -password_label=Bu PDF faylı açmaq üçün parolu daxil edin. -password_invalid=Parol səhvdir. Bir daha yoxlayın. -password_ok=Tamam -password_cancel=Ləğv et -printing_not_supported=Xəbərdarlıq: Çap bu səyyah tərəfindən tam olaraq dəstəklənmir. -printing_not_ready=Xəbərdarlıq: PDF çap üçün tam yüklənməyib. -web_fonts_disabled=Web Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/be/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/be/viewer.properties deleted file mode 100644 index 8755d41a37fd678cf72a4f8ddcb0622a392dffa2..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/be/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Папярэдняя старонка -previous_label=Папярэдняя -next.title=Наступная старонка -next_label=Наступная -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Старонка -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=з {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} з {{pagesCount}}) -zoom_out.title=Паменшыць -zoom_out_label=Паменшыць -zoom_in.title=Павялічыць -zoom_in_label=Павялічыць -zoom.title=Павялічэнне тэксту -presentation_mode.title=Пераключыцца ў рэжым паказу -presentation_mode_label=Рэжым паказу -open_file.title=Адкрыць файл -open_file_label=Адкрыць -print.title=Друкаваць -print_label=Друкаваць -download.title=Сцягнуць -download_label=Сцягнуць -bookmark.title=Цяперашняя праява (скапіяваць або адчыніць у новым акне) -bookmark_label=Цяперашняя праява -# Secondary toolbar and context menu -tools.title=Прылады -tools_label=Прылады -first_page.title=Перайсці на першую старонку -first_page.label=Перайсці на першую старонку -first_page_label=Перайсці на першую старонку -last_page.title=Перайсці на апошнюю старонку -last_page.label=Перайсці на апошнюю старонку -last_page_label=Перайсці на апошнюю старонку -page_rotate_cw.title=Павярнуць па сонцу -page_rotate_cw.label=Павярнуць па сонцу -page_rotate_cw_label=Павярнуць па сонцу -page_rotate_ccw.title=Павярнуць супраць сонца -page_rotate_ccw.label=Павярнуць супраць сонца -page_rotate_ccw_label=Павярнуць супраць сонца -cursor_text_select_tool.title=Уключыць прыладу выбару тэксту -cursor_text_select_tool_label=Прылада выбару тэксту -cursor_hand_tool.title=Уключыць ручную прыладу -cursor_hand_tool_label=Ручная прылада -scroll_vertical.title=Ужываць вертыкальную пракрутку -scroll_vertical_label=Вертыкальная пракрутка -scroll_horizontal.title=Ужываць гарызантальную пракрутку -scroll_horizontal_label=Гарызантальная пракрутка -scroll_wrapped.title=Ужываць маштабавальную пракрутку -scroll_wrapped_label=Маштабавальная пракрутка -spread_none.title=Не выкарыстоўваць разгорнутыя старонкі -spread_none_label=Без разгорнутых старонак -spread_odd.title=Разгорнутыя старонкі пачынаючы з няцотных нумароў -spread_odd_label=Няцотныя старонкі злева -spread_even.title=Разгорнутыя старонкі пачынаючы з цотных нумароў -spread_even_label=Цотныя старонкі злева -# Document properties dialog box -document_properties.title=Уласцівасці дакумента… -document_properties_label=Уласцівасці дакумента… -document_properties_file_name=Назва файла: -document_properties_file_size=Памер файла: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} байт) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} байт) -document_properties_title=Загаловак: -document_properties_author=Аўтар: -document_properties_subject=Тэма: -document_properties_keywords=Ключавыя словы: -document_properties_creation_date=Дата стварэння: -document_properties_modification_date=Дата змянення: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Стваральнік: -document_properties_producer=Вырабнік PDF: -document_properties_version=Версія PDF: -document_properties_page_count=Колькасць старонак: -document_properties_page_size=Памер старонкі: -document_properties_page_size_unit_inches=цаляў -document_properties_page_size_unit_millimeters=мм -document_properties_page_size_orientation_portrait=кніжная -document_properties_page_size_orientation_landscape=альбомная -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Хуткі прагляд у Інтэрнэце: -document_properties_linearized_yes=Так -document_properties_linearized_no=Не -document_properties_close=Закрыць -print_progress_message=Падрыхтоўка дакумента да друку… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Скасаваць -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Паказаць/схаваць бакавую панэль -toggle_sidebar_notification.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні) -toggle_sidebar_notification2.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні/пласты) -toggle_sidebar_label=Паказаць/схаваць бакавую панэль -document_outline.title=Паказаць структуру дакумента (двайная пстрычка, каб разгарнуць /згарнуць усе элементы) -document_outline_label=Структура дакумента -attachments.title=Паказаць далучэнні -attachments_label=Далучэнні -layers.title=Паказаць пласты (двойчы пстрыкніце, каб скінуць усе пласты да прадвызначанага стану) -layers_label=Пласты -thumbs.title=Паказ мініяцюр -thumbs_label=Мініяцюры -current_outline_item.title=Знайсці бягучы элемент структуры -current_outline_item_label=Бягучы элемент структуры -findbar.title=Пошук у дакуменце -findbar_label=Знайсці -additional_layers=Дадатковыя пласты -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Старонка {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Старонка {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Мініяцюра старонкі {{page}} -# Find panel button title and messages -find_input.title=Шукаць -find_input.placeholder=Шукаць у дакуменце… -find_previous.title=Знайсці папярэдні выпадак выразу -find_previous_label=Папярэдні -find_next.title=Знайсці наступны выпадак выразу -find_next_label=Наступны -find_highlight=Падфарбаваць усе -find_match_case_label=Адрозніваць вялікія/малыя літары -find_entire_word_label=Словы цалкам -find_reached_top=Дасягнуты пачатак дакумента, працяг з канца -find_reached_bottom=Дасягнуты канец дакумента, працяг з пачатку -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} з {{total}} супадзення -find_match_count[two]={{current}} з {{total}} супадзенняў -find_match_count[few]={{current}} з {{total}} супадзенняў -find_match_count[many]={{current}} з {{total}} супадзенняў -find_match_count[other]={{current}} з {{total}} супадзенняў -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Больш за {{limit}} супадзенняў -find_match_count_limit[one]=Больш за {{limit}} супадзенне -find_match_count_limit[two]=Больш за {{limit}} супадзенняў -find_match_count_limit[few]=Больш за {{limit}} супадзенняў -find_match_count_limit[many]=Больш за {{limit}} супадзенняў -find_match_count_limit[other]=Больш за {{limit}} супадзенняў -find_not_found=Выраз не знойдзены -# Error panel labels -error_more_info=Падрабязней -error_less_info=Сцісла -error_close=Закрыць -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js в{{version}} (зборка: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Паведамленне: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стос: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Файл: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Радок: {{line}} -rendering_error=Здарылася памылка падчас адлюстравання старонкі. -# Predefined zoom values -page_scale_width=Шырыня старонкі -page_scale_fit=Уцісненне старонкі -page_scale_auto=Аўтаматычнае павелічэнне -page_scale_actual=Сапраўдны памер -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Здарылася памылка падчас загрузкі PDF. -invalid_file_error=Няспраўны або пашкоджаны файл PDF. -missing_file_error=Адсутны файл PDF. -unexpected_response_error=Нечаканы адказ сервера. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Увядзіце пароль, каб адкрыць гэты файл PDF. -password_invalid=Нядзейсны пароль. Паспрабуйце зноў. -password_ok=Добра -password_cancel=Скасаваць -printing_not_supported=Папярэджанне: друк не падтрымліваецца цалкам гэтым браўзерам. -printing_not_ready=Увага: PDF не сцягнуты цалкам для друкавання. -web_fonts_disabled=Шрыфты Сеціва забаронены: немагчыма ўжываць укладзеныя шрыфты PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bg/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bg/viewer.properties deleted file mode 100644 index fdcfe34f14461f2c53afbb0f3a275ee1f6656e33..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bg/viewer.properties +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Предишна страница -previous_label=Предишна -next.title=Следваща страница -next_label=Следваща -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Страница -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=от {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} от {{pagesCount}}) -zoom_out.title=Намаляване -zoom_out_label=Намаляване -zoom_in.title=Увеличаване -zoom_in_label=Увеличаване -zoom.title=Мащабиране -presentation_mode.title=Превключване към режим на представяне -presentation_mode_label=Режим на представяне -open_file.title=Отваряне на файл -open_file_label=Отваряне -print.title=Отпечатване -print_label=Отпечатване -download.title=Изтегляне -download_label=Изтегляне -bookmark.title=Текущ изглед (копиране или отваряне в нов прозорец) -bookmark_label=Текущ изглед -# Secondary toolbar and context menu -tools.title=Инструменти -tools_label=Инструменти -first_page.title=Към първата страница -first_page.label=Към първата страница -first_page_label=Към първата страница -last_page.title=Към последната страница -last_page.label=Към последната страница -last_page_label=Към последната страница -page_rotate_cw.title=Завъртане по час. стрелка -page_rotate_cw.label=Завъртане по часовниковата стрелка -page_rotate_cw_label=Завъртане по часовниковата стрелка -page_rotate_ccw.title=Завъртане обратно на час. стрелка -page_rotate_ccw.label=Завъртане обратно на часовниковата стрелка -page_rotate_ccw_label=Завъртане обратно на часовниковата стрелка -cursor_text_select_tool.title=Включване на инструмента за избор на текст -cursor_text_select_tool_label=Инструмент за избор на текст -cursor_hand_tool.title=Включване на инструмента ръка -cursor_hand_tool_label=Инструмент ръка -scroll_vertical.title=Използване на вертикално плъзгане -scroll_vertical_label=Вертикално плъзгане -scroll_horizontal.title=Използване на хоризонтално -scroll_horizontal_label=Хоризонтално плъзгане -scroll_wrapped.title=Използване на мащабируемо плъзгане -scroll_wrapped_label=Мащабируемо плъзгане -spread_none.title=Режимът на сдвояване е изключен -spread_none_label=Без сдвояване -spread_odd.title=Сдвояване, започвайки от нечетните страници -spread_odd_label=Нечетните отляво -spread_even.title=Сдвояване, започвайки от четните страници -spread_even_label=Четните отляво -# Document properties dialog box -document_properties.title=Свойства на документа… -document_properties_label=Свойства на документа… -document_properties_file_name=Име на файл: -document_properties_file_size=Големина на файл: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} байта) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} байта) -document_properties_title=Заглавие: -document_properties_author=Автор: -document_properties_subject=Тема: -document_properties_keywords=Ключови думи: -document_properties_creation_date=Дата на създаване: -document_properties_modification_date=Дата на промяна: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Създател: -document_properties_producer=PDF произведен от: -document_properties_version=Издание на PDF: -document_properties_page_count=Брой страници: -document_properties_page_size=Размер на страницата: -document_properties_page_size_unit_inches=инч -document_properties_page_size_unit_millimeters=мм -document_properties_page_size_orientation_portrait=портрет -document_properties_page_size_orientation_landscape=пейзаж -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Правни въпроси -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Бърз преглед: -document_properties_linearized_yes=Да -document_properties_linearized_no=Не -document_properties_close=Затваряне -print_progress_message=Подготвяне на документа за отпечатване… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Отказ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Превключване на страничната лента -toggle_sidebar_notification.title=Превключване на страничната лента (документи със структура/прикачени файлове) -toggle_sidebar_label=Превключване на страничната лента -document_outline.title=Показване на структурата на документа (двукратно щракване за свиване/разгъване на всичко) -document_outline_label=Структура на документа -attachments.title=Показване на притурките -attachments_label=Притурки -thumbs.title=Показване на миниатюрите -thumbs_label=Миниатюри -findbar.title=Намиране в документа -findbar_label=Търсене -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Страница {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Миниатюра на страница {{page}} -# Find panel button title and messages -find_input.title=Търсене -find_input.placeholder=Търсене в документа… -find_previous.title=Намиране на предишно съвпадение на фразата -find_previous_label=Предишна -find_next.title=Намиране на следващо съвпадение на фразата -find_next_label=Следваща -find_highlight=Открояване на всички -find_match_case_label=Съвпадение на регистъра -find_entire_word_label=Цели думи -find_reached_top=Достигнато е началото на документа, продължаване от края -find_reached_bottom=Достигнат е краят на документа, продължаване от началото -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} от {{total}} съвпадение -find_match_count[two]={{current}} от {{total}} съвпадения -find_match_count[few]={{current}} от {{total}} съвпадения -find_match_count[many]={{current}} от {{total}} съвпадения -find_match_count[other]={{current}} от {{total}} съвпадения -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Повече от {{limit}} съвпадения -find_match_count_limit[one]=Повече от {{limit}} съвпадение -find_match_count_limit[two]=Повече от {{limit}} съвпадения -find_match_count_limit[few]=Повече от {{limit}} съвпадения -find_match_count_limit[many]=Повече от {{limit}} съвпадения -find_match_count_limit[other]=Повече от {{limit}} съвпадения -find_not_found=Фразата не е намерена -# Error panel labels -error_more_info=Повече информация -error_less_info=По-малко информация -error_close=Затваряне -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=Издание на PDF.js {{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Съобщение: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стек: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Файл: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Ред: {{line}} -rendering_error=Грешка при изчертаване на страницата. -# Predefined zoom values -page_scale_width=Ширина на страницата -page_scale_fit=Вместване в страницата -page_scale_auto=Автоматично мащабиране -page_scale_actual=Действителен размер -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Получи се грешка при зареждане на PDF-а. -invalid_file_error=Невалиден или повреден PDF файл. -missing_file_error=Липсващ PDF файл. -unexpected_response_error=Неочакван отговор от сървъра. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Анотация {{type}}] -password_label=Въведете парола за отваряне на този PDF файл. -password_invalid=Невалидна парола. Моля, опитайте отново. -password_ok=Добре -password_cancel=Отказ -printing_not_supported=Внимание: Този четец няма пълна поддръжка на отпечатване. -printing_not_ready=Внимание: Този PDF файл не е напълно зареден за печат. -web_fonts_disabled=Уеб-шрифтовете са забранени: разрешаване на използването на вградените PDF шрифтове. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bn/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bn/viewer.properties deleted file mode 100644 index ec192a917670c7d4c3aa01ad9245a8b2500f72af..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bn/viewer.properties +++ /dev/null @@ -1,226 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=পূর্ববর্তী পাতা -previous_label=পূর্ববর্তী -next.title=পরবর্তী পাতা -next_label=পরবর্তী -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=পাতা -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} এর -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pagesCount}} এর {{pageNumber}}) -zoom_out.title=ছোট আকারে প্রদর্শন -zoom_out_label=ছোট আকারে প্রদর্শন -zoom_in.title=বড় আকারে প্রদর্শন -zoom_in_label=বড় আকারে প্রদর্শন -zoom.title=বড় আকারে প্রদর্শন -presentation_mode.title=উপস্থাপনা মোডে স্যুইচ করুন -presentation_mode_label=উপস্থাপনা মোড -open_file.title=ফাইল খুলুন -open_file_label=খুলুন -print.title=মুদ্রণ -print_label=মুদ্রণ -download.title=ডাউনলোড -download_label=ডাউনলোড -bookmark.title=বর্তমান অবস্থা (অনুলিপি অথবা নতুন উইন্ডো তে খুলুন) -bookmark_label=বর্তমান অবস্থা -# Secondary toolbar and context menu -tools.title=টুল -tools_label=টুল -first_page.title=প্রথম পাতায় যাও -first_page.label=প্রথম পাতায় যাও -first_page_label=প্রথম পাতায় যাও -last_page.title=শেষ পাতায় যাও -last_page.label=শেষ পাতায় যাও -last_page_label=শেষ পাতায় যাও -page_rotate_cw.title=ঘড়ির কাঁটার দিকে ঘোরাও -page_rotate_cw.label=ঘড়ির কাঁটার দিকে ঘোরাও -page_rotate_cw_label=ঘড়ির কাঁটার দিকে ঘোরাও -page_rotate_ccw.title=ঘড়ির কাঁটার বিপরীতে ঘোরাও -page_rotate_ccw.label=ঘড়ির কাঁটার বিপরীতে ঘোরাও -page_rotate_ccw_label=ঘড়ির কাঁটার বিপরীতে ঘোরাও -cursor_text_select_tool.title=লেখা নির্বাচক টুল সক্রিয় করুন -cursor_text_select_tool_label=লেখা নির্বাচক টুল -cursor_hand_tool.title=হ্যান্ড টুল সক্রিয় করুন -cursor_hand_tool_label=হ্যান্ড টুল -scroll_vertical.title=উলম্ব স্ক্রলিং ব্যবহার করুন -scroll_vertical_label=উলম্ব স্ক্রলিং -scroll_horizontal.title=অনুভূমিক স্ক্রলিং ব্যবহার করুন -scroll_horizontal_label=অনুভূমিক স্ক্রলিং -scroll_wrapped.title=Wrapped স্ক্রোলিং ব্যবহার করুন -scroll_wrapped_label=Wrapped স্ক্রোলিং -spread_none.title=পেজ স্প্রেডগুলোতে যোগদান করবেন না -spread_none_label=Spreads নেই -spread_odd_label=বিজোড় Spreads -spread_even_label=জোড় Spreads -# Document properties dialog box -document_properties.title=নথি বৈশিষ্ট্য… -document_properties_label=নথি বৈশিষ্ট্য… -document_properties_file_name=ফাইলের নাম: -document_properties_file_size=ফাইলের আকার: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} কেবি ({{size_b}} বাইট) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} এমবি ({{size_b}} বাইট) -document_properties_title=শিরোনাম: -document_properties_author=লেখক: -document_properties_subject=বিষয়: -document_properties_keywords=কীওয়ার্ড: -document_properties_creation_date=তৈরির তারিখ: -document_properties_modification_date=পরিবর্তনের তারিখ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=প্রস্তুতকারক: -document_properties_producer=পিডিএফ প্রস্তুতকারক: -document_properties_version=পিডিএফ সংষ্করণ: -document_properties_page_count=মোট পাতা: -document_properties_page_size=পাতার সাইজ: -document_properties_page_size_unit_inches=এর মধ্যে -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=উলম্ব -document_properties_page_size_orientation_landscape=অনুভূমিক -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=লেটার -document_properties_page_size_name_legal=লীগাল -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=হ্যাঁ -document_properties_linearized_no=না -document_properties_close=বন্ধ -print_progress_message=মুদ্রণের জন্য নথি প্রস্তুত করা হচ্ছে… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=বাতিল -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=সাইডবার টগল করুন -toggle_sidebar_notification.title=সাইডবার টগল (নথিতে আউটলাইন/এটাচমেন্ট রয়েছে) -toggle_sidebar_label=সাইডবার টগল করুন -document_outline.title=নথির আউটলাইন দেখাও (সব আইটেম প্রসারিত/সঙ্কুচিত করতে ডবল ক্লিক করুন) -document_outline_label=নথির রূপরেখা -attachments.title=সংযুক্তি দেখাও -attachments_label=সংযুক্তি -thumbs.title=থাম্বনেইল সমূহ প্রদর্শন করুন -thumbs_label=থাম্বনেইল সমূহ -findbar.title=নথির মধ্যে খুঁজুন -findbar_label=খুঁজুন -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=পাতা {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=পাতা {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} পাতার থাম্বনেইল -# Find panel button title and messages -find_input.title=খুঁজুন -find_input.placeholder=নথির মধ্যে খুঁজুন… -find_previous.title=বাক্যাংশের পূর্ববর্তী উপস্থিতি অনুসন্ধান -find_previous_label=পূর্ববর্তী -find_next.title=বাক্যাংশের পরবর্তী উপস্থিতি অনুসন্ধান -find_next_label=পরবর্তী -find_highlight=সব হাইলাইট করা হবে -find_match_case_label=অক্ষরের ছাঁদ মেলানো -find_entire_word_label=সম্পূর্ণ শব্দ -find_reached_top=পাতার শুরুতে পৌছে গেছে, নীচ থেকে আরম্ভ করা হয়েছে -find_reached_bottom=পাতার শেষে পৌছে গেছে, উপর থেকে আরম্ভ করা হয়েছে -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} এর {{current}} মিল -find_match_count[two]={{total}} এর {{current}} মিল -find_match_count[few]={{total}} এর {{current}} মিল -find_match_count[many]={{total}} এর {{current}} মিল -find_match_count[other]={{total}} এর {{current}} মিল -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} এর বেশি মিল -find_match_count_limit[one]={{limit}} এর বেশি মিল -find_match_count_limit[two]={{limit}} এর বেশি মিল -find_match_count_limit[few]={{limit}} এর বেশি মিল -find_match_count_limit[many]={{limit}} এর বেশি মিল -find_match_count_limit[other]={{limit}} এর বেশি মিল -find_not_found=বাক্যাংশ পাওয়া যায়নি -# Error panel labels -error_more_info=আরও তথ্য -error_less_info=কম তথ্য -error_close=বন্ধ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=বার্তা: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=নথি: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=লাইন: {{line}} -rendering_error=পাতা উপস্থাপনার সময় ত্রুটি দেখা দিয়েছে। -# Predefined zoom values -page_scale_width=পাতার প্রস্থ -page_scale_fit=পাতা ফিট করুন -page_scale_auto=স্বয়ংক্রিয় জুম -page_scale_actual=প্রকৃত আকার -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে। -invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল। -missing_file_error=নিখোঁজ PDF ফাইল। -unexpected_response_error=অপ্রত্যাশীত সার্ভার প্রতিক্রিয়া। -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} টীকা] -password_label=পিডিএফ ফাইলটি ওপেন করতে পাসওয়ার্ড দিন। -password_invalid=ভুল পাসওয়ার্ড। অনুগ্রহ করে আবার চেষ্টা করুন। -password_ok=ঠিক আছে -password_cancel=বাতিল -printing_not_supported=সতর্কতা: এই ব্রাউজারে মুদ্রণ সম্পূর্ণভাবে সমর্থিত নয়। -printing_not_ready=সতর্কীকরণ: পিডিএফটি মুদ্রণের জন্য সম্পূর্ণ লোড হয়নি। -web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না। diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bo/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bo/viewer.properties deleted file mode 100644 index 7f76e78e0e87997d54321daf161d3c5f0f25a246..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bo/viewer.properties +++ /dev/null @@ -1,225 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=དྲ་ངོས་སྔོན་མ -previous_label=སྔོན་མ -next.title=དྲ་ངོས་རྗེས་མ -next_label=རྗེས་མ -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=ཤོག་ངོས -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=of {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} of {{pagesCount}}) -zoom_out.title=Zoom Out -zoom_out_label=Zoom Out -zoom_in.title=Zoom In -zoom_in_label=Zoom In -zoom.title=Zoom -presentation_mode.title=Switch to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Open File -open_file_label=Open -print.title=Print -print_label=Print -download.title=Download -download_label=Download -bookmark.title=Current view (copy or open in new window) -bookmark_label=Current View -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Go to First Page -first_page.label=Go to First Page -first_page_label=Go to First Page -last_page.title=Go to Last Page -last_page.label=Go to Last Page -last_page_label=Go to Last Page -page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise -page_rotate_cw_label=Rotate Clockwise -page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw.label=Rotate Counterclockwise -page_rotate_ccw_label=Rotate Counterclockwise -cursor_text_select_tool.title=Enable Text Selection Tool -cursor_text_select_tool_label=Text Selection Tool -cursor_hand_tool.title=Enable Hand Tool -cursor_hand_tool_label=Hand Tool -scroll_vertical.title=Use Vertical Scrolling -scroll_vertical_label=Vertical Scrolling -scroll_horizontal.title=Use Horizontal Scrolling -scroll_horizontal_label=Horizontal Scrolling -scroll_wrapped.title=Use Wrapped Scrolling -scroll_wrapped_label=Wrapped Scrolling -spread_none.title=Do not join page spreads -spread_none_label=No Spreads -spread_odd.title=Join page spreads starting with odd-numbered pages -spread_odd_label=Odd Spreads -spread_even.title=Join page spreads starting with even-numbered pages -spread_even_label=Even Spreads -# Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… -document_properties_file_name=File name: -document_properties_file_size=File size: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Title: -document_properties_author=Author: -document_properties_subject=Subject: -document_properties_keywords=Keywords: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: -document_properties_producer=PDF Producer: -document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_page_size=Page Size: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portrait -document_properties_page_size_orientation_landscape=landscape -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Yes -document_properties_linearized_no=No -document_properties_close=Close -print_progress_message=Preparing document for printing… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancel -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) -toggle_sidebar_label=Toggle Sidebar -document_outline.title=Show Document Outline (double-click to expand/collapse all items) -document_outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -thumbs.title=Show Thumbnails -thumbs_label=Thumbnails -findbar.title=Find in Document -findbar_label=Find -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail of Page {{page}} -# Find panel button title and messages -find_input.title=Find -find_input.placeholder=Find in document… -find_previous.title=Find the previous occurrence of the phrase -find_previous_label=Previous -find_next.title=Find the next occurrence of the phrase -find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} of {{total}} match -find_match_count[two]={{current}} of {{total}} matches -find_match_count[few]={{current}} of {{total}} matches -find_match_count[many]={{current}} of {{total}} matches -find_match_count[other]={{current}} of {{total}} matches -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=More than {{limit}} matches -find_match_count_limit[one]=More than {{limit}} match -find_match_count_limit[two]=More than {{limit}} matches -find_match_count_limit[few]=More than {{limit}} matches -find_match_count_limit[many]=More than {{limit}} matches -find_match_count_limit[other]=More than {{limit}} matches -find_not_found=Phrase not found -# Error panel labels -error_more_info=More Information -error_less_info=Less Information -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. -# Predefined zoom values -page_scale_width=Page Width -page_scale_fit=Page Fit -page_scale_auto=Automatic Zoom -page_scale_actual=Actual Size -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=An error occurred while loading the PDF. -invalid_file_error=Invalid or corrupted PDF file. -missing_file_error=Missing PDF file. -unexpected_response_error=Unexpected server response. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Enter the password to open this PDF file. -password_invalid=Invalid password. Please try again. -password_ok=OK -password_cancel=Cancel -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/br/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/br/viewer.properties deleted file mode 100644 index 66c7a2c923275c943b60864ac5f06913bc605f86..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/br/viewer.properties +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pajenn a-raok -previous_label=A-raok -next.title=Pajenn war-lerc'h -next_label=War-lerc'h -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pajenn -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=eus {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} war {{pagesCount}}) -zoom_out.title=Zoum bihanaat -zoom_out_label=Zoum bihanaat -zoom_in.title=Zoum brasaat -zoom_in_label=Zoum brasaat -zoom.title=Zoum -presentation_mode.title=Trec'haoliñ etrezek ar mod kinnigadenn -presentation_mode_label=Mod kinnigadenn -open_file.title=Digeriñ ur restr -open_file_label=Digeriñ ur restr -print.title=Moullañ -print_label=Moullañ -download.title=Pellgargañ -download_label=Pellgargañ -bookmark.title=Gwel bremanel (eilañ pe zigeriñ e-barzh ur prenestr nevez) -bookmark_label=Gwel bremanel -# Secondary toolbar and context menu -tools.title=Ostilhoù -tools_label=Ostilhoù -first_page.title=Mont d'ar bajenn gentañ -first_page.label=Mont d'ar bajenn gentañ -first_page_label=Mont d'ar bajenn gentañ -last_page.title=Mont d'ar bajenn diwezhañ -last_page.label=Mont d'ar bajenn diwezhañ -last_page_label=Mont d'ar bajenn diwezhañ -page_rotate_cw.title=C'hwelañ gant roud ar bizied -page_rotate_cw.label=C'hwelañ gant roud ar bizied -page_rotate_cw_label=C'hwelañ gant roud ar bizied -page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied -page_rotate_ccw.label=C'hwelañ gant roud gin ar bizied -page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied -cursor_text_select_tool.title=Gweredekaat an ostilh diuzañ testenn -cursor_text_select_tool_label=Ostilh diuzañ testenn -cursor_hand_tool.title=Gweredekaat an ostilh dorn -cursor_hand_tool_label=Ostilh dorn -scroll_vertical.title=Arverañ an dibunañ a-blom -scroll_vertical_label=Dibunañ a-serzh -scroll_horizontal.title=Arverañ an dibunañ a-blaen -scroll_horizontal_label=Dibunañ a-blaen -scroll_wrapped.title=Arverañ an dibunañ paket -scroll_wrapped_label=Dibunañ paket -spread_none.title=Chom hep stagañ ar skignadurioù -spread_none_label=Skignadenn ebet -spread_odd.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù ampar -spread_odd_label=Pajennoù ampar -spread_even.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù par -spread_even_label=Pajennoù par -# Document properties dialog box -document_properties.title=Perzhioù an teul… -document_properties_label=Perzhioù an teul… -document_properties_file_name=Anv restr: -document_properties_file_size=Ment ar restr: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit) -document_properties_title=Titl: -document_properties_author=Aozer: -document_properties_subject=Danvez: -document_properties_keywords=Gerioù-alc'hwez: -document_properties_creation_date=Deiziad krouiñ: -document_properties_modification_date=Deiziad kemmañ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Krouer: -document_properties_producer=Kenderc'her PDF: -document_properties_version=Handelv PDF: -document_properties_page_count=Niver a bajennoù: -document_properties_page_size=Ment ar bajenn: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=poltred -document_properties_page_size_orientation_landscape=gweledva -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Lizher -document_properties_page_size_name_legal=Lezennel -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Gwel Web Herrek: -document_properties_linearized_yes=Ya -document_properties_linearized_no=Ket -document_properties_close=Serriñ -print_progress_message=O prientiñ an teul evit moullañ... -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Nullañ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez -toggle_sidebar_notification.title=Trec'haoliñ ar verrenn-gostez (ur steuñv pe stagadennoù a zo en teul) -toggle_sidebar_notification2.title=Trec'haoliñ ar varrenn-gostez (ur steuñv pe stagadennoù a zo en teul) -toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez -document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù) -document_outline_label=Sinedoù an teuliad -attachments.title=Diskouez ar c'henstagadurioù -attachments_label=Kenstagadurioù -layers_label=Gwiskadoù -thumbs.title=Diskouez ar melvennoù -thumbs_label=Melvennoù -findbar.title=Klask e-barzh an teuliad -findbar_label=Klask -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pajenn {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pajenn {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Melvenn ar bajenn {{page}} -# Find panel button title and messages -find_input.title=Klask -find_input.placeholder=Klask e-barzh an teuliad -find_previous.title=Kavout an tamm frazenn kent o klotañ ganti -find_previous_label=Kent -find_next.title=Kavout an tamm frazenn war-lerc'h o klotañ ganti -find_next_label=War-lerc'h -find_highlight=Usskediñ pep tra -find_match_case_label=Teurel evezh ouzh ar pennlizherennoù -find_entire_word_label=Gerioù a-bezh -find_reached_top=Tizhet eo bet derou ar bajenn, kenderc'hel diouzh an diaz -find_reached_bottom=Tizhet eo bet dibenn ar bajenn, kenderc'hel diouzh ar c'hrec'h -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=Klotadenn {{current}} war {{total}} -find_match_count[two]=Klotadenn {{current}} war {{total}} -find_match_count[few]=Klotadenn {{current}} war {{total}} -find_match_count[many]=Klotadenn {{current}} war {{total}} -find_match_count[other]=Klotadenn {{current}} war {{total}} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Muioc'h eget {{limit}} a glotadennoù -find_match_count_limit[one]=Muioc'h eget {{limit}} a glotadennoù -find_match_count_limit[two]=Muioc'h eget {{limit}} a glotadennoù -find_match_count_limit[few]=Muioc'h eget {{limit}} a glotadennoù -find_match_count_limit[many]=Muioc'h eget {{limit}} a glotadennoù -find_match_count_limit[other]=Muioc'h eget {{limit}} a glotadennoù -find_not_found=N'haller ket kavout ar frazenn -# Error panel labels -error_more_info=Muioc'h a ditouroù -error_less_info=Nebeutoc'h a ditouroù -error_close=Serriñ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js handelv {{version}} (kempunadur: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Kemennadenn: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Torn: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Restr: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linenn: {{line}} -rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad. -# Predefined zoom values -page_scale_width=Led ar bajenn -page_scale_fit=Pajenn a-bezh -page_scale_auto=Zoum emgefreek -page_scale_actual=Ment wir -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF. -invalid_file_error=Restr PDF didalvoudek pe kontronet. -missing_file_error=Restr PDF o vankout. -unexpected_response_error=Respont dic'hortoz a-berzh an dafariad -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Notennañ] -password_label=Enankit ar ger-tremen evit digeriñ ar restr PDF-mañ. -password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij. -password_ok=Mat eo -password_cancel=Nullañ -printing_not_supported=Kemenn: N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. -printing_not_ready=Kemenn: N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. -web_fonts_disabled=Diweredekaet eo an nodrezhoù web: n'haller ket arverañ an nodrezhoù PDF enframmet. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/brx/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/brx/viewer.properties deleted file mode 100644 index c731f6b9d9a87948112507af5be71c065f9af4d9..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/brx/viewer.properties +++ /dev/null @@ -1,191 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=आगोलनि बिलाइ -previous_label=आगोलनि -next.title=उननि बिलाइ -next_label=उननि -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=बिलाइ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} नि -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pagesCount}} नि {{pageNumber}}) -zoom_out.title=फिसायै जुम खालाम -zoom_out_label=फिसायै जुम खालाम -zoom_in.title=गेदेरै जुम खालाम -zoom_in_label=गेदेरै जुम खालाम -zoom.title=जुम खालाम -presentation_mode.title=दिन्थिफुंनाय म'डआव थां -presentation_mode_label=दिन्थिफुंनाय म'ड -open_file.title=फाइलखौ खेव -open_file_label=खेव -print.title=साफाय -print_label=साफाय -download.title=डाउनल'ड खालाम -download_label=डाउनल'ड खालाम -bookmark.title=दानि नुथाय (गोदान उइन्ड'आव कपि खालाम एबा खेव) -bookmark_label=दानि नुथाय -# Secondary toolbar and context menu -tools.title=टुल -tools_label=टुल -first_page.title=गिबि बिलाइआव थां -first_page.label=गिबि बिलाइआव थां -first_page_label=गिबि बिलाइआव थां -last_page.title=जोबथा बिलाइआव थां -last_page.label=जोबथा बिलाइआव थां -last_page_label=जोबथा बिलाइआव थां -page_rotate_cw.title=घरि गिदिंनाय फार्से फिदिं -page_rotate_cw.label=घरि गिदिंनाय फार्से फिदिं -page_rotate_cw_label=घरि गिदिंनाय फार्से फिदिं -page_rotate_ccw.title=घरि गिदिंनाय उल्था फार्से फिदिं -page_rotate_ccw.label=घरि गिदिंनाय उल्था फार्से फिदिं -page_rotate_ccw_label=घरि गिदिंनाय उल्था फार्से फिदिं -# Document properties dialog box -document_properties.title=फोरमान बिलाइनि आखुथाय... -document_properties_label=फोरमान बिलाइनि आखुथाय... -document_properties_file_name=फाइलनि मुं: -document_properties_file_size=फाइलनि महर: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} बाइट) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} बाइट) -document_properties_title=बिमुं: -document_properties_author=लिरगिरि: -document_properties_subject=आयदा: -document_properties_keywords=गाहाय सोदोब: -document_properties_creation_date=सोरजिनाय अक्ट': -document_properties_modification_date=सुद्रायनाय अक्ट': -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=सोरजिग्रा: -document_properties_producer=PDF दिहुनग्रा: -document_properties_version=PDF बिसान: -document_properties_page_count=बिलाइनि हिसाब: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=प'र्ट्रेट -document_properties_page_size_orientation_landscape=लेण्डस्केप -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=लायजाम -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=नंगौ -document_properties_linearized_no=नङा -document_properties_close=बन्द खालाम -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=नेवसि -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=टग्गल साइडबार -toggle_sidebar_label=टग्गल साइडबार -document_outline_label=फोरमान बिलाइ सिमा हांखो -attachments.title=नांजाब होनायखौ दिन्थि -attachments_label=नांजाब होनाय -thumbs.title=थामनेइलखौ दिन्थि -thumbs_label=थामनेइल -findbar.title=फोरमान बिलाइआव नागिरना दिहुन -findbar_label=नायगिरना दिहुन -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=बिलाइ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=बिलाइ {{page}} नि थामनेइल -# Find panel button title and messages -find_input.title=नायगिरना दिहुन -find_input.placeholder=फोरमान बिलाइआव नागिरना दिहुन... -find_previous.title=बाथ्रा खोन्दोबनि सिगांनि नुजाथिनायखौ नागिर -find_previous_label=आगोलनि -find_next.title=बाथ्रा खोन्दोबनि उननि नुजाथिनायखौ नागिर -find_next_label=उननि -find_highlight=गासैखौबो हाइलाइट खालाम -find_match_case_label=गोरोबनाय केस -find_reached_top=थालो निफ्राय जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय -find_reached_bottom=बिजौ निफ्राय जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_not_found=बाथ्रा खोन्दोब मोनाखै -# Error panel labels -error_more_info=गोबां फोरमायथिहोग्रा -error_less_info=खम फोरमायथिहोग्रा -error_close=बन्द खालाम -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=खौरां: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=स्टेक: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फाइल: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=सारि: {{line}} -rendering_error=बिलाइखौ राव सोलायनाय समाव मोनसे गोरोन्थि जादों। -# Predefined zoom values -page_scale_width=बिलाइनि गुवार -page_scale_fit=बिलाइ गोरोबनाय -page_scale_auto=गावनोगाव जुम -page_scale_actual=थार महर -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय। -invalid_file_error=बाहायजायै एबा गाज्रि जानाय PDF फाइल -missing_file_error=गोमानाय PDF फाइल -unexpected_response_error=मिजिंथियै सार्भार फिननाय। -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} सोदोब बेखेवनाय] -password_label=बे PDF फाइलखौ खेवनो पासवार्ड हाबहो। -password_invalid=बाहायजायै पासवार्ड। अननानै फिन नाजा। -password_ok=OK -password_cancel=नेवसि -printing_not_supported=सांग्रांथि: साफायनाया बे ब्राउजारजों आबुङै हेफाजाब होजाया। -printing_not_ready=सांग्रांथि: PDF खौ साफायनायनि थाखाय फुरायै ल'ड खालामाखै। -web_fonts_disabled=वेब फन्टखौ लोरबां खालामबाय: अरजाबहोनाय PDF फन्टखौ बाहायनो हायाखै। diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bs/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bs/viewer.properties deleted file mode 100644 index 1f6117f0929924fc53306930be2882cb3b4163af..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/bs/viewer.properties +++ /dev/null @@ -1,184 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Prethodna strana -previous_label=Prethodna -next.title=Sljedeća strna -next_label=Sljedeća -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Strana -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=od {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} od {{pagesCount}}) -zoom_out.title=Umanji -zoom_out_label=Umanji -zoom_in.title=Uvećaj -zoom_in_label=Uvećaj -zoom.title=Uvećanje -presentation_mode.title=Prebaci se u prezentacijski režim -presentation_mode_label=Prezentacijski režim -open_file.title=Otvori fajl -open_file_label=Otvori -print.title=Štampaj -print_label=Štampaj -download.title=Preuzmi -download_label=Preuzmi -bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru) -bookmark_label=Trenutni prikaz -# Secondary toolbar and context menu -tools.title=Alati -tools_label=Alati -first_page.title=Idi na prvu stranu -first_page.label=Idi na prvu stranu -first_page_label=Idi na prvu stranu -last_page.title=Idi na zadnju stranu -last_page.label=Idi na zadnju stranu -last_page_label=Idi na zadnju stranu -page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu -page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu -page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu -page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu -page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu -page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu -cursor_text_select_tool.title=Omogući alat za označavanje teksta -cursor_text_select_tool_label=Alat za označavanje teksta -cursor_hand_tool.title=Omogući ručni alat -cursor_hand_tool_label=Ručni alat -# Document properties dialog box -document_properties.title=Svojstva dokumenta... -document_properties_label=Svojstva dokumenta... -document_properties_file_name=Naziv fajla: -document_properties_file_size=Veličina fajla: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajta) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajta) -document_properties_title=Naslov: -document_properties_author=Autor: -document_properties_subject=Predmet: -document_properties_keywords=Ključne riječi: -document_properties_creation_date=Datum kreiranja: -document_properties_modification_date=Datum promjene: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Kreator: -document_properties_producer=PDF stvaratelj: -document_properties_version=PDF verzija: -document_properties_page_count=Broj stranica: -document_properties_page_size=Veličina stranice: -document_properties_page_size_unit_inches=u -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=uspravno -document_properties_page_size_orientation_landscape=vodoravno -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Pismo -document_properties_page_size_name_legal=Pravni -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -document_properties_close=Zatvori -print_progress_message=Pripremam dokument za štampu… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Otkaži -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Uključi/isključi bočnu traku -toggle_sidebar_notification.title=Uključi/isključi sidebar (dokument sadrži outline/priloge) -toggle_sidebar_label=Uključi/isključi bočnu traku -document_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki) -document_outline_label=Konture dokumenta -attachments.title=Prikaži priloge -attachments_label=Prilozi -thumbs.title=Prikaži thumbnailove -thumbs_label=Thumbnailovi -findbar.title=Pronađi u dokumentu -findbar_label=Pronađi -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strana {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail strane {{page}} -# Find panel button title and messages -find_input.title=Pronađi -find_input.placeholder=Pronađi u dokumentu… -find_previous.title=Pronađi prethodno pojavljivanje fraze -find_previous_label=Prethodno -find_next.title=Pronađi sljedeće pojavljivanje fraze -find_next_label=Sljedeće -find_highlight=Označi sve -find_match_case_label=Osjetljivost na karaktere -find_reached_top=Dostigao sam vrh dokumenta, nastavljam sa dna -find_reached_bottom=Dostigao sam kraj dokumenta, nastavljam sa vrha -find_not_found=Fraza nije pronađena -# Error panel labels -error_more_info=Više informacija -error_less_info=Manje informacija -error_close=Zatvori -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Poruka: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fajl: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linija: {{line}} -rendering_error=Došlo je do greške prilikom renderiranja strane. -# Predefined zoom values -page_scale_width=Širina strane -page_scale_fit=Uklopi stranu -page_scale_auto=Automatsko uvećanje -page_scale_actual=Stvarna veličina -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Došlo je do greške prilikom učitavanja PDF-a. -invalid_file_error=Neispravan ili oštećen PDF fajl. -missing_file_error=Nedostaje PDF fajl. -unexpected_response_error=Neočekivani odgovor servera. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} pribilješka] -password_label=Upišite lozinku da biste otvorili ovaj PDF fajl. -password_invalid=Pogrešna lozinka. Pokušajte ponovo. -password_ok=OK -password_cancel=Otkaži -printing_not_supported=Upozorenje: Štampanje nije u potpunosti podržano u ovom browseru. -printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za štampanje. -web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubačene PDF fontove. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ca/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ca/viewer.properties deleted file mode 100644 index 7e22060f87658f7d2cbc2ebec627da7eb13bbbda..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ca/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pàgina anterior -previous_label=Anterior -next.title=Pàgina següent -next_label=Següent -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pàgina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Redueix -zoom_out_label=Redueix -zoom_in.title=Amplia -zoom_in_label=Amplia -zoom.title=Escala -presentation_mode.title=Canvia al mode de presentació -presentation_mode_label=Mode de presentació -open_file.title=Obre el fitxer -open_file_label=Obre -print.title=Imprimeix -print_label=Imprimeix -download.title=Baixa -download_label=Baixa -bookmark.title=Vista actual (copia o obre en una finestra nova) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Eines -tools_label=Eines -first_page.title=Vés a la primera pàgina -first_page.label=Vés a la primera pàgina -first_page_label=Vés a la primera pàgina -last_page.title=Vés a l'última pàgina -last_page.label=Vés a l'última pàgina -last_page_label=Vés a l'última pàgina -page_rotate_cw.title=Gira cap a la dreta -page_rotate_cw.label=Gira cap a la dreta -page_rotate_cw_label=Gira cap a la dreta -page_rotate_ccw.title=Gira cap a l'esquerra -page_rotate_ccw.label=Gira cap a l'esquerra -page_rotate_ccw_label=Gira cap a l'esquerra -cursor_text_select_tool.title=Habilita l'eina de selecció de text -cursor_text_select_tool_label=Eina de selecció de text -cursor_hand_tool.title=Habilita l'eina de mà -cursor_hand_tool_label=Eina de mà -scroll_vertical.title=Utilitza el desplaçament vertical -scroll_vertical_label=Desplaçament vertical -scroll_horizontal.title=Utilitza el desplaçament horitzontal -scroll_horizontal_label=Desplaçament horitzontal -scroll_wrapped.title=Activa el desplaçament continu -scroll_wrapped_label=Desplaçament continu -spread_none.title=No agrupis les pàgines de dues en dues -spread_none_label=Una sola pàgina -spread_odd.title=Mostra dues pàgines començant per les pàgines de numeració senar -spread_odd_label=Doble pàgina (senar) -spread_even.title=Mostra dues pàgines començant per les pàgines de numeració parell -spread_even_label=Doble pàgina (parell) -# Document properties dialog box -document_properties.title=Propietats del document… -document_properties_label=Propietats del document… -document_properties_file_name=Nom del fitxer: -document_properties_file_size=Mida del fitxer: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Títol: -document_properties_author=Autor: -document_properties_subject=Assumpte: -document_properties_keywords=Paraules clau: -document_properties_creation_date=Data de creació: -document_properties_modification_date=Data de modificació: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=Generador de PDF: -document_properties_version=Versió de PDF: -document_properties_page_count=Nombre de pàgines: -document_properties_page_size=Mida de la pàgina: -document_properties_page_size_unit_inches=polzades -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertical -document_properties_page_size_orientation_landscape=apaïsat -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista web ràpida: -document_properties_linearized_yes=Sí -document_properties_linearized_no=No -document_properties_close=Tanca -print_progress_message=S'està preparant la impressió del document… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancel·la -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Mostra/amaga la barra lateral -toggle_sidebar_notification.title=Mostra/amaga la barra lateral (el document conté un esquema o adjuncions) -toggle_sidebar_notification2.title=Mostra/amaga la barra lateral (el document conté un esquema, adjuncions o capes) -toggle_sidebar_label=Mostra/amaga la barra lateral -document_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements) -document_outline_label=Esquema del document -attachments.title=Mostra les adjuncions -attachments_label=Adjuncions -layers.title=Mostra les capes (doble clic per restablir totes les capes al seu estat per defecte) -layers_label=Capes -thumbs.title=Mostra les miniatures -thumbs_label=Miniatures -current_outline_item.title=Cerca l'element d'esquema actual -current_outline_item_label=Element d'esquema actual -findbar.title=Cerca al document -findbar_label=Cerca -additional_layers=Capes addicionals -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pàgina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pàgina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura de la pàgina {{page}} -# Find panel button title and messages -find_input.title=Cerca -find_input.placeholder=Cerca al document… -find_previous.title=Cerca l'anterior coincidència de l'expressió -find_previous_label=Anterior -find_next.title=Cerca la següent coincidència de l'expressió -find_next_label=Següent -find_highlight=Ressalta-ho tot -find_match_case_label=Distingeix entre majúscules i minúscules -find_entire_word_label=Paraules senceres -find_reached_top=S'ha arribat al principi del document, es continua pel final -find_reached_bottom=S'ha arribat al final del document, es continua pel principi -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidència -find_match_count[two]={{current}} de {{total}} coincidències -find_match_count[few]={{current}} de {{total}} coincidències -find_match_count[many]={{current}} de {{total}} coincidències -find_match_count[other]={{current}} de {{total}} coincidències -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Més de {{limit}} coincidències -find_match_count_limit[one]=Més d'{{limit}} coincidència -find_match_count_limit[two]=Més de {{limit}} coincidències -find_match_count_limit[few]=Més de {{limit}} coincidències -find_match_count_limit[many]=Més de {{limit}} coincidències -find_match_count_limit[other]=Més de {{limit}} coincidències -find_not_found=No s'ha trobat l'expressió -# Error panel labels -error_more_info=Més informació -error_less_info=Menys informació -error_close=Tanca -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (muntatge: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Missatge: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fitxer: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Línia: {{line}} -rendering_error=S'ha produït un error mentre es renderitzava la pàgina. -# Predefined zoom values -page_scale_width=Amplada de la pàgina -page_scale_fit=Ajusta la pàgina -page_scale_auto=Zoom automàtic -page_scale_actual=Mida real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=S'ha produït un error en carregar el PDF. -invalid_file_error=El fitxer PDF no és vàlid o està malmès. -missing_file_error=Falta el fitxer PDF. -unexpected_response_error=Resposta inesperada del servidor. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotació {{type}}] -password_label=Introduïu la contrasenya per obrir aquest fitxer PDF. -password_invalid=La contrasenya no és vàlida. Torneu-ho a provar. -password_ok=D'acord -password_cancel=Cancel·la -printing_not_supported=Avís: la impressió no és plenament funcional en aquest navegador. -printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo. -web_fonts_disabled=Els tipus de lletra web estan desactivats: no es poden utilitzar els tipus de lletra incrustats al PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cak/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cak/viewer.properties deleted file mode 100644 index d4ef21fff9cb48dfd2f55c3c410ec1fdf0d43120..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cak/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Jun kan ruxaq -previous_label=Jun kan -next.title=Jun chik ruxaq -next_label=Jun chik -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Ruxaq -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=richin {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} richin {{pagesCount}}) -zoom_out.title=Tich'utinirisäx -zoom_out_label=Tich'utinirisäx -zoom_in.title=Tinimirisäx -zoom_in_label=Tinimirisäx -zoom.title=Sum -presentation_mode.title=Tijal ri rub'anikil niwachin -presentation_mode_label=Pa rub'eyal niwachin -open_file.title=Tijaq Yakb'äl -open_file_label=Tijaq -print.title=Titz'ajb'äx -print_label=Titz'ajb'äx -download.title=Tiqasäx -download_label=Tiqasäx -bookmark.title=Rutz'etik wakami (tiwachib'ëx o tijaq pa jun k'ak'a' tzuwäch) -bookmark_label=Rutzub'al wakami -# Secondary toolbar and context menu -tools.title=Samajib'äl -tools_label=Samajib'äl -first_page.title=Tib'e pa nab'ey ruxaq -first_page.label=Tib'e pa nab'ey ruxaq -first_page_label=Tib'e pa nab'ey ruxaq -last_page.title=Tib'e pa ruk'isib'äl ruxaq -last_page.label=Tib'e pa ruk'isib'äl ruxaq -last_page_label=Tib'e pa ruk'isib'äl ruxaq -page_rotate_cw.title=Tisutïx pan ajkiq'a' -page_rotate_cw.label=Tisutïx pan ajkiq'a' -page_rotate_cw_label=Tisutïx pan ajkiq'a' -page_rotate_ccw.title=Tisutïx pan ajxokon -page_rotate_ccw.label=Tisutïx pan ajxokon -page_rotate_ccw_label=Tisutïx pan ajxokon -cursor_text_select_tool.title=Titzij ri rusamajib'al Rucha'ik Rucholajem Tzij -cursor_text_select_tool_label=Rusamajib'al Rucha'ik Rucholajem Tzij -cursor_hand_tool.title=Titzij ri q'ab'aj samajib'äl -cursor_hand_tool_label=Q'ab'aj Samajib'äl -scroll_vertical.title=Tokisäx Pa'äl Q'axanem -scroll_vertical_label=Pa'äl Q'axanem -scroll_horizontal.title=Tokisäx Kotz'öl Q'axanem -scroll_horizontal_label=Kotz'öl Q'axanem -scroll_wrapped.title=Tokisäx Tzub'aj Q'axanem -scroll_wrapped_label=Tzub'aj Q'axanem -spread_none.title=Man ketun taq ruxaq pa rub'eyal wuj -spread_none_label=Majun Rub'eyal -spread_odd.title=Ke'atunu' ri taq ruxaq rik'in natikirisaj rik'in jun man k'ulaj ta rajilab'al -spread_odd_label=Man K'ulaj Ta Rub'eyal -spread_even.title=Ke'atunu' ri taq ruxaq rik'in natikirisaj rik'in jun k'ulaj rajilab'al -spread_even_label=K'ulaj Rub'eyal -# Document properties dialog box -document_properties.title=Taq richinil wuj… -document_properties_label=Taq richinil wuj… -document_properties_file_name=Rub'i' yakb'äl: -document_properties_file_size=Runimilem yakb'äl: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=B'i'aj: -document_properties_author=B'anel: -document_properties_subject=Taqikil: -document_properties_keywords=Kixe'el taq tzij: -document_properties_creation_date=Ruq'ijul xtz'uk: -document_properties_modification_date=Ruq'ijul xjalwachïx: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Q'inonel: -document_properties_producer=PDF b'anöy: -document_properties_version=PDF ruwäch: -document_properties_page_count=Jarupe' ruxaq: -document_properties_page_size=Runimilem ri Ruxaq: -document_properties_page_size_unit_inches=pa -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=rupalem -document_properties_page_size_orientation_landscape=rukotz'olem -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Loman wuj -document_properties_page_size_name_legal=Taqanel tzijol -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Anin Rutz'etik Ajk'amaya'l: -document_properties_linearized_yes=Ja' -document_properties_linearized_no=Mani -document_properties_close=Titz'apïx -print_progress_message=Ruchojmirisaxik wuj richin nitz'ajb'äx… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Tiq'at -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Tijal ri ajxikin kajtz'ik -toggle_sidebar_notification.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqoj taq yakb'äl) -toggle_sidebar_notification2.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqo/kuchuj) -toggle_sidebar_label=Tijal ri ajxikin kajtz'ik -document_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel ruch'akulal) -document_outline_label=Ruch'akulal wuj -attachments.title=Kek'ut pe ri taq taqoj -attachments_label=Taq taqoj -layers.title=Kek'ut taq Kuchuj (ka'i'-pitz' richin yetzolïx ronojel ri taq kuchuj e k'o wi) -layers_label=Taq kuchuj -thumbs.title=Kek'ut pe taq ch'utiq -thumbs_label=Koköj -current_outline_item.title=Kekanöx Taq Ch'akulal Kik'wan Chib'äl -current_outline_item_label=Taq Ch'akulal Kik'wan Chib'äl -findbar.title=Tikanöx chupam ri wuj -findbar_label=Tikanöx -additional_layers=Tz'aqat ta Kuchuj -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Ruxaq {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Ruxaq {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Ruch'utinirisaxik ruxaq {{page}} -# Find panel button title and messages -find_input.title=Tikanöx -find_input.placeholder=Tikanöx pa wuj… -find_previous.title=Tib'an b'enam pa ri jun kan q'aptzij xilitäj -find_previous_label=Jun kan -find_next.title=Tib'e pa ri jun chik pajtzij xilitäj -find_next_label=Jun chik -find_highlight=Tiya' retal ronojel -find_match_case_label=Tuk'äm ri' kik'in taq nimatz'ib' chuqa' taq ch'utitz'ib' -find_entire_word_label=Tz'aqät taq tzij -find_reached_top=Xb'eq'i' ri rutikirib'al wuj, xtikanöx k'a pa ruk'isib'äl -find_reached_bottom=Xb'eq'i' ri ruk'isib'äl wuj, xtikanöx pa rutikirib'al -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} richin {{total}} nuk'äm ri' -find_match_count[two]={{current}} richin {{total}} nikik'äm ki' -find_match_count[few]={{current}} richin {{total}} nikik'äm ki' -find_match_count[many]={{current}} richin {{total}} nikik'äm ki' -find_match_count[other]={{current}} richin {{total}} nikik'äm ki' -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=K'ïy chi re {{limit}} nikik'äm ki' -find_match_count_limit[one]=K'ïy chi re {{limit}} nuk'äm ri' -find_match_count_limit[two]=K'ïy chi re {{limit}} nikik'äm ki' -find_match_count_limit[few]=K'ïy chi re {{limit}} nikik'äm ki' -find_match_count_limit[many]=K'ïy chi re {{limit}} nikik'äm ki' -find_match_count_limit[other]=K'ïy chi re {{limit}} nikik'äm ki' -find_not_found=Man xilitäj ta ri pajtzij -# Error panel labels -error_more_info=Ch'aqa' chik rutzijol -error_less_info=Jub'a' ok rutzijol -error_close=Titz'apïx -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Uqxa'n: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Tzub'aj: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Yakb'äl: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=B'ey: {{line}} -rendering_error=Xk'ulwachitäj jun sachoj toq ninuk'wachij ri ruxaq. -# Predefined zoom values -page_scale_width=Ruwa ruxaq -page_scale_fit=Tinuk' ruxaq -page_scale_auto=Yonil chi nimilem -page_scale_actual=Runimilem Wakami -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=\u0020Xk'ulwachitäj jun sach'oj toq xnuk'ux ri PDF . -invalid_file_error=Man oke ta o yujtajinäq ri PDF yakb'äl. -missing_file_error=Man xilitäj ta ri PDF yakb'äl. -unexpected_response_error=Man oyob'en ta tz'olin rutzij ruk'u'x samaj. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Tz'ib'anïk] -password_label=Tatz'ib'aj ri ewan tzij richin najäq re yakb'äl re' pa PDF. -password_invalid=Man okel ta ri ewan tzij: Tatojtob'ej chik. -password_ok=Ütz -password_cancel=Tiq'at -printing_not_supported=Rutzijol k'ayewal: Ri rutz'ajb'axik man koch'el ta ronojel pa re okik'amaya'l re'. -printing_not_ready=Rutzijol k'ayewal: Ri PDF man xusamajij ta ronojel richin nitz'ajb'äx. -web_fonts_disabled=E chupül ri taq ajk'amaya'l tz'ib': man tikirel ta nokisäx ri taq tz'ib' PDF pa ch'ikenïk diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ckb/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ckb/viewer.properties deleted file mode 100644 index 905b5b4c6b5e0120114ab7628568d5750ff31a4b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ckb/viewer.properties +++ /dev/null @@ -1,222 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=پەڕەی پێشوو -previous_label=پێشوو -next.title=پەڕەی دوواتر -next_label=دوواتر -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=پەرە -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=لە {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} لە {{pagesCount}}) -zoom_out.title=ڕۆچوونی -zoom_out_label=ڕۆچوونی -zoom_in.title=هێنانەپێش -zoom_in_label=هێنانەپێش -zoom.title=زووم -presentation_mode.title=گۆڕین بۆ دۆخی پێشکەشکردن -presentation_mode_label=دۆخی پێشکەشکردن -open_file.title=پەڕگە بکەرەوە -open_file_label=کردنەوە -print.title=چاپکردن -print_label=چاپکردن -download.title=داگرتن -download_label=داگرتن -bookmark.title=پێشبینینی ئێستا(لەبەریبگرەوە یان پەنجەرەیەکی نوێ بکەرەوە) -bookmark_label=پیشبینینی ئێستا -# Secondary toolbar and context menu -tools.title=ئامرازەکان -tools_label=ئامرازەکان -first_page.title=برۆ بۆ یەکەم پەڕە -first_page.label=بڕۆ بۆ یەکەم پەڕە -first_page_label=بڕۆ بۆ یەکەم پەڕە -last_page.title=بڕۆ بۆ کۆتا پەڕە -last_page.label=بڕۆ بۆ کۆتا پەڕە -last_page_label=بڕۆ بۆ کۆتا پەڕە -page_rotate_cw.title=ئاڕاستەی میلی کاتژمێر -page_rotate_cw.label=ئاڕاستەی میلی کاتژمێر -page_rotate_cw_label=ئاڕاستەی میلی کاتژمێر -page_rotate_ccw.title=پێچەوانەی میلی کاتژمێر -page_rotate_ccw.label=پێچەوانەی میلی کاتژمێر -page_rotate_ccw_label=پێچەوانەی میلی کاتژمێر -cursor_text_select_tool.title=توڵامرازی نیشانکەری دەق چالاک بکە -cursor_text_select_tool_label=توڵامرازی نیشانکەری دەق -cursor_hand_tool.title=توڵامرازی دەستی چالاک بکە -cursor_hand_tool_label=توڵامرازی دەستی -scroll_vertical.title=ناردنی ئەستوونی بەکاربێنە -scroll_vertical_label=ناردنی ئەستوونی -scroll_horizontal.title=ناردنی ئاسۆیی بەکاربێنە -scroll_horizontal_label=ناردنی ئاسۆیی -scroll_wrapped.title=ناردنی لوولکراو بەکاربێنە -scroll_wrapped_label=ناردنی لوولکراو -# Document properties dialog box -document_properties.title=تایبەتمەندییەکانی بەڵگەنامە... -document_properties_label=تایبەتمەندییەکانی بەڵگەنامە... -document_properties_file_name=ناوی پەڕگە: -document_properties_file_size=قەبارەی پەڕگە: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} کب ({{size_b}} بایت) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} مب ({{size_b}} بایت) -document_properties_title=سەردێڕ: -document_properties_author=نووسەر -document_properties_subject=بابەت: -document_properties_keywords=کلیلەوشە: -document_properties_creation_date=بەرواری درووستکردن: -document_properties_modification_date=بەرواری دەستکاریکردن: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=درووستکەر: -document_properties_producer=بەرهەمهێنەری PDF: -document_properties_version=وەشانی PDF: -document_properties_page_count=ژمارەی پەرەکان: -document_properties_page_size=قەبارەی پەڕە: -document_properties_page_size_unit_inches=ئینچ -document_properties_page_size_unit_millimeters=ملم -document_properties_page_size_orientation_portrait=پۆرترەیت(درێژ) -document_properties_page_size_orientation_landscape=پانیی -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=نامە -document_properties_page_size_name_legal=یاسایی -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=پیشاندانی وێبی خێرا: -document_properties_linearized_yes=بەڵێ -document_properties_linearized_no=نەخێر -document_properties_close=داخستن -print_progress_message=بەڵگەنامە ئامادەدەکرێت بۆ چاپکردن... -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=پاشگەزبوونەوە -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=لاتەنیشت پیشاندان/شاردنەوە -toggle_sidebar_label=لاتەنیشت پیشاندان/شاردنەوە -document_outline_label=سنووری چوارچێوە -attachments.title=پاشکۆکان پیشان بدە -attachments_label=پاشکۆکان -layers_label=چینەکان -thumbs.title=وێنۆچکە پیشان بدە -thumbs_label=وێنۆچکە -findbar.title=لە بەڵگەنامە بگەرێ -findbar_label=دۆزینەوە -additional_layers=چینی زیاتر -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=پەڕەی {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=پەڕەی {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=وێنۆچکەی پەڕەی {{page}} -# Find panel button title and messages -find_input.title=دۆزینەوە -find_input.placeholder=لە بەڵگەنامە بگەرێ... -find_previous.title=هەبوونی پێشوو بدۆزرەوە لە ڕستەکەدا -find_previous_label=پێشوو -find_next.title=هەبوونی داهاتوو بدۆزەرەوە لە ڕستەکەدا -find_next_label=دوواتر -find_highlight=هەمووی نیشانە بکە -find_match_case_label=دۆخی لەیەکچوون -find_entire_word_label=هەموو وشەکان -find_reached_top=گەشتیتە سەرەوەی بەڵگەنامە، لە خوارەوە دەستت پێکرد -find_reached_bottom=گەشتیتە کۆتایی بەڵگەنامە. لەسەرەوە دەستت پێکرد -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} لە کۆی {{total}} لەیەکچوو -find_match_count[two]={{current}} لە کۆی {{total}} لەیەکچوو -find_match_count[few]={{current}} لە کۆی {{total}} لەیەکچوو -find_match_count[many]={{current}} لە کۆی {{total}} لەیەکچوو -find_match_count[other]={{current}} لە کۆی {{total}} لەیەکچوو -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=زیاتر لە {{limit}} لەیەکچوو -find_match_count_limit[one]=زیاتر لە {{limit}} لەیەکچوو -find_match_count_limit[two]=زیاتر لە {{limit}} لەیەکچوو -find_match_count_limit[few]=زیاتر لە {{limit}} لەیەکچوو -find_match_count_limit[many]=زیاتر لە {{limit}} لەیەکچوو -find_match_count_limit[other]=زیاتر لە {{limit}} لەیەکچوو -find_not_found=نووسین نەدۆزرایەوە -# Error panel labels -error_more_info=زانیاری زیاتر -error_less_info=زانیاری کەمتر -error_close=داخستن -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=پەیام: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=لەسەریەک: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=پەڕگە: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=هێڵ: {{line}} -rendering_error=هەڵەیەک ڕوویدا لە کاتی پوختەکردنی (ڕێندەر) پەڕە. -# Predefined zoom values -page_scale_width=پانی پەڕە -page_scale_fit=پڕبوونی پەڕە -page_scale_auto=زوومی خۆکار -page_scale_actual=قەبارەی ڕاستی -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=هەڵەیەک ڕوویدا لە کاتی بارکردنی PDF. -invalid_file_error=پەڕگەی pdf تێکچووە یان نەگونجاوە. -missing_file_error=پەڕگەی pdf بوونی نیە. -unexpected_response_error=وەڵامی ڕاژەخوازی نەخوازراو. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} سەرنج] -password_label=وشەی تێپەڕ بنووسە بۆ کردنەوەی پەڕگەی pdf. -password_invalid=وشەی تێپەڕ هەڵەیە. تکایە دووبارە هەوڵ بدەرەوە. -password_ok=باشە -password_cancel=پاشگەزبوونەوە -printing_not_supported=ئاگاداربە: چاپکردن بە تەواوی پشتگیر ناکرێت لەم وێبگەڕە. -printing_not_ready=ئاگاداربە: PDF بە تەواوی بارنەبووە بۆ چاپکردن. -web_fonts_disabled=جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfـەکە بەکاربێت. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cs/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cs/viewer.properties deleted file mode 100644 index a2e0612f179cb6e24a700c8cd8401840679f8c06..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cs/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Přejde na předchozí stránku -previous_label=Předchozí -next.title=Přejde na následující stránku -next_label=Další -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Stránka -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=z {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} z {{pagesCount}}) -zoom_out.title=Zmenší velikost -zoom_out_label=Zmenšit -zoom_in.title=Zvětší velikost -zoom_in_label=Zvětšit -zoom.title=Nastaví velikost -presentation_mode.title=Přepne do režimu prezentace -presentation_mode_label=Režim prezentace -open_file.title=Otevře soubor -open_file_label=Otevřít -print.title=Vytiskne dokument -print_label=Vytisknout -download.title=Stáhne dokument -download_label=Stáhnout -bookmark.title=Současný pohled (kopírovat nebo otevřít v novém okně) -bookmark_label=Současný pohled -# Secondary toolbar and context menu -tools.title=Nástroje -tools_label=Nástroje -first_page.title=Přejde na první stránku -first_page.label=Přejít na první stránku -first_page_label=Přejít na první stránku -last_page.title=Přejde na poslední stránku -last_page.label=Přejít na poslední stránku -last_page_label=Přejít na poslední stránku -page_rotate_cw.title=Otočí po směru hodin -page_rotate_cw.label=Otočit po směru hodin -page_rotate_cw_label=Otočit po směru hodin -page_rotate_ccw.title=Otočí proti směru hodin -page_rotate_ccw.label=Otočit proti směru hodin -page_rotate_ccw_label=Otočit proti směru hodin -cursor_text_select_tool.title=Povolí výběr textu -cursor_text_select_tool_label=Výběr textu -cursor_hand_tool.title=Povolí nástroj ručička -cursor_hand_tool_label=Nástroj ručička -scroll_vertical.title=Použít svislé posouvání -scroll_vertical_label=Svislé posouvání -scroll_horizontal.title=Použít vodorovné posouvání -scroll_horizontal_label=Vodorovné posouvání -scroll_wrapped.title=Použít postupné posouvání -scroll_wrapped_label=Postupné posouvání -spread_none.title=Nesdružovat stránky -spread_none_label=Žádné sdružení -spread_odd.title=Sdruží stránky s umístěním lichých vlevo -spread_odd_label=Sdružení stránek (liché vlevo) -spread_even.title=Sdruží stránky s umístěním sudých vlevo -spread_even_label=Sdružení stránek (sudé vlevo) -# Document properties dialog box -document_properties.title=Vlastnosti dokumentu… -document_properties_label=Vlastnosti dokumentu… -document_properties_file_name=Název souboru: -document_properties_file_size=Velikost souboru: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajtů) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtů) -document_properties_title=Název stránky: -document_properties_author=Autor: -document_properties_subject=Předmět: -document_properties_keywords=Klíčová slova: -document_properties_creation_date=Datum vytvoření: -document_properties_modification_date=Datum úpravy: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Vytvořil: -document_properties_producer=Tvůrce PDF: -document_properties_version=Verze PDF: -document_properties_page_count=Počet stránek: -document_properties_page_size=Velikost stránky: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=na výšku -document_properties_page_size_orientation_landscape=na šířku -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Dopis -document_properties_page_size_name_legal=Právní dokument -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Rychlé zobrazování z webu: -document_properties_linearized_yes=Ano -document_properties_linearized_no=Ne -document_properties_close=Zavřít -print_progress_message=Příprava dokumentu pro tisk… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}} % -print_progress_close=Zrušit -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Postranní lišta -toggle_sidebar_notification.title=Přepne postranní lištu (dokument obsahuje osnovu/přílohy) -toggle_sidebar_notification2.title=Přepnout postranní lištu (dokument obsahuje osnovu/přílohy/vrstvy) -toggle_sidebar_label=Postranní lišta -document_outline.title=Zobrazí osnovu dokumentu (dvojité klepnutí rozbalí/sbalí všechny položky) -document_outline_label=Osnova dokumentu -attachments.title=Zobrazí přílohy -attachments_label=Přílohy -layers.title=Zobrazit vrstvy (poklepáním obnovíte všechny vrstvy do výchozího stavu) -layers_label=Vrstvy -thumbs.title=Zobrazí náhledy -thumbs_label=Náhledy -current_outline_item.title=Najít aktuální položku v osnově -current_outline_item_label=Aktuální položka v osnově -findbar.title=Najde v dokumentu -findbar_label=Najít -additional_layers=Další vrstvy -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Strana {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strana {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Náhled strany {{page}} -# Find panel button title and messages -find_input.title=Najít -find_input.placeholder=Najít v dokumentu… -find_previous.title=Najde předchozí výskyt hledaného textu -find_previous_label=Předchozí -find_next.title=Najde další výskyt hledaného textu -find_next_label=Další -find_highlight=Zvýraznit -find_match_case_label=Rozlišovat velikost -find_entire_word_label=Celá slova -find_reached_top=Dosažen začátek dokumentu, pokračuje se od konce -find_reached_bottom=Dosažen konec dokumentu, pokračuje se od začátku -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}}. z {{total}} výskytu -find_match_count[two]={{current}}. z {{total}} výskytů -find_match_count[few]={{current}}. z {{total}} výskytů -find_match_count[many]={{current}}. z {{total}} výskytů -find_match_count[other]={{current}}. z {{total}} výskytů -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Více než {{limit}} výskytů -find_match_count_limit[one]=Více než {{limit}} výskyt -find_match_count_limit[two]=Více než {{limit}} výskyty -find_match_count_limit[few]=Více než {{limit}} výskyty -find_match_count_limit[many]=Více než {{limit}} výskytů -find_match_count_limit[other]=Více než {{limit}} výskytů -find_not_found=Hledaný text nenalezen -# Error panel labels -error_more_info=Více informací -error_less_info=Méně informací -error_close=Zavřít -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (sestavení: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Zpráva: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Zásobník: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Soubor: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Řádek: {{line}} -rendering_error=Při vykreslování stránky nastala chyba. -# Predefined zoom values -page_scale_width=Podle šířky -page_scale_fit=Podle výšky -page_scale_auto=Automatická velikost -page_scale_actual=Skutečná velikost -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % -# Loading indicator messages -loading_error=Při nahrávání PDF nastala chyba. -invalid_file_error=Neplatný nebo chybný soubor PDF. -missing_file_error=Chybí soubor PDF. -unexpected_response_error=Neočekávaná odpověď serveru. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotace typu {{type}}] -password_label=Pro otevření PDF souboru vložte heslo. -password_invalid=Neplatné heslo. Zkuste to znovu. -password_ok=OK -password_cancel=Zrušit -printing_not_supported=Upozornění: Tisk není v tomto prohlížeči plně podporován. -printing_not_ready=Upozornění: Dokument PDF není kompletně načten. -web_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cy/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cy/viewer.properties deleted file mode 100644 index c1d7e99f92857c2abc8a4c8b65acb7155fcb3537..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/cy/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Tudalen Flaenorol -previous_label=Blaenorol -next.title=Tudalen Nesaf -next_label=Nesaf -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Tudalen -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=o {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} o {{pagesCount}}) -zoom_out.title=Chwyddo Allan -zoom_out_label=Chwyddo Allan -zoom_in.title=Chwyddo Mewn -zoom_in_label=Chwyddo Mewn -zoom.title=Chwyddo -presentation_mode.title=Newid i'r Modd Cyflwyno -presentation_mode_label=Modd Cyflwyno -open_file.title=Agor Ffeil -open_file_label=Agor -print.title=Argraffu -print_label=Argraffu -download.title=Llwyth -download_label=Llwytho i Lawr -bookmark.title=Golwg cyfredol (copïo neu agor ffenestr newydd) -bookmark_label=Golwg Gyfredol -# Secondary toolbar and context menu -tools.title=Offer -tools_label=Offer -first_page.title=Mynd i'r Dudalen Gyntaf -first_page.label=Mynd i'r Dudalen Gyntaf -first_page_label=Mynd i'r Dudalen Gyntaf -last_page.title=Mynd i'r Dudalen Olaf -last_page.label=Mynd i'r Dudalen Olaf -last_page_label=Mynd i'r Dudalen Olaf -page_rotate_cw.title=Cylchdroi Clocwedd -page_rotate_cw.label=Cylchdroi Clocwedd -page_rotate_cw_label=Cylchdroi Clocwedd -page_rotate_ccw.title=Cylchdroi Gwrthglocwedd -page_rotate_ccw.label=Cylchdroi Gwrthglocwedd -page_rotate_ccw_label=Cylchdroi Gwrthglocwedd -cursor_text_select_tool.title=Galluogi Dewis Offeryn Testun -cursor_text_select_tool_label=Offeryn Dewis Testun -cursor_hand_tool.title=Galluogi Offeryn Llaw -cursor_hand_tool_label=Offeryn Llaw -scroll_vertical.title=Defnyddio Sgrolio Fertigol -scroll_vertical_label=Sgrolio Fertigol -scroll_horizontal.title=Defnyddio Sgrolio Fertigol -scroll_horizontal_label=Sgrolio Fertigol -scroll_wrapped.title=Defnyddio Sgrolio Amlapio -scroll_wrapped_label=Sgrolio Amlapio -spread_none.title=Peidio uno taeniadau canol -spread_none_label=Dim Taeniadau -spread_odd.title=Uno taeniadau tudalen yn cychwyn gyda thudalennau odrif -spread_odd_label=Taeniadau Odrifau -spread_even.title=Uno taeniadau tudalen yn cychwyn gyda thudalennau eilrif -spread_even_label=Taeniadau Eilrif -# Document properties dialog box -document_properties.title=Priodweddau Dogfen… -document_properties_label=Priodweddau Dogfen… -document_properties_file_name=Enw ffeil: -document_properties_file_size=Maint ffeil: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} beit) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} beit) -document_properties_title=Teitl: -document_properties_author=Awdur: -document_properties_subject=Pwnc: -document_properties_keywords=Allweddair: -document_properties_creation_date=Dyddiad Creu: -document_properties_modification_date=Dyddiad Addasu: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Crewr: -document_properties_producer=Cynhyrchydd PDF: -document_properties_version=Fersiwn PDF: -document_properties_page_count=Cyfrif Tudalen: -document_properties_page_size=Maint Tudalen: -document_properties_page_size_unit_inches=o fewn -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portread -document_properties_page_size_orientation_landscape=tirlun -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Llythyr -document_properties_page_size_name_legal=Cyfreithiol -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Golwg Gwe Cyflym: -document_properties_linearized_yes=Iawn -document_properties_linearized_no=Na -document_properties_close=Cau -print_progress_message=Paratoi dogfen ar gyfer ei hargraffu… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Diddymu -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toglo'r Bar Ochr -toggle_sidebar_notification.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys outline/attachments) -toggle_sidebar_notification2.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys amlinelliadau/atodiadau/haenau) -toggle_sidebar_label=Toglo'r Bar Ochr -document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem) -document_outline_label=Amlinelliad Dogfen -attachments.title=Dangos Atodiadau -attachments_label=Atodiadau -layers.title=Dangos Haenau (cliciwch ddwywaith i ailosod yr holl haenau i'r cyflwr rhagosodedig) -layers_label=Haenau -thumbs.title=Dangos Lluniau Bach -thumbs_label=Lluniau Bach -current_outline_item.title=Canfod yr Eitem Amlinellol Gyfredol -current_outline_item_label=Yr Eitem Amlinellol Gyfredol -findbar.title=Canfod yn y Ddogfen -findbar_label=Canfod -additional_layers=Haenau Ychwanegol -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Tudalen {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Tudalen {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Llun Bach Tudalen {{page}} -# Find panel button title and messages -find_input.title=Canfod -find_input.placeholder=Canfod yn y ddogfen… -find_previous.title=Canfod enghraifft flaenorol o'r ymadrodd -find_previous_label=Blaenorol -find_next.title=Canfod enghraifft nesaf yr ymadrodd -find_next_label=Nesaf -find_highlight=Amlygu popeth -find_match_case_label=Cydweddu maint -find_entire_word_label=Geiriau cyfan -find_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod -find_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} o {{total}} cydweddiad -find_match_count[two]={{current}} o {{total}} cydweddiad -find_match_count[few]={{current}} o {{total}} cydweddiad -find_match_count[many]={{current}} o {{total}} cydweddiad -find_match_count[other]={{current}} o {{total}} cydweddiad -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mwy na {{limit}} cydweddiad -find_match_count_limit[one]=Mwy na {{limit}} cydweddiad -find_match_count_limit[two]=Mwy na {{limit}} cydweddiad -find_match_count_limit[few]=Mwy na {{limit}} cydweddiad -find_match_count_limit[many]=Mwy na {{limit}} cydweddiad -find_match_count_limit[other]=Mwy na {{limit}} cydweddiad -find_not_found=Heb ganfod ymadrodd -# Error panel labels -error_more_info=Rhagor o Wybodaeth -error_less_info=Llai o wybodaeth -error_close=Cau -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Neges: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stac: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ffeil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Llinell: {{line}} -rendering_error=Digwyddodd gwall wrth adeiladu'r dudalen. -# Predefined zoom values -page_scale_width=Lled Tudalen -page_scale_fit=Ffit Tudalen -page_scale_auto=Chwyddo Awtomatig -page_scale_actual=Maint Gwirioneddol -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Digwyddodd gwall wrth lwytho'r PDF. -invalid_file_error=Ffeil PDF annilys neu llwgr. -missing_file_error=Ffeil PDF coll. -unexpected_response_error=Ymateb annisgwyl gan y gweinydd. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anodiad {{type}} ] -password_label=Rhowch gyfrinair i agor y PDF. -password_invalid=Cyfrinair annilys. Ceisiwch eto. -password_ok=Iawn -password_cancel=Diddymu -printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr. -printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu. -web_fonts_disabled=Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffontiau PDF mewnblanedig. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/da/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/da/viewer.properties deleted file mode 100644 index 7863d1968a46f04813eebcd2c3ea0df8efd8dd68..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/da/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Forrige side -previous_label=Forrige -next.title=Næste side -next_label=Næste -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Side -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=af {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} af {{pagesCount}}) -zoom_out.title=Zoom ud -zoom_out_label=Zoom ud -zoom_in.title=Zoom ind -zoom_in_label=Zoom ind -zoom.title=Zoom -presentation_mode.title=Skift til fuldskærmsvisning -presentation_mode_label=Fuldskærmsvisning -open_file.title=Åbn fil -open_file_label=Åbn -print.title=Udskriv -print_label=Udskriv -download.title=Hent -download_label=Hent -bookmark.title=Aktuel visning (kopier eller åbn i et nyt vindue) -bookmark_label=Aktuel visning -# Secondary toolbar and context menu -tools.title=Funktioner -tools_label=Funktioner -first_page.title=Gå til første side -first_page.label=Gå til første side -first_page_label=Gå til første side -last_page.title=Gå til sidste side -last_page.label=Gå til sidste side -last_page_label=Gå til sidste side -page_rotate_cw.title=Roter med uret -page_rotate_cw.label=Roter med uret -page_rotate_cw_label=Roter med uret -page_rotate_ccw.title=Roter mod uret -page_rotate_ccw.label=Roter mod uret -page_rotate_ccw_label=Roter mod uret -cursor_text_select_tool.title=Aktiver markeringsværktøj -cursor_text_select_tool_label=Markeringsværktøj -cursor_hand_tool.title=Aktiver håndværktøj -cursor_hand_tool_label=Håndværktøj -scroll_vertical.title=Brug vertikal scrolling -scroll_vertical_label=Vertikal scrolling -scroll_horizontal.title=Brug horisontal scrolling -scroll_horizontal_label=Horisontal scrolling -scroll_wrapped.title=Brug ombrudt scrolling -scroll_wrapped_label=Ombrudt scrolling -spread_none.title=Vis enkeltsider -spread_none_label=Enkeltsider -spread_odd.title=Vis opslag med ulige sidenumre til venstre -spread_odd_label=Opslag med forside -spread_even.title=Vis opslag med lige sidenumre til venstre -spread_even_label=Opslag uden forside -# Document properties dialog box -document_properties.title=Dokumentegenskaber… -document_properties_label=Dokumentegenskaber… -document_properties_file_name=Filnavn: -document_properties_file_size=Filstørrelse: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titel: -document_properties_author=Forfatter: -document_properties_subject=Emne: -document_properties_keywords=Nøgleord: -document_properties_creation_date=Oprettet: -document_properties_modification_date=Redigeret: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Program: -document_properties_producer=PDF-producent: -document_properties_version=PDF-version: -document_properties_page_count=Antal sider: -document_properties_page_size=Sidestørrelse: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=stående -document_properties_page_size_orientation_landscape=liggende -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Hurtig web-visning: -document_properties_linearized_yes=Ja -document_properties_linearized_no=Nej -document_properties_close=Luk -print_progress_message=Forbereder dokument til udskrivning… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Annuller -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Slå sidepanel til eller fra -toggle_sidebar_notification.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer) -toggle_sidebar_notification2.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer/lag) -toggle_sidebar_label=Slå sidepanel til eller fra -document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer) -document_outline_label=Dokument-disposition -attachments.title=Vis vedhæftede filer -attachments_label=Vedhæftede filer -layers.title=Vis lag (dobbeltklik for at nulstille alle lag til standard-tilstanden) -layers_label=Lag -thumbs.title=Vis miniaturer -thumbs_label=Miniaturer -current_outline_item.title=Find det aktuelle dispositions-element -current_outline_item_label=Aktuelt dispositions-element -findbar.title=Find i dokument -findbar_label=Find -additional_layers=Yderligere lag -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Side {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Side {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniature af side {{page}} -# Find panel button title and messages -find_input.title=Find -find_input.placeholder=Find i dokument… -find_previous.title=Find den forrige forekomst -find_previous_label=Forrige -find_next.title=Find den næste forekomst -find_next_label=Næste -find_highlight=Fremhæv alle -find_match_case_label=Forskel på store og små bogstaver -find_entire_word_label=Hele ord -find_reached_top=Toppen af siden blev nået, fortsatte fra bunden -find_reached_bottom=Bunden af siden blev nået, fortsatte fra toppen -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} af {{total}} forekomst -find_match_count[two]={{current}} af {{total}} forekomster -find_match_count[few]={{current}} af {{total}} forekomster -find_match_count[many]={{current}} af {{total}} forekomster -find_match_count[other]={{current}} af {{total}} forekomster -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mere end {{limit}} forekomster -find_match_count_limit[one]=Mere end {{limit}} forekomst -find_match_count_limit[two]=Mere end {{limit}} forekomster -find_match_count_limit[few]=Mere end {{limit}} forekomster -find_match_count_limit[many]=Mere end {{limit}} forekomster -find_match_count_limit[other]=Mere end {{limit}} forekomster -find_not_found=Der blev ikke fundet noget -# Error panel labels -error_more_info=Mere information -error_less_info=Mindre information -error_close=Luk -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Fejlmeddelelse: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linje: {{line}} -rendering_error=Der opstod en fejl ved generering af siden. -# Predefined zoom values -page_scale_width=Sidebredde -page_scale_fit=Tilpas til side -page_scale_auto=Automatisk zoom -page_scale_actual=Faktisk størrelse -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Der opstod en fejl ved indlæsning af PDF-filen. -invalid_file_error=PDF-filen er ugyldig eller ødelagt. -missing_file_error=Manglende PDF-fil. -unexpected_response_error=Uventet svar fra serveren. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}kommentar] -password_label=Angiv adgangskode til at åbne denne PDF-fil. -password_invalid=Ugyldig adgangskode. Prøv igen. -password_ok=OK -password_cancel=Fortryd -printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren. -printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning. -web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/de/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/de/viewer.properties deleted file mode 100644 index bd198e2ddff1f91aebe699b980137380ad827700..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/de/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Eine Seite zurück -previous_label=Zurück -next.title=Eine Seite vor -next_label=Vor -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Seite -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=von {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} von {{pagesCount}}) -zoom_out.title=Verkleinern -zoom_out_label=Verkleinern -zoom_in.title=Vergrößern -zoom_in_label=Vergrößern -zoom.title=Zoom -presentation_mode.title=In Präsentationsmodus wechseln -presentation_mode_label=Präsentationsmodus -open_file.title=Datei öffnen -open_file_label=Öffnen -print.title=Drucken -print_label=Drucken -download.title=Dokument speichern -download_label=Speichern -bookmark.title=Aktuelle Ansicht (zum Kopieren oder Öffnen in einem neuen Fenster) -bookmark_label=Aktuelle Ansicht -# Secondary toolbar and context menu -tools.title=Werkzeuge -tools_label=Werkzeuge -first_page.title=Erste Seite anzeigen -first_page.label=Erste Seite anzeigen -first_page_label=Erste Seite anzeigen -last_page.title=Letzte Seite anzeigen -last_page.label=Letzte Seite anzeigen -last_page_label=Letzte Seite anzeigen -page_rotate_cw.title=Im Uhrzeigersinn drehen -page_rotate_cw.label=Im Uhrzeigersinn drehen -page_rotate_cw_label=Im Uhrzeigersinn drehen -page_rotate_ccw.title=Gegen Uhrzeigersinn drehen -page_rotate_ccw.label=Gegen Uhrzeigersinn drehen -page_rotate_ccw_label=Gegen Uhrzeigersinn drehen -cursor_text_select_tool.title=Textauswahl-Werkzeug aktivieren -cursor_text_select_tool_label=Textauswahl-Werkzeug -cursor_hand_tool.title=Hand-Werkzeug aktivieren -cursor_hand_tool_label=Hand-Werkzeug -scroll_vertical.title=Seiten übereinander anordnen -scroll_vertical_label=Vertikale Seitenanordnung -scroll_horizontal.title=Seiten nebeneinander anordnen -scroll_horizontal_label=Horizontale Seitenanordnung -scroll_wrapped.title=Seiten neben- und übereinander anordnen, anhängig vom Platz -scroll_wrapped_label=Kombinierte Seitenanordnung -spread_none.title=Seiten nicht nebeneinander anzeigen -spread_none_label=Einzelne Seiten -spread_odd.title=Jeweils eine ungerade und eine gerade Seite nebeneinander anzeigen -spread_odd_label=Ungerade + gerade Seite -spread_even.title=Jeweils eine gerade und eine ungerade Seite nebeneinander anzeigen -spread_even_label=Gerade + ungerade Seite -# Document properties dialog box -document_properties.title=Dokumenteigenschaften -document_properties_label=Dokumenteigenschaften… -document_properties_file_name=Dateiname: -document_properties_file_size=Dateigröße: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} Bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} Bytes) -document_properties_title=Titel: -document_properties_author=Autor: -document_properties_subject=Thema: -document_properties_keywords=Stichwörter: -document_properties_creation_date=Erstelldatum: -document_properties_modification_date=Bearbeitungsdatum: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}} {{time}} -document_properties_creator=Anwendung: -document_properties_producer=PDF erstellt mit: -document_properties_version=PDF-Version: -document_properties_page_count=Seitenzahl: -document_properties_page_size=Seitengröße: -document_properties_page_size_unit_inches=Zoll -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=Hochformat -document_properties_page_size_orientation_landscape=Querformat -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Schnelle Webanzeige: -document_properties_linearized_yes=Ja -document_properties_linearized_no=Nein -document_properties_close=Schließen -print_progress_message=Dokument wird für Drucken vorbereitet… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}} % -print_progress_close=Abbrechen -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Sidebar umschalten -toggle_sidebar_notification.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge) -toggle_sidebar_notification2.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge/Ebenen) -toggle_sidebar_label=Sidebar umschalten -document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen) -document_outline_label=Dokumentstruktur -attachments.title=Anhänge anzeigen -attachments_label=Anhänge -layers.title=Ebenen anzeigen (Doppelklicken, um alle Ebenen auf den Standardzustand zurückzusetzen) -layers_label=Ebenen -thumbs.title=Miniaturansichten anzeigen -thumbs_label=Miniaturansichten -current_outline_item.title=Aktuelles Struktur-Element finden -current_outline_item_label=Aktuelles Struktur-Element -findbar.title=Dokument durchsuchen -findbar_label=Suchen -additional_layers=Zusätzliche Ebenen -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Seite {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Seite {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniaturansicht von Seite {{page}} -# Find panel button title and messages -find_input.title=Suchen -find_input.placeholder=Im Dokument suchen… -find_previous.title=Vorheriges Vorkommen des Suchbegriffs finden -find_previous_label=Zurück -find_next.title=Nächstes Vorkommen des Suchbegriffs finden -find_next_label=Weiter -find_highlight=Alle hervorheben -find_match_case_label=Groß-/Kleinschreibung beachten -find_entire_word_label=Ganze Wörter -find_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort -find_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} von {{total}} Übereinstimmung -find_match_count[two]={{current}} von {{total}} Übereinstimmungen -find_match_count[few]={{current}} von {{total}} Übereinstimmungen -find_match_count[many]={{current}} von {{total}} Übereinstimmungen -find_match_count[other]={{current}} von {{total}} Übereinstimmungen -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mehr als {{limit}} Übereinstimmungen -find_match_count_limit[one]=Mehr als {{limit}} Übereinstimmung -find_match_count_limit[two]=Mehr als {{limit}} Übereinstimmungen -find_match_count_limit[few]=Mehr als {{limit}} Übereinstimmungen -find_match_count_limit[many]=Mehr als {{limit}} Übereinstimmungen -find_match_count_limit[other]=Mehr als {{limit}} Übereinstimmungen -find_not_found=Suchbegriff nicht gefunden -# Error panel labels -error_more_info=Mehr Informationen -error_less_info=Weniger Informationen -error_close=Schließen -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js Version {{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Nachricht: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Aufrufliste: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Datei: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Zeile: {{line}} -rendering_error=Beim Darstellen der Seite trat ein Fehler auf. -# Predefined zoom values -page_scale_width=Seitenbreite -page_scale_fit=Seitengröße -page_scale_auto=Automatischer Zoom -page_scale_actual=Originalgröße -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % -# Loading indicator messages -loading_error=Beim Laden der PDF-Datei trat ein Fehler auf. -invalid_file_error=Ungültige oder beschädigte PDF-Datei -missing_file_error=Fehlende PDF-Datei -unexpected_response_error=Unerwartete Antwort des Servers -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anlage: {{type}}] -password_label=Geben Sie zum Öffnen der PDF-Datei deren Passwort ein. -password_invalid=Falsches Passwort. Bitte versuchen Sie es erneut. -password_ok=OK -password_cancel=Abbrechen -printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt. -printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen. -web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/dsb/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/dsb/viewer.properties deleted file mode 100644 index 6029516a126fee6bb4f6415d905cb01f51c89090..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/dsb/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pjerwjejšny bok -previous_label=Slědk -next.title=Pśiducy bok -next_label=Dalej -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Bok -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=z {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} z {{pagesCount}}) -zoom_out.title=Pómjeńšyś -zoom_out_label=Pómjeńšyś -zoom_in.title=Pówětšyś -zoom_in_label=Pówětšyś -zoom.title=Skalěrowanje -presentation_mode.title=Do prezentaciskego modusa pśejś -presentation_mode_label=Prezentaciski modus -open_file.title=Dataju wócyniś -open_file_label=Wócyniś -print.title=Śišćaś -print_label=Śišćaś -download.title=Ześěgnuś -download_label=Ześěgnuś -bookmark.title=Aktualny naglěd (kopěrowaś abo w nowem woknje wócyniś) -bookmark_label=Aktualny naglěd -# Secondary toolbar and context menu -tools.title=Rědy -tools_label=Rědy -first_page.title=K prědnemu bokoju -first_page.label=K prědnemu bokoju -first_page_label=K prědnemu bokoju -last_page.title=K slědnemu bokoju -last_page.label=K slědnemu bokoju -last_page_label=K slědnemu bokoju -page_rotate_cw.title=Wobwjertnuś ako špěra źo -page_rotate_cw.label=Wobwjertnuś ako špěra źo -page_rotate_cw_label=Wobwjertnuś ako špěra źo -page_rotate_ccw.title=Wobwjertnuś nawopaki ako špěra źo -page_rotate_ccw.label=Wobwjertnuś nawopaki ako špěra źo -page_rotate_ccw_label=Wobwjertnuś nawopaki ako špěra źo -cursor_text_select_tool.title=Rěd za wuběranje teksta zmóžniś -cursor_text_select_tool_label=Rěd za wuběranje teksta -cursor_hand_tool.title=Rucny rěd zmóžniś -cursor_hand_tool_label=Rucny rěd -scroll_vertical.title=Wertikalne suwanje wužywaś -scroll_vertical_label=Wertikalnje suwanje -scroll_horizontal.title=Horicontalne suwanje wužywaś -scroll_horizontal_label=Horicontalne suwanje -scroll_wrapped.title=Pózlažke suwanje wužywaś -scroll_wrapped_label=Pózlažke suwanje -spread_none.title=Boki njezwězaś -spread_none_label=Žeden dwójny bok -spread_odd.title=Boki zachopinajucy z njerownymi bokami zwězaś -spread_odd_label=Njerowne boki -spread_even.title=Boki zachopinajucy z rownymi bokami zwězaś -spread_even_label=Rowne boki -# Document properties dialog box -document_properties.title=Dokumentowe kakosći… -document_properties_label=Dokumentowe kakosći… -document_properties_file_name=Mě dataje: -document_properties_file_size=Wjelikosć dataje: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajtow) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtow) -document_properties_title=Titel: -document_properties_author=Awtor: -document_properties_subject=Tema: -document_properties_keywords=Klucowe słowa: -document_properties_creation_date=Datum napóranja: -document_properties_modification_date=Datum změny: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Awtor: -document_properties_producer=PDF-gótowaŕ: -document_properties_version=PDF-wersija: -document_properties_page_count=Licba bokow: -document_properties_page_size=Wjelikosć boka: -document_properties_page_size_unit_inches=col -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=wusoki format -document_properties_page_size_orientation_landscape=prěcny format -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Jo -document_properties_linearized_no=Ně -document_properties_close=Zacyniś -print_progress_message=Dokument pśigótujo se za śišćanje… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Pśetergnuś -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Bócnicu pokazaś/schowaś -toggle_sidebar_notification.title=Bocnicu pśešaltowaś (dokument wopśimujo pśeglěd/pśipiski) -toggle_sidebar_notification2.title=Bocnicu pśešaltowaś (dokument rozrědowanje/pśipiski/warstwy wopśimujo) -toggle_sidebar_label=Bócnicu pokazaś/schowaś -document_outline.title=Dokumentowe naraźenje pokazaś (dwójne kliknjenje, aby se wšykne zapiski pokazali/schowali) -document_outline_label=Dokumentowa struktura -attachments.title=Pśidanki pokazaś -attachments_label=Pśidanki -layers.title=Warstwy pokazaś (klikniśo dwójcy, aby wšykne warstwy na standardny staw slědk stajił) -layers_label=Warstwy -thumbs.title=Miniatury pokazaś -thumbs_label=Miniatury -current_outline_item.title=Aktualny rozrědowański zapisk pytaś -current_outline_item_label=Aktualny rozrědowański zapisk -findbar.title=W dokumenśe pytaś -findbar_label=Pytaś -additional_layers=Dalšne warstwy -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Bok {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Bok {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura boka {{page}} -# Find panel button title and messages -find_input.title=Pytaś -find_input.placeholder=W dokumenśe pytaś… -find_previous.title=Pjerwjejšne wustupowanje pytańskego wuraza pytaś -find_previous_label=Slědk -find_next.title=Pśidujuce wustupowanje pytańskego wuraza pytaś -find_next_label=Dalej -find_highlight=Wšykne wuzwignuś -find_match_case_label=Na wjelikopisanje źiwaś -find_entire_word_label=Cełe słowa -find_reached_top=Zachopjeńk dokumenta dostany, pókšacujo se z kóńcom -find_reached_bottom=Kóńc dokumenta dostany, pókšacujo se ze zachopjeńkom -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} z {{total}} wótpowědnika -find_match_count[two]={{current}} z {{total}} wótpowědnikowu -find_match_count[few]={{current}} z {{total}} wótpowědnikow -find_match_count[many]={{current}} z {{total}} wótpowědnikow -find_match_count[other]={{current}} z {{total}} wótpowědnikow -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Wěcej ako {{limit}} wótpowědnikow -find_match_count_limit[one]=Wěcej ako {{limit}} wótpowědnik -find_match_count_limit[two]=Wěcej ako {{limit}} wótpowědnika -find_match_count_limit[few]=Wěcej ako {{limit}} wótpowědniki -find_match_count_limit[many]=Wěcej ako {{limit}} wótpowědnikow -find_match_count_limit[other]=Wěcej ako {{limit}} wótpowědnikow -find_not_found=Pytański wuraz njejo se namakał -# Error panel labels -error_more_info=Wěcej informacijow -error_less_info=Mjenjej informacijow -error_close=Zacyniś -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Powěźenka: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Lisćina zawołanjow: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dataja: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Smužka: {{line}} -rendering_error=Pśi zwobraznjanju boka jo zmólka nastała. -# Predefined zoom values -page_scale_width=Šyrokosć boka -page_scale_fit=Wjelikosć boka -page_scale_auto=Awtomatiske skalěrowanje -page_scale_actual=Aktualna wjelikosć -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Pśi zacytowanju PDF jo zmólka nastała. -invalid_file_error=Njepłaśiwa abo wobškóźona PDF-dataja. -missing_file_error=Felujuca PDF-dataja. -unexpected_response_error=Njewócakane serwerowe wótegrono. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Typ pśipiskow: {{type}}] -password_label=Zapódajśo gronidło, aby PDF-dataju wócynił. -password_invalid=Njepłaśiwe gronidło. Pšosym wopytajśo hyšći raz. -password_ok=W pórěźe -password_cancel=Pśetergnuś -printing_not_supported=Warnowanje: Śišćanje njepódpěra se połnje pśez toś ten wobglědowak. -printing_not_ready=Warnowanje: PDF njejo se za śišćanje dopołnje zacytał. -web_fonts_disabled=Webpisma su znjemóžnjone: njejo móžno, zasajźone PDF-pisma wužywaś. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/el/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/el/viewer.properties deleted file mode 100644 index 8ce5d9d600d3a1f17f7d13b4ca275483c2dfc61d..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/el/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Προηγούμενη σελίδα -previous_label=Προηγούμενη -next.title=Επόμενη σελίδα -next_label=Επόμενη -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Σελίδα -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=από {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} από {{pagesCount}}) -zoom_out.title=Σμίκρυνση -zoom_out_label=Σμίκρυνση -zoom_in.title=Μεγέθυνση -zoom_in_label=Μεγέθυνση -zoom.title=Ζουμ -presentation_mode.title=Εναλλαγή σε λειτουργία παρουσίασης -presentation_mode_label=Λειτουργία παρουσίασης -open_file.title=Άνοιγμα αρχείου -open_file_label=Άνοιγμα -print.title=Εκτύπωση -print_label=Εκτύπωση -download.title=Λήψη -download_label=Λήψη -bookmark.title=Τρέχουσα προβολή (αντιγραφή ή άνοιγμα σε νέο παράθυρο) -bookmark_label=Τρέχουσα προβολή -# Secondary toolbar and context menu -tools.title=Εργαλεία -tools_label=Εργαλεία -first_page.title=Μετάβαση στην πρώτη σελίδα -first_page.label=Μετάβαση στην πρώτη σελίδα -first_page_label=Μετάβαση στην πρώτη σελίδα -last_page.title=Μετάβαση στην τελευταία σελίδα -last_page.label=Μετάβαση στην τελευταία σελίδα -last_page_label=Μετάβαση στην τελευταία σελίδα -page_rotate_cw.title=Δεξιόστροφη περιστροφή -page_rotate_cw.label=Δεξιόστροφη περιστροφή -page_rotate_cw_label=Δεξιόστροφη περιστροφή -page_rotate_ccw.title=Αριστερόστροφη περιστροφή -page_rotate_ccw.label=Αριστερόστροφη περιστροφή -page_rotate_ccw_label=Αριστερόστροφη περιστροφή -cursor_text_select_tool.title=Ενεργοποίηση εργαλείου επιλογής κειμένου -cursor_text_select_tool_label=Εργαλείο επιλογής κειμένου -cursor_hand_tool.title=Ενεργοποίηση εργαλείου χεριού -cursor_hand_tool_label=Εργαλείο χεριού -scroll_vertical.title=Χρήση κάθετης κύλισης -scroll_vertical_label=Κάθετη κύλιση -scroll_horizontal.title=Χρήση οριζόντιας κύλισης -scroll_horizontal_label=Οριζόντια κύλιση -scroll_wrapped.title=Χρήση κυκλικής κύλισης -scroll_wrapped_label=Κυκλική κύλιση -spread_none.title=Να μην γίνει σύνδεση επεκτάσεων σελίδων -spread_none_label=Χωρίς επεκτάσεις -spread_odd.title=Σύνδεση επεκτάσεων σελίδων ξεκινώντας από τις μονές σελίδες -spread_odd_label=Μονές επεκτάσεις -spread_even.title=Σύνδεση επεκτάσεων σελίδων ξεκινώντας από τις ζυγές σελίδες -spread_even_label=Ζυγές επεκτάσεις -# Document properties dialog box -document_properties.title=Ιδιότητες εγγράφου… -document_properties_label=Ιδιότητες εγγράφου… -document_properties_file_name=Όνομα αρχείου: -document_properties_file_size=Μέγεθος αρχείου: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Τίτλος: -document_properties_author=Συγγραφέας: -document_properties_subject=Θέμα: -document_properties_keywords=Λέξεις κλειδιά: -document_properties_creation_date=Ημερομηνία δημιουργίας: -document_properties_modification_date=Ημερομηνία τροποποίησης: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Δημιουργός: -document_properties_producer=Παραγωγός PDF: -document_properties_version=Έκδοση PDF: -document_properties_page_count=Αριθμός σελίδων: -document_properties_page_size=Μέγεθος σελίδας: -document_properties_page_size_unit_inches=ίντσες -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=κατακόρυφα -document_properties_page_size_orientation_landscape=οριζόντια -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Επιστολή -document_properties_page_size_name_legal=Τύπου Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Ταχεία προβολή ιστού: -document_properties_linearized_yes=Ναι -document_properties_linearized_no=Όχι -document_properties_close=Κλείσιμο -print_progress_message=Προετοιμασία του εγγράφου για εκτύπωση… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Ακύρωση -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=(Απ)ενεργοποίηση πλευρικής στήλης -toggle_sidebar_notification.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει περίγραμμα/συνημμένα) -toggle_sidebar_notification2.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει περίγραμμα/συνημμένα/επίπεδα) -toggle_sidebar_label=(Απ)ενεργοποίηση πλευρικής στήλης -document_outline.title=Εμφάνιση διάρθρωσης εγγράφου (διπλό κλικ για ανάπτυξη/σύμπτυξη όλων των στοιχείων) -document_outline_label=Διάρθρωση εγγράφου -attachments.title=Προβολή συνημμένων -attachments_label=Συνημμένα -layers.title=Εμφάνιση επιπέδων (διπλό κλικ για επαναφορά όλων των επιπέδων στην προεπιλεγμένη κατάσταση) -layers_label=Επίπεδα -thumbs.title=Προβολή μικρογραφιών -thumbs_label=Μικρογραφίες -current_outline_item.title=Εύρεση τρέχοντος στοιχείου διάρθρωσης -current_outline_item_label=Τρέχον στοιχείο διάρθρωσης -findbar.title=Εύρεση στο έγγραφο -findbar_label=Εύρεση -additional_layers=Επιπρόσθετα επίπεδα -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Σελίδα {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Σελίδα {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Μικρογραφία της σελίδας {{page}} -# Find panel button title and messages -find_input.title=Εύρεση -find_input.placeholder=Εύρεση στο έγγραφο… -find_previous.title=Εύρεση της προηγούμενης εμφάνισης της φράσης -find_previous_label=Προηγούμενο -find_next.title=Εύρεση της επόμενης εμφάνισης της φράσης -find_next_label=Επόμενο -find_highlight=Επισήμανση όλων -find_match_case_label=Ταίριασμα χαρακτήρα -find_entire_word_label=Ολόκληρες λέξεις -find_reached_top=Έλευση στην αρχή του εγγράφου, συνέχεια από το τέλος -find_reached_bottom=Έλευση στο τέλος του εγγράφου, συνέχεια από την αρχή -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} από {{total}} αντιστοιχία -find_match_count[two]={{current}} από {{total}} αντιστοιχίες -find_match_count[few]={{current}} από {{total}} αντιστοιχίες -find_match_count[many]={{current}} από {{total}} αντιστοιχίες -find_match_count[other]={{current}} από {{total}} αντιστοιχίες -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Περισσότερες από {{limit}} αντιστοιχίες -find_match_count_limit[one]=Περισσότερες από {{limit}} αντιστοιχία -find_match_count_limit[two]=Περισσότερες από {{limit}} αντιστοιχίες -find_match_count_limit[few]=Περισσότερες από {{limit}} αντιστοιχίες -find_match_count_limit[many]=Περισσότερες από {{limit}} αντιστοιχίες -find_match_count_limit[other]=Περισσότερες από {{limit}} αντιστοιχίες -find_not_found=Η φράση δεν βρέθηκε -# Error panel labels -error_more_info=Περισσότερες πληροφορίες -error_less_info=Λιγότερες πληροφορίες -error_close=Κλείσιμο -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Μήνυμα: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Στοίβα: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Αρχείο: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Γραμμή: {{line}} -rendering_error=Προέκυψε σφάλμα κατά την ανάλυση της σελίδας. -# Predefined zoom values -page_scale_width=Πλάτος σελίδας -page_scale_fit=Μέγεθος σελίδας -page_scale_auto=Αυτόματο ζουμ -page_scale_actual=Πραγματικό μέγεθος -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Προέκυψε ένα σφάλμα κατά τη φόρτωση του PDF. -invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF. -missing_file_error=Λείπει αρχείο PDF. -unexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Σχόλιο] -password_label=Εισαγωγή κωδικού για το άνοιγμα του PDF αρχείου. -password_invalid=Μη έγκυρος κωδικός. Προσπαθείστε ξανά. -password_ok=OK -password_cancel=Ακύρωση -printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από αυτόν τον περιηγητή. -printing_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση. -web_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-CA/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-CA/viewer.properties deleted file mode 100644 index ccd8a14c15772784fa7dd6315c5096cca27b8be0..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-CA/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Previous Page -previous_label=Previous -next.title=Next Page -next_label=Next -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Page -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=of {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} of {{pagesCount}}) -zoom_out.title=Zoom Out -zoom_out_label=Zoom Out -zoom_in.title=Zoom In -zoom_in_label=Zoom In -zoom.title=Zoom -presentation_mode.title=Switch to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Open File -open_file_label=Open -print.title=Print -print_label=Print -download.title=Download -download_label=Download -bookmark.title=Current view (copy or open in new window) -bookmark_label=Current View -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Go to First Page -first_page.label=Go to First Page -first_page_label=Go to First Page -last_page.title=Go to Last Page -last_page.label=Go to Last Page -last_page_label=Go to Last Page -page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise -page_rotate_cw_label=Rotate Clockwise -page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw.label=Rotate Counterclockwise -page_rotate_ccw_label=Rotate Counterclockwise -cursor_text_select_tool.title=Enable Text Selection Tool -cursor_text_select_tool_label=Text Selection Tool -cursor_hand_tool.title=Enable Hand Tool -cursor_hand_tool_label=Hand Tool -scroll_vertical.title=Use Vertical Scrolling -scroll_vertical_label=Vertical Scrolling -scroll_horizontal.title=Use Horizontal Scrolling -scroll_horizontal_label=Horizontal Scrolling -scroll_wrapped.title=Use Wrapped Scrolling -scroll_wrapped_label=Wrapped Scrolling -spread_none.title=Do not join page spreads -spread_none_label=No Spreads -spread_odd.title=Join page spreads starting with odd-numbered pages -spread_odd_label=Odd Spreads -spread_even.title=Join page spreads starting with even-numbered pages -spread_even_label=Even Spreads -# Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… -document_properties_file_name=File name: -document_properties_file_size=File size: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Title: -document_properties_author=Author: -document_properties_subject=Subject: -document_properties_keywords=Keywords: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: -document_properties_producer=PDF Producer: -document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_page_size=Page Size: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portrait -document_properties_page_size_orientation_landscape=landscape -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Yes -document_properties_linearized_no=No -document_properties_close=Close -print_progress_message=Preparing document for printing… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancel -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) -toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) -toggle_sidebar_label=Toggle Sidebar -document_outline.title=Show Document Outline (double-click to expand/collapse all items) -document_outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -layers.title=Show Layers (double-click to reset all layers to the default state) -layers_label=Layers -thumbs.title=Show Thumbnails -thumbs_label=Thumbnails -current_outline_item.title=Find Current Outline Item -current_outline_item_label=Current Outline Item -findbar.title=Find in Document -findbar_label=Find -additional_layers=Additional Layers -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Page {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail of Page {{page}} -# Find panel button title and messages -find_input.title=Find -find_input.placeholder=Find in document… -find_previous.title=Find the previous occurrence of the phrase -find_previous_label=Previous -find_next.title=Find the next occurrence of the phrase -find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} of {{total}} match -find_match_count[two]={{current}} of {{total}} matches -find_match_count[few]={{current}} of {{total}} matches -find_match_count[many]={{current}} of {{total}} matches -find_match_count[other]={{current}} of {{total}} matches -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=More than {{limit}} matches -find_match_count_limit[one]=More than {{limit}} match -find_match_count_limit[two]=More than {{limit}} matches -find_match_count_limit[few]=More than {{limit}} matches -find_match_count_limit[many]=More than {{limit}} matches -find_match_count_limit[other]=More than {{limit}} matches -find_not_found=Phrase not found -# Error panel labels -error_more_info=More Information -error_less_info=Less Information -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. -# Predefined zoom values -page_scale_width=Page Width -page_scale_fit=Page Fit -page_scale_auto=Automatic Zoom -page_scale_actual=Actual Size -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=An error occurred while loading the PDF. -invalid_file_error=Invalid or corrupted PDF file. -missing_file_error=Missing PDF file. -unexpected_response_error=Unexpected server response. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Enter the password to open this PDF file. -password_invalid=Invalid password. Please try again. -password_ok=OK -password_cancel=Cancel -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-GB/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-GB/viewer.properties deleted file mode 100644 index f162d324af21079ae92087dd6aed18fc0349df59..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-GB/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Previous Page -previous_label=Previous -next.title=Next Page -next_label=Next -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Page -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=of {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} of {{pagesCount}}) -zoom_out.title=Zoom Out -zoom_out_label=Zoom Out -zoom_in.title=Zoom In -zoom_in_label=Zoom In -zoom.title=Zoom -presentation_mode.title=Switch to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Open File -open_file_label=Open -print.title=Print -print_label=Print -download.title=Download -download_label=Download -bookmark.title=Current view (copy or open in new window) -bookmark_label=Current View -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Go to First Page -first_page.label=Go to First Page -first_page_label=Go to First Page -last_page.title=Go to Last Page -last_page.label=Go to Last Page -last_page_label=Go to Last Page -page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise -page_rotate_cw_label=Rotate Clockwise -page_rotate_ccw.title=Rotate Anti-Clockwise -page_rotate_ccw.label=Rotate Anti-Clockwise -page_rotate_ccw_label=Rotate Anti-Clockwise -cursor_text_select_tool.title=Enable Text Selection Tool -cursor_text_select_tool_label=Text Selection Tool -cursor_hand_tool.title=Enable Hand Tool -cursor_hand_tool_label=Hand Tool -scroll_vertical.title=Use Vertical Scrolling -scroll_vertical_label=Vertical Scrolling -scroll_horizontal.title=Use Horizontal Scrolling -scroll_horizontal_label=Horizontal Scrolling -scroll_wrapped.title=Use Wrapped Scrolling -scroll_wrapped_label=Wrapped Scrolling -spread_none.title=Do not join page spreads -spread_none_label=No Spreads -spread_odd.title=Join page spreads starting with odd-numbered pages -spread_odd_label=Odd Spreads -spread_even.title=Join page spreads starting with even-numbered pages -spread_even_label=Even Spreads -# Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… -document_properties_file_name=File name: -document_properties_file_size=File size: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Title: -document_properties_author=Author: -document_properties_subject=Subject: -document_properties_keywords=Keywords: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: -document_properties_producer=PDF Producer: -document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_page_size=Page Size: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portrait -document_properties_page_size_orientation_landscape=landscape -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Yes -document_properties_linearized_no=No -document_properties_close=Close -print_progress_message=Preparing document for printing… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancel -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) -toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) -toggle_sidebar_label=Toggle Sidebar -document_outline.title=Show Document Outline (double-click to expand/collapse all items) -document_outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -layers.title=Show Layers (double-click to reset all layers to the default state) -layers_label=Layers -thumbs.title=Show Thumbnails -thumbs_label=Thumbnails -current_outline_item.title=Find Current Outline Item -current_outline_item_label=Current Outline Item -findbar.title=Find in Document -findbar_label=Find -additional_layers=Additional Layers -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Page {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail of Page {{page}} -# Find panel button title and messages -find_input.title=Find -find_input.placeholder=Find in document… -find_previous.title=Find the previous occurrence of the phrase -find_previous_label=Previous -find_next.title=Find the next occurrence of the phrase -find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} of {{total}} match -find_match_count[two]={{current}} of {{total}} matches -find_match_count[few]={{current}} of {{total}} matches -find_match_count[many]={{current}} of {{total}} matches -find_match_count[other]={{current}} of {{total}} matches -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=More than {{limit}} matches -find_match_count_limit[one]=More than {{limit}} match -find_match_count_limit[two]=More than {{limit}} matches -find_match_count_limit[few]=More than {{limit}} matches -find_match_count_limit[many]=More than {{limit}} matches -find_match_count_limit[other]=More than {{limit}} matches -find_not_found=Phrase not found -# Error panel labels -error_more_info=More Information -error_less_info=Less Information -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. -# Predefined zoom values -page_scale_width=Page Width -page_scale_fit=Page Fit -page_scale_auto=Automatic Zoom -page_scale_actual=Actual Size -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=An error occurred while loading the PDF. -invalid_file_error=Invalid or corrupted PDF file. -missing_file_error=Missing PDF file. -unexpected_response_error=Unexpected server response. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Enter the password to open this PDF file. -password_invalid=Invalid password. Please try again. -password_ok=OK -password_cancel=Cancel -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-US/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-US/viewer.properties deleted file mode 100644 index e83b33920fe0e6c816bf2a8d00ab11c9e9e21813..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/en-US/viewer.properties +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Previous Page -previous_label=Previous -next.title=Next Page -next_label=Next -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Page -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=of {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} of {{pagesCount}}) -zoom_out.title=Zoom Out -zoom_out_label=Zoom Out -zoom_in.title=Zoom In -zoom_in_label=Zoom In -zoom.title=Zoom -presentation_mode.title=Switch to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Open File -open_file_label=Open -print.title=Print -print_label=Print -download.title=Download -download_label=Download -bookmark.title=Current view (copy or open in new window) -bookmark_label=Current View -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Go to First Page -first_page_label=Go to First Page -last_page.title=Go to Last Page -last_page_label=Go to Last Page -page_rotate_cw.title=Rotate Clockwise -page_rotate_cw_label=Rotate Clockwise -page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw_label=Rotate Counterclockwise -cursor_text_select_tool.title=Enable Text Selection Tool -cursor_text_select_tool_label=Text Selection Tool -cursor_hand_tool.title=Enable Hand Tool -cursor_hand_tool_label=Hand Tool -scroll_vertical.title=Use Vertical Scrolling -scroll_vertical_label=Vertical Scrolling -scroll_horizontal.title=Use Horizontal Scrolling -scroll_horizontal_label=Horizontal Scrolling -scroll_wrapped.title=Use Wrapped Scrolling -scroll_wrapped_label=Wrapped Scrolling -spread_none.title=Do not join page spreads -spread_none_label=No Spreads -spread_odd.title=Join page spreads starting with odd-numbered pages -spread_odd_label=Odd Spreads -spread_even.title=Join page spreads starting with even-numbered pages -spread_even_label=Even Spreads -# Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… -document_properties_file_name=File name: -document_properties_file_size=File size: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Title: -document_properties_author=Author: -document_properties_subject=Subject: -document_properties_keywords=Keywords: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: -document_properties_producer=PDF Producer: -document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_page_size=Page Size: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portrait -document_properties_page_size_orientation_landscape=landscape -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Yes -document_properties_linearized_no=No -document_properties_close=Close -print_progress_message=Preparing document for printing… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancel -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) -toggle_sidebar_label=Toggle Sidebar -document_outline.title=Show Document Outline (double-click to expand/collapse all items) -document_outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -layers.title=Show Layers (double-click to reset all layers to the default state) -layers_label=Layers -thumbs.title=Show Thumbnails -thumbs_label=Thumbnails -current_outline_item.title=Find Current Outline Item -current_outline_item_label=Current Outline Item -findbar.title=Find in Document -findbar_label=Find -additional_layers=Additional Layers -# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. -page_landmark=Page {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail of Page {{page}} -# Find panel button title and messages -find_input.title=Find -find_input.placeholder=Find in document… -find_previous.title=Find the previous occurrence of the phrase -find_previous_label=Previous -find_next.title=Find the next occurrence of the phrase -find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} of {{total}} match -find_match_count[two]={{current}} of {{total}} matches -find_match_count[few]={{current}} of {{total}} matches -find_match_count[many]={{current}} of {{total}} matches -find_match_count[other]={{current}} of {{total}} matches -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=More than {{limit}} matches -find_match_count_limit[one]=More than {{limit}} match -find_match_count_limit[two]=More than {{limit}} matches -find_match_count_limit[few]=More than {{limit}} matches -find_match_count_limit[many]=More than {{limit}} matches -find_match_count_limit[other]=More than {{limit}} matches -find_not_found=Phrase not found -# Error panel labels -error_more_info=More Information -error_less_info=Less Information -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. -# Predefined zoom values -page_scale_width=Page Width -page_scale_fit=Page Fit -page_scale_auto=Automatic Zoom -page_scale_actual=Actual Size -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading=Loading… -loading_error=An error occurred while loading the PDF. -invalid_file_error=Invalid or corrupted PDF file. -missing_file_error=Missing PDF file. -unexpected_response_error=Unexpected server response. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Enter the password to open this PDF file. -password_invalid=Invalid password. Please try again. -password_ok=OK -password_cancel=Cancel -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/eo/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/eo/viewer.properties deleted file mode 100644 index bd16be6b5be98e1fdc68e1f547657cfe233a3589..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/eo/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Antaŭa paĝo -previous_label=Malantaŭen -next.title=Venonta paĝo -next_label=Antaŭen -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Paĝo -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=el {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} el {{pagesCount}}) -zoom_out.title=Malpligrandigi -zoom_out_label=Malpligrandigi -zoom_in.title=Pligrandigi -zoom_in_label=Pligrandigi -zoom.title=Pligrandigilo -presentation_mode.title=Iri al prezenta reĝimo -presentation_mode_label=Prezenta reĝimo -open_file.title=Malfermi dosieron -open_file_label=Malfermi -print.title=Presi -print_label=Presi -download.title=Elŝuti -download_label=Elŝuti -bookmark.title=Nuna vido (kopii aŭ malfermi en nova fenestro) -bookmark_label=Nuna vido -# Secondary toolbar and context menu -tools.title=Iloj -tools_label=Iloj -first_page.title=Iri al la unua paĝo -first_page.label=Iri al la unua paĝo -first_page_label=Iri al la unua paĝo -last_page.title=Iri al la lasta paĝo -last_page.label=Iri al la lasta paĝo -last_page_label=Iri al la lasta paĝo -page_rotate_cw.title=Rotaciigi dekstrume -page_rotate_cw.label=Rotaciigi dekstrume -page_rotate_cw_label=Rotaciigi dekstrume -page_rotate_ccw.title=Rotaciigi maldekstrume -page_rotate_ccw.label=Rotaciigi maldekstrume -page_rotate_ccw_label=Rotaciigi maldekstrume -cursor_text_select_tool.title=Aktivigi tekstan elektilon -cursor_text_select_tool_label=Teksta elektilo -cursor_hand_tool.title=Aktivigi ilon de mano -cursor_hand_tool_label=Ilo de mano -scroll_vertical.title=Uzi vertikalan ŝovadon -scroll_vertical_label=Vertikala ŝovado -scroll_horizontal.title=Uzi horizontalan ŝovadon -scroll_horizontal_label=Horizontala ŝovado -scroll_wrapped.title=Uzi ambaŭdirektan ŝovadon -scroll_wrapped_label=Ambaŭdirekta ŝovado -spread_none.title=Ne montri paĝojn po du -spread_none_label=Unupaĝa vido -spread_odd.title=Kunigi paĝojn komencante per nepara paĝo -spread_odd_label=Po du paĝoj, neparaj maldekstre -spread_even.title=Kunigi paĝojn komencante per para paĝo -spread_even_label=Po du paĝoj, paraj maldekstre -# Document properties dialog box -document_properties.title=Atributoj de dokumento… -document_properties_label=Atributoj de dokumento… -document_properties_file_name=Nomo de dosiero: -document_properties_file_size=Grando de dosiero: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KO ({{size_b}} oktetoj) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MO ({{size_b}} oktetoj) -document_properties_title=Titolo: -document_properties_author=Aŭtoro: -document_properties_subject=Temo: -document_properties_keywords=Ŝlosilvorto: -document_properties_creation_date=Dato de kreado: -document_properties_modification_date=Dato de modifo: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Kreinto: -document_properties_producer=Produktinto de PDF: -document_properties_version=Versio de PDF: -document_properties_page_count=Nombro de paĝoj: -document_properties_page_size=Grando de paĝo: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertikala -document_properties_page_size_orientation_landscape=horizontala -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letera -document_properties_page_size_name_legal=Jura -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Rapida tekstaĵa vido: -document_properties_linearized_yes=Jes -document_properties_linearized_no=Ne -document_properties_close=Fermi -print_progress_message=Preparo de dokumento por presi ĝin … -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Nuligi -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Montri/kaŝi flankan strion -toggle_sidebar_notification.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/aneksaĵojn) -toggle_sidebar_notification2.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/kunsendaĵojn/tavolojn) -toggle_sidebar_label=Montri/kaŝi flankan strion -document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn) -document_outline_label=Konturo de dokumento -attachments.title=Montri kunsendaĵojn -attachments_label=Kunsendaĵojn -layers.title=Montri tavolojn (duoble alklaku por remeti ĉiujn tavolojn en la norman staton) -layers_label=Tavoloj -thumbs.title=Montri miniaturojn -thumbs_label=Miniaturoj -current_outline_item.title=Trovi nunan konturan elementon -current_outline_item_label=Nuna kontura elemento -findbar.title=Serĉi en dokumento -findbar_label=Serĉi -additional_layers=Aldonaj tavoloj -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Paĝo {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Paĝo {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniaturo de paĝo {{page}} -# Find panel button title and messages -find_input.title=Serĉi -find_input.placeholder=Serĉi en dokumento… -find_previous.title=Serĉi la antaŭan aperon de la frazo -find_previous_label=Malantaŭen -find_next.title=Serĉi la venontan aperon de la frazo -find_next_label=Antaŭen -find_highlight=Elstarigi ĉiujn -find_match_case_label=Distingi inter majuskloj kaj minuskloj -find_entire_word_label=Tutaj vortoj -find_reached_top=Komenco de la dokumento atingita, daŭrigado ekde la fino -find_reached_bottom=Fino de la dokumento atingita, daŭrigado ekde la komenco -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} el {{total}} kongruo -find_match_count[two]={{current}} el {{total}} kongruoj -find_match_count[few]={{current}} el {{total}} kongruoj -find_match_count[many]={{current}} el {{total}} kongruoj -find_match_count[other]={{current}} el {{total}} kongruoj -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Pli ol {{limit}} kongruoj -find_match_count_limit[one]=Pli ol {{limit}} kongruo -find_match_count_limit[two]=Pli ol {{limit}} kongruoj -find_match_count_limit[few]=Pli ol {{limit}} kongruoj -find_match_count_limit[many]=Pli ol {{limit}} kongruoj -find_match_count_limit[other]=Pli ol {{limit}} kongruoj -find_not_found=Frazo ne trovita -# Error panel labels -error_more_info=Pli da informo -error_less_info=Malpli da informo -error_close=Fermi -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesaĝo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stako: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dosiero: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linio: {{line}} -rendering_error=Okazis eraro dum la montro de la paĝo. -# Predefined zoom values -page_scale_width=Larĝo de paĝo -page_scale_fit=Adapti paĝon -page_scale_auto=Aŭtomata skalo -page_scale_actual=Reala grando -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Okazis eraro dum la ŝargado de la PDF dosiero. -invalid_file_error=Nevalida aŭ difektita PDF dosiero. -missing_file_error=Mankas dosiero PDF. -unexpected_response_error=Neatendita respondo de servilo. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Prinoto: {{type}}] -password_label=Tajpu pasvorton por malfermi tiun ĉi dosieron PDF. -password_invalid=Nevalida pasvorto. Bonvolu provi denove. -password_ok=Akcepti -password_cancel=Nuligi -printing_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon. -printing_not_ready=Averto: la PDF dosiero ne estas plene ŝargita por presado. -web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-AR/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-AR/viewer.properties deleted file mode 100644 index af5fb3b588d375154e0c2dd86cefd0a4b87b5b17..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-AR/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Página siguiente -next_label=Siguiente -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Página -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=( {{pageNumber}} de {{pagesCount}} ) -zoom_out.title=Alejar -zoom_out_label=Alejar -zoom_in.title=Acercar -zoom_in_label=Acercar -zoom.title=Zoom -presentation_mode.title=Cambiar a modo presentación -presentation_mode_label=Modo presentación -open_file.title=Abrir archivo -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar o abrir en nueva ventana) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Herramientas -tools_label=Herramientas -first_page.title=Ir a primera página -first_page.label=Ir a primera página -first_page_label=Ir a primera página -last_page.title=Ir a última página -last_page.label=Ir a última página -last_page_label=Ir a última página -page_rotate_cw.title=Rotar horario -page_rotate_cw.label=Rotar horario -page_rotate_cw_label=Rotar horario -page_rotate_ccw.title=Rotar antihorario -page_rotate_ccw.label=Rotar antihorario -page_rotate_ccw_label=Rotar antihorario -cursor_text_select_tool.title=Habilitar herramienta de selección de texto -cursor_text_select_tool_label=Herramienta de selección de texto -cursor_hand_tool.title=Habilitar herramienta mano -cursor_hand_tool_label=Herramienta mano -scroll_vertical.title=Usar desplazamiento vertical -scroll_vertical_label=Desplazamiento vertical -scroll_horizontal.title=Usar desplazamiento vertical -scroll_horizontal_label=Desplazamiento horizontal -scroll_wrapped.title=Usar desplazamiento encapsulado -scroll_wrapped_label=Desplazamiento encapsulado -spread_none.title=No unir páginas dobles -spread_none_label=Sin dobles -spread_odd.title=Unir páginas dobles comenzando con las impares -spread_odd_label=Dobles impares -spread_even.title=Unir páginas dobles comenzando con las pares -spread_even_label=Dobles pares -# Document properties dialog box -document_properties.title=Propiedades del documento… -document_properties_label=Propiedades del documento… -document_properties_file_name=Nombre de archivo: -document_properties_file_size=Tamaño de archovo: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Título: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras clave: -document_properties_creation_date=Fecha de creación: -document_properties_modification_date=Fecha de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=PDF Productor: -document_properties_version=Versión de PDF: -document_properties_page_count=Cantidad de páginas: -document_properties_page_size=Tamaño de página: -document_properties_page_size_unit_inches=en -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=normal -document_properties_page_size_orientation_landscape=apaisado -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista rápida de la Web: -document_properties_linearized_yes=Sí -document_properties_linearized_no=No -document_properties_close=Cerrar -print_progress_message=Preparando documento para imprimir… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancelar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Alternar barra lateral -toggle_sidebar_notification.title=Intercambiar barra lateral (el documento contiene esquema/adjuntos) -toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) -toggle_sidebar_label=Alternar barra lateral -document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems) -document_outline_label=Esquema del documento -attachments.title=Mostrar adjuntos -attachments_label=Adjuntos -layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) -layers_label=Capas -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -current_outline_item.title=Buscar elemento de esquema actual -current_outline_item_label=Elemento de esquema actual -findbar.title=Buscar en documento -findbar_label=Buscar -additional_layers=Capas adicionales -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura de página {{page}} -# Find panel button title and messages -find_input.title=Buscar -find_input.placeholder=Buscar en documento… -find_previous.title=Buscar la aparición anterior de la frase -find_previous_label=Anterior -find_next.title=Buscar la siguiente aparición de la frase -find_next_label=Siguiente -find_highlight=Resaltar todo -find_match_case_label=Coincidir mayúsculas -find_entire_word_label=Palabras completas -find_reached_top=Inicio de documento alcanzado, continuando desde abajo -find_reached_bottom=Fin de documento alcanzando, continuando desde arriba -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidencias -find_match_count[two]={{current}} de {{total}} coincidencias -find_match_count[few]={{current}} de {{total}} coincidencias -find_match_count[many]={{current}} de {{total}} coincidencias -find_match_count[other]={{current}} de {{total}} coincidencias -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Más de {{limit}} coincidencias -find_match_count_limit[one]=Más de {{limit}} coinciden -find_match_count_limit[two]=Más de {{limit}} coincidencias -find_match_count_limit[few]=Más de {{limit}} coincidencias -find_match_count_limit[many]=Más de {{limit}} coincidencias -find_match_count_limit[other]=Más de {{limit}} coincidencias -find_not_found=Frase no encontrada -# Error panel labels -error_more_info=Más información -error_less_info=Menos información -error_close=Cerrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaje: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Archivo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Línea: {{line}} -rendering_error=Ocurrió un error al dibujar la página. -# Predefined zoom values -page_scale_width=Ancho de página -page_scale_fit=Ajustar página -page_scale_auto=Zoom automático -page_scale_actual=Tamaño real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ocurrió un error al cargar el PDF. -invalid_file_error=Archivo PDF no válido o cocrrupto. -missing_file_error=Archivo PDF faltante. -unexpected_response_error=Respuesta del servidor inesperada. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Anotación] -password_label=Ingrese la contraseña para abrir este archivo PDF -password_invalid=Contraseña inválida. Intente nuevamente. -password_ok=Aceptar -password_cancel=Cancelar -printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador. -printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión. -web_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-CL/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-CL/viewer.properties deleted file mode 100644 index bccd95ea29c49877973c70f71aa90a094d1bfc38..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-CL/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Página siguiente -next_label=Siguiente -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Página -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Alejar -zoom_out_label=Alejar -zoom_in.title=Acercar -zoom_in_label=Acercar -zoom.title=Ampliación -presentation_mode.title=Cambiar al modo de presentación -presentation_mode_label=Modo de presentación -open_file.title=Abrir archivo -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar o abrir en nueva ventana) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Herramientas -tools_label=Herramientas -first_page.title=Ir a la primera página -first_page.label=Ir a la primera página -first_page_label=Ir a la primera página -last_page.title=Ir a la última página -last_page.label=Ir a la última página -last_page_label=Ir a la última página -page_rotate_cw.title=Girar a la derecha -page_rotate_cw.label=Girar a la derecha -page_rotate_cw_label=Girar a la derecha -page_rotate_ccw.title=Girar a la izquierda -page_rotate_ccw.label=Girar a la izquierda -page_rotate_ccw_label=Girar a la izquierda -cursor_text_select_tool.title=Activar la herramienta de selección de texto -cursor_text_select_tool_label=Herramienta de selección de texto -cursor_hand_tool.title=Activar la herramienta de mano -cursor_hand_tool_label=Herramienta de mano -scroll_vertical.title=Usar desplazamiento vertical -scroll_vertical_label=Desplazamiento vertical -scroll_horizontal.title=Usar desplazamiento horizontal -scroll_horizontal_label=Desplazamiento horizontal -scroll_wrapped.title=Usar desplazamiento en bloque -scroll_wrapped_label=Desplazamiento en bloque -spread_none.title=No juntar páginas a modo de libro -spread_none_label=Vista de una página -spread_odd.title=Junta las páginas partiendo con una de número impar -spread_odd_label=Vista de libro impar -spread_even.title=Junta las páginas partiendo con una de número par -spread_even_label=Vista de libro par -# Document properties dialog box -document_properties.title=Propiedades del documento… -document_properties_label=Propiedades del documento… -document_properties_file_name=Nombre de archivo: -document_properties_file_size=Tamaño del archivo: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Título: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras clave: -document_properties_creation_date=Fecha de creación: -document_properties_modification_date=Fecha de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=Productor del PDF: -document_properties_version=Versión de PDF: -document_properties_page_count=Cantidad de páginas: -document_properties_page_size=Tamaño de la página: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertical -document_properties_page_size_orientation_landscape=horizontal -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Oficio -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista rápida en Web: -document_properties_linearized_yes=Sí -document_properties_linearized_no=No -document_properties_close=Cerrar -print_progress_message=Preparando documento para impresión… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancelar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos) -toggle_sidebar_notification2.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos/capas) -toggle_sidebar_label=Mostrar u ocultar la barra lateral -document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) -document_outline_label=Esquema del documento -attachments.title=Mostrar adjuntos -attachments_label=Adjuntos -layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) -layers_label=Capas -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -current_outline_item.title=Buscar elemento de esquema actual -current_outline_item_label=Elemento de esquema actual -findbar.title=Buscar en el documento -findbar_label=Buscar -additional_layers=Capas adicionales -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura de la página {{page}} -# Find panel button title and messages -find_input.title=Encontrar -find_input.placeholder=Encontrar en el documento… -find_previous.title=Buscar la aparición anterior de la frase -find_previous_label=Previo -find_next.title=Buscar la siguiente aparición de la frase -find_next_label=Siguiente -find_highlight=Destacar todos -find_match_case_label=Coincidir mayús./minús. -find_entire_word_label=Palabras completas -find_reached_top=Se alcanzó el inicio del documento, continuando desde el final -find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidencia -find_match_count[two]={{current}} de {{total}} coincidencias -find_match_count[few]={{current}} de {{total}} coincidencias -find_match_count[many]={{current}} de {{total}} coincidencias -find_match_count[other]={{current}} de {{total}} coincidencias -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Más de {{limit}} coincidencias -find_match_count_limit[one]=Más de {{limit}} coincidencia -find_match_count_limit[two]=Más de {{limit}} coincidencias -find_match_count_limit[few]=Más de {{limit}} coincidencias -find_match_count_limit[many]=Más de {{limit}} coincidencias -find_match_count_limit[other]=Más de {{limit}} coincidencias -find_not_found=Frase no encontrada -# Error panel labels -error_more_info=Más información -error_less_info=Menos información -error_close=Cerrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (compilación: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaje: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Archivo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Línea: {{line}} -rendering_error=Ocurrió un error al renderizar la página. -# Predefined zoom values -page_scale_width=Ancho de página -page_scale_fit=Ajuste de página -page_scale_auto=Aumento automático -page_scale_actual=Tamaño actual -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ocurrió un error al cargar el PDF. -invalid_file_error=Archivo PDF inválido o corrupto. -missing_file_error=Falta el archivo PDF. -unexpected_response_error=Respuesta del servidor inesperada. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Anotación] -password_label=Ingrese la contraseña para abrir este archivo PDF. -password_invalid=Contraseña inválida. Por favor, vuelve a intentarlo. -password_ok=Aceptar -password_cancel=Cancelar -printing_not_supported=Advertencia: Imprimir no está soportado completamente por este navegador. -printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso. -web_fonts_disabled=Las tipografías web están desactivadas: imposible usar las fuentes PDF embebidas. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-ES/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-ES/viewer.properties deleted file mode 100644 index b974da710949d53df072ff766dd5617845d16c3d..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-ES/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Página siguiente -next_label=Siguiente -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Página -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Reducir -zoom_out_label=Reducir -zoom_in.title=Aumentar -zoom_in_label=Aumentar -zoom.title=Tamaño -presentation_mode.title=Cambiar al modo presentación -presentation_mode_label=Modo presentación -open_file.title=Abrir archivo -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar o abrir en una nueva ventana) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Herramientas -tools_label=Herramientas -first_page.title=Ir a la primera página -first_page.label=Ir a la primera página -first_page_label=Ir a la primera página -last_page.title=Ir a la última página -last_page.label=Ir a la última página -last_page_label=Ir a la última página -page_rotate_cw.title=Rotar en sentido horario -page_rotate_cw.label=Rotar en sentido horario -page_rotate_cw_label=Rotar en sentido horario -page_rotate_ccw.title=Rotar en sentido antihorario -page_rotate_ccw.label=Rotar en sentido antihorario -page_rotate_ccw_label=Rotar en sentido antihorario -cursor_text_select_tool.title=Activar herramienta de selección de texto -cursor_text_select_tool_label=Herramienta de selección de texto -cursor_hand_tool.title=Activar herramienta de mano -cursor_hand_tool_label=Herramienta de mano -scroll_vertical.title=Usar desplazamiento vertical -scroll_vertical_label=Desplazamiento vertical -scroll_horizontal.title=Usar desplazamiento horizontal -scroll_horizontal_label=Desplazamiento horizontal -scroll_wrapped.title=Usar desplazamiento en bloque -scroll_wrapped_label=Desplazamiento en bloque -spread_none.title=No juntar páginas en vista de libro -spread_none_label=Vista de libro -spread_odd.title=Juntar las páginas partiendo de una con número impar -spread_odd_label=Vista de libro impar -spread_even.title=Juntar las páginas partiendo de una con número par -spread_even_label=Vista de libro par -# Document properties dialog box -document_properties.title=Propiedades del documento… -document_properties_label=Propiedades del documento… -document_properties_file_name=Nombre de archivo: -document_properties_file_size=Tamaño de archivo: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Título: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras clave: -document_properties_creation_date=Fecha de creación: -document_properties_modification_date=Fecha de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=Productor PDF: -document_properties_version=Versión PDF: -document_properties_page_count=Número de páginas: -document_properties_page_size=Tamaño de la página: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertical -document_properties_page_size_orientation_landscape=horizontal -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista rápida de la web: -document_properties_linearized_yes=Sí -document_properties_linearized_no=No -document_properties_close=Cerrar -print_progress_message=Preparando documento para impresión… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancelar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Cambiar barra lateral -toggle_sidebar_notification.title=Alternar panel lateral (el documento contiene un esquema o adjuntos) -toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) -toggle_sidebar_label=Cambiar barra lateral -document_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos) -document_outline_label=Resumen de documento -attachments.title=Mostrar adjuntos -attachments_label=Adjuntos -layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) -layers_label=Capas -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -current_outline_item.title=Encontrar elemento de esquema actual -current_outline_item_label=Elemento de esquema actual -findbar.title=Buscar en el documento -findbar_label=Buscar -additional_layers=Capas adicionales -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura de la página {{page}} -# Find panel button title and messages -find_input.title=Buscar -find_input.placeholder=Buscar en el documento… -find_previous.title=Encontrar la anterior aparición de la frase -find_previous_label=Anterior -find_next.title=Encontrar la siguiente aparición de esta frase -find_next_label=Siguiente -find_highlight=Resaltar todos -find_match_case_label=Coincidencia de mayús./minús. -find_entire_word_label=Palabras completas -find_reached_top=Se alcanzó el inicio del documento, se continúa desde el final -find_reached_bottom=Se alcanzó el final del documento, se continúa desde el inicio -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidencia -find_match_count[two]={{current}} de {{total}} coincidencias -find_match_count[few]={{current}} de {{total}} coincidencias -find_match_count[many]={{current}} de {{total}} coincidencias -find_match_count[other]={{current}} de {{total}} coincidencias -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Más de {{limit}} coincidencias -find_match_count_limit[one]=Más de {{limit}} coincidencia -find_match_count_limit[two]=Más de {{limit}} coincidencias -find_match_count_limit[few]=Más de {{limit}} coincidencias -find_match_count_limit[many]=Más de {{limit}} coincidencias -find_match_count_limit[other]=Más de {{limit}} coincidencias -find_not_found=Frase no encontrada -# Error panel labels -error_more_info=Más información -error_less_info=Menos información -error_close=Cerrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaje: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Archivo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Línea: {{line}} -rendering_error=Ocurrió un error al renderizar la página. -# Predefined zoom values -page_scale_width=Anchura de la página -page_scale_fit=Ajuste de la página -page_scale_auto=Tamaño automático -page_scale_actual=Tamaño real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ocurrió un error al cargar el PDF. -invalid_file_error=Fichero PDF no válido o corrupto. -missing_file_error=No hay fichero PDF. -unexpected_response_error=Respuesta inesperada del servidor. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotación {{type}}] -password_label=Introduzca la contraseña para abrir este archivo PDF. -password_invalid=Contraseña no válida. Vuelva a intentarlo. -password_ok=Aceptar -password_cancel=Cancelar -printing_not_supported=Advertencia: Imprimir no está totalmente soportado por este navegador. -printing_not_ready=Advertencia: Este PDF no se ha cargado completamente para poder imprimirse. -web_fonts_disabled=Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-MX/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-MX/viewer.properties deleted file mode 100644 index 4ce355f013c8af857cd00d8fda6369be6bb0738a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/es-MX/viewer.properties +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Página siguiente -next_label=Siguiente -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Página -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Reducir -zoom_out_label=Reducir -zoom_in.title=Aumentar -zoom_in_label=Aumentar -zoom.title=Zoom -presentation_mode.title=Cambiar al modo presentación -presentation_mode_label=Modo presentación -open_file.title=Abrir archivo -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar o abrir en una nueva ventana) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Herramientas -tools_label=Herramientas -first_page.title=Ir a la primera página -first_page.label=Ir a la primera página -first_page_label=Ir a la primera página -last_page.title=Ir a la última página -last_page.label=Ir a la última página -last_page_label=Ir a la última página -page_rotate_cw.title=Girar a la derecha -page_rotate_cw.label=Girar a la derecha -page_rotate_cw_label=Girar a la derecha -page_rotate_ccw.title=Girar a la izquierda -page_rotate_ccw.label=Girar a la izquierda -page_rotate_ccw_label=Girar a la izquierda -cursor_text_select_tool.title=Activar la herramienta de selección de texto -cursor_text_select_tool_label=Herramienta de selección de texto -cursor_hand_tool.title=Activar la herramienta de mano -cursor_hand_tool_label=Herramienta de mano -scroll_vertical.title=Usar desplazamiento vertical -scroll_vertical_label=Desplazamiento vertical -scroll_horizontal.title=Usar desplazamiento horizontal -scroll_horizontal_label=Desplazamiento horizontal -scroll_wrapped.title=Usar desplazamiento encapsulado -scroll_wrapped_label=Desplazamiento encapsulado -spread_none.title=No unir páginas separadas -spread_none_label=Vista de una página -spread_odd.title=Unir las páginas partiendo con una de número impar -spread_odd_label=Vista de libro impar -spread_even.title=Juntar las páginas partiendo con una de número par -spread_even_label=Vista de libro par -# Document properties dialog box -document_properties.title=Propiedades del documento… -document_properties_label=Propiedades del documento… -document_properties_file_name=Nombre del archivo: -document_properties_file_size=Tamaño del archivo: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Título: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras claves: -document_properties_creation_date=Fecha de creación: -document_properties_modification_date=Fecha de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=Productor PDF: -document_properties_version=Versión PDF: -document_properties_page_count=Número de páginas: -document_properties_page_size=Tamaño de la página: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertical -document_properties_page_size_orientation_landscape=horizontal -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Oficio -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista rápida de la web: -document_properties_linearized_yes=Sí -document_properties_linearized_no=No -document_properties_close=Cerrar -print_progress_message=Preparando documento para impresión… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancelar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Cambiar barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos) -toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) -toggle_sidebar_label=Cambiar barra lateral -document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) -document_outline_label=Esquema del documento -attachments.title=Mostrar adjuntos -attachments_label=Adjuntos -layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) -layers_label=Capas -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -findbar.title=Buscar en el documento -findbar_label=Buscar -additional_layers=Capas adicionales -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura de la página {{page}} -# Find panel button title and messages -find_input.title=Buscar -find_input.placeholder=Buscar en el documento… -find_previous.title=Ir a la anterior frase encontrada -find_previous_label=Anterior -find_next.title=Ir a la siguiente frase encontrada -find_next_label=Siguiente -find_highlight=Resaltar todo -find_match_case_label=Coincidir con mayúsculas y minúsculas -find_entire_word_label=Palabras completas -find_reached_top=Se alcanzó el inicio del documento, se buscará al final -find_reached_bottom=Se alcanzó el final del documento, se buscará al inicio -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidencia -find_match_count[two]={{current}} de {{total}} coincidencias -find_match_count[few]={{current}} de {{total}} coincidencias -find_match_count[many]={{current}} de {{total}} coincidencias -find_match_count[other]={{current}} de {{total}} coincidencias -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Más de {{limit}} coincidencias -find_match_count_limit[one]=Más de {{limit}} coinciden -find_match_count_limit[two]=Más de {{limit}} coincidencias -find_match_count_limit[few]=Más de {{limit}} coincidencias -find_match_count_limit[many]=Más de {{limit}} coincidencias -find_match_count_limit[other]=Más de {{limit}} coincidencias -find_not_found=No se encontró la frase -# Error panel labels -error_more_info=Más información -error_less_info=Menos información -error_close=Cerrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaje: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Archivo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Línea: {{line}} -rendering_error=Un error ocurrió al renderizar la página. -# Predefined zoom values -page_scale_width=Ancho de página -page_scale_fit=Ajustar página -page_scale_auto=Zoom automático -page_scale_actual=Tamaño real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Un error ocurrió al cargar el PDF. -invalid_file_error=Archivo PDF invalido o dañado. -missing_file_error=Archivo PDF no encontrado. -unexpected_response_error=Respuesta inesperada del servidor. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} anotación] -password_label=Ingresa la contraseña para abrir este archivo PDF. -password_invalid=Contraseña inválida. Por favor intenta de nuevo. -password_ok=Aceptar -password_cancel=Cancelar -printing_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador. -printing_not_ready=Advertencia: El PDF no cargo completamente para impresión. -web_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/et/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/et/viewer.properties deleted file mode 100644 index 775ac72f3e9f1f27957affd01c74579278ef1e8a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/et/viewer.properties +++ /dev/null @@ -1,226 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Eelmine lehekülg -previous_label=Eelmine -next.title=Järgmine lehekülg -next_label=Järgmine -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Leht -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}}/{{pagesCount}}) -zoom_out.title=Vähenda -zoom_out_label=Vähenda -zoom_in.title=Suurenda -zoom_in_label=Suurenda -zoom.title=Suurendamine -presentation_mode.title=Lülitu esitlusrežiimi -presentation_mode_label=Esitlusrežiim -open_file.title=Ava fail -open_file_label=Ava -print.title=Prindi -print_label=Prindi -download.title=Laadi alla -download_label=Laadi alla -bookmark.title=Praegune vaade (kopeeri või ava uues aknas) -bookmark_label=Praegune vaade -# Secondary toolbar and context menu -tools.title=Tööriistad -tools_label=Tööriistad -first_page.title=Mine esimesele leheküljele -first_page.label=Mine esimesele leheküljele -first_page_label=Mine esimesele leheküljele -last_page.title=Mine viimasele leheküljele -last_page.label=Mine viimasele leheküljele -last_page_label=Mine viimasele leheküljele -page_rotate_cw.title=Pööra päripäeva -page_rotate_cw.label=Pööra päripäeva -page_rotate_cw_label=Pööra päripäeva -page_rotate_ccw.title=Pööra vastupäeva -page_rotate_ccw.label=Pööra vastupäeva -page_rotate_ccw_label=Pööra vastupäeva -cursor_text_select_tool.title=Luba teksti valimise tööriist -cursor_text_select_tool_label=Teksti valimise tööriist -cursor_hand_tool.title=Luba sirvimistööriist -cursor_hand_tool_label=Sirvimistööriist -scroll_vertical.title=Kasuta vertikaalset kerimist -scroll_vertical_label=Vertikaalne kerimine -scroll_horizontal.title=Kasuta horisontaalset kerimist -scroll_horizontal_label=Horisontaalne kerimine -scroll_wrapped.title=Kasuta rohkem mahutavat kerimist -scroll_wrapped_label=Rohkem mahutav kerimine -spread_none.title=Ära kõrvuta lehekülgi -spread_none_label=Lehtede kõrvutamine puudub -spread_odd.title=Kõrvuta leheküljed, alustades paaritute numbritega lehekülgedega -spread_odd_label=Kõrvutamine paaritute numbritega alustades -spread_even.title=Kõrvuta leheküljed, alustades paarisnumbritega lehekülgedega -spread_even_label=Kõrvutamine paarisnumbritega alustades -# Document properties dialog box -document_properties.title=Dokumendi omadused… -document_properties_label=Dokumendi omadused… -document_properties_file_name=Faili nimi: -document_properties_file_size=Faili suurus: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KiB ({{size_b}} baiti) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MiB ({{size_b}} baiti) -document_properties_title=Pealkiri: -document_properties_author=Autor: -document_properties_subject=Teema: -document_properties_keywords=Märksõnad: -document_properties_creation_date=Loodud: -document_properties_modification_date=Muudetud: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}} {{time}} -document_properties_creator=Looja: -document_properties_producer=Generaator: -document_properties_version=Generaatori versioon: -document_properties_page_count=Lehekülgi: -document_properties_page_size=Lehe suurus: -document_properties_page_size_unit_inches=tolli -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertikaalpaigutus -document_properties_page_size_orientation_landscape=rõhtpaigutus -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized="Fast Web View" tugi: -document_properties_linearized_yes=Jah -document_properties_linearized_no=Ei -document_properties_close=Sulge -print_progress_message=Dokumendi ettevalmistamine printimiseks… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Loobu -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Näita külgriba -toggle_sidebar_notification.title=Näita külgriba (dokument sisaldab sisukorda/manuseid) -toggle_sidebar_label=Näita külgriba -document_outline.title=Näita sisukorda (kõigi punktide laiendamiseks/ahendamiseks topeltklõpsa) -document_outline_label=Näita sisukorda -attachments.title=Näita manuseid -attachments_label=Manused -thumbs.title=Näita pisipilte -thumbs_label=Pisipildid -findbar.title=Otsi dokumendist -findbar_label=Otsi -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}}. lehekülg -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. lehekülje pisipilt -# Find panel button title and messages -find_input.title=Otsi -find_input.placeholder=Otsi dokumendist… -find_previous.title=Otsi fraasi eelmine esinemiskoht -find_previous_label=Eelmine -find_next.title=Otsi fraasi järgmine esinemiskoht -find_next_label=Järgmine -find_highlight=Too kõik esile -find_match_case_label=Tõstutundlik -find_entire_word_label=Täissõnad -find_reached_top=Jõuti dokumendi algusesse, jätkati lõpust -find_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=vaste {{current}}/{{total}} -find_match_count[two]=vaste {{current}}/{{total}} -find_match_count[few]=vaste {{current}}/{{total}} -find_match_count[many]=vaste {{current}}/{{total}} -find_match_count[other]=vaste {{current}}/{{total}} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Rohkem kui {{limit}} vastet -find_match_count_limit[one]=Rohkem kui {{limit}} vaste -find_match_count_limit[two]=Rohkem kui {{limit}} vastet -find_match_count_limit[few]=Rohkem kui {{limit}} vastet -find_match_count_limit[many]=Rohkem kui {{limit}} vastet -find_match_count_limit[other]=Rohkem kui {{limit}} vastet -find_not_found=Fraasi ei leitud -# Error panel labels -error_more_info=Rohkem teavet -error_less_info=Vähem teavet -error_close=Sulge -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Teade: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fail: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rida: {{line}} -rendering_error=Lehe renderdamisel esines viga. -# Predefined zoom values -page_scale_width=Mahuta laiusele -page_scale_fit=Mahuta leheküljele -page_scale_auto=Automaatne suurendamine -page_scale_actual=Tegelik suurus -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDFi laadimisel esines viga. -invalid_file_error=Vigane või rikutud PDF-fail. -missing_file_error=PDF-fail puudub. -unexpected_response_error=Ootamatu vastus serverilt. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}} {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=PDF-faili avamiseks sisesta parool. -password_invalid=Vigane parool. Palun proovi uuesti. -password_ok=Sobib -password_cancel=Loobu -printing_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud. -printing_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud. -web_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/eu/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/eu/viewer.properties deleted file mode 100644 index 1e57fae507b97e7a0705643b951013fd3fda7a8b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/eu/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Aurreko orria -previous_label=Aurrekoa -next.title=Hurrengo orria -next_label=Hurrengoa -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Orria -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages={{pagesCount}}/{{pageNumber}} -zoom_out.title=Urrundu zooma -zoom_out_label=Urrundu zooma -zoom_in.title=Gerturatu zooma -zoom_in_label=Gerturatu zooma -zoom.title=Zooma -presentation_mode.title=Aldatu aurkezpen modura -presentation_mode_label=Arkezpen modua -open_file.title=Ireki fitxategia -open_file_label=Ireki -print.title=Inprimatu -print_label=Inprimatu -download.title=Deskargatu -download_label=Deskargatu -bookmark.title=Uneko ikuspegia (kopiatu edo ireki leiho berrian) -bookmark_label=Uneko ikuspegia -# Secondary toolbar and context menu -tools.title=Tresnak -tools_label=Tresnak -first_page.title=Joan lehen orrira -first_page.label=Joan lehen orrira -first_page_label=Joan lehen orrira -last_page.title=Joan azken orrira -last_page.label=Joan azken orrira -last_page_label=Joan azken orrira -page_rotate_cw.title=Biratu erlojuaren norantzan -page_rotate_cw.label=Biratu erlojuaren norantzan -page_rotate_cw_label=Biratu erlojuaren norantzan -page_rotate_ccw.title=Biratu erlojuaren aurkako norantzan -page_rotate_ccw.label=Biratu erlojuaren aurkako norantzan -page_rotate_ccw_label=Biratu erlojuaren aurkako norantzan -cursor_text_select_tool.title=Gaitu testuaren hautapen tresna -cursor_text_select_tool_label=Testuaren hautapen tresna -cursor_hand_tool.title=Gaitu eskuaren tresna -cursor_hand_tool_label=Eskuaren tresna -scroll_vertical.title=Erabili korritze bertikala -scroll_vertical_label=Korritze bertikala -scroll_horizontal.title=Erabili korritze horizontala -scroll_horizontal_label=Korritze horizontala -scroll_wrapped.title=Erabili korritze egokitua -scroll_wrapped_label=Korritze egokitua -spread_none.title=Ez elkartu barreiatutako orriak -spread_none_label=Barreiatzerik ez -spread_odd.title=Elkartu barreiatutako orriak bakoiti zenbakidunekin hasita -spread_odd_label=Barreiatze bakoitia -spread_even.title=Elkartu barreiatutako orriak bikoiti zenbakidunekin hasita -spread_even_label=Barreiatze bikoitia -# Document properties dialog box -document_properties.title=Dokumentuaren propietateak… -document_properties_label=Dokumentuaren propietateak… -document_properties_file_name=Fitxategi-izena: -document_properties_file_size=Fitxategiaren tamaina: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Izenburua: -document_properties_author=Egilea: -document_properties_subject=Gaia: -document_properties_keywords=Gako-hitzak: -document_properties_creation_date=Sortze-data: -document_properties_modification_date=Aldatze-data: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Sortzailea: -document_properties_producer=PDFaren ekoizlea: -document_properties_version=PDF bertsioa: -document_properties_page_count=Orrialde kopurua: -document_properties_page_size=Orriaren tamaina: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=bertikala -document_properties_page_size_orientation_landscape=horizontala -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Gutuna -document_properties_page_size_name_legal=Legala -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Webeko ikuspegi bizkorra: -document_properties_linearized_yes=Bai -document_properties_linearized_no=Ez -document_properties_close=Itxi -print_progress_message=Dokumentua inprimatzeko prestatzen… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent=%{{progress}} -print_progress_close=Utzi -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Txandakatu alboko barra -toggle_sidebar_notification.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak ditu) -toggle_sidebar_notification2.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak/geruzak ditu) -toggle_sidebar_label=Txandakatu alboko barra -document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko) -document_outline_label=Dokumentuaren eskema -attachments.title=Erakutsi eranskinak -attachments_label=Eranskinak -layers.title=Erakutsi geruzak (klik bikoitza geruza guztiak egoera lehenetsira berrezartzeko) -layers_label=Geruzak -thumbs.title=Erakutsi koadro txikiak -thumbs_label=Koadro txikiak -current_outline_item.title=Bilatu uneko eskemaren elementua -current_outline_item_label=Uneko eskemaren elementua -findbar.title=Bilatu dokumentuan -findbar_label=Bilatu -additional_layers=Geruza gehigarriak -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}}. orria -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}}. orria -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. orriaren koadro txikia -# Find panel button title and messages -find_input.title=Bilatu -find_input.placeholder=Bilatu dokumentuan… -find_previous.title=Bilatu esaldiaren aurreko parekatzea -find_previous_label=Aurrekoa -find_next.title=Bilatu esaldiaren hurrengo parekatzea -find_next_label=Hurrengoa -find_highlight=Nabarmendu guztia -find_match_case_label=Bat etorri maiuskulekin/minuskulekin -find_entire_word_label=Hitz osoak -find_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen -find_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}}/{{current}}. bat etortzea -find_match_count[two]={{total}}/{{current}}. bat etortzea -find_match_count[few]={{total}}/{{current}}. bat etortzea -find_match_count[many]={{total}}/{{current}}. bat etortzea -find_match_count[other]={{total}}/{{current}}. bat etortzea -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} bat-etortze baino gehiago -find_match_count_limit[one]=Bat-etortze {{limit}} baino gehiago -find_match_count_limit[two]={{limit}} bat-etortze baino gehiago -find_match_count_limit[few]={{limit}} bat-etortze baino gehiago -find_match_count_limit[many]={{limit}} bat-etortze baino gehiago -find_match_count_limit[other]={{limit}} bat-etortze baino gehiago -find_not_found=Esaldia ez da aurkitu -# Error panel labels -error_more_info=Informazio gehiago -error_less_info=Informazio gutxiago -error_close=Itxi -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (eraikuntza: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mezua: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fitxategia: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Lerroa: {{line}} -rendering_error=Errorea gertatu da orria errendatzean. -# Predefined zoom values -page_scale_width=Orriaren zabalera -page_scale_fit=Doitu orrira -page_scale_auto=Zoom automatikoa -page_scale_actual=Benetako tamaina -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent=%{{scale}} -# Loading indicator messages -loading_error=Errorea gertatu da PDFa kargatzean. -invalid_file_error=PDF fitxategi baliogabe edo hondatua. -missing_file_error=PDF fitxategia falta da. -unexpected_response_error=Espero gabeko zerbitzariaren erantzuna. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} ohartarazpena] -password_label=Idatzi PDF fitxategi hau irekitzeko pasahitza. -password_invalid=Pasahitz baliogabea. Saiatu berriro mesedez. -password_ok=Ados -password_cancel=Utzi -printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan. -printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko. -web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fa/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fa/viewer.properties deleted file mode 100644 index ac0a253d10886847d984d4aab09b3a03a1f0d36e..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fa/viewer.properties +++ /dev/null @@ -1,204 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=صفحهٔ قبلی -previous_label=قبلی -next.title=صفحهٔ بعدی -next_label=بعدی -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=صفحه -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=از {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}}از {{pagesCount}}) -zoom_out.title=کوچک‌نمایی -zoom_out_label=کوچک‌نمایی -zoom_in.title=بزرگ‌نمایی -zoom_in_label=بزرگ‌نمایی -zoom.title=زوم -presentation_mode.title=تغییر به حالت ارائه -presentation_mode_label=حالت ارائه -open_file.title=باز کردن پرونده -open_file_label=باز کردن -print.title=چاپ -print_label=چاپ -download.title=بارگیری -download_label=بارگیری -bookmark.title=نمای فعلی (رونوشت و یا نشان دادن در پنجره جدید) -bookmark_label=نمای فعلی -# Secondary toolbar and context menu -tools.title=ابزارها -tools_label=ابزارها -first_page.title=برو به اولین صفحه -first_page.label=برو یه اولین صفحه -first_page_label=برو به اولین صفحه -last_page.title=برو به آخرین صفحه -last_page.label=برو به آخرین صفحه -last_page_label=برو به آخرین صفحه -page_rotate_cw.title=چرخش ساعتگرد -page_rotate_cw.label=چرخش ساعتگرد -page_rotate_cw_label=چرخش ساعتگرد -page_rotate_ccw.title=چرخش پاد ساعتگرد -page_rotate_ccw.label=چرخش پاد ساعتگرد -page_rotate_ccw_label=چرخش پاد ساعتگرد -cursor_text_select_tool.title=فعال کردن ابزارِ انتخابِ متن -cursor_text_select_tool_label=ابزارِ انتخابِ متن -cursor_hand_tool.title=فعال کردن ابزارِ دست -cursor_hand_tool_label=ابزار دست -scroll_vertical.title=استفاده از پیمایش عمودی -scroll_vertical_label=پیمایش عمودی -scroll_horizontal.title=استفاده از پیمایش افقی -scroll_horizontal_label=پیمایش افقی -# Document properties dialog box -document_properties.title=خصوصیات سند... -document_properties_label=خصوصیات سند... -document_properties_file_name=نام فایل: -document_properties_file_size=حجم پرونده: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} کیلوبایت ({{size_b}} بایت) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} مگابایت ({{size_b}} بایت) -document_properties_title=عنوان: -document_properties_author=نویسنده: -document_properties_subject=موضوع: -document_properties_keywords=کلیدواژه‌ها: -document_properties_creation_date=تاریخ ایجاد: -document_properties_modification_date=تاریخ ویرایش: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}، {{time}} -document_properties_creator=ایجاد کننده: -document_properties_producer=ایجاد کننده PDF: -document_properties_version=نسخه PDF: -document_properties_page_count=تعداد صفحات: -document_properties_page_size=اندازه صفحه: -document_properties_page_size_unit_inches=اینچ -document_properties_page_size_unit_millimeters=میلی‌متر -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=نامه -document_properties_page_size_name_legal=حقوقی -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=بله -document_properties_linearized_no=خیر -document_properties_close=بستن -print_progress_message=آماده سازی مدارک برای چاپ کردن… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=لغو -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=باز و بسته کردن نوار کناری -toggle_sidebar_notification.title=تغییر وضعیت نوار کناری (سند حاوی طرح/پیوست است) -toggle_sidebar_label=تغییرحالت نوارکناری -document_outline.title=نمایش رئوس مطالب مدارک(برای بازشدن/جمع شدن همه موارد دوبار کلیک کنید) -document_outline_label=طرح نوشتار -attachments.title=نمایش پیوست‌ها -attachments_label=پیوست‌ها -thumbs.title=نمایش تصاویر بندانگشتی -thumbs_label=تصاویر بندانگشتی -findbar.title=جستجو در سند -findbar_label=پیدا کردن -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=صفحه {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=تصویر بند‌ انگشتی صفحه {{page}} -# Find panel button title and messages -find_input.title=پیدا کردن -find_input.placeholder=پیدا کردن در سند… -find_previous.title=پیدا کردن رخداد قبلی عبارت -find_previous_label=قبلی -find_next.title=پیدا کردن رخداد بعدی عبارت -find_next_label=بعدی -find_highlight=برجسته و هایلایت کردن همه موارد -find_match_case_label=تطبیق کوچکی و بزرگی حروف -find_entire_word_label=تمام کلمه‌ها -find_reached_top=به بالای صفحه رسیدیم، از پایین ادامه می‌دهیم -find_reached_bottom=به آخر صفحه رسیدیم، از بالا ادامه می‌دهیم -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count[one]={{current}} از {{total}} مطابقت دارد -find_match_count[two]={{current}} از {{total}} مطابقت دارد -find_match_count[few]={{current}} از {{total}} مطابقت دارد -find_match_count[many]={{current}} از {{total}} مطابقت دارد -find_match_count[other]={{current}} از {{total}} مطابقت دارد -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_not_found=عبارت پیدا نشد -# Error panel labels -error_more_info=اطلاعات بیشتر -error_less_info=اطلاعات کمتر -error_close=بستن -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=‏PDF.js ورژن{{version}} ‏(ساخت: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=پیام: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=توده: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=پرونده: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=سطر: {{line}} -rendering_error=هنگام بارگیری صفحه خطایی رخ داد. -# Predefined zoom values -page_scale_width=عرض صفحه -page_scale_fit=اندازه کردن صفحه -page_scale_auto=بزرگنمایی خودکار -page_scale_actual=اندازه واقعی‌ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد. -invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد. -missing_file_error=پرونده PDF یافت نشد. -unexpected_response_error=پاسخ پیش بینی نشده سرور -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=جهت باز کردن پرونده PDF گذرواژه را وارد نمائید. -password_invalid=گذرواژه نامعتبر. لطفا مجددا تلاش کنید. -password_ok=تأیید -password_cancel=لغو -printing_not_supported=هشدار: قابلیت چاپ به‌طور کامل در این مرورگر پشتیبانی نمی‌شود. -printing_not_ready=اخطار: پرونده PDF بطور کامل بارگیری نشده و امکان چاپ وجود ندارد. -web_fonts_disabled=فونت های تحت وب غیر فعال شده اند: امکان استفاده از نمایش دهنده داخلی PDF وجود ندارد. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ff/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ff/viewer.properties deleted file mode 100644 index fb388d41c727e05a5074336769ae1553da1ad423..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ff/viewer.properties +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Hello Ɓennungo -previous_label=Ɓennuɗo -next.title=Hello faango -next_label=Yeeso -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Hello -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=e nder {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} of {{pagesCount}}) -zoom_out.title=Lonngo Woɗɗa -zoom_out_label=Lonngo Woɗɗa -zoom_in.title=Lonngo Ara -zoom_in_label=Lonngo Ara -zoom.title=Lonngo -presentation_mode.title=Faytu to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Uddit Fiilde -open_file_label=Uddit -print.title=Winndito -print_label=Winndito -download.title=Aawto -download_label=Aawto -bookmark.title=Jiytol gonangol (natto walla uddit e henorde) -bookmark_label=Jiytol Gonangol -# Secondary toolbar and context menu -tools.title=Kuutorɗe -tools_label=Kuutorɗe -first_page.title=Yah to hello adanngo -first_page.label=Yah to hello adanngo -first_page_label=Yah to hello adanngo -last_page.title=Yah to hello wattindiingo -last_page.label=Yah to hello wattindiingo -last_page_label=Yah to hello wattindiingo -page_rotate_cw.title=Yiiltu Faya Ñaamo -page_rotate_cw.label=Yiiltu Faya Ñaamo -page_rotate_cw_label=Yiiltu Faya Ñaamo -page_rotate_ccw.title=Yiiltu Faya Nano -page_rotate_ccw.label=Yiiltu Faya Nano -page_rotate_ccw_label=Yiiltu Faya Nano -cursor_text_select_tool.title=Gollin kaɓirgel cuɓirgel binndi -cursor_text_select_tool_label=Kaɓirgel cuɓirgel binndi -cursor_hand_tool.title=Hurmin kuutorgal junngo -cursor_hand_tool_label=Kaɓirgel junngo -scroll_vertical.title=Huutoro gorwitol daringol -scroll_vertical_label=Gorwitol daringol -scroll_horizontal.title=Huutoro gorwitol lelingol -scroll_horizontal_label=Gorwitol daringol -scroll_wrapped.title=Huutoro gorwitol coomingol -scroll_wrapped_label=Gorwitol coomingol -spread_none.title=Hoto tawtu kelle kelle -spread_none_label=Alaa Spreads -spread_odd.title=Tawtu kelle puɗɗortooɗe kelle teelɗe -spread_odd_label=Kelle teelɗe -spread_even.title=Tawtu ɗereeji kelle puɗɗoriiɗi kelle teeltuɗe -spread_even_label=Kelle teeltuɗe -# Document properties dialog box -document_properties.title=Keeroraaɗi Winndannde… -document_properties_label=Keeroraaɗi Winndannde… -document_properties_file_name=Innde fiilde: -document_properties_file_size=Ɓetol fiilde: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bite) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bite) -document_properties_title=Tiitoonde: -document_properties_author=Binnduɗo: -document_properties_subject=Toɓɓere: -document_properties_keywords=Kelmekele jiytirɗe: -document_properties_creation_date=Ñalnde Sosaa: -document_properties_modification_date=Ñalnde Waylaa: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Cosɗo: -document_properties_producer=Paggiiɗo PDF: -document_properties_version=Yamre PDF: -document_properties_page_count=Limoore Kelle: -document_properties_page_size=Ɓeto Hello: -document_properties_page_size_unit_inches=nder -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=dariingo -document_properties_page_size_orientation_landscape=wertiingo -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Ɓataake -document_properties_page_size_name_legal=Laawol -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Ɗisngo geese yaawngo: -document_properties_linearized_yes=Eey -document_properties_linearized_no=Alaa -document_properties_close=Uddu -print_progress_message=Nana heboo winnditaade fiilannde… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Haaytu -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggilo Palal Sawndo -toggle_sidebar_notification.title=Palal sawndo (dokimaa oo ina waɗi taarngo/cinnde) -toggle_sidebar_label=Toggilo Palal Sawndo -document_outline.title=Hollu Ƴiyal Fiilannde (dobdobo ngam wertude/taggude teme fof) -document_outline_label=Toɓɓe Fiilannde -attachments.title=Hollu Ɗisanɗe -attachments_label=Ɗisanɗe -thumbs.title=Hollu Dooɓe -thumbs_label=Dooɓe -findbar.title=Yiylo e fiilannde -findbar_label=Yiytu -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Hello {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Dooɓre Hello {{page}} -# Find panel button title and messages -find_input.title=Yiytu -find_input.placeholder=Yiylo nder dokimaa -find_previous.title=Yiylo cilol ɓennugol konngol ngol -find_previous_label=Ɓennuɗo -find_next.title=Yiylo cilol garowol konngol ngol -find_next_label=Yeeso -find_highlight=Jalbin fof -find_match_case_label=Jaaɓnu darnde -find_entire_word_label=Kelme timmuɗe tan -find_reached_top=Heɓii fuɗɗorde fiilannde, jokku faya les -find_reached_bottom=Heɓii hoore fiilannde, jokku faya les -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} wonande laabi {{total}} -find_match_count[two]={{current}} wonande laabi {{total}} -find_match_count[few]={{current}} wonande laabi {{total}} -find_match_count[many]={{current}} wonande laabi {{total}} -find_match_count[other]={{current}} wonande laabi {{total}} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Ko ɓuri laabi {{limit}} -find_match_count_limit[one]=Ko ɓuri laani {{limit}} -find_match_count_limit[two]=Ko ɓuri laabi {{limit}} -find_match_count_limit[few]=Ko ɓuri laabi {{limit}} -find_match_count_limit[many]=Ko ɓuri laabi {{limit}} -find_match_count_limit[other]=Ko ɓuri laabi {{limit}} -find_not_found=Konngi njiyataa -# Error panel labels -error_more_info=Ɓeydu Humpito -error_less_info=Ustu Humpito -error_close=Uddu -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ɓatakuure: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fiilde: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Gorol: {{line}} -rendering_error=Juumre waɗii tuma nde yoŋkittoo hello. -# Predefined zoom values -page_scale_width=Njaajeendi Hello -page_scale_fit=Keƴeendi Hello -page_scale_auto=Loongorde Jaajol -page_scale_actual=Ɓetol Jaati -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Juumre waɗii tuma nde loowata PDF oo. -invalid_file_error=Fiilde PDF moƴƴaani walla jiibii. -missing_file_error=Fiilde PDF ena ŋakki. -unexpected_response_error=Jaabtol sarworde tijjinooka. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Siiftannde] -password_label=Naatu finnde ngam uddite ndee fiilde PDF. -password_invalid=Finnde moƴƴaani. Tiiɗno eto kadi. -password_ok=OK -password_cancel=Haaytu -printing_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde. -printing_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol. -web_fonts_disabled=Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fi/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fi/viewer.properties deleted file mode 100644 index 0585ed761522d1c7a4e2cd08af2cc585e246d560..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fi/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Edellinen sivu -previous_label=Edellinen -next.title=Seuraava sivu -next_label=Seuraava -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Sivu -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} / {{pagesCount}}) -zoom_out.title=Loitonna -zoom_out_label=Loitonna -zoom_in.title=Lähennä -zoom_in_label=Lähennä -zoom.title=Suurennus -presentation_mode.title=Siirry esitystilaan -presentation_mode_label=Esitystila -open_file.title=Avaa tiedosto -open_file_label=Avaa -print.title=Tulosta -print_label=Tulosta -download.title=Lataa -download_label=Lataa -bookmark.title=Avoin ikkuna (kopioi tai avaa uuteen ikkunaan) -bookmark_label=Avoin ikkuna -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Siirry ensimmäiselle sivulle -first_page.label=Siirry ensimmäiselle sivulle -first_page_label=Siirry ensimmäiselle sivulle -last_page.title=Siirry viimeiselle sivulle -last_page.label=Siirry viimeiselle sivulle -last_page_label=Siirry viimeiselle sivulle -page_rotate_cw.title=Kierrä oikealle -page_rotate_cw.label=Kierrä oikealle -page_rotate_cw_label=Kierrä oikealle -page_rotate_ccw.title=Kierrä vasemmalle -page_rotate_ccw.label=Kierrä vasemmalle -page_rotate_ccw_label=Kierrä vasemmalle -cursor_text_select_tool.title=Käytä tekstinvalintatyökalua -cursor_text_select_tool_label=Tekstinvalintatyökalu -cursor_hand_tool.title=Käytä käsityökalua -cursor_hand_tool_label=Käsityökalu -scroll_vertical.title=Käytä pystysuuntaista vieritystä -scroll_vertical_label=Pystysuuntainen vieritys -scroll_horizontal.title=Käytä vaakasuuntaista vieritystä -scroll_horizontal_label=Vaakasuuntainen vieritys -scroll_wrapped.title=Käytä rivittyvää vieritystä -scroll_wrapped_label=Rivittyvä vieritys -spread_none.title=Älä yhdistä sivuja aukeamiksi -spread_none_label=Ei aukeamia -spread_odd.title=Yhdistä sivut aukeamiksi alkaen parittomalta sivulta -spread_odd_label=Parittomalta alkavat aukeamat -spread_even.title=Yhdistä sivut aukeamiksi alkaen parilliselta sivulta -spread_even_label=Parilliselta alkavat aukeamat -# Document properties dialog box -document_properties.title=Dokumentin ominaisuudet… -document_properties_label=Dokumentin ominaisuudet… -document_properties_file_name=Tiedostonimi: -document_properties_file_size=Tiedoston koko: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kt ({{size_b}} tavua) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Mt ({{size_b}} tavua) -document_properties_title=Otsikko: -document_properties_author=Tekijä: -document_properties_subject=Aihe: -document_properties_keywords=Avainsanat: -document_properties_creation_date=Luomispäivämäärä: -document_properties_modification_date=Muokkauspäivämäärä: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Luoja: -document_properties_producer=PDF-tuottaja: -document_properties_version=PDF-versio: -document_properties_page_count=Sivujen määrä: -document_properties_page_size=Sivun koko: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=pysty -document_properties_page_size_orientation_landscape=vaaka -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Nopea web-katselu: -document_properties_linearized_yes=Kyllä -document_properties_linearized_no=Ei -document_properties_close=Sulje -print_progress_message=Valmistellaan dokumenttia tulostamista varten… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}} % -print_progress_close=Peruuta -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Näytä/piilota sivupaneeli -toggle_sidebar_notification.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys tai liitteitä) -toggle_sidebar_notification2.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys/liitteitä/tasoja) -toggle_sidebar_label=Näytä/piilota sivupaneeli -document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla) -document_outline_label=Dokumentin sisällys -attachments.title=Näytä liitteet -attachments_label=Liitteet -layers.title=Näytä tasot (kaksoisnapsauta palauttaaksesi kaikki tasot oletustilaan) -layers_label=Tasot -thumbs.title=Näytä pienoiskuvat -thumbs_label=Pienoiskuvat -current_outline_item.title=Etsi nykyinen sisällyksen kohta -current_outline_item_label=Nykyinen sisällyksen kohta -findbar.title=Etsi dokumentista -findbar_label=Etsi -additional_layers=Lisätasot -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Sivu {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Sivu {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Pienoiskuva sivusta {{page}} -# Find panel button title and messages -find_input.title=Etsi -find_input.placeholder=Etsi dokumentista… -find_previous.title=Etsi hakusanan edellinen osuma -find_previous_label=Edellinen -find_next.title=Etsi hakusanan seuraava osuma -find_next_label=Seuraava -find_highlight=Korosta kaikki -find_match_case_label=Huomioi kirjainkoko -find_entire_word_label=Kokonaiset sanat -find_reached_top=Päästiin dokumentin alkuun, jatketaan lopusta -find_reached_bottom=Päästiin dokumentin loppuun, jatketaan alusta -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} / {{total}} osuma -find_match_count[two]={{current}} / {{total}} osumaa -find_match_count[few]={{current}} / {{total}} osumaa -find_match_count[many]={{current}} / {{total}} osumaa -find_match_count[other]={{current}} / {{total}} osumaa -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Enemmän kuin {{limit}} osumaa -find_match_count_limit[one]=Enemmän kuin {{limit}} osuma -find_match_count_limit[two]=Enemmän kuin {{limit}} osumaa -find_match_count_limit[few]=Enemmän kuin {{limit}} osumaa -find_match_count_limit[many]=Enemmän kuin {{limit}} osumaa -find_match_count_limit[other]=Enemmän kuin {{limit}} osumaa -find_not_found=Hakusanaa ei löytynyt -# Error panel labels -error_more_info=Lisätietoja -error_less_info=Lisätietoja -error_close=Sulje -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (kooste: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Virheilmoitus: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pino: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Tiedosto: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rivi: {{line}} -rendering_error=Tapahtui virhe piirrettäessä sivua. -# Predefined zoom values -page_scale_width=Sivun leveys -page_scale_fit=Koko sivu -page_scale_auto=Automaattinen suurennus -page_scale_actual=Todellinen koko -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % -# Loading indicator messages -loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa. -invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto. -missing_file_error=Puuttuva PDF-tiedosto. -unexpected_response_error=Odottamaton vastaus palvelimelta. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Kirjoita PDF-tiedoston salasana. -password_invalid=Virheellinen salasana. Yritä uudestaan. -password_ok=OK -password_cancel=Peruuta -printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja. -printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa. -web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fr/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fr/viewer.properties deleted file mode 100644 index 6038811b6c2a0a776fd3f1489c336816baea89b5..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fr/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Page précédente -previous_label=Précédent -next.title=Page suivante -next_label=Suivant -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Page -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=sur {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} sur {{pagesCount}}) -zoom_out.title=Zoom arrière -zoom_out_label=Zoom arrière -zoom_in.title=Zoom avant -zoom_in_label=Zoom avant -zoom.title=Zoom -presentation_mode.title=Basculer en mode présentation -presentation_mode_label=Mode présentation -open_file.title=Ouvrir le fichier -open_file_label=Ouvrir le fichier -print.title=Imprimer -print_label=Imprimer -download.title=Télécharger -download_label=Télécharger -bookmark.title=Affichage courant (copier ou ouvrir dans une nouvelle fenêtre) -bookmark_label=Affichage actuel -# Secondary toolbar and context menu -tools.title=Outils -tools_label=Outils -first_page.title=Aller à la première page -first_page.label=Aller à la première page -first_page_label=Aller à la première page -last_page.title=Aller à la dernière page -last_page.label=Aller à la dernière page -last_page_label=Aller à la dernière page -page_rotate_cw.title=Rotation horaire -page_rotate_cw.label=Rotation horaire -page_rotate_cw_label=Rotation horaire -page_rotate_ccw.title=Rotation antihoraire -page_rotate_ccw.label=Rotation antihoraire -page_rotate_ccw_label=Rotation antihoraire -cursor_text_select_tool.title=Activer l’outil de sélection de texte -cursor_text_select_tool_label=Outil de sélection de texte -cursor_hand_tool.title=Activer l’outil main -cursor_hand_tool_label=Outil main -scroll_vertical.title=Utiliser le défilement vertical -scroll_vertical_label=Défilement vertical -scroll_horizontal.title=Utiliser le défilement horizontal -scroll_horizontal_label=Défilement horizontal -scroll_wrapped.title=Utiliser le défilement par bloc -scroll_wrapped_label=Défilement par bloc -spread_none.title=Ne pas afficher les pages deux à deux -spread_none_label=Pas de double affichage -spread_odd.title=Afficher les pages par deux, impaires à gauche -spread_odd_label=Doubles pages, impaires à gauche -spread_even.title=Afficher les pages par deux, paires à gauche -spread_even_label=Doubles pages, paires à gauche -# Document properties dialog box -document_properties.title=Propriétés du document… -document_properties_label=Propriétés du document… -document_properties_file_name=Nom du fichier : -document_properties_file_size=Taille du fichier : -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} Ko ({{size_b}} octets) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Mo ({{size_b}} octets) -document_properties_title=Titre : -document_properties_author=Auteur : -document_properties_subject=Sujet : -document_properties_keywords=Mots-clés : -document_properties_creation_date=Date de création : -document_properties_modification_date=Modifié le : -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}} à {{time}} -document_properties_creator=Créé par : -document_properties_producer=Outil de conversion PDF : -document_properties_version=Version PDF : -document_properties_page_count=Nombre de pages : -document_properties_page_size=Taille de la page : -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portrait -document_properties_page_size_orientation_landscape=paysage -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=lettre -document_properties_page_size_name_legal=document juridique -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Affichage rapide des pages web : -document_properties_linearized_yes=Oui -document_properties_linearized_no=Non -document_properties_close=Fermer -print_progress_message=Préparation du document pour l’impression… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}} % -print_progress_close=Annuler -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Afficher/Masquer le panneau latéral -toggle_sidebar_notification.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes) -toggle_sidebar_notification2.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes/calques) -toggle_sidebar_label=Afficher/Masquer le panneau latéral -document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les éléments) -document_outline_label=Signets du document -attachments.title=Afficher les pièces jointes -attachments_label=Pièces jointes -layers.title=Afficher les calques (double-cliquer pour réinitialiser tous les calques à l’état par défaut) -layers_label=Calques -thumbs.title=Afficher les vignettes -thumbs_label=Vignettes -current_outline_item.title=Trouver l’élément de plan actuel -current_outline_item_label=Élément de plan actuel -findbar.title=Rechercher dans le document -findbar_label=Rechercher -additional_layers=Calques additionnels -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Page {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Vignette de la page {{page}} -# Find panel button title and messages -find_input.title=Rechercher -find_input.placeholder=Rechercher dans le document… -find_previous.title=Trouver l’occurrence précédente de l’expression -find_previous_label=Précédent -find_next.title=Trouver la prochaine occurrence de l’expression -find_next_label=Suivant -find_highlight=Tout surligner -find_match_case_label=Respecter la casse -find_entire_word_label=Mots entiers -find_reached_top=Haut de la page atteint, poursuite depuis la fin -find_reached_bottom=Bas de la page atteint, poursuite au début -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=Occurrence {{current}} sur {{total}} -find_match_count[two]=Occurrence {{current}} sur {{total}} -find_match_count[few]=Occurrence {{current}} sur {{total}} -find_match_count[many]=Occurrence {{current}} sur {{total}} -find_match_count[other]=Occurrence {{current}} sur {{total}} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Plus de {{limit}} correspondances -find_match_count_limit[one]=Plus de {{limit}} correspondance -find_match_count_limit[two]=Plus de {{limit}} correspondances -find_match_count_limit[few]=Plus de {{limit}} correspondances -find_match_count_limit[many]=Plus de {{limit}} correspondances -find_match_count_limit[other]=Plus de {{limit}} correspondances -find_not_found=Expression non trouvée -# Error panel labels -error_more_info=Plus d’informations -error_less_info=Moins d’informations -error_close=Fermer -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (identifiant de compilation : {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message : {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pile : {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fichier : {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Ligne : {{line}} -rendering_error=Une erreur s’est produite lors de l’affichage de la page. -# Predefined zoom values -page_scale_width=Pleine largeur -page_scale_fit=Page entière -page_scale_auto=Zoom automatique -page_scale_actual=Taille réelle -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % -# Loading indicator messages -loading_error=Une erreur s’est produite lors du chargement du fichier PDF. -invalid_file_error=Fichier PDF invalide ou corrompu. -missing_file_error=Fichier PDF manquant. -unexpected_response_error=Réponse inattendue du serveur. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}} à {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Annotation {{type}}] -password_label=Veuillez saisir le mot de passe pour ouvrir ce fichier PDF. -password_invalid=Mot de passe incorrect. Veuillez réessayer. -password_ok=OK -password_cancel=Annuler -printing_not_supported=Attention : l’impression n’est pas totalement prise en charge par ce navigateur. -printing_not_ready=Attention : le PDF n’est pas entièrement chargé pour pouvoir l’imprimer. -web_fonts_disabled=Les polices web sont désactivées : impossible d’utiliser les polices intégrées au PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fy-NL/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fy-NL/viewer.properties deleted file mode 100644 index 580958362941a5c16dcb83c29c0ef12f2aaf276a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/fy-NL/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Foarige side -previous_label=Foarige -next.title=Folgjende side -next_label=Folgjende -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Side -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=fan {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} fan {{pagesCount}}) -zoom_out.title=Utzoome -zoom_out_label=Utzoome -zoom_in.title=Ynzoome -zoom_in_label=Ynzoome -zoom.title=Zoome -presentation_mode.title=Wikselje nei presintaasjemodus -presentation_mode_label=Presintaasjemodus -open_file.title=Bestân iepenje -open_file_label=Iepenje -print.title=Ofdrukke -print_label=Ofdrukke -download.title=Downloade -download_label=Downloade -bookmark.title=Aktuele finster (kopiearje of iepenje yn nij finster) -bookmark_label=Aktuele finster -# Secondary toolbar and context menu -tools.title=Ark -tools_label=Ark -first_page.title=Gean nei earste side -first_page.label=Nei earste side gean -first_page_label=Gean nei earste side -last_page.title=Gean nei lêste side -last_page.label=Nei lêste side gean -last_page_label=Gean nei lêste side -page_rotate_cw.title=Rjochtsom draaie -page_rotate_cw.label=Rjochtsom draaie -page_rotate_cw_label=Rjochtsom draaie -page_rotate_ccw.title=Loftsom draaie -page_rotate_ccw.label=Loftsom draaie -page_rotate_ccw_label=Loftsom draaie -cursor_text_select_tool.title=Tekstseleksjehelpmiddel ynskeakelje -cursor_text_select_tool_label=Tekstseleksjehelpmiddel -cursor_hand_tool.title=Hânhelpmiddel ynskeakelje -cursor_hand_tool_label=Hânhelpmiddel -scroll_vertical.title=Fertikaal skowe brûke -scroll_vertical_label=Fertikaal skowe -scroll_horizontal.title=Horizontaal skowe brûke -scroll_horizontal_label=Horizontaal skowe -scroll_wrapped.title=Skowe mei oersjoch brûke -scroll_wrapped_label=Skowe mei oersjoch -spread_none.title=Sidesprieding net gearfetsje -spread_none_label=Gjin sprieding -spread_odd.title=Sidesprieding gearfetsje te starten mei ûneven nûmers -spread_odd_label=Uneven sprieding -spread_even.title=Sidesprieding gearfetsje te starten mei even nûmers -spread_even_label=Even sprieding -# Document properties dialog box -document_properties.title=Dokuminteigenskippen… -document_properties_label=Dokuminteigenskippen… -document_properties_file_name=Bestânsnamme: -document_properties_file_size=Bestânsgrutte: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titel: -document_properties_author=Auteur: -document_properties_subject=Underwerp: -document_properties_keywords=Kaaiwurden: -document_properties_creation_date=Oanmaakdatum: -document_properties_modification_date=Bewurkingsdatum: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Makker: -document_properties_producer=PDF-makker: -document_properties_version=PDF-ferzje: -document_properties_page_count=Siden: -document_properties_page_size=Sideformaat: -document_properties_page_size_unit_inches=yn -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=steand -document_properties_page_size_orientation_landscape=lizzend -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Juridysk -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Flugge webwerjefte: -document_properties_linearized_yes=Ja -document_properties_linearized_no=Nee -document_properties_close=Slute -print_progress_message=Dokumint tariede oar ôfdrukken… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Annulearje -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Sidebalke yn-/útskeakelje -toggle_sidebar_notification.title=Sidebalke yn-/útskeakelje (dokumint befettet outline/bylagen) -toggle_sidebar_notification2.title=Sidebalke yn-/útskeakelje (dokumint befettet oersjoch/bylagen/lagen) -toggle_sidebar_label=Sidebalke yn-/útskeakelje -document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen) -document_outline_label=Dokumintoersjoch -attachments.title=Bylagen toane -attachments_label=Bylagen -layers.title=Lagen toane (dûbelklik om alle lagen nei de standertsteat werom te setten) -layers_label=Lagen -thumbs.title=Foarbylden toane -thumbs_label=Foarbylden -current_outline_item.title=Aktueel item yn ynhâldsopjefte sykje -current_outline_item_label=Aktueel item yn ynhâldsopjefte -findbar.title=Sykje yn dokumint -findbar_label=Sykje -additional_layers=Oanfoljende lagen -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Side {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Side {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Foarbyld fan side {{page}} -# Find panel button title and messages -find_input.title=Sykje -find_input.placeholder=Sykje yn dokumint… -find_previous.title=It foarige foarkommen fan de tekst sykje -find_previous_label=Foarige -find_next.title=It folgjende foarkommen fan de tekst sykje -find_next_label=Folgjende -find_highlight=Alles markearje -find_match_case_label=Haadlettergefoelich -find_entire_word_label=Hiele wurden -find_reached_top=Boppekant fan dokumint berikt, trochgien fan ûnder ôf -find_reached_bottom=Ein fan dokumint berikt, trochgien fan boppe ôf -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} fan {{total}} oerienkomst -find_match_count[two]={{current}} fan {{total}} oerienkomsten -find_match_count[few]={{current}} fan {{total}} oerienkomsten -find_match_count[many]={{current}} fan {{total}} oerienkomsten -find_match_count[other]={{current}} fan {{total}} oerienkomsten -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mear as {{limit}} oerienkomsten -find_match_count_limit[one]=Mear as {{limit}} oerienkomst -find_match_count_limit[two]=Mear as {{limit}} oerienkomsten -find_match_count_limit[few]=Mear as {{limit}} oerienkomsten -find_match_count_limit[many]=Mear as {{limit}} oerienkomsten -find_match_count_limit[other]=Mear as {{limit}} oerienkomsten -find_not_found=Tekst net fûn -# Error panel labels -error_more_info=Mear ynformaasje -error_less_info=Minder ynformaasje -error_close=Slute -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js f{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Berjocht: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Bestân: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rigel: {{line}} -rendering_error=Der is in flater bard by it renderjen fan de side. -# Predefined zoom values -page_scale_width=Sidebreedte -page_scale_fit=Hiele side -page_scale_auto=Automatysk zoome -page_scale_actual=Werklike grutte -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Der is in flater bard by it laden fan de PDF. -invalid_file_error=Ynfalide of korruptearre PDF-bestân. -missing_file_error=PDF-bestân ûntbrekt. -unexpected_response_error=Unferwacht serverantwurd. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-annotaasje] -password_label=Jou it wachtwurd om dit PDF-bestân te iepenjen. -password_invalid=Ferkeard wachtwurd. Probearje opnij. -password_ok=OK -password_cancel=Annulearje -printing_not_supported=Warning: Printen is net folslein stipe troch dizze browser. -printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken. -web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ga-IE/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ga-IE/viewer.properties deleted file mode 100644 index 8114f1131dacda1048f846d8f5c98f6c85ed64a2..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ga-IE/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=An Leathanach Roimhe Seo -previous_label=Roimhe Seo -next.title=An Chéad Leathanach Eile -next_label=Ar Aghaidh -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Leathanach -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=as {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} as {{pagesCount}}) -zoom_out.title=Súmáil Amach -zoom_out_label=Súmáil Amach -zoom_in.title=Súmáil Isteach -zoom_in_label=Súmáil Isteach -zoom.title=Súmáil -presentation_mode.title=Úsáid an Mód Láithreoireachta -presentation_mode_label=Mód Láithreoireachta -open_file.title=Oscail Comhad -open_file_label=Oscail -print.title=Priontáil -print_label=Priontáil -download.title=Íoslódáil -download_label=Íoslódáil -bookmark.title=An t-amharc reatha (cóipeáil nó oscail i bhfuinneog nua) -bookmark_label=An tAmharc Reatha -# Secondary toolbar and context menu -tools.title=Uirlisí -tools_label=Uirlisí -first_page.title=Go dtí an chéad leathanach -first_page.label=Go dtí an chéad leathanach -first_page_label=Go dtí an chéad leathanach -last_page.title=Go dtí an leathanach deiridh -last_page.label=Go dtí an leathanach deiridh -last_page_label=Go dtí an leathanach deiridh -page_rotate_cw.title=Rothlaigh ar deiseal -page_rotate_cw.label=Rothlaigh ar deiseal -page_rotate_cw_label=Rothlaigh ar deiseal -page_rotate_ccw.title=Rothlaigh ar tuathal -page_rotate_ccw.label=Rothlaigh ar tuathal -page_rotate_ccw_label=Rothlaigh ar tuathal -cursor_text_select_tool.title=Cumasaigh an Uirlis Roghnaithe Téacs -cursor_text_select_tool_label=Uirlis Roghnaithe Téacs -cursor_hand_tool.title=Cumasaigh an Uirlis Láimhe -cursor_hand_tool_label=Uirlis Láimhe -# Document properties dialog box -document_properties.title=Airíonna na Cáipéise… -document_properties_label=Airíonna na Cáipéise… -document_properties_file_name=Ainm an chomhaid: -document_properties_file_size=Méid an chomhaid: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} beart) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} beart) -document_properties_title=Teideal: -document_properties_author=Údar: -document_properties_subject=Ábhar: -document_properties_keywords=Eochairfhocail: -document_properties_creation_date=Dáta Cruthaithe: -document_properties_modification_date=Dáta Athraithe: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Cruthaitheoir: -document_properties_producer=Cruthaitheoir an PDF: -document_properties_version=Leagan PDF: -document_properties_page_count=Líon Leathanach: -document_properties_close=Dún -print_progress_message=Cáipéis á hullmhú le priontáil… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cealaigh -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Scoránaigh an Barra Taoibh -toggle_sidebar_notification.title=Scoránaigh an Barra Taoibh (achoimre/iatáin sa cháipéis) -toggle_sidebar_label=Scoránaigh an Barra Taoibh -document_outline.title=Taispeáin Imlíne na Cáipéise (déchliceáil chun chuile rud a leathnú nó a laghdú) -document_outline_label=Creatlach na Cáipéise -attachments.title=Taispeáin Iatáin -attachments_label=Iatáin -thumbs.title=Taispeáin Mionsamhlacha -thumbs_label=Mionsamhlacha -findbar.title=Aimsigh sa Cháipéis -findbar_label=Aimsigh -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Leathanach {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Mionsamhail Leathanaigh {{page}} -# Find panel button title and messages -find_input.title=Aimsigh -find_input.placeholder=Aimsigh sa cháipéis… -find_previous.title=Aimsigh an sampla roimhe seo den nath seo -find_previous_label=Roimhe seo -find_next.title=Aimsigh an chéad sampla eile den nath sin -find_next_label=Ar aghaidh -find_highlight=Aibhsigh uile -find_match_case_label=Cásíogair -find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun -find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr -find_not_found=Frása gan aimsiú -# Error panel labels -error_more_info=Tuilleadh Eolais -error_less_info=Níos Lú Eolais -error_close=Dún -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Teachtaireacht: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Cruach: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Comhad: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Líne: {{line}} -rendering_error=Tharla earráid agus an leathanach á leagan amach. -# Predefined zoom values -page_scale_width=Leithead Leathanaigh -page_scale_fit=Laghdaigh go dtí an Leathanach -page_scale_auto=Súmáil Uathoibríoch -page_scale_actual=Fíormhéid -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Tharla earráid agus an cháipéis PDF á lódáil. -invalid_file_error=Comhad neamhbhailí nó truaillithe PDF. -missing_file_error=Comhad PDF ar iarraidh. -unexpected_response_error=Freagra ón bhfreastalaí nach rabhthas ag súil leis. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anótáil {{type}}] -password_label=Cuir an focal faire isteach chun an comhad PDF seo a oscailt. -password_invalid=Focal faire mícheart. Déan iarracht eile. -password_ok=OK -password_cancel=Cealaigh -printing_not_supported=Rabhadh: Ní thacaíonn an brabhsálaí le priontáil go hiomlán. -printing_not_ready=Rabhadh: Ní féidir an PDF a phriontáil go dtí go mbeidh an cháipéis iomlán lódáilte. -web_fonts_disabled=Tá clófhoirne Gréasáin díchumasaithe: ní féidir clófhoirne leabaithe PDF a úsáid. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gd/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gd/viewer.properties deleted file mode 100644 index f00893200247af744925108ba9a90a7f38b1d9e6..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gd/viewer.properties +++ /dev/null @@ -1,226 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=An duilleag roimhe -previous_label=Air ais -next.title=An ath-dhuilleag -next_label=Air adhart -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Duilleag -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=à {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} à {{pagesCount}}) -zoom_out.title=Sùm a-mach -zoom_out_label=Sùm a-mach -zoom_in.title=Sùm a-steach -zoom_in_label=Sùm a-steach -zoom.title=Sùm -presentation_mode.title=Gearr leum dhan mhodh taisbeanaidh -presentation_mode_label=Am modh taisbeanaidh -open_file.title=Fosgail faidhle -open_file_label=Fosgail -print.title=Clò-bhuail -print_label=Clò-bhuail -download.title=Luchdaich a-nuas -download_label=Luchdaich a-nuas -bookmark.title=An sealladh làithreach (dèan lethbhreac no fosgail e ann an uinneag ùr) -bookmark_label=An sealladh làithreach -# Secondary toolbar and context menu -tools.title=Innealan -tools_label=Innealan -first_page.title=Rach gun chiad duilleag -first_page.label=Rach gun chiad duilleag -first_page_label=Rach gun chiad duilleag -last_page.title=Rach gun duilleag mu dheireadh -last_page.label=Rach gun duilleag mu dheireadh -last_page_label=Rach gun duilleag mu dheireadh -page_rotate_cw.title=Cuairtich gu deiseil -page_rotate_cw.label=Cuairtich gu deiseil -page_rotate_cw_label=Cuairtich gu deiseil -page_rotate_ccw.title=Cuairtich gu tuathail -page_rotate_ccw.label=Cuairtich gu tuathail -page_rotate_ccw_label=Cuairtich gu tuathail -cursor_text_select_tool.title=Cuir an comas inneal taghadh an teacsa -cursor_text_select_tool_label=Inneal taghadh an teacsa -cursor_hand_tool.title=Cuir inneal na làimhe an comas -cursor_hand_tool_label=Inneal na làimhe -scroll_vertical.title=Cleachd sgroladh inghearach -scroll_vertical_label=Sgroladh inghearach -scroll_horizontal.title=Cleachd sgroladh còmhnard -scroll_horizontal_label=Sgroladh còmhnard -scroll_wrapped.title=Cleachd sgroladh paisgte -scroll_wrapped_label=Sgroladh paisgte -spread_none.title=Na cuir còmhla sgoileadh dhuilleagan -spread_none_label=Gun sgaoileadh dhuilleagan -spread_odd.title=Cuir còmhla duilleagan sgaoilte a thòisicheas le duilleagan aig a bheil àireamh chorr -spread_odd_label=Sgaoileadh dhuilleagan corra -spread_even.title=Cuir còmhla duilleagan sgaoilte a thòisicheas le duilleagan aig a bheil àireamh chothrom -spread_even_label=Sgaoileadh dhuilleagan cothrom -# Document properties dialog box -document_properties.title=Roghainnean na sgrìobhainne… -document_properties_label=Roghainnean na sgrìobhainne… -document_properties_file_name=Ainm an fhaidhle: -document_properties_file_size=Meud an fhaidhle: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Tiotal: -document_properties_author=Ùghdar: -document_properties_subject=Cuspair: -document_properties_keywords=Faclan-luirg: -document_properties_creation_date=Latha a chruthachaidh: -document_properties_modification_date=Latha atharrachaidh: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Cruthadair: -document_properties_producer=Saothraiche a' PDF: -document_properties_version=Tionndadh a' PDF: -document_properties_page_count=Àireamh de dhuilleagan: -document_properties_page_size=Meud na duilleige: -document_properties_page_size_unit_inches=ann an -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portraid -document_properties_page_size_orientation_landscape=dreach-tìre -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Litir -document_properties_page_size_name_legal=Laghail -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Grad shealladh-lìn: -document_properties_linearized_yes=Tha -document_properties_linearized_no=Chan eil -document_properties_close=Dùin -print_progress_message=Ag ullachadh na sgrìobhainn airson clò-bhualadh… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Sguir dheth -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toglaich am bàr-taoibh -toggle_sidebar_notification.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain aig an sgrìobhainn) -toggle_sidebar_label=Toglaich am bàr-taoibh -document_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a leudachadh/a cho-theannadh) -document_outline_label=Oir-loidhne na sgrìobhainne -attachments.title=Seall na ceanglachain -attachments_label=Ceanglachain -thumbs.title=Seall na dealbhagan -thumbs_label=Dealbhagan -findbar.title=Lorg san sgrìobhainn -findbar_label=Lorg -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Duilleag a {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Dealbhag duilleag a {{page}} -# Find panel button title and messages -find_input.title=Lorg -find_input.placeholder=Lorg san sgrìobhainn... -find_previous.title=Lorg làthair roimhe na h-abairt seo -find_previous_label=Air ais -find_next.title=Lorg ath-làthair na h-abairt seo -find_next_label=Air adhart -find_highlight=Soillsich a h-uile -find_match_case_label=Aire do litrichean mòra is beaga -find_entire_word_label=Faclan-slàna -find_reached_top=Ràinig sinn barr na duilleige, a' leantainn air adhart o bhonn na duilleige -find_reached_bottom=Ràinig sinn bonn na duilleige, a' leantainn air adhart o bharr na duilleige -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} à {{total}} mhaids -find_match_count[two]={{current}} à {{total}} mhaids -find_match_count[few]={{current}} à {{total}} maidsichean -find_match_count[many]={{current}} à {{total}} maids -find_match_count[other]={{current}} à {{total}} maids -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Barrachd air {{limit}} maids -find_match_count_limit[one]=Barrachd air {{limit}} mhaids -find_match_count_limit[two]=Barrachd air {{limit}} mhaids -find_match_count_limit[few]=Barrachd air {{limit}} maidsichean -find_match_count_limit[many]=Barrachd air {{limit}} maids -find_match_count_limit[other]=Barrachd air {{limit}} maids -find_not_found=Cha deach an abairt a lorg -# Error panel labels -error_more_info=Barrachd fiosrachaidh -error_less_info=Nas lugha de dh'fhiosrachadh -error_close=Dùin -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Teachdaireachd: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stac: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Faidhle: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Loidhne: {{line}} -rendering_error=Thachair mearachd rè reandaradh na duilleige. -# Predefined zoom values -page_scale_width=Leud na duilleige -page_scale_fit=Freagair ri meud na duilleige -page_scale_auto=Sùm fèin-obrachail -page_scale_actual=Am fìor-mheud -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Thachair mearachd rè luchdadh a' PDF. -invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte. -missing_file_error=Faidhle PDF a tha a dhìth. -unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Nòtachadh {{type}}] -password_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh. -password_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist? -password_ok=Ceart ma-thà -password_cancel=Sguir dheth -printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh. -printing_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh. -web_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gl/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gl/viewer.properties deleted file mode 100644 index 9c14fc28990919af990436a5c1df0f84e0552c25..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gl/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Páxina anterior -previous_label=Anterior -next.title=Seguinte páxina -next_label=Seguinte -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Páxina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Reducir -zoom_out_label=Reducir -zoom_in.title=Ampliar -zoom_in_label=Ampliar -zoom.title=Zoom -presentation_mode.title=Cambiar ao modo presentación -presentation_mode_label=Modo presentación -open_file.title=Abrir ficheiro -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar ou abrir nunha nova xanela) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Ferramentas -tools_label=Ferramentas -first_page.title=Ir á primeira páxina -first_page.label=Ir á primeira páxina -first_page_label=Ir á primeira páxina -last_page.title=Ir á última páxina -last_page.label=Ir á última páxina -last_page_label=Ir á última páxina -page_rotate_cw.title=Rotar no sentido das agullas do reloxo -page_rotate_cw.label=Rotar no sentido das agullas do reloxo -page_rotate_cw_label=Rotar no sentido das agullas do reloxo -page_rotate_ccw.title=Rotar no sentido contrario ás agullas do reloxo -page_rotate_ccw.label=Rotar no sentido contrario ás agullas do reloxo -page_rotate_ccw_label=Rotar no sentido contrario ás agullas do reloxo -cursor_text_select_tool.title=Activar a ferramenta de selección de texto -cursor_text_select_tool_label=Ferramenta de selección de texto -cursor_hand_tool.title=Activar a ferramenta man -cursor_hand_tool_label=Ferramenta man -scroll_vertical.title=Usar o desprazamento vertical -scroll_vertical_label=Desprazamento vertical -scroll_horizontal.title=Usar o desprazamento horizontal -scroll_horizontal_label=Desprazamento horizontal -scroll_wrapped.title=Usar desprazamento en bloque -scroll_wrapped_label=Desprazamento en bloque -spread_none.title=Non agrupar páxinas -spread_none_label=Ningún agrupamento -spread_odd.title=Crea grupo de páxinas que comezan con números de páxina impares -spread_odd_label=Agrupamento impar -spread_even.title=Crea grupo de páxinas que comezan con números de páxina pares -spread_even_label=Agrupamento par -# Document properties dialog box -document_properties.title=Propiedades do documento… -document_properties_label=Propiedades do documento… -document_properties_file_name=Nome do ficheiro: -document_properties_file_size=Tamaño do ficheiro: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Título: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras clave: -document_properties_creation_date=Data de creación: -document_properties_modification_date=Data de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creado por: -document_properties_producer=Xenerador do PDF: -document_properties_version=Versión de PDF: -document_properties_page_count=Número de páxinas: -document_properties_page_size=Tamaño da páxina: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=Vertical -document_properties_page_size_orientation_landscape=Horizontal -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Visualización rápida das páxinas web: -document_properties_linearized_yes=Si -document_properties_linearized_no=Non -document_properties_close=Pechar -print_progress_message=Preparando documento para imprimir… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancelar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Amosar/agochar a barra lateral -toggle_sidebar_notification.title=Amosar/agochar a barra lateral (o documento contén un esquema ou anexos) -toggle_sidebar_notification2.title=Alternar barra lateral (o documento contén esquema/anexos/capas) -toggle_sidebar_label=Amosar/agochar a barra lateral -document_outline.title=Amosar o esquema do documento (prema dúas veces para expandir/contraer todos os elementos) -document_outline_label=Esquema do documento -attachments.title=Amosar anexos -attachments_label=Anexos -layers.title=Mostrar capas (prema dúas veces para restaurar todas as capas o estado predeterminado) -layers_label=Capas -thumbs.title=Amosar miniaturas -thumbs_label=Miniaturas -current_outline_item.title=Atopar o elemento delimitado actualmente -current_outline_item_label=Elemento delimitado actualmente -findbar.title=Atopar no documento -findbar_label=Atopar -additional_layers=Capas adicionais -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Páxina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Páxina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura da páxina {{page}} -# Find panel button title and messages -find_input.title=Atopar -find_input.placeholder=Atopar no documento… -find_previous.title=Atopar a anterior aparición da frase -find_previous_label=Anterior -find_next.title=Atopar a seguinte aparición da frase -find_next_label=Seguinte -find_highlight=Realzar todo -find_match_case_label=Diferenciar maiúsculas de minúsculas -find_entire_word_label=Palabras completas -find_reached_top=Chegouse ao inicio do documento, continuar desde o final -find_reached_bottom=Chegouse ao final do documento, continuar desde o inicio -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidencia -find_match_count[two]={{current}} de {{total}} coincidencias -find_match_count[few]={{current}} de {{total}} coincidencias -find_match_count[many]={{current}} de {{total}} coincidencias -find_match_count[other]={{current}} de {{total}} coincidencias -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Máis de {{limit}} coincidencias -find_match_count_limit[one]=Máis de {{limit}} coincidencia -find_match_count_limit[two]=Máis de {{limit}} coincidencias -find_match_count_limit[few]=Máis de {{limit}} coincidencias -find_match_count_limit[many]=Máis de {{limit}} coincidencias -find_match_count_limit[other]=Máis de {{limit}} coincidencias -find_not_found=Non se atopou a frase -# Error panel labels -error_more_info=Máis información -error_less_info=Menos información -error_close=Pechar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (Identificador da compilación: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaxe: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ficheiro: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Liña: {{line}} -rendering_error=Produciuse un erro ao representar a páxina. -# Predefined zoom values -page_scale_width=Largura da páxina -page_scale_fit=Axuste de páxina -page_scale_auto=Zoom automático -page_scale_actual=Tamaño actual -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Produciuse un erro ao cargar o PDF. -invalid_file_error=Ficheiro PDF danado ou non válido. -missing_file_error=Falta o ficheiro PDF. -unexpected_response_error=Resposta inesperada do servidor. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotación {{type}}] -password_label=Escriba o contrasinal para abrir este ficheiro PDF. -password_invalid=Contrasinal incorrecto. Tente de novo. -password_ok=Aceptar -password_cancel=Cancelar -printing_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador. -printing_not_ready=Aviso: O PDF non se cargou completamente para imprimirse. -web_fonts_disabled=Desactiváronse as fontes web: foi imposíbel usar as fontes incrustadas no PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gn/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gn/viewer.properties deleted file mode 100644 index d4bc8468194dd0021cc38cb580dd0ea12dbb0fb5..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gn/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Kuatiarogue mboyvegua -previous_label=Mboyvegua -next.title=Kuatiarogue upeigua -next_label=Upeigua -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Kuatiarogue -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} gui -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} of {{pagesCount}}) -zoom_out.title=Momichĩ -zoom_out_label=Momichĩ -zoom_in.title=Mbotuicha -zoom_in_label=Mbotuicha -zoom.title=Tuichakue -presentation_mode.title=Jehechauka reko moambue -presentation_mode_label=Jehechauka reko -open_file.title=Marandurendápe jeike -open_file_label=Jeike -print.title=Monguatia -print_label=Monguatia -download.title=Mboguejy -download_label=Mboguejy -bookmark.title=Ag̃agua jehecha (mbohasarã térã eike peteĩ ovetã pyahúpe) -bookmark_label=Ag̃agua jehecha -# Secondary toolbar and context menu -tools.title=Tembipuru -tools_label=Tembipuru -first_page.title=Kuatiarogue ñepyrũme jeho -first_page.label=Kuatiarogue ñepyrũme jeho -first_page_label=Kuatiarogue ñepyrũme jeho -last_page.title=Kuatiarogue pahápe jeho -last_page.label=Kuatiarogue pahápe jeho -last_page_label=Kuatiarogue pahápe jeho -page_rotate_cw.title=Aravóicha mbojere -page_rotate_cw.label=Aravóicha mbojere -page_rotate_cw_label=Aravóicha mbojere -page_rotate_ccw.title=Aravo rapykue gotyo mbojere -page_rotate_ccw.label=Aravo rapykue gotyo mbojere -page_rotate_ccw_label=Aravo rapykue gotyo mbojere -cursor_text_select_tool.title=Emyandy moñe’ẽrã jeporavo rembipuru -cursor_text_select_tool_label=Moñe’ẽrã jeporavo rembipuru -cursor_hand_tool.title=Tembipuru po pegua myandy -cursor_hand_tool_label=Tembipuru po pegua -scroll_vertical.title=Eipuru jeku’e ykeguáva -scroll_vertical_label=Jeku’e ykeguáva -scroll_horizontal.title=Eipuru jeku’e yvate gotyo -scroll_horizontal_label=Jeku’e yvate gotyo -scroll_wrapped.title=Eipuru jeku’e mbohyrupyre -scroll_wrapped_label=Jeku’e mbohyrupyre -spread_none.title=Ani ejuaju spreads kuatiarogue ndive -spread_none_label=Spreads ỹre -spread_odd.title=Embojuaju kuatiarogue jepysokue eñepyrũvo kuatiarogue impar-vagui -spread_odd_label=Spreads impar -spread_even.title=Embojuaju kuatiarogue jepysokue eñepyrũvo kuatiarogue par-vagui -spread_even_label=Ipukuve uvei -# Document properties dialog box -document_properties.title=Kuatia mba’etee… -document_properties_label=Kuatia mba’etee… -document_properties_file_name=Marandurenda réra: -document_properties_file_size=Marandurenda tuichakue: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Teratee: -document_properties_author=Apohára: -document_properties_subject=Mba’egua: -document_properties_keywords=Jehero: -document_properties_creation_date=Teñoihague arange: -document_properties_modification_date=Iñambue hague arange: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Apo’ypyha: -document_properties_producer=PDF mbosako’iha: -document_properties_version=PDF mbojuehegua: -document_properties_page_count=Kuatiarogue papapy: -document_properties_page_size=Kuatiarogue tuichakue: -document_properties_page_size_unit_inches=Amo -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=Oĩháicha -document_properties_page_size_orientation_landscape=apaisado -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Kuatiañe’ẽ -document_properties_page_size_name_legal=Tee -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Ñanduti jahecha pya’e: -document_properties_linearized_yes=Añete -document_properties_linearized_no=Ahániri -document_properties_close=Mboty -print_progress_message=Embosako’i kuatia emonguatia hag̃ua… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Heja -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Tenda yke moambue -toggle_sidebar_notification.title=Embojopyru tenda ykegua (kuatia oguereko kora/marandurenda moirũha) -toggle_sidebar_notification2.title=Embojopyru tenda ykegua (kuatia oguereko kuaakaha/moirũha/ñuãha) -toggle_sidebar_label=Tenda yke moambue -document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichĩ hag̃ua opavavete mba’epuru) -document_outline_label=Kuatia apopyre -attachments.title=Moirũha jehechauka -attachments_label=Moirũha -layers.title=Ehechauka ñuãha (eikutu jo’a emomba’apo hag̃ua opaite ñuãha tekoypýpe) -layers_label=Ñuãha -thumbs.title=Mba’emirĩ jehechauka -thumbs_label=Mba’emirĩ -current_outline_item.title=Eheka mba’epuru ag̃aguaitéva -current_outline_item_label=Mba’epuru ag̃aguaitéva -findbar.title=Kuatiápe jeheka -findbar_label=Juhu -additional_layers=Ñuãha moirũguáva -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Kuatiarogue {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Kuatiarogue {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Kuatiarogue mba’emirĩ {{page}} -# Find panel button title and messages -find_input.title=Juhu -find_input.placeholder=Kuatiápe jejuhu… -find_previous.title=Ejuhu ñe’ẽrysýi osẽ’ypy hague -find_previous_label=Mboyvegua -find_next.title=Eho ñe’ẽ juhupyre upeiguávape -find_next_label=Upeigua -find_highlight=Embojekuaavepa -find_match_case_label=Ejesareko taiguasu/taimichĩre -find_entire_word_label=Ñe’ẽ oĩmbáva -find_reached_top=Ojehupyty kuatia ñepyrũ, oku’ejeýta kuatia paha guive -find_reached_bottom=Ojehupyty kuatia paha, oku’ejeýta kuatia ñepyrũ guive -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} {{total}} ojojoguáva -find_match_count[two]={{current}} {{total}} ojojoguáva -find_match_count[few]={{current}} {{total}} ojojoguáva -find_match_count[many]={{current}} {{total}} ojojoguáva -find_match_count[other]={{current}} {{total}} ojojoguáva -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Hetave {{limit}} ojojoguáva -find_match_count_limit[one]=Hetave {{limit}} ojojogua -find_match_count_limit[two]=Hetave {{limit}} ojojoguáva -find_match_count_limit[few]=Hetave {{limit}} ojojoguáva -find_match_count_limit[many]=Hetave {{limit}} ojojoguáva -find_match_count_limit[other]=Hetave {{limit}} ojojoguáva -find_not_found=Ñe’ẽrysýi ojejuhu’ỹva -# Error panel labels -error_more_info=Maranduve -error_less_info=Sa’ive marandu -error_close=Mboty -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ñe’ẽmondo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Mbojo’apy: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Marandurenda: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Tairenda: {{line}} -rendering_error=Oiko jejavy ehechaukasévo kuatiarogue. -# Predefined zoom values -page_scale_width=Kuatiarogue pekue -page_scale_fit=Kuatiarogue ñemoĩporã -page_scale_auto=Tuichakue ijeheguíva -page_scale_actual=Tuichakue ag̃agua -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Oiko jejavy PDF oñemyeñyhẽnguévo. -invalid_file_error=PDF marandurenda ndoikóiva térã ivaipyréva. -missing_file_error=Ndaipóri PDF marandurenda -unexpected_response_error=Mohendahavusu mbohovái ñeha’arõ’ỹva. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Jehaipy {{type}}] -password_label=Emoinge ñe’ẽñemi eipe’a hag̃ua ko marandurenda PDF. -password_invalid=Ñe’ẽñemi ndoikóiva. Eha’ã jey. -password_ok=MONEĨ -password_cancel=Heja -printing_not_supported=Kyhyjerã: Ñembokuatia ndojokupytypái ko kundahára ndive. -printing_not_ready=Kyhyjerã: Ko PDF nahenyhẽmbái oñembokuatia hag̃uáicha. -web_fonts_disabled=Ñanduti taity oñemongéma: ndaikatumo’ãi eipuru PDF jehai’íva taity. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gu-IN/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gu-IN/viewer.properties deleted file mode 100644 index f7743bfe2acad8930253a3a8b6a0a0f5c38f5beb..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/gu-IN/viewer.properties +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=પહેલાનુ પાનું -previous_label=પહેલાનુ -next.title=આગળનુ પાનું -next_label=આગળનું -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=પાનું -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=નો {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} નો {{pagesCount}}) -zoom_out.title=મોટુ કરો -zoom_out_label=મોટુ કરો -zoom_in.title=નાનું કરો -zoom_in_label=નાનું કરો -zoom.title=નાનું મોટુ કરો -presentation_mode.title=રજૂઆત સ્થિતિમાં જાવ -presentation_mode_label=રજૂઆત સ્થિતિ -open_file.title=ફાઇલ ખોલો -open_file_label=ખોલો -print.title=છાપો -print_label=છારો -download.title=ડાઉનલોડ -download_label=ડાઉનલોડ -bookmark.title=વર્તમાન દૃશ્ય (નવી વિન્ડોમાં નકલ કરો અથવા ખોલો) -bookmark_label=વર્તમાન દૃશ્ય -# Secondary toolbar and context menu -tools.title=સાધનો -tools_label=સાધનો -first_page.title=પહેલાં પાનામાં જાવ -first_page.label=પહેલાં પાનામાં જાવ -first_page_label=પ્રથમ પાનાં પર જાવ -last_page.title=છેલ્લા પાનાં પર જાવ -last_page.label=છેલ્લા પાનામાં જાવ -last_page_label=છેલ્લા પાનાં પર જાવ -page_rotate_cw.title=ઘડિયાળનાં કાંટા તરફ ફેરવો -page_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો -page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો -page_rotate_ccw.title=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો -page_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો -page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો -cursor_text_select_tool.title=ટેક્સ્ટ પસંદગી ટૂલ સક્ષમ કરો -cursor_text_select_tool_label=ટેક્સ્ટ પસંદગી ટૂલ -cursor_hand_tool.title=હાથનાં સાધનને સક્રિય કરો -cursor_hand_tool_label=હેન્ડ ટૂલ -scroll_vertical.title=ઊભી સ્ક્રોલિંગનો ઉપયોગ કરો -scroll_vertical_label=ઊભી સ્ક્રોલિંગ -scroll_horizontal.title=આડી સ્ક્રોલિંગનો ઉપયોગ કરો -scroll_horizontal_label=આડી સ્ક્રોલિંગ -scroll_wrapped.title=આવરિત સ્ક્રોલિંગનો ઉપયોગ કરો -scroll_wrapped_label=આવરિત સ્ક્રોલિંગ -spread_none.title=પૃષ્ઠ સ્પ્રેડમાં જોડાવશો નહીં -spread_none_label=કોઈ સ્પ્રેડ નથી -spread_odd.title=એકી-ક્રમાંકિત પૃષ્ઠો સાથે પ્રારંભ થતાં પૃષ્ઠ સ્પ્રેડમાં જોડાઓ -spread_odd_label=એકી સ્પ્રેડ્સ -spread_even.title=નંબર-ક્રમાંકિત પૃષ્ઠોથી શરૂ થતાં પૃષ્ઠ સ્પ્રેડમાં જોડાઓ -spread_even_label=સરખું ફેલાવવું -# Document properties dialog box -document_properties.title=દસ્તાવેજ ગુણધર્મો… -document_properties_label=દસ્તાવેજ ગુણધર્મો… -document_properties_file_name=ફાઇલ નામ: -document_properties_file_size=ફાઇલ માપ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} બાઇટ) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} બાઇટ) -document_properties_title=શીર્ષક: -document_properties_author=લેખક: -document_properties_subject=વિષય: -document_properties_keywords=કિવર્ડ: -document_properties_creation_date=નિર્માણ તારીખ: -document_properties_modification_date=ફેરફાર તારીખ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=નિર્માતા: -document_properties_producer=PDF નિર્માતા: -document_properties_version=PDF આવૃત્તિ: -document_properties_page_count=પાનાં ગણતરી: -document_properties_page_size=પૃષ્ઠનું કદ: -document_properties_page_size_unit_inches=ઇંચ -document_properties_page_size_unit_millimeters=મીમી -document_properties_page_size_orientation_portrait=ઉભું -document_properties_page_size_orientation_landscape=આડુ -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=પત્ર -document_properties_page_size_name_legal=કાયદાકીય -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=ઝડપી વૅબ દૃશ્ય: -document_properties_linearized_yes=હા -document_properties_linearized_no=ના -document_properties_close=બંધ કરો -print_progress_message=છાપકામ માટે દસ્તાવેજ તૈયાર કરી રહ્યા છે… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=રદ કરો -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ટૉગલ બાજુપટ્ટી -toggle_sidebar_notification.title=સાઇડબારને ટૉગલ કરો(દસ્તાવેજની રૂપરેખા/જોડાણો શામેલ છે) -toggle_sidebar_label=ટૉગલ બાજુપટ્ટી -document_outline.title=દસ્તાવેજની રૂપરેખા બતાવો(બધી આઇટમ્સને વિસ્તૃત/સંકુચિત કરવા માટે ડબલ-ક્લિક કરો) -document_outline_label=દસ્તાવેજ રૂપરેખા -attachments.title=જોડાણોને બતાવો -attachments_label=જોડાણો -thumbs.title=થંબનેલ્સ બતાવો -thumbs_label=થંબનેલ્સ -findbar.title=દસ્તાવેજમાં શોધો -findbar_label=શોધો -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=પાનું {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=પાનાં {{page}} નું થંબનેલ્સ -# Find panel button title and messages -find_input.title=શોધો -find_input.placeholder=દસ્તાવેજમાં શોધો… -find_previous.title=શબ્દસમૂહની પાછલી ઘટનાને શોધો -find_previous_label=પહેલાંનુ -find_next.title=શબ્દસમૂહની આગળની ઘટનાને શોધો -find_next_label=આગળનું -find_highlight=બધુ પ્રકાશિત કરો -find_match_case_label=કેસ બંધબેસાડો -find_entire_word_label=સંપૂર્ણ શબ્દો -find_reached_top=દસ્તાવેજનાં ટોચે પહોંચી ગયા, તળિયેથી ચાલુ કરેલ હતુ -find_reached_bottom=દસ્તાવેજનાં અંતે પહોંચી ગયા, ઉપરથી ચાલુ કરેલ હતુ -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} માંથી {{current}} સરખું મળ્યું -find_match_count[two]={{total}} માંથી {{current}} સરખા મળ્યાં -find_match_count[few]={{total}} માંથી {{current}} સરખા મળ્યાં -find_match_count[many]={{total}} માંથી {{current}} સરખા મળ્યાં -find_match_count[other]={{total}} માંથી {{current}} સરખા મળ્યાં -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} કરતાં વધુ સરખા મળ્યાં -find_match_count_limit[one]={{limit}} કરતાં વધુ સરખું મળ્યું -find_match_count_limit[two]={{limit}} કરતાં વધુ સરખા મળ્યાં -find_match_count_limit[few]={{limit}} કરતાં વધુ સરખા મળ્યાં -find_match_count_limit[many]={{limit}} કરતાં વધુ સરખા મળ્યાં -find_match_count_limit[other]={{limit}} કરતાં વધુ સરખા મળ્યાં -find_not_found=શબ્દસમૂહ મળ્યુ નથી -# Error panel labels -error_more_info=વધારે જાણકારી -error_less_info=ઓછી જાણકારી -error_close=બંધ કરો -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=સંદેશો: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=સ્ટેક: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ફાઇલ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=વાક્ય: {{line}} -rendering_error=ભૂલ ઉદ્ભવી જ્યારે પાનાંનુ રેન્ડ કરી રહ્યા હોય. -# Predefined zoom values -page_scale_width=પાનાની પહોળાઇ -page_scale_fit=પાનું બંધબેસતુ -page_scale_auto=આપમેળે નાનુંમોટુ કરો -page_scale_actual=ચોક્કસ માપ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય. -invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ. -missing_file_error=ગુમ થયેલ PDF ફાઇલ. -unexpected_response_error=અનપેક્ષિત સર્વર પ્રતિસાદ. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=આ PDF ફાઇલને ખોલવા પાસવર્ડને દાખલ કરો. -password_invalid=અયોગ્ય પાસવર્ડ. મહેરબાની કરીને ફરી પ્રયત્ન કરો. -password_ok=બરાબર -password_cancel=રદ કરો -printing_not_supported=ચેતવણી: છાપવાનું આ બ્રાઉઝર દ્દારા સંપૂર્ણપણે આધારભૂત નથી. -printing_not_ready=Warning: PDF એ છાપવા માટે સંપૂર્ણપણે લાવેલ છે. -web_fonts_disabled=વેબ ફોન્ટ નિષ્ક્રિય થયેલ છે: ઍમ્બેડ થયેલ PDF ફોન્ટને વાપરવાનું અસમર્થ. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/he/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/he/viewer.properties deleted file mode 100644 index 6bbfa9c773b5cd6d8918d990d5a9007bce9544cd..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/he/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=דף קודם -previous_label=קודם -next.title=דף הבא -next_label=הבא -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=דף -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=מתוך {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} מתוך {{pagesCount}}) -zoom_out.title=התרחקות -zoom_out_label=התרחקות -zoom_in.title=התקרבות -zoom_in_label=התקרבות -zoom.title=מרחק מתצוגה -presentation_mode.title=מעבר למצב מצגת -presentation_mode_label=מצב מצגת -open_file.title=פתיחת קובץ -open_file_label=פתיחה -print.title=הדפסה -print_label=הדפסה -download.title=הורדה -download_label=הורדה -bookmark.title=תצוגה נוכחית (העתקה או פתיחה בחלון חדש) -bookmark_label=תצוגה נוכחית -# Secondary toolbar and context menu -tools.title=כלים -tools_label=כלים -first_page.title=מעבר לעמוד הראשון -first_page.label=מעבר לעמוד הראשון -first_page_label=מעבר לעמוד הראשון -last_page.title=מעבר לעמוד האחרון -last_page.label=מעבר לעמוד האחרון -last_page_label=מעבר לעמוד האחרון -page_rotate_cw.title=הטיה עם כיוון השעון -page_rotate_cw.label=הטיה עם כיוון השעון -page_rotate_cw_label=הטיה עם כיוון השעון -page_rotate_ccw.title=הטיה כנגד כיוון השעון -page_rotate_ccw.label=הטיה כנגד כיוון השעון -page_rotate_ccw_label=הטיה כנגד כיוון השעון -cursor_text_select_tool.title=הפעלת כלי בחירת טקסט -cursor_text_select_tool_label=כלי בחירת טקסט -cursor_hand_tool.title=הפעלת כלי היד -cursor_hand_tool_label=כלי יד -scroll_vertical.title=שימוש בגלילה אנכית -scroll_vertical_label=גלילה אנכית -scroll_horizontal.title=שימוש בגלילה אופקית -scroll_horizontal_label=גלילה אופקית -scroll_wrapped.title=שימוש בגלילה רציפה -scroll_wrapped_label=גלילה רציפה -spread_none.title=לא לצרף מפתחי עמודים -spread_none_label=ללא מפתחים -spread_odd.title=צירוף מפתחי עמודים שמתחילים בדפים עם מספרים אי־זוגיים -spread_odd_label=מפתחים אי־זוגיים -spread_even.title=צירוף מפתחי עמודים שמתחילים בדפים עם מספרים זוגיים -spread_even_label=מפתחים זוגיים -# Document properties dialog box -document_properties.title=מאפייני מסמך… -document_properties_label=מאפייני מסמך… -document_properties_file_name=שם קובץ: -document_properties_file_size=גודל הקובץ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} ק״ב ({{size_b}} בתים) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} מ״ב ({{size_b}} בתים) -document_properties_title=כותרת: -document_properties_author=מחבר: -document_properties_subject=נושא: -document_properties_keywords=מילות מפתח: -document_properties_creation_date=תאריך יצירה: -document_properties_modification_date=תאריך שינוי: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=יוצר: -document_properties_producer=יצרן PDF: -document_properties_version=גרסת PDF: -document_properties_page_count=מספר דפים: -document_properties_page_size=גודל העמוד: -document_properties_page_size_unit_inches=אינ׳ -document_properties_page_size_unit_millimeters=מ״מ -document_properties_page_size_orientation_portrait=לאורך -document_properties_page_size_orientation_landscape=לרוחב -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=מכתב -document_properties_page_size_name_legal=דף משפטי -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=תצוגת דף מהירה: -document_properties_linearized_yes=כן -document_properties_linearized_no=לא -document_properties_close=סגירה -print_progress_message=מסמך בהכנה להדפסה… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=ביטול -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=הצגה/הסתרה של סרגל הצד -toggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים) -toggle_sidebar_notification2.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים/שכבות) -toggle_sidebar_label=הצגה/הסתרה של סרגל הצד -document_outline.title=הצגת תוכן העניינים של המסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים) -document_outline_label=תוכן העניינים של המסמך -attachments.title=הצגת צרופות -attachments_label=צרופות -layers.title=הצגת שכבות (יש ללחוץ לחיצה כפולה כדי לאפס את כל השכבות למצב ברירת המחדל) -layers_label=שכבות -thumbs.title=הצגת תצוגה מקדימה -thumbs_label=תצוגה מקדימה -current_outline_item.title=מציאת פריט תוכן העניינים הנוכחי -current_outline_item_label=פריט תוכן העניינים הנוכחי -findbar.title=חיפוש במסמך -findbar_label=חיפוש -additional_layers=שכבות נוספות -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=עמוד {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=עמוד {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=תצוגה מקדימה של עמוד {{page}} -# Find panel button title and messages -find_input.title=חיפוש -find_input.placeholder=חיפוש במסמך… -find_previous.title=מציאת המופע הקודם של הביטוי -find_previous_label=קודם -find_next.title=מציאת המופע הבא של הביטוי -find_next_label=הבא -find_highlight=הדגשת הכול -find_match_case_label=התאמת אותיות -find_entire_word_label=מילים שלמות -find_reached_top=הגיע לראש הדף, ממשיך מלמטה -find_reached_bottom=הגיע לסוף הדף, ממשיך מלמעלה -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=תוצאה {{current}} מתוך {{total}} -find_match_count[two]={{current}} מתוך {{total}} תוצאות -find_match_count[few]={{current}} מתוך {{total}} תוצאות -find_match_count[many]={{current}} מתוך {{total}} תוצאות -find_match_count[other]={{current}} מתוך {{total}} תוצאות -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=יותר מ־{{limit}} תוצאות -find_match_count_limit[one]=יותר מתוצאה אחת -find_match_count_limit[two]=יותר מ־{{limit}} תוצאות -find_match_count_limit[few]=יותר מ־{{limit}} תוצאות -find_match_count_limit[many]=יותר מ־{{limit}} תוצאות -find_match_count_limit[other]=יותר מ־{{limit}} תוצאות -find_not_found=הביטוי לא נמצא -# Error panel labels -error_more_info=מידע נוסף -error_less_info=פחות מידע -error_close=סגירה -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js גרסה {{version}} (בנייה: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=הודעה: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=תוכן מחסנית: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=קובץ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=שורה: {{line}} -rendering_error=אירעה שגיאה בעת עיבוד הדף. -# Predefined zoom values -page_scale_width=רוחב העמוד -page_scale_fit=התאמה לעמוד -page_scale_auto=מרחק מתצוגה אוטומטי -page_scale_actual=גודל אמיתי -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=אירעה שגיאה בעת טעינת ה־PDF. -invalid_file_error=קובץ PDF פגום או לא תקין. -missing_file_error=קובץ PDF חסר. -unexpected_response_error=תגובת שרת לא צפויה. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[הערת {{type}}] -password_label=נא להכניס את הססמה לפתיחת קובץ PDF זה. -password_invalid=ססמה שגויה. נא לנסות שנית. -password_ok=אישור -password_cancel=ביטול -printing_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה. -printing_not_ready=אזהרה: מסמך ה־PDF לא נטען לחלוטין עד מצב שמאפשר הדפסה. -web_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hi-IN/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hi-IN/viewer.properties deleted file mode 100644 index bcab4881851002a2f10303430b2a40fba10b8969..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hi-IN/viewer.properties +++ /dev/null @@ -1,224 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=पिछला पृष्ठ -previous_label=पिछला -next.title=अगला पृष्ठ -next_label=आगे -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=पृष्ठ: -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} का -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} of {{pagesCount}}) -zoom_out.title=\u0020छोटा करें -zoom_out_label=\u0020छोटा करें -zoom_in.title=बड़ा करें -zoom_in_label=बड़ा करें -zoom.title=बड़ा-छोटा करें -presentation_mode.title=प्रस्तुति अवस्था में जाएँ -presentation_mode_label=\u0020प्रस्तुति अवस्था -open_file.title=फ़ाइल खोलें -open_file_label=\u0020खोलें -print.title=छापें -print_label=\u0020छापें -download.title=डाउनलोड -download_label=डाउनलोड -bookmark.title=मौजूदा दृश्य (नए विंडो में नक़ल लें या खोलें) -bookmark_label=\u0020मौजूदा दृश्य -# Secondary toolbar and context menu -tools.title=औज़ार -tools_label=औज़ार -first_page.title=प्रथम पृष्ठ पर जाएँ -first_page.label=\u0020प्रथम पृष्ठ पर जाएँ -first_page_label=प्रथम पृष्ठ पर जाएँ -last_page.title=अंतिम पृष्ठ पर जाएँ -last_page.label=\u0020अंतिम पृष्ठ पर जाएँ -last_page_label=\u0020अंतिम पृष्ठ पर जाएँ -page_rotate_cw.title=घड़ी की दिशा में घुमाएँ -page_rotate_cw.label=घड़ी की दिशा में घुमाएँ -page_rotate_cw_label=घड़ी की दिशा में घुमाएँ -page_rotate_ccw.title=घड़ी की दिशा से उल्टा घुमाएँ -page_rotate_ccw.label=घड़ी की दिशा से उल्टा घुमाएँ -page_rotate_ccw_label=\u0020घड़ी की दिशा से उल्टा घुमाएँ -cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम करें -cursor_text_select_tool_label=पाठ चयन उपकरण -cursor_hand_tool.title=हस्त उपकरण सक्षम करें -cursor_hand_tool_label=हस्त उपकरण -scroll_vertical.title=लंबवत स्क्रॉलिंग का उपयोग करें -scroll_vertical_label=लंबवत स्क्रॉलिंग -scroll_horizontal.title=क्षितिजिय स्क्रॉलिंग का उपयोग करें -scroll_horizontal_label=क्षितिजिय स्क्रॉलिंग -scroll_wrapped.title=व्राप्पेड स्क्रॉलिंग का उपयोग करें -spread_none_label=कोई स्प्रेड उपलब्ध नहीं -spread_odd.title=विषम-क्रमांकित पृष्ठों से प्रारंभ होने वाले पृष्ठ स्प्रेड में शामिल हों -spread_odd_label=विषम फैलाव -# Document properties dialog box -document_properties.title=दस्तावेज़ विशेषता... -document_properties_label=दस्तावेज़ विशेषता... -document_properties_file_name=फ़ाइल नाम: -document_properties_file_size=फाइल आकारः -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=शीर्षक: -document_properties_author=लेखकः -document_properties_subject=विषय: -document_properties_keywords=कुंजी-शब्द: -document_properties_creation_date=निर्माण दिनांक: -document_properties_modification_date=संशोधन दिनांक: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=निर्माता: -document_properties_producer=PDF उत्पादक: -document_properties_version=PDF संस्करण: -document_properties_page_count=पृष्ठ गिनती: -document_properties_page_size=पृष्ठ आकार: -document_properties_page_size_unit_inches=इंच -document_properties_page_size_unit_millimeters=मिमी -document_properties_page_size_orientation_portrait=पोर्ट्रेट -document_properties_page_size_orientation_landscape=लैंडस्केप -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=पत्र -document_properties_page_size_name_legal=क़ानूनी -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=तीव्र वेब व्यू: -document_properties_linearized_yes=हाँ -document_properties_linearized_no=नहीं -document_properties_close=बंद करें -print_progress_message=छपाई के लिए दस्तावेज़ को तैयार किया जा रहा है... -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=रद्द करें -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=\u0020स्लाइडर टॉगल करें -toggle_sidebar_notification.title=साइडबार टॉगल करें (दस्तावेज़ में रूपरेखा शामिल है/attachments) -toggle_sidebar_label=स्लाइडर टॉगल करें -document_outline.title=दस्तावेज़ की रूपरेखा दिखाइए (सारी वस्तुओं को फलने अथवा समेटने के लिए दो बार क्लिक करें) -document_outline_label=दस्तावेज़ आउटलाइन -attachments.title=संलग्नक दिखायें -attachments_label=संलग्नक -thumbs.title=लघुछवियाँ दिखाएँ -thumbs_label=लघु छवि -findbar.title=\u0020दस्तावेज़ में ढूँढ़ें -findbar_label=ढूँढें -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=पृष्ठ {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=पृष्ठ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=पृष्ठ {{page}} की लघु-छवि -# Find panel button title and messages -find_input.title=ढूँढें -find_input.placeholder=दस्तावेज़ में खोजें... -find_previous.title=वाक्यांश की पिछली उपस्थिति ढूँढ़ें -find_previous_label=पिछला -find_next.title=वाक्यांश की अगली उपस्थिति ढूँढ़ें -find_next_label=अगला -find_highlight=\u0020सभी आलोकित करें -find_match_case_label=मिलान स्थिति -find_entire_word_label=संपूर्ण शब्द -find_reached_top=पृष्ठ के ऊपर पहुंच गया, नीचे से जारी रखें -find_reached_bottom=पृष्ठ के नीचे में जा पहुँचा, ऊपर से जारी -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} में {{current}} मेल -find_match_count[two]={{total}} में {{current}} मेल -find_match_count[few]={{total}} में {{current}} मेल -find_match_count[many]={{total}} में {{current}} मेल -find_match_count[other]={{total}} में {{current}} मेल -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} से अधिक मेल -find_match_count_limit[one]={{limit}} से अधिक मेल -find_match_count_limit[two]={{limit}} से अधिक मेल -find_match_count_limit[few]={{limit}} से अधिक मेल -find_match_count_limit[many]={{limit}} से अधिक मेल -find_match_count_limit[other]={{limit}} से अधिक मेल -find_not_found=वाक्यांश नहीं मिला -# Error panel labels -error_more_info=अधिक सूचना -error_less_info=कम सूचना -error_close=बंद करें -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=\u0020संदेश: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=स्टैक: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फ़ाइल: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=पंक्ति: {{line}} -rendering_error=पृष्ठ रेंडरिंग के दौरान त्रुटि आई. -# Predefined zoom values -page_scale_width=\u0020पृष्ठ चौड़ाई -page_scale_fit=पृष्ठ फिट -page_scale_auto=स्वचालित जूम -page_scale_actual=वास्तविक आकार -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF लोड करते समय एक त्रुटि हुई. -invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल. -missing_file_error=\u0020अनुपस्थित PDF फ़ाइल. -unexpected_response_error=अप्रत्याशित सर्वर प्रतिक्रिया. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=\u0020[{{type}} Annotation] -password_label=इस PDF फ़ाइल को खोलने के लिए कृपया कूटशब्द भरें. -password_invalid=अवैध कूटशब्द, कृपया फिर कोशिश करें. -password_ok=OK -password_cancel=रद्द करें -printing_not_supported=चेतावनी: इस ब्राउज़र पर छपाई पूरी तरह से समर्थित नहीं है. -printing_not_ready=चेतावनी: PDF छपाई के लिए पूरी तरह से लोड नहीं है. -web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय हैं: अंतःस्थापित PDF फॉन्टस के उपयोग में असमर्थ. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hr/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hr/viewer.properties deleted file mode 100644 index 57d06b9c8f1a24b44f4152775a68d5daeed86343..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hr/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Prethodna stranica -previous_label=Prethodna -next.title=Sljedeća stranica -next_label=Sljedeća -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Stranica -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=od {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} od {{pagesCount}}) -zoom_out.title=Umanji -zoom_out_label=Umanji -zoom_in.title=Uvećaj -zoom_in_label=Uvećaj -zoom.title=Zumiranje -presentation_mode.title=Prebaci u prezentacijski način rada -presentation_mode_label=Prezentacijski način rada -open_file.title=Otvori datoteku -open_file_label=Otvori -print.title=Ispiši -print_label=Ispiši -download.title=Preuzmi -download_label=Preuzmi -bookmark.title=Trenutačni prikaz (kopiraj ili otvori u novom prozoru) -bookmark_label=Trenutačni prikaz -# Secondary toolbar and context menu -tools.title=Alati -tools_label=Alati -first_page.title=Idi na prvu stranicu -first_page.label=Idi na prvu stranicu -first_page_label=Idi na prvu stranicu -last_page.title=Idi na posljednju stranicu -last_page.label=Idi na posljednju stranicu -last_page_label=Idi na posljednju stranicu -page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu -page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu -page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu -page_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu -page_rotate_ccw.label=Rotiraj obrnutno od smjera kazaljke na satu -page_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu -cursor_text_select_tool.title=Omogući alat za označavanje teksta -cursor_text_select_tool_label=Alat za označavanje teksta -cursor_hand_tool.title=Omogući ručni alat -cursor_hand_tool_label=Ručni alat -scroll_vertical.title=Koristi okomito pomicanje -scroll_vertical_label=Okomito pomicanje -scroll_horizontal.title=Koristi vodoravno pomicanje -scroll_horizontal_label=Vodoravno pomicanje -scroll_wrapped.title=Koristi kontinuirani raspored stranica -scroll_wrapped_label=Kontinuirani raspored stranica -spread_none.title=Ne izrađuj duplerice -spread_none_label=Pojedinačne stranice -spread_odd.title=Izradi duplerice koje počinju s neparnim stranicama -spread_odd_label=Neparne duplerice -spread_even.title=Izradi duplerice koje počinju s parnim stranicama -spread_even_label=Parne duplerice -# Document properties dialog box -document_properties.title=Svojstva dokumenta... -document_properties_label=Svojstva dokumenta... -document_properties_file_name=Naziv datoteke: -document_properties_file_size=Veličina datoteke: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajtova) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtova) -document_properties_title=Naslov: -document_properties_author=Autor: -document_properties_subject=Predmet: -document_properties_keywords=Ključne riječi: -document_properties_creation_date=Datum stvaranja: -document_properties_modification_date=Datum promjene: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Stvaratelj: -document_properties_producer=PDF stvaratelj: -document_properties_version=PDF verzija: -document_properties_page_count=Broj stranica: -document_properties_page_size=Dimenzije stranice: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=uspravno -document_properties_page_size_orientation_landscape=položeno -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Brzi web pregled: -document_properties_linearized_yes=Da -document_properties_linearized_no=Ne -document_properties_close=Zatvori -print_progress_message=Pripremanje dokumenta za ispis… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Odustani -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Prikaži/sakrij bočnu traku -toggle_sidebar_notification.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži strukturu/privitke) -toggle_sidebar_notification2.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži strukturu/privitke/slojeve) -toggle_sidebar_label=Prikaži/sakrij bočnu traku -document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki) -document_outline_label=Struktura dokumenta -attachments.title=Prikaži privitke -attachments_label=Privitci -layers.title=Prikaži slojeve (dvoklik za vraćanje svih slojeva u zadano stanje) -layers_label=Slojevi -thumbs.title=Prikaži minijature -thumbs_label=Minijature -current_outline_item.title=Pronađi trenutačni element strukture -current_outline_item_label=Trenutačni element strukture -findbar.title=Pronađi u dokumentu -findbar_label=Pronađi -additional_layers=Dodatni slojevi -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Stranica br. {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Stranica {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Minijatura stranice {{page}} -# Find panel button title and messages -find_input.title=Pronađi -find_input.placeholder=Pronađi u dokumentu … -find_previous.title=Pronađi prethodno pojavljivanje ovog izraza -find_previous_label=Prethodno -find_next.title=Pronađi sljedeće pojavljivanje ovog izraza -find_next_label=Sljedeće -find_highlight=Istankni sve -find_match_case_label=Razlikovanje velikih i malih slova -find_entire_word_label=Cijele riječi -find_reached_top=Dosegnut početak dokumenta, nastavak s kraja -find_reached_bottom=Dosegnut kraj dokumenta, nastavak s početka -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} od {{total}} se podudara -find_match_count[two]={{current}} od {{total}} se podudara -find_match_count[few]={{current}} od {{total}} se podudara -find_match_count[many]={{current}} od {{total}} se podudara -find_match_count[other]={{current}} od {{total}} se podudara -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Više od {{limit}} podudaranja -find_match_count_limit[one]=Više od {{limit}} podudaranja -find_match_count_limit[two]=Više od {{limit}} podudaranja -find_match_count_limit[few]=Više od {{limit}} podudaranja -find_match_count_limit[many]=Više od {{limit}} podudaranja -find_match_count_limit[other]=Više od {{limit}} podudaranja -find_not_found=Izraz nije pronađen -# Error panel labels -error_more_info=Više informacija -error_less_info=Manje informacija -error_close=Zatvori -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Poruka: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stog: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Datoteka: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Redak: {{line}} -rendering_error=Došlo je do greške prilikom iscrtavanja stranice. -# Predefined zoom values -page_scale_width=Prilagodi širini prozora -page_scale_fit=Prilagodi veličini prozora -page_scale_auto=Automatsko zumiranje -page_scale_actual=Stvarna veličina -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % -# Loading indicator messages -loading_error=Došlo je do greške pri učitavanju PDF-a. -invalid_file_error=Neispravna ili oštećena PDF datoteka. -missing_file_error=Nedostaje PDF datoteka. -unexpected_response_error=Neočekivani odgovor poslužitelja. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Bilješka] -password_label=Za otvoranje ove PDF datoteku upiši lozinku. -password_invalid=Neispravna lozinka. Pokušaj ponovo. -password_ok=U redu -password_cancel=Odustani -printing_not_supported=Upozorenje: Ovaj preglednik ne podržava u potpunosti ispisivanje. -printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za ispis. -web_fonts_disabled=Web fontovi su deaktivirani: nije moguće koristiti ugrađene PDF fontove. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hsb/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hsb/viewer.properties deleted file mode 100644 index f801af70856d964f7112ca4a0a92b5fd9859b39b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hsb/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Předchadna strona -previous_label=Wróćo -next.title=Přichodna strona -next_label=Dale -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Strona -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=z {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} z {{pagesCount}}) -zoom_out.title=Pomjeńšić -zoom_out_label=Pomjeńšić -zoom_in.title=Powjetšić -zoom_in_label=Powjetšić -zoom.title=Skalowanje -presentation_mode.title=Do prezentaciskeho modusa přeńć -presentation_mode_label=Prezentaciski modus -open_file.title=Dataju wočinić -open_file_label=Wočinić -print.title=Ćišćeć -print_label=Ćišćeć -download.title=Sćahnyć -download_label=Sćahnyć -bookmark.title=Aktualny napohlad (kopěrować abo w nowym woknje wočinić) -bookmark_label=Aktualny napohlad -# Secondary toolbar and context menu -tools.title=Nastroje -tools_label=Nastroje -first_page.title=K prěnjej stronje -first_page.label=K prěnjej stronje -first_page_label=K prěnjej stronje -last_page.title=K poslednjej stronje -last_page.label=K poslednjej stronje -last_page_label=K poslednjej stronje -page_rotate_cw.title=K směrej časnika wjerćeć -page_rotate_cw.label=K směrej časnika wjerćeć -page_rotate_cw_label=K směrej časnika wjerćeć -page_rotate_ccw.title=Přećiwo směrej časnika wjerćeć -page_rotate_ccw.label=Přećiwo směrej časnika wjerćeć -page_rotate_ccw_label=Přećiwo směrej časnika wjerćeć -cursor_text_select_tool.title=Nastroj za wuběranje teksta zmóžnić -cursor_text_select_tool_label=Nastroj za wuběranje teksta -cursor_hand_tool.title=Ručny nastroj zmóžnić -cursor_hand_tool_label=Ručny nastroj -scroll_vertical.title=Wertikalne suwanje wužiwać -scroll_vertical_label=Wertikalnje suwanje -scroll_horizontal.title=Horicontalne suwanje wužiwać -scroll_horizontal_label=Horicontalne suwanje -scroll_wrapped.title=Postupne suwanje wužiwać -scroll_wrapped_label=Postupne suwanje -spread_none.title=Strony njezwjazać -spread_none_label=Žana dwójna strona -spread_odd.title=Strony započinajo z njerunymi stronami zwjazać -spread_odd_label=Njerune strony -spread_even.title=Strony započinajo z runymi stronami zwjazać -spread_even_label=Rune strony -# Document properties dialog box -document_properties.title=Dokumentowe kajkosće… -document_properties_label=Dokumentowe kajkosće… -document_properties_file_name=Mjeno dataje: -document_properties_file_size=Wulkosć dataje: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajtow) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtow) -document_properties_title=Titul: -document_properties_author=Awtor: -document_properties_subject=Předmjet: -document_properties_keywords=Klučowe słowa: -document_properties_creation_date=Datum wutworjenja: -document_properties_modification_date=Datum změny: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Awtor: -document_properties_producer=PDF-zhotowjer: -document_properties_version=PDF-wersija: -document_properties_page_count=Ličba stronow: -document_properties_page_size=Wulkosć strony: -document_properties_page_size_unit_inches=cól -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=wysoki format -document_properties_page_size_orientation_landscape=prěčny format -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Haj -document_properties_linearized_no=Ně -document_properties_close=Začinić -print_progress_message=Dokument so za ćišćenje přihotuje… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Přetorhnyć -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Bóčnicu pokazać/schować -toggle_sidebar_notification.title=Bóčnicu přepinać (dokument wobsahuje wobrys/přiwěški) -toggle_sidebar_notification2.title=Bóčnicu přepinać (dokument rozrjad/přiwěški/woršty wobsahuje) -toggle_sidebar_label=Bóčnicu pokazać/schować -document_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wšě zapiski pokazali/schowali) -document_outline_label=Dokumentowa struktura -attachments.title=Přiwěški pokazać -attachments_label=Přiwěški -layers.title=Woršty pokazać (klikńće dwójce, zo byšće wšě woršty na standardny staw wróćo stajił) -layers_label=Woršty -thumbs.title=Miniatury pokazać -thumbs_label=Miniatury -current_outline_item.title=Aktualny rozrjadowy zapisk pytać -current_outline_item_label=Aktualny rozrjadowy zapisk -findbar.title=W dokumenće pytać -findbar_label=Pytać -additional_layers=Dalše woršty -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Strona {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strona {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura strony {{page}} -# Find panel button title and messages -find_input.title=Pytać -find_input.placeholder=W dokumenće pytać… -find_previous.title=Předchadne wustupowanje pytanskeho wuraza pytać -find_previous_label=Wróćo -find_next.title=Přichodne wustupowanje pytanskeho wuraza pytać -find_next_label=Dale -find_highlight=Wšě wuzběhnyć -find_match_case_label=Wulkopisanje wobkedźbować -find_entire_word_label=Cyłe słowa -find_reached_top=Spočatk dokumenta docpěty, pokročuje so z kóncom -find_reached_bottom=Kónc dokument docpěty, pokročuje so ze spočatkom -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} z {{total}} wotpowědnika -find_match_count[two]={{current}} z {{total}} wotpowědnikow -find_match_count[few]={{current}} z {{total}} wotpowědnikow -find_match_count[many]={{current}} z {{total}} wotpowědnikow -find_match_count[other]={{current}} z {{total}} wotpowědnikow -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Wjace hač {{limit}} wotpowědnikow -find_match_count_limit[one]=Wjace hač {{limit}} wotpowědnik -find_match_count_limit[two]=Wjace hač {{limit}} wotpowědnikaj -find_match_count_limit[few]=Wjace hač {{limit}} wotpowědniki -find_match_count_limit[many]=Wjace hač {{limit}} wotpowědnikow -find_match_count_limit[other]=Wjace hač {{limit}} wotpowědnikow -find_not_found=Pytanski wuraz njeje so namakał -# Error panel labels -error_more_info=Wjace informacijow -error_less_info=Mjenje informacijow -error_close=Začinić -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Zdźělenka: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Lisćina zawołanjow: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dataja: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linka: {{line}} -rendering_error=Při zwobraznjenju strony je zmylk wustupił. -# Predefined zoom values -page_scale_width=Šěrokosć strony -page_scale_fit=Wulkosć strony -page_scale_auto=Awtomatiske skalowanje -page_scale_actual=Aktualna wulkosć -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Při začitowanju PDF je zmylk wustupił. -invalid_file_error=Njepłaćiwa abo wobškodźena PDF-dataja. -missing_file_error=Falowaca PDF-dataja. -unexpected_response_error=Njewočakowana serwerowa wotmołwa. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Typ přispomnjenki: {{type}}] -password_label=Zapodajće hesło, zo byšće PDF-dataju wočinił. -password_invalid=Njepłaćiwe hesło. Prošu spytajće hišće raz. -password_ok=W porjadku -password_cancel=Přetorhnyć -printing_not_supported=Warnowanje: Ćišćenje so přez tutón wobhladowak połnje njepodpěruje. -printing_not_ready=Warnowanje: PDF njeje so za ćišćenje dospołnje začitał. -web_fonts_disabled=Webpisma su znjemóžnjene: njeje móžno, zasadźene PDF-pisma wužiwać. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hu/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hu/viewer.properties deleted file mode 100644 index 4318774326b389c429e9e2807658d3d9cf75dbf0..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hu/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Előző oldal -previous_label=Előző -next.title=Következő oldal -next_label=Tovább -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Oldal -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=összesen: {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} / {{pagesCount}}) -zoom_out.title=Kicsinyítés -zoom_out_label=Kicsinyítés -zoom_in.title=Nagyítás -zoom_in_label=Nagyítás -zoom.title=Nagyítás -presentation_mode.title=Váltás bemutató módba -presentation_mode_label=Bemutató mód -open_file.title=Fájl megnyitása -open_file_label=Megnyitás -print.title=Nyomtatás -print_label=Nyomtatás -download.title=Letöltés -download_label=Letöltés -bookmark.title=Jelenlegi nézet (másolás vagy megnyitás új ablakban) -bookmark_label=Aktuális nézet -# Secondary toolbar and context menu -tools.title=Eszközök -tools_label=Eszközök -first_page.title=Ugrás az első oldalra -first_page.label=Ugrás az első oldalra -first_page_label=Ugrás az első oldalra -last_page.title=Ugrás az utolsó oldalra -last_page.label=Ugrás az utolsó oldalra -last_page_label=Ugrás az utolsó oldalra -page_rotate_cw.title=Forgatás az óramutató járásával egyezően -page_rotate_cw.label=Forgatás az óramutató járásával egyezően -page_rotate_cw_label=Forgatás az óramutató járásával egyezően -page_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen -page_rotate_ccw.label=Forgatás az óramutató járásával ellentétesen -page_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen -cursor_text_select_tool.title=Szövegkijelölő eszköz bekapcsolása -cursor_text_select_tool_label=Szövegkijelölő eszköz -cursor_hand_tool.title=Kéz eszköz bekapcsolása -cursor_hand_tool_label=Kéz eszköz -scroll_vertical.title=Függőleges görgetés használata -scroll_vertical_label=Függőleges görgetés -scroll_horizontal.title=Vízszintes görgetés használata -scroll_horizontal_label=Vízszintes görgetés -scroll_wrapped.title=Rácsos elrendezés használata -scroll_wrapped_label=Rácsos elrendezés -spread_none.title=Ne tapassza össze az oldalakat -spread_none_label=Nincs összetapasztás -spread_odd.title=Lapok összetapasztása, a páratlan számú oldalakkal kezdve -spread_odd_label=Összetapasztás: páratlan -spread_even.title=Lapok összetapasztása, a páros számú oldalakkal kezdve -spread_even_label=Összetapasztás: páros -# Document properties dialog box -document_properties.title=Dokumentum tulajdonságai… -document_properties_label=Dokumentum tulajdonságai… -document_properties_file_name=Fájlnév: -document_properties_file_size=Fájlméret: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bájt) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bájt) -document_properties_title=Cím: -document_properties_author=Szerző: -document_properties_subject=Tárgy: -document_properties_keywords=Kulcsszavak: -document_properties_creation_date=Létrehozás dátuma: -document_properties_modification_date=Módosítás dátuma: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Létrehozta: -document_properties_producer=PDF előállító: -document_properties_version=PDF verzió: -document_properties_page_count=Oldalszám: -document_properties_page_size=Lapméret: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=álló -document_properties_page_size_orientation_landscape=fekvő -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Jogi információk -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Gyors webes nézet: -document_properties_linearized_yes=Igen -document_properties_linearized_no=Nem -document_properties_close=Bezárás -print_progress_message=Dokumentum előkészítése nyomtatáshoz… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Mégse -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Oldalsáv be/ki -toggle_sidebar_notification.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket tartalmaz) -toggle_sidebar_notification2.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket/rétegeket tartalmaz) -toggle_sidebar_label=Oldalsáv be/ki -document_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem kinyitásához/összecsukásához) -document_outline_label=Dokumentumvázlat -attachments.title=Mellékletek megjelenítése -attachments_label=Van melléklet -layers.title=Rétegek megjelenítése (dupla kattintás az összes réteg alapértelmezett állapotra visszaállításához) -layers_label=Rétegek -thumbs.title=Bélyegképek megjelenítése -thumbs_label=Bélyegképek -current_outline_item.title=Jelenlegi vázlatelem megkeresése -current_outline_item_label=Jelenlegi vázlatelem -findbar.title=Keresés a dokumentumban -findbar_label=Keresés -additional_layers=További rétegek -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}}. oldal -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}}. oldal -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. oldal bélyegképe -# Find panel button title and messages -find_input.title=Keresés -find_input.placeholder=Keresés a dokumentumban… -find_previous.title=A kifejezés előző előfordulásának keresése -find_previous_label=Előző -find_next.title=A kifejezés következő előfordulásának keresése -find_next_label=Tovább -find_highlight=Összes kiemelése -find_match_case_label=Kis- és nagybetűk megkülönböztetése -find_entire_word_label=Teljes szavak -find_reached_top=A dokumentum eleje elérve, folytatás a végétől -find_reached_bottom=A dokumentum vége elérve, folytatás az elejétől -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} / {{total}} találat -find_match_count[two]={{current}} / {{total}} találat -find_match_count[few]={{current}} / {{total}} találat -find_match_count[many]={{current}} / {{total}} találat -find_match_count[other]={{current}} / {{total}} találat -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Több mint {{limit}} találat -find_match_count_limit[one]=Több mint {{limit}} találat -find_match_count_limit[two]=Több mint {{limit}} találat -find_match_count_limit[few]=Több mint {{limit}} találat -find_match_count_limit[many]=Több mint {{limit}} találat -find_match_count_limit[other]=Több mint {{limit}} találat -find_not_found=A kifejezés nem található -# Error panel labels -error_more_info=További tudnivalók -error_less_info=Kevesebb információ -error_close=Bezárás -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Üzenet: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Verem: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fájl: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Sor: {{line}} -rendering_error=Hiba történt az oldal feldolgozása közben. -# Predefined zoom values -page_scale_width=Oldalszélesség -page_scale_fit=Teljes oldal -page_scale_auto=Automatikus nagyítás -page_scale_actual=Valódi méret -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Hiba történt a PDF betöltésekor. -invalid_file_error=Érvénytelen vagy sérült PDF fájl. -missing_file_error=Hiányzó PDF fájl. -unexpected_response_error=Váratlan kiszolgálóválasz. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} megjegyzés] -password_label=Adja meg a jelszót a PDF fájl megnyitásához. -password_invalid=Helytelen jelszó. Próbálja újra. -password_ok=OK -password_cancel=Mégse -printing_not_supported=Figyelmeztetés: Ez a böngésző nem teljesen támogatja a nyomtatást. -printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz. -web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hy-AM/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hy-AM/viewer.properties deleted file mode 100644 index 8580141fbd9f149bbffef2d2016669def76c500c..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hy-AM/viewer.properties +++ /dev/null @@ -1,228 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Նախորդ էջը -previous_label=Նախորդը -next.title=Հաջորդ էջը -next_label=Հաջորդը -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Էջ. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}}-ից\u0020 -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}}-ը {{pagesCount}})-ից -zoom_out.title=Փոքրացնել -zoom_out_label=Փոքրացնել -zoom_in.title=Խոշորացնել -zoom_in_label=Խոշորացնել -zoom.title=Մասշտաբը\u0020 -presentation_mode.title=Անցնել Ներկայացման եղանակին -presentation_mode_label=Ներկայացման եղանակ -open_file.title=Բացել նիշք -open_file_label=Բացել -print.title=Տպել -print_label=Տպել -download.title=Բեռնել -download_label=Բեռնել -bookmark.title=Ընթացիկ տեսքով (պատճենել կամ բացել նոր պատուհանում) -bookmark_label=Ընթացիկ տեսքը -# Secondary toolbar and context menu -tools.title=Գործիքներ -tools_label=Գործիքներ -first_page.title=Անցնել առաջին էջին -first_page.label=Անցնել առաջին էջին -first_page_label=Անցնել առաջին էջին -last_page.title=Անցնել վերջին էջին -last_page.label=Անցնել վերջին էջին -last_page_label=Անցնել վերջին էջին -page_rotate_cw.title=Պտտել ըստ ժամացույցի սլաքի -page_rotate_cw.label=Պտտել ըստ ժամացույցի սլաքի -page_rotate_cw_label=Պտտել ըստ ժամացույցի սլաքի -page_rotate_ccw.title=Պտտել հակառակ ժամացույցի սլաքի -page_rotate_ccw.label=Պտտել հակառակ ժամացույցի սլաքի -page_rotate_ccw_label=Պտտել հակառակ ժամացույցի սլաքի -cursor_text_select_tool.title=Միացնել գրույթ ընտրելու գործիքը -cursor_text_select_tool_label=Գրույթը ընտրելու գործիք -cursor_hand_tool.title=Միացնել Ձեռքի գործիքը -cursor_hand_tool_label=Ձեռքի գործիք -scroll_vertical.title=Օգտագործել ուղղահայաց ոլորում -scroll_vertical_label=Ուղղահայաց ոլորում -scroll_horizontal.title=Օգտագործել հորիզոնական ոլորում -scroll_horizontal_label=Հորիզոնական ոլորում -scroll_wrapped.title=Օգտագործել փաթաթված ոլորում -scroll_wrapped_label=Փաթաթված ոլորում -spread_none.title=Մի միացեք էջի վերածածկերին -spread_none_label=Չկա վերածածկեր -spread_odd.title=Միացեք էջի վերածածկերին սկսելով՝ կենտ համարակալված էջերով -spread_odd_label=Կենտ վերածածկեր -spread_even.title=Միացեք էջի վերածածկերին սկսելով՝ զույգ համարակալված էջերով -spread_even_label=Զույգ վերածածկեր -# Document properties dialog box -document_properties.title=Փաստաթղթի հատկությունները… -document_properties_label=Փաստաթղթի հատկությունները… -document_properties_file_name=Նիշքի անունը. -document_properties_file_size=Նիշք չափը. -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} ԿԲ ({{size_b}} բայթ) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} ՄԲ ({{size_b}} բայթ) -document_properties_title=Վերնագիր. -document_properties_author=Հեղինակ․ -document_properties_subject=Վերնագիր. -document_properties_keywords=Հիմնաբառ. -document_properties_creation_date=Ստեղծելու ամսաթիվը. -document_properties_modification_date=Փոփոխելու ամսաթիվը. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Ստեղծող. -document_properties_producer=PDF-ի հեղինակը. -document_properties_version=PDF-ի տարբերակը. -document_properties_page_count=Էջերի քանակը. -document_properties_page_size=Էջի չափը. -document_properties_page_size_unit_inches=ում -document_properties_page_size_unit_millimeters=մմ -document_properties_page_size_orientation_portrait=ուղղաձիգ -document_properties_page_size_orientation_landscape=հորիզոնական -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Նամակ -document_properties_page_size_name_legal=Օրինական -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Արագ վեբ դիտում․ -document_properties_linearized_yes=Այո -document_properties_linearized_no=Ոչ -document_properties_close=Փակել -print_progress_message=Նախապատրաստում է փաստաթուղթը տպելուն... -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Չեղարկել -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Բացել/Փակել Կողային վահանակը -toggle_sidebar_notification.title=Փոխարկել Կողային փեղկը (փաստաթուղթը պարունակում է ուրվագիծ/կցորդներ) -toggle_sidebar_label=Բացել/Փակել Կողային վահանակը -document_outline.title=Ցուցադրել փաստաթղթի ուրվագիծը (կրկնակի սեղմեք՝ միավորները ընդարձակելու/կոծկելու համար) -document_outline_label=Փաստաթղթի բովանդակությունը -attachments.title=Ցուցադրել կցորդները -attachments_label=Կցորդներ -thumbs.title=Ցուցադրել Մանրապատկերը -thumbs_label=Մանրապատկերը -findbar.title=Գտնել փաստաթղթում -findbar_label=Որոնում -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Էջ {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Էջը {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Էջի մանրապատկերը {{page}} -# Find panel button title and messages -find_input.title=Որոնում -find_input.placeholder=Գտնել փաստաթղթում... -find_previous.title=Գտնել անրահայտության նախորդ հանդիպումը -find_previous_label=Նախորդը -find_next.title=Գտիր արտահայտության հաջորդ հանդիպումը -find_next_label=Հաջորդը -find_highlight=Գունանշել բոլորը -find_match_case_label=Մեծ(փոքր)ատառ հաշվի առնել -find_entire_word_label=Ամբողջ բառերը -find_reached_top=Հասել եք փաստաթղթի վերևին, կշարունակվի ներքևից -find_reached_bottom=Հասել եք փաստաթղթի վերջին, կշարունակվի վերևից -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ հոգնակի(ընդհանուր) ]} -find_match_count[one]={{current}} {{total}}-ի համընկնումից -find_match_count[two]={{current}} {{total}}-ի համընկնումներից -find_match_count[few]={{current}} {{total}}-ի համընկնումներից -find_match_count[many]={{current}} {{total}}-ի համընկնումներից -find_match_count[other]={{current}} {{total}}-ի համընկնումներից -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ հոգնակի (սահմանը) ]} -find_match_count_limit[zero]=Ավելին քան {{limit}} համընկնումները -find_match_count_limit[one]=Ավելին քան {{limit}} համընկնումը -find_match_count_limit[two]=Ավելին քան {{limit}} համընկնումներներ -find_match_count_limit[few]=Ավելին քան {{limit}} համընկնումներներ -find_match_count_limit[many]=Ավելին քան {{limit}} համընկնումներներ -find_match_count_limit[other]=Ավելին քան {{limit}} համընկնումներներ -find_not_found=Արտահայտությունը չգտնվեց -# Error panel labels -error_more_info=Ավելի շատ տեղեկություն -error_less_info=Քիչ տեղեկություն -error_close=Փակել -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (կառուցումը. {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Գրությունը. {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Շեղջ. {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ֆայլ. {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Տողը. {{line}} -rendering_error=Սխալ՝ էջը ստեղծելիս: -# Predefined zoom values -page_scale_width=Էջի լայնքը -page_scale_fit=Ձգել էջը -page_scale_auto=Ինքնաշխատ -page_scale_actual=Իրական չափը -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Սխալ՝ PDF ֆայլը բացելիս։ -invalid_file_error=Սխալ կամ վնասված PDF ֆայլ: -missing_file_error=PDF ֆայլը բացակայում է: -unexpected_response_error=Սպասարկիչի անսպասելի պատասխան: -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Ծանոթություն] -password_label=Մուտքագրեք PDF-ի գաղտնաբառը: -password_invalid=Գաղտնաբառը սխալ է: Կրկին փորձեք: -password_ok=Լավ -password_cancel=Չեղարկել -printing_not_supported=Զգուշացում. Տպելը ամբողջությամբ չի աջակցվում դիտարկիչի կողմից։ -printing_not_ready=Զգուշացում. PDF-ը ամբողջությամբ չի բեռնավորվել տպելու համար: -web_fonts_disabled=Վեբ-տառատեսակները անջատված են. հնարավոր չէ օգտագործել ներկառուցված PDF տառատեսակները: diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hye/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hye/viewer.properties deleted file mode 100644 index cb2379da65c52b97bf4ad0641cf2a114ee02fb7f..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/hye/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Նախորդ էջ -previous_label=Նախորդը -next.title=Յաջորդ էջ -next_label=Յաջորդը -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=էջ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}}-ից\u0020 -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}}-ը {{pagesCount}})-ից -zoom_out.title=Փոքրացնել -zoom_out_label=Փոքրացնել -zoom_in.title=Խոշորացնել -zoom_in_label=Խոշորացնել -zoom.title=Խոշորացում -presentation_mode.title=Անցնել ներկայացման եղանակին -presentation_mode_label=Ներկայացման եղանակ -open_file.title=Բացել նիշքը -open_file_label=Բացել -print.title=Տպել -print_label=Տպել -download.title=Բեռնել -download_label=Բեռնել -bookmark.title=Ընթացիկ տեսքով (պատճէնել կամ բացել նոր պատուհանում) -bookmark_label=Ընթացիկ տեսք -# Secondary toolbar and context menu -tools.title=Գործիքներ -tools_label=Գործիքներ -first_page.title=Գնալ դէպի առաջին էջ -first_page.label=Գնալ դէպի առաջին էջ -first_page_label=Գնալ դէպի առաջին էջ -last_page.title=Գնալ դէպի վերջին էջ -last_page.label=Գնալ դէպի վերջին էջ -last_page_label=Գնալ դէպի վերջին էջ -page_rotate_cw.title=Պտտել ժամացոյցի սլաքի ուղղութեամբ -page_rotate_cw.label=Պտտել ժամացոյցի սլաքի ուղղութեամբ -page_rotate_cw_label=Պտտել ժամացոյցի սլաքի ուղղութեամբ -page_rotate_ccw.title=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ -page_rotate_ccw.label=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ -page_rotate_ccw_label=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ -cursor_text_select_tool.title=Միացնել գրոյթ ընտրելու գործիքը -cursor_text_select_tool_label=Գրուածք ընտրելու գործիք -cursor_hand_tool.title=Միացնել ձեռքի գործիքը -cursor_hand_tool_label=Ձեռքի գործիք -scroll_vertical.title=Աւգտագործել ուղղահայեաց ոլորում -scroll_vertical_label=Ուղղահայեաց ոլորում -scroll_horizontal.title=Աւգտագործել հորիզոնական ոլորում -scroll_horizontal_label=Հորիզոնական ոլորում -scroll_wrapped.title=Աւգտագործել փաթաթուած ոլորում -scroll_wrapped_label=Փաթաթուած ոլորում -spread_none.title=Մի միացէք էջի կոնտեքստում -spread_none_label=Չկայ կոնտեքստ -spread_odd.title=Միացէք էջի կոնտեքստին սկսելով՝ կենտ համարակալուած էջերով -spread_odd_label=Տարաւրինակ կոնտեքստ -spread_even.title=Միացէք էջի կոնտեքստին սկսելով՝ զոյգ համարակալուած էջերով -spread_even_label=Հաւասար վերածածկեր -# Document properties dialog box -document_properties.title=Փաստաթղթի հատկութիւնները… -document_properties_label=Փաստաթղթի յատկութիւնները… -document_properties_file_name=Նիշքի անունը․ -document_properties_file_size=Նիշք չափը. -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} ԿԲ ({{size_b}} բայթ) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} ՄԲ ({{size_b}} բայթ) -document_properties_title=Վերնագիր -document_properties_author=Հեղինակ․ -document_properties_subject=առարկայ -document_properties_keywords=Հիմնաբառեր -document_properties_creation_date=Ստեղծման ամսաթիւ -document_properties_modification_date=Փոփոխութեան ամսաթիւ. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Ստեղծող -document_properties_producer=PDF-ի Արտադրողը. -document_properties_version=PDF-ի տարբերակը. -document_properties_page_count=Էջերի քանակը. -document_properties_page_size=Էջի չափը. -document_properties_page_size_unit_inches=ում -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=ուղղաձիգ -document_properties_page_size_orientation_landscape=հորիզոնական -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Նամակ -document_properties_page_size_name_legal=Աւրինական -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Արագ վեբ դիտում․ -document_properties_linearized_yes=Այո -document_properties_linearized_no=Ոչ -document_properties_close=Փակել -print_progress_message=Նախապատրաստում է փաստաթուղթը տպելուն… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Չեղարկել -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Փոխարկել կողային վահանակը -toggle_sidebar_notification.title=Փոխարկել կողային վահանակը (փաստաթուղթը պարունակում է ուրուագիծ/կցորդ) -toggle_sidebar_notification2.title=Փոխանջատել կողմնասիւնը (փաստաթուղթը պարունակում է ուրուագիծ/կցորդներ/շերտեր) -toggle_sidebar_label=Փոխարկել կողային վահանակը -document_outline.title=Ցուցադրել փաստաթղթի ուրուագիծը (կրկնակի սեղմէք՝ միաւորները ընդարձակելու/կոծկելու համար) -document_outline_label=Փաստաթղթի ուրուագիծ -attachments.title=Ցուցադրել կցորդները -attachments_label=Կցորդներ -layers.title=Ցուցադրել շերտերը (կրկնահպել վերակայելու բոլոր շերտերը սկզբնադիր վիճակի) -layers_label=Շերտեր -thumbs.title=Ցուցադրել մանրապատկերը -thumbs_label=Մանրապատկեր -current_outline_item.title=Գտէք ընթացիկ գծագրման տարրը -current_outline_item_label=Ընթացիկ գծագրման տարր -findbar.title=Գտնել փաստաթղթում -findbar_label=Որոնում -additional_layers=Լրացուցիչ շերտեր -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Էջ {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Էջը {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Էջի մանրապատկերը {{page}} -# Find panel button title and messages -find_input.title=Որոնում -find_input.placeholder=Գտնել փաստաթղթում… -find_previous.title=Գտնել արտայայտութեան նախորդ արտայայտութիւնը -find_previous_label=Նախորդը -find_next.title=Գտիր արտայայտութեան յաջորդ արտայայտութիւնը -find_next_label=Հաջորդը -find_highlight=Գունանշել բոլորը -find_match_case_label=Հաշուի առնել հանգամանքը -find_entire_word_label=Ամբողջ բառերը -find_reached_top=Հասել եք փաստաթղթի վերեւին,շարունակել ներքեւից -find_reached_bottom=Հասել էք փաստաթղթի վերջին, շարունակել վերեւից -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ հոգնակի(ընդհանուր) ]} -find_match_count[one]={{current}} {{total}}-ի համընկնումից -find_match_count[two]={{current}} {{total}}-ի համընկնումներից -find_match_count[few]={{current}} {{total}}-ի համընկնումներից -find_match_count[many]={{current}} {{total}}-ի համընկնումներից -find_match_count[other]={{current}} {{total}}-ի համընկնումներից -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ հոգնակի (սահմանը) ]} -find_match_count_limit[zero]=Աւելին քան {{limit}} համընկնումները -find_match_count_limit[one]=Աւելին քան {{limit}} համընկնումը -find_match_count_limit[two]=Աւելին քան {{limit}} համընկնումները -find_match_count_limit[few]=Աւելին քան {{limit}} համընկնումները -find_match_count_limit[many]=Աւելին քան {{limit}} համընկնումները -find_match_count_limit[other]=Աւելին քան {{limit}} համընկնումները -find_not_found=Արտայայտութիւնը չգտնուեց -# Error panel labels -error_more_info=Աւելի շատ տեղեկութիւն -error_less_info=Քիչ տեղեկութիւն -error_close=Փակել -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (կառուցումը. {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Գրութիւնը. {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Շեղջ. {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=նիշք․ {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Տողը. {{line}} -rendering_error=Սխալ է տեղի ունեցել էջի մեկնաբանման ժամանակ -# Predefined zoom values -page_scale_width=Էջի լայնութիւն -page_scale_fit=Հարմարեցնել էջը -page_scale_auto=Ինքնաշխատ խոշորացում -page_scale_actual=Իրական չափը -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF նիշքը բացելիս սխալ է տեղի ունեցել։ -invalid_file_error=Սխալ կամ վնասուած PDF նիշք։ -missing_file_error=PDF նիշքը բացակաիւմ է։ -unexpected_response_error=Սպասարկիչի անսպասելի պատասխան։ -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Ծանոթութիւն] -password_label=Մուտքագրէք գաղտնաբառը այս PDF նիշքը բացելու համար -password_invalid=Գաղտնաբառը սխալ է: Կրկին փորձէք: -password_ok=Լաւ -password_cancel=Չեղարկել -printing_not_supported=Զգուշացում. Տպելը ամբողջութեամբ չի աջակցուում զննարկիչի կողմից։ -printing_not_ready=Զգուշացում. PDF֊ը ամբողջութեամբ չի բեռնաւորուել տպելու համար։ -web_fonts_disabled=Վեբ-տառատեսակները անջատուած են. հնարաւոր չէ աւգտագործել ներկառուցուած PDF տառատեսակները։ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ia/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ia/viewer.properties deleted file mode 100644 index b802e1cdff6d09514837742053d160d64f84ac8a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ia/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pagina previe -previous_label=Previe -next.title=Pagina sequente -next_label=Sequente -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pagina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Distantiar -zoom_out_label=Distantiar -zoom_in.title=Approximar -zoom_in_label=Approximar -zoom.title=Zoom -presentation_mode.title=Excambiar a modo presentation -presentation_mode_label=Modo presentation -open_file.title=Aperir le file -open_file_label=Aperir -print.title=Imprimer -print_label=Imprimer -download.title=Discargar -download_label=Discargar -bookmark.title=Vista actual (copiar o aperir in un nove fenestra) -bookmark_label=Vista actual -# Secondary toolbar and context menu -tools.title=Instrumentos -tools_label=Instrumentos -first_page.title=Ir al prime pagina -first_page.label=Ir al prime pagina -first_page_label=Ir al prime pagina -last_page.title=Ir al prime pagina -last_page.label=Ir al prime pagina -last_page_label=Ir al prime pagina -page_rotate_cw.title=Rotar in senso horari -page_rotate_cw.label=Rotar in senso horari -page_rotate_cw_label=Rotar in senso horari -page_rotate_ccw.title=Rotar in senso antihorari -page_rotate_ccw.label=Rotar in senso antihorari -page_rotate_ccw_label=Rotar in senso antihorari -cursor_text_select_tool.title=Activar le instrumento de selection de texto -cursor_text_select_tool_label=Instrumento de selection de texto -cursor_hand_tool.title=Activar le instrumento mano -cursor_hand_tool_label=Instrumento mano -scroll_vertical.title=Usar rolamento vertical -scroll_vertical_label=Rolamento vertical -scroll_horizontal.title=Usar rolamento horizontal -scroll_horizontal_label=Rolamento horizontal -scroll_wrapped.title=Usar rolamento incapsulate -scroll_wrapped_label=Rolamento incapsulate -spread_none.title=Non junger paginas dual -spread_none_label=Sin paginas dual -spread_odd.title=Junger paginas dual a partir de paginas con numeros impar -spread_odd_label=Paginas dual impar -spread_even.title=Junger paginas dual a partir de paginas con numeros par -spread_even_label=Paginas dual par -# Document properties dialog box -document_properties.title=Proprietates del documento… -document_properties_label=Proprietates del documento… -document_properties_file_name=Nomine del file: -document_properties_file_size=Dimension de file: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titulo: -document_properties_author=Autor: -document_properties_subject=Subjecto: -document_properties_keywords=Parolas clave: -document_properties_creation_date=Data de creation: -document_properties_modification_date=Data de modification: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: -document_properties_producer=Productor PDF: -document_properties_version=Version PDF: -document_properties_page_count=Numero de paginas: -document_properties_page_size=Dimension del pagina: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertical -document_properties_page_size_orientation_landscape=horizontal -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Littera -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista web rapide: -document_properties_linearized_yes=Si -document_properties_linearized_no=No -document_properties_close=Clauder -print_progress_message=Preparation del documento pro le impression… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancellar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Monstrar/celar le barra lateral -toggle_sidebar_notification.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos) -toggle_sidebar_notification2.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos/stratos) -toggle_sidebar_label=Monstrar/celar le barra lateral -document_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos) -document_outline_label=Schema del documento -attachments.title=Monstrar le annexos -attachments_label=Annexos -layers.title=Monstrar stratos (clicca duple pro remontar tote le stratos al stato predefinite) -layers_label=Stratos -thumbs.title=Monstrar le vignettes -thumbs_label=Vignettes -current_outline_item.title=Trovar le elemento de structura actual -current_outline_item_label=Elemento de structura actual -findbar.title=Cercar in le documento -findbar_label=Cercar -additional_layers=Altere stratos -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Vignette del pagina {{page}} -# Find panel button title and messages -find_input.title=Cercar -find_input.placeholder=Cercar in le documento… -find_previous.title=Trovar le previe occurrentia del phrase -find_previous_label=Previe -find_next.title=Trovar le successive occurrentia del phrase -find_next_label=Sequente -find_highlight=Evidentiar toto -find_match_case_label=Distinguer majusculas/minusculas -find_entire_word_label=Parolas integre -find_reached_top=Initio del documento attingite, continuation ab fin -find_reached_bottom=Fin del documento attingite, continuation ab initio -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} concordantia -find_match_count[two]={{current}} de {{total}} concordantias -find_match_count[few]={{current}} de {{total}} concordantias -find_match_count[many]={{current}} de {{total}} concordantias -find_match_count[other]={{current}} de {{total}} concordantias -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Plus de {{limit}} concordantias -find_match_count_limit[one]=Plus de {{limit}} concordantia -find_match_count_limit[two]=Plus de {{limit}} concordantias -find_match_count_limit[few]=Plus de {{limit}} concordantias -find_match_count_limit[many]=Plus de {{limit}} correspondentias -find_match_count_limit[other]=Plus de {{limit}} concordantias -find_not_found=Phrase non trovate -# Error panel labels -error_more_info=Plus de informationes -error_less_info=Minus de informationes -error_close=Clauder -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linea: {{line}} -rendering_error=Un error occurreva durante que on processava le pagina. -# Predefined zoom values -page_scale_width=Plen largor del pagina -page_scale_fit=Pagina integre -page_scale_auto=Zoom automatic -page_scale_actual=Dimension actual -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Un error occurreva durante que on cargava le file PDF. -invalid_file_error=File PDF corrumpite o non valide. -missing_file_error=File PDF mancante. -unexpected_response_error=Responsa del servitor inexpectate. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Insere le contrasigno pro aperir iste file PDF. -password_invalid=Contrasigno invalide. Per favor retenta. -password_ok=OK -password_cancel=Cancellar -printing_not_supported=Attention : le impression non es totalmente supportate per ce navigator. -printing_not_ready=Attention: le file PDF non es integremente cargate pro lo poter imprimer. -web_fonts_disabled=Le typos de litteras web es disactivate: impossibile usar le typos de litteras PDF incorporate. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/id/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/id/viewer.properties deleted file mode 100644 index 9a4ad999c68df011304110d812377295af546579..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/id/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Laman Sebelumnya -previous_label=Sebelumnya -next.title=Laman Selanjutnya -next_label=Selanjutnya -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Halaman -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=dari {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} dari {{pagesCount}}) -zoom_out.title=Perkecil -zoom_out_label=Perkecil -zoom_in.title=Perbesar -zoom_in_label=Perbesar -zoom.title=Perbesaran -presentation_mode.title=Ganti ke Mode Presentasi -presentation_mode_label=Mode Presentasi -open_file.title=Buka Berkas -open_file_label=Buka -print.title=Cetak -print_label=Cetak -download.title=Unduh -download_label=Unduh -bookmark.title=Tampilan Sekarang (salin atau buka di jendela baru) -bookmark_label=Tampilan Sekarang -# Secondary toolbar and context menu -tools.title=Alat -tools_label=Alat -first_page.title=Buka Halaman Pertama -first_page.label=Ke Halaman Pertama -first_page_label=Buka Halaman Pertama -last_page.title=Buka Halaman Terakhir -last_page.label=Ke Halaman Terakhir -last_page_label=Buka Halaman Terakhir -page_rotate_cw.title=Putar Searah Jarum Jam -page_rotate_cw.label=Putar Searah Jarum Jam -page_rotate_cw_label=Putar Searah Jarum Jam -page_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam -page_rotate_ccw.label=Putar Berlawanan Arah Jarum Jam -page_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam -cursor_text_select_tool.title=Aktifkan Alat Seleksi Teks -cursor_text_select_tool_label=Alat Seleksi Teks -cursor_hand_tool.title=Aktifkan Alat Tangan -cursor_hand_tool_label=Alat Tangan -scroll_vertical.title=Gunakan Penggeseran Vertikal -scroll_vertical_label=Penggeseran Vertikal -scroll_horizontal.title=Gunakan Penggeseran Horizontal -scroll_horizontal_label=Penggeseran Horizontal -scroll_wrapped.title=Gunakan Penggeseran Terapit -scroll_wrapped_label=Penggeseran Terapit -spread_none.title=Jangan gabungkan lembar halaman -spread_none_label=Tidak Ada Lembaran -spread_odd.title=Gabungkan lembar lamanan mulai dengan halaman ganjil -spread_odd_label=Lembaran Ganjil -spread_even.title=Gabungkan lembar halaman dimulai dengan halaman genap -spread_even_label=Lembaran Genap -# Document properties dialog box -document_properties.title=Properti Dokumen… -document_properties_label=Properti Dokumen… -document_properties_file_name=Nama berkas: -document_properties_file_size=Ukuran berkas: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Judul: -document_properties_author=Penyusun: -document_properties_subject=Subjek: -document_properties_keywords=Kata Kunci: -document_properties_creation_date=Tanggal Dibuat: -document_properties_modification_date=Tanggal Dimodifikasi: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Pembuat: -document_properties_producer=Pemroduksi PDF: -document_properties_version=Versi PDF: -document_properties_page_count=Jumlah Halaman: -document_properties_page_size=Ukuran Laman: -document_properties_page_size_unit_inches=inci -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=tegak -document_properties_page_size_orientation_landscape=mendatar -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Tampilan Web Kilat: -document_properties_linearized_yes=Ya -document_properties_linearized_no=Tidak -document_properties_close=Tutup -print_progress_message=Menyiapkan dokumen untuk pencetakan… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Batalkan -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping -toggle_sidebar_notification.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran) -toggle_sidebar_notification2.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran/lapisan) -toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping -document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item) -document_outline_label=Kerangka Dokumen -attachments.title=Tampilkan Lampiran -attachments_label=Lampiran -layers.title=Tampilkan Lapisan (klik ganda untuk mengatur ulang semua lapisan ke keadaan baku) -layers_label=Lapisan -thumbs.title=Tampilkan Miniatur -thumbs_label=Miniatur -current_outline_item.title=Cari Butir Ikhtisar Saat Ini -current_outline_item_label=Butir Ikhtisar Saat Ini -findbar.title=Temukan di Dokumen -findbar_label=Temukan -additional_layers=Lapisan Tambahan -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Laman {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Laman {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatur Laman {{page}} -# Find panel button title and messages -find_input.title=Temukan -find_input.placeholder=Temukan di dokumen… -find_previous.title=Temukan kata sebelumnya -find_previous_label=Sebelumnya -find_next.title=Temukan lebih lanjut -find_next_label=Selanjutnya -find_highlight=Sorot semuanya -find_match_case_label=Cocokkan BESAR/kecil -find_entire_word_label=Seluruh teks -find_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah -find_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} dari {{total}} hasil -find_match_count[two]={{current}} dari {{total}} hasil -find_match_count[few]={{current}} dari {{total}} hasil -find_match_count[many]={{current}} dari {{total}} hasil -find_match_count[other]={{current}} dari {{total}} hasil -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Ditemukan lebih dari {{limit}} -find_match_count_limit[one]=Ditemukan lebih dari {{limit}} -find_match_count_limit[two]=Ditemukan lebih dari {{limit}} -find_match_count_limit[few]=Ditemukan lebih dari {{limit}} -find_match_count_limit[many]=Ditemukan lebih dari {{limit}} -find_match_count_limit[other]=Ditemukan lebih dari {{limit}} -find_not_found=Frasa tidak ditemukan -# Error panel labels -error_more_info=Lebih Banyak Informasi -error_less_info=Lebih Sedikit Informasi -error_close=Tutup -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Pesan: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Berkas: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Baris: {{line}} -rendering_error=Galat terjadi saat merender laman. -# Predefined zoom values -page_scale_width=Lebar Laman -page_scale_fit=Muat Laman -page_scale_auto=Perbesaran Otomatis -page_scale_actual=Ukuran Asli -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Galat terjadi saat memuat PDF. -invalid_file_error=Berkas PDF tidak valid atau rusak. -missing_file_error=Berkas PDF tidak ada. -unexpected_response_error=Balasan server yang tidak diharapkan. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotasi {{type}}] -password_label=Masukkan sandi untuk membuka berkas PDF ini. -password_invalid=Sandi tidak valid. Silakan coba lagi. -password_ok=Oke -password_cancel=Batal -printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini. -printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak. -web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/is/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/is/viewer.properties deleted file mode 100644 index 1c6c84c142a53d2003d7fd3966765b916c48f94b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/is/viewer.properties +++ /dev/null @@ -1,220 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Fyrri síða -previous_label=Fyrri -next.title=Næsta síða -next_label=Næsti -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Síða -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=af {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} af {{pagesCount}}) -zoom_out.title=Minnka -zoom_out_label=Minnka -zoom_in.title=Stækka -zoom_in_label=Stækka -zoom.title=Aðdráttur -presentation_mode.title=Skipta yfir á kynningarham -presentation_mode_label=Kynningarhamur -open_file.title=Opna skrá -open_file_label=Opna -print.title=Prenta -print_label=Prenta -download.title=Hala niður -download_label=Hala niður -bookmark.title=Núverandi sýn (afritaðu eða opnaðu í nýjum glugga) -bookmark_label=Núverandi sýn -# Secondary toolbar and context menu -tools.title=Verkfæri -tools_label=Verkfæri -first_page.title=Fara á fyrstu síðu -first_page.label=Fara á fyrstu síðu -first_page_label=Fara á fyrstu síðu -last_page.title=Fara á síðustu síðu -last_page.label=Fara á síðustu síðu -last_page_label=Fara á síðustu síðu -page_rotate_cw.title=Snúa réttsælis -page_rotate_cw.label=Snúa réttsælis -page_rotate_cw_label=Snúa réttsælis -page_rotate_ccw.title=Snúa rangsælis -page_rotate_ccw.label=Snúa rangsælis -page_rotate_ccw_label=Snúa rangsælis -cursor_text_select_tool.title=Virkja textavalsáhald -cursor_text_select_tool_label=Textavalsáhald -cursor_hand_tool.title=Virkja handarverkfæri -cursor_hand_tool_label=Handarverkfæri -scroll_vertical.title=Nota lóðrétt skrun -scroll_vertical_label=Lóðrétt skrun -scroll_horizontal.title=Nota lárétt skrun -scroll_horizontal_label=Lárétt skrun -spread_none.title=Ekki taka þátt í dreifingu síðna -spread_none_label=Engin dreifing -spread_odd.title=Taka þátt í dreifingu síðna með oddatölum -spread_odd_label=Oddatöludreifing -spread_even.title=Taktu þátt í dreifingu síðna með jöfnuntölum -spread_even_label=Jafnatöludreifing -# Document properties dialog box -document_properties.title=Eiginleikar skjals… -document_properties_label=Eiginleikar skjals… -document_properties_file_name=Skráarnafn: -document_properties_file_size=Skrárstærð: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titill: -document_properties_author=Hönnuður: -document_properties_subject=Efni: -document_properties_keywords=Stikkorð: -document_properties_creation_date=Búið til: -document_properties_modification_date=Dags breytingar: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Höfundur: -document_properties_producer=PDF framleiðandi: -document_properties_version=PDF útgáfa: -document_properties_page_count=Blaðsíðufjöldi: -document_properties_page_size=Stærð síðu: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=skammsnið -document_properties_page_size_orientation_landscape=langsnið -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=Já -document_properties_linearized_no=Nei -document_properties_close=Loka -print_progress_message=Undirbý skjal fyrir prentun… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Hætta við -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Víxla hliðslá -toggle_sidebar_notification.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi) -toggle_sidebar_label=Víxla hliðslá -document_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum) -document_outline_label=Efnisskipan skjals -attachments.title=Sýna viðhengi -attachments_label=Viðhengi -thumbs.title=Sýna smámyndir -thumbs_label=Smámyndir -findbar.title=Leita í skjali -findbar_label=Leita -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Síða {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Smámynd af síðu {{page}} -# Find panel button title and messages -find_input.title=Leita -find_input.placeholder=Leita í skjali… -find_previous.title=Leita að fyrra tilfelli þessara orða -find_previous_label=Fyrri -find_next.title=Leita að næsta tilfelli þessara orða -find_next_label=Næsti -find_highlight=Lita allt -find_match_case_label=Passa við stafstöðu -find_entire_word_label=Heil orð -find_reached_top=Náði efst í skjal, held áfram neðst -find_reached_bottom=Náði enda skjals, held áfram efst -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} af {{total}} niðurstöðu -find_match_count[two]={{current}} af {{total}} niðurstöðum -find_match_count[few]={{current}} af {{total}} niðurstöðum -find_match_count[many]={{current}} af {{total}} niðurstöðum -find_match_count[other]={{current}} af {{total}} niðurstöðum -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Fleiri en {{limit}} niðurstöður -find_match_count_limit[one]=Fleiri en {{limit}} niðurstaða -find_match_count_limit[two]=Fleiri en {{limit}} niðurstöður -find_match_count_limit[few]=Fleiri en {{limit}} niðurstöður -find_match_count_limit[many]=Fleiri en {{limit}} niðurstöður -find_match_count_limit[other]=Fleiri en {{limit}} niðurstöður -find_not_found=Fann ekki orðið -# Error panel labels -error_more_info=Meiri upplýsingar -error_less_info=Minni upplýsingar -error_close=Loka -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Skilaboð: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stafli: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Skrá: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Lína: {{line}} -rendering_error=Upp kom villa við að birta síðuna. -# Predefined zoom values -page_scale_width=Síðubreidd -page_scale_fit=Passa á síðu -page_scale_auto=Sjálfvirkur aðdráttur -page_scale_actual=Raunstærð -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Villa kom upp við að hlaða inn PDF. -invalid_file_error=Ógild eða skemmd PDF skrá. -missing_file_error=Vantar PDF skrá. -unexpected_response_error=Óvænt svar frá netþjóni. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Skýring] -password_label=Sláðu inn lykilorð til að opna þessa PDF skrá. -password_invalid=Ógilt lykilorð. Reyndu aftur. -password_ok=Í lagi -password_cancel=Hætta við -printing_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra. -printing_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun. -web_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/it/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/it/viewer.properties deleted file mode 100644 index 3a3347fb1ece8e4814bcf2348ba17af5382c3e13..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/it/viewer.properties +++ /dev/null @@ -1,177 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -previous.title=Pagina precedente -previous_label=Precedente -next.title=Pagina successiva -next_label=Successiva -page.title=Pagina -of_pages=di {{pagesCount}} -page_of_pages=({{pageNumber}} di {{pagesCount}}) -zoom_out.title=Riduci zoom -zoom_out_label=Riduci zoom -zoom_in.title=Aumenta zoom -zoom_in_label=Aumenta zoom -zoom.title=Zoom -presentation_mode.title=Passa alla modalità presentazione -presentation_mode_label=Modalità presentazione -open_file.title=Apri file -open_file_label=Apri -print.title=Stampa -print_label=Stampa -download.title=Scarica questo documento -download_label=Download -bookmark.title=Visualizzazione corrente (copia o apri in una nuova finestra) -bookmark_label=Visualizzazione corrente -tools.title=Strumenti -tools_label=Strumenti -first_page.title=Vai alla prima pagina -first_page.label=Vai alla prima pagina -first_page_label=Vai alla prima pagina -last_page.title=Vai all’ultima pagina -last_page.label=Vai all’ultima pagina -last_page_label=Vai all’ultima pagina -page_rotate_cw.title=Ruota in senso orario -page_rotate_cw.label=Ruota in senso orario -page_rotate_cw_label=Ruota in senso orario -page_rotate_ccw.title=Ruota in senso antiorario -page_rotate_ccw.label=Ruota in senso antiorario -page_rotate_ccw_label=Ruota in senso antiorario -cursor_text_select_tool.title=Attiva strumento di selezione testo -cursor_text_select_tool_label=Strumento di selezione testo -cursor_hand_tool.title=Attiva strumento mano -cursor_hand_tool_label=Strumento mano -scroll_vertical.title=Scorri le pagine in verticale -scroll_vertical_label=Scorrimento verticale -scroll_horizontal.title=Scorri le pagine in orizzontale -scroll_horizontal_label=Scorrimento orizzontale -scroll_wrapped.title=Scorri le pagine in verticale, disponendole da sinistra a destra e andando a capo automaticamente -scroll_wrapped_label=Scorrimento con a capo automatico -spread_none.title=Non raggruppare pagine -spread_none_label=Nessun raggruppamento -spread_odd.title=Crea gruppi di pagine che iniziano con numeri di pagina dispari -spread_odd_label=Raggruppamento dispari -spread_even.title=Crea gruppi di pagine che iniziano con numeri di pagina pari -spread_even_label=Raggruppamento pari -document_properties.title=Proprietà del documento… -document_properties_label=Proprietà del documento… -document_properties_file_name=Nome file: -document_properties_file_size=Dimensione file: -document_properties_kb={{size_kb}} kB ({{size_b}} byte) -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Titolo: -document_properties_author=Autore: -document_properties_subject=Oggetto: -document_properties_keywords=Parole chiave: -document_properties_creation_date=Data creazione: -document_properties_modification_date=Data modifica: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Autore originale: -document_properties_producer=Produttore PDF: -document_properties_version=Versione PDF: -document_properties_page_count=Conteggio pagine: -document_properties_page_size=Dimensioni pagina: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=verticale -document_properties_page_size_orientation_landscape=orizzontale -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Lettera -document_properties_page_size_name_legal=Legale -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -document_properties_linearized=Visualizzazione web veloce: -document_properties_linearized_yes=Sì -document_properties_linearized_no=No -document_properties_close=Chiudi -print_progress_message=Preparazione documento per la stampa… -print_progress_percent={{progress}}% -print_progress_close=Annulla -toggle_sidebar.title=Attiva/disattiva barra laterale -toggle_sidebar_notification.title=Attiva/disattiva barra laterale (il documento contiene struttura/allegati) -toggle_sidebar_notification2.title=Attiva/disattiva barra laterale (il documento contiene struttura/allegati/livelli) -toggle_sidebar_label=Attiva/disattiva barra laterale -document_outline.title=Visualizza la struttura del documento (doppio clic per visualizzare/comprimere tutti gli elementi) -document_outline_label=Struttura documento -attachments.title=Visualizza allegati -attachments_label=Allegati -layers.title=Visualizza livelli (doppio clic per ripristinare tutti i livelli allo stato predefinito) -layers_label=Livelli -thumbs.title=Mostra le miniature -thumbs_label=Miniature -current_outline_item.title=Trova elemento struttura corrente -current_outline_item_label=Elemento struttura corrente -findbar.title=Trova nel documento -findbar_label=Trova -additional_layers=Livelli aggiuntivi -page_canvas=Pagina {{page}} -page_landmark=Pagina {{page}} -thumb_page_title=Pagina {{page}} -thumb_page_canvas=Miniatura della pagina {{page}} -find_input.title=Trova -find_input.placeholder=Trova nel documento… -find_previous.title=Trova l’occorrenza precedente del testo da cercare -find_previous_label=Precedente -find_next.title=Trova l’occorrenza successiva del testo da cercare -find_next_label=Successivo -find_highlight=Evidenzia -find_match_case_label=Maiuscole/minuscole -find_entire_word_label=Parole intere -find_reached_top=Raggiunto l’inizio della pagina, continua dalla fine -find_reached_bottom=Raggiunta la fine della pagina, continua dall’inizio -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} di {{total}} corrispondenza -find_match_count[two]={{current}} di {{total}} corrispondenze -find_match_count[few]={{current}} di {{total}} corrispondenze -find_match_count[many]={{current}} di {{total}} corrispondenze -find_match_count[other]={{current}} di {{total}} corrispondenze -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Più di {{limit}} corrispondenze -find_match_count_limit[one]=Più di {{limit}} corrispondenza -find_match_count_limit[two]=Più di {{limit}} corrispondenze -find_match_count_limit[few]=Più di {{limit}} corrispondenze -find_match_count_limit[many]=Più di {{limit}} corrispondenze -find_match_count_limit[other]=Più di {{limit}} corrispondenze -find_not_found=Testo non trovato -error_more_info=Ulteriori informazioni -error_less_info=Nascondi dettagli -error_close=Chiudi -error_version_info=PDF.js v{{version}} (build: {{build}}) -error_message=Messaggio: {{message}} -error_stack=Stack: {{stack}} -error_file=File: {{file}} -error_line=Riga: {{line}} -rendering_error=Si è verificato un errore durante il rendering della pagina. -page_scale_width=Larghezza pagina -page_scale_fit=Adatta a una pagina -page_scale_auto=Zoom automatico -page_scale_actual=Dimensioni effettive -page_scale_percent={{scale}}% -loading=Caricamento in corso… -loading_error=Si è verificato un errore durante il caricamento del PDF. -invalid_file_error=File PDF non valido o danneggiato. -missing_file_error=File PDF non disponibile. -unexpected_response_error=Risposta imprevista del server -annotation_date_string={{date}}, {{time}} -text_annotation_type.alt=[Annotazione: {{type}}] -password_label=Inserire la password per aprire questo file PDF. -password_invalid=Password non corretta. Riprovare. -password_ok=OK -password_cancel=Annulla -printing_not_supported=Attenzione: la stampa non è completamente supportata da questo browser. -printing_not_ready=Attenzione: il PDF non è ancora stato caricato completamente per la stampa. -web_fonts_disabled=I web font risultano disattivati: impossibile utilizzare i caratteri incorporati nel PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ja/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ja/viewer.properties deleted file mode 100644 index 892751991f43df04200d0d361ea87519667ccbcb..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ja/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=前のページへ戻ります -previous_label=前へ -next.title=次のページへ進みます -next_label=次へ -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=ページ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} / {{pagesCount}}) -zoom_out.title=表示を縮小します -zoom_out_label=縮小 -zoom_in.title=表示を拡大します -zoom_in_label=拡大 -zoom.title=拡大/縮小 -presentation_mode.title=プレゼンテーションモードに切り替えます -presentation_mode_label=プレゼンテーションモード -open_file.title=ファイルを開きます -open_file_label=開く -print.title=印刷します -print_label=印刷 -download.title=ダウンロードします -download_label=ダウンロード -bookmark.title=現在のビューの URL です (コピーまたは新しいウィンドウに開く) -bookmark_label=現在のビュー -# Secondary toolbar and context menu -tools.title=ツール -tools_label=ツール -first_page.title=最初のページへ移動します -first_page.label=最初のページへ移動 -first_page_label=最初のページへ移動 -last_page.title=最後のページへ移動します -last_page.label=最後のページへ移動 -last_page_label=最後のページへ移動 -page_rotate_cw.title=ページを右へ回転します -page_rotate_cw.label=右回転 -page_rotate_cw_label=右回転 -page_rotate_ccw.title=ページを左へ回転します -page_rotate_ccw.label=左回転 -page_rotate_ccw_label=左回転 -cursor_text_select_tool.title=テキスト選択ツールを有効にする -cursor_text_select_tool_label=テキスト選択ツール -cursor_hand_tool.title=手のひらツールを有効にする -cursor_hand_tool_label=手のひらツール -scroll_vertical.title=縦スクロールにする -scroll_vertical_label=縦スクロール -scroll_horizontal.title=横スクロールにする -scroll_horizontal_label=横スクロール -scroll_wrapped.title=折り返しスクロールにする -scroll_wrapped_label=折り返しスクロール -spread_none.title=見開きにしない -spread_none_label=見開きにしない -spread_odd.title=奇数ページ開始で見開きにする -spread_odd_label=奇数ページ見開き -spread_even.title=偶数ページ開始で見開きにする -spread_even_label=偶数ページ見開き -# Document properties dialog box -document_properties.title=文書のプロパティ... -document_properties_label=文書のプロパティ... -document_properties_file_name=ファイル名: -document_properties_file_size=ファイルサイズ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=タイトル: -document_properties_author=作成者: -document_properties_subject=件名: -document_properties_keywords=キーワード: -document_properties_creation_date=作成日: -document_properties_modification_date=更新日: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=アプリケーション: -document_properties_producer=PDF 作成: -document_properties_version=PDF のバージョン: -document_properties_page_count=ページ数: -document_properties_page_size=ページサイズ: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=縦 -document_properties_page_size_orientation_landscape=横 -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=レター -document_properties_page_size_name_legal=リーガル -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=ウェブ表示用に最適化: -document_properties_linearized_yes=はい -document_properties_linearized_no=いいえ -document_properties_close=閉じる -print_progress_message=文書の印刷を準備しています... -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=キャンセル -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=サイドバー表示を切り替えます -toggle_sidebar_notification.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付) -toggle_sidebar_notification2.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付 / レイヤー) -toggle_sidebar_label=サイドバーの切り替え -document_outline.title=文書の目次を表示します (ダブルクリックで項目を開閉します) -document_outline_label=文書の目次 -attachments.title=添付ファイルを表示します -attachments_label=添付ファイル -layers.title=レイヤーを表示します (ダブルクリックですべてのレイヤーが初期状態に戻ります) -layers_label=レイヤー -thumbs.title=縮小版を表示します -thumbs_label=縮小版 -current_outline_item.title=現在のアウトライン項目を検索 -current_outline_item_label=現在のアウトライン項目 -findbar.title=文書内を検索します -findbar_label=検索 -additional_layers=追加レイヤー -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}} ページ -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} ページ -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} ページの縮小版 -# Find panel button title and messages -find_input.title=検索 -find_input.placeholder=文書内を検索... -find_previous.title=現在より前の位置で指定文字列が現れる部分を検索します -find_previous_label=前へ -find_next.title=現在より後の位置で指定文字列が現れる部分を検索します -find_next_label=次へ -find_highlight=すべて強調表示 -find_match_case_label=大文字/小文字を区別 -find_entire_word_label=単語一致 -find_reached_top=文書先頭に到達したので末尾から続けて検索します -find_reached_bottom=文書末尾に到達したので先頭から続けて検索します -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} 件中 {{current}} 件目 -find_match_count[two]={{total}} 件中 {{current}} 件目 -find_match_count[few]={{total}} 件中 {{current}} 件目 -find_match_count[many]={{total}} 件中 {{current}} 件目 -find_match_count[other]={{total}} 件中 {{current}} 件目 -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} 件以上一致 -find_match_count_limit[one]={{limit}} 件以上一致 -find_match_count_limit[two]={{limit}} 件以上一致 -find_match_count_limit[few]={{limit}} 件以上一致 -find_match_count_limit[many]={{limit}} 件以上一致 -find_match_count_limit[other]={{limit}} 件以上一致 -find_not_found=見つかりませんでした -# Error panel labels -error_more_info=詳細情報 -error_less_info=詳細情報を隠す -error_close=閉じる -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (ビルド: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=メッセージ: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=スタック: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ファイル: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=行: {{line}} -rendering_error=ページのレンダリング中にエラーが発生しました。 -# Predefined zoom values -page_scale_width=幅に合わせる -page_scale_fit=ページのサイズに合わせる -page_scale_auto=自動ズーム -page_scale_actual=実際のサイズ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF の読み込み中にエラーが発生しました。 -invalid_file_error=無効または破損した PDF ファイル。 -missing_file_error=PDF ファイルが見つかりません。 -unexpected_response_error=サーバーから予期せぬ応答がありました。 -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} 注釈] -password_label=この PDF ファイルを開くためのパスワードを入力してください。 -password_invalid=無効なパスワードです。もう一度やり直してください。 -password_ok=OK -password_cancel=キャンセル -printing_not_supported=警告: このブラウザーでは印刷が完全にサポートされていません。 -printing_not_ready=警告: PDF を印刷するための読み込みが終了していません。 -web_fonts_disabled=ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません。 diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ka/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ka/viewer.properties deleted file mode 100644 index f7e6ee977a292ff401c5c9b41f4dd47df5e679c2..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ka/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=წინა გვერდი -previous_label=წინა -next.title=შემდეგი გვერდი -next_label=შემდეგი -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=გვერდი -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}}-დან -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} {{pagesCount}}-დან) -zoom_out.title=ზომის შემცირება -zoom_out_label=დაშორება -zoom_in.title=ზომის გაზრდა -zoom_in_label=მოახლოება -zoom.title=ზომა -presentation_mode.title=ჩვენების რეჟიმზე გადართვა -presentation_mode_label=ჩვენების რეჟიმი -open_file.title=ფაილის გახსნა -open_file_label=გახსნა -print.title=ამობეჭდვა -print_label=ამობეჭდვა -download.title=ჩამოტვირთვა -download_label=ჩამოტვირთვა -bookmark.title=მიმდინარე ხედი (ასლის აღება ან გახსნა ახალ ფანჯარაში) -bookmark_label=მიმდინარე ხედი -# Secondary toolbar and context menu -tools.title=ხელსაწყოები -tools_label=ხელსაწყოები -first_page.title=პირველ გვერდზე გადასვლა -first_page.label=პირველ გვერდზე გადასვლა -first_page_label=პირველ გვერდზე გადასვლა -last_page.title=ბოლო გვერდზე გადასვლა -last_page.label=ბოლო გვერდზე გადასვლა -last_page_label=ბოლო გვერდზე გადასვლა -page_rotate_cw.title=საათის ისრის მიმართულებით შებრუნება -page_rotate_cw.label=მარჯვნივ გადაბრუნება -page_rotate_cw_label=მარჯვნივ გადაბრუნება -page_rotate_ccw.title=საათის ისრის საპირისპიროდ შებრუნება -page_rotate_ccw.label=მარცხნივ გადაბრუნება -page_rotate_ccw_label=მარცხნივ გადაბრუნება -cursor_text_select_tool.title=მოსანიშნი მაჩვენებლის გამოყენება -cursor_text_select_tool_label=მოსანიშნი მაჩვენებელი -cursor_hand_tool.title=გადასაადგილებელი მაჩვენებლის გამოყენება -cursor_hand_tool_label=გადასაადგილებელი -scroll_vertical.title=გვერდების შვეულად ჩვენება -scroll_vertical_label=შვეული გადაადგილება -scroll_horizontal.title=გვერდების თარაზულად ჩვენება -scroll_horizontal_label=განივი გადაადგილება -scroll_wrapped.title=გვერდების ცხრილურად ჩვენება -scroll_wrapped_label=ცხრილური გადაადგილება -spread_none.title=ორ გვერდზე გაშლის გარეშე -spread_none_label=ცალგვერდიანი ჩვენება -spread_odd.title=ორ გვერდზე გაშლა, კენტი გვერდიდან დაწყებული -spread_odd_label=ორ გვერდზე კენტიდან -spread_even.title=ორ გვერდზე გაშლა, ლუწი გვერდიდან დაწყებული -spread_even_label=ორ გვერდზე ლუწიდან -# Document properties dialog box -document_properties.title=დოკუმენტის შესახებ… -document_properties_label=დოკუმენტის შესახებ… -document_properties_file_name=ფაილის სახელი: -document_properties_file_size=ფაილის მოცულობა: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} კბ ({{size_b}} ბაიტი) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} მბ ({{size_b}} ბაიტი) -document_properties_title=სათაური: -document_properties_author=შემქმნელი: -document_properties_subject=თემა: -document_properties_keywords=საკვანძო სიტყვები: -document_properties_creation_date=შექმნის დრო: -document_properties_modification_date=ჩასწორების დრო: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=გამომშვები: -document_properties_producer=PDF-გამომშვები: -document_properties_version=PDF-ვერსია: -document_properties_page_count=გვერდები: -document_properties_page_size=გვერდის ზომა: -document_properties_page_size_unit_inches=დუიმი -document_properties_page_size_unit_millimeters=მმ -document_properties_page_size_orientation_portrait=შვეულად -document_properties_page_size_orientation_landscape=თარაზულად -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=მსუბუქი ვებჩვენება: -document_properties_linearized_yes=დიახ -document_properties_linearized_no=არა -document_properties_close=დახურვა -print_progress_message=დოკუმენტი მზადდება ამოსაბეჭდად… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=გაუქმება -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=გვერდითა ზოლის გამოჩენა/დამალვა -toggle_sidebar_notification.title=გვერდითა ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს) -toggle_sidebar_notification2.title=გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს/ფენებს) -toggle_sidebar_label=გვერდითა ზოლის გამოჩენა/დამალვა -document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა/აკეცვა) -document_outline_label=დოკუმენტის სარჩევი -attachments.title=დანართების ჩვენება -attachments_label=დანართები -layers.title=ფენების გამოჩენა (ორმაგი წკაპით ყველა ფენის ნაგულისხმევზე დაბრუნება) -layers_label=ფენები -thumbs.title=შეთვალიერება -thumbs_label=ესკიზები -current_outline_item.title=მიმდინარე გვერდის მონახვა სარჩევში -current_outline_item_label=მიმდინარე გვერდი სარჩევში -findbar.title=პოვნა დოკუმენტში -findbar_label=ძიება -additional_layers=დამატებითი ფენები -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=გვერდი {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=გვერდი {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=გვერდის შეთვალიერება {{page}} -# Find panel button title and messages -find_input.title=ძიება -find_input.placeholder=პოვნა დოკუმენტში… -find_previous.title=ფრაზის წინა კონტექსტის პოვნა -find_previous_label=წინა -find_next.title=ფრაზის შემდეგი კონტექსტის პოვნა -find_next_label=შემდეგი -find_highlight=ყველას მონიშვნა -find_match_case_label=ემთხვევა მთავრული -find_entire_word_label=მთლიანი სიტყვები -find_reached_top=მიღწეულია დოკუმენტის დასაწყისი, გრძელდება ბოლოდან -find_reached_bottom=მიღწეულია დოკუმენტის ბოლო, გრძელდება დასაწყისიდან -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} / {{total}} თანხვედრიდან -find_match_count[two]={{current}} / {{total}} თანხვედრიდან -find_match_count[few]={{current}} / {{total}} თანხვედრიდან -find_match_count[many]={{current}} / {{total}} თანხვედრიდან -find_match_count[other]={{current}} / {{total}} თანხვედრიდან -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[one]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[two]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[few]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[many]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[other]={{limit}}-ზე მეტი თანხვედრა -find_not_found=ფრაზა ვერ მოიძებნა -# Error panel labels -error_more_info=ვრცლად -error_less_info=შემოკლებულად -error_close=დახურვა -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=შეტყობინება: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=სტეკი: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ფაილი: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ხაზი: {{line}} -rendering_error=შეცდომა, გვერდის ჩვენებისას. -# Predefined zoom values -page_scale_width=გვერდის სიგანეზე -page_scale_fit=მთლიანი გვერდი -page_scale_auto=ავტომატური -page_scale_actual=საწყისი ზომა -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=შეცდომა, PDF-ფაილის ჩატვირთვისას. -invalid_file_error=არამართებული ან დაზიანებული PDF-ფაილი. -missing_file_error=ნაკლული PDF-ფაილი. -unexpected_response_error=სერვერის მოულოდნელი პასუხი. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} შენიშვნა] -password_label=შეიყვანეთ პაროლი PDF-ფაილის გასახსნელად. -password_invalid=არასწორი პაროლი. გთხოვთ, სცადოთ ხელახლა. -password_ok=კარგი -password_cancel=გაუქმება -printing_not_supported=გაფრთხილება: ამობეჭდვა ამ ბრაუზერში არაა სრულად მხარდაჭერილი. -printing_not_ready=გაფრთხილება: PDF სრულად ჩატვირთული არაა, ამობეჭდვის დასაწყებად. -web_fonts_disabled=ვებშრიფტები გამორთულია: ჩაშენებული PDF-შრიფტების გამოყენება ვერ ხერხდება. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kab/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kab/viewer.properties deleted file mode 100644 index ed70b0f98ccc480e8e9733fcadf6791818f89d63..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kab/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Asebter azewwar -previous_label=Azewwar -next.title=Asebter d-iteddun -next_label=Ddu ɣer zdat -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Asebter -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=ɣef {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} n {{pagesCount}}) -zoom_out.title=Semẓi -zoom_out_label=Semẓi -zoom_in.title=Semɣeṛ -zoom_in_label=Semɣeṛ -zoom.title=Semɣeṛ/Semẓi -presentation_mode.title=Uɣal ɣer Uskar Tihawt -presentation_mode_label=Askar Tihawt -open_file.title=Ldi Afaylu -open_file_label=Ldi -print.title=Siggez -print_label=Siggez -download.title=Sader -download_label=Azdam -bookmark.title=Timeẓri tamirant (nɣel neɣ ldi ɣef usfaylu amaynut) -bookmark_label=Askan amiran -# Secondary toolbar and context menu -tools.title=Ifecka -tools_label=Ifecka -first_page.title=Ddu ɣer usebter amezwaru -first_page.label=Ddu ɣer usebter amezwaru -first_page_label=Ddu ɣer usebter amezwaru -last_page.title=Ddu ɣer usebter aneggaru -last_page.label=Ddu ɣer usebter aneggaru -last_page_label=Ddu ɣer usebter aneggaru -page_rotate_cw.title=Tuzzya tusrigt -page_rotate_cw.label=Tuzzya tusrigt -page_rotate_cw_label=Tuzzya tusrigt -page_rotate_ccw.title=Tuzzya amgal-usrig -page_rotate_ccw.label=Tuzzya amgal-usrig -page_rotate_ccw_label=Tuzzya amgal-usrig -cursor_text_select_tool.title=Rmed afecku n tefrant n uḍris -cursor_text_select_tool_label=Afecku n tefrant n uḍris -cursor_hand_tool.title=Rmed afecku afus -cursor_hand_tool_label=Afecku afus -scroll_vertical.title=Seqdec adrurem ubdid -scroll_vertical_label=Adrurem ubdid -scroll_horizontal.title=Seqdec adrurem aglawan -scroll_horizontal_label=Adrurem aglawan -scroll_wrapped.title=Seqdec adrurem yuẓen -scroll_wrapped_label=Adrurem yuẓen -spread_none.title=Ur sedday ara isiɣzaf n usebter -spread_none_label=Ulac isiɣzaf -spread_odd.title=Seddu isiɣzaf n usebter ibeddun s yisebtar irayuganen -spread_odd_label=Isiɣzaf irayuganen -spread_even.title=Seddu isiɣzaf n usebter ibeddun s yisebtar iyuganen -spread_even_label=Isiɣzaf iyuganen -# Document properties dialog box -document_properties.title=Taɣaṛa n isemli… -document_properties_label=Taɣaṛa n isemli… -document_properties_file_name=Isem n ufaylu: -document_properties_file_size=Teɣzi n ufaylu: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KAṬ ({{size_b}} ibiten) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MAṬ ({{size_b}} iṭamḍanen) -document_properties_title=Azwel: -document_properties_author=Ameskar: -document_properties_subject=Amgay: -document_properties_keywords=Awalen n tsaruţ -document_properties_creation_date=Azemz n tmerna: -document_properties_modification_date=Azemz n usnifel: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Yerna-t: -document_properties_producer=Afecku n uselket PDF: -document_properties_version=Lqem PDF: -document_properties_page_count=Amḍan n yisebtar: -document_properties_page_size=Tuγzi n usebter: -document_properties_page_size_unit_inches=deg -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=s teɣzi -document_properties_page_size_orientation_landscape=s tehri -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Asekkil -document_properties_page_size_name_legal=Usḍif -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Taskant Web taruradt: -document_properties_linearized_yes=Ih -document_properties_linearized_no=Ala -document_properties_close=Mdel -print_progress_message=Aheggi i usiggez n isemli… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Sefsex -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Sken/Fer agalis adisan -toggle_sidebar_notification.title=Ffer/Sken agalis adisan (isemli yegber aɣawas/imeddayen) -toggle_sidebar_notification2.title=Ffer/Sekn agalis adisan (isemli yegber aɣawas/ticeqqufin yeddan/tissiwin) -toggle_sidebar_label=Sken/Fer agalis adisan -document_outline.title=Sken isemli (Senned snat tikal i wesemɣer/Afneẓ n iferdisen meṛṛa) -document_outline_label=Isɣalen n isebtar -attachments.title=Sken ticeqqufin yeddan -attachments_label=Ticeqqufin yeddan -layers.title=Skeen tissiwin (sit sin yiberdan i uwennez n meṛṛa tissiwin ɣer waddad amezwer) -layers_label=Tissiwin -thumbs.title=Sken tanfult. -thumbs_label=Tinfulin -current_outline_item.title=Af-d aferdis n uɣawas amiran -current_outline_item_label=Aferdis n uɣawas amiran -findbar.title=Nadi deg isemli -findbar_label=Nadi -additional_layers=Tissiwin-nniḍen -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Asebter {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Asebter {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Tanfult n usebter {{page}} -# Find panel button title and messages -find_input.title=Nadi -find_input.placeholder=Nadi deg isemli… -find_previous.title=Aff-d tamseḍriwt n twinest n deffir -find_previous_label=Azewwar -find_next.title=Aff-d timseḍriwt n twinest d-iteddun -find_next_label=Ddu ɣer zdat -find_highlight=Err izirig imaṛṛa -find_match_case_label=Qadeṛ amasal n isekkilen -find_entire_word_label=Awalen iččuranen -find_reached_top=Yabbeḍ s afella n usebter, tuɣalin s wadda -find_reached_bottom=Tebḍeḍ s adda n usebter, tuɣalin s afella -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} seg {{total}} n tmeɣṛuḍin -find_match_count[two]={{current}} seg {{total}} n tmeɣṛuḍin -find_match_count[few]={{current}} seg {{total}} n tmeɣṛuḍin -find_match_count[many]={{current}} seg {{total}} n tmeɣṛuḍin -find_match_count[other]={{current}} seg {{total}} n tmeɣṛuḍin -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Ugar n {{limit}} n tmeɣṛuḍin -find_match_count_limit[one]=Ugar n {{limit}} n tmeɣṛuḍin -find_match_count_limit[two]=Ugar n {{limit}} n tmeɣṛuḍin -find_match_count_limit[few]=Ugar n {{limit}} n tmeɣṛuḍin -find_match_count_limit[many]=Ugar n {{limit}} n tmeɣṛuḍin -find_match_count_limit[other]=Ugar n {{limit}} n tmeɣṛuḍin -find_not_found=Ulac tawinest -# Error panel labels -error_more_info=Ugar n telɣut -error_less_info=Drus n isalen -error_close=Mdel -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Izen: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Tanebdant: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Afaylu: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Izirig: {{line}} -rendering_error=Teḍra-d tuccḍa deg uskan n usebter. -# Predefined zoom values -page_scale_width=Tehri n usebter -page_scale_fit=Asebter imaṛṛa -page_scale_auto=Asemɣeṛ/Asemẓi awurman -page_scale_actual=Teɣzi tilawt -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Teḍra-d tuccḍa deg alluy n PDF: -invalid_file_error=Afaylu PDF arameɣtu neɣ yexṣeṛ. -missing_file_error=Ulac afaylu PDF. -unexpected_response_error=Aqeddac yerra-d yir tiririt ur nettwaṛǧi ara. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Tabzimt {{type}}] -password_label=Sekcem awal uffir akken ad ldiḍ afaylu-yagi PDF -password_invalid=Awal uffir mačči d ameɣtu, Ɛreḍ tikelt-nniḍen. -password_ok=IH -password_cancel=Sefsex -printing_not_supported=Ɣuṛ-k: Asiggez ur ittusefrak ara yakan imaṛṛa deg iminig-a. -printing_not_ready=Ɣuṛ-k: Afaylu PDF ur d-yuli ara imeṛṛa akken ad ittusiggez. -web_fonts_disabled=Tisefsiyin web ttwassensent; D awezɣi useqdec n tsefsiyin yettwarnan ɣer PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kk/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kk/viewer.properties deleted file mode 100644 index 39d9654ccdc502af8394e4e851668c1fe99568e3..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kk/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Алдыңғы парақ -previous_label=Алдыңғысы -next.title=Келесі парақ -next_label=Келесі -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Парақ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} ішінен -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=(парақ {{pageNumber}}, {{pagesCount}} ішінен) -zoom_out.title=Кішірейту -zoom_out_label=Кішірейту -zoom_in.title=Үлкейту -zoom_in_label=Үлкейту -zoom.title=Масштаб -presentation_mode.title=Презентация режиміне ауысу -presentation_mode_label=Презентация режимі -open_file.title=Файлды ашу -open_file_label=Ашу -print.title=Баспаға шығару -print_label=Баспаға шығару -download.title=Жүктеп алу -download_label=Жүктеп алу -bookmark.title=Ағымдағы көрініс (көшіру не жаңа терезеде ашу) -bookmark_label=Ағымдағы көрініс -# Secondary toolbar and context menu -tools.title=Құралдар -tools_label=Құралдар -first_page.title=Алғашқы параққа өту -first_page.label=Алғашқы параққа өту -first_page_label=Алғашқы параққа өту -last_page.title=Соңғы параққа өту -last_page.label=Соңғы параққа өту -last_page_label=Соңғы параққа өту -page_rotate_cw.title=Сағат тілі бағытымен айналдыру -page_rotate_cw.label=Сағат тілі бағытымен бұру -page_rotate_cw_label=Сағат тілі бағытымен бұру -page_rotate_ccw.title=Сағат тілі бағытына қарсы бұру -page_rotate_ccw.label=Сағат тілі бағытына қарсы бұру -page_rotate_ccw_label=Сағат тілі бағытына қарсы бұру -cursor_text_select_tool.title=Мәтінді таңдау құралын іске қосу -cursor_text_select_tool_label=Мәтінді таңдау құралы -cursor_hand_tool.title=Қол құралын іске қосу -cursor_hand_tool_label=Қол құралы -scroll_vertical.title=Вертикалды айналдыруды қолдану -scroll_vertical_label=Вертикалды айналдыру -scroll_horizontal.title=Горизонталды айналдыруды қолдану -scroll_horizontal_label=Горизонталды айналдыру -scroll_wrapped.title=Масштабталатын айналдыруды қолдану -scroll_wrapped_label=Масштабталатын айналдыру -spread_none.title=Жазық беттер режимін қолданбау -spread_none_label=Жазық беттер режимсіз -spread_odd.title=Жазық беттер тақ нөмірлі беттерден басталады -spread_odd_label=Тақ нөмірлі беттер сол жақтан -spread_even.title=Жазық беттер жұп нөмірлі беттерден басталады -spread_even_label=Жұп нөмірлі беттер сол жақтан -# Document properties dialog box -document_properties.title=Құжат қасиеттері… -document_properties_label=Құжат қасиеттері… -document_properties_file_name=Файл аты: -document_properties_file_size=Файл өлшемі: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} байт) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} байт) -document_properties_title=Тақырыбы: -document_properties_author=Авторы: -document_properties_subject=Тақырыбы: -document_properties_keywords=Кілт сөздер: -document_properties_creation_date=Жасалған күні: -document_properties_modification_date=Түзету күні: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Жасаған: -document_properties_producer=PDF өндірген: -document_properties_version=PDF нұсқасы: -document_properties_page_count=Беттер саны: -document_properties_page_size=Бет өлшемі: -document_properties_page_size_unit_inches=дюйм -document_properties_page_size_unit_millimeters=мм -document_properties_page_size_orientation_portrait=тік -document_properties_page_size_orientation_landscape=жатық -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Жылдам Web көрінісі: -document_properties_linearized_yes=Иә -document_properties_linearized_no=Жоқ -document_properties_close=Жабу -print_progress_message=Құжатты баспаға шығару үшін дайындау… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Бас тарту -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Бүйір панелін көрсету/жасыру -toggle_sidebar_notification.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар бар) -toggle_sidebar_notification2.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар/қабаттар бар) -toggle_sidebar_label=Бүйір панелін көрсету/жасыру -document_outline.title=Құжат құрылымын көрсету (барлық нәрселерді жазық қылу/жинау үшін қос шерту керек) -document_outline_label=Құжат құрамасы -attachments.title=Салынымдарды көрсету -attachments_label=Салынымдар -layers.title=Қабаттарды көрсету (барлық қабаттарды бастапқы күйге келтіру үшін екі рет шертіңіз) -layers_label=Қабаттар -thumbs.title=Кіші көріністерді көрсету -thumbs_label=Кіші көріністер -current_outline_item.title=Құрылымның ағымдағы элементін табу -current_outline_item_label=Құрылымның ағымдағы элементі -findbar.title=Құжаттан табу -findbar_label=Табу -additional_layers=Қосымша қабаттар -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Бет {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} парағы -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} парағы үшін кіші көрінісі -# Find panel button title and messages -find_input.title=Табу -find_input.placeholder=Құжаттан табу… -find_previous.title=Осы сөздердің мәтіннен алдыңғы кездесуін табу -find_previous_label=Алдыңғысы -find_next.title=Осы сөздердің мәтіннен келесі кездесуін табу -find_next_label=Келесі -find_highlight=Барлығын түспен ерекшелеу -find_match_case_label=Регистрді ескеру -find_entire_word_label=Сөздер толығымен -find_reached_top=Құжаттың басына жеттік, соңынан бастап жалғастырамыз -find_reached_bottom=Құжаттың соңына жеттік, басынан бастап жалғастырамыз -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} / {{total}} сәйкестік -find_match_count[two]={{current}} / {{total}} сәйкестік -find_match_count[few]={{current}} / {{total}} сәйкестік -find_match_count[many]={{current}} / {{total}} сәйкестік -find_match_count[other]={{current}} / {{total}} сәйкестік -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} сәйкестіктен көп -find_match_count_limit[one]={{limit}} сәйкестіктен көп -find_match_count_limit[two]={{limit}} сәйкестіктен көп -find_match_count_limit[few]={{limit}} сәйкестіктен көп -find_match_count_limit[many]={{limit}} сәйкестіктен көп -find_match_count_limit[other]={{limit}} сәйкестіктен көп -find_not_found=Сөз(дер) табылмады -# Error panel labels -error_more_info=Көбірек ақпарат -error_less_info=Азырақ ақпарат -error_close=Жабу -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (жинақ: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Хабарлама: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стек: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Файл: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Жол: {{line}} -rendering_error=Парақты өңдеу кезінде қате кетті. -# Predefined zoom values -page_scale_width=Парақ ені -page_scale_fit=Парақты сыйдыру -page_scale_auto=Автомасштабтау -page_scale_actual=Нақты өлшемі -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF жүктеу кезінде қате кетті. -invalid_file_error=Зақымдалған немесе қате PDF файл. -missing_file_error=PDF файлы жоқ. -unexpected_response_error=Сервердің күтпеген жауабы. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} аңдатпасы] -password_label=Бұл PDF файлын ашу үшін парольді енгізіңіз. -password_invalid=Пароль дұрыс емес. Қайталап көріңіз. -password_ok=ОК -password_cancel=Бас тарту -printing_not_supported=Ескерту: Баспаға шығаруды бұл браузер толығымен қолдамайды. -printing_not_ready=Ескерту: Баспаға шығару үшін, бұл PDF толығымен жүктеліп алынбады. -web_fonts_disabled=Веб қаріптері сөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емес. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/km/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/km/viewer.properties deleted file mode 100644 index e47ce48b2d86181329126286ae228025ab0a7944..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/km/viewer.properties +++ /dev/null @@ -1,197 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ទំព័រ​មុន -previous_label=មុន -next.title=ទំព័រ​បន្ទាប់ -next_label=បន្ទាប់ -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=ទំព័រ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=នៃ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} នៃ {{pagesCount}}) -zoom_out.title=​បង្រួម -zoom_out_label=​បង្រួម -zoom_in.title=​ពង្រីក -zoom_in_label=​ពង្រីក -zoom.title=ពង្រីក -presentation_mode.title=ប្ដូរ​ទៅ​របៀប​បទ​បង្ហាញ -presentation_mode_label=របៀប​បទ​បង្ហាញ -open_file.title=បើក​ឯកសារ -open_file_label=បើក -print.title=បោះពុម្ព -print_label=បោះពុម្ព -download.title=ទាញ​យក -download_label=ទាញ​យក -bookmark.title=ទិដ្ឋភាព​បច្ចុប្បន្ន (ចម្លង ឬ​បើក​នៅ​ក្នុង​បង្អួច​ថ្មី) -bookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន -# Secondary toolbar and context menu -tools.title=ឧបករណ៍ -tools_label=ឧបករណ៍ -first_page.title=ទៅកាន់​ទំព័រ​ដំបូង​ -first_page.label=ទៅកាន់​ទំព័រ​ដំបូង​ -first_page_label=ទៅកាន់​ទំព័រ​ដំបូង​ -last_page.title=ទៅកាន់​ទំព័រ​ចុងក្រោយ​ -last_page.label=ទៅកាន់​ទំព័រ​ចុងក្រោយ​ -last_page_label=ទៅកាន់​ទំព័រ​ចុងក្រោយ -page_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា -page_rotate_cw.label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា -page_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា -page_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ -page_rotate_ccw.label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ -page_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ -cursor_text_select_tool.title=បើក​ឧបករណ៍​ជ្រើស​អត្ថបទ -cursor_text_select_tool_label=ឧបករណ៍​ជ្រើស​អត្ថបទ -cursor_hand_tool.title=បើក​ឧបករណ៍​ដៃ -cursor_hand_tool_label=ឧបករណ៍​ដៃ -# Document properties dialog box -document_properties.title=លក្ខណ​សម្បត្តិ​ឯកសារ… -document_properties_label=លក្ខណ​សម្បត្តិ​ឯកសារ… -document_properties_file_name=ឈ្មោះ​ឯកសារ៖ -document_properties_file_size=ទំហំ​ឯកសារ៖ -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} បៃ) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} បៃ) -document_properties_title=ចំណងជើង៖ -document_properties_author=អ្នក​និពន្ធ៖ -document_properties_subject=ប្រធានបទ៖ -document_properties_keywords=ពាក្យ​គន្លឹះ៖ -document_properties_creation_date=កាលបរិច្ឆេទ​បង្កើត៖ -document_properties_modification_date=កាលបរិច្ឆេទ​កែប្រែ៖ -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=អ្នក​បង្កើត៖ -document_properties_producer=កម្មវិធី​បង្កើត PDF ៖ -document_properties_version=កំណែ PDF ៖ -document_properties_page_count=ចំនួន​ទំព័រ៖ -document_properties_page_size_unit_inches=អ៊ីញ -document_properties_page_size_unit_millimeters=មម -document_properties_page_size_orientation_portrait=បញ្ឈរ -document_properties_page_size_orientation_landscape=ផ្តេក -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=សំបុត្រ -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=បាទ/ចាស -document_properties_linearized_no=ទេ -document_properties_close=បិទ -print_progress_message=កំពុង​រៀបចំ​ឯកសារ​សម្រាប់​បោះពុម្ព… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=បោះបង់ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល -toggle_sidebar_notification.title=បិទ/បើក​របារ​ចំហៀង (ឯកសារ​មាន​មាតិកា​នៅ​ក្រៅ/attachments) -toggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល -document_outline.title=បង្ហាញ​គ្រោង​ឯកសារ (ចុច​ទ្វេ​ដង​ដើម្បី​ពង្រីក/បង្រួម​ធាតុ​ទាំងអស់) -document_outline_label=គ្រោង​ឯកសារ -attachments.title=បង្ហាញ​ឯកសារ​ភ្ជាប់ -attachments_label=ឯកសារ​ភ្ជាប់ -thumbs.title=បង្ហាញ​រូបភាព​តូចៗ -thumbs_label=រួបភាព​តូចៗ -findbar.title=រក​នៅ​ក្នុង​ឯកសារ -findbar_label=រក -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=ទំព័រ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=រូបភាព​តូច​របស់​ទំព័រ {{page}} -# Find panel button title and messages -find_input.title=រក -find_input.placeholder=រក​នៅ​ក្នុង​ឯកសារ... -find_previous.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​មុន -find_previous_label=មុន -find_next.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​បន្ទាប់ -find_next_label=បន្ទាប់ -find_highlight=បន្លិច​ទាំងអស់ -find_match_case_label=ករណី​ដំណូច -find_reached_top=បាន​បន្ត​ពី​ខាង​ក្រោម ទៅ​ដល់​ខាង​​លើ​នៃ​ឯកសារ -find_reached_bottom=បាន​បន្ត​ពី​ខាងលើ ទៅដល់​ចុង​​នៃ​ឯកសារ -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា -# Error panel labels -error_more_info=ព័ត៌មាន​បន្ថែម -error_less_info=ព័ត៌មាន​តិចតួច -error_close=បិទ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=សារ ៖ {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ជង់ ៖ {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ឯកសារ ៖ {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ជួរ ៖ {{line}} -rendering_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​បង្ហាញ​ទំព័រ ។ -# Predefined zoom values -page_scale_width=ទទឹង​ទំព័រ -page_scale_fit=សម​ទំព័រ -page_scale_auto=ពង្រីក​ស្វ័យប្រវត្តិ -page_scale_actual=ទំហំ​ជាក់ស្ដែង -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។ -invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។ -missing_file_error=បាត់​ឯកសារ PDF -unexpected_response_error=ការ​ឆ្លើយ​តម​ម៉ាស៊ីន​មេ​ដែល​មិន​បាន​រំពឹង។ -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} ចំណារ​ពន្យល់] -password_label=បញ្ចូល​ពាក្យសម្ងាត់​ដើម្បី​បើក​ឯកសារ PDF នេះ។ -password_invalid=ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ។ សូម​ព្យាយាម​ម្ដងទៀត។ -password_ok=យល់​ព្រម -password_cancel=បោះបង់ -printing_not_supported=ការ​ព្រមាន ៖ កា​រ​បោះពុម្ព​មិន​ត្រូវ​បាន​គាំទ្រ​ពេញលេញ​ដោយ​កម្មវិធី​រុករក​នេះ​ទេ ។ -printing_not_ready=ព្រមាន៖ PDF មិន​ត្រូវ​បាន​ផ្ទុក​ទាំងស្រុង​ដើម្បី​បោះពុម្ព​ទេ។ -web_fonts_disabled=បាន​បិទ​ពុម្ពអក្សរ​បណ្ដាញ ៖ មិន​អាច​ប្រើ​ពុម្ពអក្សរ PDF ដែល​បាន​បង្កប់​បាន​ទេ ។ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kn/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kn/viewer.properties deleted file mode 100644 index aba871eda42d40c449f6d050a86afb9ba2bf3232..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/kn/viewer.properties +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ಹಿಂದಿನ ಪುಟ -previous_label=ಹಿಂದಿನ -next.title=ಮುಂದಿನ ಪುಟ -next_label=ಮುಂದಿನ -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=ಪುಟ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} ರಲ್ಲಿ -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pagesCount}} ರಲ್ಲಿ {{pageNumber}}) -zoom_out.title=ಕಿರಿದಾಗಿಸು -zoom_out_label=ಕಿರಿದಾಗಿಸಿ -zoom_in.title=ಹಿರಿದಾಗಿಸು -zoom_in_label=ಹಿರಿದಾಗಿಸಿ -zoom.title=ಗಾತ್ರಬದಲಿಸು -presentation_mode.title=ಪ್ರಸ್ತುತಿ (ಪ್ರಸೆಂಟೇಶನ್) ಕ್ರಮಕ್ಕೆ ಬದಲಾಯಿಸು -presentation_mode_label=ಪ್ರಸ್ತುತಿ (ಪ್ರಸೆಂಟೇಶನ್) ಕ್ರಮ -open_file.title=ಕಡತವನ್ನು ತೆರೆ -open_file_label=ತೆರೆಯಿರಿ -print.title=ಮುದ್ರಿಸು -print_label=ಮುದ್ರಿಸಿ -download.title=ಇಳಿಸು -download_label=ಇಳಿಸಿಕೊಳ್ಳಿ -bookmark.title=ಪ್ರಸಕ್ತ ನೋಟ (ಪ್ರತಿ ಮಾಡು ಅಥವ ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆ) -bookmark_label=ಪ್ರಸಕ್ತ ನೋಟ -# Secondary toolbar and context menu -tools.title=ಉಪಕರಣಗಳು -tools_label=ಉಪಕರಣಗಳು -first_page.title=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು -first_page.label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು -first_page_label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು -last_page.title=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು -last_page.label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು -last_page_label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು -page_rotate_cw.title=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_cw.label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_cw_label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_ccw.title=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_ccw.label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_ccw_label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -cursor_text_select_tool.title=ಪಠ್ಯ ಆಯ್ಕೆ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ -cursor_text_select_tool_label=ಪಠ್ಯ ಆಯ್ಕೆಯ ಉಪಕರಣ -cursor_hand_tool.title=ಕೈ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ -cursor_hand_tool_label=ಕೈ ಉಪಕರಣ -# Document properties dialog box -document_properties.title=ಡಾಕ್ಯುಮೆಂಟ್‌ ಗುಣಗಳು... -document_properties_label=ಡಾಕ್ಯುಮೆಂಟ್‌ ಗುಣಗಳು... -document_properties_file_name=ಕಡತದ ಹೆಸರು: -document_properties_file_size=ಕಡತದ ಗಾತ್ರ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} ಬೈಟ್‍ಗಳು) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} ಬೈಟ್‍ಗಳು) -document_properties_title=ಶೀರ್ಷಿಕೆ: -document_properties_author=ಕರ್ತೃ: -document_properties_subject=ವಿಷಯ: -document_properties_keywords=ಮುಖ್ಯಪದಗಳು: -document_properties_creation_date=ರಚಿಸಿದ ದಿನಾಂಕ: -document_properties_modification_date=ಮಾರ್ಪಡಿಸಲಾದ ದಿನಾಂಕ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ರಚಿಸಿದವರು: -document_properties_producer=PDF ಉತ್ಪಾದಕ: -document_properties_version=PDF ಆವೃತ್ತಿ: -document_properties_page_count=ಪುಟದ ಎಣಿಕೆ: -document_properties_page_size_unit_inches=ಇದರಲ್ಲಿ -document_properties_page_size_orientation_portrait=ಭಾವಚಿತ್ರ -document_properties_page_size_orientation_landscape=ಪ್ರಕೃತಿ ಚಿತ್ರ -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_close=ಮುಚ್ಚು -print_progress_message=ಮುದ್ರಿಸುವುದಕ್ಕಾಗಿ ದಸ್ತಾವೇಜನ್ನು ಸಿದ್ಧಗೊಳಿಸಲಾಗುತ್ತಿದೆ… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=ರದ್ದು ಮಾಡು -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು -toggle_sidebar_label=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು -document_outline_label=ದಸ್ತಾವೇಜಿನ ಹೊರರೇಖೆ -attachments.title=ಲಗತ್ತುಗಳನ್ನು ತೋರಿಸು -attachments_label=ಲಗತ್ತುಗಳು -thumbs.title=ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು -thumbs_label=ಚಿಕ್ಕಚಿತ್ರಗಳು -findbar.title=ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕು -findbar_label=ಹುಡುಕು -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=ಪುಟ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ಪುಟವನ್ನು ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು {{page}} -# Find panel button title and messages -find_input.title=ಹುಡುಕು -find_input.placeholder=ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕು… -find_previous.title=ವಾಕ್ಯದ ಹಿಂದಿನ ಇರುವಿಕೆಯನ್ನು ಹುಡುಕು -find_previous_label=ಹಿಂದಿನ -find_next.title=ವಾಕ್ಯದ ಮುಂದಿನ ಇರುವಿಕೆಯನ್ನು ಹುಡುಕು -find_next_label=ಮುಂದಿನ -find_highlight=ಎಲ್ಲವನ್ನು ಹೈಲೈಟ್ ಮಾಡು -find_match_case_label=ಕೇಸನ್ನು ಹೊಂದಿಸು -find_reached_top=ದಸ್ತಾವೇಜಿನ ಮೇಲ್ಭಾಗವನ್ನು ತಲುಪಿದೆ, ಕೆಳಗಿನಿಂದ ಆರಂಭಿಸು -find_reached_bottom=ದಸ್ತಾವೇಜಿನ ಕೊನೆಯನ್ನು ತಲುಪಿದೆ, ಮೇಲಿನಿಂದ ಆರಂಭಿಸು -find_not_found=ವಾಕ್ಯವು ಕಂಡು ಬಂದಿಲ್ಲ -# Error panel labels -error_more_info=ಹೆಚ್ಚಿನ ಮಾಹಿತಿ -error_less_info=ಕಡಿಮೆ ಮಾಹಿತಿ -error_close=ಮುಚ್ಚು -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ಸಂದೇಶ: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ರಾಶಿ: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ಕಡತ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ಸಾಲು: {{line}} -rendering_error=ಪುಟವನ್ನು ನಿರೂಪಿಸುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ. -# Predefined zoom values -page_scale_width=ಪುಟದ ಅಗಲ -page_scale_fit=ಪುಟದ ಸರಿಹೊಂದಿಕೆ -page_scale_auto=ಸ್ವಯಂಚಾಲಿತ ಗಾತ್ರಬದಲಾವಣೆ -page_scale_actual=ನಿಜವಾದ ಗಾತ್ರ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ. -invalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ. -missing_file_error=PDF ಕಡತ ಇಲ್ಲ. -unexpected_response_error=ಅನಿರೀಕ್ಷಿತವಾದ ಪೂರೈಕೆಗಣಕದ ಪ್ರತಿಕ್ರಿಯೆ. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} ಟಿಪ್ಪಣಿ] -password_label=PDF ಅನ್ನು ತೆರೆಯಲು ಗುಪ್ತಪದವನ್ನು ನಮೂದಿಸಿ. -password_invalid=ಅಮಾನ್ಯವಾದ ಗುಪ್ತಪದ, ದಯವಿಟ್ಟು ಇನ್ನೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ. -password_ok=OK -password_cancel=ರದ್ದು ಮಾಡು -printing_not_supported=ಎಚ್ಚರಿಕೆ: ಈ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ಮುದ್ರಣಕ್ಕೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವಿಲ್ಲ. -printing_not_ready=ಎಚ್ಚರಿಕೆ: PDF ಕಡತವು ಮುದ್ರಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಲೋಡ್ ಆಗಿಲ್ಲ. -web_fonts_disabled=ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕ್ಷರಶೈಲಿಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ko/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ko/viewer.properties deleted file mode 100644 index 142b9e1122d8448ae7a5c621e3167a14425355a5..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ko/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=이전 페이지 -previous_label=이전 -next.title=다음 페이지 -next_label=다음 -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=페이지 -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} / {{pagesCount}}) -zoom_out.title=축소 -zoom_out_label=축소 -zoom_in.title=확대 -zoom_in_label=확대 -zoom.title=확대/축소 -presentation_mode.title=프레젠테이션 모드로 전환 -presentation_mode_label=프레젠테이션 모드 -open_file.title=파일 열기 -open_file_label=열기 -print.title=인쇄 -print_label=인쇄 -download.title=다운로드 -download_label=다운로드 -bookmark.title=현재 보기 (복사 또는 새 창에 열기) -bookmark_label=현재 보기 -# Secondary toolbar and context menu -tools.title=도구 -tools_label=도구 -first_page.title=첫 페이지로 이동 -first_page.label=첫 페이지로 이동 -first_page_label=첫 페이지로 이동 -last_page.title=마지막 페이지로 이동 -last_page.label=마지막 페이지로 이동 -last_page_label=마지막 페이지로 이동 -page_rotate_cw.title=시계방향으로 회전 -page_rotate_cw.label=시계방향으로 회전 -page_rotate_cw_label=시계방향으로 회전 -page_rotate_ccw.title=시계 반대방향으로 회전 -page_rotate_ccw.label=시계 반대방향으로 회전 -page_rotate_ccw_label=시계 반대방향으로 회전 -cursor_text_select_tool.title=텍스트 선택 도구 활성화 -cursor_text_select_tool_label=텍스트 선택 도구 -cursor_hand_tool.title=손 도구 활성화 -cursor_hand_tool_label=손 도구 -scroll_vertical.title=세로 스크롤 사용 -scroll_vertical_label=세로 스크롤 -scroll_horizontal.title=가로 스크롤 사용 -scroll_horizontal_label=가로 스크롤 -scroll_wrapped.title=래핑(자동 줄 바꿈) 스크롤 사용 -scroll_wrapped_label=래핑 스크롤 -spread_none.title=한 페이지 보기 -spread_none_label=펼쳐짐 없음 -spread_odd.title=홀수 페이지로 시작하는 두 페이지 보기 -spread_odd_label=홀수 펼쳐짐 -spread_even.title=짝수 페이지로 시작하는 두 페이지 보기 -spread_even_label=짝수 펼쳐짐 -# Document properties dialog box -document_properties.title=문서 속성… -document_properties_label=문서 속성… -document_properties_file_name=파일 이름: -document_properties_file_size=파일 크기: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}}바이트) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}}바이트) -document_properties_title=제목: -document_properties_author=작성자: -document_properties_subject=주제: -document_properties_keywords=키워드: -document_properties_creation_date=작성 날짜: -document_properties_modification_date=수정 날짜: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=작성 프로그램: -document_properties_producer=PDF 변환 소프트웨어: -document_properties_version=PDF 버전: -document_properties_page_count=페이지 수: -document_properties_page_size=페이지 크기: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=세로 방향 -document_properties_page_size_orientation_landscape=가로 방향 -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=레터 -document_properties_page_size_name_legal=리걸 -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=빠른 웹 보기: -document_properties_linearized_yes=예 -document_properties_linearized_no=아니오 -document_properties_close=닫기 -print_progress_message=인쇄 문서 준비 중… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=취소 -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=탐색창 표시/숨기기 -toggle_sidebar_notification.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일 포함됨) -toggle_sidebar_notification2.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일/레이어 포함됨) -toggle_sidebar_label=탐색창 표시/숨기기 -document_outline.title=문서 아웃라인 보기 (더블 클릭해서 모든 항목 펼치기/접기) -document_outline_label=문서 아웃라인 -attachments.title=첨부파일 보기 -attachments_label=첨부파일 -layers.title=레이어 보기 (더블 클릭해서 모든 레이어를 기본 상태로 재설정) -layers_label=레이어 -thumbs.title=미리보기 -thumbs_label=미리보기 -current_outline_item.title=현재 아웃라인 항목 찾기 -current_outline_item_label=현재 아웃라인 항목 -findbar.title=검색 -findbar_label=검색 -additional_layers=추가 레이어 -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}} 페이지 -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} 페이지 -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} 페이지 미리보기 -# Find panel button title and messages -find_input.title=찾기 -find_input.placeholder=문서에서 찾기… -find_previous.title=지정 문자열에 일치하는 1개 부분을 검색 -find_previous_label=이전 -find_next.title=지정 문자열에 일치하는 다음 부분을 검색 -find_next_label=다음 -find_highlight=모두 강조 표시 -find_match_case_label=대/소문자 구분 -find_entire_word_label=단어 단위로 -find_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다. -find_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다. -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} 중 {{current}} 일치 -find_match_count[two]={{total}} 중 {{current}} 일치 -find_match_count[few]={{total}} 중 {{current}} 일치 -find_match_count[many]={{total}} 중 {{current}} 일치 -find_match_count[other]={{total}} 중 {{current}} 일치 -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} 이상 일치 -find_match_count_limit[one]={{limit}} 이상 일치 -find_match_count_limit[two]={{limit}} 이상 일치 -find_match_count_limit[few]={{limit}} 이상 일치 -find_match_count_limit[many]={{limit}} 이상 일치 -find_match_count_limit[other]={{limit}} 이상 일치 -find_not_found=검색 결과 없음 -# Error panel labels -error_more_info=정보 더 보기 -error_less_info=정보 간단히 보기 -error_close=닫기 -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (빌드: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=메시지: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=스택: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=파일: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=줄 번호: {{line}} -rendering_error=페이지를 렌더링하는 동안 오류가 발생했습니다. -# Predefined zoom values -page_scale_width=페이지 너비에 맞추기 -page_scale_fit=페이지에 맞추기 -page_scale_auto=자동 -page_scale_actual=실제 크기 -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF를 로드하는 동안 오류가 발생했습니다. -invalid_file_error=잘못되었거나 손상된 PDF 파일. -missing_file_error=PDF 파일 없음. -unexpected_response_error=예상치 못한 서버 응답입니다. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}} {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} 주석] -password_label=이 PDF 파일을 열 수 있는 비밀번호를 입력하세요. -password_invalid=잘못된 비밀번호입니다. 다시 시도하세요. -password_ok=확인 -password_cancel=취소 -printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다. -printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다. -web_fonts_disabled=웹 폰트가 비활성화됨: 내장된 PDF 글꼴을 사용할 수 없습니다. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lij/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lij/viewer.properties deleted file mode 100644 index 205d8e26f86f9f12ef63c952fd39ed5a05358fab..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lij/viewer.properties +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pagina primma -previous_label=Precedente -next.title=Pagina dòppo -next_label=Pròscima -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pagina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Diminoisci zoom -zoom_out_label=Diminoisci zoom -zoom_in.title=Aomenta zoom -zoom_in_label=Aomenta zoom -zoom.title=Zoom -presentation_mode.title=Vanni into mòddo de prezentaçion -presentation_mode_label=Mòddo de prezentaçion -open_file.title=Arvi file -open_file_label=Arvi -print.title=Stanpa -print_label=Stanpa -download.title=Descaregamento -download_label=Descaregamento -bookmark.title=Vixon corente (còpia ò arvi inte 'n neuvo barcon) -bookmark_label=Vixon corente -# Secondary toolbar and context menu -tools.title=Atressi -tools_label=Atressi -first_page.title=Vanni a-a primma pagina -first_page.label=Vanni a-a primma pagina -first_page_label=Vanni a-a primma pagina -last_page.title=Vanni a l'urtima pagina -last_page.label=Vanni a l'urtima pagina -last_page_label=Vanni a l'urtima pagina -page_rotate_cw.title=Gia into verso oraio -page_rotate_cw.label=Gia in senso do releuio -page_rotate_cw_label=Gia into verso oraio -page_rotate_ccw.title=Gia into verso antioraio -page_rotate_ccw.label=Gia in senso do releuio a-a reversa -page_rotate_ccw_label=Gia into verso antioraio -cursor_text_select_tool.title=Abilita strumento de seleçion do testo -cursor_text_select_tool_label=Strumento de seleçion do testo -cursor_hand_tool.title=Abilita strumento man -cursor_hand_tool_label=Strumento man -scroll_vertical.title=Deuvia rebelamento verticale -scroll_vertical_label=Rebelamento verticale -scroll_horizontal.title=Deuvia rebelamento orizontâ -scroll_horizontal_label=Rebelamento orizontâ -scroll_wrapped.title=Deuvia rebelamento incapsolou -scroll_wrapped_label=Rebelamento incapsolou -spread_none.title=No unite a-a difuxon de pagina -spread_none_label=No difuxon -spread_odd.title=Uniscite a-a difuxon de pagina co-o numero dèspa -spread_odd_label=Difuxon dèspa -spread_even.title=Uniscite a-a difuxon de pagina co-o numero pari -spread_even_label=Difuxon pari -# Document properties dialog box -document_properties.title=Propietæ do documento… -document_properties_label=Propietæ do documento… -document_properties_file_name=Nomme schedaio: -document_properties_file_size=Dimenscion schedaio: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Titolo: -document_properties_author=Aoto: -document_properties_subject=Ogetto: -document_properties_keywords=Paròlle ciave: -document_properties_creation_date=Dæta creaçion: -document_properties_modification_date=Dæta cangiamento: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Aotô originale: -document_properties_producer=Produtô PDF: -document_properties_version=Verscion PDF: -document_properties_page_count=Contezzo pagine: -document_properties_page_size=Dimenscion da pagina: -document_properties_page_size_unit_inches=dii gròsci -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=drito -document_properties_page_size_orientation_landscape=desteizo -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letia -document_properties_page_size_name_legal=Lezze -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista veloce do Web: -document_properties_linearized_yes=Sci -document_properties_linearized_no=No -document_properties_close=Særa -print_progress_message=Praparo o documento pe-a stanpa… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Anulla -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Ativa/dizativa bara de scianco -toggle_sidebar_notification.title=Cangia bara de löo (o documento o contegne di alegæ) -toggle_sidebar_label=Ativa/dizativa bara de scianco -document_outline.title=Fanni vedde o contorno do documento (scicca doggio pe espande/ridue tutti i elementi) -document_outline_label=Contorno do documento -attachments.title=Fanni vedde alegæ -attachments_label=Alegæ -thumbs.title=Mostra miniatue -thumbs_label=Miniatue -findbar.title=Treuva into documento -findbar_label=Treuva -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatua da pagina {{page}} -# Find panel button title and messages -find_input.title=Treuva -find_input.placeholder=Treuva into documento… -find_previous.title=Treuva a ripetiçion precedente do testo da çercâ -find_previous_label=Precedente -find_next.title=Treuva a ripetiçion dòppo do testo da çercâ -find_next_label=Segoente -find_highlight=Evidençia -find_match_case_label=Maioscole/minoscole -find_entire_word_label=Poula intrega -find_reached_top=Razonto a fin da pagina, continoa da l'iniçio -find_reached_bottom=Razonto l'iniçio da pagina, continoa da-a fin -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} corispondensa -find_match_count[two]={{current}} de {{total}} corispondense -find_match_count[few]={{current}} de {{total}} corispondense -find_match_count[many]={{current}} de {{total}} corispondense -find_match_count[other]={{current}} de {{total}} corispondense -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Ciù de {{limit}} corispondense -find_match_count_limit[one]=Ciù de {{limit}} corispondensa -find_match_count_limit[two]=Ciù de {{limit}} corispondense -find_match_count_limit[few]=Ciù de {{limit}} corispondense -find_match_count_limit[many]=Ciù de {{limit}} corispondense -find_match_count_limit[other]=Ciù de {{limit}} corispondense -find_not_found=Testo no trovou -# Error panel labels -error_more_info=Ciù informaçioin -error_less_info=Meno informaçioin -error_close=Særa -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesaggio: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Schedaio: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linia: {{line}} -rendering_error=Gh'é stæto 'n'erô itno rendering da pagina. -# Predefined zoom values -page_scale_width=Larghessa pagina -page_scale_fit=Adatta a una pagina -page_scale_auto=Zoom aotomatico -page_scale_actual=Dimenscioin efetive -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=S'é verificou 'n'erô itno caregamento do PDF. -invalid_file_error=O schedaio PDF o l'é no valido ò aroinou. -missing_file_error=O schedaio PDF o no gh'é. -unexpected_response_error=Risposta inprevista do-u server -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotaçion: {{type}}] -password_label=Dimme a paròlla segreta pe arvî sto schedaio PDF. -password_invalid=Paròlla segreta sbalia. Preuva torna. -password_ok=Va ben -password_cancel=Anulla -printing_not_supported=Atençion: a stanpa a no l'é conpletamente soportâ da sto navegatô. -printing_not_ready=Atençion: o PDF o no l'é ancon caregou conpletamente pe-a stanpa. -web_fonts_disabled=I font do web en dizativæ: inposcibile adeuviâ i carateri do PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lo/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lo/viewer.properties deleted file mode 100644 index 81a20e6048c5e69c5596a275553b8a26565c2608..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lo/viewer.properties +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ຫນ້າກ່ອນຫນ້າ -previous_label=ກ່ອນຫນ້າ -next.title=ຫນ້າຖັດໄປ -next_label=ຖັດໄປ -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=ຫນ້າ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=ຈາກ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} ຈາກ {{pagesCount}}) -zoom_out.title=ຂະຫຍາຍອອກ -zoom_out_label=ຂະຫຍາຍອອກ -zoom_in.title=ຂະຫຍາຍເຂົ້າ -zoom_in_label=ຂະຫຍາຍເຂົ້າ -zoom.title=ຂະຫຍາຍ -presentation_mode.title=ສັບປ່ຽນເປັນໂຫມດການນຳສະເຫນີ -presentation_mode_label=ໂຫມດການນຳສະເຫນີ -open_file.title=ເປີດໄຟລ໌ -open_file_label=ເປີດ -print.title=ພິມ -print_label=ພິມ -download.title=ດາວໂຫລດ -download_label=ດາວໂຫລດ -bookmark.title=ມຸມມອງປະຈຸບັນ (ສຳເນົາ ຫລື ເປີດໃນວິນໂດໃຫມ່) -bookmark_label=ມຸມມອງປະຈຸບັນ -# Secondary toolbar and context menu -tools.title=ເຄື່ອງມື -tools_label=ເຄື່ອງມື -first_page.title=ໄປທີ່ຫນ້າທຳອິດ -first_page.label=ໄປທີ່ຫນ້າທຳອິດ -first_page_label=ໄປທີ່ຫນ້າທຳອິດ -last_page.title=ໄປທີ່ຫນ້າສຸດທ້າຍ -last_page.label=ໄປທີ່ຫນ້າສຸດທ້າຍ -last_page_label=ໄປທີ່ຫນ້າສຸດທ້າຍ -page_rotate_cw.title=ຫມູນຕາມເຂັມໂມງ -page_rotate_cw.label=ຫມູນຕາມເຂັມໂມງ -page_rotate_cw_label=ຫມູນຕາມເຂັມໂມງ -page_rotate_ccw.title=ຫມູນທວນເຂັມໂມງ -page_rotate_ccw.label=ຫມູນທວນເຂັມໂມງ -page_rotate_ccw_label=ຫມູນທວນເຂັມໂມງ -# Document properties dialog box -document_properties_file_name=ຊື່ໄຟລ໌: -document_properties_file_size=ຂະຫນາດໄຟລ໌: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=ລວງຕັ້ງ -document_properties_page_size_orientation_landscape=ລວງນອນ -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=ຈົດໝາຍ -document_properties_page_size_name_legal=ຂໍ້ກົດຫມາຍ -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_close=ປິດ -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_close=ຍົກເລີກ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ເປີດ/ປິດແຖບຂ້າງ -toggle_sidebar_notification.title=ເປີດ/ປິດແຖບຂ້າງ (ເອກະສານມີເຄົ້າຮ່າງ/ໄຟລ໌ແນບ) -toggle_sidebar_label=ເປີດ/ປິດແຖບຂ້າງ -document_outline_label=ເຄົ້າຮ່າງເອກະສານ -findbar_label=ຄົ້ນຫາ -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -# Find panel button title and messages -find_input.title=ຄົ້ນຫາ -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -# Error panel labels -error_more_info=ຂໍ້ມູນເພີ່ມເຕີມ -error_less_info=ຂໍ້ມູນນ້ອຍລົງ -error_close=ປິດ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -rendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງເຣັນເດີຫນ້າ. -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -# Loading indicator messages -loading_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງໂຫລດ PDF. -invalid_file_error=ໄຟລ໌ PDF ບໍ່ຖືກຕ້ອງຫລືເສຍຫາຍ. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=ຕົກລົງ -password_cancel=ຍົກເລີກ - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/locale.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/locale.properties deleted file mode 100644 index d8588cf2764defa91ebae008918d45880add3951..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/locale.properties +++ /dev/null @@ -1,211 +0,0 @@ -[ach] -@import url(ach/viewer.properties) -[af] -@import url(af/viewer.properties) -[an] -@import url(an/viewer.properties) -[ar] -@import url(ar/viewer.properties) -[ast] -@import url(ast/viewer.properties) -[az] -@import url(az/viewer.properties) -[be] -@import url(be/viewer.properties) -[bg] -@import url(bg/viewer.properties) -[bn] -@import url(bn/viewer.properties) -[bo] -@import url(bo/viewer.properties) -[br] -@import url(br/viewer.properties) -[brx] -@import url(brx/viewer.properties) -[bs] -@import url(bs/viewer.properties) -[ca] -@import url(ca/viewer.properties) -[cak] -@import url(cak/viewer.properties) -[ckb] -@import url(ckb/viewer.properties) -[cs] -@import url(cs/viewer.properties) -[cy] -@import url(cy/viewer.properties) -[da] -@import url(da/viewer.properties) -[de] -@import url(de/viewer.properties) -[dsb] -@import url(dsb/viewer.properties) -[el] -@import url(el/viewer.properties) -[en-CA] -@import url(en-CA/viewer.properties) -[en-GB] -@import url(en-GB/viewer.properties) -[en-US] -@import url(en-US/viewer.properties) -[eo] -@import url(eo/viewer.properties) -[es-AR] -@import url(es-AR/viewer.properties) -[es-CL] -@import url(es-CL/viewer.properties) -[es-ES] -@import url(es-ES/viewer.properties) -[es-MX] -@import url(es-MX/viewer.properties) -[et] -@import url(et/viewer.properties) -[eu] -@import url(eu/viewer.properties) -[fa] -@import url(fa/viewer.properties) -[ff] -@import url(ff/viewer.properties) -[fi] -@import url(fi/viewer.properties) -[fr] -@import url(fr/viewer.properties) -[fy-NL] -@import url(fy-NL/viewer.properties) -[ga-IE] -@import url(ga-IE/viewer.properties) -[gd] -@import url(gd/viewer.properties) -[gl] -@import url(gl/viewer.properties) -[gn] -@import url(gn/viewer.properties) -[gu-IN] -@import url(gu-IN/viewer.properties) -[he] -@import url(he/viewer.properties) -[hi-IN] -@import url(hi-IN/viewer.properties) -[hr] -@import url(hr/viewer.properties) -[hsb] -@import url(hsb/viewer.properties) -[hu] -@import url(hu/viewer.properties) -[hy-AM] -@import url(hy-AM/viewer.properties) -[hye] -@import url(hye/viewer.properties) -[ia] -@import url(ia/viewer.properties) -[id] -@import url(id/viewer.properties) -[is] -@import url(is/viewer.properties) -[it] -@import url(it/viewer.properties) -[ja] -@import url(ja/viewer.properties) -[ka] -@import url(ka/viewer.properties) -[kab] -@import url(kab/viewer.properties) -[kk] -@import url(kk/viewer.properties) -[km] -@import url(km/viewer.properties) -[kn] -@import url(kn/viewer.properties) -[ko] -@import url(ko/viewer.properties) -[lij] -@import url(lij/viewer.properties) -[lo] -@import url(lo/viewer.properties) -[lt] -@import url(lt/viewer.properties) -[ltg] -@import url(ltg/viewer.properties) -[lv] -@import url(lv/viewer.properties) -[meh] -@import url(meh/viewer.properties) -[mk] -@import url(mk/viewer.properties) -[mr] -@import url(mr/viewer.properties) -[ms] -@import url(ms/viewer.properties) -[my] -@import url(my/viewer.properties) -[nb-NO] -@import url(nb-NO/viewer.properties) -[ne-NP] -@import url(ne-NP/viewer.properties) -[nl] -@import url(nl/viewer.properties) -[nn-NO] -@import url(nn-NO/viewer.properties) -[oc] -@import url(oc/viewer.properties) -[pa-IN] -@import url(pa-IN/viewer.properties) -[pl] -@import url(pl/viewer.properties) -[pt-BR] -@import url(pt-BR/viewer.properties) -[pt-PT] -@import url(pt-PT/viewer.properties) -[rm] -@import url(rm/viewer.properties) -[ro] -@import url(ro/viewer.properties) -[ru] -@import url(ru/viewer.properties) -[scn] -@import url(scn/viewer.properties) -[si] -@import url(si/viewer.properties) -[sk] -@import url(sk/viewer.properties) -[sl] -@import url(sl/viewer.properties) -[son] -@import url(son/viewer.properties) -[sq] -@import url(sq/viewer.properties) -[sr] -@import url(sr/viewer.properties) -[sv-SE] -@import url(sv-SE/viewer.properties) -[szl] -@import url(szl/viewer.properties) -[ta] -@import url(ta/viewer.properties) -[te] -@import url(te/viewer.properties) -[th] -@import url(th/viewer.properties) -[tl] -@import url(tl/viewer.properties) -[tr] -@import url(tr/viewer.properties) -[trs] -@import url(trs/viewer.properties) -[uk] -@import url(uk/viewer.properties) -[ur] -@import url(ur/viewer.properties) -[uz] -@import url(uz/viewer.properties) -[vi] -@import url(vi/viewer.properties) -[wo] -@import url(wo/viewer.properties) -[xh] -@import url(xh/viewer.properties) -[zh-CN] -@import url(zh-CN/viewer.properties) -[zh-TW] -@import url(zh-TW/viewer.properties) - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lt/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lt/viewer.properties deleted file mode 100644 index 3fef52a51fb2a017ef12e9f5cfe374cc53717a65..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lt/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Ankstesnis puslapis -previous_label=Ankstesnis -next.title=Kitas puslapis -next_label=Kitas -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Puslapis -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=iš {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} iš {{pagesCount}}) -zoom_out.title=Sumažinti -zoom_out_label=Sumažinti -zoom_in.title=Padidinti -zoom_in_label=Padidinti -zoom.title=Mastelis -presentation_mode.title=Pereiti į pateikties veikseną -presentation_mode_label=Pateikties veiksena -open_file.title=Atverti failą -open_file_label=Atverti -print.title=Spausdinti -print_label=Spausdinti -download.title=Parsiųsti -download_label=Parsiųsti -bookmark.title=Esamojo rodinio saitas (kopijavimui ar atvėrimui kitame lange) -bookmark_label=Esamasis rodinys -# Secondary toolbar and context menu -tools.title=Priemonės -tools_label=Priemonės -first_page.title=Eiti į pirmą puslapį -first_page.label=Eiti į pirmą puslapį -first_page_label=Eiti į pirmą puslapį -last_page.title=Eiti į paskutinį puslapį -last_page.label=Eiti į paskutinį puslapį -last_page_label=Eiti į paskutinį puslapį -page_rotate_cw.title=Pasukti pagal laikrodžio rodyklę -page_rotate_cw.label=Pasukti pagal laikrodžio rodyklę -page_rotate_cw_label=Pasukti pagal laikrodžio rodyklę -page_rotate_ccw.title=Pasukti prieš laikrodžio rodyklę -page_rotate_ccw.label=Pasukti prieš laikrodžio rodyklę -page_rotate_ccw_label=Pasukti prieš laikrodžio rodyklę -cursor_text_select_tool.title=Įjungti teksto žymėjimo įrankį -cursor_text_select_tool_label=Teksto žymėjimo įrankis -cursor_hand_tool.title=Įjungti vilkimo įrankį -cursor_hand_tool_label=Vilkimo įrankis -scroll_vertical.title=Naudoti vertikalų slinkimą -scroll_vertical_label=Vertikalus slinkimas -scroll_horizontal.title=Naudoti horizontalų slinkimą -scroll_horizontal_label=Horizontalus slinkimas -scroll_wrapped.title=Naudoti išklotą slinkimą -scroll_wrapped_label=Išklotas slinkimas -spread_none.title=Nejungti puslapių į dvilapius -spread_none_label=Be dvilapių -spread_odd.title=Sujungti į dvilapius pradedant nelyginiais puslapiais -spread_odd_label=Nelyginiai dvilapiai -spread_even.title=Sujungti į dvilapius pradedant lyginiais puslapiais -spread_even_label=Lyginiai dvilapiai -# Document properties dialog box -document_properties.title=Dokumento savybės… -document_properties_label=Dokumento savybės… -document_properties_file_name=Failo vardas: -document_properties_file_size=Failo dydis: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} B) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} B) -document_properties_title=Antraštė: -document_properties_author=Autorius: -document_properties_subject=Tema: -document_properties_keywords=Reikšminiai žodžiai: -document_properties_creation_date=Sukūrimo data: -document_properties_modification_date=Modifikavimo data: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Kūrėjas: -document_properties_producer=PDF generatorius: -document_properties_version=PDF versija: -document_properties_page_count=Puslapių skaičius: -document_properties_page_size=Puslapio dydis: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=stačias -document_properties_page_size_orientation_landscape=gulsčias -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Laiškas -document_properties_page_size_name_legal=Dokumentas -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Spartus žiniatinklio rodinys: -document_properties_linearized_yes=Taip -document_properties_linearized_no=Ne -document_properties_close=Užverti -print_progress_message=Dokumentas ruošiamas spausdinimui… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Atsisakyti -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Rodyti / slėpti šoninį polangį -toggle_sidebar_notification.title=Parankinė (dokumentas turi struktūrą / priedų) -toggle_sidebar_notification2.title=Parankinė (dokumentas turi struktūrą / priedų / sluoksnių) -toggle_sidebar_label=Šoninis polangis -document_outline.title=Rodyti dokumento struktūrą (spustelėkite dukart norėdami išplėsti/suskleisti visus elementus) -document_outline_label=Dokumento struktūra -attachments.title=Rodyti priedus -attachments_label=Priedai -layers.title=Rodyti sluoksnius (spustelėkite dukart, norėdami atstatyti visus sluoksnius į numatytąją būseną) -layers_label=Sluoksniai -thumbs.title=Rodyti puslapių miniatiūras -thumbs_label=Miniatiūros -current_outline_item.title=Rasti dabartinį struktūros elementą -current_outline_item_label=Dabartinis struktūros elementas -findbar.title=Ieškoti dokumente -findbar_label=Rasti -additional_layers=Papildomi sluoksniai -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}} puslapis -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} puslapis -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} puslapio miniatiūra -# Find panel button title and messages -find_input.title=Rasti -find_input.placeholder=Rasti dokumente… -find_previous.title=Ieškoti ankstesnio frazės egzemplioriaus -find_previous_label=Ankstesnis -find_next.title=Ieškoti tolesnio frazės egzemplioriaus -find_next_label=Tolesnis -find_highlight=Viską paryškinti -find_match_case_label=Skirti didžiąsias ir mažąsias raides -find_entire_word_label=Ištisi žodžiai -find_reached_top=Pasiekus dokumento pradžią, paieška pratęsta nuo pabaigos -find_reached_bottom=Pasiekus dokumento pabaigą, paieška pratęsta nuo pradžios -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} iš {{total}} atitikmens -find_match_count[two]={{current}} iš {{total}} atitikmenų -find_match_count[few]={{current}} iš {{total}} atitikmenų -find_match_count[many]={{current}} iš {{total}} atitikmenų -find_match_count[other]={{current}} iš {{total}} atitikmens -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Daugiau nei {{limit}} atitikmenų -find_match_count_limit[one]=Daugiau nei {{limit}} atitikmuo -find_match_count_limit[two]=Daugiau nei {{limit}} atitikmenys -find_match_count_limit[few]=Daugiau nei {{limit}} atitikmenys -find_match_count_limit[many]=Daugiau nei {{limit}} atitikmenų -find_match_count_limit[other]=Daugiau nei {{limit}} atitikmuo -find_not_found=Ieškoma frazė nerasta -# Error panel labels -error_more_info=Išsamiau -error_less_info=Glausčiau -error_close=Užverti -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v. {{version}} (darinys: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Pranešimas: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Dėklas: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Failas: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Eilutė: {{line}} -rendering_error=Atvaizduojant puslapį įvyko klaida. -# Predefined zoom values -page_scale_width=Priderinti prie lapo pločio -page_scale_fit=Pritaikyti prie lapo dydžio -page_scale_auto=Automatinis mastelis -page_scale_actual=Tikras dydis -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Įkeliant PDF failą įvyko klaida. -invalid_file_error=Tai nėra PDF failas arba jis yra sugadintas. -missing_file_error=PDF failas nerastas. -unexpected_response_error=Netikėtas serverio atsakas. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[„{{type}}“ tipo anotacija] -password_label=Įveskite slaptažodį šiam PDF failui atverti. -password_invalid=Slaptažodis neteisingas. Bandykite dar kartą. -password_ok=Gerai -password_cancel=Atsisakyti -printing_not_supported=Dėmesio! Spausdinimas šioje naršyklėje nėra pilnai realizuotas. -printing_not_ready=Dėmesio! PDF failas dar nėra pilnai įkeltas spausdinimui. -web_fonts_disabled=Saityno šriftai išjungti – PDF faile esančių šriftų naudoti negalima. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ltg/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ltg/viewer.properties deleted file mode 100644 index 185ca91c8f8393f5fdf3d9da22c203ea33660346..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ltg/viewer.properties +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Īprīkšejā lopa -previous_label=Īprīkšejā -next.title=Nuokomuo lopa -next_label=Nuokomuo -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Lopa -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=nu {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} nu {{pagesCount}}) -zoom_out.title=Attuolynuot -zoom_out_label=Attuolynuot -zoom_in.title=Pītuvynuot -zoom_in_label=Pītuvynuot -zoom.title=Palelynuojums -presentation_mode.title=Puorslēgtīs iz Prezentacejis režymu -presentation_mode_label=Prezentacejis režyms -open_file.title=Attaiseit failu -open_file_label=Attaiseit -print.title=Drukuošona -print_label=Drukōt -download.title=Lejupīluode -download_label=Lejupīluodeit -bookmark.title=Pošreizejais skots (kopēt voi attaiseit jaunā lūgā) -bookmark_label=Pošreizejais skots -# Secondary toolbar and context menu -tools.title=Reiki -tools_label=Reiki -first_page.title=Īt iz pyrmū lopu -first_page.label=Īt iz pyrmū lopu -first_page_label=Īt iz pyrmū lopu -last_page.title=Īt iz piedejū lopu -last_page.label=Īt iz piedejū lopu -last_page_label=Īt iz piedejū lopu -page_rotate_cw.title=Pagrīzt pa pulksteni -page_rotate_cw.label=Pagrīzt pa pulksteni -page_rotate_cw_label=Pagrīzt pa pulksteni -page_rotate_ccw.title=Pagrīzt pret pulksteni -page_rotate_ccw.label=Pagrīzt pret pulksteni -page_rotate_ccw_label=Pagrīzt pret pulksteni -cursor_text_select_tool.title=Aktivizēt teksta izvieles reiku -cursor_text_select_tool_label=Teksta izvieles reiks -cursor_hand_tool.title=Aktivēt rūkys reiku -cursor_hand_tool_label=Rūkys reiks -scroll_vertical.title=Izmontōt vertikalū ritinōšonu -scroll_vertical_label=Vertikalō ritinōšona -scroll_horizontal.title=Izmontōt horizontalū ritinōšonu -scroll_horizontal_label=Horizontalō ritinōšona -scroll_wrapped.title=Izmontōt mārūgojamū ritinōšonu -scroll_wrapped_label=Mārūgojamō ritinōšona -spread_none.title=Naizmontōt lopu atvāruma režimu -spread_none_label=Bez atvārumim -spread_odd.title=Izmontōt lopu atvārumus sōkut nu napōra numeru lopom -spread_odd_label=Napōra lopys pa kreisi -spread_even.title=Izmontōt lopu atvārumus sōkut nu pōra numeru lopom -spread_even_label=Pōra lopys pa kreisi -# Document properties dialog box -document_properties.title=Dokumenta īstatiejumi… -document_properties_label=Dokumenta īstatiejumi… -document_properties_file_name=Faila nūsaukums: -document_properties_file_size=Faila izmārs: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} biti) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} biti) -document_properties_title=Nūsaukums: -document_properties_author=Autors: -document_properties_subject=Tema: -document_properties_keywords=Atslāgi vuordi: -document_properties_creation_date=Izveides datums: -document_properties_modification_date=lobuošonys datums: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Radeituojs: -document_properties_producer=PDF producents: -document_properties_version=PDF verseja: -document_properties_page_count=Lopu skaits: -document_properties_page_size=Lopas izmārs: -document_properties_page_size_unit_inches=collas -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portreta orientaceja -document_properties_page_size_orientation_landscape=ainovys orientaceja -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Jā -document_properties_linearized_no=Nā -document_properties_close=Aiztaiseit -print_progress_message=Preparing document for printing… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Atceļt -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Puorslēgt suonu jūslu -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) -toggle_sidebar_label=Puorslēgt suonu jūslu -document_outline.title=Show Document Outline (double-click to expand/collapse all items) -document_outline_label=Dokumenta saturs -attachments.title=Show Attachments -attachments_label=Attachments -thumbs.title=Paruodeit seiktālus -thumbs_label=Seiktāli -findbar.title=Mekleit dokumentā -findbar_label=Mekleit -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Lopa {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Lopys {{page}} seiktāls -# Find panel button title and messages -find_input.title=Mekleit -find_input.placeholder=Mekleit dokumentā… -find_previous.title=Atrast īprīkšejū -find_previous_label=Īprīkšejā -find_next.title=Atrast nuokamū -find_next_label=Nuokomuo -find_highlight=Īkruosuot vysys -find_match_case_label=Lelū, mozū burtu jiuteigs -find_reached_top=Sasnīgts dokumenta suokums, turpynojom nu beigom -find_reached_bottom=Sasnīgtys dokumenta beigys, turpynojom nu suokuma -find_not_found=Frāze nav atrosta -# Error panel labels -error_more_info=Vairuok informacejis -error_less_info=mozuok informacejis -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ziņuojums: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Steks: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Ryndeņa: {{line}} -rendering_error=Attālojūt lopu rodās klaida -# Predefined zoom values -page_scale_width=Lopys plotumā -page_scale_fit=Ītylpynūt lopu -page_scale_auto=Automatiskais izmārs -page_scale_actual=Patīsais izmārs -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Īluodejūt PDF nūtyka klaida. -invalid_file_error=Nadereigs voi būjuots PDF fails. -missing_file_error=PDF fails nav atrosts. -unexpected_response_error=Unexpected server response. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Īvodit paroli, kab attaiseitu PDF failu. -password_invalid=Napareiza parole, raugit vēļreiz. -password_ok=Labi -password_cancel=Atceļt -printing_not_supported=Uzmaneibu: Drukuošona nu itei puorlūka dorbojās tikai daleji. -printing_not_ready=Uzmaneibu: PDF nav pilneibā īluodeits drukuošonai. -web_fonts_disabled=Šķārsteikla fonti nav aktivizāti: Navar īgult PDF fontus. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lv/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lv/viewer.properties deleted file mode 100644 index ed76f74fa696805caa4caa37f85acb3f3fdf5002..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/lv/viewer.properties +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Iepriekšējā lapa -previous_label=Iepriekšējā -next.title=Nākamā lapa -next_label=Nākamā -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Lapa -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=no {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} no {{pagesCount}}) -zoom_out.title=Attālināt\u0020 -zoom_out_label=Attālināt -zoom_in.title=Pietuvināt -zoom_in_label=Pietuvināt -zoom.title=Palielinājums -presentation_mode.title=Pārslēgties uz Prezentācijas režīmu -presentation_mode_label=Prezentācijas režīms -open_file.title=Atvērt failu -open_file_label=Atvērt -print.title=Drukāšana -print_label=Drukāt -download.title=Lejupielāde -download_label=Lejupielādēt -bookmark.title=Pašreizējais skats (kopēt vai atvērt jaunā logā) -bookmark_label=Pašreizējais skats -# Secondary toolbar and context menu -tools.title=Rīki -tools_label=Rīki -first_page.title=Iet uz pirmo lapu -first_page.label=Iet uz pirmo lapu -first_page_label=Iet uz pirmo lapu -last_page.title=Iet uz pēdējo lapu -last_page.label=Iet uz pēdējo lapu -last_page_label=Iet uz pēdējo lapu -page_rotate_cw.title=Pagriezt pa pulksteni -page_rotate_cw.label=Pagriezt pa pulksteni -page_rotate_cw_label=Pagriezt pa pulksteni -page_rotate_ccw.title=Pagriezt pret pulksteni -page_rotate_ccw.label=Pagriezt pret pulksteni -page_rotate_ccw_label=Pagriezt pret pulksteni -cursor_text_select_tool.title=Aktivizēt teksta izvēles rīku -cursor_text_select_tool_label=Teksta izvēles rīks -cursor_hand_tool.title=Aktivēt rokas rīku -cursor_hand_tool_label=Rokas rīks -scroll_vertical.title=Izmantot vertikālo ritināšanu -scroll_vertical_label=Vertikālā ritināšana -scroll_horizontal.title=Izmantot horizontālo ritināšanu -scroll_horizontal_label=Horizontālā ritināšana -scroll_wrapped.title=Izmantot apkļauto ritināšanu -scroll_wrapped_label=Apkļautā ritināšana -spread_none.title=Nepievienoties lapu izpletumiem -spread_none_label=Neizmantot izpletumus -spread_odd.title=Izmantot lapu izpletumus sākot ar nepāra numuru lapām -spread_odd_label=Nepāra izpletumi -spread_even.title=Izmantot lapu izpletumus sākot ar pāra numuru lapām -spread_even_label=Pāra izpletumi -# Document properties dialog box -document_properties.title=Dokumenta iestatījumi… -document_properties_label=Dokumenta iestatījumi… -document_properties_file_name=Faila nosaukums: -document_properties_file_size=Faila izmērs: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} biti) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} biti) -document_properties_title=Nosaukums: -document_properties_author=Autors: -document_properties_subject=Tēma: -document_properties_keywords=Atslēgas vārdi: -document_properties_creation_date=Izveides datums: -document_properties_modification_date=LAbošanas datums: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Radītājs: -document_properties_producer=PDF producents: -document_properties_version=PDF versija: -document_properties_page_count=Lapu skaits: -document_properties_page_size=Papīra izmērs: -document_properties_page_size_unit_inches=collas -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portretorientācija -document_properties_page_size_orientation_landscape=ainavorientācija -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Vēstule -document_properties_page_size_name_legal=Juridiskie teksti -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Ātrā tīmekļa skats: -document_properties_linearized_yes=Jā -document_properties_linearized_no=Nē -document_properties_close=Aizvērt -print_progress_message=Gatavo dokumentu drukāšanai... -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Atcelt -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Pārslēgt sānu joslu -toggle_sidebar_notification.title=Pārslēgt sānu joslu (dokumenta saturu un pielikumus) -toggle_sidebar_label=Pārslēgt sānu joslu -document_outline.title=Rādīt dokumenta struktūru (veiciet dubultklikšķi lai izvērstu/sakļautu visus vienumus) -document_outline_label=Dokumenta saturs -attachments.title=Rādīt pielikumus -attachments_label=Pielikumi -thumbs.title=Parādīt sīktēlus -thumbs_label=Sīktēli -findbar.title=Meklēt dokumentā -findbar_label=Meklēt -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Lapa {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Lapas {{page}} sīktēls -# Find panel button title and messages -find_input.title=Meklēt -find_input.placeholder=Meklēt dokumentā… -find_previous.title=Atrast iepriekšējo -find_previous_label=Iepriekšējā -find_next.title=Atrast nākamo -find_next_label=Nākamā -find_highlight=Iekrāsot visas -find_match_case_label=Lielo, mazo burtu jutīgs -find_entire_word_label=Veselus vārdus -find_reached_top=Sasniegts dokumenta sākums, turpinām no beigām -find_reached_bottom=Sasniegtas dokumenta beigas, turpinām no sākuma -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} no {{total}} rezultāta -find_match_count[two]={{current}} no {{total}} rezultātiem -find_match_count[few]={{current}} no {{total}} rezultātiem -find_match_count[many]={{current}} no {{total}} rezultātiem -find_match_count[other]={{current}} no {{total}} rezultātiem -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Vairāk nekā {{limit}} rezultāti -find_match_count_limit[one]=Vairāk nekā {{limit}} rezultāti -find_match_count_limit[two]=Vairāk nekā {{limit}} rezultāti -find_match_count_limit[few]=Vairāk nekā {{limit}} rezultāti -find_match_count_limit[many]=Vairāk nekā {{limit}} rezultāti -find_match_count_limit[other]=Vairāk nekā {{limit}} rezultāti -find_not_found=Frāze nav atrasta -# Error panel labels -error_more_info=Vairāk informācijas -error_less_info=MAzāk informācijas -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ziņojums: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Steks: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rindiņa: {{line}} -rendering_error=Attēlojot lapu radās kļūda -# Predefined zoom values -page_scale_width=Lapas platumā -page_scale_fit=Ietilpinot lapu -page_scale_auto=Automātiskais izmērs -page_scale_actual=Patiesais izmērs -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ielādējot PDF notika kļūda. -invalid_file_error=Nederīgs vai bojāts PDF fails. -missing_file_error=PDF fails nav atrasts. -unexpected_response_error=Negaidīa servera atbilde. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} anotācija] -password_label=Ievadiet paroli, lai atvērtu PDF failu. -password_invalid=Nepareiza parole, mēģiniet vēlreiz. -password_ok=Labi -password_cancel=Atcelt -printing_not_supported=Uzmanību: Drukāšana no šī pārlūka darbojas tikai daļēji. -printing_not_ready=Uzmanību: PDF nav pilnībā ielādēts drukāšanai. -web_fonts_disabled=Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fontus. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/meh/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/meh/viewer.properties deleted file mode 100644 index 383aecf99b27697531e546ef0ee2648990ab8bed..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/meh/viewer.properties +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página yata -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -zoom.title=Nasa´a ka´nu/Nasa´a luli -open_file_label=Síne -# Secondary toolbar and context menu -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=Kuvi -document_properties_close=Nakasɨ -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Nkuvi-ka -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -findbar_label=Nánuku -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -# Find panel button title and messages -find_input.title=Nánuku -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -# Error panel labels -error_close=Nakasɨ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_cancel=Nkuvi-ka - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/mk/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/mk/viewer.properties deleted file mode 100644 index f2f9ef2770d2e77db330eccc5f125f7fc2939020..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/mk/viewer.properties +++ /dev/null @@ -1,126 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Претходна страница -previous_label=Претходна -next.title=Следна страница -next_label=Следна -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -zoom_out.title=Намалување -zoom_out_label=Намали -zoom_in.title=Зголемување -zoom_in_label=Зголеми -zoom.title=Променување на големина -presentation_mode.title=Премини во презентациски режим -presentation_mode_label=Презентациски режим -open_file.title=Отворање датотека -open_file_label=Отвори -print.title=Печатење -print_label=Печати -download.title=Преземање -download_label=Преземи -bookmark.title=Овој преглед (копирај или отвори во нов прозорец) -bookmark_label=Овој преглед -# Secondary toolbar and context menu -tools.title=Алатки -first_page.label=Оди до првата страница -last_page.label=Оди до последната страница -page_rotate_cw.label=Ротирај по стрелките на часовникот -page_rotate_ccw.label=Ротирај спротивно од стрелките на часовникот -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_close=Откажи -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Вклучи странична лента -toggle_sidebar_label=Вклучи странична лента -thumbs.title=Прикажување на икони -thumbs_label=Икони -findbar.title=Најди во документот -findbar_label=Најди -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Страница {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Икона од страница {{page}} -# Find panel button title and messages -find_previous.title=Најди ја предходната појава на фразата -find_previous_label=Претходно -find_next.title=Најди ја следната појава на фразата -find_next_label=Следно -find_highlight=Означи сѐ -find_match_case_label=Токму така -find_reached_top=Барањето стигна до почетокот на документот и почнува од крајот -find_reached_bottom=Барањето стигна до крајот на документот и почнува од почеток -find_not_found=Фразата не е пронајдена -# Error panel labels -error_more_info=Повеќе информации -error_less_info=Помалку информации -error_close=Затвори -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Порака: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Датотека: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Линија: {{line}} -rendering_error=Настана грешка при прикажувањето на страницата. -# Predefined zoom values -page_scale_width=Ширина на страница -page_scale_fit=Цела страница -page_scale_auto=Автоматска големина -page_scale_actual=Вистинска големина -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -# Loading indicator messages -loading_error=Настана грешка при вчитувањето на PDF-от. -invalid_file_error=Невалидна или корумпирана PDF датотека. -missing_file_error=Недостасува PDF документ. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_cancel=Откажи -printing_not_supported=Предупредување: Печатењето не е целосно поддржано во овој прелистувач. -printing_not_ready=Предупредување: PDF документот не е целосно вчитан за печатење. -web_fonts_disabled=Интернет фонтовите се оневозможени: не може да се користат вградените PDF фонтови. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/mr/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/mr/viewer.properties deleted file mode 100644 index f608b00c5b15dc3f8853422ff2121d3c9bfa00c9..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/mr/viewer.properties +++ /dev/null @@ -1,218 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=मागील पृष्ठ -previous_label=मागील -next.title=पुढील पृष्ठ -next_label=पुढील -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=पृष्ठ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}}पैकी -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pagesCount}} पैकी {{pageNumber}}) -zoom_out.title=छोटे करा -zoom_out_label=छोटे करा -zoom_in.title=मोठे करा -zoom_in_label=मोठे करा -zoom.title=लहान किंवा मोठे करा -presentation_mode.title=प्रस्तुतिकरण मोडचा वापर करा -presentation_mode_label=प्रस्तुतिकरण मोड -open_file.title=फाइल उघडा -open_file_label=उघडा -print.title=छपाई करा -print_label=छपाई करा -download.title=डाउनलोड करा -download_label=डाउनलोड करा -bookmark.title=सध्याचे अवलोकन (नवीन पटलात प्रत बनवा किंवा उघडा) -bookmark_label=सध्याचे अवलोकन -# Secondary toolbar and context menu -tools.title=साधने -tools_label=साधने -first_page.title=पहिल्या पृष्ठावर जा -first_page.label=पहिल्या पृष्ठावर जा -first_page_label=पहिल्या पृष्ठावर जा -last_page.title=शेवटच्या पृष्ठावर जा -last_page.label=शेवटच्या पृष्ठावर जा -last_page_label=शेवटच्या पृष्ठावर जा -page_rotate_cw.title=घड्याळाच्या काट्याच्या दिशेने फिरवा -page_rotate_cw.label=घड्याळाच्या काट्याच्या दिशेने फिरवा -page_rotate_cw_label=घड्याळाच्या काट्याच्या दिशेने फिरवा -page_rotate_ccw.title=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा -page_rotate_ccw.label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा -page_rotate_ccw_label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा -cursor_text_select_tool.title=मजकूर निवड साधन कार्यान्वयीत करा -cursor_text_select_tool_label=मजकूर निवड साधन -cursor_hand_tool.title=हात साधन कार्यान्वित करा -cursor_hand_tool_label=हस्त साधन -scroll_vertical.title=अनुलंब स्क्रोलिंग वापरा -scroll_vertical_label=अनुलंब स्क्रोलिंग -scroll_horizontal.title=क्षैतिज स्क्रोलिंग वापरा -scroll_horizontal_label=क्षैतिज स्क्रोलिंग -# Document properties dialog box -document_properties.title=दस्तऐवज गुणधर्म… -document_properties_label=दस्तऐवज गुणधर्म… -document_properties_file_name=फाइलचे नाव: -document_properties_file_size=फाइल आकार: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} बाइट्स) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} बाइट्स) -document_properties_title=शिर्षक: -document_properties_author=लेखक: -document_properties_subject=विषय: -document_properties_keywords=मुख्यशब्द: -document_properties_creation_date=निर्माण दिनांक: -document_properties_modification_date=दुरूस्ती दिनांक: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=निर्माता: -document_properties_producer=PDF निर्माता: -document_properties_version=PDF आवृत्ती: -document_properties_page_count=पृष्ठ संख्या: -document_properties_page_size=पृष्ठ आकार: -document_properties_page_size_unit_inches=इंच -document_properties_page_size_unit_millimeters=मीमी -document_properties_page_size_orientation_portrait=उभी मांडणी -document_properties_page_size_orientation_landscape=आडवे -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=जलद वेब दृष्य: -document_properties_linearized_yes=हो -document_properties_linearized_no=नाही -document_properties_close=बंद करा -print_progress_message=छपाई करीता पृष्ठ तयार करीत आहे… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=रद्द करा -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=बाजूचीपट्टी टॉगल करा -toggle_sidebar_notification.title=बाजूची पट्टी टॉगल करा (दस्तऐवजामध्ये रुपरेषा/जोडण्या आहेत) -toggle_sidebar_label=बाजूचीपट्टी टॉगल करा -document_outline.title=दस्तऐवज बाह्यरेखा दर्शवा (विस्तृत करण्यासाठी दोनवेळा क्लिक करा /सर्व घटक दाखवा) -document_outline_label=दस्तऐवज रूपरेषा -attachments.title=जोडपत्र दाखवा -attachments_label=जोडपत्र -thumbs.title=थंबनेल्स् दाखवा -thumbs_label=थंबनेल्स् -findbar.title=दस्तऐवजात शोधा -findbar_label=शोधा -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=पृष्ठ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=पृष्ठाचे थंबनेल {{page}} -# Find panel button title and messages -find_input.title=शोधा -find_input.placeholder=दस्तऐवजात शोधा… -find_previous.title=वाकप्रयोगची मागील घटना शोधा -find_previous_label=मागील -find_next.title=वाकप्रयोगची पुढील घटना शोधा -find_next_label=पुढील -find_highlight=सर्व ठळक करा -find_match_case_label=आकार जुळवा -find_entire_word_label=संपूर्ण शब्द -find_reached_top=दस्तऐवजाच्या शीर्षकास पोहचले, तळपासून पुढे -find_reached_bottom=दस्तऐवजाच्या तळाला पोहचले, शीर्षकापासून पुढे -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} पैकी {{current}} सुसंगत -find_match_count[two]={{total}} पैकी {{current}} सुसंगत -find_match_count[few]={{total}} पैकी {{current}} सुसंगत -find_match_count[many]={{total}} पैकी {{current}} सुसंगत -find_match_count[other]={{total}} पैकी {{current}} सुसंगत -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} पेक्षा अधिक जुळण्या -find_match_count_limit[one]={{limit}} पेक्षा अधिक जुळण्या -find_match_count_limit[two]={{limit}} पेक्षा अधिक जुळण्या -find_match_count_limit[few]={{limit}} पेक्षा अधिक जुळण्या -find_match_count_limit[many]={{limit}} पेक्षा अधिक जुळण्या -find_match_count_limit[other]={{limit}} पेक्षा अधिक जुळण्या -find_not_found=वाकप्रयोग आढळले नाही -# Error panel labels -error_more_info=आणखी माहिती -error_less_info=कमी माहिती -error_close=बंद करा -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=संदेश: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=स्टॅक: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फाइल: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=रेष: {{line}} -rendering_error=पृष्ठ दाखवतेवेळी त्रुटी आढळली. -# Predefined zoom values -page_scale_width=पृष्ठाची रूंदी -page_scale_fit=पृष्ठ बसवा -page_scale_auto=स्वयं लाहन किंवा मोठे करणे -page_scale_actual=प्रत्यक्ष आकार -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF लोड करतेवेळी त्रुटी आढळली. -invalid_file_error=अवैध किंवा दोषीत PDF फाइल. -missing_file_error=न आढळणारी PDF फाइल. -unexpected_response_error=अनपेक्षित सर्व्हर प्रतिसाद. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} टिपण्णी] -password_label=ही PDF फाइल उघडण्याकरिता पासवर्ड द्या. -password_invalid=अवैध पासवर्ड. कृपया पुन्हा प्रयत्न करा. -password_ok=ठीक आहे -password_cancel=रद्द करा -printing_not_supported=सावधानता: या ब्राउझरतर्फे छपाइ पूर्णपणे समर्थीत नाही. -printing_not_ready=सावधानता: छपाईकरिता PDF पूर्णतया लोड झाले नाही. -web_fonts_disabled=वेब टंक असमर्थीत आहेत: एम्बेडेड PDF टंक वापर अशक्य. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ms/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ms/viewer.properties deleted file mode 100644 index 5f943317c122080b43f08909448ff60e5bdae25c..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ms/viewer.properties +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Halaman Dahulu -previous_label=Dahulu -next.title=Halaman Berikut -next_label=Berikut -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Halaman -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=daripada {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} daripada {{pagesCount}}) -zoom_out.title=Zum Keluar -zoom_out_label=Zum Keluar -zoom_in.title=Zum Masuk -zoom_in_label=Zum Masuk -zoom.title=Zum -presentation_mode.title=Tukar ke Mod Persembahan -presentation_mode_label=Mod Persembahan -open_file.title=Buka Fail -open_file_label=Buka -print.title=Cetak -print_label=Cetak -download.title=Muat turun -download_label=Muat turun -bookmark.title=Paparan semasa (salin atau buka dalam tetingkap baru) -bookmark_label=Paparan Semasa -# Secondary toolbar and context menu -tools.title=Alatan -tools_label=Alatan -first_page.title=Pergi ke Halaman Pertama -first_page.label=Pergi ke Halaman Pertama -first_page_label=Pergi ke Halaman Pertama -last_page.title=Pergi ke Halaman Terakhir -last_page.label=Pergi ke Halaman Terakhir -last_page_label=Pergi ke Halaman Terakhir -page_rotate_cw.title=Berputar ikut arah Jam -page_rotate_cw.label=Berputar ikut arah Jam -page_rotate_cw_label=Berputar ikut arah Jam -page_rotate_ccw.title=Pusing berlawan arah jam -page_rotate_ccw.label=Pusing berlawan arah jam -page_rotate_ccw_label=Pusing berlawan arah jam -cursor_text_select_tool.title=Dayakan Alatan Pilihan Teks -cursor_text_select_tool_label=Alatan Pilihan Teks -cursor_hand_tool.title=Dayakan Alatan Tangan -cursor_hand_tool_label=Alatan Tangan -scroll_vertical.title=Guna Skrol Menegak -scroll_vertical_label=Skrol Menegak -scroll_horizontal.title=Guna Skrol Mengufuk -scroll_horizontal_label=Skrol Mengufuk -scroll_wrapped.title=Guna Skrol Berbalut -scroll_wrapped_label=Skrol Berbalut -spread_none.title=Jangan hubungkan hamparan halaman -spread_none_label=Tanpa Hamparan -spread_odd.title=Hubungkan hamparan halaman dengan halaman nombor ganjil -spread_odd_label=Hamparan Ganjil -spread_even.title=Hubungkan hamparan halaman dengan halaman nombor genap -spread_even_label=Hamparan Seimbang -# Document properties dialog box -document_properties.title=Sifat Dokumen… -document_properties_label=Sifat Dokumen… -document_properties_file_name=Nama fail: -document_properties_file_size=Saiz fail: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bait) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bait) -document_properties_title=Tajuk: -document_properties_author=Pengarang: -document_properties_subject=Subjek: -document_properties_keywords=Kata kunci: -document_properties_creation_date=Masa Dicipta: -document_properties_modification_date=Tarikh Ubahsuai: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Pencipta: -document_properties_producer=Pengeluar PDF: -document_properties_version=Versi PDF: -document_properties_page_count=Kiraan Laman: -document_properties_page_size=Saiz Halaman: -document_properties_page_size_unit_inches=dalam -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=potret -document_properties_page_size_orientation_landscape=landskap -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Paparan Web Pantas: -document_properties_linearized_yes=Ya -document_properties_linearized_no=Tidak -document_properties_close=Tutup -print_progress_message=Menyediakan dokumen untuk dicetak… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Batal -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Togol Bar Sisi -toggle_sidebar_notification.title=Togol Sidebar (dokumen mengandungi rangka/attachments) -toggle_sidebar_label=Togol Bar Sisi -document_outline.title=Papar Rangka Dokumen (klik-dua-kali untuk kembangkan/kolaps semua item) -document_outline_label=Rangka Dokumen -attachments.title=Papar Lampiran -attachments_label=Lampiran -thumbs.title=Papar Thumbnails -thumbs_label=Imej kecil -findbar.title=Cari didalam Dokumen -findbar_label=Cari -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Halaman {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Halaman Imej kecil {{page}} -# Find panel button title and messages -find_input.title=Cari -find_input.placeholder=Cari dalam dokumen… -find_previous.title=Cari teks frasa berkenaan yang terdahulu -find_previous_label=Dahulu -find_next.title=Cari teks frasa berkenaan yang berikut -find_next_label=Berikut -find_highlight=Serlahkan semua -find_match_case_label=Huruf sepadan -find_entire_word_label=Seluruh perkataan -find_reached_top=Mencapai teratas daripada dokumen, sambungan daripada bawah -find_reached_bottom=Mencapai terakhir daripada dokumen, sambungan daripada atas -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} daripada {{total}} padanan -find_match_count[two]={{current}} daripada {{total}} padanan -find_match_count[few]={{current}} daripada {{total}} padanan -find_match_count[many]={{current}} daripada {{total}} padanan -find_match_count[other]={{current}} daripada {{total}} padanan -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Lebih daripada {{limit}} padanan -find_match_count_limit[one]=Lebih daripada {{limit}} padanan -find_match_count_limit[two]=Lebih daripada {{limit}} padanan -find_match_count_limit[few]=Lebih daripada {{limit}} padanan -find_match_count_limit[many]=Lebih daripada {{limit}} padanan -find_match_count_limit[other]=Lebih daripada {{limit}} padanan -find_not_found=Frasa tidak ditemui -# Error panel labels -error_more_info=Maklumat Lanjut -error_less_info=Kurang Informasi -error_close=Tutup -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesej: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Timbun: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fail: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Garis: {{line}} -rendering_error=Ralat berlaku ketika memberikan halaman. -# Predefined zoom values -page_scale_width=Lebar Halaman -page_scale_fit=Muat Halaman -page_scale_auto=Zoom Automatik -page_scale_actual=Saiz Sebenar -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Masalah berlaku semasa menuatkan sebuah PDF. -invalid_file_error=Tidak sah atau fail PDF rosak. -missing_file_error=Fail PDF Hilang. -unexpected_response_error=Respon pelayan yang tidak dijangka. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Anotasi] -password_label=Masukan kata kunci untuk membuka fail PDF ini. -password_invalid=Kata laluan salah. Cuba lagi. -password_ok=OK -password_cancel=Batal -printing_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini. -printing_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak. -web_fonts_disabled=Fon web dinyahdayakan: tidak dapat menggunakan fon terbenam PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/my/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/my/viewer.properties deleted file mode 100644 index abbbd22c544ad038bb48a174744b6dfe75508c39..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/my/viewer.properties +++ /dev/null @@ -1,179 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=အရင် စာမျက်နှာ -previous_label=အရင်နေရာ -next.title=ရှေ့ စာမျက်နှာ -next_label=နောက်တခု -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=စာမျက်နှာ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} ၏ -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pagesCount}} ၏ {{pageNumber}}) -zoom_out.title=ချုံ့ပါ -zoom_out_label=ချုံ့ပါ -zoom_in.title=ချဲ့ပါ -zoom_in_label=ချဲ့ပါ -zoom.title=ချုံ့/ချဲ့ပါ -presentation_mode.title=ဆွေးနွေးတင်ပြစနစ်သို့ ကူးပြောင်းပါ -presentation_mode_label=ဆွေးနွေးတင်ပြစနစ် -open_file.title=ဖိုင်အားဖွင့်ပါ။ -open_file_label=ဖွင့်ပါ -print.title=ပုံနှိုပ်ပါ -print_label=ပုံနှိုပ်ပါ -download.title=ကူးဆွဲ -download_label=ကူးဆွဲ -bookmark.title=လက်ရှိ မြင်ကွင်း (ဝင်းဒိုးအသစ်မှာ ကူးပါ သို့မဟုတ် ဖွင့်ပါ) -bookmark_label=လက်ရှိ မြင်ကွင်း -# Secondary toolbar and context menu -tools.title=ကိရိယာများ -tools_label=ကိရိယာများ -first_page.title=ပထမ စာမျက်နှာသို့ -first_page.label=ပထမ စာမျက်နှာသို့ -first_page_label=ပထမ စာမျက်နှာသို့ -last_page.title=နောက်ဆုံး စာမျက်နှာသို့ -last_page.label=နောက်ဆုံး စာမျက်နှာသို့ -last_page_label=နောက်ဆုံး စာမျက်နှာသို့ -page_rotate_cw.title=နာရီလက်တံ အတိုင်း -page_rotate_cw.label=နာရီလက်တံ အတိုင်း -page_rotate_cw_label=နာရီလက်တံ အတိုင်း -page_rotate_ccw.title=နာရီလက်တံ ပြောင်းပြန် -page_rotate_ccw.label=နာရီလက်တံ ပြောင်းပြန် -page_rotate_ccw_label=နာရီလက်တံ ပြောင်းပြန် -# Document properties dialog box -document_properties.title=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ -document_properties_label=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ -document_properties_file_name=ဖိုင် : -document_properties_file_size=ဖိုင်ဆိုဒ် : -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} ကီလိုဘိုတ် ({{size_b}}ဘိုတ်) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=ခေါင်းစဉ်‌ - -document_properties_author=ရေးသားသူ: -document_properties_subject=အကြောင်းအရာ:\u0020 -document_properties_keywords=သော့ချက် စာလုံး: -document_properties_creation_date=ထုတ်လုပ်ရက်စွဲ: -document_properties_modification_date=ပြင်ဆင်ရက်စွဲ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ဖန်တီးသူ: -document_properties_producer=PDF ထုတ်လုပ်သူ: -document_properties_version=PDF ဗားရှင်း: -document_properties_page_count=စာမျက်နှာအရေအတွက်: -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_close=ပိတ် -print_progress_message=Preparing document for printing… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=ပယ်​ဖျက်ပါ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ဘေးတန်းဖွင့်ပိတ် -toggle_sidebar_notification.title=ဘေးဘားတန်းကို အဖွင့်/အပိတ် လုပ်ရန် (စာတမ်းတွင် outline/attachments ပါဝင်နိုင်သည်) -toggle_sidebar_label=ဖွင့်ပိတ် ဆလိုက်ဒါ -document_outline.title=စာတမ်းအကျဉ်းချုပ်ကို ပြပါ (စာရင်းအားလုံးကို ချုံ့/ချဲ့ရန် ကလစ်နှစ်ချက်နှိပ်ပါ) -document_outline_label=စာတမ်းအကျဉ်းချုပ် -attachments.title=တွဲချက်များ ပြပါ -attachments_label=တွဲထားချက်များ -thumbs.title=ပုံရိပ်ငယ်များကို ပြပါ -thumbs_label=ပုံရိပ်ငယ်များ -findbar.title=Find in Document -findbar_label=ရှာဖွေပါ -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=စာမျက်နှာ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=စာမျက်နှာရဲ့ ပုံရိပ်ငယ် {{page}} -# Find panel button title and messages -find_input.title=ရှာဖွေပါ -find_input.placeholder=စာတမ်းထဲတွင် ရှာဖွေရန်… -find_previous.title=စကားစုရဲ့ အရင် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ -find_previous_label=နောက်သို့ -find_next.title=စကားစုရဲ့ နောက်ထပ် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ -find_next_label=ရှေ့သို့ -find_highlight=အားလုံးကို မျဉ်းသားပါ -find_match_case_label=စာလုံး တိုက်ဆိုင်ပါ -find_reached_top=စာမျက်နှာထိပ် ရောက်နေပြီ၊ အဆုံးကနေ ပြန်စပါ -find_reached_bottom=စာမျက်နှာအဆုံး ရောက်နေပြီ၊ ထိပ်ကနေ ပြန်စပါ -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_not_found=စကားစု မတွေ့ရဘူး -# Error panel labels -error_more_info=နောက်ထပ်အချက်အလက်များ -error_less_info=အနည်းငယ်မျှသော သတင်းအချက်အလက် -error_close=ပိတ် -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=မက်ဆေ့ - {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=အထပ် - {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ဖိုင် {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=လိုင်း - {{line}} -rendering_error=စာမျက်နှာကို ပုံဖော်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။ -# Predefined zoom values -page_scale_width=စာမျက်နှာ အကျယ် -page_scale_fit=စာမျက်နှာ ကွက်တိ -page_scale_auto=အလိုအလျောက် ချုံ့ချဲ့ -page_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ် -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။ -invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင် -missing_file_error=PDF ပျောက်ဆုံး -unexpected_response_error=မမျှော်လင့်ထားသော ဆာဗာမှ ပြန်ကြားချက် -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} အဓိပ္ပာယ်ဖွင့်ဆိုချက်] -password_label=ယခု PDF ကို ဖွင့်ရန် စကားဝှက်ကို ရိုက်ပါ။ -password_invalid=စာဝှက် မှားသည်။ ထပ်ကြိုးစားကြည့်ပါ။ -password_ok=OK -password_cancel=ပယ်​ဖျက်ပါ -printing_not_supported=သတိပေးချက်၊ပရင့်ထုတ်ခြင်းကိုဤဘယောက်ဆာသည် ပြည့်ဝစွာထောက်ပံ့မထားပါ ။ -printing_not_ready=သတိပေးချက်: ယခု PDF ဖိုင်သည် ပုံနှိပ်ရန် မပြည့်စုံပါ -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nb-NO/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nb-NO/viewer.properties deleted file mode 100644 index b313c8c63b7e6ecd762b2162da0263a9d0dcf294..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nb-NO/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Forrige side -previous_label=Forrige -next.title=Neste side -next_label=Neste -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Side -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=av {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} av {{pagesCount}}) -zoom_out.title=Zoom ut -zoom_out_label=Zoom ut -zoom_in.title=Zoom inn -zoom_in_label=Zoom inn -zoom.title=Zoom -presentation_mode.title=Bytt til presentasjonsmodus -presentation_mode_label=Presentasjonsmodus -open_file.title=Åpne fil -open_file_label=Åpne -print.title=Skriv ut -print_label=Skriv ut -download.title=Last ned -download_label=Last ned -bookmark.title=Nåværende visning (kopier eller åpne i et nytt vindu) -bookmark_label=Nåværende visning -# Secondary toolbar and context menu -tools.title=Verktøy -tools_label=Verktøy -first_page.title=Gå til første side -first_page.label=Gå til første side -first_page_label=Gå til første side -last_page.title=Gå til siste side -last_page.label=Gå til siste side -last_page_label=Gå til siste side -page_rotate_cw.title=Roter med klokken -page_rotate_cw.label=Roter med klokken -page_rotate_cw_label=Roter med klokken -page_rotate_ccw.title=Roter mot klokken -page_rotate_ccw.label=Roter mot klokken -page_rotate_ccw_label=Roter mot klokken -cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy -cursor_text_select_tool_label=Tekstmarkeringsverktøy -cursor_hand_tool.title=Aktiver handverktøy -cursor_hand_tool_label=Handverktøy -scroll_vertical.title=Bruk vertikal rulling -scroll_vertical_label=Vertikal rulling -scroll_horizontal.title=Bruk horisontal rulling -scroll_horizontal_label=Horisontal rulling -scroll_wrapped.title=Bruk flersiderulling -scroll_wrapped_label=Flersiderulling -spread_none.title=Vis enkeltsider -spread_none_label=Enkeltsider -spread_odd.title=Vis oppslag med ulike sidenumre til venstre -spread_odd_label=Oppslag med forside -spread_even.title=Vis oppslag med like sidenumre til venstre -spread_even_label=Oppslag uten forside -# Document properties dialog box -document_properties.title=Dokumentegenskaper … -document_properties_label=Dokumentegenskaper … -document_properties_file_name=Filnavn: -document_properties_file_size=Filstørrelse: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Dokumentegenskaper … -document_properties_author=Forfatter: -document_properties_subject=Emne: -document_properties_keywords=Nøkkelord: -document_properties_creation_date=Opprettet dato: -document_properties_modification_date=Endret dato: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Opprettet av: -document_properties_producer=PDF-verktøy: -document_properties_version=PDF-versjon: -document_properties_page_count=Sideantall: -document_properties_page_size=Sidestørrelse: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=stående -document_properties_page_size_orientation_landscape=liggende -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Hurtig nettvisning: -document_properties_linearized_yes=Ja -document_properties_linearized_no=Nei -document_properties_close=Lukk -print_progress_message=Forbereder dokument for utskrift … -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Avbryt -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Slå av/på sidestolpe -toggle_sidebar_notification.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg) -toggle_sidebar_notification2.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg/lag) -toggle_sidebar_label=Slå av/på sidestolpe -document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for å utvide/skjule alle elementer) -document_outline_label=Dokumentdisposisjon -attachments.title=Vis vedlegg -attachments_label=Vedlegg -layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtilstand) -layers_label=Lag -thumbs.title=Vis miniatyrbilde -thumbs_label=Miniatyrbilde -current_outline_item.title=Finn gjeldende disposisjonselement -current_outline_item_label=Gjeldende disposisjonselement -findbar.title=Finn i dokumentet -findbar_label=Finn -additional_layers=Ytterligere lag -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Side {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Side {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatyrbilde av side {{page}} -# Find panel button title and messages -find_input.title=Søk -find_input.placeholder=Søk i dokument… -find_previous.title=Finn forrige forekomst av frasen -find_previous_label=Forrige -find_next.title=Finn neste forekomst av frasen -find_next_label=Neste -find_highlight=Uthev alle -find_match_case_label=Skill store/små bokstaver -find_entire_word_label=Hele ord -find_reached_top=Nådde toppen av dokumentet, fortsetter fra bunnen -find_reached_bottom=Nådde bunnen av dokumentet, fortsetter fra toppen -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} av {{total}} treff -find_match_count[two]={{current}} av {{total}} treff -find_match_count[few]={{current}} av {{total}} treff -find_match_count[many]={{current}} av {{total}} treff -find_match_count[other]={{current}} av {{total}} treff -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mer enn {{limit}} treff -find_match_count_limit[one]=Mer enn {{limit}} treff -find_match_count_limit[two]=Mer enn {{limit}} treff -find_match_count_limit[few]=Mer enn {{limit}} treff -find_match_count_limit[many]=Mer enn {{limit}} treff -find_match_count_limit[other]=Mer enn {{limit}} treff -find_not_found=Fant ikke teksten -# Error panel labels -error_more_info=Mer info -error_less_info=Mindre info -error_close=Lukk -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (bygg: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Melding: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stakk: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linje: {{line}} -rendering_error=En feil oppstod ved opptegning av siden. -# Predefined zoom values -page_scale_width=Sidebredde -page_scale_fit=Tilpass til siden -page_scale_auto=Automatisk zoom -page_scale_actual=Virkelig størrelse -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % -# Loading indicator messages -loading_error=En feil oppstod ved lasting av PDF. -invalid_file_error=Ugyldig eller skadet PDF-fil. -missing_file_error=Manglende PDF-fil. -unexpected_response_error=Uventet serverrespons. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} annotasjon] -password_label=Skriv inn passordet for å åpne denne PDF-filen. -password_invalid=Ugyldig passord. Prøv igjen. -password_ok=OK -password_cancel=Avbryt -printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren. -printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift. -web_fonts_disabled=Web-fonter er avslått: Kan ikke bruke innbundne PDF-fonter. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ne-NP/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ne-NP/viewer.properties deleted file mode 100644 index 9d707f26ccec1c6ecc4743fb39853b1654520c08..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ne-NP/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=अघिल्लो पृष्ठ -previous_label=अघिल्लो -next.title=पछिल्लो पृष्ठ -next_label=पछिल्लो -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=पृष्ठ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} मध्ये -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pagesCount}} को {{pageNumber}}) -zoom_out.title=जुम घटाउनुहोस् -zoom_out_label=जुम घटाउनुहोस् -zoom_in.title=जुम बढाउनुहोस् -zoom_in_label=जुम बढाउनुहोस् -zoom.title=जुम गर्नुहोस् -presentation_mode.title=प्रस्तुति मोडमा जानुहोस् -presentation_mode_label=प्रस्तुति मोड -open_file.title=फाइल खोल्नुहोस् -open_file_label=खोल्नुहोस् -print.title=मुद्रण गर्नुहोस् -print_label=मुद्रण गर्नुहोस् -download.title=डाउनलोडहरू -download_label=डाउनलोडहरू -bookmark.title=वर्तमान दृश्य (प्रतिलिपि गर्नुहोस् वा नयाँ सञ्झ्यालमा खुल्नुहोस्) -bookmark_label=हालको दृश्य -# Secondary toolbar and context menu -tools.title=औजारहरू -tools_label=औजारहरू -first_page.title=पहिलो पृष्ठमा जानुहोस् -first_page.label=पहिलो पृष्ठमा जानुहोस् -first_page_label=पहिलो पृष्ठमा जानुहोस् -last_page.title=पछिल्लो पृष्ठमा जानुहोस् -last_page.label=पछिल्लो पृष्ठमा जानुहोस् -last_page_label=पछिल्लो पृष्ठमा जानुहोस् -page_rotate_cw.title=घडीको दिशामा घुमाउनुहोस् -page_rotate_cw.label=घडीको दिशामा घुमाउनुहोस् -page_rotate_cw_label=घडीको दिशामा घुमाउनुहोस् -page_rotate_ccw.title=घडीको विपरित दिशामा घुमाउनुहोस् -page_rotate_ccw.label=घडीको विपरित दिशामा घुमाउनुहोस् -page_rotate_ccw_label=घडीको विपरित दिशामा घुमाउनुहोस् -cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम गर्नुहोस् -cursor_text_select_tool_label=पाठ चयन उपकरण -cursor_hand_tool.title=हाते उपकरण सक्षम गर्नुहोस् -cursor_hand_tool_label=हाते उपकरण -# Document properties dialog box -document_properties.title=कागजात विशेषताहरू... -document_properties_label=कागजात विशेषताहरू... -document_properties_file_name=फाइल नाम: -document_properties_file_size=फाइल आकार: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=शीर्षक: -document_properties_author=लेखक: -document_properties_subject=विषयः -document_properties_keywords=शब्दकुञ्जीः -document_properties_creation_date=सिर्जना गरिएको मिति: -document_properties_modification_date=परिमार्जित मिति: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=सर्जक: -document_properties_producer=PDF निर्माता: -document_properties_version=PDF संस्करण -document_properties_page_count=पृष्ठ गणना: -document_properties_close=बन्द गर्नुहोस् -print_progress_message=मुद्रणका लागि कागजात तयारी गरिदै… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=रद्द गर्नुहोस् -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=टगल साइडबार -toggle_sidebar_notification.title=साइडबार टगल गर्नुहोस् (कागजातमा समावेश भएको कुराहरू रूपरेखा/attachments) -toggle_sidebar_label=टगल साइडबार -document_outline.title=कागजातको रूपरेखा देखाउनुहोस् (सबै वस्तुहरू विस्तार/पतन गर्न डबल-क्लिक गर्नुहोस्) -document_outline_label=दस्तावेजको रूपरेखा -attachments.title=संलग्नहरू देखाउनुहोस् -attachments_label=संलग्नकहरू -thumbs.title=थम्बनेलहरू देखाउनुहोस् -thumbs_label=थम्बनेलहरू -findbar.title=कागजातमा फेला पार्नुहोस् -findbar_label=फेला पार्नुहोस् -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=पृष्ठ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} पृष्ठको थम्बनेल -# Find panel button title and messages -find_input.title=फेला पार्नुहोस् -find_input.placeholder=कागजातमा फेला पार्नुहोस्… -find_previous.title=यस वाक्यांशको अघिल्लो घटना फेला पार्नुहोस् -find_previous_label=अघिल्लो -find_next.title=यस वाक्यांशको पछिल्लो घटना फेला पार्नुहोस् -find_next_label=अर्को -find_highlight=सबै हाइलाइट गर्ने -find_match_case_label=केस जोडा मिलाउनुहोस् -find_reached_top=पृष्ठको शिर्षमा पुगीयो, तलबाट जारी गरिएको थियो -find_reached_bottom=पृष्ठको अन्त्यमा पुगीयो, शिर्षबाट जारी गरिएको थियो -find_not_found=वाक्यांश फेला परेन -# Error panel labels -error_more_info=थप जानकारी -error_less_info=कम जानकारी -error_close=बन्द गर्नुहोस् -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=सन्देश: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=स्ट्याक: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फाइल: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=लाइन: {{line}} -rendering_error=पृष्ठ प्रतिपादन गर्दा एउटा त्रुटि देखापर्‍यो। -# Predefined zoom values -page_scale_width=पृष्ठ चौडाइ -page_scale_fit=पृष्ठ ठिक्क मिल्ने -page_scale_auto=स्वचालित जुम -page_scale_actual=वास्तविक आकार -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=यो PDF लोड गर्दा एउटा त्रुटि देखापर्‍यो। -invalid_file_error=अवैध वा दुषित PDF फाइल। -missing_file_error=हराईरहेको PDF फाइल। -unexpected_response_error=अप्रत्याशित सर्भर प्रतिक्रिया। -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=यस PDF फाइललाई खोल्न गोप्यशब्द प्रविष्ट गर्नुहोस्। -password_invalid=अवैध गोप्यशब्द। पुनः प्रयास गर्नुहोस्। -password_ok=ठिक छ -password_cancel=रद्द गर्नुहोस् -printing_not_supported=चेतावनी: यो ब्राउजरमा मुद्रण पूर्णतया समर्थित छैन। -printing_not_ready=चेतावनी: PDF मुद्रणका लागि पूर्णतया लोड भएको छैन। -web_fonts_disabled=वेब फन्ट असक्षम छन्: एम्बेडेड PDF फन्ट प्रयोग गर्न असमर्थ। diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nl/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nl/viewer.properties deleted file mode 100644 index 1b05dab9ea53b3276b3ce387a5175b1f816dcfee..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nl/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Vorige pagina -previous_label=Vorige -next.title=Volgende pagina -next_label=Volgende -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pagina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=van {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} van {{pagesCount}}) -zoom_out.title=Uitzoomen -zoom_out_label=Uitzoomen -zoom_in.title=Inzoomen -zoom_in_label=Inzoomen -zoom.title=Zoomen -presentation_mode.title=Wisselen naar presentatiemodus -presentation_mode_label=Presentatiemodus -open_file.title=Bestand openen -open_file_label=Openen -print.title=Afdrukken -print_label=Afdrukken -download.title=Downloaden -download_label=Downloaden -bookmark.title=Huidige weergave (kopiëren of openen in nieuw venster) -bookmark_label=Huidige weergave -# Secondary toolbar and context menu -tools.title=Hulpmiddelen -tools_label=Hulpmiddelen -first_page.title=Naar eerste pagina gaan -first_page.label=Naar eerste pagina gaan -first_page_label=Naar eerste pagina gaan -last_page.title=Naar laatste pagina gaan -last_page.label=Naar laatste pagina gaan -last_page_label=Naar laatste pagina gaan -page_rotate_cw.title=Rechtsom draaien -page_rotate_cw.label=Rechtsom draaien -page_rotate_cw_label=Rechtsom draaien -page_rotate_ccw.title=Linksom draaien -page_rotate_ccw.label=Linksom draaien -page_rotate_ccw_label=Linksom draaien -cursor_text_select_tool.title=Tekstselectiehulpmiddel inschakelen -cursor_text_select_tool_label=Tekstselectiehulpmiddel -cursor_hand_tool.title=Handhulpmiddel inschakelen -cursor_hand_tool_label=Handhulpmiddel -scroll_vertical.title=Verticaal scrollen gebruiken -scroll_vertical_label=Verticaal scrollen -scroll_horizontal.title=Horizontaal scrollen gebruiken -scroll_horizontal_label=Horizontaal scrollen -scroll_wrapped.title=Scrollen met terugloop gebruiken -scroll_wrapped_label=Scrollen met terugloop -spread_none.title=Dubbele pagina’s niet samenvoegen -spread_none_label=Geen dubbele pagina’s -spread_odd.title=Dubbele pagina’s samenvoegen vanaf oneven pagina’s -spread_odd_label=Oneven dubbele pagina’s -spread_even.title=Dubbele pagina’s samenvoegen vanaf even pagina’s -spread_even_label=Even dubbele pagina’s -# Document properties dialog box -document_properties.title=Documenteigenschappen… -document_properties_label=Documenteigenschappen… -document_properties_file_name=Bestandsnaam: -document_properties_file_size=Bestandsgrootte: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titel: -document_properties_author=Auteur: -document_properties_subject=Onderwerp: -document_properties_keywords=Trefwoorden: -document_properties_creation_date=Aanmaakdatum: -document_properties_modification_date=Wijzigingsdatum: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Maker: -document_properties_producer=PDF-producent: -document_properties_version=PDF-versie: -document_properties_page_count=Aantal pagina’s: -document_properties_page_size=Paginagrootte: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=staand -document_properties_page_size_orientation_landscape=liggend -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Snelle webweergave: -document_properties_linearized_yes=Ja -document_properties_linearized_no=Nee -document_properties_close=Sluiten -print_progress_message=Document voorbereiden voor afdrukken… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Annuleren -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Zijbalk in-/uitschakelen -toggle_sidebar_notification.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen) -toggle_sidebar_notification2.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen/lagen) -toggle_sidebar_label=Zijbalk in-/uitschakelen -document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen) -document_outline_label=Documentoverzicht -attachments.title=Bijlagen tonen -attachments_label=Bijlagen -layers.title=Lagen tonen (dubbelklik om alle lagen naar de standaardstatus terug te zetten) -layers_label=Lagen -thumbs.title=Miniaturen tonen -thumbs_label=Miniaturen -current_outline_item.title=Huidig item in inhoudsopgave zoeken -current_outline_item_label=Huidig item in inhoudsopgave -findbar.title=Zoeken in document -findbar_label=Zoeken -additional_layers=Aanvullende lagen -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatuur van pagina {{page}} -# Find panel button title and messages -find_input.title=Zoeken -find_input.placeholder=Zoeken in document… -find_previous.title=De vorige overeenkomst van de tekst zoeken -find_previous_label=Vorige -find_next.title=De volgende overeenkomst van de tekst zoeken -find_next_label=Volgende -find_highlight=Alles markeren -find_match_case_label=Hoofdlettergevoelig -find_entire_word_label=Hele woorden -find_reached_top=Bovenkant van document bereikt, doorgegaan vanaf onderkant -find_reached_bottom=Onderkant van document bereikt, doorgegaan vanaf bovenkant -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} van {{total}} overeenkomst -find_match_count[two]={{current}} van {{total}} overeenkomsten -find_match_count[few]={{current}} van {{total}} overeenkomsten -find_match_count[many]={{current}} van {{total}} overeenkomsten -find_match_count[other]={{current}} van {{total}} overeenkomsten -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Meer dan {{limit}} overeenkomsten -find_match_count_limit[one]=Meer dan {{limit}} overeenkomst -find_match_count_limit[two]=Meer dan {{limit}} overeenkomsten -find_match_count_limit[few]=Meer dan {{limit}} overeenkomsten -find_match_count_limit[many]=Meer dan {{limit}} overeenkomsten -find_match_count_limit[other]=Meer dan {{limit}} overeenkomsten -find_not_found=Tekst niet gevonden -# Error panel labels -error_more_info=Meer informatie -error_less_info=Minder informatie -error_close=Sluiten -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Bericht: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Bestand: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Regel: {{line}} -rendering_error=Er is een fout opgetreden bij het weergeven van de pagina. -# Predefined zoom values -page_scale_width=Paginabreedte -page_scale_fit=Hele pagina -page_scale_auto=Automatisch zoomen -page_scale_actual=Werkelijke grootte -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Er is een fout opgetreden bij het laden van de PDF. -invalid_file_error=Ongeldig of beschadigd PDF-bestand. -missing_file_error=PDF-bestand ontbreekt. -unexpected_response_error=Onverwacht serverantwoord. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-aantekening] -password_label=Voer het wachtwoord in om dit PDF-bestand te openen. -password_invalid=Ongeldig wachtwoord. Probeer het opnieuw. -password_ok=OK -password_cancel=Annuleren -printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser. -printing_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken. -web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nn-NO/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nn-NO/viewer.properties deleted file mode 100644 index 62be743d3085d618d3cea9222607452e45244bfc..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/nn-NO/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Føregåande side -previous_label=Føregåande -next.title=Neste side -next_label=Neste -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Side -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=av {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} av {{pagesCount}}) -zoom_out.title=Zoom ut -zoom_out_label=Zoom ut -zoom_in.title=Zoom inn -zoom_in_label=Zoom inn -zoom.title=Zoom -presentation_mode.title=Byt til presentasjonsmodus -presentation_mode_label=Presentasjonsmodus -open_file.title=Opne fil -open_file_label=Opne -print.title=Skriv ut -print_label=Skriv ut -download.title=Last ned -download_label=Last ned -bookmark.title=Gjeldande vising (kopier eller opne i nytt vindauge) -bookmark_label=Gjeldande vising -# Secondary toolbar and context menu -tools.title=Verktøy -tools_label=Verktøy -first_page.title=Gå til første side -first_page.label=Gå til første side -first_page_label=Gå til første side -last_page.title=Gå til siste side -last_page.label=Gå til siste side -last_page_label=Gå til siste side -page_rotate_cw.title=Roter med klokka -page_rotate_cw.label=Roter med klokka -page_rotate_cw_label=Roter med klokka -page_rotate_ccw.title=Roter mot klokka -page_rotate_ccw.label=Roter mot klokka -page_rotate_ccw_label=Roter mot klokka -cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy -cursor_text_select_tool_label=Tekstmarkeringsverktøy -cursor_hand_tool.title=Aktiver handverktøy -cursor_hand_tool_label=Handverktøy -scroll_vertical.title=Bruk vertikal rulling -scroll_vertical_label=Vertikal rulling -scroll_horizontal.title=Bruk horisontal rulling -scroll_horizontal_label=Horisontal rulling -scroll_wrapped.title=Bruk fleirsiderulling -scroll_wrapped_label=Fleirsiderulling -spread_none.title=Vis enkeltsider -spread_none_label=Enkeltside -spread_odd.title=Vis oppslag med ulike sidenummer til venstre -spread_odd_label=Oppslag med framside -spread_even.title=Vis oppslag med like sidenummmer til venstre -spread_even_label=Oppslag utan framside -# Document properties dialog box -document_properties.title=Dokumenteigenskapar… -document_properties_label=Dokumenteigenskapar… -document_properties_file_name=Filnamn: -document_properties_file_size=Filstorleik: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Tittel: -document_properties_author=Forfattar: -document_properties_subject=Emne: -document_properties_keywords=Stikkord: -document_properties_creation_date=Dato oppretta: -document_properties_modification_date=Dato endra: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Oppretta av: -document_properties_producer=PDF-verktøy: -document_properties_version=PDF-versjon: -document_properties_page_count=Sidetal: -document_properties_page_size=Sidestørrelse: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=ståande -document_properties_page_size_orientation_landscape=liggande -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Brev -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Rask nettvising: -document_properties_linearized_yes=Ja -document_properties_linearized_no=Nei -document_properties_close=Lat att -print_progress_message=Førebur dokumentet for utskrift… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Avbryt -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Slå av/på sidestolpe -toggle_sidebar_notification.title=Vis/gøym sidestolpen (dokumentet inneheld oversikt/vedlegg) -toggle_sidebar_notification2.title=Vis/gøym sidestolpe (dokumentet inneheld oversikt/vedlegg/lag) -toggle_sidebar_label=Slå av/på sidestolpe -document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for å utvide/gøyme alle elementa) -document_outline_label=Dokumentdisposisjon -attachments.title=Vis vedlegg -attachments_label=Vedlegg -layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtilstand) -layers_label=Lag -thumbs.title=Vis miniatyrbilde -thumbs_label=Miniatyrbilde -current_outline_item.title=Finn gjeldande disposisjonselement -current_outline_item_label=Gjeldande disposisjonselement -findbar.title=Finn i dokumentet -findbar_label=Finn -additional_layers=Ytterlegare lag -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Side {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Side {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatyrbilde av side {{page}} -# Find panel button title and messages -find_input.title=Søk -find_input.placeholder=Søk i dokument… -find_previous.title=Finn førre førekomst av frasen -find_previous_label=Førre -find_next.title=Finn neste førekomst av frasen -find_next_label=Neste -find_highlight=Uthev alle -find_match_case_label=Skil store/små bokstavar -find_entire_word_label=Heile ord -find_reached_top=Nådde toppen av dokumentet, fortset frå botnen -find_reached_bottom=Nådde botnen av dokumentet, fortset frå toppen -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} av {{total}} treff -find_match_count[two]={{current}} av {{total}} treff -find_match_count[few]={{current}} av {{total}} treff -find_match_count[many]={{current}} av {{total}} treff -find_match_count[other]={{current}} av {{total}} treff -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Meir enn {{limit}} treff -find_match_count_limit[one]=Meir enn {{limit}} treff -find_match_count_limit[two]=Meir enn {{limit}} treff -find_match_count_limit[few]=Meir enn {{limit}} treff -find_match_count_limit[many]=Meir enn {{limit}} treff -find_match_count_limit[other]=Meir enn {{limit}} treff -find_not_found=Fann ikkje teksten -# Error panel labels -error_more_info=Meir info -error_less_info=Mindre info -error_close=Lat att -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (bygg: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Melding: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stakk: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linje: {{line}} -rendering_error=Ein feil oppstod under vising av sida. -# Predefined zoom values -page_scale_width=Sidebreidde -page_scale_fit=Tilpass til sida -page_scale_auto=Automatisk skalering -page_scale_actual=Verkeleg storleik -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ein feil oppstod ved lasting av PDF. -invalid_file_error=Ugyldig eller korrupt PDF-fil. -missing_file_error=Manglande PDF-fil. -unexpected_response_error=Uventa tenarrespons. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}} {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} annotasjon] -password_label=Skriv inn passordet for å opne denne PDF-fila. -password_invalid=Ugyldig passord. Prøv igjen. -password_ok=OK -password_cancel=Avbryt -printing_not_supported=Åtvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren. -printing_not_ready=Åtvaring: PDF ikkje fullstendig innlasta for utskrift. -web_fonts_disabled=Web-skrifter er slått av: Kan ikkje bruke innbundne PDF-skrifter. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/oc/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/oc/viewer.properties deleted file mode 100644 index f8f858b819d2107995ef60d796c57b18baf13084..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/oc/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pagina precedenta -previous_label=Precedent -next.title=Pagina seguenta -next_label=Seguent -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pagina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=sus {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} sus {{pagesCount}}) -zoom_out.title=Zoom arrièr -zoom_out_label=Zoom arrièr -zoom_in.title=Zoom avant -zoom_in_label=Zoom avant -zoom.title=Zoom -presentation_mode.title=Bascular en mòde presentacion -presentation_mode_label=Mòde Presentacion -open_file.title=Dobrir lo fichièr -open_file_label=Dobrir -print.title=Imprimir -print_label=Imprimir -download.title=Telecargar -download_label=Telecargar -bookmark.title=Afichatge corrent (copiar o dobrir dins una fenèstra novèla) -bookmark_label=Afichatge actual -# Secondary toolbar and context menu -tools.title=Aisinas -tools_label=Aisinas -first_page.title=Anar a la primièra pagina -first_page.label=Anar a la primièra pagina -first_page_label=Anar a la primièra pagina -last_page.title=Anar a la darrièra pagina -last_page.label=Anar a la darrièra pagina -last_page_label=Anar a la darrièra pagina -page_rotate_cw.title=Rotacion orària -page_rotate_cw.label=Rotacion orària -page_rotate_cw_label=Rotacion orària -page_rotate_ccw.title=Rotacion antiorària -page_rotate_ccw.label=Rotacion antiorària -page_rotate_ccw_label=Rotacion antiorària -cursor_text_select_tool.title=Activar l'aisina de seleccion de tèxte -cursor_text_select_tool_label=Aisina de seleccion de tèxte -cursor_hand_tool.title=Activar l’aisina man -cursor_hand_tool_label=Aisina man -scroll_vertical.title=Utilizar lo desfilament vertical -scroll_vertical_label=Desfilament vertical -scroll_horizontal.title=Utilizar lo desfilament orizontal -scroll_horizontal_label=Desfilament orizontal -scroll_wrapped.title=Activar lo desfilament continú -scroll_wrapped_label=Desfilament continú -spread_none.title=Agropar pas las paginas doas a doas -spread_none_label=Una sola pagina -spread_odd.title=Mostrar doas paginas en començant per las paginas imparas a esquèrra -spread_odd_label=Dobla pagina, impara a drecha -spread_even.title=Mostrar doas paginas en començant per las paginas paras a esquèrra -spread_even_label=Dobla pagina, para a drecha -# Document properties dialog box -document_properties.title=Proprietats del document… -document_properties_label=Proprietats del document… -document_properties_file_name=Nom del fichièr : -document_properties_file_size=Talha del fichièr : -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} Ko ({{size_b}} octets) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Mo ({{size_b}} octets) -document_properties_title=Títol : -document_properties_author=Autor : -document_properties_subject=Subjècte : -document_properties_keywords=Mots claus : -document_properties_creation_date=Data de creacion : -document_properties_modification_date=Data de modificacion : -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, a {{time}} -document_properties_creator=Creator : -document_properties_producer=Aisina de conversion PDF : -document_properties_version=Version PDF : -document_properties_page_count=Nombre de paginas : -document_properties_page_size=Talha de la pagina : -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=retrach -document_properties_page_size_orientation_landscape=païsatge -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letra -document_properties_page_size_name_legal=Document juridic -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista web rapida : -document_properties_linearized_yes=Òc -document_properties_linearized_no=Non -document_properties_close=Tampar -print_progress_message=Preparacion del document per l’impression… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Anullar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Afichar/amagar lo panèl lateral -toggle_sidebar_notification.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas) -toggle_sidebar_notification2.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas/calques) -toggle_sidebar_label=Afichar/amagar lo panèl lateral -document_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los elements) -document_outline_label=Marcapaginas del document -attachments.title=Visualizar las pèças juntas -attachments_label=Pèças juntas -layers.title=Afichar los calques (doble-clicar per reïnicializar totes los calques a l’estat per defaut) -layers_label=Calques -thumbs.title=Afichar las vinhetas -thumbs_label=Vinhetas -current_outline_item.title=Trobar l’element de plan actual -current_outline_item_label=Element de plan actual -findbar.title=Cercar dins lo document -findbar_label=Recercar -additional_layers=Calques suplementaris -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Vinheta de la pagina {{page}} -# Find panel button title and messages -find_input.title=Recercar -find_input.placeholder=Cercar dins lo document… -find_previous.title=Tròba l'ocurréncia precedenta de la frasa -find_previous_label=Precedent -find_next.title=Tròba l'ocurréncia venenta de la frasa -find_next_label=Seguent -find_highlight=Suslinhar tot -find_match_case_label=Respectar la cassa -find_entire_word_label=Mots entièrs -find_reached_top=Naut de la pagina atenh, perseguida del bas -find_reached_bottom=Bas de la pagina atench, perseguida al començament -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=Occuréncia {{current}} sus {{total}} -find_match_count[two]=Occuréncia {{current}} sus {{total}} -find_match_count[few]=Occuréncia {{current}} sus {{total}} -find_match_count[many]=Occuréncia {{current}} sus {{total}} -find_match_count[other]=Occuréncia {{current}} sus {{total}} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mai de {{limit}} occuréncias -find_match_count_limit[one]=Mai de {{limit}} occuréncia -find_match_count_limit[two]=Mai de {{limit}} occuréncias -find_match_count_limit[few]=Mai de {{limit}} occuréncias -find_match_count_limit[many]=Mai de {{limit}} occuréncias -find_match_count_limit[other]=Mai de {{limit}} occuréncias -find_not_found=Frasa pas trobada -# Error panel labels -error_more_info=Mai de detalhs -error_less_info=Mens d'informacions -error_close=Tampar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (identificant de compilacion : {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Messatge : {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila : {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fichièr : {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linha : {{line}} -rendering_error=Una error s'es producha pendent l'afichatge de la pagina. -# Predefined zoom values -page_scale_width=Largor plena -page_scale_fit=Pagina entièra -page_scale_auto=Zoom automatic -page_scale_actual=Talha vertadièra -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Una error s'es producha pendent lo cargament del fichièr PDF. -invalid_file_error=Fichièr PDF invalid o corromput. -missing_file_error=Fichièr PDF mancant. -unexpected_response_error=Responsa de servidor imprevista. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}} a {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotacion {{type}}] -password_label=Picatz lo senhal per dobrir aqueste fichièr PDF. -password_invalid=Senhal incorrècte. Tornatz ensajar. -password_ok=D'acòrdi -password_cancel=Anullar -printing_not_supported=Atencion : l'impression es pas completament gerida per aqueste navegador. -printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir. -web_fonts_disabled=Las poliças web son desactivadas : impossible d'utilizar las poliças integradas al PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pa-IN/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pa-IN/viewer.properties deleted file mode 100644 index 913262eaa0b2708aafbc11f31b6bd3b40638636a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pa-IN/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ਪਿਛਲਾ ਸਫ਼ਾ -previous_label=ਪਿੱਛੇ -next.title=ਅਗਲਾ ਸਫ਼ਾ -next_label=ਅੱਗੇ -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=ਸਫ਼ਾ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} ਵਿੱਚੋਂ -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages={{pagesCount}}) ਵਿੱਚੋਂ ({{pageNumber}} -zoom_out.title=ਜ਼ੂਮ ਆਉਟ -zoom_out_label=ਜ਼ੂਮ ਆਉਟ -zoom_in.title=ਜ਼ੂਮ ਇਨ -zoom_in_label=ਜ਼ੂਮ ਇਨ -zoom.title=ਜ਼ੂਨ -presentation_mode.title=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ ਵਿੱਚ ਜਾਓ -presentation_mode_label=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ -open_file.title=ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹੋ -open_file_label=ਖੋਲ੍ਹੋ -print.title=ਪਰਿੰਟ -print_label=ਪਰਿੰਟ -download.title=ਡਾਊਨਲੋਡ -download_label=ਡਾਊਨਲੋਡ -bookmark.title=ਮੌਜੂਦਾ ਝਲਕ (ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਕਾਪੀ ਕਰੋ ਜਾਂ ਖੋਲ੍ਹੋ) -bookmark_label=ਮੌਜੂਦਾ ਝਲਕ -# Secondary toolbar and context menu -tools.title=ਟੂਲ -tools_label=ਟੂਲ -first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -last_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ -page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਉ -page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ -page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ -page_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਉ -page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ -cursor_text_select_tool.title=ਲਿਖਤ ਚੋਣ ਟੂਲ ਸਮਰੱਥ ਕਰੋ -cursor_text_select_tool_label=ਲਿਖਤ ਚੋਣ ਟੂਲ -cursor_hand_tool.title=ਹੱਥ ਟੂਲ ਸਮਰੱਥ ਕਰੋ -cursor_hand_tool_label=ਹੱਥ ਟੂਲ -scroll_vertical.title=ਖੜ੍ਹਵੇਂ ਸਕਰਾਉਣ ਨੂੰ ਵਰਤੋਂ -scroll_vertical_label=ਖੜ੍ਹਵਾਂ ਸਰਕਾਉਣਾ -scroll_horizontal.title=ਲੇਟਵੇਂ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ -scroll_horizontal_label=ਲੇਟਵਾਂ ਸਰਕਾਉਣਾ -scroll_wrapped.title=ਸਮੇਟੇ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ -scroll_wrapped_label=ਸਮੇਟਿਆ ਸਰਕਾਉਣਾ -spread_none.title=ਸਫ਼ਾ ਫੈਲਾਅ ਵਿੱਚ ਸ਼ਾਮਲ ਨਾ ਹੋਵੋ -spread_none_label=ਕੋਈ ਫੈਲਾਅ ਨਹੀਂ -spread_odd.title=ਟਾਂਕ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ -spread_odd_label=ਟਾਂਕ ਫੈਲਾਅ -spread_even.title=ਜਿਸਤ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ -spread_even_label=ਜਿਸਤ ਫੈਲਾਅ -# Document properties dialog box -document_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ -document_properties_label=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ -document_properties_file_name=ਫਾਈਲ ਦਾ ਨਾਂ: -document_properties_file_size=ਫਾਈਲ ਦਾ ਆਕਾਰ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} ਬਾਈਟ) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} ਬਾਈਟ) -document_properties_title=ਟਾਈਟਲ: -document_properties_author=ਲੇਖਕ: -document_properties_subject=ਵਿਸ਼ਾ: -document_properties_keywords=ਸ਼ਬਦ: -document_properties_creation_date=ਬਣਾਉਣ ਦੀ ਮਿਤੀ: -document_properties_modification_date=ਸੋਧ ਦੀ ਮਿਤੀ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ਨਿਰਮਾਤਾ: -document_properties_producer=PDF ਪ੍ਰੋਡਿਊਸਰ: -document_properties_version=PDF ਵਰਜਨ: -document_properties_page_count=ਸਫ਼ੇ ਦੀ ਗਿਣਤੀ: -document_properties_page_size=ਸਫ਼ਾ ਆਕਾਰ: -document_properties_page_size_unit_inches=ਇੰਚ -document_properties_page_size_unit_millimeters=ਮਿਮੀ -document_properties_page_size_orientation_portrait=ਪੋਰਟਰੇਟ -document_properties_page_size_orientation_landscape=ਲੈਂਡਸਕੇਪ -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=ਲੈਟਰ -document_properties_page_size_name_legal=ਕਨੂੰਨੀ -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=ਤੇਜ਼ ਵੈੱਬ ਝਲਕ: -document_properties_linearized_yes=ਹਾਂ -document_properties_linearized_no=ਨਹੀਂ -document_properties_close=ਬੰਦ ਕਰੋ -print_progress_message=…ਪਰਿੰਟ ਕਰਨ ਲਈ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=ਰੱਦ ਕਰੋ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ -toggle_sidebar_notification.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟਾਂ ਰੱਖਦਾ ਹੈ) -toggle_sidebar_notification2.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟ/ਪਰਤਾਂ ਰੱਖਦਾ ਹੈ) -toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ -document_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) -document_outline_label=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ -attachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ -attachments_label=ਅਟੈਚਮੈਂਟਾਂ -layers.title=ਪਰਤਾਂ ਵੇਖਾਓ (ਸਾਰੀਆਂ ਪਰਤਾਂ ਨੂੰ ਮੂਲ ਹਾਲਤ ਉੱਤੇ ਮੁੜ-ਸੈੱਟ ਕਰਨ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) -layers_label=ਪਰਤਾਂ -thumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ -thumbs_label=ਥੰਮਨੇਲ -current_outline_item.title=ਮੌੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ ਲੱਭੋ -current_outline_item_label=ਮੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ -findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ -findbar_label=ਲੱਭੋ -additional_layers=ਵਾਧੂ ਪਰਤਾਂ -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=ਸਫ਼ਾ {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=ਸਫ਼ਾ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} ਸਫ਼ੇ ਦਾ ਥੰਮਨੇਲ -# Find panel button title and messages -find_input.title=ਲੱਭੋ -find_input.placeholder=…ਦਸਤਾਵੇਜ਼ 'ਚ ਲੱਭੋ -find_previous.title=ਵਾਕ ਦੀ ਪਿਛਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ -find_previous_label=ਪਿੱਛੇ -find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ -find_next_label=ਅੱਗੇ -find_highlight=ਸਭ ਉਭਾਰੋ -find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਨੂੰ ਮਿਲਾਉ -find_entire_word_label=ਪੂਰੇ ਸ਼ਬਦ -find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ -find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ -find_match_count[two]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ -find_match_count[few]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ -find_match_count[many]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ -find_match_count[other]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ -find_match_count_limit[one]={{limit}} ਮੇਲ ਤੋਂ ਵੱਧ -find_match_count_limit[two]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ -find_match_count_limit[few]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ -find_match_count_limit[many]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ -find_match_count_limit[other]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ -find_not_found=ਵਾਕ ਨਹੀਂ ਲੱਭਿਆ -# Error panel labels -error_more_info=ਹੋਰ ਜਾਣਕਾਰੀ -error_less_info=ਘੱਟ ਜਾਣਕਾਰੀ -error_close=ਬੰਦ ਕਰੋ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (ਬਿਲਡ: {{build}} -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ਸੁਨੇਹਾ: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ਸਟੈਕ: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ਫਾਈਲ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ਲਾਈਨ: {{line}} -rendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। -# Predefined zoom values -page_scale_width=ਸਫ਼ੇ ਦੀ ਚੌੜਾਈ -page_scale_fit=ਸਫ਼ਾ ਫਿੱਟ -page_scale_auto=ਆਟੋਮੈਟਿਕ ਜ਼ੂਮ ਕਰੋ -page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। -invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ। -missing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਈਲ। -unexpected_response_error=ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ। -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} ਵਿਆਖਿਆ] -password_label=ਇਹ PDF ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਪਾਸਵਰਡ ਦਿਉ। -password_invalid=ਗਲਤ ਪਾਸਵਰਡ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ। -password_ok=ਠੀਕ ਹੈ -password_cancel=ਰੱਦ ਕਰੋ -printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। -printing_not_ready=ਸਾਵਧਾਨ: PDF ਨੂੰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ। -web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਨੂੰ ਵਰਤਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pl/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pl/viewer.properties deleted file mode 100644 index a920a20af3b8452b81d193932523f39ff8c841cd..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pl/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Poprzednia strona -previous_label=Poprzednia -next.title=Następna strona -next_label=Następna -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Strona -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=z {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} z {{pagesCount}}) -zoom_out.title=Pomniejsz -zoom_out_label=Pomniejsz -zoom_in.title=Powiększ -zoom_in_label=Powiększ -zoom.title=Skala -presentation_mode.title=Przełącz na tryb prezentacji -presentation_mode_label=Tryb prezentacji -open_file.title=Otwórz plik -open_file_label=Otwórz -print.title=Drukuj -print_label=Drukuj -download.title=Pobierz -download_label=Pobierz -bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnośnik w nowym oknie) -bookmark_label=Bieżąca pozycja -# Secondary toolbar and context menu -tools.title=Narzędzia -tools_label=Narzędzia -first_page.title=Przejdź do pierwszej strony -first_page.label=Przejdź do pierwszej strony -first_page_label=Przejdź do pierwszej strony -last_page.title=Przejdź do ostatniej strony -last_page.label=Przejdź do ostatniej strony -last_page_label=Przejdź do ostatniej strony -page_rotate_cw.title=Obróć zgodnie z ruchem wskazówek zegara -page_rotate_cw.label=Obróć zgodnie z ruchem wskazówek zegara -page_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara -page_rotate_ccw.title=Obróć przeciwnie do ruchu wskazówek zegara -page_rotate_ccw.label=Obróć przeciwnie do ruchu wskazówek zegara -page_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara -cursor_text_select_tool.title=Włącz narzędzie zaznaczania tekstu -cursor_text_select_tool_label=Narzędzie zaznaczania tekstu -cursor_hand_tool.title=Włącz narzędzie rączka -cursor_hand_tool_label=Narzędzie rączka -scroll_vertical.title=Przewijaj dokument w pionie -scroll_vertical_label=Przewijanie pionowe -scroll_horizontal.title=Przewijaj dokument w poziomie -scroll_horizontal_label=Przewijanie poziome -scroll_wrapped.title=Strony dokumentu wyświetlaj i przewijaj w kolumnach -scroll_wrapped_label=Widok dwóch stron -spread_none.title=Nie ustawiaj stron obok siebie -spread_none_label=Brak kolumn -spread_odd.title=Strony nieparzyste ustawiaj na lewo od parzystych -spread_odd_label=Nieparzyste po lewej -spread_even.title=Strony parzyste ustawiaj na lewo od nieparzystych -spread_even_label=Parzyste po lewej -# Document properties dialog box -document_properties.title=Właściwości dokumentu… -document_properties_label=Właściwości dokumentu… -document_properties_file_name=Nazwa pliku: -document_properties_file_size=Rozmiar pliku: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} B) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} B) -document_properties_title=Tytuł: -document_properties_author=Autor: -document_properties_subject=Temat: -document_properties_keywords=Słowa kluczowe: -document_properties_creation_date=Data utworzenia: -document_properties_modification_date=Data modyfikacji: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Utworzony przez: -document_properties_producer=PDF wyprodukowany przez: -document_properties_version=Wersja PDF: -document_properties_page_count=Liczba stron: -document_properties_page_size=Wymiary strony: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=pionowa -document_properties_page_size_orientation_landscape=pozioma -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=US Letter -document_properties_page_size_name_legal=US Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}}×{{height}} {{unit}} (orientacja {{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}}×{{height}} {{unit}} ({{name}}, orientacja {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Szybki podgląd w Internecie: -document_properties_linearized_yes=tak -document_properties_linearized_no=nie -document_properties_close=Zamknij -print_progress_message=Przygotowywanie dokumentu do druku… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Anuluj -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Przełącz panel boczny -toggle_sidebar_notification.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki) -toggle_sidebar_notification2.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki/warstwy) -toggle_sidebar_label=Przełącz panel boczny -document_outline.title=Konspekt dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje) -document_outline_label=Konspekt dokumentu -attachments.title=Załączniki -attachments_label=Załączniki -layers.title=Warstwy (podwójne kliknięcie przywraca wszystkie warstwy do stanu domyślnego) -layers_label=Warstwy -thumbs.title=Miniatury -thumbs_label=Miniatury -current_outline_item.title=Znajdź bieżący element konspektu -current_outline_item_label=Bieżący element konspektu -findbar.title=Znajdź w dokumencie -findbar_label=Znajdź -additional_layers=Dodatkowe warstwy -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}}. strona -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}}. strona -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura {{page}}. strony -# Find panel button title and messages -find_input.title=Znajdź -find_input.placeholder=Znajdź w dokumencie… -find_previous.title=Znajdź poprzednie wystąpienie tekstu -find_previous_label=Poprzednie -find_next.title=Znajdź następne wystąpienie tekstu -find_next_label=Następne -find_highlight=Wyróżnianie wszystkich -find_match_case_label=Rozróżnianie wielkości liter -find_entire_word_label=Całe słowa -find_reached_top=Początek dokumentu. Wyszukiwanie od końca. -find_reached_bottom=Koniec dokumentu. Wyszukiwanie od początku. -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=Pierwsze z {{total}} trafień -find_match_count[two]=Drugie z {{total}} trafień -find_match_count[few]={{current}}. z {{total}} trafień -find_match_count[many]={{current}}. z {{total}} trafień -find_match_count[other]={{current}}. z {{total}} trafień -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Brak trafień. -find_match_count_limit[one]=Więcej niż jedno trafienie. -find_match_count_limit[two]=Więcej niż dwa trafienia. -find_match_count_limit[few]=Więcej niż {{limit}} trafienia. -find_match_count_limit[many]=Więcej niż {{limit}} trafień. -find_match_count_limit[other]=Więcej niż {{limit}} trafień. -find_not_found=Nie znaleziono tekstu -# Error panel labels -error_more_info=Więcej informacji -error_less_info=Mniej informacji -error_close=Zamknij -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (kompilacja: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Komunikat: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stos: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Plik: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Wiersz: {{line}} -rendering_error=Podczas renderowania strony wystąpił błąd. -# Predefined zoom values -page_scale_width=Szerokość strony -page_scale_fit=Dopasowanie strony -page_scale_auto=Skala automatyczna -page_scale_actual=Rozmiar oryginalny -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd. -invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF. -missing_file_error=Brak pliku PDF. -unexpected_response_error=Nieoczekiwana odpowiedź serwera. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Adnotacja: {{type}}] -password_label=Wprowadź hasło, aby otworzyć ten dokument PDF. -password_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie. -password_ok=OK -password_cancel=Anuluj -printing_not_supported=Ostrzeżenie: drukowanie nie jest w pełni obsługiwane przez tę przeglądarkę. -printing_not_ready=Ostrzeżenie: dokument PDF nie jest całkowicie wczytany, więc nie można go wydrukować. -web_fonts_disabled=Czcionki sieciowe są wyłączone: nie można użyć osadzonych czcionek PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pt-BR/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pt-BR/viewer.properties deleted file mode 100644 index c0cf110b51eecc5ad0a3ad5a0bf0113a5c857cd8..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pt-BR/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Próxima página -next_label=Próxima -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Página -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Reduzir -zoom_out_label=Reduzir -zoom_in.title=Ampliar -zoom_in_label=Ampliar -zoom.title=Zoom -presentation_mode.title=Alternar para o modo de apresentação -presentation_mode_label=Modo de apresentação -open_file.title=Abrir arquivo -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Baixar -download_label=Baixar -bookmark.title=Visão atual (copiar ou abrir em nova janela) -bookmark_label=Visualização atual -# Secondary toolbar and context menu -tools.title=Ferramentas -tools_label=Ferramentas -first_page.title=Ir para a primeira página -first_page.label=Ir para a primeira página -first_page_label=Ir para a primeira página -last_page.title=Ir para a última página -last_page.label=Ir para a última página -last_page_label=Ir para a última página -page_rotate_cw.title=Girar no sentido horário -page_rotate_cw.label=Girar no sentido horário -page_rotate_cw_label=Girar no sentido horário -page_rotate_ccw.title=Girar no sentido anti-horário -page_rotate_ccw.label=Girar no sentido anti-horário -page_rotate_ccw_label=Girar no sentido anti-horário -cursor_text_select_tool.title=Ativar a ferramenta de seleção de texto -cursor_text_select_tool_label=Ferramenta de seleção de texto -cursor_hand_tool.title=Ativar ferramenta de deslocamento -cursor_hand_tool_label=Ferramenta de deslocamento -scroll_vertical.title=Usar deslocamento vertical -scroll_vertical_label=Deslocamento vertical -scroll_horizontal.title=Usar deslocamento horizontal -scroll_horizontal_label=Deslocamento horizontal -scroll_wrapped.title=Usar deslocamento contido -scroll_wrapped_label=Deslocamento contido -spread_none.title=Não reagrupar páginas -spread_none_label=Não estender -spread_odd.title=Agrupar páginas começando em páginas com números ímpares -spread_odd_label=Estender ímpares -spread_even.title=Agrupar páginas começando em páginas com números pares -spread_even_label=Estender pares -# Document properties dialog box -document_properties.title=Propriedades do documento… -document_properties_label=Propriedades do documento… -document_properties_file_name=Nome do arquivo: -document_properties_file_size=Tamanho do arquivo: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Título: -document_properties_author=Autor: -document_properties_subject=Assunto: -document_properties_keywords=Palavras-chave: -document_properties_creation_date=Data da criação: -document_properties_modification_date=Data da modificação: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Criação: -document_properties_producer=Criador do PDF: -document_properties_version=Versão do PDF: -document_properties_page_count=Número de páginas: -document_properties_page_size=Tamanho da página: -document_properties_page_size_unit_inches=pol. -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=retrato -document_properties_page_size_orientation_landscape=paisagem -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Jurídico -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Exibição web rápida: -document_properties_linearized_yes=Sim -document_properties_linearized_no=Não -document_properties_close=Fechar -print_progress_message=Preparando documento para impressão… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}} % -print_progress_close=Cancelar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Exibir/ocultar painel lateral -toggle_sidebar_notification.title=Exibir/ocultar painel lateral (documento contém estrutura/anexos) -toggle_sidebar_notification2.title=Exibir/ocultar painel (documento contém estrutura/anexos/camadas) -toggle_sidebar_label=Exibir/ocultar painel -document_outline.title=Mostrar a estrutura do documento (dê um duplo-clique para expandir/recolher todos os itens) -document_outline_label=Estrutura do documento -attachments.title=Mostrar anexos -attachments_label=Anexos -layers.title=Exibir camadas (duplo-clique para redefinir todas as camadas ao estado predefinido) -layers_label=Camadas -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -current_outline_item.title=Encontrar item atual da estrutura -current_outline_item_label=Item atual da estrutura -findbar.title=Procurar no documento -findbar_label=Procurar -additional_layers=Camadas adicionais -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura da página {{page}} -# Find panel button title and messages -find_input.title=Procurar -find_input.placeholder=Procurar no documento… -find_previous.title=Procurar a ocorrência anterior da frase -find_previous_label=Anterior -find_next.title=Procurar a próxima ocorrência da frase -find_next_label=Próxima -find_highlight=Destacar tudo -find_match_case_label=Diferenciar maiúsculas/minúsculas -find_entire_word_label=Palavras completas -find_reached_top=Início do documento alcançado, continuando do fim -find_reached_bottom=Fim do documento alcançado, continuando do início -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} ocorrência -find_match_count[two]={{current}} de {{total}} ocorrências -find_match_count[few]={{current}} de {{total}} ocorrências -find_match_count[many]={{current}} de {{total}} ocorrências -find_match_count[other]={{current}} de {{total}} ocorrências -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mais de {{limit}} ocorrências -find_match_count_limit[one]=Mais de {{limit}} ocorrência -find_match_count_limit[two]=Mais de {{limit}} ocorrências -find_match_count_limit[few]=Mais de {{limit}} ocorrências -find_match_count_limit[many]=Mais de {{limit}} ocorrências -find_match_count_limit[other]=Mais de {{limit}} ocorrências -find_not_found=Frase não encontrada -# Error panel labels -error_more_info=Mais informações -error_less_info=Menos informações -error_close=Fechar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (compilação: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensagem: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pilha: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Arquivo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linha: {{line}} -rendering_error=Ocorreu um erro ao renderizar a página. -# Predefined zoom values -page_scale_width=Largura da página -page_scale_fit=Ajustar à janela -page_scale_auto=Zoom automático -page_scale_actual=Tamanho real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ocorreu um erro ao carregar o PDF. -invalid_file_error=Arquivo PDF corrompido ou inválido. -missing_file_error=Arquivo PDF ausente. -unexpected_response_error=Resposta inesperada do servidor. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotação {{type}}] -password_label=Forneça a senha para abrir este arquivo PDF. -password_invalid=Senha inválida. Tente novamente. -password_ok=OK -password_cancel=Cancelar -printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador. -printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão. -web_fonts_disabled=As fontes web estão desativadas: não foi possível usar fontes incorporadas do PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pt-PT/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pt-PT/viewer.properties deleted file mode 100644 index a879004d9a1af9c153f20169d85a073397e14cd0..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/pt-PT/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Página seguinte -next_label=Seguinte -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Página -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=de {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} de {{pagesCount}}) -zoom_out.title=Reduzir -zoom_out_label=Reduzir -zoom_in.title=Ampliar -zoom_in_label=Ampliar -zoom.title=Zoom -presentation_mode.title=Trocar para o modo de apresentação -presentation_mode_label=Modo de apresentação -open_file.title=Abrir ficheiro -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Transferir -download_label=Transferir -bookmark.title=Vista atual (copiar ou abrir numa nova janela) -bookmark_label=Visão atual -# Secondary toolbar and context menu -tools.title=Ferramentas -tools_label=Ferramentas -first_page.title=Ir para a primeira página -first_page.label=Ir para a primeira página -first_page_label=Ir para a primeira página -last_page.title=Ir para a última página -last_page.label=Ir para a última página -last_page_label=Ir para a última página -page_rotate_cw.title=Rodar à direita -page_rotate_cw.label=Rodar à direita -page_rotate_cw_label=Rodar à direita -page_rotate_ccw.title=Rodar à esquerda -page_rotate_ccw.label=Rodar à esquerda -page_rotate_ccw_label=Rodar à esquerda -cursor_text_select_tool.title=Ativar ferramenta de seleção de texto -cursor_text_select_tool_label=Ferramenta de seleção de texto -cursor_hand_tool.title=Ativar ferramenta de mão -cursor_hand_tool_label=Ferramenta de mão -scroll_vertical.title=Utilizar deslocação vertical -scroll_vertical_label=Deslocação vertical -scroll_horizontal.title=Utilizar deslocação horizontal -scroll_horizontal_label=Deslocação horizontal -scroll_wrapped.title=Utilizar deslocação encapsulada -scroll_wrapped_label=Deslocação encapsulada -spread_none.title=Não juntar páginas dispersas -spread_none_label=Sem spreads -spread_odd.title=Juntar páginas dispersas a partir de páginas com números ímpares -spread_odd_label=Spreads ímpares -spread_even.title=Juntar páginas dispersas a partir de páginas com números pares -spread_even_label=Spreads pares -# Document properties dialog box -document_properties.title=Propriedades do documento… -document_properties_label=Propriedades do documento… -document_properties_file_name=Nome do ficheiro: -document_properties_file_size=Tamanho do ficheiro: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Título: -document_properties_author=Autor: -document_properties_subject=Assunto: -document_properties_keywords=Palavras-chave: -document_properties_creation_date=Data de criação: -document_properties_modification_date=Data de modificação: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Criador: -document_properties_producer=Produtor de PDF: -document_properties_version=Versão do PDF: -document_properties_page_count=N.º de páginas: -document_properties_page_size=Tamanho da página: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=retrato -document_properties_page_size_orientation_landscape=paisagem -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Carta -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista rápida web: -document_properties_linearized_yes=Sim -document_properties_linearized_no=Não -document_properties_close=Fechar -print_progress_message=A preparar o documento para impressão… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Cancelar -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Alternar barra lateral -toggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos) -toggle_sidebar_notification2.title=Alternar barra lateral (o documento contém contornos/anexos/camadas) -toggle_sidebar_label=Alternar barra lateral -document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens) -document_outline_label=Esquema do documento -attachments.title=Mostrar anexos -attachments_label=Anexos -layers.title=Mostrar camadas (clique duas vezes para repor todas as camadas para o estado predefinido) -layers_label=Camadas -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -current_outline_item.title=Encontrar o item atualmente destacado -current_outline_item_label=Item atualmente destacado -findbar.title=Localizar em documento -findbar_label=Localizar -additional_layers=Camadas adicionais -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura da página {{page}} -# Find panel button title and messages -find_input.title=Localizar -find_input.placeholder=Localizar em documento… -find_previous.title=Localizar ocorrência anterior da frase -find_previous_label=Anterior -find_next.title=Localizar ocorrência seguinte da frase -find_next_label=Seguinte -find_highlight=Destacar tudo -find_match_case_label=Correspondência -find_entire_word_label=Palavras completas -find_reached_top=Topo do documento atingido, a continuar a partir do fundo -find_reached_bottom=Fim do documento atingido, a continuar a partir do topo -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} correspondência -find_match_count[two]={{current}} de {{total}} correspondências -find_match_count[few]={{current}} de {{total}} correspondências -find_match_count[many]={{current}} de {{total}} correspondências -find_match_count[other]={{current}} de {{total}} correspondências -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mais de {{limit}} correspondências -find_match_count_limit[one]=Mais de {{limit}} correspondência -find_match_count_limit[two]=Mais de {{limit}} correspondências -find_match_count_limit[few]=Mais de {{limit}} correspondências -find_match_count_limit[many]=Mais de {{limit}} correspondências -find_match_count_limit[other]=Mais de {{limit}} correspondências -find_not_found=Frase não encontrada -# Error panel labels -error_more_info=Mais informação -error_less_info=Menos informação -error_close=Fechar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (compilação: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensagem: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ficheiro: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linha: {{line}} -rendering_error=Ocorreu um erro ao processar a página. -# Predefined zoom values -page_scale_width=Ajustar à largura -page_scale_fit=Ajustar à página -page_scale_auto=Zoom automático -page_scale_actual=Tamanho real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ocorreu um erro ao carregar o PDF. -invalid_file_error=Ficheiro PDF inválido ou danificado. -missing_file_error=Ficheiro PDF inexistente. -unexpected_response_error=Resposta inesperada do servidor. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotação {{type}}] -password_label=Introduza a palavra-passe para abrir este ficheiro PDF. -password_invalid=Palavra-passe inválida. Por favor, tente novamente. -password_ok=OK -password_cancel=Cancelar -printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador. -printing_not_ready=Aviso: o PDF ainda não está totalmente carregado. -web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF embutidos. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/rm/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/rm/viewer.properties deleted file mode 100644 index 95167b9ace280d436c93279502fc8c679ff14e27..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/rm/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pagina precedenta -previous_label=Enavos -next.title=Proxima pagina -next_label=Enavant -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pagina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=da {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} da {{pagesCount}}) -zoom_out.title=Empitschnir -zoom_out_label=Empitschnir -zoom_in.title=Engrondir -zoom_in_label=Engrondir -zoom.title=Zoom -presentation_mode.title=Midar en il modus da preschentaziun -presentation_mode_label=Modus da preschentaziun -open_file.title=Avrir datoteca -open_file_label=Avrir -print.title=Stampar -print_label=Stampar -download.title=Telechargiar -download_label=Telechargiar -bookmark.title=Vista actuala (copiar u avrir en ina nova fanestra) -bookmark_label=Vista actuala -# Secondary toolbar and context menu -tools.title=Utensils -tools_label=Utensils -first_page.title=Siglir a l'emprima pagina -first_page.label=Siglir a l'emprima pagina -first_page_label=Siglir a l'emprima pagina -last_page.title=Siglir a la davosa pagina -last_page.label=Siglir a la davosa pagina -last_page_label=Siglir a la davosa pagina -page_rotate_cw.title=Rotar en direcziun da l'ura -page_rotate_cw.label=Rotar en direcziun da l'ura -page_rotate_cw_label=Rotar en direcziun da l'ura -page_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura -page_rotate_ccw.label=Rotar en direcziun cuntraria a l'ura -page_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura -cursor_text_select_tool.title=Activar l'utensil per selecziunar text -cursor_text_select_tool_label=Utensil per selecziunar text -cursor_hand_tool.title=Activar l'utensil da maun -cursor_hand_tool_label=Utensil da maun -scroll_vertical.title=Utilisar il defilar vertical -scroll_vertical_label=Defilar vertical -scroll_horizontal.title=Utilisar il defilar orizontal -scroll_horizontal_label=Defilar orizontal -scroll_wrapped.title=Utilisar il defilar en colonnas -scroll_wrapped_label=Defilar en colonnas -spread_none.title=Betg parallelisar las paginas -spread_none_label=Betg parallel -spread_odd.title=Parallelisar las paginas cun cumenzar cun paginas spèras -spread_odd_label=Parallel spèr -spread_even.title=Parallelisar las paginas cun cumenzar cun paginas pèras -spread_even_label=Parallel pèr -# Document properties dialog box -document_properties.title=Caracteristicas dal document… -document_properties_label=Caracteristicas dal document… -document_properties_file_name=Num da la datoteca: -document_properties_file_size=Grondezza da la datoteca: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titel: -document_properties_author=Autur: -document_properties_subject=Tema: -document_properties_keywords=Chavazzins: -document_properties_creation_date=Data da creaziun: -document_properties_modification_date=Data da modificaziun: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}} {{time}} -document_properties_creator=Creà da: -document_properties_producer=Creà il PDF cun: -document_properties_version=Versiun da PDF: -document_properties_page_count=Dumber da paginas: -document_properties_page_size=Grondezza da la pagina: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=vertical -document_properties_page_size_orientation_landscape=orizontal -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Gea -document_properties_linearized_no=Na -document_properties_close=Serrar -print_progress_message=Preparar il document per stampar… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Interrumper -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Activar/deactivar la trav laterala -toggle_sidebar_notification.title=Activar/deactivar la trav laterala (structura dal document/agiuntas) -toggle_sidebar_notification2.title=Activar/deactivar la trav laterala (il document cuntegna structura dal document/agiuntas/nivels) -toggle_sidebar_label=Activar/deactivar la trav laterala -document_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils elements) -document_outline_label=Structura dal document -attachments.title=Mussar agiuntas -attachments_label=Agiuntas -layers.title=Mussar ils nivels (cliccar dubel per restaurar il stadi da standard da tut ils nivels) -layers_label=Nivels -thumbs.title=Mussar las miniaturas -thumbs_label=Miniaturas -current_outline_item.title=Tschertgar l'element da structura actual -current_outline_item_label=Element da structura actual -findbar.title=Tschertgar en il document -findbar_label=Tschertgar -additional_layers=Nivels supplementars -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura da la pagina {{page}} -# Find panel button title and messages -find_input.title=Tschertgar -find_input.placeholder=Tschertgar en il document… -find_previous.title=Tschertgar la posiziun precedenta da l'expressiun -find_previous_label=Enavos -find_next.title=Tschertgar la proxima posiziun da l'expressiun -find_next_label=Enavant -find_highlight=Relevar tuts -find_match_case_label=Resguardar maiusclas/minusclas -find_entire_word_label=Pleds entirs -find_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document -find_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} dad {{total}} correspundenza -find_match_count[two]={{current}} da {{total}} correspundenzas -find_match_count[few]={{current}} da {{total}} correspundenzas -find_match_count[many]={{current}} da {{total}} correspundenzas -find_match_count[other]={{current}} da {{total}} correspundenzas -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Dapli che {{limit}} correspundenzas -find_match_count_limit[one]=Dapli che {{limit}} correspundenza -find_match_count_limit[two]=Dapli che {{limit}} correspundenzas -find_match_count_limit[few]=Dapli che {{limit}} correspundenzas -find_match_count_limit[many]=Dapli che {{limit}} correspundenzas -find_match_count_limit[other]=Dapli che {{limit}} correspundenzas -find_not_found=Impussibel da chattar l'expressiun -# Error panel labels -error_more_info=Dapli infurmaziuns -error_less_info=Damain infurmaziuns -error_close=Serrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Messadi: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Datoteca: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Lingia: {{line}} -rendering_error=Ina errur è cumparida cun visualisar questa pagina. -# Predefined zoom values -page_scale_width=Ladezza da la pagina -page_scale_fit=Entira pagina -page_scale_auto=Zoom automatic -page_scale_actual=Grondezza actuala -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ina errur è cumparida cun chargiar il PDF. -invalid_file_error=Datoteca PDF nunvalida u donnegiada. -missing_file_error=Datoteca PDF manconta. -unexpected_response_error=Resposta nunspetgada dal server. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Annotaziun da {{type}}] -password_label=Endatescha il pled-clav per avrir questa datoteca da PDF. -password_invalid=Pled-clav nunvalid. Emprova anc ina giada. -password_ok=OK -password_cancel=Interrumper -printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur. -printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar. -web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ro/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ro/viewer.properties deleted file mode 100644 index 75560064cf40635a26f683df7fa063900805384f..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ro/viewer.properties +++ /dev/null @@ -1,228 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pagina precedentă -previous_label=Înapoi -next.title=Pagina următoare -next_label=Înainte -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pagina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=din {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} din {{pagesCount}}) -zoom_out.title=Micșorează -zoom_out_label=Micșorează -zoom_in.title=Mărește -zoom_in_label=Mărește -zoom.title=Zoom -presentation_mode.title=Comută la modul de prezentare -presentation_mode_label=Mod de prezentare -open_file.title=Deschide un fișier -open_file_label=Deschide -print.title=Tipărește -print_label=Tipărește -download.title=Descarcă -download_label=Descarcă -bookmark.title=Vizualizare actuală (copiază sau deschide într-o fereastră nouă) -bookmark_label=Vizualizare actuală -# Secondary toolbar and context menu -tools.title=Instrumente -tools_label=Instrumente -first_page.title=Mergi la prima pagină -first_page.label=Mergi la prima pagină -first_page_label=Mergi la prima pagină -last_page.title=Mergi la ultima pagină -last_page.label=Mergi la ultima pagină -last_page_label=Mergi la ultima pagină -page_rotate_cw.title=Rotește în sensul acelor de ceas -page_rotate_cw.label=Rotește în sensul acelor de ceas -page_rotate_cw_label=Rotește în sensul acelor de ceas -page_rotate_ccw.title=Rotește în sens invers al acelor de ceas -page_rotate_ccw.label=Rotește în sens invers al acelor de ceas -page_rotate_ccw_label=Rotește în sens invers al acelor de ceas -cursor_text_select_tool.title=Activează instrumentul de selecție a textului -cursor_text_select_tool_label=Instrumentul de selecție a textului -cursor_hand_tool.title=Activează instrumentul mână -cursor_hand_tool_label=Unealta mână -scroll_vertical.title=Folosește derularea verticală -scroll_vertical_label=Derulare verticală -scroll_horizontal.title=Folosește derularea orizontală -scroll_horizontal_label=Derulare orizontală -scroll_wrapped.title=Folosește derularea încadrată -scroll_wrapped_label=Derulare încadrată -spread_none.title=Nu uni paginile broșate -spread_none_label=Fără pagini broșate -spread_odd.title=Unește paginile broșate începând cu cele impare -spread_odd_label=Broșare pagini impare -spread_even.title=Unește paginile broșate începând cu cele pare -spread_even_label=Broșare pagini pare -# Document properties dialog box -document_properties.title=Proprietățile documentului… -document_properties_label=Proprietățile documentului… -document_properties_file_name=Numele fișierului: -document_properties_file_size=Mărimea fișierului: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} byți) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byți) -document_properties_title=Titlu: -document_properties_author=Autor: -document_properties_subject=Subiect: -document_properties_keywords=Cuvinte cheie: -document_properties_creation_date=Data creării: -document_properties_modification_date=Data modificării: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Autor: -document_properties_producer=Producător PDF: -document_properties_version=Versiune PDF: -document_properties_page_count=Număr de pagini: -document_properties_page_size=Mărimea paginii: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=verticală -document_properties_page_size_orientation_landscape=orizontală -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Literă -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vizualizare web rapidă: -document_properties_linearized_yes=Da -document_properties_linearized_no=Nu -document_properties_close=Închide -print_progress_message=Se pregătește documentul pentru tipărire… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Renunță -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Comută bara laterală -toggle_sidebar_notification.title=Comută bara laterală (documentul conține schițe/atașamente) -toggle_sidebar_label=Comută bara laterală -document_outline.title=Afișează schița documentului (dublu-clic pentru a extinde/restrânge toate elementele) -document_outline_label=Schița documentului -attachments.title=Afișează atașamentele -attachments_label=Atașamente -thumbs.title=Afișează miniaturi -thumbs_label=Miniaturi -findbar.title=Caută în document -findbar_label=Caută -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura paginii {{page}} -# Find panel button title and messages -find_input.title=Caută -find_input.placeholder=Caută în document… -find_previous.title=Mergi la apariția anterioară a textului -find_previous_label=Înapoi -find_next.title=Mergi la apariția următoare a textului -find_next_label=Înainte -find_highlight=Evidențiază toate aparițiile -find_match_case_label=Ține cont de majuscule și minuscule -find_entire_word_label=Cuvinte întregi -find_reached_top=Am ajuns la începutul documentului, continuă de la sfârșit -find_reached_bottom=Am ajuns la sfârșitul documentului, continuă de la început -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} din {{total}} rezultat -find_match_count[two]={{current}} din {{total}} rezultate -find_match_count[few]={{current}} din {{total}} rezultate -find_match_count[many]={{current}} din {{total}} de rezultate -find_match_count[other]={{current}} din {{total}} de rezultate -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Peste {{limit}} rezultate -find_match_count_limit[one]=Peste {{limit}} rezultat -find_match_count_limit[two]=Peste {{limit}} rezultate -find_match_count_limit[few]=Peste {{limit}} rezultate -find_match_count_limit[many]=Peste {{limit}} de rezultate -find_match_count_limit[other]=Peste {{limit}} de rezultate -find_not_found=Nu s-a găsit textul -# Error panel labels -error_more_info=Mai multe informații -error_less_info=Mai puține informații -error_close=Închide -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (versiunea compilată: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesaj: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stivă: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fișier: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rând: {{line}} -rendering_error=A intervenit o eroare la randarea paginii. -# Predefined zoom values -page_scale_width=Lățime pagină -page_scale_fit=Potrivire la pagină -page_scale_auto=Zoom automat -page_scale_actual=Mărime reală -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=A intervenit o eroare la încărcarea PDF-ului. -invalid_file_error=Fișier PDF nevalid sau corupt. -missing_file_error=Fișier PDF lipsă. -unexpected_response_error=Răspuns neașteptat de la server. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Adnotare {{type}}] -password_label=Introdu parola pentru a deschide acest fișier PDF. -password_invalid=Parolă nevalidă. Te rugăm să încerci din nou. -password_ok=Ok -password_cancel=Renunță -printing_not_supported=Avertisment: Tipărirea nu este suportată în totalitate de acest browser. -printing_not_ready=Avertisment: PDF-ul nu este încărcat complet pentru tipărire. -web_fonts_disabled=Fonturile web sunt dezactivate: nu se pot folosi fonturile PDF încorporate. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ru/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ru/viewer.properties deleted file mode 100644 index 40353e40f21468aadfef4df2d793ae2d6fae3bf3..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ru/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Предыдущая страница -previous_label=Предыдущая -next.title=Следующая страница -next_label=Следующая -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Страница -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=из {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} из {{pagesCount}}) -zoom_out.title=Уменьшить -zoom_out_label=Уменьшить -zoom_in.title=Увеличить -zoom_in_label=Увеличить -zoom.title=Масштаб -presentation_mode.title=Перейти в режим презентации -presentation_mode_label=Режим презентации -open_file.title=Открыть файл -open_file_label=Открыть -print.title=Печать -print_label=Печать -download.title=Загрузить -download_label=Загрузить -bookmark.title=Ссылка на текущий вид (скопировать или открыть в новом окне) -bookmark_label=Текущий вид -# Secondary toolbar and context menu -tools.title=Инструменты -tools_label=Инструменты -first_page.title=Перейти на первую страницу -first_page.label=Перейти на первую страницу -first_page_label=Перейти на первую страницу -last_page.title=Перейти на последнюю страницу -last_page.label=Перейти на последнюю страницу -last_page_label=Перейти на последнюю страницу -page_rotate_cw.title=Повернуть по часовой стрелке -page_rotate_cw.label=Повернуть по часовой стрелке -page_rotate_cw_label=Повернуть по часовой стрелке -page_rotate_ccw.title=Повернуть против часовой стрелки -page_rotate_ccw.label=Повернуть против часовой стрелки -page_rotate_ccw_label=Повернуть против часовой стрелки -cursor_text_select_tool.title=Включить Инструмент «Выделение текста» -cursor_text_select_tool_label=Инструмент «Выделение текста» -cursor_hand_tool.title=Включить Инструмент «Рука» -cursor_hand_tool_label=Инструмент «Рука» -scroll_vertical.title=Использовать вертикальную прокрутку -scroll_vertical_label=Вертикальная прокрутка -scroll_horizontal.title=Использовать горизонтальную прокрутку -scroll_horizontal_label=Горизонтальная прокрутка -scroll_wrapped.title=Использовать масштабируемую прокрутку -scroll_wrapped_label=Масштабируемая прокрутка -spread_none.title=Не использовать режим разворотов страниц -spread_none_label=Без разворотов страниц -spread_odd.title=Развороты начинаются с нечётных номеров страниц -spread_odd_label=Нечётные страницы слева -spread_even.title=Развороты начинаются с чётных номеров страниц -spread_even_label=Чётные страницы слева -# Document properties dialog box -document_properties.title=Свойства документа… -document_properties_label=Свойства документа… -document_properties_file_name=Имя файла: -document_properties_file_size=Размер файла: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} байт) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} байт) -document_properties_title=Заголовок: -document_properties_author=Автор: -document_properties_subject=Тема: -document_properties_keywords=Ключевые слова: -document_properties_creation_date=Дата создания: -document_properties_modification_date=Дата изменения: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Приложение: -document_properties_producer=Производитель PDF: -document_properties_version=Версия PDF: -document_properties_page_count=Число страниц: -document_properties_page_size=Размер страницы: -document_properties_page_size_unit_inches=дюймов -document_properties_page_size_unit_millimeters=мм -document_properties_page_size_orientation_portrait=книжная -document_properties_page_size_orientation_landscape=альбомная -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Быстрый просмотр в Web: -document_properties_linearized_yes=Да -document_properties_linearized_no=Нет -document_properties_close=Закрыть -print_progress_message=Подготовка документа к печати… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Отмена -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Показать/скрыть боковую панель -toggle_sidebar_notification.title=Показать/скрыть боковую панель (документ имеет содержание/вложения) -toggle_sidebar_notification2.title=Показать/скрыть боковую панель (документ имеет содержание/вложения/слои) -toggle_sidebar_label=Показать/скрыть боковую панель -document_outline.title=Показать содержание документа (двойной щелчок, чтобы развернуть/свернуть все элементы) -document_outline_label=Содержание документа -attachments.title=Показать вложения -attachments_label=Вложения -layers.title=Показать слои (дважды щёлкните, чтобы сбросить все слои к состоянию по умолчанию) -layers_label=Слои -thumbs.title=Показать миниатюры -thumbs_label=Миниатюры -current_outline_item.title=Найти текущий элемент структуры -current_outline_item_label=Текущий элемент структуры -findbar.title=Найти в документе -findbar_label=Найти -additional_layers=Дополнительные слои -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Страница {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Страница {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Миниатюра страницы {{page}} -# Find panel button title and messages -find_input.title=Найти -find_input.placeholder=Найти в документе… -find_previous.title=Найти предыдущее вхождение фразы в текст -find_previous_label=Назад -find_next.title=Найти следующее вхождение фразы в текст -find_next_label=Далее -find_highlight=Подсветить все -find_match_case_label=С учётом регистра -find_entire_word_label=Слова целиком -find_reached_top=Достигнут верх документа, продолжено снизу -find_reached_bottom=Достигнут конец документа, продолжено сверху -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} из {{total}} совпадения -find_match_count[two]={{current}} из {{total}} совпадений -find_match_count[few]={{current}} из {{total}} совпадений -find_match_count[many]={{current}} из {{total}} совпадений -find_match_count[other]={{current}} из {{total}} совпадений -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Более {{limit}} совпадений -find_match_count_limit[one]=Более {{limit}} совпадения -find_match_count_limit[two]=Более {{limit}} совпадений -find_match_count_limit[few]=Более {{limit}} совпадений -find_match_count_limit[many]=Более {{limit}} совпадений -find_match_count_limit[other]=Более {{limit}} совпадений -find_not_found=Фраза не найдена -# Error panel labels -error_more_info=Детали -error_less_info=Скрыть детали -error_close=Закрыть -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (сборка: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Сообщение: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стeк: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Файл: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Строка: {{line}} -rendering_error=При создании страницы произошла ошибка. -# Predefined zoom values -page_scale_width=По ширине страницы -page_scale_fit=По размеру страницы -page_scale_auto=Автоматически -page_scale_actual=Реальный размер -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=При загрузке PDF произошла ошибка. -invalid_file_error=Некорректный или повреждённый PDF-файл. -missing_file_error=PDF-файл отсутствует. -unexpected_response_error=Неожиданный ответ сервера. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Аннотация {{type}}] -password_label=Введите пароль, чтобы открыть этот PDF-файл. -password_invalid=Неверный пароль. Пожалуйста, попробуйте снова. -password_ok=OK -password_cancel=Отмена -printing_not_supported=Предупреждение: В этом браузере не полностью поддерживается печать. -printing_not_ready=Предупреждение: PDF не полностью загружен для печати. -web_fonts_disabled=Веб-шрифты отключены: не удалось задействовать встроенные PDF-шрифты. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/scn/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/scn/viewer.properties deleted file mode 100644 index 8d7eb897cd7fbe66dc58796bf63962d498df8d1b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/scn/viewer.properties +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -zoom_out.title=Cchiù nicu -zoom_out_label=Cchiù nicu -zoom_in.title=Cchiù granni -zoom_in_label=Cchiù granni -# Secondary toolbar and context menu -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Vista web lesta: -document_properties_linearized_yes=Se -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_close=Sfai -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -# Find panel button title and messages -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -# Error panel labels -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -# Predefined zoom values -page_scale_width=Larghizza dâ pàggina -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -# Loading indicator messages -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_cancel=Sfai - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/si/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/si/viewer.properties deleted file mode 100644 index 06476e37996a819c09c3256d111c64e79084b88a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/si/viewer.properties +++ /dev/null @@ -1,189 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=මීට පෙර පිටුව -previous_label=පෙර -next.title=මීළඟ පිටුව -next_label=මීළඟ -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=පිටුව -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -zoom_out.title=කුඩා කරන්න -zoom_out_label=කුඩා කරන්න -zoom_in.title=විශාල කරන්න -zoom_in_label=විශාල කරන්න -zoom.title=විශාලණය -presentation_mode.title=ඉදිරිපත්කිරීම් ප්‍රකාරය වෙත මාරුවන්න -presentation_mode_label=ඉදිරිපත්කිරීම් ප්‍රකාරය -open_file.title=ගොනුව විවෘත කරන්න -open_file_label=විවෘත කරන්න -print.title=මුද්‍රණය -print_label=මුද්‍රණය -download.title=බාගන්න -download_label=බාගන්න -bookmark.title=දැනට ඇති දසුන (පිටපත් කරන්න හෝ නව කවුළුවක විවෘත කරන්න) -bookmark_label=දැනට ඇති දසුන -# Secondary toolbar and context menu -tools.title=මෙවලම් -tools_label=මෙවලම් -first_page.title=මුල් පිටුවට යන්න -first_page.label=මුල් පිටුවට යන්න -first_page_label=මුල් පිටුවට යන්න -last_page.title=අවසන් පිටුවට යන්න -last_page.label=අවසන් පිටුවට යන්න -last_page_label=අවසන් පිටුවට යන්න -page_rotate_cw.title=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_cw.label=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_cw_label=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_ccw.title=වාමාවර්තව භ්‍රමණය -page_rotate_ccw.label=වාමාවර්තව භ්‍රමණය -page_rotate_ccw_label=වාමාවර්තව භ්‍රමණය -cursor_hand_tool_label=අත් මෙවලම -# Document properties dialog box -document_properties.title=ලේඛන වත්කම්... -document_properties_label=ලේඛන වත්කම්... -document_properties_file_name=ගොනු නම: -document_properties_file_size=ගොනු ප්‍රමාණය: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} බයිට) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} බයිට) -document_properties_title=සිරස්තලය: -document_properties_author=කතෲ -document_properties_subject=මාතෘකාව: -document_properties_keywords=යතුරු වදන්: -document_properties_creation_date=නිර්මිත දිනය: -document_properties_modification_date=වෙනස්කල දිනය: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=නිර්මාපක: -document_properties_producer=PDF නිශ්පාදක: -document_properties_version=PDF නිකුතුව: -document_properties_page_count=පිටු ගණන: -document_properties_page_size=පිටුවේ විශාලත්වය: -document_properties_page_size_unit_inches=අඟල් -document_properties_page_size_unit_millimeters=මිමි -document_properties_page_size_orientation_portrait=සිරස් -document_properties_page_size_orientation_landscape=තිරස් -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}}×{{height}}{{unit}}{{name}}{{orientation}} -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=වේගවත් ජාල දසුන: -document_properties_linearized_yes=ඔව් -document_properties_linearized_no=නැහැ -document_properties_close=වසන්න -print_progress_message=ලේඛනය මුද්‍රණය සඳහා සූදානම් කරමින්… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=අවලංගු කරන්න -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=පැති තීරුවට මාරුවන්න -toggle_sidebar_label=පැති තීරුවට මාරුවන්න -document_outline_label=ලේඛනයේ පිට මායිම -attachments.title=ඇමිණුම් පෙන්වන්න -attachments_label=ඇමිණුම් -thumbs.title=සිඟිති රූ පෙන්වන්න -thumbs_label=සිඟිති රූ -findbar.title=ලේඛනය තුළ සොයන්න -findbar_label=සොයන්න -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=පිටුව {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=පිටුවෙ සිඟිත රූව {{page}} -# Find panel button title and messages -find_input.title=සොයන්න -find_previous.title=මේ වාක්‍ය ඛණ්ඩය මීට පෙර යෙදුණු ස්ථානය සොයන්න -find_previous_label=පෙර: -find_next.title=මේ වාක්‍ය ඛණ්ඩය මීළඟට යෙදෙන ස්ථානය සොයන්න -find_next_label=මීළඟ -find_highlight=සියල්ල උද්දීපනය -find_match_case_label=අකුරු ගළපන්න -find_entire_word_label=සම්පූර්ණ වචන -find_reached_top=පිටුවේ ඉහළ කෙළවරට ලගාවිය, පහළ සිට ඉදිරියට යමින් -find_reached_bottom=පිටුවේ පහළ කෙළවරට ලගාවිය, ඉහළ සිට ඉදිරියට යමින් -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit[zero]=ගැලපුම් {{limit}} ට වඩා -find_not_found=ඔබ සෙව් වචන හමු නොවීය -# Error panel labels -error_more_info=බොහෝ තොරතුරු -error_less_info=අවම තොරතුරු -error_close=වසන්න -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (නිකුතුව: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=පණිවිඩය: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ගොනුව: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=පේළිය: {{line}} -rendering_error=පිටුව රෙන්ඩර් විමේදි ගැටලුවක් හට ගැනුණි. -# Predefined zoom values -page_scale_width=පිටුවේ පළල -page_scale_fit=පිටුවට සුදුසු ලෙස -page_scale_auto=ස්වයංක්‍රීය විශාලණය -page_scale_actual=නියමිත ප්‍රමාණය -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF පූරණය විමේදි දෝෂයක් හට ගැනුණි. -invalid_file_error=දූශිත හෝ සාවද්‍ය PDF ගොනුව. -missing_file_error=නැතිවූ PDF ගොනුව. -unexpected_response_error=බලාපොරොත්තු නොවූ සේවාදායක ප්‍රතිචාරය. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} විස්තරය] -password_label=මෙම PDF ගොනුව විවෘත කිරීමට මුරපදය ඇතුළත් කරන්න. -password_invalid=වැරදි මුරපදයක්. කරුණාකර නැවත උත්සහ කරන්න. -password_ok=හරි -password_cancel=එපා -printing_not_supported=අවවාදයයි: මෙම ගවේශකය මුද්‍රණය සඳහා සම්පූර්ණයෙන් සහය නොදක්වයි. -printing_not_ready=අවවාදයයි: මුද්‍රණය සඳහා PDF සම්පූර්ණයෙන් පූර්ණය වී නොමැත. -web_fonts_disabled=ජාල අකුරු අක්‍රීයයි: තිළැලි PDF අකුරු භාවිත කළ නොහැක. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sk/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sk/viewer.properties deleted file mode 100644 index 74b1136965af1f3d55948458b2fc883b61436dd6..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sk/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Predchádzajúca strana -previous_label=Predchádzajúca -next.title=Nasledujúca strana -next_label=Nasledujúca -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Strana -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=z {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} z {{pagesCount}}) -zoom_out.title=Zmenšiť veľkosť -zoom_out_label=Zmenšiť veľkosť -zoom_in.title=Zväčšiť veľkosť -zoom_in_label=Zväčšiť veľkosť -zoom.title=Nastavenie veľkosti -presentation_mode.title=Prepnúť na režim prezentácie -presentation_mode_label=Režim prezentácie -open_file.title=Otvoriť súbor -open_file_label=Otvoriť -print.title=Tlačiť -print_label=Tlačiť -download.title=Prevziať -download_label=Prevziať -bookmark.title=Aktuálne zobrazenie (kopírovať alebo otvoriť v novom okne) -bookmark_label=Aktuálne zobrazenie -# Secondary toolbar and context menu -tools.title=Nástroje -tools_label=Nástroje -first_page.title=Prejsť na prvú stranu -first_page.label=Prejsť na prvú stranu -first_page_label=Prejsť na prvú stranu -last_page.title=Prejsť na poslednú stranu -last_page.label=Prejsť na poslednú stranu -last_page_label=Prejsť na poslednú stranu -page_rotate_cw.title=Otočiť v smere hodinových ručičiek -page_rotate_cw.label=Otočiť v smere hodinových ručičiek -page_rotate_cw_label=Otočiť v smere hodinových ručičiek -page_rotate_ccw.title=Otočiť proti smeru hodinových ručičiek -page_rotate_ccw.label=Otočiť proti smeru hodinových ručičiek -page_rotate_ccw_label=Otočiť proti smeru hodinových ručičiek -cursor_text_select_tool.title=Povoliť výber textu -cursor_text_select_tool_label=Výber textu -cursor_hand_tool.title=Povoliť nástroj ruka -cursor_hand_tool_label=Nástroj ruka -scroll_vertical.title=Používať zvislé posúvanie -scroll_vertical_label=Zvislé posúvanie -scroll_horizontal.title=Používať vodorovné posúvanie -scroll_horizontal_label=Vodorovné posúvanie -scroll_wrapped.title=Použiť postupné posúvanie -scroll_wrapped_label=Postupné posúvanie -spread_none.title=Nezdružovať stránky -spread_none_label=Žiadne združovanie -spread_odd.title=Združí stránky a umiestni nepárne stránky vľavo -spread_odd_label=Združiť stránky (nepárne vľavo) -spread_even.title=Združí stránky a umiestni párne stránky vľavo -spread_even_label=Združiť stránky (párne vľavo) -# Document properties dialog box -document_properties.title=Vlastnosti dokumentu… -document_properties_label=Vlastnosti dokumentu… -document_properties_file_name=Názov súboru: -document_properties_file_size=Veľkosť súboru: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} bajtov) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtov) -document_properties_title=Názov: -document_properties_author=Autor: -document_properties_subject=Predmet: -document_properties_keywords=Kľúčové slová: -document_properties_creation_date=Dátum vytvorenia: -document_properties_modification_date=Dátum úpravy: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Vytvoril: -document_properties_producer=Tvorca PDF: -document_properties_version=Verzia PDF: -document_properties_page_count=Počet strán: -document_properties_page_size=Veľkosť stránky: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=na výšku -document_properties_page_size_orientation_landscape=na šírku -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=List -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Rýchle Web View: -document_properties_linearized_yes=Áno -document_properties_linearized_no=Nie -document_properties_close=Zavrieť -print_progress_message=Príprava dokumentu na tlač… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Zrušiť -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Prepnúť bočný panel -toggle_sidebar_notification.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy) -toggle_sidebar_notification2.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy/vrstvy) -toggle_sidebar_label=Prepnúť bočný panel -document_outline.title=Zobraziť osnovu dokumentu (dvojitým kliknutím rozbalíte/zbalíte všetky položky) -document_outline_label=Osnova dokumentu -attachments.title=Zobraziť prílohy -attachments_label=Prílohy -layers.title=Zobraziť vrstvy (dvojitým kliknutím uvediete všetky vrstvy do pôvodného stavu) -layers_label=Vrstvy -thumbs.title=Zobraziť miniatúry -thumbs_label=Miniatúry -current_outline_item.title=Nájsť aktuálnu položku v osnove -current_outline_item_label=Aktuálna položka v osnove -findbar.title=Hľadať v dokumente -findbar_label=Hľadať -additional_layers=Ďalšie vrstvy -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Strana {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strana {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatúra strany {{page}} -# Find panel button title and messages -find_input.title=Hľadať -find_input.placeholder=Hľadať v dokumente… -find_previous.title=Vyhľadať predchádzajúci výskyt reťazca -find_previous_label=Predchádzajúce -find_next.title=Vyhľadať ďalší výskyt reťazca -find_next_label=Ďalšie -find_highlight=Zvýrazniť všetky -find_match_case_label=Rozlišovať veľkosť písmen -find_entire_word_label=Celé slová -find_reached_top=Bol dosiahnutý začiatok stránky, pokračuje sa od konca -find_reached_bottom=Bol dosiahnutý koniec stránky, pokračuje sa od začiatku -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}}. z {{total}} výsledku -find_match_count[two]={{current}}. z {{total}} výsledkov -find_match_count[few]={{current}}. z {{total}} výsledkov -find_match_count[many]={{current}}. z {{total}} výsledkov -find_match_count[other]={{current}}. z {{total}} výsledkov -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Viac než {{limit}} výsledkov -find_match_count_limit[one]=Viac než {{limit}} výsledok -find_match_count_limit[two]=Viac než {{limit}} výsledky -find_match_count_limit[few]=Viac než {{limit}} výsledky -find_match_count_limit[many]=Viac než {{limit}} výsledkov -find_match_count_limit[other]=Viac než {{limit}} výsledkov -find_not_found=Výraz nebol nájdený -# Error panel labels -error_more_info=Ďalšie informácie -error_less_info=Menej informácií -error_close=Zavrieť -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (zostavenie: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Správa: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Zásobník: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Súbor: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Riadok: {{line}} -rendering_error=Pri vykresľovaní stránky sa vyskytla chyba. -# Predefined zoom values -page_scale_width=Na šírku strany -page_scale_fit=Na veľkosť strany -page_scale_auto=Automatická veľkosť -page_scale_actual=Skutočná veľkosť -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % -# Loading indicator messages -loading_error=Počas načítavania dokumentu PDF sa vyskytla chyba. -invalid_file_error=Neplatný alebo poškodený súbor PDF. -missing_file_error=Chýbajúci súbor PDF. -unexpected_response_error=Neočakávaná odpoveď zo servera. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotácia typu {{type}}] -password_label=Ak chcete otvoriť tento súbor PDF, zadajte jeho heslo. -password_invalid=Heslo nie je platné. Skúste to znova. -password_ok=OK -password_cancel=Zrušiť -printing_not_supported=Upozornenie: tlač nie je v tomto prehliadači plne podporovaná. -printing_not_ready=Upozornenie: súbor PDF nie je plne načítaný pre tlač. -web_fonts_disabled=Webové písma sú vypnuté: nie je možné použiť písma vložené do súboru PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sl/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sl/viewer.properties deleted file mode 100644 index 73a63106c2eb0d5a9a2dbff9feeea98ef4d9fdd7..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sl/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Prejšnja stran -previous_label=Nazaj -next.title=Naslednja stran -next_label=Naprej -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Stran -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=od {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} od {{pagesCount}}) -zoom_out.title=Pomanjšaj -zoom_out_label=Pomanjšaj -zoom_in.title=Povečaj -zoom_in_label=Povečaj -zoom.title=Povečava -presentation_mode.title=Preklopi v način predstavitve -presentation_mode_label=Način predstavitve -open_file.title=Odpri datoteko -open_file_label=Odpri -print.title=Natisni -print_label=Natisni -download.title=Prenesi -download_label=Prenesi -bookmark.title=Trenutni pogled (kopiraj ali odpri v novem oknu) -bookmark_label=Trenutni pogled -# Secondary toolbar and context menu -tools.title=Orodja -tools_label=Orodja -first_page.title=Pojdi na prvo stran -first_page.label=Pojdi na prvo stran -first_page_label=Pojdi na prvo stran -last_page.title=Pojdi na zadnjo stran -last_page.label=Pojdi na zadnjo stran -last_page_label=Pojdi na zadnjo stran -page_rotate_cw.title=Zavrti v smeri urnega kazalca -page_rotate_cw.label=Zavrti v smeri urnega kazalca -page_rotate_cw_label=Zavrti v smeri urnega kazalca -page_rotate_ccw.title=Zavrti v nasprotni smeri urnega kazalca -page_rotate_ccw.label=Zavrti v nasprotni smeri urnega kazalca -page_rotate_ccw_label=Zavrti v nasprotni smeri urnega kazalca -cursor_text_select_tool.title=Omogoči orodje za izbor besedila -cursor_text_select_tool_label=Orodje za izbor besedila -cursor_hand_tool.title=Omogoči roko -cursor_hand_tool_label=Roka -scroll_vertical.title=Uporabi navpično drsenje -scroll_vertical_label=Navpično drsenje -scroll_horizontal.title=Uporabi vodoravno drsenje -scroll_horizontal_label=Vodoravno drsenje -scroll_wrapped.title=Uporabi ovito drsenje -scroll_wrapped_label=Ovito drsenje -spread_none.title=Ne združuj razponov strani -spread_none_label=Brez razponov -spread_odd.title=Združuj razpone strani z začetkom pri lihih straneh -spread_odd_label=Lihi razponi -spread_even.title=Združuj razpone strani z začetkom pri sodih straneh -spread_even_label=Sodi razponi -# Document properties dialog box -document_properties.title=Lastnosti dokumenta … -document_properties_label=Lastnosti dokumenta … -document_properties_file_name=Ime datoteke: -document_properties_file_size=Velikost datoteke: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajtov) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtov) -document_properties_title=Ime: -document_properties_author=Avtor: -document_properties_subject=Tema: -document_properties_keywords=Ključne besede: -document_properties_creation_date=Datum nastanka: -document_properties_modification_date=Datum spremembe: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Ustvaril: -document_properties_producer=Izdelovalec PDF: -document_properties_version=Različica PDF: -document_properties_page_count=Število strani: -document_properties_page_size=Velikost strani: -document_properties_page_size_unit_inches=palcev -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=pokončno -document_properties_page_size_orientation_landscape=ležeče -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Pismo -document_properties_page_size_name_legal=Pravno -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Hitri spletni ogled: -document_properties_linearized_yes=Da -document_properties_linearized_no=Ne -document_properties_close=Zapri -print_progress_message=Priprava dokumenta na tiskanje … -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}} % -print_progress_close=Prekliči -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Preklopi stransko vrstico -toggle_sidebar_notification.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke) -toggle_sidebar_notification2.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke/plasti) -toggle_sidebar_label=Preklopi stransko vrstico -document_outline.title=Prikaži oris dokumenta (dvokliknite za razširitev/strnitev vseh predmetov) -document_outline_label=Oris dokumenta -attachments.title=Prikaži priponke -attachments_label=Priponke -layers.title=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzeto stanje) -layers_label=Plasti -thumbs.title=Prikaži sličice -thumbs_label=Sličice -current_outline_item.title=Najdi trenutni predmet orisa -current_outline_item_label=Trenutni predmet orisa -findbar.title=Iskanje po dokumentu -findbar_label=Najdi -additional_layers=Dodatne plasti -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Stran {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Stran {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Sličica strani {{page}} -# Find panel button title and messages -find_input.title=Najdi -find_input.placeholder=Najdi v dokumentu … -find_previous.title=Najdi prejšnjo ponovitev iskanega -find_previous_label=Najdi nazaj -find_next.title=Najdi naslednjo ponovitev iskanega -find_next_label=Najdi naprej -find_highlight=Označi vse -find_match_case_label=Razlikuj velike/male črke -find_entire_word_label=Cele besede -find_reached_top=Dosežen začetek dokumenta iz smeri konca -find_reached_bottom=Doseženo konec dokumenta iz smeri začetka -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=Zadetek {{current}} od {{total}} -find_match_count[two]=Zadetek {{current}} od {{total}} -find_match_count[few]=Zadetek {{current}} od {{total}} -find_match_count[many]=Zadetek {{current}} od {{total}} -find_match_count[other]=Zadetek {{current}} od {{total}} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Več kot {{limit}} zadetkov -find_match_count_limit[one]=Več kot {{limit}} zadetek -find_match_count_limit[two]=Več kot {{limit}} zadetka -find_match_count_limit[few]=Več kot {{limit}} zadetki -find_match_count_limit[many]=Več kot {{limit}} zadetkov -find_match_count_limit[other]=Več kot {{limit}} zadetkov -find_not_found=Iskanega ni mogoče najti -# Error panel labels -error_more_info=Več informacij -error_less_info=Manj informacij -error_close=Zapri -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js r{{version}} (graditev: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Sporočilo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Sklad: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Datoteka: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Vrstica: {{line}} -rendering_error=Med pripravljanjem strani je prišlo do napake! -# Predefined zoom values -page_scale_width=Širina strani -page_scale_fit=Prilagodi stran -page_scale_auto=Samodejno -page_scale_actual=Dejanska velikost -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % -# Loading indicator messages -loading_error=Med nalaganjem datoteke PDF je prišlo do napake. -invalid_file_error=Neveljavna ali pokvarjena datoteka PDF. -missing_file_error=Ni datoteke PDF. -unexpected_response_error=Nepričakovan odgovor strežnika. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Opomba vrste {{type}}] -password_label=Vnesite geslo za odpiranje te datoteke PDF. -password_invalid=Neveljavno geslo. Poskusite znova. -password_ok=V redu -password_cancel=Prekliči -printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja. -printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje. -web_fonts_disabled=Spletne pisave so onemogočene: vgradnih pisav za PDF ni mogoče uporabiti. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/son/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/son/viewer.properties deleted file mode 100644 index 819af5816dc1476e047b522be368ac3353217c5e..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/son/viewer.properties +++ /dev/null @@ -1,163 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Moo bisante -previous_label=Bisante -next.title=Jinehere moo -next_label=Jine -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Moo -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} ra -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} ka hun {{pagesCount}}) ra -zoom_out.title=Nakasandi -zoom_out_label=Nakasandi -zoom_in.title=Bebbeerandi -zoom_in_label=Bebbeerandi -zoom.title=Bebbeerandi -presentation_mode.title=Bere cebeyan alhaali -presentation_mode_label=Cebeyan alhaali -open_file.title=Tuku feeri -open_file_label=Feeri -print.title=Kar -print_label=Kar -download.title=Zumandi -download_label=Zumandi -bookmark.title=Sohõ gunarro (bere wala feeri zanfun taaga ra) -bookmark_label=Sohõ gunaroo -# Secondary toolbar and context menu -tools.title=Goyjinawey -tools_label=Goyjinawey -first_page.title=Koy moo jinaa ga -first_page.label=Koy moo jinaa ga -first_page_label=Koy moo jinaa ga -last_page.title=Koy moo koraa ga -last_page.label=Koy moo koraa ga -last_page_label=Koy moo koraa ga -page_rotate_cw.title=Kuubi kanbe guma here -page_rotate_cw.label=Kuubi kanbe guma here -page_rotate_cw_label=Kuubi kanbe guma here -page_rotate_ccw.title=Kuubi kanbe wowa here -page_rotate_ccw.label=Kuubi kanbe wowa here -page_rotate_ccw_label=Kuubi kanbe wowa here -# Document properties dialog box -document_properties.title=Takadda mayrawey… -document_properties_label=Takadda mayrawey… -document_properties_file_name=Tuku maa: -document_properties_file_size=Tuku adadu: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb=KB {{size_kb}} (cebsu-ize {{size_b}}) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb=MB {{size_mb}} (cebsu-ize {{size_b}}) -document_properties_title=Tiiramaa: -document_properties_author=Hantumkaw: -document_properties_subject=Dalil: -document_properties_keywords=Kufalkalimawey: -document_properties_creation_date=Teeyan han: -document_properties_modification_date=Barmayan han: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Teekaw: -document_properties_producer=PDF berandikaw: -document_properties_version=PDF dumi: -document_properties_page_count=Moo hinna: -document_properties_close=Daabu -print_progress_message=Goo ma takaddaa soolu k'a kar se… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Naŋ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Kanjari ceraw zuu -toggle_sidebar_notification.title=Kanjari ceraw-zuu (takaddaa goo nda filla-boŋ/hangandiyaŋ) -toggle_sidebar_label=Kanjari ceraw zuu -document_outline.title=Takaddaa korfur alhaaloo cebe (naagu cee hinka ka haya-izey kul hayandi/kankamandi) -document_outline_label=Takadda filla-boŋ -attachments.title=Hangarey cebe -attachments_label=Hangarey -thumbs.title=Kabeboy biyey cebe -thumbs_label=Kabeboy biyey -findbar.title=Ceeci takaddaa ra -findbar_label=Ceeci -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} moo -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Kabeboy bii {{page}} moo še -# Find panel button title and messages -find_input.title=Ceeci -find_input.placeholder=Ceeci takaddaa ra… -find_previous.title=Kalimaɲaŋoo bangayri bisantaa ceeci -find_previous_label=Bisante -find_next.title=Kalimaɲaŋoo hiino bangayroo ceeci -find_next_label=Jine -find_highlight=Ikul šilbay -find_match_case_label=Harfu-beeriyan hawgay -find_reached_top=A too moŋoo boŋoo, koy jine ka šinitin nda cewoo -find_reached_bottom=A too moɲoo cewoo, koy jine šintioo ga -find_not_found=Kalimaɲaa mana duwandi -# Error panel labels -error_more_info=Alhabar tontoni -error_less_info=Alhabar tontoni -error_close=Daabu -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Alhabar: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Dekeri: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Tuku: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Žeeri: {{line}} -rendering_error=Firka bangay kaŋ moɲoo goo ma willandi. -# Predefined zoom values -page_scale_width=Mooo hayyan -page_scale_fit=Moo sawayan -page_scale_auto=Boŋše azzaati barmayyan -page_scale_actual=Adadu cimi -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Firka bangay kaŋ PDF goo ma zumandi. -invalid_file_error=PDF tuku laala wala laybante. -missing_file_error=PDF tuku kumante. -unexpected_response_error=Manti feršikaw tuuruyan maatante. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt={{type}} maasa-caw] -password_label=Šennikufal dam ka PDF tukoo woo feeri. -password_invalid=Šennikufal laalo. Ceeci koyne taare. -password_ok=Ayyo -password_cancel=Naŋ -printing_not_supported=Yaamar: Karyan ši tee ka timme nda ceecikaa woo. -printing_not_ready=Yaamar: PDF ši zunbu ka timme karyan še. -web_fonts_disabled=Interneti šigirawey kay: ši hin ka goy nda PDF šigira hurantey. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sq/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sq/viewer.properties deleted file mode 100644 index b589847c11717ef080974824f3bf96d03230a92e..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sq/viewer.properties +++ /dev/null @@ -1,225 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Faqja e Mëparshme -previous_label=E mëparshmja -next.title=Faqja Pasuese -next_label=Pasuesja -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Faqe -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=nga {{pagesCount}} gjithsej -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} nga {{pagesCount}}) -zoom_out.title=Zvogëlojeni -zoom_out_label=Zvogëlojeni -zoom_in.title=Zmadhojeni -zoom_in_label=Zmadhojini -zoom.title=Zoom -presentation_mode.title=Kalo te Mënyra Paraqitje -presentation_mode_label=Mënyra Paraqitje -open_file.title=Hapni Kartelë -open_file_label=Hape -print.title=Shtypje -print_label=Shtype -download.title=Shkarkim -download_label=Shkarkoje -bookmark.title=Pamja e tanishme (kopjojeni ose hapeni në dritare të re) -bookmark_label=Pamja e Tanishme -# Secondary toolbar and context menu -tools.title=Mjete -tools_label=Mjete -first_page.title=Kaloni te Faqja e Parë -first_page.label=Kaloni te Faqja e Parë -first_page_label=Kaloni te Faqja e Parë -last_page.title=Kaloni te Faqja e Fundit -last_page.label=Kaloni te Faqja e Fundit -last_page_label=Kaloni te Faqja e Fundit -page_rotate_cw.title=Rrotullojeni Në Kahun Orar -page_rotate_cw.label=Rrotulloje Në Kahun Orar -page_rotate_cw_label=Rrotulloje Në Kahun Orar -page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar -page_rotate_ccw.label=Rrotulloje Në Kahun Kundërorar -page_rotate_ccw_label=Rrotulloje Në Kahun Kundërorar -cursor_text_select_tool.title=Aktivizo Mjet Përzgjedhjeje Teksti -cursor_text_select_tool_label=Mjet Përzgjedhjeje Teksti -cursor_hand_tool.title=Aktivizo Mjetin Dorë -cursor_hand_tool_label=Mjeti Dorë -scroll_vertical.title=Përdor Rrëshqitje Vertikale -scroll_vertical_label=Rrëshqitje Vertikale -scroll_horizontal.title=Përdor Rrëshqitje Horizontale -scroll_horizontal_label=Rrëshqitje Horizontale -scroll_wrapped.title=Përdor Rrëshqitje Me Mbështjellje -scroll_wrapped_label=Rrëshqitje Me Mbështjellje -# Document properties dialog box -document_properties.title=Veti Dokumenti… -document_properties_label=Veti Dokumenti… -document_properties_file_name=Emër kartele: -document_properties_file_size=Madhësi kartele: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajte) -document_properties_title=Titull: -document_properties_author=Autor: -document_properties_subject=Subjekt: -document_properties_keywords=Fjalëkyçe: -document_properties_creation_date=Datë Krijimi: -document_properties_modification_date=Datë Ndryshimi: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Krijues: -document_properties_producer=Prodhues PDF-je: -document_properties_version=Version PDF-je: -document_properties_page_count=Numër Faqesh: -document_properties_page_size=Madhësi Faqeje: -document_properties_page_size_unit_inches=inç -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portret -document_properties_page_size_orientation_landscape=së gjeri -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=Po -document_properties_linearized_no=Jo -document_properties_close=Mbylleni -print_progress_message=Po përgatitet dokumenti për shtypje… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Anuloje -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Shfaqni/Fshihni Anështyllën -toggle_sidebar_notification.title=Shfaqni Anështyllën (dokumenti përmban përvijim/bashkëngjitje) -toggle_sidebar_notification2.title=Hap/Mbyll Anështylë (dokumenti përmban përvijim/nashkëngjitje/shtresa) -toggle_sidebar_label=Shfaq/Fshih Anështyllën -document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët) -document_outline_label=Përvijim Dokumenti -attachments.title=Shfaqni Bashkëngjitje -attachments_label=Bashkëngjitje -layers.title=Shfaq Shtresa (dyklikoni që të rikthehen krejt shtresat në gjendjen e tyre parazgjedhje) -layers_label=Shtresa -thumbs.title=Shfaqni Miniatura -thumbs_label=Miniatura -findbar.title=Gjeni në Dokument -findbar_label=Gjej -additional_layers=Shtresa Shtesë -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Faqja {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Faqja {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniaturë e Faqes {{page}} -# Find panel button title and messages -find_input.title=Gjej -find_input.placeholder=Gjeni në dokument… -find_previous.title=Gjeni hasjen e mëparshme të togfjalëshit -find_previous_label=E mëparshmja -find_next.title=Gjeni hasjen pasuese të togfjalëshit -find_next_label=Pasuesja -find_highlight=Theksoji të tëra -find_match_case_label=Siç është shkruar -find_entire_word_label=Krejt fjalët -find_reached_top=U mbërrit në krye të dokumentit, vazhduar prej fundit -find_reached_bottom=U mbërrit në fund të dokumentit, vazhduar prej kreut -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} nga {{total}} përputhje gjithsej -find_match_count[two]={{current}} nga {{total}} përputhje gjithsej -find_match_count[few]={{current}} nga {{total}} përputhje gjithsej -find_match_count[many]={{current}} nga {{total}} përputhje gjithsej -find_match_count[other]={{current}} nga {{total}} përputhje gjithsej -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Më shumë se {{limit}} përputhje -find_match_count_limit[one]=Më shumë se {{limit}} përputhje -find_match_count_limit[two]=Më shumë se {{limit}} përputhje -find_match_count_limit[few]=Më shumë se {{limit}} përputhje -find_match_count_limit[many]=Më shumë se {{limit}} përputhje -find_match_count_limit[other]=Më shumë se {{limit}} përputhje -find_not_found=Togfjalësh që s’gjendet -# Error panel labels -error_more_info=Më Tepër të Dhëna -error_less_info=Më Pak të Dhëna -error_close=Mbylleni -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesazh: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Kartelë: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rresht: {{line}} -rendering_error=Ndodhi një gabim gjatë riprodhimit të faqes. -# Predefined zoom values -page_scale_width=Gjerësi Faqeje -page_scale_fit=Sa Nxë Faqja -page_scale_auto=Zoom i Vetvetishëm -page_scale_actual=Madhësia Faktike -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së. -invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar. -missing_file_error=Kartelë PDF që mungon. -unexpected_response_error=Përgjigje shërbyesi e papritur. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Nënvizim {{type}}] -password_label=Jepni fjalëkalimin që të hapet kjo kartelë PDF. -password_invalid=Fjalëkalim i pavlefshëm. Ju lutemi, riprovoni. -password_ok=OK -password_cancel=Anuloje -printing_not_supported=Kujdes: Shtypja s’mbulohet plotësisht nga ky shfletues. -printing_not_ready=Kujdes: PDF-ja s’është ngarkuar plotësisht që ta shtypni. -web_fonts_disabled=Shkronjat Web janë të çaktivizuara: s’arrihet të përdoren shkronja të trupëzuara në PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sr/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sr/viewer.properties deleted file mode 100644 index 232151c1f434fc74b05e193e430d4a8c6953b8f8..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sr/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Претходна страница -previous_label=Претходна -next.title=Следећа страница -next_label=Следећа -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Страница -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=од {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} од {{pagesCount}}) -zoom_out.title=Умањи -zoom_out_label=Умањи -zoom_in.title=Увеличај -zoom_in_label=Увеличај -zoom.title=Увеличавање -presentation_mode.title=Промени на приказ у режиму презентације -presentation_mode_label=Режим презентације -open_file.title=Отвори датотеку -open_file_label=Отвори -print.title=Штампај -print_label=Штампај -download.title=Преузми -download_label=Преузми -bookmark.title=Тренутни приказ (копирај или отвори нови прозор) -bookmark_label=Тренутни приказ -# Secondary toolbar and context menu -tools.title=Алатке -tools_label=Алатке -first_page.title=Иди на прву страницу -first_page.label=Иди на прву страницу -first_page_label=Иди на прву страницу -last_page.title=Иди на последњу страницу -last_page.label=Иди на последњу страницу -last_page_label=Иди на последњу страницу -page_rotate_cw.title=Ротирај у смеру казаљке на сату -page_rotate_cw.label=Ротирај у смеру казаљке на сату -page_rotate_cw_label=Ротирај у смеру казаљке на сату -page_rotate_ccw.title=Ротирај у смеру супротном од казаљке на сату -page_rotate_ccw.label=Ротирај у смеру супротном од казаљке на сату -page_rotate_ccw_label=Ротирај у смеру супротном од казаљке на сату -cursor_text_select_tool.title=Омогући алат за селектовање текста -cursor_text_select_tool_label=Алат за селектовање текста -cursor_hand_tool.title=Омогући алат за померање -cursor_hand_tool_label=Алат за померање -scroll_vertical.title=Користи вертикално скроловање -scroll_vertical_label=Вертикално скроловање -scroll_horizontal.title=Користи хоризонтално скроловање -scroll_horizontal_label=Хоризонтално скроловање -scroll_wrapped.title=Користи скроловање по омоту -scroll_wrapped_label=Скроловање по омоту -spread_none.title=Немој спајати ширења страница -spread_none_label=Без распростирања -spread_odd.title=Споји ширења страница које почињу непарним бројем -spread_odd_label=Непарна распростирања -spread_even.title=Споји ширења страница које почињу парним бројем -spread_even_label=Парна распростирања -# Document properties dialog box -document_properties.title=Параметри документа… -document_properties_label=Параметри документа… -document_properties_file_name=Име датотеке: -document_properties_file_size=Величина датотеке: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} B) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} B) -document_properties_title=Наслов: -document_properties_author=Аутор: -document_properties_subject=Тема: -document_properties_keywords=Кључне речи: -document_properties_creation_date=Датум креирања: -document_properties_modification_date=Датум модификације: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Стваралац: -document_properties_producer=PDF произвођач: -document_properties_version=PDF верзија: -document_properties_page_count=Број страница: -document_properties_page_size=Величина странице: -document_properties_page_size_unit_inches=ин -document_properties_page_size_unit_millimeters=мм -document_properties_page_size_orientation_portrait=усправно -document_properties_page_size_orientation_landscape=водоравно -document_properties_page_size_name_a3=А3 -document_properties_page_size_name_a4=А4 -document_properties_page_size_name_letter=Слово -document_properties_page_size_name_legal=Права -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Брз веб приказ: -document_properties_linearized_yes=Да -document_properties_linearized_no=Не -document_properties_close=Затвори -print_progress_message=Припремам документ за штампање… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Откажи -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Прикажи додатну палету -toggle_sidebar_notification.title=Прикажи додатну траку (докуменат садржи оквире/прилоге) -toggle_sidebar_notification2.title=Прикажи/сакриј бочну траку (документ садржи контуру/прилоге/слојеве) -toggle_sidebar_label=Прикажи додатну палету -document_outline.title=Прикажи контуру документа (дупли клик за проширење/скупљање елемената) -document_outline_label=Контура документа -attachments.title=Прикажи прилоге -attachments_label=Прилози -layers.title=Прикажи слојеве (дупли клик за враћање свих слојева у подразумевано стање) -layers_label=Слојеви -thumbs.title=Прикажи сличице -thumbs_label=Сличице -current_outline_item.title=Пронађите тренутни елемент структуре -current_outline_item_label=Тренутна контура -findbar.title=Пронађи у документу -findbar_label=Пронађи -additional_layers=Додатни слојеви -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Страница {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Страница {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Сличица од странице {{page}} -# Find panel button title and messages -find_input.title=Пронађи -find_input.placeholder=Пронађи у документу… -find_previous.title=Пронађи претходну појаву фразе -find_previous_label=Претходна -find_next.title=Пронађи следећу појаву фразе -find_next_label=Следећа -find_highlight=Истакнути све -find_match_case_label=Подударања -find_entire_word_label=Целе речи -find_reached_top=Достигнут врх документа, наставио са дна -find_reached_bottom=Достигнуто дно документа, наставио са врха -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} од {{total}} одговара -find_match_count[two]={{current}} од {{total}} одговара -find_match_count[few]={{current}} од {{total}} одговара -find_match_count[many]={{current}} од {{total}} одговара -find_match_count[other]={{current}} од {{total}} одговара -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Више од {{limit}} одговара -find_match_count_limit[one]=Више од {{limit}} одговара -find_match_count_limit[two]=Више од {{limit}} одговара -find_match_count_limit[few]=Више од {{limit}} одговара -find_match_count_limit[many]=Више од {{limit}} одговара -find_match_count_limit[other]=Више од {{limit}} одговара -find_not_found=Фраза није пронађена -# Error panel labels -error_more_info=Више информација -error_less_info=Мање информација -error_close=Затвори -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Порука: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стек: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Датотека: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Линија: {{line}} -rendering_error=Дошло је до грешке приликом рендеровања ове странице. -# Predefined zoom values -page_scale_width=Ширина странице -page_scale_fit=Прилагоди страницу -page_scale_auto=Аутоматско увеличавање -page_scale_actual=Стварна величина -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Дошло је до грешке приликом учитавања PDF-а. -invalid_file_error=PDF датотека је оштећена или је неисправна. -missing_file_error=PDF датотека није пронађена. -unexpected_response_error=Неочекиван одговор од сервера. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} коментар] -password_label=Унесите лозинку да бисте отворили овај PDF докуменат. -password_invalid=Неисправна лозинка. Покушајте поново. -password_ok=У реду -password_cancel=Откажи -printing_not_supported=Упозорење: Штампање није у потпуности подржано у овом прегледачу. -printing_not_ready=Упозорење: PDF није у потпуности учитан за штампу. -web_fonts_disabled=Веб фонтови су онемогућени: не могу користити уграђене PDF фонтове. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sv-SE/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sv-SE/viewer.properties deleted file mode 100644 index 17025591b0c058951bfb6ff3bf1977414ab07e2a..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/sv-SE/viewer.properties +++ /dev/null @@ -1,235 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Föregående sida -previous_label=Föregående -next.title=Nästa sida -next_label=Nästa -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Sida -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=av {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} av {{pagesCount}}) -zoom_out.title=Zooma ut -zoom_out_label=Zooma ut -zoom_in.title=Zooma in -zoom_in_label=Zooma in -zoom.title=Zoom -presentation_mode.title=Byt till presentationsläge -presentation_mode_label=Presentationsläge -open_file.title=Öppna fil -open_file_label=Öppna -print.title=Skriv ut -print_label=Skriv ut -download.title=Hämta -download_label=Hämta -bookmark.title=Aktuell vy (kopiera eller öppna i nytt fönster) -bookmark_label=Aktuell vy -# Secondary toolbar and context menu -tools.title=Verktyg -tools_label=Verktyg -first_page.title=Gå till första sidan -first_page.label=Gå till första sidan -first_page_label=Gå till första sidan -last_page.title=Gå till sista sidan -last_page.label=Gå till sista sidan -last_page_label=Gå till sista sidan -page_rotate_cw.title=Rotera medurs -page_rotate_cw.label=Rotera medurs -page_rotate_cw_label=Rotera medurs -page_rotate_ccw.title=Rotera moturs -page_rotate_ccw.label=Rotera moturs -page_rotate_ccw_label=Rotera moturs -cursor_text_select_tool.title=Aktivera textmarkeringsverktyg -cursor_text_select_tool_label=Textmarkeringsverktyg -cursor_hand_tool.title=Aktivera handverktyg -cursor_hand_tool_label=Handverktyg -scroll_vertical.title=Använd vertikal rullning -scroll_vertical_label=Vertikal rullning -scroll_horizontal.title=Använd horisontell rullning -scroll_horizontal_label=Horisontell rullning -scroll_wrapped.title=Använd överlappande rullning -scroll_wrapped_label=Överlappande rullning -spread_none.title=Visa enkelsidor -spread_none_label=Enkelsidor -spread_odd.title=Visa uppslag med olika sidnummer till vänster -spread_odd_label=Uppslag med framsida -spread_even.title=Visa uppslag med lika sidnummer till vänster -spread_even_label=Uppslag utan framsida -# Document properties dialog box -document_properties.title=Dokumentegenskaper… -document_properties_label=Dokumentegenskaper… -document_properties_file_name=Filnamn: -document_properties_file_size=Filstorlek: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Titel: -document_properties_author=Författare: -document_properties_subject=Ämne: -document_properties_keywords=Nyckelord: -document_properties_creation_date=Skapades: -document_properties_modification_date=Ändrades: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Skapare: -document_properties_producer=PDF-producent: -document_properties_version=PDF-version: -document_properties_page_count=Sidantal: -document_properties_page_size=Pappersstorlek: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=porträtt -document_properties_page_size_orientation_landscape=landskap -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Snabb webbvisning: -document_properties_linearized_yes=Ja -document_properties_linearized_no=Nej -document_properties_close=Stäng -print_progress_message=Förbereder sidor för utskrift… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Avbryt -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Visa/dölj sidofält -toggle_sidebar_notification.title=Visa/dölj sidofält (dokument innehåller översikt/bilagor) -toggle_sidebar_notification2.title=Växla sidofält (dokumentet innehåller dokumentstruktur/bilagor/lager) -toggle_sidebar_label=Visa/dölj sidofält -document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt) -document_outline_label=Dokumentöversikt -attachments.title=Visa Bilagor -attachments_label=Bilagor -layers.title=Visa lager (dubbelklicka för att återställa alla lager till standardläge) -layers_label=Lager -thumbs.title=Visa miniatyrer -thumbs_label=Miniatyrer -current_outline_item.title=Hitta aktuellt dispositionsobjekt -current_outline_item_label=Aktuellt dispositionsobjekt -findbar.title=Sök i dokument -findbar_label=Sök -additional_layers=Ytterligare lager -# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. -page_landmark=Sida {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Sida {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatyr av sida {{page}} -# Find panel button title and messages -find_input.title=Sök -find_input.placeholder=Sök i dokument… -find_previous.title=Hitta föregående förekomst av frasen -find_previous_label=Föregående -find_next.title=Hitta nästa förekomst av frasen -find_next_label=Nästa -find_highlight=Markera alla -find_match_case_label=Matcha versal/gemen -find_entire_word_label=Hela ord -find_reached_top=Nådde början av dokumentet, började från slutet -find_reached_bottom=Nådde slutet på dokumentet, började från början -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} av {{total}} träff -find_match_count[two]={{current}} av {{total}} träffar -find_match_count[few]={{current}} av {{total}} träffar -find_match_count[many]={{current}} av {{total}} träffar -find_match_count[other]={{current}} av {{total}} träffar -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Mer än {{limit}} träffar -find_match_count_limit[one]=Mer än {{limit}} träff -find_match_count_limit[two]=Mer än {{limit}} träffar -find_match_count_limit[few]=Mer än {{limit}} träffar -find_match_count_limit[many]=Mer än {{limit}} träffar -find_match_count_limit[other]=Mer än {{limit}} träffar -find_not_found=Frasen hittades inte -# Error panel labels -error_more_info=Mer information -error_less_info=Mindre information -error_close=Stäng -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Meddelande: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rad: {{line}} -rendering_error=Ett fel uppstod vid visning av sidan. -# Predefined zoom values -page_scale_width=Sidbredd -page_scale_fit=Anpassa sida -page_scale_auto=Automatisk zoom -page_scale_actual=Verklig storlek -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading=Laddar… -loading_error=Ett fel uppstod vid laddning av PDF-filen. -invalid_file_error=Ogiltig eller korrupt PDF-fil. -missing_file_error=Saknad PDF-fil. -unexpected_response_error=Oväntat svar från servern. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}} {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-annotering] -password_label=Skriv in lösenordet för att öppna PDF-filen. -password_invalid=Ogiltigt lösenord. Försök igen. -password_ok=OK -password_cancel=Avbryt -printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren. -printing_not_ready=Varning: PDF:en är inte klar för utskrift. -web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/szl/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/szl/viewer.properties deleted file mode 100644 index 4015744f70f02821aade25f2f65c6d7681abae31..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/szl/viewer.properties +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Piyrwyjszo strōna -previous_label=Piyrwyjszo -next.title=Nastympno strōna -next_label=Dalij -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Strōna -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=ze {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} ze {{pagesCount}}) -zoom_out.title=Zmyńsz -zoom_out_label=Zmyńsz -zoom_in.title=Zwiynksz -zoom_in_label=Zwiynksz -zoom.title=Srogość -presentation_mode.title=Przełōncz na tryb prezyntacyje -presentation_mode_label=Tryb prezyntacyje -open_file.title=Ôdewrzij zbiōr -open_file_label=Ôdewrzij -print.title=Durkuj -print_label=Durkuj -download.title=Pobier -download_label=Pobier -bookmark.title=Aktualny widok (kopiuj abo ôdewrzij w nowym ôknie) -bookmark_label=Aktualny widok -# Secondary toolbar and context menu -tools.title=Noczynia -tools_label=Noczynia -first_page.title=Idź ku piyrszyj strōnie -first_page.label=Idź ku piyrszyj strōnie -first_page_label=Idź ku piyrszyj strōnie -last_page.title=Idź ku ôstatnij strōnie -last_page.label=Idź ku ôstatnij strōnie -last_page_label=Idź ku ôstatnij strōnie -page_rotate_cw.title=Zwyrtnij w prawo -page_rotate_cw.label=Zwyrtnij w prawo -page_rotate_cw_label=Zwyrtnij w prawo -page_rotate_ccw.title=Zwyrtnij w lewo -page_rotate_ccw.label=Zwyrtnij w lewo -page_rotate_ccw_label=Zwyrtnij w lewo -cursor_text_select_tool.title=Załōncz noczynie ôbiyranio tekstu -cursor_text_select_tool_label=Noczynie ôbiyranio tekstu -cursor_hand_tool.title=Załōncz noczynie rōnczka -cursor_hand_tool_label=Noczynie rōnczka -scroll_vertical.title=Używej piōnowego przewijanio -scroll_vertical_label=Piōnowe przewijanie -scroll_horizontal.title=Używej poziōmego przewijanio -scroll_horizontal_label=Poziōme przewijanie -scroll_wrapped.title=Używej szichtowego przewijanio -scroll_wrapped_label=Szichtowe przewijanie -spread_none.title=Niy dowej strōn w widoku po dwie -spread_none_label=Po jednyj strōnie -spread_odd.title=Dej strōny po dwie: niyparzysto i parzysto -spread_odd_label=Niyparzysto i parzysto -spread_even.title=Dej strōny po dwie: parzysto i niyparzysto -spread_even_label=Parzysto i niyparzysto -# Document properties dialog box -document_properties.title=Włosności dokumyntu… -document_properties_label=Włosności dokumyntu… -document_properties_file_name=Miano zbioru: -document_properties_file_size=Srogość zbioru: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} B) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} B) -document_properties_title=Tytuł: -document_properties_author=Autōr: -document_properties_subject=Tymat: -document_properties_keywords=Kluczowe słowa: -document_properties_creation_date=Data zrychtowanio: -document_properties_modification_date=Data zmiany: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Zrychtowane ôd: -document_properties_producer=PDF ôd: -document_properties_version=Wersyjo PDF: -document_properties_page_count=Wielość strōn: -document_properties_page_size=Srogość strōny: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=piōnowo -document_properties_page_size_orientation_landscape=poziōmo -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Gibki necowy podglōnd: -document_properties_linearized_yes=Ja -document_properties_linearized_no=Niy -document_properties_close=Zawrzij -print_progress_message=Rychtowanie dokumyntu do durku… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Pociep -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Przełōncz posek na rancie -toggle_sidebar_notification.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki) -toggle_sidebar_notification2.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki/warstwy) -toggle_sidebar_label=Przełōncz posek na rancie -document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynta) -document_outline_label=Struktura dokumyntu -attachments.title=Pokoż przidowki -attachments_label=Przidowki -layers.title=Pokoż warstwy (tuplowane klikniyncie resetuje wszyskie warstwy do bazowego stanu) -layers_label=Warstwy -thumbs.title=Pokoż miniatury -thumbs_label=Miniatury -findbar.title=Znojdź w dokumyncie -findbar_label=Znojdź -additional_layers=Nadbytnie warstwy -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Strōna {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strōna {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura strōny {{page}} -# Find panel button title and messages -find_input.title=Znojdź -find_input.placeholder=Znojdź w dokumyncie… -find_previous.title=Znojdź piyrwyjsze pokozanie sie tyj frazy -find_previous_label=Piyrwyjszo -find_next.title=Znojdź nastympne pokozanie sie tyj frazy -find_next_label=Dalij -find_highlight=Ôbznocz wszysko -find_match_case_label=Poznowej srogość liter -find_entire_word_label=Cołke słowa -find_reached_top=Doszło do samego wiyrchu strōny, dalij ôd spodku -find_reached_bottom=Doszło do samego spodku strōny, dalij ôd wiyrchu -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} ze {{total}}, co pasujōm -find_match_count[two]={{current}} ze {{total}}, co pasujōm -find_match_count[few]={{current}} ze {{total}}, co pasujōm -find_match_count[many]={{current}} ze {{total}}, co pasujōm -find_match_count[other]={{current}} ze {{total}}, co pasujōm -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(total) ]} -find_match_count_limit[zero]=Wiyncyj jak {{limit}}, co pasujōm -find_match_count_limit[one]=Wiyncyj jak {{limit}}, co pasuje -find_match_count_limit[two]=Wiyncyj jak {{limit}}, co pasujōm -find_match_count_limit[few]=Wiyncyj jak {{limit}}, co pasujōm -find_match_count_limit[many]=Wiyncyj jak {{limit}}, co pasujōm -find_match_count_limit[other]=Wiyncyj jak {{limit}}, co pasujōm -find_not_found=Fraza niy ma znodniynto -# Error panel labels -error_more_info=Wiyncyj informacyji -error_less_info=Mynij informacyji -error_close=Zawrzij -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Wiadōmość: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Sztapel: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Zbiōr: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linijo: {{line}} -rendering_error=Przi renderowaniu strōny pokozoł sie feler. -# Predefined zoom values -page_scale_width=Szyrzka strōny -page_scale_fit=Napasowanie strōny -page_scale_auto=Autōmatyczno srogość -page_scale_actual=Aktualno srogość -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Przi ladowaniu PDFa pokozoł sie feler. -invalid_file_error=Zły abo felerny zbiōr PDF. -missing_file_error=Chybio zbioru PDF. -unexpected_response_error=Niyôczekowano ôdpowiydź serwera. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotacyjo typu {{type}}] -password_label=Wkludź hasło, coby ôdewrzić tyn zbiōr PDF. -password_invalid=Hasło je złe. Sprōbuj jeszcze roz. -password_ok=OK -password_cancel=Pociep -printing_not_supported=Pozōr: Ta przeglōndarka niy cołkiym ôbsuguje durk. -printing_not_ready=Pozōr: Tyn PDF niy ma za tela zaladowany do durku. -web_fonts_disabled=Necowe fōnty sōm zastawiōne: niy idzie użyć wkludzōnych fōntōw PDF. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ta/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ta/viewer.properties deleted file mode 100644 index c19cc142320b7304c693505b828c31438c2c4298..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ta/viewer.properties +++ /dev/null @@ -1,184 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=முந்தைய பக்கம் -previous_label=முந்தையது -next.title=அடுத்த பக்கம் -next_label=அடுத்து -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=பக்கம் -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} இல் -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages={{pagesCount}}) இல் ({{pageNumber}} -zoom_out.title=சிறிதாக்கு -zoom_out_label=சிறிதாக்கு -zoom_in.title=பெரிதாக்கு -zoom_in_label=பெரிதாக்கு -zoom.title=பெரிதாக்கு -presentation_mode.title=விளக்ககாட்சி பயன்முறைக்கு மாறு -presentation_mode_label=விளக்ககாட்சி பயன்முறை -open_file.title=கோப்பினை திற -open_file_label=திற -print.title=அச்சிடு -print_label=அச்சிடு -download.title=பதிவிறக்கு -download_label=பதிவிறக்கு -bookmark.title=தற்போதைய காட்சி (புதிய சாளரத்திற்கு நகலெடு அல்லது புதிய சாளரத்தில் திற) -bookmark_label=தற்போதைய காட்சி -# Secondary toolbar and context menu -tools.title=கருவிகள் -tools_label=கருவிகள் -first_page.title=முதல் பக்கத்திற்கு செல்லவும் -first_page.label=முதல் பக்கத்திற்கு செல்லவும் -first_page_label=முதல் பக்கத்திற்கு செல்லவும் -last_page.title=கடைசி பக்கத்திற்கு செல்லவும் -last_page.label=கடைசி பக்கத்திற்கு செல்லவும் -last_page_label=கடைசி பக்கத்திற்கு செல்லவும் -page_rotate_cw.title=வலஞ்சுழியாக சுழற்று -page_rotate_cw.label=வலஞ்சுழியாக சுழற்று -page_rotate_cw_label=வலஞ்சுழியாக சுழற்று -page_rotate_ccw.title=இடஞ்சுழியாக சுழற்று -page_rotate_ccw.label=இடஞ்சுழியாக சுழற்று -page_rotate_ccw_label=இடஞ்சுழியாக சுழற்று -cursor_text_select_tool.title=உரைத் தெரிவு கருவியைச் செயல்படுத்து -cursor_text_select_tool_label=உரைத் தெரிவு கருவி -cursor_hand_tool.title=கைக் கருவிக்ச் செயற்படுத்து -cursor_hand_tool_label=கைக்குருவி -# Document properties dialog box -document_properties.title=ஆவண பண்புகள்... -document_properties_label=ஆவண பண்புகள்... -document_properties_file_name=கோப்பு பெயர்: -document_properties_file_size=கோப்பின் அளவு: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} கிபை ({{size_b}} பைட்டுகள்) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} மெபை ({{size_b}} பைட்டுகள்) -document_properties_title=தலைப்பு: -document_properties_author=எழுதியவர் -document_properties_subject=பொருள்: -document_properties_keywords=முக்கிய வார்த்தைகள்: -document_properties_creation_date=படைத்த தேதி : -document_properties_modification_date=திருத்திய தேதி: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=உருவாக்குபவர்: -document_properties_producer=பிடிஎஃப் தயாரிப்பாளர்: -document_properties_version=PDF பதிப்பு: -document_properties_page_count=பக்க எண்ணிக்கை: -document_properties_page_size=பக்க அளவு: -document_properties_page_size_unit_inches=இதில் -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=நிலைபதிப்பு -document_properties_page_size_orientation_landscape=நிலைபரப்பு -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=கடிதம் -document_properties_page_size_name_legal=சட்டபூர்வ -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -document_properties_close=மூடுக -print_progress_message=அச்சிடுவதற்கான ஆவணம் தயாராகிறது... -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=ரத்து -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=பக்கப் பட்டியை நிலைமாற்று -toggle_sidebar_notification.title=பக்கப்பட்டையை நிலைமாற்று (வெளிக்கோடு/இணைப்புகளை ஆவணம் கொண்டுள்ளது) -toggle_sidebar_label=பக்கப் பட்டியை நிலைமாற்று -document_outline.title=ஆவண அடக்கத்தைக் காட்டு (இருமுறைச் சொடுக்கி அனைத்து உறுப்பிடிகளையும் விரி/சேர்) -document_outline_label=ஆவண வெளிவரை -attachments.title=இணைப்புகளை காண்பி -attachments_label=இணைப்புகள் -thumbs.title=சிறுபடங்களைக் காண்பி -thumbs_label=சிறுபடங்கள் -findbar.title=ஆவணத்தில் கண்டறி -findbar_label=தேடு -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=பக்கம் {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=பக்கத்தின் சிறுபடம் {{page}} -# Find panel button title and messages -find_input.title=கண்டுபிடி -find_input.placeholder=ஆவணத்தில் கண்டறி… -find_previous.title=இந்த சொற்றொடரின் முந்தைய நிகழ்வை தேடு -find_previous_label=முந்தையது -find_next.title=இந்த சொற்றொடரின் அடுத்த நிகழ்வை தேடு -find_next_label=அடுத்து -find_highlight=அனைத்தையும் தனிப்படுத்து -find_match_case_label=பேரெழுத்தாக்கத்தை உணர் -find_reached_top=ஆவணத்தின் மேல் பகுதியை அடைந்தது, அடிப்பக்கத்திலிருந்து தொடர்ந்தது -find_reached_bottom=ஆவணத்தின் முடிவை அடைந்தது, மேலிருந்து தொடர்ந்தது -find_not_found=சொற்றொடர் காணவில்லை -# Error panel labels -error_more_info=கூடுதல் தகவல் -error_less_info=குறைந்த தகவல் -error_close=மூடுக -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=செய்தி: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ஸ்டேக்: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=கோப்பு: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=வரி: {{line}} -rendering_error=இந்தப் பக்கத்தை காட்சிப்படுத்தும் போது ஒரு பிழை ஏற்பட்டது. -# Predefined zoom values -page_scale_width=பக்க அகலம் -page_scale_fit=பக்கப் பொருத்தம் -page_scale_auto=தானியக்க பெரிதாக்கல் -page_scale_actual=உண்மையான அளவு -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது. -invalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு. -missing_file_error=PDF கோப்பு காணவில்லை. -unexpected_response_error=சேவகன் பதில் எதிர்பாரதது. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} விளக்கம்] -password_label=இந்த PDF கோப்பை திறக்க கடவுச்சொல்லை உள்ளிடவும். -password_invalid=செல்லுபடியாகாத கடவுச்சொல், தயை செய்து மீண்டும் முயற்சி செய்க. -password_ok=சரி -password_cancel=ரத்து -printing_not_supported=எச்சரிக்கை: இந்த உலாவி அச்சிடுதலை முழுமையாக ஆதரிக்கவில்லை. -printing_not_ready=எச்சரிக்கை: PDF அச்சிட முழுவதுமாக ஏற்றப்படவில்லை. -web_fonts_disabled=வலை எழுத்துருக்கள் முடக்கப்பட்டுள்ளன: உட்பொதிக்கப்பட்ட PDF எழுத்துருக்களைப் பயன்படுத்த முடியவில்லை. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/te/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/te/viewer.properties deleted file mode 100644 index 47d4f7a91add35c31c7d16ac9345cc0124cf73af..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/te/viewer.properties +++ /dev/null @@ -1,206 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=మునుపటి పేజీ -previous_label=క్రితం -next.title=తరువాత పేజీ -next_label=తరువాత -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=పేజీ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=మొత్తం {{pagesCount}} లో -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=(మొత్తం {{pagesCount}} లో {{pageNumber}}వది) -zoom_out.title=జూమ్ తగ్గించు -zoom_out_label=జూమ్ తగ్గించు -zoom_in.title=జూమ్ చేయి -zoom_in_label=జూమ్ చేయి -zoom.title=జూమ్ -presentation_mode.title=ప్రదర్శనా రీతికి మారు -presentation_mode_label=ప్రదర్శనా రీతి -open_file.title=ఫైల్ తెరువు -open_file_label=తెరువు -print.title=ముద్రించు -print_label=ముద్రించు -download.title=దింపుకోళ్ళు -download_label=దింపుకోళ్ళు -bookmark.title=ప్రస్తుత దర్శనం (కాపీ చేయి లేదా కొత్త విండోలో తెరువు) -bookmark_label=ప్రస్తుత దర్శనం -# Secondary toolbar and context menu -tools.title=పనిముట్లు -tools_label=పనిముట్లు -first_page.title=మొదటి పేజీకి వెళ్ళు -first_page.label=మొదటి పేజీకి వెళ్ళు -first_page_label=మొదటి పేజీకి వెళ్ళు -last_page.title=చివరి పేజీకి వెళ్ళు -last_page.label=చివరి పేజీకి వెళ్ళు -last_page_label=చివరి పేజీకి వెళ్ళు -page_rotate_cw.title=సవ్యదిశలో తిప్పు -page_rotate_cw.label=సవ్యదిశలో తిప్పు -page_rotate_cw_label=సవ్యదిశలో తిప్పు -page_rotate_ccw.title=అపసవ్యదిశలో తిప్పు -page_rotate_ccw.label=అపసవ్యదిశలో తిప్పు -page_rotate_ccw_label=అపసవ్యదిశలో తిప్పు -cursor_text_select_tool.title=టెక్స్ట్ ఎంపిక సాధనాన్ని ప్రారంభించండి -cursor_text_select_tool_label=టెక్స్ట్ ఎంపిక సాధనం -cursor_hand_tool.title=చేతి సాధనం చేతనించు -cursor_hand_tool_label=చేతి సాధనం -scroll_vertical_label=నిలువు స్క్రోలింగు -# Document properties dialog box -document_properties.title=పత్రము లక్షణాలు... -document_properties_label=పత్రము లక్షణాలు... -document_properties_file_name=దస్త్రం పేరు: -document_properties_file_size=దస్త్రం పరిమాణం: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=శీర్షిక: -document_properties_author=మూలకర్త: -document_properties_subject=విషయం: -document_properties_keywords=కీ పదాలు: -document_properties_creation_date=సృష్టించిన తేదీ: -document_properties_modification_date=సవరించిన తేదీ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=సృష్టికర్త: -document_properties_producer=PDF ఉత్పాదకి: -document_properties_version=PDF వర్షన్: -document_properties_page_count=పేజీల సంఖ్య: -document_properties_page_size=కాగితం పరిమాణం: -document_properties_page_size_unit_inches=లో -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=నిలువుచిత్రం -document_properties_page_size_orientation_landscape=అడ్డచిత్రం -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=లేఖ -document_properties_page_size_name_legal=చట్టపరమైన -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized_yes=అవును -document_properties_linearized_no=కాదు -document_properties_close=మూసివేయి -print_progress_message=ముద్రించడానికి పత్రము సిద్ధమవుతున్నది… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=రద్దుచేయి -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=పక్కపట్టీ మార్చు -toggle_sidebar_label=పక్కపట్టీ మార్చు -document_outline.title=పత్రము రూపము చూపించు (డబుల్ క్లిక్ చేసి అన్ని అంశాలను విస్తరించు/కూల్చు) -document_outline_label=పత్రము అవుట్‌లైన్ -attachments.title=అనుబంధాలు చూపు -attachments_label=అనుబంధాలు -layers_label=పొరలు -thumbs.title=థంబ్‌నైల్స్ చూపు -thumbs_label=థంబ్‌నైల్స్ -findbar.title=పత్రములో కనుగొనుము -findbar_label=కనుగొను -additional_layers=అదనపు పొరలు -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=పేజి {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=పేజీ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} పేజీ నఖచిత్రం -# Find panel button title and messages -find_input.title=కనుగొను -find_input.placeholder=పత్రములో కనుగొను… -find_previous.title=పదం యొక్క ముందు సంభవాన్ని కనుగొను -find_previous_label=మునుపటి -find_next.title=పదం యొక్క తర్వాతి సంభవాన్ని కనుగొను -find_next_label=తరువాత -find_highlight=అన్నిటిని ఉద్దీపనం చేయుము -find_match_case_label=అక్షరముల తేడాతో పోల్చు -find_entire_word_label=పూర్తి పదాలు -find_reached_top=పేజీ పైకి చేరుకున్నది, క్రింది నుండి కొనసాగించండి -find_reached_bottom=పేజీ చివరకు చేరుకున్నది, పైనుండి కొనసాగించండి -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_not_found=పదబంధం కనబడలేదు -# Error panel labels -error_more_info=మరింత సమాచారం -error_less_info=తక్కువ సమాచారం -error_close=మూసివేయి -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=సందేశం: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=స్టాక్: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ఫైలు: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=వరుస: {{line}} -rendering_error=పేజీను రెండర్ చేయుటలో ఒక దోషం ఎదురైంది. -# Predefined zoom values -page_scale_width=పేజీ వెడల్పు -page_scale_fit=పేజీ అమర్పు -page_scale_auto=స్వయంచాలక జూమ్ -page_scale_actual=యథార్ధ పరిమాణం -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది. -invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు. -missing_file_error=దొరకని PDF ఫైలు. -unexpected_response_error=అనుకోని సర్వర్ స్పందన. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} టీకా] -password_label=ఈ PDF ఫైల్ తెరుచుటకు సంకేతపదం ప్రవేశపెట్టుము. -password_invalid=సంకేతపదం చెల్లదు. దయచేసి మళ్ళీ ప్రయత్నించండి. -password_ok=సరే -password_cancel=రద్దుచేయి -printing_not_supported=హెచ్చరిక: ఈ విహారిణి చేత ముద్రణ పూర్తిగా తోడ్పాటు లేదు. -printing_not_ready=హెచ్చరిక: ముద్రణ కొరకు ఈ PDF పూర్తిగా లోడవలేదు. -web_fonts_disabled=వెబ్ ఫాంట్లు అచేతనించబడెను: ఎంబెడెడ్ PDF ఫాంట్లు ఉపయోగించలేక పోయింది. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/th/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/th/viewer.properties deleted file mode 100644 index c8eea38e50afd21e789e7b43ca5c8b9ab393c7e4..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/th/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=หน้าก่อนหน้า -previous_label=ก่อนหน้า -next.title=หน้าถัดไป -next_label=ถัดไป -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=หน้า -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=จาก {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} จาก {{pagesCount}}) -zoom_out.title=ซูมออก -zoom_out_label=ซูมออก -zoom_in.title=ซูมเข้า -zoom_in_label=ซูมเข้า -zoom.title=ซูม -presentation_mode.title=สลับเป็นโหมดการนำเสนอ -presentation_mode_label=โหมดการนำเสนอ -open_file.title=เปิดไฟล์ -open_file_label=เปิด -print.title=พิมพ์ -print_label=พิมพ์ -download.title=ดาวน์โหลด -download_label=ดาวน์โหลด -bookmark.title=มุมมองปัจจุบัน (คัดลอกหรือเปิดในหน้าต่างใหม่) -bookmark_label=มุมมองปัจจุบัน -# Secondary toolbar and context menu -tools.title=เครื่องมือ -tools_label=เครื่องมือ -first_page.title=ไปยังหน้าแรก -first_page.label=ไปยังหน้าแรก -first_page_label=ไปยังหน้าแรก -last_page.title=ไปยังหน้าสุดท้าย -last_page.label=ไปยังหน้าสุดท้าย -last_page_label=ไปยังหน้าสุดท้าย -page_rotate_cw.title=หมุนตามเข็มนาฬิกา -page_rotate_cw.label=หมุนตามเข็มนาฬิกา -page_rotate_cw_label=หมุนตามเข็มนาฬิกา -page_rotate_ccw.title=หมุนทวนเข็มนาฬิกา -page_rotate_ccw.label=หมุนทวนเข็มนาฬิกา -page_rotate_ccw_label=หมุนทวนเข็มนาฬิกา -cursor_text_select_tool.title=เปิดใช้งานเครื่องมือการเลือกข้อความ -cursor_text_select_tool_label=เครื่องมือการเลือกข้อความ -cursor_hand_tool.title=เปิดใช้งานเครื่องมือมือ -cursor_hand_tool_label=เครื่องมือมือ -scroll_vertical.title=ใช้การเลื่อนแนวตั้ง -scroll_vertical_label=การเลื่อนแนวตั้ง -scroll_horizontal.title=ใช้การเลื่อนแนวนอน -scroll_horizontal_label=การเลื่อนแนวนอน -scroll_wrapped.title=ใช้การเลื่อนแบบคลุม -scroll_wrapped_label=เลื่อนแบบคลุม -spread_none.title=ไม่ต้องรวมการกระจายหน้า -spread_none_label=ไม่กระจาย -spread_odd.title=รวมการกระจายหน้าเริ่มจากหน้าคี่ -spread_odd_label=กระจายอย่างเหลือเศษ -spread_even.title=รวมการกระจายหน้าเริ่มจากหน้าคู่ -spread_even_label=กระจายอย่างเท่าเทียม -# Document properties dialog box -document_properties.title=คุณสมบัติเอกสาร… -document_properties_label=คุณสมบัติเอกสาร… -document_properties_file_name=ชื่อไฟล์: -document_properties_file_size=ขนาดไฟล์: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} ไบต์) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} ไบต์) -document_properties_title=ชื่อเรื่อง: -document_properties_author=ผู้สร้าง: -document_properties_subject=ชื่อเรื่อง: -document_properties_keywords=คำสำคัญ: -document_properties_creation_date=วันที่สร้าง: -document_properties_modification_date=วันที่แก้ไข: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ผู้สร้าง: -document_properties_producer=ผู้ผลิต PDF: -document_properties_version=รุ่น PDF: -document_properties_page_count=จำนวนหน้า: -document_properties_page_size=ขนาดหน้า: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=แนวตั้ง -document_properties_page_size_orientation_landscape=แนวนอน -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=จดหมาย -document_properties_page_size_name_legal=ข้อกฎหมาย -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=มุมมองเว็บแบบรวดเร็ว: -document_properties_linearized_yes=ใช่ -document_properties_linearized_no=ไม่ -document_properties_close=ปิด -print_progress_message=กำลังเตรียมเอกสารสำหรับการพิมพ์… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=ยกเลิก -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=เปิด/ปิดแถบข้าง -toggle_sidebar_notification.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ) -toggle_sidebar_notification2.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ/เลเยอร์) -toggle_sidebar_label=เปิด/ปิดแถบข้าง -document_outline.title=แสดงเค้าร่างเอกสาร (คลิกสองครั้งเพื่อขยาย/ยุบรายการทั้งหมด) -document_outline_label=เค้าร่างเอกสาร -attachments.title=แสดงไฟล์แนบ -attachments_label=ไฟล์แนบ -layers.title=แสดงเลเยอร์ (คลิกสองครั้งเพื่อรีเซ็ตเลเยอร์ทั้งหมดเป็นสถานะเริ่มต้น) -layers_label=เลเยอร์ -thumbs.title=แสดงภาพขนาดย่อ -thumbs_label=ภาพขนาดย่อ -current_outline_item.title=ค้นหารายการเค้าร่างปัจจุบัน -current_outline_item_label=รายการเค้าร่างปัจจุบัน -findbar.title=ค้นหาในเอกสาร -findbar_label=ค้นหา -additional_layers=เลเยอร์เพิ่มเติม -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=หน้า {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=หน้า {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ภาพขนาดย่อของหน้า {{page}} -# Find panel button title and messages -find_input.title=ค้นหา -find_input.placeholder=ค้นหาในเอกสาร… -find_previous.title=หาตำแหน่งก่อนหน้าของวลี -find_previous_label=ก่อนหน้า -find_next.title=หาตำแหน่งถัดไปของวลี -find_next_label=ถัดไป -find_highlight=เน้นสีทั้งหมด -find_match_case_label=ตัวพิมพ์ใหญ่เล็กตรงกัน -find_entire_word_label=ทั้งคำ -find_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจากด้านล่าง -find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจากด้านบน -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} จาก {{total}} ที่ตรงกัน -find_match_count[two]={{current}} จาก {{total}} ที่ตรงกัน -find_match_count[few]={{current}} จาก {{total}} ที่ตรงกัน -find_match_count[many]={{current}} จาก {{total}} ที่ตรงกัน -find_match_count[other]={{current}} จาก {{total}} ที่ตรงกัน -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=มากกว่า {{limit}} ที่ตรงกัน -find_match_count_limit[one]=มากกว่า {{limit}} ที่ตรงกัน -find_match_count_limit[two]=มากกว่า {{limit}} ที่ตรงกัน -find_match_count_limit[few]=มากกว่า {{limit}} ที่ตรงกัน -find_match_count_limit[many]=มากกว่า {{limit}} ที่ตรงกัน -find_match_count_limit[other]=มากกว่า {{limit}} ที่ตรงกัน -find_not_found=ไม่พบวลี -# Error panel labels -error_more_info=ข้อมูลเพิ่มเติม -error_less_info=ข้อมูลน้อยลง -error_close=ปิด -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ข้อความ: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=สแตก: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ไฟล์: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=บรรทัด: {{line}} -rendering_error=เกิดข้อผิดพลาดขณะเรนเดอร์หน้า -# Predefined zoom values -page_scale_width=ความกว้างหน้า -page_scale_fit=พอดีหน้า -page_scale_auto=ซูมอัตโนมัติ -page_scale_actual=ขนาดจริง -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=เกิดข้อผิดพลาดขณะโหลด PDF -invalid_file_error=ไฟล์ PDF ไม่ถูกต้องหรือเสียหาย -missing_file_error=ไฟล์ PDF หายไป -unexpected_response_error=การตอบสนองของเซิร์ฟเวอร์ที่ไม่คาดคิด -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[คำอธิบายประกอบ {{type}}] -password_label=ป้อนรหัสผ่านเพื่อเปิดไฟล์ PDF นี้ -password_invalid=รหัสผ่านไม่ถูกต้อง โปรดลองอีกครั้ง -password_ok=ตกลง -password_cancel=ยกเลิก -printing_not_supported=คำเตือน: เบราว์เซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่ -printing_not_ready=คำเตือน: PDF ไม่ได้รับการโหลดอย่างเต็มที่สำหรับการพิมพ์ -web_fonts_disabled=แบบอักษรเว็บถูกปิดใช้งาน: ไม่สามารถใช้แบบอักษร PDF ฝังตัว diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/tl/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/tl/viewer.properties deleted file mode 100644 index 8bc83e14079badaf3561e66c42bbe242266f1619..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/tl/viewer.properties +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Naunang Pahina -previous_label=Nakaraan -next.title=Sunod na Pahina -next_label=Sunod -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Pahina -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=ng {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} ng {{pagesCount}}) -zoom_out.title=Paliitin -zoom_out_label=Paliitin -zoom_in.title=Palakihin -zoom_in_label=Palakihin -zoom.title=Mag-zoom -presentation_mode.title=Lumipat sa Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Magbukas ng file -open_file_label=Buksan -print.title=i-Print -print_label=i-Print -download.title=i-Download -download_label=i-Download -bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window) -bookmark_label=Kasalukuyang tingin -# Secondary toolbar and context menu -tools.title=Mga Kagamitan -tools_label=Mga Kagamitan -first_page.title=Pumunta sa Unang Pahina -first_page.label=Pumunta sa Unang Pahina -first_page_label=Pumunta sa Unang Pahina -last_page.title=Pumunta sa Huling Pahina -last_page.label=Pumunta sa Huling Pahina -last_page_label=Pumunta sa Huling Pahina -page_rotate_cw.title=Paikutin Pakanan -page_rotate_cw.label=Paikutin Pakanan -page_rotate_cw_label=Paikutin Pakanan -page_rotate_ccw.title=Paikutin Pakaliwa -page_rotate_ccw.label=Paikutin Pakaliwa -page_rotate_ccw_label=Paikutin Pakaliwa -cursor_text_select_tool.title=I-enable ang Text Selection Tool -cursor_text_select_tool_label=Text Selection Tool -cursor_hand_tool.title=I-enable ang Hand Tool -cursor_hand_tool_label=Hand Tool -scroll_vertical.title=Gumamit ng Vertical Scrolling -scroll_vertical_label=Vertical Scrolling -scroll_horizontal.title=Gumamit ng Horizontal Scrolling -scroll_horizontal_label=Horizontal Scrolling -scroll_wrapped.title=Gumamit ng Wrapped Scrolling -scroll_wrapped_label=Wrapped Scrolling -spread_none.title=Huwag pagsamahin ang mga page spread -spread_none_label=No Spreads -spread_odd.title=Join page spreads starting with odd-numbered pages -spread_odd_label=Mga Odd Spread -spread_even.title=Pagsamahin ang mga page spread na nagsisimula sa mga even-numbered na pahina -spread_even_label=Mga Even Spread -# Document properties dialog box -document_properties.title=Mga Katangian ng Dokumento… -document_properties_label=Mga Katangian ng Dokumento… -document_properties_file_name=File name: -document_properties_file_size=File size: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Pamagat: -document_properties_author=May-akda: -document_properties_subject=Paksa: -document_properties_keywords=Mga keyword: -document_properties_creation_date=Petsa ng Pagkakagawa: -document_properties_modification_date=Petsa ng Pagkakabago: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Tagalikha: -document_properties_producer=PDF Producer: -document_properties_version=PDF Version: -document_properties_page_count=Bilang ng Pahina: -document_properties_page_size=Laki ng Pahina: -document_properties_page_size_unit_inches=pulgada -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=patayo -document_properties_page_size_orientation_landscape=pahiga -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Fast Web View: -document_properties_linearized_yes=Oo -document_properties_linearized_no=Hindi -document_properties_close=Isara -print_progress_message=Inihahanda ang dokumento para sa pag-print… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Kanselahin -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Ipakita/Itago ang Sidebar -toggle_sidebar_notification.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment) -toggle_sidebar_notification2.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment/mga layer) -toggle_sidebar_label=Ipakita/Itago ang Sidebar -document_outline.title=Ipakita ang Document Outline (mag-double-click para i-expand/collapse ang laman) -document_outline_label=Balangkas ng Dokumento -attachments.title=Ipakita ang mga Attachment -attachments_label=Mga attachment -layers.title=Ipakita ang mga Layer (mag-double click para mareset ang lahat ng layer sa orihinal na estado) -layers_label=Mga layer -thumbs.title=Ipakita ang mga Thumbnail -thumbs_label=Mga thumbnail -findbar.title=Hanapin sa Dokumento -findbar_label=Hanapin -additional_layers=Mga Karagdagang Layer -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pahina {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pahina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail ng Pahina {{page}} -# Find panel button title and messages -find_input.title=Hanapin -find_input.placeholder=Hanapin sa dokumento… -find_previous.title=Hanapin ang nakaraang pangyayari ng parirala -find_previous_label=Nakaraan -find_next.title=Hanapin ang susunod na pangyayari ng parirala -find_next_label=Susunod -find_highlight=I-highlight lahat -find_match_case_label=Itugma ang case -find_entire_word_label=Buong salita -find_reached_top=Naabot na ang tuktok ng dokumento, ipinagpatuloy mula sa ilalim -find_reached_bottom=Naabot na ang dulo ng dokumento, ipinagpatuloy mula sa tuktok -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} ng {{total}} tugma -find_match_count[two]={{current}} ng {{total}} tugma -find_match_count[few]={{current}} ng {{total}} tugma -find_match_count[many]={{current}} ng {{total}} tugma -find_match_count[other]={{current}} ng {{total}} tugma -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Higit sa {{limit}} tugma -find_match_count_limit[one]=Higit sa {{limit}} tugma -find_match_count_limit[two]=Higit sa {{limit}} tugma -find_match_count_limit[few]=Higit sa {{limit}} tugma -find_match_count_limit[many]=Higit sa {{limit}} tugma -find_match_count_limit[other]=Higit sa {{limit}} tugma -find_not_found=Hindi natagpuan ang parirala -# Error panel labels -error_more_info=Karagdagang Impormasyon -error_less_info=Mas Kaunting Impormasyon -error_close=Isara -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensahe: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linya: {{line}} -rendering_error=Nagkaproblema habang nirerender ang pahina. -# Predefined zoom values -page_scale_width=Lapad ng Pahina -page_scale_fit=Pagkasyahin ang Pahina -page_scale_auto=Automatic Zoom -page_scale_actual=Totoong sukat -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Nagkaproblema habang niloload ang PDF. -invalid_file_error=Di-wasto o sira ang PDF file. -missing_file_error=Nawawalang PDF file. -unexpected_response_error=Hindi inaasahang tugon ng server. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Ipasok ang password upang buksan ang PDF file na ito. -password_invalid=Maling password. Subukan uli. -password_ok=OK -password_cancel=Kanselahin -printing_not_supported=Babala: Hindi pa ganap na suportado ang pag-print sa browser na ito. -printing_not_ready=Babala: Hindi ganap na nabuksan ang PDF para sa pag-print. -web_fonts_disabled=Naka-disable ang mga Web font: hindi kayang gamitin ang mga naka-embed na PDF font. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/tr/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/tr/viewer.properties deleted file mode 100644 index fc279df66b4212d8994f6c2ef3dfd07f24598eb0..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/tr/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Önceki sayfa -previous_label=Önceki -next.title=Sonraki sayfa -next_label=Sonraki -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Sayfa -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} / {{pagesCount}}) -zoom_out.title=Uzaklaştır -zoom_out_label=Uzaklaştır -zoom_in.title=Yaklaştır -zoom_in_label=Yaklaştır -zoom.title=Yakınlaştırma -presentation_mode.title=Sunum moduna geç -presentation_mode_label=Sunum Modu -open_file.title=Dosya aç -open_file_label=Aç -print.title=Yazdır -print_label=Yazdır -download.title=İndir -download_label=İndir -bookmark.title=Geçerli görünüm (kopyala veya yeni pencerede aç) -bookmark_label=Geçerli görünüm -# Secondary toolbar and context menu -tools.title=Araçlar -tools_label=Araçlar -first_page.title=İlk sayfaya git -first_page.label=İlk sayfaya git -first_page_label=İlk sayfaya git -last_page.title=Son sayfaya git -last_page.label=Son sayfaya git -last_page_label=Son sayfaya git -page_rotate_cw.title=Saat yönünde döndür -page_rotate_cw.label=Saat yönünde döndür -page_rotate_cw_label=Saat yönünde döndür -page_rotate_ccw.title=Saat yönünün tersine döndür -page_rotate_ccw.label=Saat yönünün tersine döndür -page_rotate_ccw_label=Saat yönünün tersine döndür -cursor_text_select_tool.title=Metin seçme aracını etkinleştir -cursor_text_select_tool_label=Metin seçme aracı -cursor_hand_tool.title=El aracını etkinleştir -cursor_hand_tool_label=El aracı -scroll_vertical.title=Dikey kaydırma kullan -scroll_vertical_label=Dikey kaydırma -scroll_horizontal.title=Yatay kaydırma kullan -scroll_horizontal_label=Yatay kaydırma -scroll_wrapped.title=Yan yana kaydırmayı kullan -scroll_wrapped_label=Yan yana kaydırma -spread_none.title=Yan yana sayfaları birleştirme -spread_none_label=Birleştirme -spread_odd.title=Yan yana sayfaları tek numaralı sayfalardan başlayarak birleştir -spread_odd_label=Tek numaralı -spread_even.title=Yan yana sayfaları çift numaralı sayfalardan başlayarak birleştir -spread_even_label=Çift numaralı -# Document properties dialog box -document_properties.title=Belge özellikleri… -document_properties_label=Belge özellikleri… -document_properties_file_name=Dosya adı: -document_properties_file_size=Dosya boyutu: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bayt) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bayt) -document_properties_title=Başlık: -document_properties_author=Yazar: -document_properties_subject=Konu: -document_properties_keywords=Anahtar kelimeler: -document_properties_creation_date=Oluturma tarihi: -document_properties_modification_date=Değiştirme tarihi: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}} {{time}} -document_properties_creator=Oluşturan: -document_properties_producer=PDF üreticisi: -document_properties_version=PDF sürümü: -document_properties_page_count=Sayfa sayısı: -document_properties_page_size=Sayfa boyutu: -document_properties_page_size_unit_inches=inç -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=dikey -document_properties_page_size_orientation_landscape=yatay -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Hızlı web görünümü: -document_properties_linearized_yes=Evet -document_properties_linearized_no=Hayır -document_properties_close=Kapat -print_progress_message=Belge yazdırılmaya hazırlanıyor… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent=%{{progress}} -print_progress_close=İptal -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Kenar çubuğunu aç/kapat -toggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler içeriyor) -toggle_sidebar_notification2.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler/katmanlar içeriyor) -toggle_sidebar_label=Kenar çubuğunu aç/kapat -document_outline.title=Belge ana hatlarını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın) -document_outline_label=Belge ana hatları -attachments.title=Ekleri göster -attachments_label=Ekler -layers.title=Katmanları göster (tüm katmanları varsayılan duruma sıfırlamak için çift tıklayın) -layers_label=Katmanlar -thumbs.title=Küçük resimleri göster -thumbs_label=Küçük resimler -current_outline_item.title=Mevcut ana hat öğesini bul -current_outline_item_label=Mevcut ana hat öğesi -findbar.title=Belgede bul -findbar_label=Bul -additional_layers=Ek katmanlar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Sayfa {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Sayfa {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. sayfanın küçük hâli -# Find panel button title and messages -find_input.title=Bul -find_input.placeholder=Belgede bul… -find_previous.title=Önceki eşleşmeyi bul -find_previous_label=Önceki -find_next.title=Sonraki eşleşmeyi bul -find_next_label=Sonraki -find_highlight=Tümünü vurgula -find_match_case_label=Büyük-küçük harfe duyarlı -find_entire_word_label=Tam sözcükler -find_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi -find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} eşleşmeden {{current}}. eşleşme -find_match_count[two]={{total}} eşleşmeden {{current}}. eşleşme -find_match_count[few]={{total}} eşleşmeden {{current}}. eşleşme -find_match_count[many]={{total}} eşleşmeden {{current}}. eşleşme -find_match_count[other]={{total}} eşleşmeden {{current}}. eşleşme -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}} eşleşmeden fazla -find_match_count_limit[one]={{limit}} eşleşmeden fazla -find_match_count_limit[two]={{limit}} eşleşmeden fazla -find_match_count_limit[few]={{limit}} eşleşmeden fazla -find_match_count_limit[many]={{limit}} eşleşmeden fazla -find_match_count_limit[other]={{limit}} eşleşmeden fazla -find_not_found=Eşleşme bulunamadı -# Error panel labels -error_more_info=Daha fazla bilgi al -error_less_info=Daha az bilgi -error_close=Kapat -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js sürüm {{version}} (yapı: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=İleti: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Yığın: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dosya: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Satır: {{line}} -rendering_error=Sayfa yorumlanırken bir hata oluştu. -# Predefined zoom values -page_scale_width=Sayfa genişliği -page_scale_fit=Sayfayı sığdır -page_scale_auto=Otomatik yakınlaştır -page_scale_actual=Gerçek boyut -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent=%{{scale}} -# Loading indicator messages -loading_error=PDF yüklenirken bir hata oluştu. -invalid_file_error=Geçersiz veya bozulmuş PDF dosyası. -missing_file_error=PDF dosyası eksik. -unexpected_response_error=Beklenmeyen sunucu yanıtı. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} işareti] -password_label=Bu PDF dosyasını açmak için parolasını yazın. -password_invalid=Geçersiz parola. Lütfen yeniden deneyin. -password_ok=Tamam -password_cancel=İptal -printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir. -printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır değil. -web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/trs/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/trs/viewer.properties deleted file mode 100644 index ccaa00dc6731c7365c8f7c536c4ba701dc82a204..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/trs/viewer.properties +++ /dev/null @@ -1,195 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pajinâ gunâj rukùu -previous_label=Sa gachin -next.title=Pajinâ 'na' ñaan -next_label=Ne' ñaan -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Ñanj -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=si'iaj {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} of {{pagesCount}}) -zoom_out.title=Nagi'iaj li' -zoom_out_label=Nagi'iaj li' -zoom_in.title=Nagi'iaj niko' -zoom_in_label=Nagi'iaj niko' -zoom.title=dàj nìko ma'an -presentation_mode.title=Naduno' daj ga ma -presentation_mode_label=Daj gà ma -open_file.title=Na'nïn' chrû ñanj -open_file_label=Na'nïn -print.title=Nari' ña du'ua -print_label=Nari' ñadu'ua -download.title=Nadunïnj -download_label=Nadunïnj -bookmark.title=Daj hua ma (Guxun' nej na'nïn' riña ventana nakàa) -bookmark_label=Daj hua ma -# Secondary toolbar and context menu -tools.title=Rasun -tools_label=Nej rasùun -first_page.title=gun' riña pajina asiniin -first_page.label=Gun' riña pajina asiniin -first_page_label=Gun' riña pajina asiniin -last_page.title=Gun' riña pajina rukù ni'in -last_page.label=Gun' riña pajina rukù ni'inj -last_page_label=Gun' riña pajina rukù ni'inj -page_rotate_cw.title=Tanikaj ne' huat -page_rotate_cw.label=Tanikaj ne' huat -page_rotate_cw_label=Tanikaj ne' huat -page_rotate_ccw.title=Tanikaj ne' chînt' -page_rotate_ccw.label=Tanikaj ne' chint -page_rotate_ccw_label=Tanikaj ne' chint -cursor_text_select_tool.title=Dugi'iaj sun' sa ganahui texto -cursor_text_select_tool_label=Nej rasun arajsun' da' nahui' texto -cursor_hand_tool.title=Nachrun' nej rasun -cursor_hand_tool_label=Sa rajsun ro'o' -scroll_vertical.title=Garasun' dukuán runūu -scroll_vertical_label=Dukuán runūu -scroll_horizontal.title=Garasun' dukuán nikin' nahui -scroll_horizontal_label=Dukuán nikin' nahui -scroll_wrapped.title=Garasun' sa nachree -scroll_wrapped_label=Sa nachree -spread_none.title=Si nagi'iaj nugun'un' nej pagina hua ninin -spread_none_label=Ni'io daj hua pagina -spread_odd.title=Nagi'iaj nugua'ant nej pajina -spread_odd_label=Ni'io' daj hua libro gurin -spread_even.title=Nakāj dugui' ngà nej pajinâ ayi'ì ngà da' hùi hùi -spread_even_label=Nahuin nìko nej -# Document properties dialog box -document_properties.title=Nej sa nikāj ñanj… -document_properties_label=Nej sa nikāj ñanj… -document_properties_file_name=Si yugui archîbo: -document_properties_file_size=Dàj yachìj archîbo: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Si yugui: -document_properties_author=Sí girirà: -document_properties_subject=Dugui': -document_properties_keywords=Nej nuguan' huìi: -document_properties_creation_date=Gui gurugui' man: -document_properties_modification_date=Nuguan' nahuin nakà: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Guiri ro' -document_properties_producer=Sa ri PDF: -document_properties_version=PDF Version: -document_properties_page_count=Si Guendâ Pâjina: -document_properties_page_size=Dàj yachìj pâjina: -document_properties_page_size_unit_inches=riña -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=nadu'ua -document_properties_page_size_orientation_landscape=dàj huaj -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Da'ngà'a -document_properties_page_size_name_legal=Nuguan' a'nï'ïn -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Nanèt chre ni'iajt riña Web: -document_properties_linearized_yes=Ga'ue -document_properties_linearized_no=Si ga'ue -document_properties_close=Narán -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Duyichin' -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Nadunā barrâ nù yi'nïn -toggle_sidebar_label=Nadunā barrâ nù yi'nïn -findbar_label=Narì' -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -# Find panel button title and messages -find_input.title=Narì' -find_previous_label=Sa gachîn -find_next_label=Ne' ñaan -find_highlight=Daran' sa ña'an -find_match_case_label=Match case -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} si'iaj {{total}} guña gè huaj -find_match_count[two]={{current}} si'iaj {{total}} guña gè huaj -find_match_count[few]={{current}} si'iaj {{total}} guña gè huaj -find_match_count[many]={{current}} si'iaj {{total}} guña gè huaj -find_match_count[other]={{current}} of {{total}} matches -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Doj ngà da' {{limit}} nej sa nari' dugui'i -find_match_count_limit[one]=Doj ngà da' {{limit}} sa nari' dugui'i -find_match_count_limit[two]=Doj ngà da' {{limit}} nej sa nari' dugui'i -find_match_count_limit[few]=Doj ngà da' {{limit}} nej sa nari' dugui'i -find_match_count_limit[many]=Doj ngà da' {{limit}} nej sa nari' dugui'i -find_match_count_limit[other]=Doj ngà da' {{limit}} nej sa nari' dugui'i -find_not_found=Nu narì'ij nugua'anj -# Error panel labels -error_more_info=Doj nuguan' a'min rayi'î nan -error_less_info=Dòj nuguan' a'min rayi'î nan -error_close=Narán -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Naru'ui': {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Archîbo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Lînia: {{line}} -# Predefined zoom values -page_scale_actual=Dàj yàchi akuan' nín -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=Ga'ue -password_cancel=Duyichin' - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/uk/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/uk/viewer.properties deleted file mode 100644 index 555098f23796772e1d419ec79eceeb3ced9dfc83..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/uk/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Попередня сторінка -previous_label=Попередня -next.title=Наступна сторінка -next_label=Наступна -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Сторінка -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=із {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} із {{pagesCount}}) -zoom_out.title=Зменшити -zoom_out_label=Зменшити -zoom_in.title=Збільшити -zoom_in_label=Збільшити -zoom.title=Масштаб -presentation_mode.title=Перейти в режим презентації -presentation_mode_label=Режим презентації -open_file.title=Відкрити файл -open_file_label=Відкрити -print.title=Друк -print_label=Друк -download.title=Завантажити -download_label=Завантажити -bookmark.title=Поточний вигляд (копіювати чи відкрити в новому вікні) -bookmark_label=Поточний вигляд -# Secondary toolbar and context menu -tools.title=Інструменти -tools_label=Інструменти -first_page.title=На першу сторінку -first_page.label=На першу сторінку -first_page_label=На першу сторінку -last_page.title=На останню сторінку -last_page.label=На останню сторінку -last_page_label=На останню сторінку -page_rotate_cw.title=Повернути за годинниковою стрілкою -page_rotate_cw.label=Повернути за годинниковою стрілкою -page_rotate_cw_label=Повернути за годинниковою стрілкою -page_rotate_ccw.title=Повернути проти годинникової стрілки -page_rotate_ccw.label=Повернути проти годинникової стрілки -page_rotate_ccw_label=Повернути проти годинникової стрілки -cursor_text_select_tool.title=Увімкнути інструмент вибору тексту -cursor_text_select_tool_label=Інструмент вибору тексту -cursor_hand_tool.title=Увімкнути інструмент "Рука" -cursor_hand_tool_label=Інструмент "Рука" -scroll_vertical.title=Використовувати вертикальне прокручування -scroll_vertical_label=Вертикальне прокручування -scroll_horizontal.title=Використовувати горизонтальне прокручування -scroll_horizontal_label=Горизонтальне прокручування -scroll_wrapped.title=Використовувати масштабоване прокручування -scroll_wrapped_label=Масштабоване прокручування -spread_none.title=Не використовувати розгорнуті сторінки -spread_none_label=Без розгорнутих сторінок -spread_odd.title=Розгорнуті сторінки починаються з непарних номерів -spread_odd_label=Непарні сторінки зліва -spread_even.title=Розгорнуті сторінки починаються з парних номерів -spread_even_label=Парні сторінки зліва -# Document properties dialog box -document_properties.title=Властивості документа… -document_properties_label=Властивості документа… -document_properties_file_name=Назва файла: -document_properties_file_size=Розмір файла: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} bytes) -document_properties_title=Заголовок: -document_properties_author=Автор: -document_properties_subject=Тема: -document_properties_keywords=Ключові слова: -document_properties_creation_date=Дата створення: -document_properties_modification_date=Дата зміни: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Створено: -document_properties_producer=Виробник PDF: -document_properties_version=Версія PDF: -document_properties_page_count=Кількість сторінок: -document_properties_page_size=Розмір сторінки: -document_properties_page_size_unit_inches=дюймів -document_properties_page_size_unit_millimeters=мм -document_properties_page_size_orientation_portrait=книжкова -document_properties_page_size_orientation_landscape=альбомна -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Швидкий перегляд в Інтернеті: -document_properties_linearized_yes=Так -document_properties_linearized_no=Ні -document_properties_close=Закрити -print_progress_message=Підготовка документу до друку… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Скасувати -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Бічна панель -toggle_sidebar_notification.title=Перемкнути бічну панель (документ має вміст/вкладення) -toggle_sidebar_notification2.title=Перемкнути бічну панель (документ містить ескіз/вкладення/шари) -toggle_sidebar_label=Перемкнути бічну панель -document_outline.title=Показати схему документу (подвійний клік для розгортання/згортання елементів) -document_outline_label=Схема документа -attachments.title=Показати прикріплення -attachments_label=Прикріплення -layers.title=Показати шари (двічі клацніть, щоб скинути всі шари до типового стану) -layers_label=Шари -thumbs.title=Показувати ескізи -thumbs_label=Ескізи -current_outline_item.title=Знайти поточний елемент змісту -current_outline_item_label=Поточний елемент змісту -findbar.title=Знайти в документі -findbar_label=Знайти -additional_layers=Додаткові шари -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Сторінка {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Сторінка {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Ескіз сторінки {{page}} -# Find panel button title and messages -find_input.title=Знайти -find_input.placeholder=Знайти в документі… -find_previous.title=Знайти попереднє входження фрази -find_previous_label=Попереднє -find_next.title=Знайти наступне входження фрази -find_next_label=Наступне -find_highlight=Підсвітити все -find_match_case_label=З урахуванням регістру -find_entire_word_label=Цілі слова -find_reached_top=Досягнуто початку документу, продовжено з кінця -find_reached_bottom=Досягнуто кінця документу, продовжено з початку -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} збіг із {{total}} -find_match_count[two]={{current}} збіги з {{total}} -find_match_count[few]={{current}} збігів із {{total}} -find_match_count[many]={{current}} збігів із {{total}} -find_match_count[other]={{current}} збігів із {{total}} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Понад {{limit}} збігів -find_match_count_limit[one]=Більше, ніж {{limit}} збіг -find_match_count_limit[two]=Більше, ніж {{limit}} збіги -find_match_count_limit[few]=Більше, ніж {{limit}} збігів -find_match_count_limit[many]=Понад {{limit}} збігів -find_match_count_limit[other]=Понад {{limit}} збігів -find_not_found=Фразу не знайдено -# Error panel labels -error_more_info=Більше інформації -error_less_info=Менше інформації -error_close=Закрити -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Повідомлення: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стек: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Файл: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Рядок: {{line}} -rendering_error=Під час виведення сторінки сталася помилка. -# Predefined zoom values -page_scale_width=За шириною -page_scale_fit=Вмістити -page_scale_auto=Автомасштаб -page_scale_actual=Дійсний розмір -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Під час завантаження PDF сталася помилка. -invalid_file_error=Недійсний або пошкоджений PDF-файл. -missing_file_error=Відсутній PDF-файл. -unexpected_response_error=Неочікувана відповідь сервера. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-аннотація] -password_label=Введіть пароль для відкриття цього PDF-файла. -password_invalid=Невірний пароль. Спробуйте ще. -password_ok=Гаразд -password_cancel=Скасувати -printing_not_supported=Попередження: Цей браузер не повністю підтримує друк. -printing_not_ready=Попередження: PDF не повністю завантажений для друку. -web_fonts_disabled=Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ur/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ur/viewer.properties deleted file mode 100644 index 7fa60d7c2ca46cb3a76b754a413b40dca7899d65..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/ur/viewer.properties +++ /dev/null @@ -1,222 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=پچھلا صفحہ -previous_label=پچھلا -next.title=اگلا صفحہ -next_label=آگے -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=صفحہ -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages={{pagesCount}} کا -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} کا {{pagesCount}}) -zoom_out.title=باہر زوم کریں -zoom_out_label=باہر زوم کریں -zoom_in.title=اندر زوم کریں -zoom_in_label=اندر زوم کریں -zoom.title=زوم -presentation_mode.title=پیشکش موڈ میں چلے جائیں -presentation_mode_label=پیشکش موڈ -open_file.title=مسل کھولیں -open_file_label=کھولیں -print.title=چھاپیں -print_label=چھاپیں -download.title=ڈاؤن لوڈ -download_label=ڈاؤن لوڈ -bookmark.title=حالیہ نظارہ (نۓ دریچہ میں نقل کریں یا کھولیں) -bookmark_label=حالیہ نظارہ -# Secondary toolbar and context menu -tools.title=آلات -tools_label=آلات -first_page.title=پہلے صفحہ پر جائیں -first_page.label=پہلے صفحہ پر جائیں -first_page_label=پہلے صفحہ پر جائیں -last_page.title=آخری صفحہ پر جائیں -last_page.label=آخری صفحہ پر جائیں -last_page_label=آخری صفحہ پر جائیں -page_rotate_cw.title=گھڑی وار گھمائیں -page_rotate_cw.label=گھڑی وار گھمائیں -page_rotate_cw_label=گھڑی وار گھمائیں -page_rotate_ccw.title=ضد گھڑی وار گھمائیں -page_rotate_ccw.label=ضد گھڑی وار گھمائیں -page_rotate_ccw_label=ضد گھڑی وار گھمائیں -cursor_text_select_tool.title=متن کے انتخاب کے ٹول کو فعال بناے -cursor_text_select_tool_label=متن کے انتخاب کا آلہ -cursor_hand_tool.title=ہینڈ ٹول کو فعال بناییں -cursor_hand_tool_label=ہاتھ کا آلہ -scroll_vertical.title=عمودی اسکرولنگ کا استعمال کریں -scroll_vertical_label=عمودی اسکرولنگ -scroll_horizontal.title=افقی سکرولنگ کا استعمال کریں -scroll_horizontal_label=افقی سکرولنگ -spread_none.title=صفحہ پھیلانے میں شامل نہ ہوں -spread_none_label=کوئی پھیلاؤ نہیں -spread_odd_label=تاک پھیلاؤ -spread_even_label=جفت پھیلاؤ -# Document properties dialog box -document_properties.title=دستاویز خواص… -document_properties_label=دستاویز خواص…\u0020 -document_properties_file_name=نام مسل: -document_properties_file_size=مسل سائز: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=عنوان: -document_properties_author=تخلیق کار: -document_properties_subject=موضوع: -document_properties_keywords=کلیدی الفاظ: -document_properties_creation_date=تخلیق کی تاریخ: -document_properties_modification_date=ترمیم کی تاریخ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}، {{time}} -document_properties_creator=تخلیق کار: -document_properties_producer=PDF پیدا کار: -document_properties_version=PDF ورژن: -document_properties_page_count=صفحہ شمار: -document_properties_page_size=صفہ کی لمبائ: -document_properties_page_size_unit_inches=میں -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=عمودی انداز -document_properties_page_size_orientation_landscape=افقى انداز -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=خط -document_properties_page_size_name_legal=قانونی -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} {{name}} {{orientation}} -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=تیز ویب دیکھیں: -document_properties_linearized_yes=ہاں -document_properties_linearized_no=نہیں -document_properties_close=بند کریں -print_progress_message=چھاپنے کرنے کے لیے دستاویز تیار کیے جا رھے ھیں -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent=*{{progress}}%* -print_progress_close=منسوخ کریں -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=سلائیڈ ٹوگل کریں -toggle_sidebar_label=سلائیڈ ٹوگل کریں -document_outline.title=دستاویز کی سرخیاں دکھایں (تمام اشیاء وسیع / غائب کرنے کے لیے ڈبل کلک کریں) -document_outline_label=دستاویز آؤٹ لائن -attachments.title=منسلکات دکھائیں -attachments_label=منسلکات -thumbs.title=تھمبنیل دکھائیں -thumbs_label=مجمل -findbar.title=دستاویز میں ڈھونڈیں -findbar_label=ڈھونڈیں -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=صفحہ {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=صفحہ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=صفحے کا مجمل {{page}} -# Find panel button title and messages -find_input.title=ڈھونڈیں -find_input.placeholder=دستاویز… میں ڈھونڈیں -find_previous.title=فقرے کا پچھلا وقوع ڈھونڈیں -find_previous_label=پچھلا -find_next.title=فقرے کا اگلہ وقوع ڈھونڈیں -find_next_label=آگے -find_highlight=تمام نمایاں کریں -find_match_case_label=حروف مشابہ کریں -find_entire_word_label=تمام الفاظ -find_reached_top=صفحہ کے شروع پر پہنچ گیا، نیچے سے جاری کیا -find_reached_bottom=صفحہ کے اختتام پر پہنچ گیا، اوپر سے جاری کیا -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{total}} میچ کا {{current}} -find_match_count[few]={{total}} میچوں میں سے {{current}} -find_match_count[many]={{total}} میچوں میں سے {{current}} -find_match_count[other]={{total}} میچوں میں سے {{current}} -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(total) ]} -find_match_count_limit[zero]={{limit}} سے زیادہ میچ -find_match_count_limit[one]={{limit}} سے زیادہ میچ -find_match_count_limit[two]={{limit}} سے زیادہ میچ -find_match_count_limit[few]={{limit}} سے زیادہ میچ -find_match_count_limit[many]={{limit}} سے زیادہ میچ -find_match_count_limit[other]={{limit}} سے زیادہ میچ -find_not_found=فقرا نہیں ملا -# Error panel labels -error_more_info=مزید معلومات -error_less_info=کم معلومات -error_close=بند کریں -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=پیغام: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=سٹیک: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=مسل: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=لائن: {{line}} -rendering_error=صفحہ بناتے ہوئے نقص آ گیا۔ -# Predefined zoom values -page_scale_width=صفحہ چوڑائی -page_scale_fit=صفحہ فٹنگ -page_scale_auto=خودکار زوم -page_scale_actual=اصل سائز -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔ -invalid_file_error=ناجائز یا خراب PDF مسل -missing_file_error=PDF مسل غائب ہے۔ -unexpected_response_error=غیرمتوقع پیش کار جواب -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}.{{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} نوٹ] -password_label=PDF مسل کھولنے کے لیے پاس ورڈ داخل کریں. -password_invalid=ناجائز پاس ورڈ. براےؑ کرم دوبارہ کوشش کریں. -password_ok=ٹھیک ہے -password_cancel=منسوخ کریں -printing_not_supported=تنبیہ:چھاپنا اس براؤزر پر پوری طرح معاونت شدہ نہیں ہے۔ -printing_not_ready=تنبیہ: PDF چھپائی کے لیے پوری طرح لوڈ نہیں ہوئی۔ -web_fonts_disabled=ویب فانٹ نا اہل ہیں: شامل PDF فانٹ استعمال کرنے میں ناکام۔ diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/uz/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/uz/viewer.properties deleted file mode 100644 index a3ad61d0ea7525be635d7fc139dd479d653893e8..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/uz/viewer.properties +++ /dev/null @@ -1,152 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Oldingi sahifa -previous_label=Oldingi -next.title=Keyingi sahifa -next_label=Keyingi -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/{{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -zoom_out.title=Kichiklashtirish -zoom_out_label=Kichiklashtirish -zoom_in.title=Kattalashtirish -zoom_in_label=Kattalashtirish -zoom.title=Masshtab -presentation_mode.title=Namoyish usuliga oʻtish -presentation_mode_label=Namoyish usuli -open_file.title=Faylni ochish -open_file_label=Ochish -print.title=Chop qilish -print_label=Chop qilish -download.title=Yuklab olish -download_label=Yuklab olish -bookmark.title=Joriy koʻrinish (nusxa oling yoki yangi oynada oching) -bookmark_label=Joriy koʻrinish -# Secondary toolbar and context menu -tools.title=Vositalar -tools_label=Vositalar -first_page.title=Birinchi sahifaga oʻtish -first_page.label=Birinchi sahifaga oʻtish -first_page_label=Birinchi sahifaga oʻtish -last_page.title=Soʻnggi sahifaga oʻtish -last_page.label=Soʻnggi sahifaga oʻtish -last_page_label=Soʻnggi sahifaga oʻtish -page_rotate_cw.title=Soat yoʻnalishi boʻyicha burish -page_rotate_cw.label=Soat yoʻnalishi boʻyicha burish -page_rotate_cw_label=Soat yoʻnalishi boʻyicha burish -page_rotate_ccw.title=Soat yoʻnalishiga qarshi burish -page_rotate_ccw.label=Soat yoʻnalishiga qarshi burish -page_rotate_ccw_label=Soat yoʻnalishiga qarshi burish -# Document properties dialog box -document_properties.title=Hujjat xossalari -document_properties_label=Hujjat xossalari -document_properties_file_name=Fayl nomi: -document_properties_file_size=Fayl hajmi: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Nomi: -document_properties_author=Muallifi: -document_properties_subject=Mavzusi: -document_properties_keywords=Kalit so‘zlar -document_properties_creation_date=Yaratilgan sanasi: -document_properties_modification_date=O‘zgartirilgan sanasi -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Yaratuvchi: -document_properties_producer=PDF ishlab chiqaruvchi: -document_properties_version=PDF versiyasi: -document_properties_page_count=Sahifa soni: -document_properties_close=Yopish -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Yon panelni yoqib/oʻchirib qoʻyish -toggle_sidebar_label=Yon panelni yoqib/oʻchirib qoʻyish -document_outline_label=Hujjat tuzilishi -attachments.title=Ilovalarni ko‘rsatish -attachments_label=Ilovalar -thumbs.title=Nishonchalarni koʻrsatish -thumbs_label=Nishoncha -findbar.title=Hujjat ichidan topish -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} sahifa -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} sahifa nishonchasi -# Find panel button title and messages -find_previous.title=Soʻzlardagi oldingi hodisani topish -find_previous_label=Oldingi -find_next.title=Iboradagi keyingi hodisani topish -find_next_label=Keyingi -find_highlight=Barchasini ajratib koʻrsatish -find_match_case_label=Katta-kichik harflarni farqlash -find_reached_top=Hujjatning boshigacha yetib keldik, pastdan davom ettiriladi -find_reached_bottom=Hujjatning oxiriga yetib kelindi, yuqoridan davom ettirladi -find_not_found=Soʻzlar topilmadi -# Error panel labels -error_more_info=Koʻproq ma`lumot -error_less_info=Kamroq ma`lumot -error_close=Yopish -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Xabar: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Toʻplam: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fayl: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Satr: {{line}} -rendering_error=Sahifa renderlanayotganda xato yuz berdi. -# Predefined zoom values -page_scale_width=Sahifa eni -page_scale_fit=Sahifani moslashtirish -page_scale_auto=Avtomatik masshtab -page_scale_actual=Haqiqiy hajmi -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=PDF yuklanayotganda xato yuz berdi. -invalid_file_error=Xato yoki buzuq PDF fayli. -missing_file_error=PDF fayl kerak. -unexpected_response_error=Kutilmagan server javobi. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=PDF faylni ochish uchun parolni kiriting. -password_invalid=Parol - notoʻgʻri. Qaytadan urinib koʻring. -password_ok=OK -printing_not_supported=Diqqat: chop qilish bruzer tomonidan toʻliq qoʻllab-quvvatlanmaydi. -printing_not_ready=Diqqat: PDF fayl chop qilish uchun toʻliq yuklanmadi. -web_fonts_disabled=Veb shriftlar oʻchirilgan: ichki PDF shriftlardan foydalanib boʻlmmaydi. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/vi/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/vi/viewer.properties deleted file mode 100644 index b0a29d81621a4be1f3d84d57c6f44205d610c3df..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/vi/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Trang trước -previous_label=Trước -next.title=Trang Sau -next_label=Tiếp -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Trang -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=trên {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} trên {{pagesCount}}) -zoom_out.title=Thu nhỏ -zoom_out_label=Thu nhỏ -zoom_in.title=Phóng to -zoom_in_label=Phóng to -zoom.title=Thu phóng -presentation_mode.title=Chuyển sang chế độ trình chiếu -presentation_mode_label=Chế độ trình chiếu -open_file.title=Mở tập tin -open_file_label=Mở tập tin -print.title=In -print_label=In -download.title=Tải xuống -download_label=Tải xuống -bookmark.title=Chế độ xem hiện tại (sao chép hoặc mở trong cửa sổ mới) -bookmark_label=Chế độ xem hiện tại -# Secondary toolbar and context menu -tools.title=Công cụ -tools_label=Công cụ -first_page.title=Về trang đầu -first_page.label=Về trang đầu -first_page_label=Về trang đầu -last_page.title=Đến trang cuối -last_page.label=Đến trang cuối -last_page_label=Đến trang cuối -page_rotate_cw.title=Xoay theo chiều kim đồng hồ -page_rotate_cw.label=Xoay theo chiều kim đồng hồ -page_rotate_cw_label=Xoay theo chiều kim đồng hồ -page_rotate_ccw.title=Xoay ngược chiều kim đồng hồ -page_rotate_ccw.label=Xoay ngược chiều kim đồng hồ -page_rotate_ccw_label=Xoay ngược chiều kim đồng hồ -cursor_text_select_tool.title=Kích hoạt công cụ chọn vùng văn bản -cursor_text_select_tool_label=Công cụ chọn vùng văn bản -cursor_hand_tool.title=Kích hoạt công cụ con trỏ -cursor_hand_tool_label=Công cụ con trỏ -scroll_vertical.title=Sử dụng cuộn dọc -scroll_vertical_label=Cuộn dọc -scroll_horizontal.title=Sử dụng cuộn ngang -scroll_horizontal_label=Cuộn ngang -scroll_wrapped.title=Sử dụng cuộn ngắt dòng -scroll_wrapped_label=Cuộn ngắt dòng -spread_none.title=Không nối rộng trang -spread_none_label=Không có phân cách -spread_odd.title=Nối trang bài bắt đầu với các trang được đánh số lẻ -spread_odd_label=Phân cách theo số lẻ -spread_even.title=Nối trang bài bắt đầu với các trang được đánh số chẵn -spread_even_label=Phân cách theo số chẵn -# Document properties dialog box -document_properties.title=Thuộc tính của tài liệu… -document_properties_label=Thuộc tính của tài liệu… -document_properties_file_name=Tên tập tin: -document_properties_file_size=Kích thước: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Tiêu đề: -document_properties_author=Tác giả: -document_properties_subject=Chủ đề: -document_properties_keywords=Từ khóa: -document_properties_creation_date=Ngày tạo: -document_properties_modification_date=Ngày sửa đổi: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Người tạo: -document_properties_producer=Phần mềm tạo PDF: -document_properties_version=Phiên bản PDF: -document_properties_page_count=Tổng số trang: -document_properties_page_size=Kích thước trang: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=khổ dọc -document_properties_page_size_orientation_landscape=khổ ngang -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Thư -document_properties_page_size_name_legal=Pháp lý -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Xem nhanh trên web: -document_properties_linearized_yes=Có -document_properties_linearized_no=Không -document_properties_close=Ðóng -print_progress_message=Chuẩn bị trang để in… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Hủy bỏ -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Bật/Tắt thanh lề -toggle_sidebar_notification.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm) -toggle_sidebar_notification2.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm/lớp) -toggle_sidebar_label=Bật/Tắt thanh lề -document_outline.title=Hiện tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục) -document_outline_label=Bản phác tài liệu -attachments.title=Hiện nội dung đính kèm -attachments_label=Nội dung đính kèm -layers.title=Hiển thị các lớp (nhấp đúp để đặt lại tất cả các lớp về trạng thái mặc định) -layers_label=Lớp -thumbs.title=Hiển thị ảnh thu nhỏ -thumbs_label=Ảnh thu nhỏ -current_outline_item.title=Tìm mục phác thảo hiện tại -current_outline_item_label=Mục phác thảo hiện tại -findbar.title=Tìm trong tài liệu -findbar_label=Tìm -additional_layers=Các lớp bổ sung -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Trang {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Trang {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Ảnh thu nhỏ của trang {{page}} -# Find panel button title and messages -find_input.title=Tìm -find_input.placeholder=Tìm trong tài liệu… -find_previous.title=Tìm cụm từ ở phần trước -find_previous_label=Trước -find_next.title=Tìm cụm từ ở phần sau -find_next_label=Tiếp -find_highlight=Tô sáng tất cả -find_match_case_label=Phân biệt hoa, thường -find_entire_word_label=Toàn bộ từ -find_reached_top=Đã đến phần đầu tài liệu, quay trở lại từ cuối -find_reached_bottom=Đã đến phần cuối của tài liệu, quay trở lại từ đầu -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} của {{total}} đã trùng -find_match_count[two]={{current}} của {{total}} đã trùng -find_match_count[few]={{current}} của {{total}} đã trùng -find_match_count[many]={{current}} của {{total}} đã trùng -find_match_count[other]={{current}} của {{total}} đã trùng -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=Nhiều hơn {{limit}} đã trùng -find_match_count_limit[one]=Nhiều hơn {{limit}} đã trùng -find_match_count_limit[two]=Nhiều hơn {{limit}} đã trùng -find_match_count_limit[few]=Nhiều hơn {{limit}} đã trùng -find_match_count_limit[many]=Nhiều hơn {{limit}} đã trùng -find_match_count_limit[other]=Nhiều hơn {{limit}} đã trùng -find_not_found=Không tìm thấy cụm từ này -# Error panel labels -error_more_info=Thông tin thêm -error_less_info=Hiển thị ít thông tin hơn -error_close=Đóng -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Thông điệp: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Tập tin: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Dòng: {{line}} -rendering_error=Lỗi khi hiển thị trang. -# Predefined zoom values -page_scale_width=Vừa chiều rộng -page_scale_fit=Vừa chiều cao -page_scale_auto=Tự động chọn kích thước -page_scale_actual=Kích thước thực -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Lỗi khi tải tài liệu PDF. -invalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ. -missing_file_error=Thiếu tập tin PDF. -unexpected_response_error=Máy chủ có phản hồi lạ. -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}}, {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Chú thích] -password_label=Nhập mật khẩu để mở tập tin PDF này. -password_invalid=Mật khẩu không đúng. Vui lòng thử lại. -password_ok=OK -password_cancel=Hủy bỏ -printing_not_supported=Cảnh báo: In ấn không được hỗ trợ đầy đủ ở trình duyệt này. -printing_not_ready=Cảnh báo: PDF chưa được tải hết để in. -web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sử dụng các phông chữ PDF được nhúng. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/wo/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/wo/viewer.properties deleted file mode 100644 index c1771e2e4153c04fa07326b5af899c4e96dd3972..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/wo/viewer.properties +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Xët wi jiitu -previous_label=Bi jiitu -next.title=Xët wi ci topp -next_label=Bi ci topp -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -zoom_out.title=Wàññi -zoom_out_label=Wàññi -zoom_in.title=Yaatal -zoom_in_label=Yaatal -zoom.title=Yambalaŋ -presentation_mode.title=Wañarñil ci anamu wone -presentation_mode_label=Anamu Wone -open_file.title=Ubbi benn dencukaay -open_file_label=Ubbi -print.title=Móol -print_label=Móol -download.title=Yeb yi -download_label=Yeb yi -bookmark.title=Wone bi taxaw (duppi walla ubbi palanteer bu bees) -bookmark_label=Wone bi feeñ -# Secondary toolbar and context menu -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Bopp: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -thumbs.title=Wone nataal yu ndaw yi -thumbs_label=Nataal yu ndaw yi -findbar.title=Gis ci biir jukki bi -findbar_label=Wut -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Xët {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Wiñet bu xët {{page}} -# Find panel button title and messages -find_previous.title=Seet beneen kaddu bu ni mel te jiitu -find_previous_label=Bi jiitu -find_next.title=Seet beneen kaddu bu ni mel -find_next_label=Bi ci topp -find_highlight=Melaxal lépp -find_match_case_label=Sàmm jëmmalin wi -find_reached_top=Jot nañu ndorteel xët wi, kontine dale ko ci suuf -find_reached_bottom=Jot nañu jeexitalu xët wi, kontine ci ndorte -find_not_found=Gisiñu kaddu gi -# Error panel labels -error_more_info=Xibaar yu gën bari -error_less_info=Xibaar yu gën bari -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Bataaxal: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Juug: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dencukaay: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rëdd : {{line}} -rendering_error=Am njumte bu am bi xët bi di wonewu. -# Predefined zoom values -page_scale_width=Yaatuwaay bu mët -page_scale_fit=Xët lëmm -page_scale_auto=Yambalaŋ ci saa si -page_scale_actual=Dayo bi am -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -# Loading indicator messages -loading_error=Am na njumte ci yebum dencukaay PDF bi. -invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Karmat {{type}}] -password_ok=OK -password_cancel=Neenal -printing_not_supported=Artu: Joowkat bii nanguwul lool mool. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/xh/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/xh/viewer.properties deleted file mode 100644 index 8a0e6dcacf76036e6a67877f2d0d30bc6c3897ea..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/xh/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Iphepha langaphambili -previous_label=Okwangaphambili -next.title=Iphepha elilandelayo -next_label=Okulandelayo -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=Iphepha -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=kwali- {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} kwali {{pagesCount}}) -zoom_out.title=Bhekelisela Kudana -zoom_out_label=Bhekelisela Kudana -zoom_in.title=Sondeza Kufuphi -zoom_in_label=Sondeza Kufuphi -zoom.title=Yandisa / Nciphisa -presentation_mode.title=Tshintshela kwimo yonikezelo -presentation_mode_label=Imo yonikezelo -open_file.title=Vula Ifayile -open_file_label=Vula -print.title=Printa -print_label=Printa -download.title=Khuphela -download_label=Khuphela -bookmark.title=Imbonakalo ekhoyo (kopa okanye vula kwifestile entsha) -bookmark_label=Imbonakalo ekhoyo -# Secondary toolbar and context menu -tools.title=Izixhobo zemiyalelo -tools_label=Izixhobo zemiyalelo -first_page.title=Yiya kwiphepha lokuqala -first_page.label=Yiya kwiphepha lokuqala -first_page_label=Yiya kwiphepha lokuqala -last_page.title=Yiya kwiphepha lokugqibela -last_page.label=Yiya kwiphepha lokugqibela -last_page_label=Yiya kwiphepha lokugqibela -page_rotate_cw.title=Jikelisa ngasekunene -page_rotate_cw.label=Jikelisa ngasekunene -page_rotate_cw_label=Jikelisa ngasekunene -page_rotate_ccw.title=Jikelisa ngasekhohlo -page_rotate_ccw.label=Jikelisa ngasekhohlo -page_rotate_ccw_label=Jikelisa ngasekhohlo -cursor_text_select_tool.title=Vumela iSixhobo sokuKhetha iTeksti -cursor_text_select_tool_label=ISixhobo sokuKhetha iTeksti -cursor_hand_tool.title=Yenza iSixhobo seSandla siSebenze -cursor_hand_tool_label=ISixhobo seSandla -# Document properties dialog box -document_properties.title=Iipropati zoxwebhu… -document_properties_label=Iipropati zoxwebhu… -document_properties_file_name=Igama lefayile: -document_properties_file_size=Isayizi yefayile: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB (iibhayiti{{size_b}}) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB (iibhayithi{{size_b}}) -document_properties_title=Umxholo: -document_properties_author=Umbhali: -document_properties_subject=Umbandela: -document_properties_keywords=Amagama aphambili: -document_properties_creation_date=Umhla wokwenziwa kwayo: -document_properties_modification_date=Umhla wokulungiswa kwayo: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Umntu oyenzileyo: -document_properties_producer=Umvelisi we-PDF: -document_properties_version=Uhlelo lwe-PDF: -document_properties_page_count=Inani lamaphepha: -document_properties_close=Vala -print_progress_message=Ilungisa uxwebhu ukuze iprinte… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=Rhoxisa -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Togola ngebha eseCaleni -toggle_sidebar_notification.title=ISidebar yeQhosha (uxwebhu lunolwandlalo/iziqhotyoshelwa) -toggle_sidebar_label=Togola ngebha eseCaleni -document_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto) -document_outline_label=Isishwankathelo soxwebhu -attachments.title=Bonisa iziqhotyoshelwa -attachments_label=Iziqhoboshelo -thumbs.title=Bonisa ukrobiso kumfanekiso -thumbs_label=Ukrobiso kumfanekiso -findbar.title=Fumana kuXwebhu -findbar_label=Fumana -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Iphepha {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Ukrobiso kumfanekiso wephepha {{page}} -# Find panel button title and messages -find_input.title=Fumana -find_input.placeholder=Fumana kuXwebhu… -find_previous.title=Fumanisa isenzeko sangaphambili sebinzana lamagama -find_previous_label=Okwangaphambili -find_next.title=Fumanisa isenzeko esilandelayo sebinzana lamagama -find_next_label=Okulandelayo -find_highlight=Qaqambisa konke -find_match_case_label=Tshatisa ngobukhulu bukanobumba -find_reached_top=Ufike ngaphezulu ephepheni, kusukwa ngezantsi -find_reached_bottom=Ufike ekupheleni kwephepha, kusukwa ngaphezulu -find_not_found=Ibinzana alifunyenwanga -# Error panel labels -error_more_info=Inkcazelo Engakumbi -error_less_info=Inkcazelo Encinane -error_close=Vala -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=I-PDF.js v{{version}} (yakha: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Umyalezo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Imfumba: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ifayile: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Umgca: {{line}} -rendering_error=Imposiso yenzekile xa bekunikezelwa iphepha. -# Predefined zoom values -page_scale_width=Ububanzi bephepha -page_scale_fit=Ukulinganiswa kwephepha -page_scale_auto=Ukwandisa/Ukunciphisa Ngokwayo -page_scale_actual=Ubungakanani bokwenene -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=Imposiso yenzekile xa kulayishwa i-PDF. -invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo. -missing_file_error=Ifayile ye-PDF edukileyo. -unexpected_response_error=Impendulo yeseva engalindelekanga. -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Ubhalo-nqaku] -password_label=Faka ipasiwedi ukuze uvule le fayile yePDF. -password_invalid=Ipasiwedi ayisebenzi. Nceda uzame kwakhona. -password_ok=KULUNGILE -password_cancel=Rhoxisa -printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza. -printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta. -web_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo. diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/zh-CN/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/zh-CN/viewer.properties deleted file mode 100644 index 89bab61382fec9fd50a61267ff4cd0fe8a1f04ff..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/zh-CN/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=上一页 -previous_label=上一页 -next.title=下一页 -next_label=下一页 -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=页面 -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=/ {{pagesCount}} -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=({{pageNumber}} / {{pagesCount}}) -zoom_out.title=缩小 -zoom_out_label=缩小 -zoom_in.title=放大 -zoom_in_label=放大 -zoom.title=缩放 -presentation_mode.title=切换到演示模式 -presentation_mode_label=演示模式 -open_file.title=打开文件 -open_file_label=打开 -print.title=打印 -print_label=打印 -download.title=下载 -download_label=下载 -bookmark.title=当前在看的内容(复制或在新窗口中打开) -bookmark_label=当前在看 -# Secondary toolbar and context menu -tools.title=工具 -tools_label=工具 -first_page.title=转到第一页 -first_page.label=转到第一页 -first_page_label=转到第一页 -last_page.title=转到最后一页 -last_page.label=转到最后一页 -last_page_label=转到最后一页 -page_rotate_cw.title=顺时针旋转 -page_rotate_cw.label=顺时针旋转 -page_rotate_cw_label=顺时针旋转 -page_rotate_ccw.title=逆时针旋转 -page_rotate_ccw.label=逆时针旋转 -page_rotate_ccw_label=逆时针旋转 -cursor_text_select_tool.title=启用文本选择工具 -cursor_text_select_tool_label=文本选择工具 -cursor_hand_tool.title=启用手形工具 -cursor_hand_tool_label=手形工具 -scroll_vertical.title=使用垂直滚动 -scroll_vertical_label=垂直滚动 -scroll_horizontal.title=使用水平滚动 -scroll_horizontal_label=水平滚动 -scroll_wrapped.title=使用平铺滚动 -scroll_wrapped_label=平铺滚动 -spread_none.title=不加入衔接页 -spread_none_label=单页视图 -spread_odd.title=加入衔接页使奇数页作为起始页 -spread_odd_label=双页视图 -spread_even.title=加入衔接页使偶数页作为起始页 -spread_even_label=书籍视图 -# Document properties dialog box -document_properties.title=文档属性… -document_properties_label=文档属性… -document_properties_file_name=文件名: -document_properties_file_size=文件大小: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} 字节) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} 字节) -document_properties_title=标题: -document_properties_author=作者: -document_properties_subject=主题: -document_properties_keywords=关键词: -document_properties_creation_date=创建日期: -document_properties_modification_date=修改日期: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=创建者: -document_properties_producer=PDF 生成器: -document_properties_version=PDF 版本: -document_properties_page_count=页数: -document_properties_page_size=页面大小: -document_properties_page_size_unit_inches=英寸 -document_properties_page_size_unit_millimeters=毫米 -document_properties_page_size_orientation_portrait=纵向 -document_properties_page_size_orientation_landscape=横向 -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=文本 -document_properties_page_size_name_legal=法律 -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}}({{name}},{{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=快速 Web 视图: -document_properties_linearized_yes=是 -document_properties_linearized_no=否 -document_properties_close=关闭 -print_progress_message=正在准备打印文档… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=取消 -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=切换侧栏 -toggle_sidebar_notification.title=切换侧栏(文档所含的大纲/附件) -toggle_sidebar_notification2.title=切换侧栏(文档所含的大纲/附件/图层) -toggle_sidebar_label=切换侧栏 -document_outline.title=显示文档大纲(双击展开/折叠所有项) -document_outline_label=文档大纲 -attachments.title=显示附件 -attachments_label=附件 -layers.title=显示图层(双击即可将所有图层重置为默认状态) -layers_label=图层 -thumbs.title=显示缩略图 -thumbs_label=缩略图 -current_outline_item.title=查找当前大纲项目 -current_outline_item_label=当前大纲项目 -findbar.title=在文档中查找 -findbar_label=查找 -additional_layers=其他图层 -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=页码 {{page}} -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=页码 {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=页面 {{page}} 的缩略图 -# Find panel button title and messages -find_input.title=查找 -find_input.placeholder=在文档中查找… -find_previous.title=查找词语上一次出现的位置 -find_previous_label=上一页 -find_next.title=查找词语后一次出现的位置 -find_next_label=下一页 -find_highlight=全部高亮显示 -find_match_case_label=区分大小写 -find_entire_word_label=字词匹配 -find_reached_top=到达文档开头,从末尾继续 -find_reached_bottom=到达文档末尾,从开头继续 -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=第 {{current}} 项,共匹配 {{total}} 项 -find_match_count[two]=第 {{current}} 项,共匹配 {{total}} 项 -find_match_count[few]=第 {{current}} 项,共匹配 {{total}} 项 -find_match_count[many]=第 {{current}} 项,共匹配 {{total}} 项 -find_match_count[other]=第 {{current}} 项,共匹配 {{total}} 项 -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=超过 {{limit}} 项匹配 -find_match_count_limit[one]=超过 {{limit}} 项匹配 -find_match_count_limit[two]=超过 {{limit}} 项匹配 -find_match_count_limit[few]=超过 {{limit}} 项匹配 -find_match_count_limit[many]=超过 {{limit}} 项匹配 -find_match_count_limit[other]=超过 {{limit}} 项匹配 -find_not_found=找不到指定词语 -# Error panel labels -error_more_info=更多信息 -error_less_info=更少信息 -error_close=关闭 -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=信息:{{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=堆栈:{{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=文件:{{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=行号:{{line}} -rendering_error=渲染页面时发生错误。 -# Predefined zoom values -page_scale_width=适合页宽 -page_scale_fit=适合页面 -page_scale_auto=自动缩放 -page_scale_actual=实际大小 -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=载入 PDF 时发生错误。 -invalid_file_error=无效或损坏的 PDF 文件。 -missing_file_error=缺少 PDF 文件。 -unexpected_response_error=意外的服务器响应。 -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}},{{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} 注释] -password_label=输入密码以打开此 PDF 文件。 -password_invalid=密码无效。请重试。 -password_ok=确定 -password_cancel=取消 -printing_not_supported=警告:此浏览器尚未完整支持打印功能。 -printing_not_ready=警告:此 PDF 未完成载入,无法打印。 -web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的 PDF 字体。 diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/zh-TW/viewer.properties b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/zh-TW/viewer.properties deleted file mode 100644 index a78530ae302f052cf99931bd351b43845e13b83b..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/locale/zh-TW/viewer.properties +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2012 Mozilla Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Main toolbar buttons (tooltips and alt text for images) -previous.title=上一頁 -previous_label=上一頁 -next.title=下一頁 -next_label=下一頁 -# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. -page.title=第 -# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number -# representing the total number of pages in the document. -of_pages=頁,共 {{pagesCount}} 頁 -# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" -# will be replaced by a number representing the currently visible page, -# respectively a number representing the total number of pages in the document. -page_of_pages=(第 {{pageNumber}} 頁,共 {{pagesCount}} 頁) -zoom_out.title=縮小 -zoom_out_label=縮小 -zoom_in.title=放大 -zoom_in_label=放大 -zoom.title=縮放 -presentation_mode.title=切換至簡報模式 -presentation_mode_label=簡報模式 -open_file.title=開啟檔案 -open_file_label=開啟 -print.title=列印 -print_label=列印 -download.title=下載 -download_label=下載 -bookmark.title=目前畫面(複製或開啟於新視窗) -bookmark_label=目前檢視 -# Secondary toolbar and context menu -tools.title=工具 -tools_label=工具 -first_page.title=跳到第一頁 -first_page.label=跳到第一頁 -first_page_label=跳到第一頁 -last_page.title=跳到最後一頁 -last_page.label=跳到最後一頁 -last_page_label=跳到最後一頁 -page_rotate_cw.title=順時針旋轉 -page_rotate_cw.label=順時針旋轉 -page_rotate_cw_label=順時針旋轉 -page_rotate_ccw.title=逆時針旋轉 -page_rotate_ccw.label=逆時針旋轉 -page_rotate_ccw_label=逆時針旋轉 -cursor_text_select_tool.title=開啟文字選擇工具 -cursor_text_select_tool_label=文字選擇工具 -cursor_hand_tool.title=開啟頁面移動工具 -cursor_hand_tool_label=頁面移動工具 -scroll_vertical.title=使用垂直捲動版面 -scroll_vertical_label=垂直捲動 -scroll_horizontal.title=使用水平捲動版面 -scroll_horizontal_label=水平捲動 -scroll_wrapped.title=使用多頁捲動版面 -scroll_wrapped_label=多頁捲動 -spread_none.title=不要進行跨頁顯示 -spread_none_label=不跨頁 -spread_odd.title=從奇數頁開始跨頁 -spread_odd_label=奇數跨頁 -spread_even.title=從偶數頁開始跨頁 -spread_even_label=偶數跨頁 -# Document properties dialog box -document_properties.title=文件內容… -document_properties_label=文件內容… -document_properties_file_name=檔案名稱: -document_properties_file_size=檔案大小: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB({{size_b}} 位元組) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB({{size_b}} 位元組) -document_properties_title=標題: -document_properties_author=作者: -document_properties_subject=主旨: -document_properties_keywords=關鍵字: -document_properties_creation_date=建立日期: -document_properties_modification_date=修改日期: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}} {{time}} -document_properties_creator=建立者: -document_properties_producer=PDF 產生器: -document_properties_version=PDF 版本: -document_properties_page_count=頁數: -document_properties_page_size=頁面大小: -document_properties_page_size_unit_inches=in -document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=垂直 -document_properties_page_size_orientation_landscape=水平 -document_properties_page_size_name_a3=A3 -document_properties_page_size_name_a4=A4 -document_properties_page_size_name_letter=Letter -document_properties_page_size_name_legal=Legal -# LOCALIZATION NOTE (document_properties_page_size_dimension_string): -# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement and orientation, of the (current) page. -document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}({{orientation}}) -# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): -# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by -# the size, respectively their unit of measurement, name, and orientation, of the (current) page. -document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}}({{name}},{{orientation}}) -# LOCALIZATION NOTE (document_properties_linearized): The linearization status of -# the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=快速 Web 檢視: -document_properties_linearized_yes=是 -document_properties_linearized_no=否 -document_properties_close=關閉 -print_progress_message=正在準備列印文件… -# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by -# a numerical per cent value. -print_progress_percent={{progress}}% -print_progress_close=取消 -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=切換側邊欄 -toggle_sidebar_notification.title=切換側邊攔(文件包含大綱或附件) -toggle_sidebar_notification2.title=切換側邊欄(包含大綱、附件、圖層的文件) -toggle_sidebar_label=切換側邊欄 -document_outline.title=顯示文件大綱(雙擊展開/摺疊所有項目) -document_outline_label=文件大綱 -attachments.title=顯示附件 -attachments_label=附件 -layers.title=顯示圖層(滑鼠雙擊即可將所有圖層重設為預設狀態) -layers_label=圖層 -thumbs.title=顯示縮圖 -thumbs_label=縮圖 -current_outline_item.title=尋找目前的大綱項目 -current_outline_item_label=目前的大綱項目 -findbar.title=在文件中尋找 -findbar_label=尋找 -additional_layers=其他圖層 -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=第 {{page}} 頁 -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=第 {{page}} 頁 -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=頁 {{page}} 的縮圖 -# Find panel button title and messages -find_input.title=尋找 -find_input.placeholder=在文件中搜尋… -find_previous.title=尋找文字前次出現的位置 -find_previous_label=上一個 -find_next.title=尋找文字下次出現的位置 -find_next_label=下一個 -find_highlight=全部強調標示 -find_match_case_label=區分大小寫 -find_entire_word_label=符合整個字 -find_reached_top=已搜尋至文件頂端,自底端繼續搜尋 -find_reached_bottom=已搜尋至文件底端,自頂端繼續搜尋 -# LOCALIZATION NOTE (find_match_count): The supported plural forms are -# [one|two|few|many|other], with [other] as the default value. -# "{{current}}" and "{{total}}" will be replaced by a number representing the -# index of the currently active find result, respectively a number representing -# the total number of matches in the document. -find_match_count={[ plural(total) ]} -find_match_count[one]=第 {{current}} 筆,共找到 {{total}} 筆 -find_match_count[two]=第 {{current}} 筆,共找到 {{total}} 筆 -find_match_count[few]=第 {{current}} 筆,共找到 {{total}} 筆 -find_match_count[many]=第 {{current}} 筆,共找到 {{total}} 筆 -find_match_count[other]=第 {{current}} 筆,共找到 {{total}} 筆 -# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are -# [zero|one|two|few|many|other], with [other] as the default value. -# "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=找到超過 {{limit}} 筆 -find_match_count_limit[one]=找到超過 {{limit}} 筆 -find_match_count_limit[two]=找到超過 {{limit}} 筆 -find_match_count_limit[few]=找到超過 {{limit}} 筆 -find_match_count_limit[many]=找到超過 {{limit}} 筆 -find_match_count_limit[other]=找到超過 {{limit}} 筆 -find_not_found=找不到指定文字 -# Error panel labels -error_more_info=更多資訊 -error_less_info=更少資訊 -error_close=關閉 -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=訊息: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=堆疊: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=檔案: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=行: {{line}} -rendering_error=描繪頁面時發生錯誤。 -# Predefined zoom values -page_scale_width=頁面寬度 -page_scale_fit=縮放至頁面大小 -page_scale_auto=自動縮放 -page_scale_actual=實際大小 -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% -# Loading indicator messages -loading_error=載入 PDF 時發生錯誤。 -invalid_file_error=無效或毀損的 PDF 檔案。 -missing_file_error=找不到 PDF 檔案。 -unexpected_response_error=伺服器回應未預期的內容。 -# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be -# replaced by the modification date, and time, of the annotation. -annotation_date_string={{date}} {{time}} -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} 註解] -password_label=請輸入用來開啟此 PDF 檔案的密碼。 -password_invalid=密碼不正確,請再試一次。 -password_ok=確定 -password_cancel=取消 -printing_not_supported=警告: 此瀏覽器未完整支援列印功能。 -printing_not_ready=警告: 此 PDF 未完成下載以供列印。 -web_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。 diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/pdf.js b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/pdf.js deleted file mode 100644 index 6316bcd5c7b7cc73abf27c00d0499a0bb03a3861..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/pdf.js +++ /dev/null @@ -1,26955 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * Javascript code in this page - * - * Copyright 2021 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @licend The above is the entire license notice for the - * Javascript code in this page - */ - -(function webpackUniversalModuleDefinition(root, factory) { - if (typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if (typeof define === 'function' && define.amd) - define("pdfjs-dist/build/pdf", [], factory); - else if (typeof exports === 'object') - exports["pdfjs-dist/build/pdf"] = factory(); - else - root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); -})(this, function () { - return /******/ (() => { // webpackBootstrap - /******/ - var __webpack_modules__ = ([ - /* 0 */, - /* 1 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.addLinkAttributes = addLinkAttributes; - exports.deprecated = deprecated; - exports.getFilenameFromUrl = getFilenameFromUrl; - exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; - exports.isDataScheme = isDataScheme; - exports.isFetchSupported = isFetchSupported; - exports.isPdfFile = isPdfFile; - exports.isValidFetchUrl = isValidFetchUrl; - exports.loadScript = loadScript; - exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = exports.LinkTarget = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.BaseCMapReaderFactory = exports.BaseCanvasFactory = void 0; - - var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - - var _util = __w_pdfjs_require__(4); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var DEFAULT_LINK_REL = "noopener noreferrer nofollow"; - exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; - var SVG_NS = "http://www.w3.org/2000/svg"; - - var BaseCanvasFactory = /*#__PURE__*/function () { - function BaseCanvasFactory() { - _classCallCheck(this, BaseCanvasFactory); - - if (this.constructor === BaseCanvasFactory) { - (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); - } - } - - _createClass(BaseCanvasFactory, [{ - key: "create", - value: function create(width, height) { - (0, _util.unreachable)("Abstract method `create` called."); - } - }, { - key: "reset", - value: function reset(canvasAndContext, width, height) { - if (!canvasAndContext.canvas) { - throw new Error("Canvas is not specified"); - } - - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } - - canvasAndContext.canvas.width = width; - canvasAndContext.canvas.height = height; - } - }, { - key: "destroy", - value: function destroy(canvasAndContext) { - if (!canvasAndContext.canvas) { - throw new Error("Canvas is not specified"); - } - - canvasAndContext.canvas.width = 0; - canvasAndContext.canvas.height = 0; - canvasAndContext.canvas = null; - canvasAndContext.context = null; - } - }]); - - return BaseCanvasFactory; - }(); - - exports.BaseCanvasFactory = BaseCanvasFactory; - - var DOMCanvasFactory = /*#__PURE__*/function (_BaseCanvasFactory) { - _inherits(DOMCanvasFactory, _BaseCanvasFactory); - - var _super = _createSuper(DOMCanvasFactory); - - function DOMCanvasFactory() { - var _this; - - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$ownerDocument = _ref.ownerDocument, - ownerDocument = _ref$ownerDocument === void 0 ? globalThis.document : _ref$ownerDocument; - - _classCallCheck(this, DOMCanvasFactory); - - _this = _super.call(this); - _this._document = ownerDocument; - return _this; - } - - _createClass(DOMCanvasFactory, [{ - key: "create", - value: function create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } - - var canvas = this._document.createElement("canvas"); - - var context = canvas.getContext("2d"); - canvas.width = width; - canvas.height = height; - return { - canvas: canvas, - context: context - }; - } - }]); - - return DOMCanvasFactory; - }(BaseCanvasFactory); - - exports.DOMCanvasFactory = DOMCanvasFactory; - - var BaseCMapReaderFactory = /*#__PURE__*/function () { - function BaseCMapReaderFactory(_ref2) { - var _ref2$baseUrl = _ref2.baseUrl, - baseUrl = _ref2$baseUrl === void 0 ? null : _ref2$baseUrl, - _ref2$isCompressed = _ref2.isCompressed, - isCompressed = _ref2$isCompressed === void 0 ? false : _ref2$isCompressed; - - _classCallCheck(this, BaseCMapReaderFactory); - - if (this.constructor === BaseCMapReaderFactory) { - (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); - } - - this.baseUrl = baseUrl; - this.isCompressed = isCompressed; - } - - _createClass(BaseCMapReaderFactory, [{ - key: "fetch", - value: function () { - var _fetch = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref3) { - var _this2 = this; - - var name, url, compressionType; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - name = _ref3.name; - - if (this.baseUrl) { - _context.next = 3; - break; - } - - throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); - - case 3: - if (name) { - _context.next = 5; - break; - } - - throw new Error("CMap name must be specified."); - - case 5: - url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); - compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; - return _context.abrupt("return", this._fetchData(url, compressionType)["catch"](function (reason) { - throw new Error("Unable to load ".concat(_this2.isCompressed ? "binary " : "", "CMap at: ").concat(url)); - })); - - case 8: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function fetch(_x) { - return _fetch.apply(this, arguments); - } - - return fetch; - }() - }, { - key: "_fetchData", - value: function _fetchData(url, compressionType) { - (0, _util.unreachable)("Abstract method `_fetchData` called."); - } - }]); - - return BaseCMapReaderFactory; - }(); - - exports.BaseCMapReaderFactory = BaseCMapReaderFactory; - - var DOMCMapReaderFactory = /*#__PURE__*/function (_BaseCMapReaderFactor) { - _inherits(DOMCMapReaderFactory, _BaseCMapReaderFactor); - - var _super2 = _createSuper(DOMCMapReaderFactory); - - function DOMCMapReaderFactory() { - _classCallCheck(this, DOMCMapReaderFactory); - - return _super2.apply(this, arguments); - } - - _createClass(DOMCMapReaderFactory, [{ - key: "_fetchData", - value: function _fetchData(url, compressionType) { - var _this3 = this; - - if (isFetchSupported() && isValidFetchUrl(url, document.baseURI)) { - return fetch(url).then( /*#__PURE__*/function () { - var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(response) { - var cMapData; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (response.ok) { - _context2.next = 2; - break; - } - - throw new Error(response.statusText); - - case 2: - if (!_this3.isCompressed) { - _context2.next = 10; - break; - } - - _context2.t0 = Uint8Array; - _context2.next = 6; - return response.arrayBuffer(); - - case 6: - _context2.t1 = _context2.sent; - cMapData = new _context2.t0(_context2.t1); - _context2.next = 15; - break; - - case 10: - _context2.t2 = _util.stringToBytes; - _context2.next = 13; - return response.text(); - - case 13: - _context2.t3 = _context2.sent; - cMapData = (0, _context2.t2)(_context2.t3); - - case 15: - return _context2.abrupt("return", { - cMapData: cMapData, - compressionType: compressionType - }); - - case 16: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - - return function (_x2) { - return _ref4.apply(this, arguments); - }; - }()); - } - - return new Promise(function (resolve, reject) { - var request = new XMLHttpRequest(); - request.open("GET", url, true); - - if (_this3.isCompressed) { - request.responseType = "arraybuffer"; - } - - request.onreadystatechange = function () { - if (request.readyState !== XMLHttpRequest.DONE) { - return; - } - - if (request.status === 200 || request.status === 0) { - var cMapData; - - if (_this3.isCompressed && request.response) { - cMapData = new Uint8Array(request.response); - } else if (!_this3.isCompressed && request.responseText) { - cMapData = (0, _util.stringToBytes)(request.responseText); - } - - if (cMapData) { - resolve({ - cMapData: cMapData, - compressionType: compressionType - }); - return; - } - } - - reject(new Error(request.statusText)); - }; - - request.send(null); - }); - } - }]); - - return DOMCMapReaderFactory; - }(BaseCMapReaderFactory); - - exports.DOMCMapReaderFactory = DOMCMapReaderFactory; - - var DOMSVGFactory = /*#__PURE__*/function () { - function DOMSVGFactory() { - _classCallCheck(this, DOMSVGFactory); - } - - _createClass(DOMSVGFactory, [{ - key: "create", - value: function create(width, height) { - (0, _util.assert)(width > 0 && height > 0, "Invalid SVG dimensions"); - var svg = document.createElementNS(SVG_NS, "svg:svg"); - svg.setAttribute("version", "1.1"); - svg.setAttribute("width", width + "px"); - svg.setAttribute("height", height + "px"); - svg.setAttribute("preserveAspectRatio", "none"); - svg.setAttribute("viewBox", "0 0 " + width + " " + height); - return svg; - } - }, { - key: "createElement", - value: function createElement(type) { - (0, _util.assert)(typeof type === "string", "Invalid SVG element type"); - return document.createElementNS(SVG_NS, type); - } - }]); - - return DOMSVGFactory; - }(); - - exports.DOMSVGFactory = DOMSVGFactory; - - var PageViewport = /*#__PURE__*/function () { - function PageViewport(_ref5) { - var viewBox = _ref5.viewBox, - scale = _ref5.scale, - rotation = _ref5.rotation, - _ref5$offsetX = _ref5.offsetX, - offsetX = _ref5$offsetX === void 0 ? 0 : _ref5$offsetX, - _ref5$offsetY = _ref5.offsetY, - offsetY = _ref5$offsetY === void 0 ? 0 : _ref5$offsetY, - _ref5$dontFlip = _ref5.dontFlip, - dontFlip = _ref5$dontFlip === void 0 ? false : _ref5$dontFlip; - - _classCallCheck(this, PageViewport); - - this.viewBox = viewBox; - this.scale = scale; - this.rotation = rotation; - this.offsetX = offsetX; - this.offsetY = offsetY; - var centerX = (viewBox[2] + viewBox[0]) / 2; - var centerY = (viewBox[3] + viewBox[1]) / 2; - var rotateA, rotateB, rotateC, rotateD; - rotation %= 360; - - if (rotation < 0) { - rotation += 360; - } - - switch (rotation) { - case 180: - rotateA = -1; - rotateB = 0; - rotateC = 0; - rotateD = 1; - break; - - case 90: - rotateA = 0; - rotateB = 1; - rotateC = 1; - rotateD = 0; - break; - - case 270: - rotateA = 0; - rotateB = -1; - rotateC = -1; - rotateD = 0; - break; - - case 0: - rotateA = 1; - rotateB = 0; - rotateC = 0; - rotateD = -1; - break; - - default: - throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); - } - - if (dontFlip) { - rotateC = -rotateC; - rotateD = -rotateD; - } - - var offsetCanvasX, offsetCanvasY; - var width, height; - - if (rotateA === 0) { - offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; - offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; - width = Math.abs(viewBox[3] - viewBox[1]) * scale; - height = Math.abs(viewBox[2] - viewBox[0]) * scale; - } else { - offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; - offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; - width = Math.abs(viewBox[2] - viewBox[0]) * scale; - height = Math.abs(viewBox[3] - viewBox[1]) * scale; - } - - this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY]; - this.width = width; - this.height = height; - } - - _createClass(PageViewport, [{ - key: "clone", - value: function clone() { - var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref6$scale = _ref6.scale, - scale = _ref6$scale === void 0 ? this.scale : _ref6$scale, - _ref6$rotation = _ref6.rotation, - rotation = _ref6$rotation === void 0 ? this.rotation : _ref6$rotation, - _ref6$offsetX = _ref6.offsetX, - offsetX = _ref6$offsetX === void 0 ? this.offsetX : _ref6$offsetX, - _ref6$offsetY = _ref6.offsetY, - offsetY = _ref6$offsetY === void 0 ? this.offsetY : _ref6$offsetY, - _ref6$dontFlip = _ref6.dontFlip, - dontFlip = _ref6$dontFlip === void 0 ? false : _ref6$dontFlip; - - return new PageViewport({ - viewBox: this.viewBox.slice(), - scale: scale, - rotation: rotation, - offsetX: offsetX, - offsetY: offsetY, - dontFlip: dontFlip - }); - } - }, { - key: "convertToViewportPoint", - value: function convertToViewportPoint(x, y) { - return _util.Util.applyTransform([x, y], this.transform); - } - }, { - key: "convertToViewportRectangle", - value: function convertToViewportRectangle(rect) { - var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); - - var bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); - - return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; - } - }, { - key: "convertToPdfPoint", - value: function convertToPdfPoint(x, y) { - return _util.Util.applyInverseTransform([x, y], this.transform); - } - }]); - - return PageViewport; - }(); - - exports.PageViewport = PageViewport; - - var RenderingCancelledException = /*#__PURE__*/function (_BaseException) { - _inherits(RenderingCancelledException, _BaseException); - - var _super3 = _createSuper(RenderingCancelledException); - - function RenderingCancelledException(msg, type) { - var _this4; - - _classCallCheck(this, RenderingCancelledException); - - _this4 = _super3.call(this, msg); - _this4.type = type; - return _this4; - } - - return RenderingCancelledException; - }(_util.BaseException); - - exports.RenderingCancelledException = RenderingCancelledException; - var LinkTarget = { - NONE: 0, - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4 - }; - exports.LinkTarget = LinkTarget; - - function addLinkAttributes(link) { - var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - url = _ref7.url, - target = _ref7.target, - rel = _ref7.rel, - _ref7$enabled = _ref7.enabled, - enabled = _ref7$enabled === void 0 ? true : _ref7$enabled; - - (0, _util.assert)(url && typeof url === "string", 'addLinkAttributes: A valid "url" parameter must provided.'); - var urlNullRemoved = (0, _util.removeNullCharacters)(url); - - if (enabled) { - link.href = link.title = urlNullRemoved; - } else { - link.href = ""; - link.title = "Disabled: ".concat(urlNullRemoved); - - link.onclick = function () { - return false; - }; - } - - var targetStr = ""; - - switch (target) { - case LinkTarget.NONE: - break; - - case LinkTarget.SELF: - targetStr = "_self"; - break; - - case LinkTarget.BLANK: - targetStr = "_blank"; - break; - - case LinkTarget.PARENT: - targetStr = "_parent"; - break; - - case LinkTarget.TOP: - targetStr = "_top"; - break; - } - - link.target = targetStr; - link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL; - } - - function isDataScheme(url) { - var ii = url.length; - var i = 0; - - while (i < ii && url[i].trim() === "") { - i++; - } - - return url.substring(i, i + 5).toLowerCase() === "data:"; - } - - function isPdfFile(filename) { - return typeof filename === "string" && /\.pdf$/i.test(filename); - } - - function getFilenameFromUrl(url) { - var anchor = url.indexOf("#"); - var query = url.indexOf("?"); - var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); - return url.substring(url.lastIndexOf("/", end) + 1, end); - } - - function getPdfFilenameFromUrl(url) { - var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "document.pdf"; - - if (typeof url !== "string") { - return defaultFilename; - } - - if (isDataScheme(url)) { - (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'); - return defaultFilename; - } - - var reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; - var reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i; - var splitURI = reURI.exec(url); - var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); - - if (suggestedFilename) { - suggestedFilename = suggestedFilename[0]; - - if (suggestedFilename.includes("%")) { - try { - suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; - } catch (ex) { - } - } - } - - return suggestedFilename || defaultFilename; - } - - var StatTimer = /*#__PURE__*/function () { - function StatTimer() { - _classCallCheck(this, StatTimer); - - this.started = Object.create(null); - this.times = []; - } - - _createClass(StatTimer, [{ - key: "time", - value: function time(name) { - if (name in this.started) { - (0, _util.warn)("Timer is already running for ".concat(name)); - } - - this.started[name] = Date.now(); - } - }, { - key: "timeEnd", - value: function timeEnd(name) { - if (!(name in this.started)) { - (0, _util.warn)("Timer has not been started for ".concat(name)); - } - - this.times.push({ - name: name, - start: this.started[name], - end: Date.now() - }); - delete this.started[name]; - } - }, { - key: "toString", - value: function toString() { - var outBuf = []; - var longest = 0; - - var _iterator = _createForOfIteratorHelper(this.times), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var time = _step.value; - var name = time.name; - - if (name.length > longest) { - longest = name.length; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - var _iterator2 = _createForOfIteratorHelper(this.times), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _time = _step2.value; - var duration = _time.end - _time.start; - outBuf.push("".concat(_time.name.padEnd(longest), " ").concat(duration, "ms\n")); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - return outBuf.join(""); - } - }]); - - return StatTimer; - }(); - - exports.StatTimer = StatTimer; - - function isFetchSupported() { - return typeof fetch !== "undefined" && typeof Response !== "undefined" && "body" in Response.prototype && typeof ReadableStream !== "undefined"; - } - - function isValidFetchUrl(url, baseUrl) { - try { - var _ref8 = baseUrl ? new URL(url, baseUrl) : new URL(url), - protocol = _ref8.protocol; - - return protocol === "http:" || protocol === "https:"; - } catch (ex) { - return false; - } - } - - function loadScript(src) { - var removeScriptElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - return new Promise(function (resolve, reject) { - var script = document.createElement("script"); - script.src = src; - - script.onload = function (evt) { - if (removeScriptElement) { - script.remove(); - } - - resolve(evt); - }; - - script.onerror = function () { - reject(new Error("Cannot load script at: ".concat(script.src))); - }; - - (document.head || document.documentElement).appendChild(script); - }); - } - - function deprecated(details) { - console.log("Deprecated API usage: " + details); - } - - var pdfDateStringRegex; - - var PDFDateString = /*#__PURE__*/function () { - function PDFDateString() { - _classCallCheck(this, PDFDateString); - } - - _createClass(PDFDateString, null, [{ - key: "toDateObject", - value: function toDateObject(input) { - if (!input || !(0, _util.isString)(input)) { - return null; - } - - if (!pdfDateStringRegex) { - pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); - } - - var matches = pdfDateStringRegex.exec(input); - - if (!matches) { - return null; - } - - var year = parseInt(matches[1], 10); - var month = parseInt(matches[2], 10); - month = month >= 1 && month <= 12 ? month - 1 : 0; - var day = parseInt(matches[3], 10); - day = day >= 1 && day <= 31 ? day : 1; - var hour = parseInt(matches[4], 10); - hour = hour >= 0 && hour <= 23 ? hour : 0; - var minute = parseInt(matches[5], 10); - minute = minute >= 0 && minute <= 59 ? minute : 0; - var second = parseInt(matches[6], 10); - second = second >= 0 && second <= 59 ? second : 0; - var universalTimeRelation = matches[7] || "Z"; - var offsetHour = parseInt(matches[8], 10); - offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; - var offsetMinute = parseInt(matches[9], 10) || 0; - offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; - - if (universalTimeRelation === "-") { - hour += offsetHour; - minute += offsetMinute; - } else if (universalTimeRelation === "+") { - hour -= offsetHour; - minute -= offsetMinute; - } - - return new Date(Date.UTC(year, month, day, hour, minute, second)); - } - }]); - - return PDFDateString; - }(); - - exports.PDFDateString = PDFDateString; - - /***/ - }), - /* 2 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - - module.exports = __w_pdfjs_require__(3); - - /***/ - }), - /* 3 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - /* module decorator */ - module = __w_pdfjs_require__.nmd(module); - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - var runtime = function (exports) { - "use strict"; - - var Op = Object.prototype; - var hasOwn = Op.hasOwnProperty; - var undefined; - var $Symbol = typeof Symbol === "function" ? Symbol : {}; - var iteratorSymbol = $Symbol.iterator || "@@iterator"; - var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; - var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - - function define(obj, key, value) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - return obj[key]; - } - - try { - define({}, ""); - } catch (err) { - define = function define(obj, key, value) { - return obj[key] = value; - }; - } - - function wrap(innerFn, outerFn, self, tryLocsList) { - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; - var generator = Object.create(protoGenerator.prototype); - var context = new Context(tryLocsList || []); - generator._invoke = makeInvokeMethod(innerFn, self, context); - return generator; - } - - exports.wrap = wrap; - - function tryCatch(fn, obj, arg) { - try { - return { - type: "normal", - arg: fn.call(obj, arg) - }; - } catch (err) { - return { - type: "throw", - arg: err - }; - } - } - - var GenStateSuspendedStart = "suspendedStart"; - var GenStateSuspendedYield = "suspendedYield"; - var GenStateExecuting = "executing"; - var GenStateCompleted = "completed"; - var ContinueSentinel = {}; - - function Generator() { - } - - function GeneratorFunction() { - } - - function GeneratorFunctionPrototype() { - } - - var IteratorPrototype = {}; - - IteratorPrototype[iteratorSymbol] = function () { - return this; - }; - - var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - - if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { - IteratorPrototype = NativeIteratorPrototype; - } - - var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); - GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; - GeneratorFunctionPrototype.constructor = GeneratorFunction; - GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"); - - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function (method) { - define(prototype, method, function (arg) { - return this._invoke(method, arg); - }); - }); - } - - exports.isGeneratorFunction = function (genFun) { - var ctor = typeof genFun === "function" && genFun.constructor; - return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false; - }; - - exports.mark = function (genFun) { - if (Object.setPrototypeOf) { - Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); - } else { - genFun.__proto__ = GeneratorFunctionPrototype; - define(genFun, toStringTagSymbol, "GeneratorFunction"); - } - - genFun.prototype = Object.create(Gp); - return genFun; - }; - - exports.awrap = function (arg) { - return { - __await: arg - }; - }; - - function AsyncIterator(generator, PromiseImpl) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - - if (record.type === "throw") { - reject(record.arg); - } else { - var result = record.arg; - var value = result.value; - - if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) { - return PromiseImpl.resolve(value.__await).then(function (value) { - invoke("next", value, resolve, reject); - }, function (err) { - invoke("throw", err, resolve, reject); - }); - } - - return PromiseImpl.resolve(value).then(function (unwrapped) { - result.value = unwrapped; - resolve(result); - }, function (error) { - return invoke("throw", error, resolve, reject); - }); - } - } - - var previousPromise; - - function enqueue(method, arg) { - function callInvokeWithMethodAndArg() { - return new PromiseImpl(function (resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - - return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); - } - - this._invoke = enqueue; - } - - defineIteratorMethods(AsyncIterator.prototype); - - AsyncIterator.prototype[asyncIteratorSymbol] = function () { - return this; - }; - - exports.AsyncIterator = AsyncIterator; - - exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { - if (PromiseImpl === void 0) PromiseImpl = Promise; - var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); - return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { - return result.done ? result.value : iter.next(); - }); - }; - - function makeInvokeMethod(innerFn, self, context) { - var state = GenStateSuspendedStart; - return function invoke(method, arg) { - if (state === GenStateExecuting) { - throw new Error("Generator is already running"); - } - - if (state === GenStateCompleted) { - if (method === "throw") { - throw arg; - } - - return doneResult(); - } - - context.method = method; - context.arg = arg; - - while (true) { - var delegate = context.delegate; - - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - - if (context.method === "next") { - context.sent = context._sent = context.arg; - } else if (context.method === "throw") { - if (state === GenStateSuspendedStart) { - state = GenStateCompleted; - throw context.arg; - } - - context.dispatchException(context.arg); - } else if (context.method === "return") { - context.abrupt("return", context.arg); - } - - state = GenStateExecuting; - var record = tryCatch(innerFn, self, context); - - if (record.type === "normal") { - state = context.done ? GenStateCompleted : GenStateSuspendedYield; - - if (record.arg === ContinueSentinel) { - continue; - } - - return { - value: record.arg, - done: context.done - }; - } else if (record.type === "throw") { - state = GenStateCompleted; - context.method = "throw"; - context.arg = record.arg; - } - } - }; - } - - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - - if (method === undefined) { - context.delegate = null; - - if (context.method === "throw") { - if (delegate.iterator["return"]) { - context.method = "return"; - context.arg = undefined; - maybeInvokeDelegate(delegate, context); - - if (context.method === "throw") { - return ContinueSentinel; - } - } - - context.method = "throw"; - context.arg = new TypeError("The iterator does not provide a 'throw' method"); - } - - return ContinueSentinel; - } - - var record = tryCatch(method, delegate.iterator, context.arg); - - if (record.type === "throw") { - context.method = "throw"; - context.arg = record.arg; - context.delegate = null; - return ContinueSentinel; - } - - var info = record.arg; - - if (!info) { - context.method = "throw"; - context.arg = new TypeError("iterator result is not an object"); - context.delegate = null; - return ContinueSentinel; - } - - if (info.done) { - context[delegate.resultName] = info.value; - context.next = delegate.nextLoc; - - if (context.method !== "return") { - context.method = "next"; - context.arg = undefined; - } - } else { - return info; - } - - context.delegate = null; - return ContinueSentinel; - } - - defineIteratorMethods(Gp); - define(Gp, toStringTagSymbol, "Generator"); - - Gp[iteratorSymbol] = function () { - return this; - }; - - Gp.toString = function () { - return "[object Generator]"; - }; - - function pushTryEntry(locs) { - var entry = { - tryLoc: locs[0] - }; - - if (1 in locs) { - entry.catchLoc = locs[1]; - } - - if (2 in locs) { - entry.finallyLoc = locs[2]; - entry.afterLoc = locs[3]; - } - - this.tryEntries.push(entry); - } - - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal"; - delete record.arg; - entry.completion = record; - } - - function Context(tryLocsList) { - this.tryEntries = [{ - tryLoc: "root" - }]; - tryLocsList.forEach(pushTryEntry, this); - this.reset(true); - } - - exports.keys = function (object) { - var keys = []; - - for (var key in object) { - keys.push(key); - } - - keys.reverse(); - return function next() { - while (keys.length) { - var key = keys.pop(); - - if (key in object) { - next.value = key; - next.done = false; - return next; - } - } - - next.done = true; - return next; - }; - }; - - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - - if (iteratorMethod) { - return iteratorMethod.call(iterable); - } - - if (typeof iterable.next === "function") { - return iterable; - } - - if (!isNaN(iterable.length)) { - var i = -1, - next = function next() { - while (++i < iterable.length) { - if (hasOwn.call(iterable, i)) { - next.value = iterable[i]; - next.done = false; - return next; - } - } - - next.value = undefined; - next.done = true; - return next; - }; - - return next.next = next; - } - } - - return { - next: doneResult - }; - } - - exports.values = values; - - function doneResult() { - return { - value: undefined, - done: true - }; - } - - Context.prototype = { - constructor: Context, - reset: function reset(skipTempReset) { - this.prev = 0; - this.next = 0; - this.sent = this._sent = undefined; - this.done = false; - this.delegate = null; - this.method = "next"; - this.arg = undefined; - this.tryEntries.forEach(resetTryEntry); - - if (!skipTempReset) { - for (var name in this) { - if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { - this[name] = undefined; - } - } - } - }, - stop: function stop() { - this.done = true; - var rootEntry = this.tryEntries[0]; - var rootRecord = rootEntry.completion; - - if (rootRecord.type === "throw") { - throw rootRecord.arg; - } - - return this.rval; - }, - dispatchException: function dispatchException(exception) { - if (this.done) { - throw exception; - } - - var context = this; - - function handle(loc, caught) { - record.type = "throw"; - record.arg = exception; - context.next = loc; - - if (caught) { - context.method = "next"; - context.arg = undefined; - } - - return !!caught; - } - - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - var record = entry.completion; - - if (entry.tryLoc === "root") { - return handle("end"); - } - - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"); - var hasFinally = hasOwn.call(entry, "finallyLoc"); - - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } else if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else if (hasCatch) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } - } else if (hasFinally) { - if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else { - throw new Error("try statement without catch or finally"); - } - } - } - }, - abrupt: function abrupt(type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - - if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { - finallyEntry = null; - } - - var record = finallyEntry ? finallyEntry.completion : {}; - record.type = type; - record.arg = arg; - - if (finallyEntry) { - this.method = "next"; - this.next = finallyEntry.finallyLoc; - return ContinueSentinel; - } - - return this.complete(record); - }, - complete: function complete(record, afterLoc) { - if (record.type === "throw") { - throw record.arg; - } - - if (record.type === "break" || record.type === "continue") { - this.next = record.arg; - } else if (record.type === "return") { - this.rval = this.arg = record.arg; - this.method = "return"; - this.next = "end"; - } else if (record.type === "normal" && afterLoc) { - this.next = afterLoc; - } - - return ContinueSentinel; - }, - finish: function finish(finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.finallyLoc === finallyLoc) { - this.complete(entry.completion, entry.afterLoc); - resetTryEntry(entry); - return ContinueSentinel; - } - } - }, - "catch": function _catch(tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - - if (record.type === "throw") { - var thrown = record.arg; - resetTryEntry(entry); - } - - return thrown; - } - } - - throw new Error("illegal catch attempt"); - }, - delegateYield: function delegateYield(iterable, resultName, nextLoc) { - this.delegate = { - iterator: values(iterable), - resultName: resultName, - nextLoc: nextLoc - }; - - if (this.method === "next") { - this.arg = undefined; - } - - return ContinueSentinel; - } - }; - return exports; - }((false ? 0 : _typeof(module)) === "object" ? module.exports : {}); - - try { - regeneratorRuntime = runtime; - } catch (accidentalStrictMode) { - Function("r", "regeneratorRuntime = r")(runtime); - } - - /***/ - }), - /* 4 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.arrayByteLength = arrayByteLength; - exports.arraysToBytes = arraysToBytes; - exports.assert = assert; - exports.bytesToString = bytesToString; - exports.createObjectURL = createObjectURL; - exports.createPromiseCapability = createPromiseCapability; - exports.createValidAbsoluteUrl = createValidAbsoluteUrl; - exports.escapeString = escapeString; - exports.getModificationDate = getModificationDate; - exports.getVerbosityLevel = getVerbosityLevel; - exports.info = info; - exports.isArrayBuffer = isArrayBuffer; - exports.isArrayEqual = isArrayEqual; - exports.isAscii = isAscii; - exports.isBool = isBool; - exports.isNum = isNum; - exports.isSameOrigin = isSameOrigin; - exports.isString = isString; - exports.objectFromMap = objectFromMap; - exports.objectSize = objectSize; - exports.removeNullCharacters = removeNullCharacters; - exports.setVerbosityLevel = setVerbosityLevel; - exports.shadow = shadow; - exports.string32 = string32; - exports.stringToBytes = stringToBytes; - exports.stringToPDFString = stringToPDFString; - exports.stringToUTF16BEString = stringToUTF16BEString; - exports.stringToUTF8String = stringToUTF8String; - exports.unreachable = unreachable; - exports.utf8StringToString = utf8StringToString; - exports.warn = warn; - exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; - - __w_pdfjs_require__(5); - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); - } - - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e2) { - throw _e2; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; - exports.IDENTITY_MATRIX = IDENTITY_MATRIX; - var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; - exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; - var PermissionFlag = { - PRINT: 0x04, - MODIFY_CONTENTS: 0x08, - COPY: 0x10, - MODIFY_ANNOTATIONS: 0x20, - FILL_INTERACTIVE_FORMS: 0x100, - COPY_FOR_ACCESSIBILITY: 0x200, - ASSEMBLE: 0x400, - PRINT_HIGH_QUALITY: 0x800 - }; - exports.PermissionFlag = PermissionFlag; - var TextRenderingMode = { - FILL: 0, - STROKE: 1, - FILL_STROKE: 2, - INVISIBLE: 3, - FILL_ADD_TO_PATH: 4, - STROKE_ADD_TO_PATH: 5, - FILL_STROKE_ADD_TO_PATH: 6, - ADD_TO_PATH: 7, - FILL_STROKE_MASK: 3, - ADD_TO_PATH_FLAG: 4 - }; - exports.TextRenderingMode = TextRenderingMode; - var ImageKind = { - GRAYSCALE_1BPP: 1, - RGB_24BPP: 2, - RGBA_32BPP: 3 - }; - exports.ImageKind = ImageKind; - var AnnotationType = { - TEXT: 1, - LINK: 2, - FREETEXT: 3, - LINE: 4, - SQUARE: 5, - CIRCLE: 6, - POLYGON: 7, - POLYLINE: 8, - HIGHLIGHT: 9, - UNDERLINE: 10, - SQUIGGLY: 11, - STRIKEOUT: 12, - STAMP: 13, - CARET: 14, - INK: 15, - POPUP: 16, - FILEATTACHMENT: 17, - SOUND: 18, - MOVIE: 19, - WIDGET: 20, - SCREEN: 21, - PRINTERMARK: 22, - TRAPNET: 23, - WATERMARK: 24, - THREED: 25, - REDACT: 26 - }; - exports.AnnotationType = AnnotationType; - var AnnotationStateModelType = { - MARKED: "Marked", - REVIEW: "Review" - }; - exports.AnnotationStateModelType = AnnotationStateModelType; - var AnnotationMarkedState = { - MARKED: "Marked", - UNMARKED: "Unmarked" - }; - exports.AnnotationMarkedState = AnnotationMarkedState; - var AnnotationReviewState = { - ACCEPTED: "Accepted", - REJECTED: "Rejected", - CANCELLED: "Cancelled", - COMPLETED: "Completed", - NONE: "None" - }; - exports.AnnotationReviewState = AnnotationReviewState; - var AnnotationReplyType = { - GROUP: "Group", - REPLY: "R" - }; - exports.AnnotationReplyType = AnnotationReplyType; - var AnnotationFlag = { - INVISIBLE: 0x01, - HIDDEN: 0x02, - PRINT: 0x04, - NOZOOM: 0x08, - NOROTATE: 0x10, - NOVIEW: 0x20, - READONLY: 0x40, - LOCKED: 0x80, - TOGGLENOVIEW: 0x100, - LOCKEDCONTENTS: 0x200 - }; - exports.AnnotationFlag = AnnotationFlag; - var AnnotationFieldFlag = { - READONLY: 0x0000001, - REQUIRED: 0x0000002, - NOEXPORT: 0x0000004, - MULTILINE: 0x0001000, - PASSWORD: 0x0002000, - NOTOGGLETOOFF: 0x0004000, - RADIO: 0x0008000, - PUSHBUTTON: 0x0010000, - COMBO: 0x0020000, - EDIT: 0x0040000, - SORT: 0x0080000, - FILESELECT: 0x0100000, - MULTISELECT: 0x0200000, - DONOTSPELLCHECK: 0x0400000, - DONOTSCROLL: 0x0800000, - COMB: 0x1000000, - RICHTEXT: 0x2000000, - RADIOSINUNISON: 0x2000000, - COMMITONSELCHANGE: 0x4000000 - }; - exports.AnnotationFieldFlag = AnnotationFieldFlag; - var AnnotationBorderStyleType = { - SOLID: 1, - DASHED: 2, - BEVELED: 3, - INSET: 4, - UNDERLINE: 5 - }; - exports.AnnotationBorderStyleType = AnnotationBorderStyleType; - var AnnotationActionEventType = { - E: "Mouse Enter", - X: "Mouse Exit", - D: "Mouse Down", - U: "Mouse Up", - Fo: "Focus", - Bl: "Blur", - PO: "PageOpen", - PC: "PageClose", - PV: "PageVisible", - PI: "PageInvisible", - K: "Keystroke", - F: "Format", - V: "Validate", - C: "Calculate" - }; - exports.AnnotationActionEventType = AnnotationActionEventType; - var DocumentActionEventType = { - WC: "WillClose", - WS: "WillSave", - DS: "DidSave", - WP: "WillPrint", - DP: "DidPrint" - }; - exports.DocumentActionEventType = DocumentActionEventType; - var PageActionEventType = { - O: "PageOpen", - C: "PageClose" - }; - exports.PageActionEventType = PageActionEventType; - var StreamType = { - UNKNOWN: "UNKNOWN", - FLATE: "FLATE", - LZW: "LZW", - DCT: "DCT", - JPX: "JPX", - JBIG: "JBIG", - A85: "A85", - AHX: "AHX", - CCF: "CCF", - RLX: "RLX" - }; - exports.StreamType = StreamType; - var FontType = { - UNKNOWN: "UNKNOWN", - TYPE1: "TYPE1", - TYPE1C: "TYPE1C", - CIDFONTTYPE0: "CIDFONTTYPE0", - CIDFONTTYPE0C: "CIDFONTTYPE0C", - TRUETYPE: "TRUETYPE", - CIDFONTTYPE2: "CIDFONTTYPE2", - TYPE3: "TYPE3", - OPENTYPE: "OPENTYPE", - TYPE0: "TYPE0", - MMTYPE1: "MMTYPE1" - }; - exports.FontType = FontType; - var VerbosityLevel = { - ERRORS: 0, - WARNINGS: 1, - INFOS: 5 - }; - exports.VerbosityLevel = VerbosityLevel; - var CMapCompressionType = { - NONE: 0, - BINARY: 1, - STREAM: 2 - }; - exports.CMapCompressionType = CMapCompressionType; - var OPS = { - dependency: 1, - setLineWidth: 2, - setLineCap: 3, - setLineJoin: 4, - setMiterLimit: 5, - setDash: 6, - setRenderingIntent: 7, - setFlatness: 8, - setGState: 9, - save: 10, - restore: 11, - transform: 12, - moveTo: 13, - lineTo: 14, - curveTo: 15, - curveTo2: 16, - curveTo3: 17, - closePath: 18, - rectangle: 19, - stroke: 20, - closeStroke: 21, - fill: 22, - eoFill: 23, - fillStroke: 24, - eoFillStroke: 25, - closeFillStroke: 26, - closeEOFillStroke: 27, - endPath: 28, - clip: 29, - eoClip: 30, - beginText: 31, - endText: 32, - setCharSpacing: 33, - setWordSpacing: 34, - setHScale: 35, - setLeading: 36, - setFont: 37, - setTextRenderingMode: 38, - setTextRise: 39, - moveText: 40, - setLeadingMoveText: 41, - setTextMatrix: 42, - nextLine: 43, - showText: 44, - showSpacedText: 45, - nextLineShowText: 46, - nextLineSetSpacingShowText: 47, - setCharWidth: 48, - setCharWidthAndBounds: 49, - setStrokeColorSpace: 50, - setFillColorSpace: 51, - setStrokeColor: 52, - setStrokeColorN: 53, - setFillColor: 54, - setFillColorN: 55, - setStrokeGray: 56, - setFillGray: 57, - setStrokeRGBColor: 58, - setFillRGBColor: 59, - setStrokeCMYKColor: 60, - setFillCMYKColor: 61, - shadingFill: 62, - beginInlineImage: 63, - beginImageData: 64, - endInlineImage: 65, - paintXObject: 66, - markPoint: 67, - markPointProps: 68, - beginMarkedContent: 69, - beginMarkedContentProps: 70, - endMarkedContent: 71, - beginCompat: 72, - endCompat: 73, - paintFormXObjectBegin: 74, - paintFormXObjectEnd: 75, - beginGroup: 76, - endGroup: 77, - beginAnnotations: 78, - endAnnotations: 79, - beginAnnotation: 80, - endAnnotation: 81, - paintJpegXObject: 82, - paintImageMaskXObject: 83, - paintImageMaskXObjectGroup: 84, - paintImageXObject: 85, - paintInlineImageXObject: 86, - paintInlineImageXObjectGroup: 87, - paintImageXObjectRepeat: 88, - paintImageMaskXObjectRepeat: 89, - paintSolidColorImageMask: 90, - constructPath: 91 - }; - exports.OPS = OPS; - var UNSUPPORTED_FEATURES = { - unknown: "unknown", - forms: "forms", - javaScript: "javaScript", - smask: "smask", - shadingPattern: "shadingPattern", - font: "font", - errorTilingPattern: "errorTilingPattern", - errorExtGState: "errorExtGState", - errorXObject: "errorXObject", - errorFontLoadType3: "errorFontLoadType3", - errorFontState: "errorFontState", - errorFontMissing: "errorFontMissing", - errorFontTranslate: "errorFontTranslate", - errorColorSpace: "errorColorSpace", - errorOperatorList: "errorOperatorList", - errorFontToUnicode: "errorFontToUnicode", - errorFontLoadNative: "errorFontLoadNative", - errorFontGetPath: "errorFontGetPath", - errorMarkedContent: "errorMarkedContent" - }; - exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; - var PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 - }; - exports.PasswordResponses = PasswordResponses; - var verbosity = VerbosityLevel.WARNINGS; - - function setVerbosityLevel(level) { - if (Number.isInteger(level)) { - verbosity = level; - } - } - - function getVerbosityLevel() { - return verbosity; - } - - function info(msg) { - if (verbosity >= VerbosityLevel.INFOS) { - console.log("Info: ".concat(msg)); - } - } - - function warn(msg) { - if (verbosity >= VerbosityLevel.WARNINGS) { - console.log("Warning: ".concat(msg)); - } - } - - function unreachable(msg) { - throw new Error(msg); - } - - function assert(cond, msg) { - if (!cond) { - unreachable(msg); - } - } - - function isSameOrigin(baseUrl, otherUrl) { - var base; - - try { - base = new URL(baseUrl); - - if (!base.origin || base.origin === "null") { - return false; - } - } catch (e) { - return false; - } - - var other = new URL(otherUrl, base); - return base.origin === other.origin; - } - - function _isValidProtocol(url) { - if (!url) { - return false; - } - - switch (url.protocol) { - case "http:": - case "https:": - case "ftp:": - case "mailto:": - case "tel:": - return true; - - default: - return false; - } - } - - function createValidAbsoluteUrl(url, baseUrl) { - if (!url) { - return null; - } - - try { - var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); - - if (_isValidProtocol(absoluteUrl)) { - return absoluteUrl; - } - } catch (ex) { - } - - return null; - } - - function shadow(obj, prop, value) { - Object.defineProperty(obj, prop, { - value: value, - enumerable: true, - configurable: true, - writable: false - }); - return value; - } - - var BaseException = function BaseExceptionClosure() { - function BaseException(message) { - if (this.constructor === BaseException) { - unreachable("Cannot initialize BaseException."); - } - - this.message = message; - this.name = this.constructor.name; - } - - BaseException.prototype = new Error(); - BaseException.constructor = BaseException; - return BaseException; - }(); - - exports.BaseException = BaseException; - - var PasswordException = /*#__PURE__*/function (_BaseException) { - _inherits(PasswordException, _BaseException); - - var _super = _createSuper(PasswordException); - - function PasswordException(msg, code) { - var _this; - - _classCallCheck(this, PasswordException); - - _this = _super.call(this, msg); - _this.code = code; - return _this; - } - - return PasswordException; - }(BaseException); - - exports.PasswordException = PasswordException; - - var UnknownErrorException = /*#__PURE__*/function (_BaseException2) { - _inherits(UnknownErrorException, _BaseException2); - - var _super2 = _createSuper(UnknownErrorException); - - function UnknownErrorException(msg, details) { - var _this2; - - _classCallCheck(this, UnknownErrorException); - - _this2 = _super2.call(this, msg); - _this2.details = details; - return _this2; - } - - return UnknownErrorException; - }(BaseException); - - exports.UnknownErrorException = UnknownErrorException; - - var InvalidPDFException = /*#__PURE__*/function (_BaseException3) { - _inherits(InvalidPDFException, _BaseException3); - - var _super3 = _createSuper(InvalidPDFException); - - function InvalidPDFException() { - _classCallCheck(this, InvalidPDFException); - - return _super3.apply(this, arguments); - } - - return InvalidPDFException; - }(BaseException); - - exports.InvalidPDFException = InvalidPDFException; - - var MissingPDFException = /*#__PURE__*/function (_BaseException4) { - _inherits(MissingPDFException, _BaseException4); - - var _super4 = _createSuper(MissingPDFException); - - function MissingPDFException() { - _classCallCheck(this, MissingPDFException); - - return _super4.apply(this, arguments); - } - - return MissingPDFException; - }(BaseException); - - exports.MissingPDFException = MissingPDFException; - - var UnexpectedResponseException = /*#__PURE__*/function (_BaseException5) { - _inherits(UnexpectedResponseException, _BaseException5); - - var _super5 = _createSuper(UnexpectedResponseException); - - function UnexpectedResponseException(msg, status) { - var _this3; - - _classCallCheck(this, UnexpectedResponseException); - - _this3 = _super5.call(this, msg); - _this3.status = status; - return _this3; - } - - return UnexpectedResponseException; - }(BaseException); - - exports.UnexpectedResponseException = UnexpectedResponseException; - - var FormatError = /*#__PURE__*/function (_BaseException6) { - _inherits(FormatError, _BaseException6); - - var _super6 = _createSuper(FormatError); - - function FormatError() { - _classCallCheck(this, FormatError); - - return _super6.apply(this, arguments); - } - - return FormatError; - }(BaseException); - - exports.FormatError = FormatError; - - var AbortException = /*#__PURE__*/function (_BaseException7) { - _inherits(AbortException, _BaseException7); - - var _super7 = _createSuper(AbortException); - - function AbortException() { - _classCallCheck(this, AbortException); - - return _super7.apply(this, arguments); - } - - return AbortException; - }(BaseException); - - exports.AbortException = AbortException; - var NullCharactersRegExp = /\x00/g; - - function removeNullCharacters(str) { - if (typeof str !== "string") { - warn("The argument for removeNullCharacters must be a string."); - return str; - } - - return str.replace(NullCharactersRegExp, ""); - } - - function bytesToString(bytes) { - assert(bytes !== null && _typeof(bytes) === "object" && bytes.length !== undefined, "Invalid argument for bytesToString"); - var length = bytes.length; - var MAX_ARGUMENT_COUNT = 8192; - - if (length < MAX_ARGUMENT_COUNT) { - return String.fromCharCode.apply(null, bytes); - } - - var strBuf = []; - - for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - var chunk = bytes.subarray(i, chunkEnd); - strBuf.push(String.fromCharCode.apply(null, chunk)); - } - - return strBuf.join(""); - } - - function stringToBytes(str) { - assert(typeof str === "string", "Invalid argument for stringToBytes"); - var length = str.length; - var bytes = new Uint8Array(length); - - for (var i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xff; - } - - return bytes; - } - - function arrayByteLength(arr) { - if (arr.length !== undefined) { - return arr.length; - } - - assert(arr.byteLength !== undefined, "arrayByteLength - invalid argument."); - return arr.byteLength; - } - - function arraysToBytes(arr) { - var length = arr.length; - - if (length === 1 && arr[0] instanceof Uint8Array) { - return arr[0]; - } - - var resultLength = 0; - - for (var i = 0; i < length; i++) { - resultLength += arrayByteLength(arr[i]); - } - - var pos = 0; - var data = new Uint8Array(resultLength); - - for (var _i = 0; _i < length; _i++) { - var item = arr[_i]; - - if (!(item instanceof Uint8Array)) { - if (typeof item === "string") { - item = stringToBytes(item); - } else { - item = new Uint8Array(item); - } - } - - var itemLength = item.byteLength; - data.set(item, pos); - pos += itemLength; - } - - return data; - } - - function string32(value) { - return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); - } - - function objectSize(obj) { - return Object.keys(obj).length; - } - - function objectFromMap(map) { - var obj = Object.create(null); - - var _iterator = _createForOfIteratorHelper(map), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _step$value = _slicedToArray(_step.value, 2), - key = _step$value[0], - value = _step$value[1]; - - obj[key] = value; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return obj; - } - - function isLittleEndian() { - var buffer8 = new Uint8Array(4); - buffer8[0] = 1; - var view32 = new Uint32Array(buffer8.buffer, 0, 1); - return view32[0] === 1; - } - - var IsLittleEndianCached = { - get value() { - return shadow(this, "value", isLittleEndian()); - } - - }; - exports.IsLittleEndianCached = IsLittleEndianCached; - - function isEvalSupported() { - try { - new Function(""); - return true; - } catch (e) { - return false; - } - } - - var IsEvalSupportedCached = { - get value() { - return shadow(this, "value", isEvalSupported()); - } - - }; - exports.IsEvalSupportedCached = IsEvalSupportedCached; - - var hexNumbers = _toConsumableArray(Array(256).keys()).map(function (n) { - return n.toString(16).padStart(2, "0"); - }); - - var Util = /*#__PURE__*/function () { - function Util() { - _classCallCheck(this, Util); - } - - _createClass(Util, null, [{ - key: "makeHexColor", - value: function makeHexColor(r, g, b) { - return "#".concat(hexNumbers[r]).concat(hexNumbers[g]).concat(hexNumbers[b]); - } - }, { - key: "transform", - value: function transform(m1, m2) { - return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; - } - }, { - key: "applyTransform", - value: function applyTransform(p, m) { - var xt = p[0] * m[0] + p[1] * m[2] + m[4]; - var yt = p[0] * m[1] + p[1] * m[3] + m[5]; - return [xt, yt]; - } - }, { - key: "applyInverseTransform", - value: function applyInverseTransform(p, m) { - var d = m[0] * m[3] - m[1] * m[2]; - var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; - return [xt, yt]; - } - }, { - key: "getAxialAlignedBoundingBox", - value: function getAxialAlignedBoundingBox(r, m) { - var p1 = Util.applyTransform(r, m); - var p2 = Util.applyTransform(r.slice(2, 4), m); - var p3 = Util.applyTransform([r[0], r[3]], m); - var p4 = Util.applyTransform([r[2], r[1]], m); - return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; - } - }, { - key: "inverseTransform", - value: function inverseTransform(m) { - var d = m[0] * m[3] - m[1] * m[2]; - return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - } - }, { - key: "apply3dTransform", - value: function apply3dTransform(m, v) { - return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; - } - }, { - key: "singularValueDecompose2dScale", - value: function singularValueDecompose2dScale(m) { - var transpose = [m[0], m[2], m[1], m[3]]; - var a = m[0] * transpose[0] + m[1] * transpose[2]; - var b = m[0] * transpose[1] + m[1] * transpose[3]; - var c = m[2] * transpose[0] + m[3] * transpose[2]; - var d = m[2] * transpose[1] + m[3] * transpose[3]; - var first = (a + d) / 2; - var second = Math.sqrt(Math.pow(a + d, 2) - 4 * (a * d - c * b)) / 2; - var sx = first + second || 1; - var sy = first - second || 1; - return [Math.sqrt(sx), Math.sqrt(sy)]; - } - }, { - key: "normalizeRect", - value: function normalizeRect(rect) { - var r = rect.slice(0); - - if (rect[0] > rect[2]) { - r[0] = rect[2]; - r[2] = rect[0]; - } - - if (rect[1] > rect[3]) { - r[1] = rect[3]; - r[3] = rect[1]; - } - - return r; - } - }, { - key: "intersect", - value: function intersect(rect1, rect2) { - function compare(a, b) { - return a - b; - } - - var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare); - var orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare); - var result = []; - rect1 = Util.normalizeRect(rect1); - rect2 = Util.normalizeRect(rect2); - - if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) { - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return null; - } - - if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) { - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return null; - } - - return result; - } - }]); - - return Util; - }(); - - exports.Util = Util; - var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC]; - - function stringToPDFString(str) { - var length = str.length, - strBuf = []; - - if (str[0] === "\xFE" && str[1] === "\xFF") { - for (var i = 2; i < length; i += 2) { - strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1))); - } - } else if (str[0] === "\xFF" && str[1] === "\xFE") { - for (var _i2 = 2; _i2 < length; _i2 += 2) { - strBuf.push(String.fromCharCode(str.charCodeAt(_i2 + 1) << 8 | str.charCodeAt(_i2))); - } - } else { - for (var _i3 = 0; _i3 < length; ++_i3) { - var code = PDFStringTranslateTable[str.charCodeAt(_i3)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(_i3)); - } - } - - return strBuf.join(""); - } - - function escapeString(str) { - return str.replace(/([()\\\n\r])/g, function (match) { - if (match === "\n") { - return "\\n"; - } else if (match === "\r") { - return "\\r"; - } - - return "\\".concat(match); - }); - } - - function isAscii(str) { - return /^[\x00-\x7F]*$/.test(str); - } - - function stringToUTF16BEString(str) { - var buf = ["\xFE\xFF"]; - - for (var i = 0, ii = str.length; i < ii; i++) { - var _char = str.charCodeAt(i); - - buf.push(String.fromCharCode(_char >> 8 & 0xff)); - buf.push(String.fromCharCode(_char & 0xff)); - } - - return buf.join(""); - } - - function stringToUTF8String(str) { - return decodeURIComponent(escape(str)); - } - - function utf8StringToString(str) { - return unescape(encodeURIComponent(str)); - } - - function isBool(v) { - return typeof v === "boolean"; - } - - function isNum(v) { - return typeof v === "number"; - } - - function isString(v) { - return typeof v === "string"; - } - - function isArrayBuffer(v) { - return _typeof(v) === "object" && v !== null && v.byteLength !== undefined; - } - - function isArrayEqual(arr1, arr2) { - if (arr1.length !== arr2.length) { - return false; - } - - for (var i = 0, ii = arr1.length; i < ii; i++) { - if (arr1[i] !== arr2[i]) { - return false; - } - } - - return true; - } - - function getModificationDate() { - var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); - var buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; - return buffer.join(""); - } - - function createPromiseCapability() { - var capability = Object.create(null); - var isSettled = false; - Object.defineProperty(capability, "settled", { - get: function get() { - return isSettled; - } - }); - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = function (data) { - isSettled = true; - resolve(data); - }; - - capability.reject = function (reason) { - isSettled = true; - reject(reason); - }; - }); - return capability; - } - - function createObjectURL(data) { - var contentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; - var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (URL.createObjectURL && !forceDataSchema) { - return URL.createObjectURL(new Blob([data], { - type: contentType - })); - } - - var digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - var buffer = "data:".concat(contentType, ";base64,"); - - for (var i = 0, ii = data.length; i < ii; i += 3) { - var b1 = data[i] & 0xff; - var b2 = data[i + 1] & 0xff; - var b3 = data[i + 2] & 0xff; - var d1 = b1 >> 2, - d2 = (b1 & 3) << 4 | b2 >> 4; - var d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64; - var d4 = i + 2 < ii ? b3 & 0x3f : 64; - buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; - } - - return buffer; - } - - /***/ - }), - /* 5 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - - var _is_node = __w_pdfjs_require__(6); - - if (typeof globalThis === "undefined" || !globalThis._pdfjsCompatibilityChecked) { - if (typeof globalThis === "undefined" || globalThis.Math !== Math) { - globalThis = __w_pdfjs_require__(7); - } - - globalThis._pdfjsCompatibilityChecked = true; - - (function checkNodeBtoa() { - if (globalThis.btoa || !_is_node.isNodeJS) { - return; - } - - globalThis.btoa = function (chars) { - return Buffer.from(chars, "binary").toString("base64"); - }; - })(); - - (function checkNodeAtob() { - if (globalThis.atob || !_is_node.isNodeJS) { - return; - } - - globalThis.atob = function (input) { - return Buffer.from(input, "base64").toString("binary"); - }; - })(); - - (function checkObjectFromEntries() { - if (Object.fromEntries) { - return; - } - - __w_pdfjs_require__(52); - })(); - - (function checkPromise() { - if (globalThis.Promise.allSettled) { - return; - } - - globalThis.Promise = __w_pdfjs_require__(85); - })(); - - (function checkReadableStream() { - var isReadableStreamSupported = false; - - if (typeof ReadableStream !== "undefined") { - try { - new ReadableStream({ - start: function start(controller) { - controller.close(); - } - }); - isReadableStreamSupported = true; - } catch (e) { - } - } - - if (isReadableStreamSupported) { - return; - } - - globalThis.ReadableStream = __w_pdfjs_require__(111).ReadableStream; - })(); - - (function checkStringPadStart() { - if (String.prototype.padStart) { - return; - } - - __w_pdfjs_require__(112); - })(); - - (function checkStringPadEnd() { - if (String.prototype.padEnd) { - return; - } - - __w_pdfjs_require__(118); - })(); - - (function checkObjectValues() { - if (Object.values) { - return; - } - - Object.values = __w_pdfjs_require__(120); - })(); - - (function checkObjectEntries() { - if (Object.entries) { - return; - } - - Object.entries = __w_pdfjs_require__(123); - })(); - } - - /***/ - }), - /* 6 */ - /***/ ((__unused_webpack_module, exports) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.isNodeJS = void 0; - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - var isNodeJS = (typeof process === "undefined" ? "undefined" : _typeof(process)) === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); - exports.isNodeJS = isNodeJS; - - /***/ - }), - /* 7 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - __w_pdfjs_require__(8); - module.exports = __w_pdfjs_require__(10); - - /***/ - }), - /* 8 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var $ = __w_pdfjs_require__(9); - var global = __w_pdfjs_require__(10); - $({global: true}, {globalThis: global}); - - /***/ - }), - /* 9 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var getOwnPropertyDescriptor = __w_pdfjs_require__(11).f; - var createNonEnumerableProperty = __w_pdfjs_require__(25); - var redefine = __w_pdfjs_require__(28); - var setGlobal = __w_pdfjs_require__(29); - var copyConstructorProperties = __w_pdfjs_require__(39); - var isForced = __w_pdfjs_require__(51); - module.exports = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global; - } else if (STATIC) { - target = global[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global[TARGET] || {}).prototype; - } - if (target) - for (key in source) { - sourceProperty = source[key]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else - targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty === typeof targetProperty) - continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - if (options.sham || targetProperty && targetProperty.sham) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } - redefine(target, key, sourceProperty, options); - } - }; - - /***/ - }), - /* 10 */ - /***/ ((module) => { - - var check = function (it) { - return it && it.Math == Math && it; - }; - module.exports = check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || function () { - return this; - }() || Function('return this')(); - - /***/ - }), - /* 11 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - var DESCRIPTORS = __w_pdfjs_require__(12); - var propertyIsEnumerableModule = __w_pdfjs_require__(14); - var createPropertyDescriptor = __w_pdfjs_require__(15); - var toIndexedObject = __w_pdfjs_require__(16); - var toPrimitive = __w_pdfjs_require__(20); - var has = __w_pdfjs_require__(22); - var IE8_DOM_DEFINE = __w_pdfjs_require__(23); - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) - try { - return $getOwnPropertyDescriptor(O, P); - } catch (error) { - } - if (has(O, P)) - return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); - }; - - /***/ - }), - /* 12 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var fails = __w_pdfjs_require__(13); - module.exports = !fails(function () { - return Object.defineProperty({}, 1, { - get: function () { - return 7; - } - })[1] != 7; - }); - - /***/ - }), - /* 13 */ - /***/ ((module) => { - - module.exports = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - /***/ - }), - /* 14 */ - /***/ ((__unused_webpack_module, exports) => { - - "use strict"; - - var $propertyIsEnumerable = {}.propertyIsEnumerable; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({1: 2}, 1); - exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable; - - /***/ - }), - /* 15 */ - /***/ ((module) => { - - module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - /***/ - }), - /* 16 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var IndexedObject = __w_pdfjs_require__(17); - var requireObjectCoercible = __w_pdfjs_require__(19); - module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); - }; - - /***/ - }), - /* 17 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var fails = __w_pdfjs_require__(13); - var classof = __w_pdfjs_require__(18); - var split = ''.split; - module.exports = fails(function () { - return !Object('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof(it) == 'String' ? split.call(it, '') : Object(it); - } : Object; - - /***/ - }), - /* 18 */ - /***/ ((module) => { - - var toString = {}.toString; - module.exports = function (it) { - return toString.call(it).slice(8, -1); - }; - - /***/ - }), - /* 19 */ - /***/ ((module) => { - - module.exports = function (it) { - if (it == undefined) - throw TypeError("Can't call method on " + it); - return it; - }; - - /***/ - }), - /* 20 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var isObject = __w_pdfjs_require__(21); - module.exports = function (input, PREFERRED_STRING) { - if (!isObject(input)) - return input; - var fn, val; - if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) - return val; - if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) - return val; - if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) - return val; - throw TypeError("Can't convert object to primitive value"); - }; - - /***/ - }), - /* 21 */ - /***/ ((module) => { - - module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; - }; - - /***/ - }), - /* 22 */ - /***/ ((module) => { - - var hasOwnProperty = {}.hasOwnProperty; - module.exports = function (it, key) { - return hasOwnProperty.call(it, key); - }; - - /***/ - }), - /* 23 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var DESCRIPTORS = __w_pdfjs_require__(12); - var fails = __w_pdfjs_require__(13); - var createElement = __w_pdfjs_require__(24); - module.exports = !DESCRIPTORS && !fails(function () { - return Object.defineProperty(createElement('div'), 'a', { - get: function () { - return 7; - } - }).a != 7; - }); - - /***/ - }), - /* 24 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var isObject = __w_pdfjs_require__(21); - var document = global.document; - var EXISTS = isObject(document) && isObject(document.createElement); - module.exports = function (it) { - return EXISTS ? document.createElement(it) : {}; - }; - - /***/ - }), - /* 25 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var DESCRIPTORS = __w_pdfjs_require__(12); - var definePropertyModule = __w_pdfjs_require__(26); - var createPropertyDescriptor = __w_pdfjs_require__(15); - module.exports = DESCRIPTORS ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - /***/ - }), - /* 26 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - var DESCRIPTORS = __w_pdfjs_require__(12); - var IE8_DOM_DEFINE = __w_pdfjs_require__(23); - var anObject = __w_pdfjs_require__(27); - var toPrimitive = __w_pdfjs_require__(20); - var $defineProperty = Object.defineProperty; - exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) - try { - return $defineProperty(O, P, Attributes); - } catch (error) { - } - if ('get' in Attributes || 'set' in Attributes) - throw TypeError('Accessors not supported'); - if ('value' in Attributes) - O[P] = Attributes.value; - return O; - }; - - /***/ - }), - /* 27 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var isObject = __w_pdfjs_require__(21); - module.exports = function (it) { - if (!isObject(it)) { - throw TypeError(String(it) + ' is not an object'); - } - return it; - }; - - /***/ - }), - /* 28 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var createNonEnumerableProperty = __w_pdfjs_require__(25); - var has = __w_pdfjs_require__(22); - var setGlobal = __w_pdfjs_require__(29); - var inspectSource = __w_pdfjs_require__(30); - var InternalStateModule = __w_pdfjs_require__(32); - var getInternalState = InternalStateModule.get; - var enforceInternalState = InternalStateModule.enforce; - var TEMPLATE = String(String).split('String'); - (module.exports = function (O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - var state; - if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) { - createNonEnumerableProperty(value, 'name', key); - } - state = enforceInternalState(value); - if (!state.source) { - state.source = TEMPLATE.join(typeof key == 'string' ? key : ''); - } - } - if (O === global) { - if (simple) - O[key] = value; - else - setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple = true; - } - if (simple) - O[key] = value; - else - createNonEnumerableProperty(O, key, value); - })(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || inspectSource(this); - }); - - /***/ - }), - /* 29 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var createNonEnumerableProperty = __w_pdfjs_require__(25); - module.exports = function (key, value) { - try { - createNonEnumerableProperty(global, key, value); - } catch (error) { - global[key] = value; - } - return value; - }; - - /***/ - }), - /* 30 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var store = __w_pdfjs_require__(31); - var functionToString = Function.toString; - if (typeof store.inspectSource != 'function') { - store.inspectSource = function (it) { - return functionToString.call(it); - }; - } - module.exports = store.inspectSource; - - /***/ - }), - /* 31 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var setGlobal = __w_pdfjs_require__(29); - var SHARED = '__core-js_shared__'; - var store = global[SHARED] || setGlobal(SHARED, {}); - module.exports = store; - - /***/ - }), - /* 32 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var NATIVE_WEAK_MAP = __w_pdfjs_require__(33); - var global = __w_pdfjs_require__(10); - var isObject = __w_pdfjs_require__(21); - var createNonEnumerableProperty = __w_pdfjs_require__(25); - var objectHas = __w_pdfjs_require__(22); - var shared = __w_pdfjs_require__(31); - var sharedKey = __w_pdfjs_require__(34); - var hiddenKeys = __w_pdfjs_require__(38); - var WeakMap = global.WeakMap; - var set, get, has; - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError('Incompatible receiver, ' + TYPE + ' required'); - } - return state; - }; - }; - if (NATIVE_WEAK_MAP) { - var store = shared.state || (shared.state = new WeakMap()); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - set = function (it, metadata) { - metadata.facade = it; - wmset.call(store, it, metadata); - return metadata; - }; - get = function (it) { - return wmget.call(store, it) || {}; - }; - has = function (it) { - return wmhas.call(store, it); - }; - } else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - set = function (it, metadata) { - metadata.facade = it; - createNonEnumerableProperty(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return objectHas(it, STATE); - }; - } - module.exports = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - /***/ - }), - /* 33 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var inspectSource = __w_pdfjs_require__(30); - var WeakMap = global.WeakMap; - module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); - - /***/ - }), - /* 34 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var shared = __w_pdfjs_require__(35); - var uid = __w_pdfjs_require__(37); - var keys = shared('keys'); - module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - - /***/ - }), - /* 35 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var IS_PURE = __w_pdfjs_require__(36); - var store = __w_pdfjs_require__(31); - (module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); - })('versions', []).push({ - version: '3.10.0', - mode: IS_PURE ? 'pure' : 'global', - copyright: '© 2021 Denis Pushkarev (zloirock.ru)' - }); - - /***/ - }), - /* 36 */ - /***/ ((module) => { - - module.exports = false; - - /***/ - }), - /* 37 */ - /***/ ((module) => { - - var id = 0; - var postfix = Math.random(); - module.exports = function (key) { - return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); - }; - - /***/ - }), - /* 38 */ - /***/ ((module) => { - - module.exports = {}; - - /***/ - }), - /* 39 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var has = __w_pdfjs_require__(22); - var ownKeys = __w_pdfjs_require__(40); - var getOwnPropertyDescriptorModule = __w_pdfjs_require__(11); - var definePropertyModule = __w_pdfjs_require__(26); - module.exports = function (target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!has(target, key)) - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - }; - - /***/ - }), - /* 40 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var getBuiltIn = __w_pdfjs_require__(41); - var getOwnPropertyNamesModule = __w_pdfjs_require__(43); - var getOwnPropertySymbolsModule = __w_pdfjs_require__(50); - var anObject = __w_pdfjs_require__(27); - module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; - }; - - /***/ - }), - /* 41 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var path = __w_pdfjs_require__(42); - var global = __w_pdfjs_require__(10); - var aFunction = function (variable) { - return typeof variable == 'function' ? variable : undefined; - }; - module.exports = function (namespace, method) { - return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; - }; - - /***/ - }), - /* 42 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - module.exports = global; - - /***/ - }), - /* 43 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - var internalObjectKeys = __w_pdfjs_require__(44); - var enumBugKeys = __w_pdfjs_require__(49); - var hiddenKeys = enumBugKeys.concat('length', 'prototype'); - exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); - }; - - /***/ - }), - /* 44 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var has = __w_pdfjs_require__(22); - var toIndexedObject = __w_pdfjs_require__(16); - var indexOf = __w_pdfjs_require__(45).indexOf; - var hiddenKeys = __w_pdfjs_require__(38); - module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) - !has(hiddenKeys, key) && has(O, key) && result.push(key); - while (names.length > i) - if (has(O, key = names[i++])) { - ~indexOf(result, key) || result.push(key); - } - return result; - }; - - /***/ - }), - /* 45 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var toIndexedObject = __w_pdfjs_require__(16); - var toLength = __w_pdfjs_require__(46); - var toAbsoluteIndex = __w_pdfjs_require__(48); - var createMethod = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - if (IS_INCLUDES && el != el) - while (length > index) { - value = O[index++]; - if (value != value) - return true; - } - else - for (; length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) - return IS_INCLUDES || index || 0; - } - return !IS_INCLUDES && -1; - }; - }; - module.exports = { - includes: createMethod(true), - indexOf: createMethod(false) - }; - - /***/ - }), - /* 46 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var toInteger = __w_pdfjs_require__(47); - var min = Math.min; - module.exports = function (argument) { - return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; - }; - - /***/ - }), - /* 47 */ - /***/ ((module) => { - - var ceil = Math.ceil; - var floor = Math.floor; - module.exports = function (argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); - }; - - /***/ - }), - /* 48 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var toInteger = __w_pdfjs_require__(47); - var max = Math.max; - var min = Math.min; - module.exports = function (index, length) { - var integer = toInteger(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); - }; - - /***/ - }), - /* 49 */ - /***/ ((module) => { - - module.exports = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - /***/ - }), - /* 50 */ - /***/ ((__unused_webpack_module, exports) => { - - exports.f = Object.getOwnPropertySymbols; - - /***/ - }), - /* 51 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var fails = __w_pdfjs_require__(13); - var replacement = /#|\.prototype\./; - var isForced = function (feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; - }; - var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - var data = isForced.data = {}; - var NATIVE = isForced.NATIVE = 'N'; - var POLYFILL = isForced.POLYFILL = 'P'; - module.exports = isForced; - - /***/ - }), - /* 52 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - __w_pdfjs_require__(53); - __w_pdfjs_require__(75); - var path = __w_pdfjs_require__(42); - module.exports = path.Object.fromEntries; - - /***/ - }), - /* 53 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var toIndexedObject = __w_pdfjs_require__(16); - var addToUnscopables = __w_pdfjs_require__(54); - var Iterators = __w_pdfjs_require__(65); - var InternalStateModule = __w_pdfjs_require__(32); - var defineIterator = __w_pdfjs_require__(66); - var ARRAY_ITERATOR = 'Array Iterator'; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); - module.exports = defineIterator(Array, 'Array', function (iterated, kind) { - setInternalState(this, { - type: ARRAY_ITERATOR, - target: toIndexedObject(iterated), - index: 0, - kind: kind - }); - }, function () { - var state = getInternalState(this); - var target = state.target; - var kind = state.kind; - var index = state.index++; - if (!target || index >= target.length) { - state.target = undefined; - return { - value: undefined, - done: true - }; - } - if (kind == 'keys') - return { - value: index, - done: false - }; - if (kind == 'values') - return { - value: target[index], - done: false - }; - return { - value: [ - index, - target[index] - ], - done: false - }; - }, 'values'); - Iterators.Arguments = Iterators.Array; - addToUnscopables('keys'); - addToUnscopables('values'); - addToUnscopables('entries'); - - /***/ - }), - /* 54 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var wellKnownSymbol = __w_pdfjs_require__(55); - var create = __w_pdfjs_require__(61); - var definePropertyModule = __w_pdfjs_require__(26); - var UNSCOPABLES = wellKnownSymbol('unscopables'); - var ArrayPrototype = Array.prototype; - if (ArrayPrototype[UNSCOPABLES] == undefined) { - definePropertyModule.f(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create(null) - }); - } - module.exports = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - /***/ - }), - /* 55 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var shared = __w_pdfjs_require__(35); - var has = __w_pdfjs_require__(22); - var uid = __w_pdfjs_require__(37); - var NATIVE_SYMBOL = __w_pdfjs_require__(56); - var USE_SYMBOL_AS_UID = __w_pdfjs_require__(60); - var WellKnownSymbolsStore = shared('wks'); - var Symbol = global.Symbol; - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; - module.exports = function (name) { - if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) { - if (NATIVE_SYMBOL && has(Symbol, name)) { - WellKnownSymbolsStore[name] = Symbol[name]; - } else { - WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); - } - } - return WellKnownSymbolsStore[name]; - }; - - /***/ - }), - /* 56 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var IS_NODE = __w_pdfjs_require__(57); - var V8_VERSION = __w_pdfjs_require__(58); - var fails = __w_pdfjs_require__(13); - module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - return !Symbol.sham && (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41); - }); - - /***/ - }), - /* 57 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var classof = __w_pdfjs_require__(18); - var global = __w_pdfjs_require__(10); - module.exports = classof(global.process) == 'process'; - - /***/ - }), - /* 58 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var userAgent = __w_pdfjs_require__(59); - var process = global.process; - var versions = process && process.versions; - var v8 = versions && versions.v8; - var match, version; - if (v8) { - match = v8.split('.'); - version = match[0] + match[1]; - } else if (userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) - version = match[1]; - } - } - module.exports = version && +version; - - /***/ - }), - /* 59 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var getBuiltIn = __w_pdfjs_require__(41); - module.exports = getBuiltIn('navigator', 'userAgent') || ''; - - /***/ - }), - /* 60 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var NATIVE_SYMBOL = __w_pdfjs_require__(56); - module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol'; - - /***/ - }), - /* 61 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var anObject = __w_pdfjs_require__(27); - var defineProperties = __w_pdfjs_require__(62); - var enumBugKeys = __w_pdfjs_require__(49); - var hiddenKeys = __w_pdfjs_require__(38); - var html = __w_pdfjs_require__(64); - var documentCreateElement = __w_pdfjs_require__(24); - var sharedKey = __w_pdfjs_require__(34); - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO = sharedKey('IE_PROTO'); - var EmptyConstructor = function () { - }; - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; - return temp; - }; - var NullProtoObjectViaIFrame = function () { - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = document.domain && new ActiveXObject('htmlfile'); - } catch (error) { - } - NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); - var length = enumBugKeys.length; - while (length--) - delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - hiddenKeys[IE_PROTO] = true; - module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - result[IE_PROTO] = O; - } else - result = NullProtoObject(); - return Properties === undefined ? result : defineProperties(result, Properties); - }; - - /***/ - }), - /* 62 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var DESCRIPTORS = __w_pdfjs_require__(12); - var definePropertyModule = __w_pdfjs_require__(26); - var anObject = __w_pdfjs_require__(27); - var objectKeys = __w_pdfjs_require__(63); - module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) - definePropertyModule.f(O, key = keys[index++], Properties[key]); - return O; - }; - - /***/ - }), - /* 63 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var internalObjectKeys = __w_pdfjs_require__(44); - var enumBugKeys = __w_pdfjs_require__(49); - module.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); - }; - - /***/ - }), - /* 64 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var getBuiltIn = __w_pdfjs_require__(41); - module.exports = getBuiltIn('document', 'documentElement'); - - /***/ - }), - /* 65 */ - /***/ ((module) => { - - module.exports = {}; - - /***/ - }), - /* 66 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var $ = __w_pdfjs_require__(9); - var createIteratorConstructor = __w_pdfjs_require__(67); - var getPrototypeOf = __w_pdfjs_require__(69); - var setPrototypeOf = __w_pdfjs_require__(73); - var setToStringTag = __w_pdfjs_require__(72); - var createNonEnumerableProperty = __w_pdfjs_require__(25); - var redefine = __w_pdfjs_require__(28); - var wellKnownSymbol = __w_pdfjs_require__(55); - var IS_PURE = __w_pdfjs_require__(36); - var Iterators = __w_pdfjs_require__(65); - var IteratorsCore = __w_pdfjs_require__(68); - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR = wellKnownSymbol('iterator'); - var KEYS = 'keys'; - var VALUES = 'values'; - var ENTRIES = 'entries'; - var returnThis = function () { - return this; - }; - module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - var getIterationMethod = function (KIND) { - if (KIND === DEFAULT && defaultIterator) - return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) - return IterablePrototype[KIND]; - switch (KIND) { - case KEYS: - return function keys() { - return new IteratorConstructor(this, KIND); - }; - case VALUES: - return function values() { - return new IteratorConstructor(this, KIND); - }; - case ENTRIES: - return function entries() { - return new IteratorConstructor(this, KIND); - }; - } - return function () { - return new IteratorConstructor(this); - }; - }; - var TO_STRING_TAG = NAME + ' Iterator'; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { - createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) - Iterators[TO_STRING_TAG] = returnThis; - } - } - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { - return nativeIterator.call(this); - }; - } - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator); - } - Iterators[NAME] = defaultIterator; - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) - for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } - } - else - $({ - target: NAME, - proto: true, - forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME - }, methods); - } - return methods; - }; - - /***/ - }), - /* 67 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var IteratorPrototype = __w_pdfjs_require__(68).IteratorPrototype; - var create = __w_pdfjs_require__(61); - var createPropertyDescriptor = __w_pdfjs_require__(15); - var setToStringTag = __w_pdfjs_require__(72); - var Iterators = __w_pdfjs_require__(65); - var returnThis = function () { - return this; - }; - module.exports = function (IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + ' Iterator'; - IteratorConstructor.prototype = create(IteratorPrototype, {next: createPropertyDescriptor(1, next)}); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; - }; - - /***/ - }), - /* 68 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var fails = __w_pdfjs_require__(13); - var getPrototypeOf = __w_pdfjs_require__(69); - var createNonEnumerableProperty = __w_pdfjs_require__(25); - var has = __w_pdfjs_require__(22); - var wellKnownSymbol = __w_pdfjs_require__(55); - var IS_PURE = __w_pdfjs_require__(36); - var ITERATOR = wellKnownSymbol('iterator'); - var BUGGY_SAFARI_ITERATORS = false; - var returnThis = function () { - return this; - }; - var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - if ([].keys) { - arrayIterator = [].keys(); - if (!('next' in arrayIterator)) - BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) - IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } - } - var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () { - var test = {}; - return IteratorPrototype[ITERATOR].call(test) !== test; - }); - if (NEW_ITERATOR_PROTOTYPE) - IteratorPrototype = {}; - if ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) { - createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis); - } - module.exports = { - IteratorPrototype: IteratorPrototype, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS - }; - - /***/ - }), - /* 69 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var has = __w_pdfjs_require__(22); - var toObject = __w_pdfjs_require__(70); - var sharedKey = __w_pdfjs_require__(34); - var CORRECT_PROTOTYPE_GETTER = __w_pdfjs_require__(71); - var IE_PROTO = sharedKey('IE_PROTO'); - var ObjectPrototype = Object.prototype; - module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) - return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } - return O instanceof Object ? ObjectPrototype : null; - }; - - /***/ - }), - /* 70 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var requireObjectCoercible = __w_pdfjs_require__(19); - module.exports = function (argument) { - return Object(requireObjectCoercible(argument)); - }; - - /***/ - }), - /* 71 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var fails = __w_pdfjs_require__(13); - module.exports = !fails(function () { - function F() { - } - - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - - /***/ - }), - /* 72 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var defineProperty = __w_pdfjs_require__(26).f; - var has = __w_pdfjs_require__(22); - var wellKnownSymbol = __w_pdfjs_require__(55); - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - module.exports = function (it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { - configurable: true, - value: TAG - }); - } - }; - - /***/ - }), - /* 73 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var anObject = __w_pdfjs_require__(27); - var aPossiblePrototype = __w_pdfjs_require__(74); - module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; - setter.call(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) { - } - return function setPrototypeOf(O, proto) { - anObject(O); - aPossiblePrototype(proto); - if (CORRECT_SETTER) - setter.call(O, proto); - else - O.__proto__ = proto; - return O; - }; - }() : undefined); - - /***/ - }), - /* 74 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var isObject = __w_pdfjs_require__(21); - module.exports = function (it) { - if (!isObject(it) && it !== null) { - throw TypeError("Can't set " + String(it) + ' as a prototype'); - } - return it; - }; - - /***/ - }), - /* 75 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var $ = __w_pdfjs_require__(9); - var iterate = __w_pdfjs_require__(76); - var createProperty = __w_pdfjs_require__(84); - $({ - target: 'Object', - stat: true - }, { - fromEntries: function fromEntries(iterable) { - var obj = {}; - iterate(iterable, function (k, v) { - createProperty(obj, k, v); - }, {AS_ENTRIES: true}); - return obj; - } - }); - - /***/ - }), - /* 76 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var anObject = __w_pdfjs_require__(27); - var isArrayIteratorMethod = __w_pdfjs_require__(77); - var toLength = __w_pdfjs_require__(46); - var bind = __w_pdfjs_require__(78); - var getIteratorMethod = __w_pdfjs_require__(80); - var iteratorClose = __w_pdfjs_require__(83); - var Result = function (stopped, result) { - this.stopped = stopped; - this.result = result; - }; - module.exports = function (iterable, unboundFunction, options) { - var that = options && options.that; - var AS_ENTRIES = !!(options && options.AS_ENTRIES); - var IS_ITERATOR = !!(options && options.IS_ITERATOR); - var INTERRUPTED = !!(options && options.INTERRUPTED); - var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED); - var iterator, iterFn, index, length, result, next, step; - var stop = function (condition) { - if (iterator) - iteratorClose(iterator); - return new Result(true, condition); - }; - var callFn = function (value) { - if (AS_ENTRIES) { - anObject(value); - return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); - } - return INTERRUPTED ? fn(value, stop) : fn(value); - }; - if (IS_ITERATOR) { - iterator = iterable; - } else { - iterFn = getIteratorMethod(iterable); - if (typeof iterFn != 'function') - throw TypeError('Target is not iterable'); - if (isArrayIteratorMethod(iterFn)) { - for (index = 0, length = toLength(iterable.length); length > index; index++) { - result = callFn(iterable[index]); - if (result && result instanceof Result) - return result; - } - return new Result(false); - } - iterator = iterFn.call(iterable); - } - next = iterator.next; - while (!(step = next.call(iterator)).done) { - try { - result = callFn(step.value); - } catch (error) { - iteratorClose(iterator); - throw error; - } - if (typeof result == 'object' && result && result instanceof Result) - return result; - } - return new Result(false); - }; - - /***/ - }), - /* 77 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var wellKnownSymbol = __w_pdfjs_require__(55); - var Iterators = __w_pdfjs_require__(65); - var ITERATOR = wellKnownSymbol('iterator'); - var ArrayPrototype = Array.prototype; - module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); - }; - - /***/ - }), - /* 78 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var aFunction = __w_pdfjs_require__(79); - module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) - return fn; - switch (length) { - case 0: - return function () { - return fn.call(that); - }; - case 1: - return function (a) { - return fn.call(that, a); - }; - case 2: - return function (a, b) { - return fn.call(that, a, b); - }; - case 3: - return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function () { - return fn.apply(that, arguments); - }; - }; - - /***/ - }), - /* 79 */ - /***/ ((module) => { - - module.exports = function (it) { - if (typeof it != 'function') { - throw TypeError(String(it) + ' is not a function'); - } - return it; - }; - - /***/ - }), - /* 80 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var classof = __w_pdfjs_require__(81); - var Iterators = __w_pdfjs_require__(65); - var wellKnownSymbol = __w_pdfjs_require__(55); - var ITERATOR = wellKnownSymbol('iterator'); - module.exports = function (it) { - if (it != undefined) - return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; - }; - - /***/ - }), - /* 81 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(82); - var classofRaw = __w_pdfjs_require__(18); - var wellKnownSymbol = __w_pdfjs_require__(55); - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - var CORRECT_ARGUMENTS = classofRaw(function () { - return arguments; - }()) == 'Arguments'; - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { - } - }; - module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; - }; - - /***/ - }), - /* 82 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var wellKnownSymbol = __w_pdfjs_require__(55); - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - var test = {}; - test[TO_STRING_TAG] = 'z'; - module.exports = String(test) === '[object z]'; - - /***/ - }), - /* 83 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var anObject = __w_pdfjs_require__(27); - module.exports = function (iterator) { - var returnMethod = iterator['return']; - if (returnMethod !== undefined) { - return anObject(returnMethod.call(iterator)).value; - } - }; - - /***/ - }), - /* 84 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var toPrimitive = __w_pdfjs_require__(20); - var definePropertyModule = __w_pdfjs_require__(26); - var createPropertyDescriptor = __w_pdfjs_require__(15); - module.exports = function (object, key, value) { - var propertyKey = toPrimitive(key); - if (propertyKey in object) - definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else - object[propertyKey] = value; - }; - - /***/ - }), - /* 85 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - __w_pdfjs_require__(86); - __w_pdfjs_require__(87); - __w_pdfjs_require__(89); - __w_pdfjs_require__(104); - __w_pdfjs_require__(105); - __w_pdfjs_require__(106); - __w_pdfjs_require__(107); - __w_pdfjs_require__(109); - var path = __w_pdfjs_require__(42); - module.exports = path.Promise; - - /***/ - }), - /* 86 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var $ = __w_pdfjs_require__(9); - var getPrototypeOf = __w_pdfjs_require__(69); - var setPrototypeOf = __w_pdfjs_require__(73); - var create = __w_pdfjs_require__(61); - var createNonEnumerableProperty = __w_pdfjs_require__(25); - var createPropertyDescriptor = __w_pdfjs_require__(15); - var iterate = __w_pdfjs_require__(76); - var $AggregateError = function AggregateError(errors, message) { - var that = this; - if (!(that instanceof $AggregateError)) - return new $AggregateError(errors, message); - if (setPrototypeOf) { - that = setPrototypeOf(new Error(undefined), getPrototypeOf(that)); - } - if (message !== undefined) - createNonEnumerableProperty(that, 'message', String(message)); - var errorsArray = []; - iterate(errors, errorsArray.push, {that: errorsArray}); - createNonEnumerableProperty(that, 'errors', errorsArray); - return that; - }; - $AggregateError.prototype = create(Error.prototype, { - constructor: createPropertyDescriptor(5, $AggregateError), - message: createPropertyDescriptor(5, ''), - name: createPropertyDescriptor(5, 'AggregateError') - }); - $({global: true}, {AggregateError: $AggregateError}); - - /***/ - }), - /* 87 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(82); - var redefine = __w_pdfjs_require__(28); - var toString = __w_pdfjs_require__(88); - if (!TO_STRING_TAG_SUPPORT) { - redefine(Object.prototype, 'toString', toString, {unsafe: true}); - } - - /***/ - }), - /* 88 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var TO_STRING_TAG_SUPPORT = __w_pdfjs_require__(82); - var classof = __w_pdfjs_require__(81); - module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { - return '[object ' + classof(this) + ']'; - }; - - /***/ - }), - /* 89 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var $ = __w_pdfjs_require__(9); - var IS_PURE = __w_pdfjs_require__(36); - var global = __w_pdfjs_require__(10); - var getBuiltIn = __w_pdfjs_require__(41); - var NativePromise = __w_pdfjs_require__(90); - var redefine = __w_pdfjs_require__(28); - var redefineAll = __w_pdfjs_require__(91); - var setToStringTag = __w_pdfjs_require__(72); - var setSpecies = __w_pdfjs_require__(92); - var isObject = __w_pdfjs_require__(21); - var aFunction = __w_pdfjs_require__(79); - var anInstance = __w_pdfjs_require__(93); - var inspectSource = __w_pdfjs_require__(30); - var iterate = __w_pdfjs_require__(76); - var checkCorrectnessOfIteration = __w_pdfjs_require__(94); - var speciesConstructor = __w_pdfjs_require__(95); - var task = __w_pdfjs_require__(96).set; - var microtask = __w_pdfjs_require__(98); - var promiseResolve = __w_pdfjs_require__(100); - var hostReportErrors = __w_pdfjs_require__(102); - var newPromiseCapabilityModule = __w_pdfjs_require__(101); - var perform = __w_pdfjs_require__(103); - var InternalStateModule = __w_pdfjs_require__(32); - var isForced = __w_pdfjs_require__(51); - var wellKnownSymbol = __w_pdfjs_require__(55); - var IS_NODE = __w_pdfjs_require__(57); - var V8_VERSION = __w_pdfjs_require__(58); - var SPECIES = wellKnownSymbol('species'); - var PROMISE = 'Promise'; - var getInternalState = InternalStateModule.get; - var setInternalState = InternalStateModule.set; - var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); - var PromiseConstructor = NativePromise; - var TypeError = global.TypeError; - var document = global.document; - var process = global.process; - var $fetch = getBuiltIn('fetch'); - var newPromiseCapability = newPromiseCapabilityModule.f; - var newGenericPromiseCapability = newPromiseCapability; - var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); - var NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function'; - var UNHANDLED_REJECTION = 'unhandledrejection'; - var REJECTION_HANDLED = 'rejectionhandled'; - var PENDING = 0; - var FULFILLED = 1; - var REJECTED = 2; - var HANDLED = 1; - var UNHANDLED = 2; - var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; - var FORCED = isForced(PROMISE, function () { - var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); - if (!GLOBAL_CORE_JS_PROMISE) { - if (V8_VERSION === 66) - return true; - if (!IS_NODE && !NATIVE_REJECTION_EVENT) - return true; - } - if (IS_PURE && !PromiseConstructor.prototype['finally']) - return true; - if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) - return false; - var promise = PromiseConstructor.resolve(1); - var FakePromise = function (exec) { - exec(function () { - }, function () { - }); - }; - var constructor = promise.constructor = {}; - constructor[SPECIES] = FakePromise; - return !(promise.then(function () { - }) instanceof FakePromise); - }); - var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { - PromiseConstructor.all(iterable)['catch'](function () { - }); - }); - var isThenable = function (it) { - var then; - return isObject(it) && typeof (then = it.then) == 'function' ? then : false; - }; - var notify = function (state, isReject) { - if (state.notified) - return; - state.notified = true; - var chain = state.reactions; - microtask(function () { - var value = state.value; - var ok = state.state == FULFILLED; - var index = 0; - while (chain.length > index) { - var reaction = chain[index++]; - var handler = ok ? reaction.ok : reaction.fail; - var resolve = reaction.resolve; - var reject = reaction.reject; - var domain = reaction.domain; - var result, then, exited; - try { - if (handler) { - if (!ok) { - if (state.rejection === UNHANDLED) - onHandleUnhandled(state); - state.rejection = HANDLED; - } - if (handler === true) - result = value; - else { - if (domain) - domain.enter(); - result = handler(value); - if (domain) { - domain.exit(); - exited = true; - } - } - if (result === reaction.promise) { - reject(TypeError('Promise-chain cycle')); - } else if (then = isThenable(result)) { - then.call(result, resolve, reject); - } else - resolve(result); - } else - reject(value); - } catch (error) { - if (domain && !exited) - domain.exit(); - reject(error); - } - } - state.reactions = []; - state.notified = false; - if (isReject && !state.rejection) - onUnhandled(state); - }); - }; - var dispatchEvent = function (name, promise, reason) { - var event, handler; - if (DISPATCH_EVENT) { - event = document.createEvent('Event'); - event.promise = promise; - event.reason = reason; - event.initEvent(name, false, true); - global.dispatchEvent(event); - } else - event = { - promise: promise, - reason: reason - }; - if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) - handler(event); - else if (name === UNHANDLED_REJECTION) - hostReportErrors('Unhandled promise rejection', reason); - }; - var onUnhandled = function (state) { - task.call(global, function () { - var promise = state.facade; - var value = state.value; - var IS_UNHANDLED = isUnhandled(state); - var result; - if (IS_UNHANDLED) { - result = perform(function () { - if (IS_NODE) { - process.emit('unhandledRejection', value, promise); - } else - dispatchEvent(UNHANDLED_REJECTION, promise, value); - }); - state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; - if (result.error) - throw result.value; - } - }); - }; - var isUnhandled = function (state) { - return state.rejection !== HANDLED && !state.parent; - }; - var onHandleUnhandled = function (state) { - task.call(global, function () { - var promise = state.facade; - if (IS_NODE) { - process.emit('rejectionHandled', promise); - } else - dispatchEvent(REJECTION_HANDLED, promise, state.value); - }); - }; - var bind = function (fn, state, unwrap) { - return function (value) { - fn(state, value, unwrap); - }; - }; - var internalReject = function (state, value, unwrap) { - if (state.done) - return; - state.done = true; - if (unwrap) - state = unwrap; - state.value = value; - state.state = REJECTED; - notify(state, true); - }; - var internalResolve = function (state, value, unwrap) { - if (state.done) - return; - state.done = true; - if (unwrap) - state = unwrap; - try { - if (state.facade === value) - throw TypeError("Promise can't be resolved itself"); - var then = isThenable(value); - if (then) { - microtask(function () { - var wrapper = {done: false}; - try { - then.call(value, bind(internalResolve, wrapper, state), bind(internalReject, wrapper, state)); - } catch (error) { - internalReject(wrapper, error, state); - } - }); - } else { - state.value = value; - state.state = FULFILLED; - notify(state, false); - } - } catch (error) { - internalReject({done: false}, error, state); - } - }; - if (FORCED) { - PromiseConstructor = function Promise(executor) { - anInstance(this, PromiseConstructor, PROMISE); - aFunction(executor); - Internal.call(this); - var state = getInternalState(this); - try { - executor(bind(internalResolve, state), bind(internalReject, state)); - } catch (error) { - internalReject(state, error); - } - }; - Internal = function Promise(executor) { - setInternalState(this, { - type: PROMISE, - done: false, - notified: false, - parent: false, - reactions: [], - rejection: false, - state: PENDING, - value: undefined - }); - }; - Internal.prototype = redefineAll(PromiseConstructor.prototype, { - then: function then(onFulfilled, onRejected) { - var state = getInternalPromiseState(this); - var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); - reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; - reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = IS_NODE ? process.domain : undefined; - state.parent = true; - state.reactions.push(reaction); - if (state.state != PENDING) - notify(state, false); - return reaction.promise; - }, - 'catch': function (onRejected) { - return this.then(undefined, onRejected); - } - }); - OwnPromiseCapability = function () { - var promise = new Internal(); - var state = getInternalState(promise); - this.promise = promise; - this.resolve = bind(internalResolve, state); - this.reject = bind(internalReject, state); - }; - newPromiseCapabilityModule.f = newPromiseCapability = function (C) { - return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C); - }; - if (!IS_PURE && typeof NativePromise == 'function') { - nativeThen = NativePromise.prototype.then; - redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) { - var that = this; - return new PromiseConstructor(function (resolve, reject) { - nativeThen.call(that, resolve, reject); - }).then(onFulfilled, onRejected); - }, {unsafe: true}); - if (typeof $fetch == 'function') - $({ - global: true, - enumerable: true, - forced: true - }, { - fetch: function fetch(input) { - return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments)); - } - }); - } - } - $({ - global: true, - wrap: true, - forced: FORCED - }, {Promise: PromiseConstructor}); - setToStringTag(PromiseConstructor, PROMISE, false, true); - setSpecies(PROMISE); - PromiseWrapper = getBuiltIn(PROMISE); - $({ - target: PROMISE, - stat: true, - forced: FORCED - }, { - reject: function reject(r) { - var capability = newPromiseCapability(this); - capability.reject.call(undefined, r); - return capability.promise; - } - }); - $({ - target: PROMISE, - stat: true, - forced: IS_PURE || FORCED - }, { - resolve: function resolve(x) { - return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x); - } - }); - $({ - target: PROMISE, - stat: true, - forced: INCORRECT_ITERATION - }, { - all: function all(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var $promiseResolve = aFunction(C.resolve); - var values = []; - var counter = 0; - var remaining = 1; - iterate(iterable, function (promise) { - var index = counter++; - var alreadyCalled = false; - values.push(undefined); - remaining++; - $promiseResolve.call(C, promise).then(function (value) { - if (alreadyCalled) - return; - alreadyCalled = true; - values[index] = value; - --remaining || resolve(values); - }, reject); - }); - --remaining || resolve(values); - }); - if (result.error) - reject(result.value); - return capability.promise; - }, - race: function race(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var reject = capability.reject; - var result = perform(function () { - var $promiseResolve = aFunction(C.resolve); - iterate(iterable, function (promise) { - $promiseResolve.call(C, promise).then(capability.resolve, reject); - }); - }); - if (result.error) - reject(result.value); - return capability.promise; - } - }); - - /***/ - }), - /* 90 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - module.exports = global.Promise; - - /***/ - }), - /* 91 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var redefine = __w_pdfjs_require__(28); - module.exports = function (target, src, options) { - for (var key in src) - redefine(target, key, src[key], options); - return target; - }; - - /***/ - }), - /* 92 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var getBuiltIn = __w_pdfjs_require__(41); - var definePropertyModule = __w_pdfjs_require__(26); - var wellKnownSymbol = __w_pdfjs_require__(55); - var DESCRIPTORS = __w_pdfjs_require__(12); - var SPECIES = wellKnownSymbol('species'); - module.exports = function (CONSTRUCTOR_NAME) { - var Constructor = getBuiltIn(CONSTRUCTOR_NAME); - var defineProperty = definePropertyModule.f; - if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { - defineProperty(Constructor, SPECIES, { - configurable: true, - get: function () { - return this; - } - }); - } - }; - - /***/ - }), - /* 93 */ - /***/ ((module) => { - - module.exports = function (it, Constructor, name) { - if (!(it instanceof Constructor)) { - throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); - } - return it; - }; - - /***/ - }), - /* 94 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var wellKnownSymbol = __w_pdfjs_require__(55); - var ITERATOR = wellKnownSymbol('iterator'); - var SAFE_CLOSING = false; - try { - var called = 0; - var iteratorWithReturn = { - next: function () { - return {done: !!called++}; - }, - 'return': function () { - SAFE_CLOSING = true; - } - }; - iteratorWithReturn[ITERATOR] = function () { - return this; - }; - Array.from(iteratorWithReturn, function () { - throw 2; - }); - } catch (error) { - } - module.exports = function (exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) - return false; - var ITERATION_SUPPORT = false; - try { - var object = {}; - object[ITERATOR] = function () { - return { - next: function () { - return {done: ITERATION_SUPPORT = true}; - } - }; - }; - exec(object); - } catch (error) { - } - return ITERATION_SUPPORT; - }; - - /***/ - }), - /* 95 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var anObject = __w_pdfjs_require__(27); - var aFunction = __w_pdfjs_require__(79); - var wellKnownSymbol = __w_pdfjs_require__(55); - var SPECIES = wellKnownSymbol('species'); - module.exports = function (O, defaultConstructor) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); - }; - - /***/ - }), - /* 96 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var fails = __w_pdfjs_require__(13); - var bind = __w_pdfjs_require__(78); - var html = __w_pdfjs_require__(64); - var createElement = __w_pdfjs_require__(24); - var IS_IOS = __w_pdfjs_require__(97); - var IS_NODE = __w_pdfjs_require__(57); - var location = global.location; - var set = global.setImmediate; - var clear = global.clearImmediate; - var process = global.process; - var MessageChannel = global.MessageChannel; - var Dispatch = global.Dispatch; - var counter = 0; - var queue = {}; - var ONREADYSTATECHANGE = 'onreadystatechange'; - var defer, channel, port; - var run = function (id) { - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } - }; - var runner = function (id) { - return function () { - run(id); - }; - }; - var listener = function (event) { - run(event.data); - }; - var post = function (id) { - global.postMessage(id + '', location.protocol + '//' + location.host); - }; - if (!set || !clear) { - set = function setImmediate(fn) { - var args = []; - var i = 1; - while (arguments.length > i) - args.push(arguments[i++]); - queue[++counter] = function () { - (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); - }; - defer(counter); - return counter; - }; - clear = function clearImmediate(id) { - delete queue[id]; - }; - if (IS_NODE) { - defer = function (id) { - process.nextTick(runner(id)); - }; - } else if (Dispatch && Dispatch.now) { - defer = function (id) { - Dispatch.now(runner(id)); - }; - } else if (MessageChannel && !IS_IOS) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = bind(port.postMessage, port, 1); - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && location && location.protocol !== 'file:' && !fails(post)) { - defer = post; - global.addEventListener('message', listener, false); - } else if (ONREADYSTATECHANGE in createElement('script')) { - defer = function (id) { - html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run(id); - }; - }; - } else { - defer = function (id) { - setTimeout(runner(id), 0); - }; - } - } - module.exports = { - set: set, - clear: clear - }; - - /***/ - }), - /* 97 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var userAgent = __w_pdfjs_require__(59); - module.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent); - - /***/ - }), - /* 98 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var getOwnPropertyDescriptor = __w_pdfjs_require__(11).f; - var macrotask = __w_pdfjs_require__(96).set; - var IS_IOS = __w_pdfjs_require__(97); - var IS_WEBOS_WEBKIT = __w_pdfjs_require__(99); - var IS_NODE = __w_pdfjs_require__(57); - var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; - var document = global.document; - var process = global.process; - var Promise = global.Promise; - var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask'); - var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; - var flush, head, last, notify, toggle, node, promise, then; - if (!queueMicrotask) { - flush = function () { - var parent, fn; - if (IS_NODE && (parent = process.domain)) - parent.exit(); - while (head) { - fn = head.fn; - head = head.next; - try { - fn(); - } catch (error) { - if (head) - notify(); - else - last = undefined; - throw error; - } - } - last = undefined; - if (parent) - parent.enter(); - }; - if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) { - toggle = true; - node = document.createTextNode(''); - new MutationObserver(flush).observe(node, {characterData: true}); - notify = function () { - node.data = toggle = !toggle; - }; - } else if (Promise && Promise.resolve) { - promise = Promise.resolve(undefined); - then = promise.then; - notify = function () { - then.call(promise, flush); - }; - } else if (IS_NODE) { - notify = function () { - process.nextTick(flush); - }; - } else { - notify = function () { - macrotask.call(global, flush); - }; - } - } - module.exports = queueMicrotask || function (fn) { - var task = { - fn: fn, - next: undefined - }; - if (last) - last.next = task; - if (!head) { - head = task; - notify(); - } - last = task; - }; - - /***/ - }), - /* 99 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var userAgent = __w_pdfjs_require__(59); - module.exports = /web0s(?!.*chrome)/i.test(userAgent); - - /***/ - }), - /* 100 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var anObject = __w_pdfjs_require__(27); - var isObject = __w_pdfjs_require__(21); - var newPromiseCapability = __w_pdfjs_require__(101); - module.exports = function (C, x) { - anObject(C); - if (isObject(x) && x.constructor === C) - return x; - var promiseCapability = newPromiseCapability.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; - }; - - /***/ - }), - /* 101 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var aFunction = __w_pdfjs_require__(79); - var PromiseCapability = function (C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) - throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; - }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); - }; - module.exports.f = function (C) { - return new PromiseCapability(C); - }; - - /***/ - }), - /* 102 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - module.exports = function (a, b) { - var console = global.console; - if (console && console.error) { - arguments.length === 1 ? console.error(a) : console.error(a, b); - } - }; - - /***/ - }), - /* 103 */ - /***/ ((module) => { - - module.exports = function (exec) { - try { - return { - error: false, - value: exec() - }; - } catch (error) { - return { - error: true, - value: error - }; - } - }; - - /***/ - }), - /* 104 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var $ = __w_pdfjs_require__(9); - var aFunction = __w_pdfjs_require__(79); - var newPromiseCapabilityModule = __w_pdfjs_require__(101); - var perform = __w_pdfjs_require__(103); - var iterate = __w_pdfjs_require__(76); - $({ - target: 'Promise', - stat: true - }, { - allSettled: function allSettled(iterable) { - var C = this; - var capability = newPromiseCapabilityModule.f(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var promiseResolve = aFunction(C.resolve); - var values = []; - var counter = 0; - var remaining = 1; - iterate(iterable, function (promise) { - var index = counter++; - var alreadyCalled = false; - values.push(undefined); - remaining++; - promiseResolve.call(C, promise).then(function (value) { - if (alreadyCalled) - return; - alreadyCalled = true; - values[index] = { - status: 'fulfilled', - value: value - }; - --remaining || resolve(values); - }, function (error) { - if (alreadyCalled) - return; - alreadyCalled = true; - values[index] = { - status: 'rejected', - reason: error - }; - --remaining || resolve(values); - }); - }); - --remaining || resolve(values); - }); - if (result.error) - reject(result.value); - return capability.promise; - } - }); - - /***/ - }), - /* 105 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var $ = __w_pdfjs_require__(9); - var aFunction = __w_pdfjs_require__(79); - var getBuiltIn = __w_pdfjs_require__(41); - var newPromiseCapabilityModule = __w_pdfjs_require__(101); - var perform = __w_pdfjs_require__(103); - var iterate = __w_pdfjs_require__(76); - var PROMISE_ANY_ERROR = 'No one promise resolved'; - $({ - target: 'Promise', - stat: true - }, { - any: function any(iterable) { - var C = this; - var capability = newPromiseCapabilityModule.f(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var promiseResolve = aFunction(C.resolve); - var errors = []; - var counter = 0; - var remaining = 1; - var alreadyResolved = false; - iterate(iterable, function (promise) { - var index = counter++; - var alreadyRejected = false; - errors.push(undefined); - remaining++; - promiseResolve.call(C, promise).then(function (value) { - if (alreadyRejected || alreadyResolved) - return; - alreadyResolved = true; - resolve(value); - }, function (error) { - if (alreadyRejected || alreadyResolved) - return; - alreadyRejected = true; - errors[index] = error; - --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR)); - }); - }); - --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR)); - }); - if (result.error) - reject(result.value); - return capability.promise; - } - }); - - /***/ - }), - /* 106 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var $ = __w_pdfjs_require__(9); - var IS_PURE = __w_pdfjs_require__(36); - var NativePromise = __w_pdfjs_require__(90); - var fails = __w_pdfjs_require__(13); - var getBuiltIn = __w_pdfjs_require__(41); - var speciesConstructor = __w_pdfjs_require__(95); - var promiseResolve = __w_pdfjs_require__(100); - var redefine = __w_pdfjs_require__(28); - var NON_GENERIC = !!NativePromise && fails(function () { - NativePromise.prototype['finally'].call({ - then: function () { - } - }, function () { - }); - }); - $({ - target: 'Promise', - proto: true, - real: true, - forced: NON_GENERIC - }, { - 'finally': function (onFinally) { - var C = speciesConstructor(this, getBuiltIn('Promise')); - var isFunction = typeof onFinally == 'function'; - return this.then(isFunction ? function (x) { - return promiseResolve(C, onFinally()).then(function () { - return x; - }); - } : onFinally, isFunction ? function (e) { - return promiseResolve(C, onFinally()).then(function () { - throw e; - }); - } : onFinally); - } - }); - if (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) { - redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']); - } - - /***/ - }), - /* 107 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var charAt = __w_pdfjs_require__(108).charAt; - var InternalStateModule = __w_pdfjs_require__(32); - var defineIterator = __w_pdfjs_require__(66); - var STRING_ITERATOR = 'String Iterator'; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); - defineIterator(String, 'String', function (iterated) { - setInternalState(this, { - type: STRING_ITERATOR, - string: String(iterated), - index: 0 - }); - }, function next() { - var state = getInternalState(this); - var string = state.string; - var index = state.index; - var point; - if (index >= string.length) - return { - value: undefined, - done: true - }; - point = charAt(string, index); - state.index += point.length; - return { - value: point, - done: false - }; - }); - - /***/ - }), - /* 108 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var toInteger = __w_pdfjs_require__(47); - var requireObjectCoercible = __w_pdfjs_require__(19); - var createMethod = function (CONVERT_TO_STRING) { - return function ($this, pos) { - var S = String(requireObjectCoercible($this)); - var position = toInteger(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) - return CONVERT_TO_STRING ? '' : undefined; - first = S.charCodeAt(position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; - }; - }; - module.exports = { - codeAt: createMethod(false), - charAt: createMethod(true) - }; - - /***/ - }), - /* 109 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var DOMIterables = __w_pdfjs_require__(110); - var ArrayIteratorMethods = __w_pdfjs_require__(53); - var createNonEnumerableProperty = __w_pdfjs_require__(25); - var wellKnownSymbol = __w_pdfjs_require__(55); - var ITERATOR = wellKnownSymbol('iterator'); - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - var ArrayValues = ArrayIteratorMethods.values; - for (var COLLECTION_NAME in DOMIterables) { - var Collection = global[COLLECTION_NAME]; - var CollectionPrototype = Collection && Collection.prototype; - if (CollectionPrototype) { - if (CollectionPrototype[ITERATOR] !== ArrayValues) - try { - createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); - } catch (error) { - CollectionPrototype[ITERATOR] = ArrayValues; - } - if (!CollectionPrototype[TO_STRING_TAG]) { - createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); - } - if (DOMIterables[COLLECTION_NAME]) - for (var METHOD_NAME in ArrayIteratorMethods) { - if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) - try { - createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); - } catch (error) { - CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; - } - } - } - } - - /***/ - }), - /* 110 */ - /***/ ((module) => { - - module.exports = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 - }; - - /***/ - }), - /* 111 */ - /***/ (function (__unused_webpack_module, exports) { - - (function (global, factory) { - true ? factory(exports) : 0; - }(this, function (exports) { - 'use strict'; - var SymbolPolyfill = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol : function (description) { - return "Symbol(" + description + ")"; - }; - - function noop() { - } - - function getGlobals() { - if (typeof self !== 'undefined') { - return self; - } else if (typeof window !== 'undefined') { - return window; - } else if (typeof global !== 'undefined') { - return global; - } - return undefined; - } - - var globals = getGlobals(); - - function typeIsObject(x) { - return typeof x === 'object' && x !== null || typeof x === 'function'; - } - - var rethrowAssertionErrorRejection = noop; - var originalPromise = Promise; - var originalPromiseThen = Promise.prototype.then; - var originalPromiseResolve = Promise.resolve.bind(originalPromise); - var originalPromiseReject = Promise.reject.bind(originalPromise); - - function newPromise(executor) { - return new originalPromise(executor); - } - - function promiseResolvedWith(value) { - return originalPromiseResolve(value); - } - - function promiseRejectedWith(reason) { - return originalPromiseReject(reason); - } - - function PerformPromiseThen(promise, onFulfilled, onRejected) { - return originalPromiseThen.call(promise, onFulfilled, onRejected); - } - - function uponPromise(promise, onFulfilled, onRejected) { - PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection); - } - - function uponFulfillment(promise, onFulfilled) { - uponPromise(promise, onFulfilled); - } - - function uponRejection(promise, onRejected) { - uponPromise(promise, undefined, onRejected); - } - - function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) { - return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler); - } - - function setPromiseIsHandledToTrue(promise) { - PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection); - } - - var queueMicrotask = function () { - var globalQueueMicrotask = globals && globals.queueMicrotask; - if (typeof globalQueueMicrotask === 'function') { - return globalQueueMicrotask; - } - var resolvedPromise = promiseResolvedWith(undefined); - return function (fn) { - return PerformPromiseThen(resolvedPromise, fn); - }; - }(); - - function reflectCall(F, V, args) { - if (typeof F !== 'function') { - throw new TypeError('Argument is not a function'); - } - return Function.prototype.apply.call(F, V, args); - } - - function promiseCall(F, V, args) { - try { - return promiseResolvedWith(reflectCall(F, V, args)); - } catch (value) { - return promiseRejectedWith(value); - } - } - - var QUEUE_MAX_ARRAY_SIZE = 16384; - var SimpleQueue = function () { - function SimpleQueue() { - this._cursor = 0; - this._size = 0; - this._front = { - _elements: [], - _next: undefined - }; - this._back = this._front; - this._cursor = 0; - this._size = 0; - } - - Object.defineProperty(SimpleQueue.prototype, "length", { - get: function () { - return this._size; - }, - enumerable: false, - configurable: true - }); - SimpleQueue.prototype.push = function (element) { - var oldBack = this._back; - var newBack = oldBack; - if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) { - newBack = { - _elements: [], - _next: undefined - }; - } - oldBack._elements.push(element); - if (newBack !== oldBack) { - this._back = newBack; - oldBack._next = newBack; - } - ++this._size; - }; - SimpleQueue.prototype.shift = function () { - var oldFront = this._front; - var newFront = oldFront; - var oldCursor = this._cursor; - var newCursor = oldCursor + 1; - var elements = oldFront._elements; - var element = elements[oldCursor]; - if (newCursor === QUEUE_MAX_ARRAY_SIZE) { - newFront = oldFront._next; - newCursor = 0; - } - --this._size; - this._cursor = newCursor; - if (oldFront !== newFront) { - this._front = newFront; - } - elements[oldCursor] = undefined; - return element; - }; - SimpleQueue.prototype.forEach = function (callback) { - var i = this._cursor; - var node = this._front; - var elements = node._elements; - while (i !== elements.length || node._next !== undefined) { - if (i === elements.length) { - node = node._next; - elements = node._elements; - i = 0; - if (elements.length === 0) { - break; - } - } - callback(elements[i]); - ++i; - } - }; - SimpleQueue.prototype.peek = function () { - var front = this._front; - var cursor = this._cursor; - return front._elements[cursor]; - }; - return SimpleQueue; - }(); - - function ReadableStreamReaderGenericInitialize(reader, stream) { - reader._ownerReadableStream = stream; - stream._reader = reader; - if (stream._state === 'readable') { - defaultReaderClosedPromiseInitialize(reader); - } else if (stream._state === 'closed') { - defaultReaderClosedPromiseInitializeAsResolved(reader); - } else { - defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); - } - } - - function ReadableStreamReaderGenericCancel(reader, reason) { - var stream = reader._ownerReadableStream; - return ReadableStreamCancel(stream, reason); - } - - function ReadableStreamReaderGenericRelease(reader) { - if (reader._ownerReadableStream._state === 'readable') { - defaultReaderClosedPromiseReject(reader, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")); - } else { - defaultReaderClosedPromiseResetToRejected(reader, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")); - } - reader._ownerReadableStream._reader = undefined; - reader._ownerReadableStream = undefined; - } - - function readerLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released reader'); - } - - function defaultReaderClosedPromiseInitialize(reader) { - reader._closedPromise = newPromise(function (resolve, reject) { - reader._closedPromise_resolve = resolve; - reader._closedPromise_reject = reject; - }); - } - - function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { - defaultReaderClosedPromiseInitialize(reader); - defaultReaderClosedPromiseReject(reader, reason); - } - - function defaultReaderClosedPromiseInitializeAsResolved(reader) { - defaultReaderClosedPromiseInitialize(reader); - defaultReaderClosedPromiseResolve(reader); - } - - function defaultReaderClosedPromiseReject(reader, reason) { - if (reader._closedPromise_reject === undefined) { - return; - } - setPromiseIsHandledToTrue(reader._closedPromise); - reader._closedPromise_reject(reason); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - function defaultReaderClosedPromiseResetToRejected(reader, reason) { - defaultReaderClosedPromiseInitializeAsRejected(reader, reason); - } - - function defaultReaderClosedPromiseResolve(reader) { - if (reader._closedPromise_resolve === undefined) { - return; - } - reader._closedPromise_resolve(undefined); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - - var AbortSteps = SymbolPolyfill('[[AbortSteps]]'); - var ErrorSteps = SymbolPolyfill('[[ErrorSteps]]'); - var CancelSteps = SymbolPolyfill('[[CancelSteps]]'); - var PullSteps = SymbolPolyfill('[[PullSteps]]'); - var NumberIsFinite = Number.isFinite || function (x) { - return typeof x === 'number' && isFinite(x); - }; - var MathTrunc = Math.trunc || function (v) { - return v < 0 ? Math.ceil(v) : Math.floor(v); - }; - - function isDictionary(x) { - return typeof x === 'object' || typeof x === 'function'; - } - - function assertDictionary(obj, context) { - if (obj !== undefined && !isDictionary(obj)) { - throw new TypeError(context + " is not an object."); - } - } - - function assertFunction(x, context) { - if (typeof x !== 'function') { - throw new TypeError(context + " is not a function."); - } - } - - function isObject(x) { - return typeof x === 'object' && x !== null || typeof x === 'function'; - } - - function assertObject(x, context) { - if (!isObject(x)) { - throw new TypeError(context + " is not an object."); - } - } - - function assertRequiredArgument(x, position, context) { - if (x === undefined) { - throw new TypeError("Parameter " + position + " is required in '" + context + "'."); - } - } - - function assertRequiredField(x, field, context) { - if (x === undefined) { - throw new TypeError(field + " is required in '" + context + "'."); - } - } - - function convertUnrestrictedDouble(value) { - return Number(value); - } - - function censorNegativeZero(x) { - return x === 0 ? 0 : x; - } - - function integerPart(x) { - return censorNegativeZero(MathTrunc(x)); - } - - function convertUnsignedLongLongWithEnforceRange(value, context) { - var lowerBound = 0; - var upperBound = Number.MAX_SAFE_INTEGER; - var x = Number(value); - x = censorNegativeZero(x); - if (!NumberIsFinite(x)) { - throw new TypeError(context + " is not a finite number"); - } - x = integerPart(x); - if (x < lowerBound || x > upperBound) { - throw new TypeError(context + " is outside the accepted range of " + lowerBound + " to " + upperBound + ", inclusive"); - } - if (!NumberIsFinite(x) || x === 0) { - return 0; - } - return x; - } - - function assertReadableStream(x, context) { - if (!IsReadableStream(x)) { - throw new TypeError(context + " is not a ReadableStream."); - } - } - - function AcquireReadableStreamDefaultReader(stream) { - return new ReadableStreamDefaultReader(stream); - } - - function ReadableStreamAddReadRequest(stream, readRequest) { - stream._reader._readRequests.push(readRequest); - } - - function ReadableStreamFulfillReadRequest(stream, chunk, done) { - var reader = stream._reader; - var readRequest = reader._readRequests.shift(); - if (done) { - readRequest._closeSteps(); - } else { - readRequest._chunkSteps(chunk); - } - } - - function ReadableStreamGetNumReadRequests(stream) { - return stream._reader._readRequests.length; - } - - function ReadableStreamHasDefaultReader(stream) { - var reader = stream._reader; - if (reader === undefined) { - return false; - } - if (!IsReadableStreamDefaultReader(reader)) { - return false; - } - return true; - } - - var ReadableStreamDefaultReader = function () { - function ReadableStreamDefaultReader(stream) { - assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader'); - assertReadableStream(stream, 'First parameter'); - if (IsReadableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - ReadableStreamReaderGenericInitialize(this, stream); - this._readRequests = new SimpleQueue(); - } - - Object.defineProperty(ReadableStreamDefaultReader.prototype, "closed", { - get: function () { - if (!IsReadableStreamDefaultReader(this)) { - return promiseRejectedWith(defaultReaderBrandCheckException('closed')); - } - return this._closedPromise; - }, - enumerable: false, - configurable: true - }); - ReadableStreamDefaultReader.prototype.cancel = function (reason) { - if (reason === void 0) { - reason = undefined; - } - if (!IsReadableStreamDefaultReader(this)) { - return promiseRejectedWith(defaultReaderBrandCheckException('cancel')); - } - if (this._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('cancel')); - } - return ReadableStreamReaderGenericCancel(this, reason); - }; - ReadableStreamDefaultReader.prototype.read = function () { - if (!IsReadableStreamDefaultReader(this)) { - return promiseRejectedWith(defaultReaderBrandCheckException('read')); - } - if (this._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('read from')); - } - var resolvePromise; - var rejectPromise; - var promise = newPromise(function (resolve, reject) { - resolvePromise = resolve; - rejectPromise = reject; - }); - var readRequest = { - _chunkSteps: function (chunk) { - return resolvePromise({ - value: chunk, - done: false - }); - }, - _closeSteps: function () { - return resolvePromise({ - value: undefined, - done: true - }); - }, - _errorSteps: function (e) { - return rejectPromise(e); - } - }; - ReadableStreamDefaultReaderRead(this, readRequest); - return promise; - }; - ReadableStreamDefaultReader.prototype.releaseLock = function () { - if (!IsReadableStreamDefaultReader(this)) { - throw defaultReaderBrandCheckException('releaseLock'); - } - if (this._ownerReadableStream === undefined) { - return; - } - if (this._readRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - ReadableStreamReaderGenericRelease(this); - }; - return ReadableStreamDefaultReader; - }(); - Object.defineProperties(ReadableStreamDefaultReader.prototype, { - cancel: {enumerable: true}, - read: {enumerable: true}, - releaseLock: {enumerable: true}, - closed: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStreamDefaultReader.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStreamDefaultReader', - configurable: true - }); - } - - function IsReadableStreamDefaultReader(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) { - return false; - } - return true; - } - - function ReadableStreamDefaultReaderRead(reader, readRequest) { - var stream = reader._ownerReadableStream; - stream._disturbed = true; - if (stream._state === 'closed') { - readRequest._closeSteps(); - } else if (stream._state === 'errored') { - readRequest._errorSteps(stream._storedError); - } else { - stream._readableStreamController[PullSteps](readRequest); - } - } - - function defaultReaderBrandCheckException(name) { - return new TypeError("ReadableStreamDefaultReader.prototype." + name + " can only be used on a ReadableStreamDefaultReader"); - } - - var _a; - var AsyncIteratorPrototype; - if (typeof SymbolPolyfill.asyncIterator === 'symbol') { - AsyncIteratorPrototype = (_a = {}, _a[SymbolPolyfill.asyncIterator] = function () { - return this; - }, _a); - Object.defineProperty(AsyncIteratorPrototype, SymbolPolyfill.asyncIterator, {enumerable: false}); - } - var ReadableStreamAsyncIteratorImpl = function () { - function ReadableStreamAsyncIteratorImpl(reader, preventCancel) { - this._ongoingPromise = undefined; - this._isFinished = false; - this._reader = reader; - this._preventCancel = preventCancel; - } - - ReadableStreamAsyncIteratorImpl.prototype.next = function () { - var _this = this; - var nextSteps = function () { - return _this._nextSteps(); - }; - this._ongoingPromise = this._ongoingPromise ? transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) : nextSteps(); - return this._ongoingPromise; - }; - ReadableStreamAsyncIteratorImpl.prototype.return = function (value) { - var _this = this; - var returnSteps = function () { - return _this._returnSteps(value); - }; - return this._ongoingPromise ? transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) : returnSteps(); - }; - ReadableStreamAsyncIteratorImpl.prototype._nextSteps = function () { - var _this = this; - if (this._isFinished) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var reader = this._reader; - if (reader._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('iterate')); - } - var resolvePromise; - var rejectPromise; - var promise = newPromise(function (resolve, reject) { - resolvePromise = resolve; - rejectPromise = reject; - }); - var readRequest = { - _chunkSteps: function (chunk) { - _this._ongoingPromise = undefined; - queueMicrotask(function () { - return resolvePromise({ - value: chunk, - done: false - }); - }); - }, - _closeSteps: function () { - _this._ongoingPromise = undefined; - _this._isFinished = true; - ReadableStreamReaderGenericRelease(reader); - resolvePromise({ - value: undefined, - done: true - }); - }, - _errorSteps: function (reason) { - _this._ongoingPromise = undefined; - _this._isFinished = true; - ReadableStreamReaderGenericRelease(reader); - rejectPromise(reason); - } - }; - ReadableStreamDefaultReaderRead(reader, readRequest); - return promise; - }; - ReadableStreamAsyncIteratorImpl.prototype._returnSteps = function (value) { - if (this._isFinished) { - return Promise.resolve({ - value: value, - done: true - }); - } - this._isFinished = true; - var reader = this._reader; - if (reader._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('finish iterating')); - } - if (!this._preventCancel) { - var result = ReadableStreamReaderGenericCancel(reader, value); - ReadableStreamReaderGenericRelease(reader); - return transformPromiseWith(result, function () { - return { - value: value, - done: true - }; - }); - } - ReadableStreamReaderGenericRelease(reader); - return promiseResolvedWith({ - value: value, - done: true - }); - }; - return ReadableStreamAsyncIteratorImpl; - }(); - var ReadableStreamAsyncIteratorPrototype = { - next: function () { - if (!IsReadableStreamAsyncIterator(this)) { - return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next')); - } - return this._asyncIteratorImpl.next(); - }, - return: function (value) { - if (!IsReadableStreamAsyncIterator(this)) { - return promiseRejectedWith(streamAsyncIteratorBrandCheckException('return')); - } - return this._asyncIteratorImpl.return(value); - } - }; - if (AsyncIteratorPrototype !== undefined) { - Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype); - } - - function AcquireReadableStreamAsyncIterator(stream, preventCancel) { - var reader = AcquireReadableStreamDefaultReader(stream); - var impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel); - var iterator = Object.create(ReadableStreamAsyncIteratorPrototype); - iterator._asyncIteratorImpl = impl; - return iterator; - } - - function IsReadableStreamAsyncIterator(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) { - return false; - } - return true; - } - - function streamAsyncIteratorBrandCheckException(name) { - return new TypeError("ReadableStreamAsyncIterator." + name + " can only be used on a ReadableSteamAsyncIterator"); - } - - var NumberIsNaN = Number.isNaN || function (x) { - return x !== x; - }; - - function IsFiniteNonNegativeNumber(v) { - if (!IsNonNegativeNumber(v)) { - return false; - } - if (v === Infinity) { - return false; - } - return true; - } - - function IsNonNegativeNumber(v) { - if (typeof v !== 'number') { - return false; - } - if (NumberIsNaN(v)) { - return false; - } - if (v < 0) { - return false; - } - return true; - } - - function DequeueValue(container) { - var pair = container._queue.shift(); - container._queueTotalSize -= pair.size; - if (container._queueTotalSize < 0) { - container._queueTotalSize = 0; - } - return pair.value; - } - - function EnqueueValueWithSize(container, value, size) { - size = Number(size); - if (!IsFiniteNonNegativeNumber(size)) { - throw new RangeError('Size must be a finite, non-NaN, non-negative number.'); - } - container._queue.push({ - value: value, - size: size - }); - container._queueTotalSize += size; - } - - function PeekQueueValue(container) { - var pair = container._queue.peek(); - return pair.value; - } - - function ResetQueue(container) { - container._queue = new SimpleQueue(); - container._queueTotalSize = 0; - } - - function CreateArrayFromList(elements) { - return elements.slice(); - } - - function CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) { - new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); - } - - function TransferArrayBuffer(O) { - return O; - } - - function IsDetachedBuffer(O) { - return false; - } - - var ReadableStreamBYOBRequest = function () { - function ReadableStreamBYOBRequest() { - throw new TypeError('Illegal constructor'); - } - - Object.defineProperty(ReadableStreamBYOBRequest.prototype, "view", { - get: function () { - if (!IsReadableStreamBYOBRequest(this)) { - throw byobRequestBrandCheckException('view'); - } - return this._view; - }, - enumerable: false, - configurable: true - }); - ReadableStreamBYOBRequest.prototype.respond = function (bytesWritten) { - if (!IsReadableStreamBYOBRequest(this)) { - throw byobRequestBrandCheckException('respond'); - } - assertRequiredArgument(bytesWritten, 1, 'respond'); - bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, 'First parameter'); - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - if (IsDetachedBuffer(this._view.buffer)) ; - ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); - }; - ReadableStreamBYOBRequest.prototype.respondWithNewView = function (view) { - if (!IsReadableStreamBYOBRequest(this)) { - throw byobRequestBrandCheckException('respondWithNewView'); - } - assertRequiredArgument(view, 1, 'respondWithNewView'); - if (!ArrayBuffer.isView(view)) { - throw new TypeError('You can only respond with array buffer views'); - } - if (view.byteLength === 0) { - throw new TypeError('chunk must have non-zero byteLength'); - } - if (view.buffer.byteLength === 0) { - throw new TypeError("chunk's buffer must have non-zero byteLength"); - } - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); - }; - return ReadableStreamBYOBRequest; - }(); - Object.defineProperties(ReadableStreamBYOBRequest.prototype, { - respond: {enumerable: true}, - respondWithNewView: {enumerable: true}, - view: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStreamBYOBRequest.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStreamBYOBRequest', - configurable: true - }); - } - var ReadableByteStreamController = function () { - function ReadableByteStreamController() { - throw new TypeError('Illegal constructor'); - } - - Object.defineProperty(ReadableByteStreamController.prototype, "byobRequest", { - get: function () { - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('byobRequest'); - } - if (this._byobRequest === null && this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos.peek(); - var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); - var byobRequest = Object.create(ReadableStreamBYOBRequest.prototype); - SetUpReadableStreamBYOBRequest(byobRequest, this, view); - this._byobRequest = byobRequest; - } - return this._byobRequest; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ReadableByteStreamController.prototype, "desiredSize", { - get: function () { - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('desiredSize'); - } - return ReadableByteStreamControllerGetDesiredSize(this); - }, - enumerable: false, - configurable: true - }); - ReadableByteStreamController.prototype.close = function () { - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('close'); - } - if (this._closeRequested) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - var state = this._controlledReadableByteStream._state; - if (state !== 'readable') { - throw new TypeError("The stream (in " + state + " state) is not in the readable state and cannot be closed"); - } - ReadableByteStreamControllerClose(this); - }; - ReadableByteStreamController.prototype.enqueue = function (chunk) { - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('enqueue'); - } - assertRequiredArgument(chunk, 1, 'enqueue'); - if (!ArrayBuffer.isView(chunk)) { - throw new TypeError('chunk must be an array buffer view'); - } - if (chunk.byteLength === 0) { - throw new TypeError('chunk must have non-zero byteLength'); - } - if (chunk.buffer.byteLength === 0) { - throw new TypeError("chunk's buffer must have non-zero byteLength"); - } - if (this._closeRequested) { - throw new TypeError('stream is closed or draining'); - } - var state = this._controlledReadableByteStream._state; - if (state !== 'readable') { - throw new TypeError("The stream (in " + state + " state) is not in the readable state and cannot be enqueued to"); - } - ReadableByteStreamControllerEnqueue(this, chunk); - }; - ReadableByteStreamController.prototype.error = function (e) { - if (e === void 0) { - e = undefined; - } - if (!IsReadableByteStreamController(this)) { - throw byteStreamControllerBrandCheckException('error'); - } - ReadableByteStreamControllerError(this, e); - }; - ReadableByteStreamController.prototype[CancelSteps] = function (reason) { - if (this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos.peek(); - firstDescriptor.bytesFilled = 0; - } - ResetQueue(this); - var result = this._cancelAlgorithm(reason); - ReadableByteStreamControllerClearAlgorithms(this); - return result; - }; - ReadableByteStreamController.prototype[PullSteps] = function (readRequest) { - var stream = this._controlledReadableByteStream; - if (this._queueTotalSize > 0) { - var entry = this._queue.shift(); - this._queueTotalSize -= entry.byteLength; - ReadableByteStreamControllerHandleQueueDrain(this); - var view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); - readRequest._chunkSteps(view); - return; - } - var autoAllocateChunkSize = this._autoAllocateChunkSize; - if (autoAllocateChunkSize !== undefined) { - var buffer = void 0; - try { - buffer = new ArrayBuffer(autoAllocateChunkSize); - } catch (bufferE) { - readRequest._errorSteps(bufferE); - return; - } - var pullIntoDescriptor = { - buffer: buffer, - byteOffset: 0, - byteLength: autoAllocateChunkSize, - bytesFilled: 0, - elementSize: 1, - viewConstructor: Uint8Array, - readerType: 'default' - }; - this._pendingPullIntos.push(pullIntoDescriptor); - } - ReadableStreamAddReadRequest(stream, readRequest); - ReadableByteStreamControllerCallPullIfNeeded(this); - }; - return ReadableByteStreamController; - }(); - Object.defineProperties(ReadableByteStreamController.prototype, { - close: {enumerable: true}, - enqueue: {enumerable: true}, - error: {enumerable: true}, - byobRequest: {enumerable: true}, - desiredSize: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableByteStreamController.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableByteStreamController', - configurable: true - }); - } - - function IsReadableByteStreamController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) { - return false; - } - return true; - } - - function IsReadableStreamBYOBRequest(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) { - return false; - } - return true; - } - - function ReadableByteStreamControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableByteStreamControllerShouldCallPull(controller); - if (!shouldPull) { - return; - } - if (controller._pulling) { - controller._pullAgain = true; - return; - } - controller._pulling = true; - var pullPromise = controller._pullAlgorithm(); - uponPromise(pullPromise, function () { - controller._pulling = false; - if (controller._pullAgain) { - controller._pullAgain = false; - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - }, function (e) { - ReadableByteStreamControllerError(controller, e); - }); - } - - function ReadableByteStreamControllerClearPendingPullIntos(controller) { - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - controller._pendingPullIntos = new SimpleQueue(); - } - - function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { - var done = false; - if (stream._state === 'closed') { - done = true; - } - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - if (pullIntoDescriptor.readerType === 'default') { - ReadableStreamFulfillReadRequest(stream, filledView, done); - } else { - ReadableStreamFulfillReadIntoRequest(stream, filledView, done); - } - } - - function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { - var bytesFilled = pullIntoDescriptor.bytesFilled; - var elementSize = pullIntoDescriptor.elementSize; - return new pullIntoDescriptor.viewConstructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); - } - - function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { - controller._queue.push({ - buffer: buffer, - byteOffset: byteOffset, - byteLength: byteLength - }); - controller._queueTotalSize += byteLength; - } - - function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { - var elementSize = pullIntoDescriptor.elementSize; - var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; - var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); - var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; - var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; - var totalBytesToCopyRemaining = maxBytesToCopy; - var ready = false; - if (maxAlignedBytes > currentAlignedBytes) { - totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; - ready = true; - } - var queue = controller._queue; - while (totalBytesToCopyRemaining > 0) { - var headOfQueue = queue.peek(); - var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); - var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); - if (headOfQueue.byteLength === bytesToCopy) { - queue.shift(); - } else { - headOfQueue.byteOffset += bytesToCopy; - headOfQueue.byteLength -= bytesToCopy; - } - controller._queueTotalSize -= bytesToCopy; - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); - totalBytesToCopyRemaining -= bytesToCopy; - } - return ready; - } - - function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - pullIntoDescriptor.bytesFilled += size; - } - - function ReadableByteStreamControllerHandleQueueDrain(controller) { - if (controller._queueTotalSize === 0 && controller._closeRequested) { - ReadableByteStreamControllerClearAlgorithms(controller); - ReadableStreamClose(controller._controlledReadableByteStream); - } else { - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - } - - function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { - if (controller._byobRequest === null) { - return; - } - controller._byobRequest._associatedReadableByteStreamController = undefined; - controller._byobRequest._view = null; - controller._byobRequest = null; - } - - function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { - while (controller._pendingPullIntos.length > 0) { - if (controller._queueTotalSize === 0) { - return; - } - var pullIntoDescriptor = controller._pendingPullIntos.peek(); - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) { - ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor); - } - } - } - - function ReadableByteStreamControllerPullInto(controller, view, readIntoRequest) { - var stream = controller._controlledReadableByteStream; - var elementSize = 1; - if (view.constructor !== DataView) { - elementSize = view.constructor.BYTES_PER_ELEMENT; - } - var ctor = view.constructor; - var buffer = TransferArrayBuffer(view.buffer); - var pullIntoDescriptor = { - buffer: buffer, - byteOffset: view.byteOffset, - byteLength: view.byteLength, - bytesFilled: 0, - elementSize: elementSize, - viewConstructor: ctor, - readerType: 'byob' - }; - if (controller._pendingPullIntos.length > 0) { - controller._pendingPullIntos.push(pullIntoDescriptor); - ReadableStreamAddReadIntoRequest(stream, readIntoRequest); - return; - } - if (stream._state === 'closed') { - var emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); - readIntoRequest._closeSteps(emptyView); - return; - } - if (controller._queueTotalSize > 0) { - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) { - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - ReadableByteStreamControllerHandleQueueDrain(controller); - readIntoRequest._chunkSteps(filledView); - return; - } - if (controller._closeRequested) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - readIntoRequest._errorSteps(e); - return; - } - } - controller._pendingPullIntos.push(pullIntoDescriptor); - ReadableStreamAddReadIntoRequest(stream, readIntoRequest); - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - - function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { - firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); - var stream = controller._controlledReadableByteStream; - if (ReadableStreamHasBYOBReader(stream)) { - while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { - var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); - } - } - } - - function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { - if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) { - throw new RangeError('bytesWritten out of range'); - } - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); - if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { - return; - } - ReadableByteStreamControllerShiftPendingPullInto(controller); - var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; - if (remainderSize > 0) { - var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); - } - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - pullIntoDescriptor.bytesFilled -= remainderSize; - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } - - function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { - var firstDescriptor = controller._pendingPullIntos.peek(); - var state = controller._controlledReadableByteStream._state; - if (state === 'closed') { - if (bytesWritten !== 0) { - throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream'); - } - ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); - } else { - ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); - } - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - - function ReadableByteStreamControllerShiftPendingPullInto(controller) { - var descriptor = controller._pendingPullIntos.shift(); - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - return descriptor; - } - - function ReadableByteStreamControllerShouldCallPull(controller) { - var stream = controller._controlledReadableByteStream; - if (stream._state !== 'readable') { - return false; - } - if (controller._closeRequested) { - return false; - } - if (!controller._started) { - return false; - } - if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) { - return true; - } - var desiredSize = ReadableByteStreamControllerGetDesiredSize(controller); - if (desiredSize > 0) { - return true; - } - return false; - } - - function ReadableByteStreamControllerClearAlgorithms(controller) { - controller._pullAlgorithm = undefined; - controller._cancelAlgorithm = undefined; - } - - function ReadableByteStreamControllerClose(controller) { - var stream = controller._controlledReadableByteStream; - if (controller._closeRequested || stream._state !== 'readable') { - return; - } - if (controller._queueTotalSize > 0) { - controller._closeRequested = true; - return; - } - if (controller._pendingPullIntos.length > 0) { - var firstPendingPullInto = controller._pendingPullIntos.peek(); - if (firstPendingPullInto.bytesFilled > 0) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - throw e; - } - } - ReadableByteStreamControllerClearAlgorithms(controller); - ReadableStreamClose(stream); - } - - function ReadableByteStreamControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableByteStream; - if (controller._closeRequested || stream._state !== 'readable') { - return; - } - var buffer = chunk.buffer; - var byteOffset = chunk.byteOffset; - var byteLength = chunk.byteLength; - var transferredBuffer = TransferArrayBuffer(buffer); - if (ReadableStreamHasDefaultReader(stream)) { - if (ReadableStreamGetNumReadRequests(stream) === 0) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } else { - var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); - ReadableStreamFulfillReadRequest(stream, transferredView, false); - } - } else if (ReadableStreamHasBYOBReader(stream)) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } else { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - - function ReadableByteStreamControllerError(controller, e) { - var stream = controller._controlledReadableByteStream; - if (stream._state !== 'readable') { - return; - } - ReadableByteStreamControllerClearPendingPullIntos(controller); - ResetQueue(controller); - ReadableByteStreamControllerClearAlgorithms(controller); - ReadableStreamError(stream, e); - } - - function ReadableByteStreamControllerGetDesiredSize(controller) { - var state = controller._controlledReadableByteStream._state; - if (state === 'errored') { - return null; - } - if (state === 'closed') { - return 0; - } - return controller._strategyHWM - controller._queueTotalSize; - } - - function ReadableByteStreamControllerRespond(controller, bytesWritten) { - bytesWritten = Number(bytesWritten); - if (!IsFiniteNonNegativeNumber(bytesWritten)) { - throw new RangeError('bytesWritten must be a finite'); - } - ReadableByteStreamControllerRespondInternal(controller, bytesWritten); - } - - function ReadableByteStreamControllerRespondWithNewView(controller, view) { - var firstDescriptor = controller._pendingPullIntos.peek(); - if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { - throw new RangeError('The region specified by view does not match byobRequest'); - } - if (firstDescriptor.byteLength !== view.byteLength) { - throw new RangeError('The buffer of view has different capacity than byobRequest'); - } - firstDescriptor.buffer = view.buffer; - ReadableByteStreamControllerRespondInternal(controller, view.byteLength); - } - - function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) { - controller._controlledReadableByteStream = stream; - controller._pullAgain = false; - controller._pulling = false; - controller._byobRequest = null; - controller._queue = controller._queueTotalSize = undefined; - ResetQueue(controller); - controller._closeRequested = false; - controller._started = false; - controller._strategyHWM = highWaterMark; - controller._pullAlgorithm = pullAlgorithm; - controller._cancelAlgorithm = cancelAlgorithm; - controller._autoAllocateChunkSize = autoAllocateChunkSize; - controller._pendingPullIntos = new SimpleQueue(); - stream._readableStreamController = controller; - var startResult = startAlgorithm(); - uponPromise(promiseResolvedWith(startResult), function () { - controller._started = true; - ReadableByteStreamControllerCallPullIfNeeded(controller); - }, function (r) { - ReadableByteStreamControllerError(controller, r); - }); - } - - function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) { - var controller = Object.create(ReadableByteStreamController.prototype); - var startAlgorithm = function () { - return undefined; - }; - var pullAlgorithm = function () { - return promiseResolvedWith(undefined); - }; - var cancelAlgorithm = function () { - return promiseResolvedWith(undefined); - }; - if (underlyingByteSource.start !== undefined) { - startAlgorithm = function () { - return underlyingByteSource.start(controller); - }; - } - if (underlyingByteSource.pull !== undefined) { - pullAlgorithm = function () { - return underlyingByteSource.pull(controller); - }; - } - if (underlyingByteSource.cancel !== undefined) { - cancelAlgorithm = function (reason) { - return underlyingByteSource.cancel(reason); - }; - } - var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; - if (autoAllocateChunkSize === 0) { - throw new TypeError('autoAllocateChunkSize must be greater than 0'); - } - SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize); - } - - function SetUpReadableStreamBYOBRequest(request, controller, view) { - request._associatedReadableByteStreamController = controller; - request._view = view; - } - - function byobRequestBrandCheckException(name) { - return new TypeError("ReadableStreamBYOBRequest.prototype." + name + " can only be used on a ReadableStreamBYOBRequest"); - } - - function byteStreamControllerBrandCheckException(name) { - return new TypeError("ReadableByteStreamController.prototype." + name + " can only be used on a ReadableByteStreamController"); - } - - function AcquireReadableStreamBYOBReader(stream) { - return new ReadableStreamBYOBReader(stream); - } - - function ReadableStreamAddReadIntoRequest(stream, readIntoRequest) { - stream._reader._readIntoRequests.push(readIntoRequest); - } - - function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { - var reader = stream._reader; - var readIntoRequest = reader._readIntoRequests.shift(); - if (done) { - readIntoRequest._closeSteps(chunk); - } else { - readIntoRequest._chunkSteps(chunk); - } - } - - function ReadableStreamGetNumReadIntoRequests(stream) { - return stream._reader._readIntoRequests.length; - } - - function ReadableStreamHasBYOBReader(stream) { - var reader = stream._reader; - if (reader === undefined) { - return false; - } - if (!IsReadableStreamBYOBReader(reader)) { - return false; - } - return true; - } - - var ReadableStreamBYOBReader = function () { - function ReadableStreamBYOBReader(stream) { - assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader'); - assertReadableStream(stream, 'First parameter'); - if (IsReadableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - if (!IsReadableByteStreamController(stream._readableStreamController)) { - throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source'); - } - ReadableStreamReaderGenericInitialize(this, stream); - this._readIntoRequests = new SimpleQueue(); - } - - Object.defineProperty(ReadableStreamBYOBReader.prototype, "closed", { - get: function () { - if (!IsReadableStreamBYOBReader(this)) { - return promiseRejectedWith(byobReaderBrandCheckException('closed')); - } - return this._closedPromise; - }, - enumerable: false, - configurable: true - }); - ReadableStreamBYOBReader.prototype.cancel = function (reason) { - if (reason === void 0) { - reason = undefined; - } - if (!IsReadableStreamBYOBReader(this)) { - return promiseRejectedWith(byobReaderBrandCheckException('cancel')); - } - if (this._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('cancel')); - } - return ReadableStreamReaderGenericCancel(this, reason); - }; - ReadableStreamBYOBReader.prototype.read = function (view) { - if (!IsReadableStreamBYOBReader(this)) { - return promiseRejectedWith(byobReaderBrandCheckException('read')); - } - if (!ArrayBuffer.isView(view)) { - return promiseRejectedWith(new TypeError('view must be an array buffer view')); - } - if (view.byteLength === 0) { - return promiseRejectedWith(new TypeError('view must have non-zero byteLength')); - } - if (view.buffer.byteLength === 0) { - return promiseRejectedWith(new TypeError("view's buffer must have non-zero byteLength")); - } - if (this._ownerReadableStream === undefined) { - return promiseRejectedWith(readerLockException('read from')); - } - var resolvePromise; - var rejectPromise; - var promise = newPromise(function (resolve, reject) { - resolvePromise = resolve; - rejectPromise = reject; - }); - var readIntoRequest = { - _chunkSteps: function (chunk) { - return resolvePromise({ - value: chunk, - done: false - }); - }, - _closeSteps: function (chunk) { - return resolvePromise({ - value: chunk, - done: true - }); - }, - _errorSteps: function (e) { - return rejectPromise(e); - } - }; - ReadableStreamBYOBReaderRead(this, view, readIntoRequest); - return promise; - }; - ReadableStreamBYOBReader.prototype.releaseLock = function () { - if (!IsReadableStreamBYOBReader(this)) { - throw byobReaderBrandCheckException('releaseLock'); - } - if (this._ownerReadableStream === undefined) { - return; - } - if (this._readIntoRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - ReadableStreamReaderGenericRelease(this); - }; - return ReadableStreamBYOBReader; - }(); - Object.defineProperties(ReadableStreamBYOBReader.prototype, { - cancel: {enumerable: true}, - read: {enumerable: true}, - releaseLock: {enumerable: true}, - closed: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStreamBYOBReader.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStreamBYOBReader', - configurable: true - }); - } - - function IsReadableStreamBYOBReader(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) { - return false; - } - return true; - } - - function ReadableStreamBYOBReaderRead(reader, view, readIntoRequest) { - var stream = reader._ownerReadableStream; - stream._disturbed = true; - if (stream._state === 'errored') { - readIntoRequest._errorSteps(stream._storedError); - } else { - ReadableByteStreamControllerPullInto(stream._readableStreamController, view, readIntoRequest); - } - } - - function byobReaderBrandCheckException(name) { - return new TypeError("ReadableStreamBYOBReader.prototype." + name + " can only be used on a ReadableStreamBYOBReader"); - } - - function ExtractHighWaterMark(strategy, defaultHWM) { - var highWaterMark = strategy.highWaterMark; - if (highWaterMark === undefined) { - return defaultHWM; - } - if (NumberIsNaN(highWaterMark) || highWaterMark < 0) { - throw new RangeError('Invalid highWaterMark'); - } - return highWaterMark; - } - - function ExtractSizeAlgorithm(strategy) { - var size = strategy.size; - if (!size) { - return function () { - return 1; - }; - } - return size; - } - - function convertQueuingStrategy(init, context) { - assertDictionary(init, context); - var highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark; - var size = init === null || init === void 0 ? void 0 : init.size; - return { - highWaterMark: highWaterMark === undefined ? undefined : convertUnrestrictedDouble(highWaterMark), - size: size === undefined ? undefined : convertQueuingStrategySize(size, context + " has member 'size' that") - }; - } - - function convertQueuingStrategySize(fn, context) { - assertFunction(fn, context); - return function (chunk) { - return convertUnrestrictedDouble(fn(chunk)); - }; - } - - function convertUnderlyingSink(original, context) { - assertDictionary(original, context); - var abort = original === null || original === void 0 ? void 0 : original.abort; - var close = original === null || original === void 0 ? void 0 : original.close; - var start = original === null || original === void 0 ? void 0 : original.start; - var type = original === null || original === void 0 ? void 0 : original.type; - var write = original === null || original === void 0 ? void 0 : original.write; - return { - abort: abort === undefined ? undefined : convertUnderlyingSinkAbortCallback(abort, original, context + " has member 'abort' that"), - close: close === undefined ? undefined : convertUnderlyingSinkCloseCallback(close, original, context + " has member 'close' that"), - start: start === undefined ? undefined : convertUnderlyingSinkStartCallback(start, original, context + " has member 'start' that"), - write: write === undefined ? undefined : convertUnderlyingSinkWriteCallback(write, original, context + " has member 'write' that"), - type: type - }; - } - - function convertUnderlyingSinkAbortCallback(fn, original, context) { - assertFunction(fn, context); - return function (reason) { - return promiseCall(fn, original, [reason]); - }; - } - - function convertUnderlyingSinkCloseCallback(fn, original, context) { - assertFunction(fn, context); - return function () { - return promiseCall(fn, original, []); - }; - } - - function convertUnderlyingSinkStartCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { - return reflectCall(fn, original, [controller]); - }; - } - - function convertUnderlyingSinkWriteCallback(fn, original, context) { - assertFunction(fn, context); - return function (chunk, controller) { - return promiseCall(fn, original, [ - chunk, - controller - ]); - }; - } - - function assertWritableStream(x, context) { - if (!IsWritableStream(x)) { - throw new TypeError(context + " is not a WritableStream."); - } - } - - var WritableStream = function () { - function WritableStream(rawUnderlyingSink, rawStrategy) { - if (rawUnderlyingSink === void 0) { - rawUnderlyingSink = {}; - } - if (rawStrategy === void 0) { - rawStrategy = {}; - } - if (rawUnderlyingSink === undefined) { - rawUnderlyingSink = null; - } else { - assertObject(rawUnderlyingSink, 'First parameter'); - } - var strategy = convertQueuingStrategy(rawStrategy, 'Second parameter'); - var underlyingSink = convertUnderlyingSink(rawUnderlyingSink, 'First parameter'); - InitializeWritableStream(this); - var type = underlyingSink.type; - if (type !== undefined) { - throw new RangeError('Invalid type is specified'); - } - var sizeAlgorithm = ExtractSizeAlgorithm(strategy); - var highWaterMark = ExtractHighWaterMark(strategy, 1); - SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm); - } - - Object.defineProperty(WritableStream.prototype, "locked", { - get: function () { - if (!IsWritableStream(this)) { - throw streamBrandCheckException('locked'); - } - return IsWritableStreamLocked(this); - }, - enumerable: false, - configurable: true - }); - WritableStream.prototype.abort = function (reason) { - if (reason === void 0) { - reason = undefined; - } - if (!IsWritableStream(this)) { - return promiseRejectedWith(streamBrandCheckException('abort')); - } - if (IsWritableStreamLocked(this)) { - return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer')); - } - return WritableStreamAbort(this, reason); - }; - WritableStream.prototype.close = function () { - if (!IsWritableStream(this)) { - return promiseRejectedWith(streamBrandCheckException('close')); - } - if (IsWritableStreamLocked(this)) { - return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer')); - } - if (WritableStreamCloseQueuedOrInFlight(this)) { - return promiseRejectedWith(new TypeError('Cannot close an already-closing stream')); - } - return WritableStreamClose(this); - }; - WritableStream.prototype.getWriter = function () { - if (!IsWritableStream(this)) { - throw streamBrandCheckException('getWriter'); - } - return AcquireWritableStreamDefaultWriter(this); - }; - return WritableStream; - }(); - Object.defineProperties(WritableStream.prototype, { - abort: {enumerable: true}, - close: {enumerable: true}, - getWriter: {enumerable: true}, - locked: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(WritableStream.prototype, SymbolPolyfill.toStringTag, { - value: 'WritableStream', - configurable: true - }); - } - - function AcquireWritableStreamDefaultWriter(stream) { - return new WritableStreamDefaultWriter(stream); - } - - function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) { - if (highWaterMark === void 0) { - highWaterMark = 1; - } - if (sizeAlgorithm === void 0) { - sizeAlgorithm = function () { - return 1; - }; - } - var stream = Object.create(WritableStream.prototype); - InitializeWritableStream(stream); - var controller = Object.create(WritableStreamDefaultController.prototype); - SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm); - return stream; - } - - function InitializeWritableStream(stream) { - stream._state = 'writable'; - stream._storedError = undefined; - stream._writer = undefined; - stream._writableStreamController = undefined; - stream._writeRequests = new SimpleQueue(); - stream._inFlightWriteRequest = undefined; - stream._closeRequest = undefined; - stream._inFlightCloseRequest = undefined; - stream._pendingAbortRequest = undefined; - stream._backpressure = false; - } - - function IsWritableStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) { - return false; - } - return true; - } - - function IsWritableStreamLocked(stream) { - if (stream._writer === undefined) { - return false; - } - return true; - } - - function WritableStreamAbort(stream, reason) { - var state = stream._state; - if (state === 'closed' || state === 'errored') { - return promiseResolvedWith(undefined); - } - if (stream._pendingAbortRequest !== undefined) { - return stream._pendingAbortRequest._promise; - } - var wasAlreadyErroring = false; - if (state === 'erroring') { - wasAlreadyErroring = true; - reason = undefined; - } - var promise = newPromise(function (resolve, reject) { - stream._pendingAbortRequest = { - _promise: undefined, - _resolve: resolve, - _reject: reject, - _reason: reason, - _wasAlreadyErroring: wasAlreadyErroring - }; - }); - stream._pendingAbortRequest._promise = promise; - if (!wasAlreadyErroring) { - WritableStreamStartErroring(stream, reason); - } - return promise; - } - - function WritableStreamClose(stream) { - var state = stream._state; - if (state === 'closed' || state === 'errored') { - return promiseRejectedWith(new TypeError("The stream (in " + state + " state) is not in the writable state and cannot be closed")); - } - var promise = newPromise(function (resolve, reject) { - var closeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._closeRequest = closeRequest; - }); - var writer = stream._writer; - if (writer !== undefined && stream._backpressure && state === 'writable') { - defaultWriterReadyPromiseResolve(writer); - } - WritableStreamDefaultControllerClose(stream._writableStreamController); - return promise; - } - - function WritableStreamAddWriteRequest(stream) { - var promise = newPromise(function (resolve, reject) { - var writeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._writeRequests.push(writeRequest); - }); - return promise; - } - - function WritableStreamDealWithRejection(stream, error) { - var state = stream._state; - if (state === 'writable') { - WritableStreamStartErroring(stream, error); - return; - } - WritableStreamFinishErroring(stream); - } - - function WritableStreamStartErroring(stream, reason) { - var controller = stream._writableStreamController; - stream._state = 'erroring'; - stream._storedError = reason; - var writer = stream._writer; - if (writer !== undefined) { - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); - } - if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) { - WritableStreamFinishErroring(stream); - } - } - - function WritableStreamFinishErroring(stream) { - stream._state = 'errored'; - stream._writableStreamController[ErrorSteps](); - var storedError = stream._storedError; - stream._writeRequests.forEach(function (writeRequest) { - writeRequest._reject(storedError); - }); - stream._writeRequests = new SimpleQueue(); - if (stream._pendingAbortRequest === undefined) { - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - var abortRequest = stream._pendingAbortRequest; - stream._pendingAbortRequest = undefined; - if (abortRequest._wasAlreadyErroring) { - abortRequest._reject(storedError); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - var promise = stream._writableStreamController[AbortSteps](abortRequest._reason); - uponPromise(promise, function () { - abortRequest._resolve(); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }, function (reason) { - abortRequest._reject(reason); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }); - } - - function WritableStreamFinishInFlightWrite(stream) { - stream._inFlightWriteRequest._resolve(undefined); - stream._inFlightWriteRequest = undefined; - } - - function WritableStreamFinishInFlightWriteWithError(stream, error) { - stream._inFlightWriteRequest._reject(error); - stream._inFlightWriteRequest = undefined; - WritableStreamDealWithRejection(stream, error); - } - - function WritableStreamFinishInFlightClose(stream) { - stream._inFlightCloseRequest._resolve(undefined); - stream._inFlightCloseRequest = undefined; - var state = stream._state; - if (state === 'erroring') { - stream._storedError = undefined; - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._resolve(); - stream._pendingAbortRequest = undefined; - } - } - stream._state = 'closed'; - var writer = stream._writer; - if (writer !== undefined) { - defaultWriterClosedPromiseResolve(writer); - } - } - - function WritableStreamFinishInFlightCloseWithError(stream, error) { - stream._inFlightCloseRequest._reject(error); - stream._inFlightCloseRequest = undefined; - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._reject(error); - stream._pendingAbortRequest = undefined; - } - WritableStreamDealWithRejection(stream, error); - } - - function WritableStreamCloseQueuedOrInFlight(stream) { - if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - return true; - } - - function WritableStreamHasOperationMarkedInFlight(stream) { - if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - return true; - } - - function WritableStreamMarkCloseRequestInFlight(stream) { - stream._inFlightCloseRequest = stream._closeRequest; - stream._closeRequest = undefined; - } - - function WritableStreamMarkFirstWriteRequestInFlight(stream) { - stream._inFlightWriteRequest = stream._writeRequests.shift(); - } - - function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { - if (stream._closeRequest !== undefined) { - stream._closeRequest._reject(stream._storedError); - stream._closeRequest = undefined; - } - var writer = stream._writer; - if (writer !== undefined) { - defaultWriterClosedPromiseReject(writer, stream._storedError); - } - } - - function WritableStreamUpdateBackpressure(stream, backpressure) { - var writer = stream._writer; - if (writer !== undefined && backpressure !== stream._backpressure) { - if (backpressure) { - defaultWriterReadyPromiseReset(writer); - } else { - defaultWriterReadyPromiseResolve(writer); - } - } - stream._backpressure = backpressure; - } - - var WritableStreamDefaultWriter = function () { - function WritableStreamDefaultWriter(stream) { - assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter'); - assertWritableStream(stream, 'First parameter'); - if (IsWritableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive writing by another writer'); - } - this._ownerWritableStream = stream; - stream._writer = this; - var state = stream._state; - if (state === 'writable') { - if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) { - defaultWriterReadyPromiseInitialize(this); - } else { - defaultWriterReadyPromiseInitializeAsResolved(this); - } - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'erroring') { - defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'closed') { - defaultWriterReadyPromiseInitializeAsResolved(this); - defaultWriterClosedPromiseInitializeAsResolved(this); - } else { - var storedError = stream._storedError; - defaultWriterReadyPromiseInitializeAsRejected(this, storedError); - defaultWriterClosedPromiseInitializeAsRejected(this, storedError); - } - } - - Object.defineProperty(WritableStreamDefaultWriter.prototype, "closed", { - get: function () { - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('closed')); - } - return this._closedPromise; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(WritableStreamDefaultWriter.prototype, "desiredSize", { - get: function () { - if (!IsWritableStreamDefaultWriter(this)) { - throw defaultWriterBrandCheckException('desiredSize'); - } - if (this._ownerWritableStream === undefined) { - throw defaultWriterLockException('desiredSize'); - } - return WritableStreamDefaultWriterGetDesiredSize(this); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(WritableStreamDefaultWriter.prototype, "ready", { - get: function () { - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('ready')); - } - return this._readyPromise; - }, - enumerable: false, - configurable: true - }); - WritableStreamDefaultWriter.prototype.abort = function (reason) { - if (reason === void 0) { - reason = undefined; - } - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('abort')); - } - if (this._ownerWritableStream === undefined) { - return promiseRejectedWith(defaultWriterLockException('abort')); - } - return WritableStreamDefaultWriterAbort(this, reason); - }; - WritableStreamDefaultWriter.prototype.close = function () { - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('close')); - } - var stream = this._ownerWritableStream; - if (stream === undefined) { - return promiseRejectedWith(defaultWriterLockException('close')); - } - if (WritableStreamCloseQueuedOrInFlight(stream)) { - return promiseRejectedWith(new TypeError('Cannot close an already-closing stream')); - } - return WritableStreamDefaultWriterClose(this); - }; - WritableStreamDefaultWriter.prototype.releaseLock = function () { - if (!IsWritableStreamDefaultWriter(this)) { - throw defaultWriterBrandCheckException('releaseLock'); - } - var stream = this._ownerWritableStream; - if (stream === undefined) { - return; - } - WritableStreamDefaultWriterRelease(this); - }; - WritableStreamDefaultWriter.prototype.write = function (chunk) { - if (chunk === void 0) { - chunk = undefined; - } - if (!IsWritableStreamDefaultWriter(this)) { - return promiseRejectedWith(defaultWriterBrandCheckException('write')); - } - if (this._ownerWritableStream === undefined) { - return promiseRejectedWith(defaultWriterLockException('write to')); - } - return WritableStreamDefaultWriterWrite(this, chunk); - }; - return WritableStreamDefaultWriter; - }(); - Object.defineProperties(WritableStreamDefaultWriter.prototype, { - abort: {enumerable: true}, - close: {enumerable: true}, - releaseLock: {enumerable: true}, - write: {enumerable: true}, - closed: {enumerable: true}, - desiredSize: {enumerable: true}, - ready: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(WritableStreamDefaultWriter.prototype, SymbolPolyfill.toStringTag, { - value: 'WritableStreamDefaultWriter', - configurable: true - }); - } - - function IsWritableStreamDefaultWriter(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) { - return false; - } - return true; - } - - function WritableStreamDefaultWriterAbort(writer, reason) { - var stream = writer._ownerWritableStream; - return WritableStreamAbort(stream, reason); - } - - function WritableStreamDefaultWriterClose(writer) { - var stream = writer._ownerWritableStream; - return WritableStreamClose(stream); - } - - function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { - var stream = writer._ownerWritableStream; - var state = stream._state; - if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') { - return promiseResolvedWith(undefined); - } - if (state === 'errored') { - return promiseRejectedWith(stream._storedError); - } - return WritableStreamDefaultWriterClose(writer); - } - - function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { - if (writer._closedPromiseState === 'pending') { - defaultWriterClosedPromiseReject(writer, error); - } else { - defaultWriterClosedPromiseResetToRejected(writer, error); - } - } - - function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { - if (writer._readyPromiseState === 'pending') { - defaultWriterReadyPromiseReject(writer, error); - } else { - defaultWriterReadyPromiseResetToRejected(writer, error); - } - } - - function WritableStreamDefaultWriterGetDesiredSize(writer) { - var stream = writer._ownerWritableStream; - var state = stream._state; - if (state === 'errored' || state === 'erroring') { - return null; - } - if (state === 'closed') { - return 0; - } - return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); - } - - function WritableStreamDefaultWriterRelease(writer) { - var stream = writer._ownerWritableStream; - var releasedError = new TypeError("Writer was released and can no longer be used to monitor the stream's closedness"); - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); - WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); - stream._writer = undefined; - writer._ownerWritableStream = undefined; - } - - function WritableStreamDefaultWriterWrite(writer, chunk) { - var stream = writer._ownerWritableStream; - var controller = stream._writableStreamController; - var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); - if (stream !== writer._ownerWritableStream) { - return promiseRejectedWith(defaultWriterLockException('write to')); - } - var state = stream._state; - if (state === 'errored') { - return promiseRejectedWith(stream._storedError); - } - if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') { - return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to')); - } - if (state === 'erroring') { - return promiseRejectedWith(stream._storedError); - } - var promise = WritableStreamAddWriteRequest(stream); - WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); - return promise; - } - - var closeSentinel = {}; - var WritableStreamDefaultController = function () { - function WritableStreamDefaultController() { - throw new TypeError('Illegal constructor'); - } - - WritableStreamDefaultController.prototype.error = function (e) { - if (e === void 0) { - e = undefined; - } - if (!IsWritableStreamDefaultController(this)) { - throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController'); - } - var state = this._controlledWritableStream._state; - if (state !== 'writable') { - return; - } - WritableStreamDefaultControllerError(this, e); - }; - WritableStreamDefaultController.prototype[AbortSteps] = function (reason) { - var result = this._abortAlgorithm(reason); - WritableStreamDefaultControllerClearAlgorithms(this); - return result; - }; - WritableStreamDefaultController.prototype[ErrorSteps] = function () { - ResetQueue(this); - }; - return WritableStreamDefaultController; - }(); - Object.defineProperties(WritableStreamDefaultController.prototype, {error: {enumerable: true}}); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(WritableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { - value: 'WritableStreamDefaultController', - configurable: true - }); - } - - function IsWritableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) { - return false; - } - return true; - } - - function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) { - controller._controlledWritableStream = stream; - stream._writableStreamController = controller; - controller._queue = undefined; - controller._queueTotalSize = undefined; - ResetQueue(controller); - controller._started = false; - controller._strategySizeAlgorithm = sizeAlgorithm; - controller._strategyHWM = highWaterMark; - controller._writeAlgorithm = writeAlgorithm; - controller._closeAlgorithm = closeAlgorithm; - controller._abortAlgorithm = abortAlgorithm; - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - var startResult = startAlgorithm(); - var startPromise = promiseResolvedWith(startResult); - uponPromise(startPromise, function () { - controller._started = true; - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, function (r) { - controller._started = true; - WritableStreamDealWithRejection(stream, r); - }); - } - - function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) { - var controller = Object.create(WritableStreamDefaultController.prototype); - var startAlgorithm = function () { - return undefined; - }; - var writeAlgorithm = function () { - return promiseResolvedWith(undefined); - }; - var closeAlgorithm = function () { - return promiseResolvedWith(undefined); - }; - var abortAlgorithm = function () { - return promiseResolvedWith(undefined); - }; - if (underlyingSink.start !== undefined) { - startAlgorithm = function () { - return underlyingSink.start(controller); - }; - } - if (underlyingSink.write !== undefined) { - writeAlgorithm = function (chunk) { - return underlyingSink.write(chunk, controller); - }; - } - if (underlyingSink.close !== undefined) { - closeAlgorithm = function () { - return underlyingSink.close(); - }; - } - if (underlyingSink.abort !== undefined) { - abortAlgorithm = function (reason) { - return underlyingSink.abort(reason); - }; - } - SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm); - } - - function WritableStreamDefaultControllerClearAlgorithms(controller) { - controller._writeAlgorithm = undefined; - controller._closeAlgorithm = undefined; - controller._abortAlgorithm = undefined; - controller._strategySizeAlgorithm = undefined; - } - - function WritableStreamDefaultControllerClose(controller) { - EnqueueValueWithSize(controller, closeSentinel, 0); - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - - function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { - try { - return controller._strategySizeAlgorithm(chunk); - } catch (chunkSizeE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - return 1; - } - } - - function WritableStreamDefaultControllerGetDesiredSize(controller) { - return controller._strategyHWM - controller._queueTotalSize; - } - - function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { - try { - EnqueueValueWithSize(controller, chunk, chunkSize); - } catch (enqueueE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - return; - } - var stream = controller._controlledWritableStream; - if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - - function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { - var stream = controller._controlledWritableStream; - if (!controller._started) { - return; - } - if (stream._inFlightWriteRequest !== undefined) { - return; - } - var state = stream._state; - if (state === 'erroring') { - WritableStreamFinishErroring(stream); - return; - } - if (controller._queue.length === 0) { - return; - } - var value = PeekQueueValue(controller); - if (value === closeSentinel) { - WritableStreamDefaultControllerProcessClose(controller); - } else { - WritableStreamDefaultControllerProcessWrite(controller, value); - } - } - - function WritableStreamDefaultControllerErrorIfNeeded(controller, error) { - if (controller._controlledWritableStream._state === 'writable') { - WritableStreamDefaultControllerError(controller, error); - } - } - - function WritableStreamDefaultControllerProcessClose(controller) { - var stream = controller._controlledWritableStream; - WritableStreamMarkCloseRequestInFlight(stream); - DequeueValue(controller); - var sinkClosePromise = controller._closeAlgorithm(); - WritableStreamDefaultControllerClearAlgorithms(controller); - uponPromise(sinkClosePromise, function () { - WritableStreamFinishInFlightClose(stream); - }, function (reason) { - WritableStreamFinishInFlightCloseWithError(stream, reason); - }); - } - - function WritableStreamDefaultControllerProcessWrite(controller, chunk) { - var stream = controller._controlledWritableStream; - WritableStreamMarkFirstWriteRequestInFlight(stream); - var sinkWritePromise = controller._writeAlgorithm(chunk); - uponPromise(sinkWritePromise, function () { - WritableStreamFinishInFlightWrite(stream); - var state = stream._state; - DequeueValue(controller); - if (!WritableStreamCloseQueuedOrInFlight(stream) && state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, function (reason) { - if (stream._state === 'writable') { - WritableStreamDefaultControllerClearAlgorithms(controller); - } - WritableStreamFinishInFlightWriteWithError(stream, reason); - }); - } - - function WritableStreamDefaultControllerGetBackpressure(controller) { - var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); - return desiredSize <= 0; - } - - function WritableStreamDefaultControllerError(controller, error) { - var stream = controller._controlledWritableStream; - WritableStreamDefaultControllerClearAlgorithms(controller); - WritableStreamStartErroring(stream, error); - } - - function streamBrandCheckException(name) { - return new TypeError("WritableStream.prototype." + name + " can only be used on a WritableStream"); - } - - function defaultWriterBrandCheckException(name) { - return new TypeError("WritableStreamDefaultWriter.prototype." + name + " can only be used on a WritableStreamDefaultWriter"); - } - - function defaultWriterLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released writer'); - } - - function defaultWriterClosedPromiseInitialize(writer) { - writer._closedPromise = newPromise(function (resolve, reject) { - writer._closedPromise_resolve = resolve; - writer._closedPromise_reject = reject; - writer._closedPromiseState = 'pending'; - }); - } - - function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { - defaultWriterClosedPromiseInitialize(writer); - defaultWriterClosedPromiseReject(writer, reason); - } - - function defaultWriterClosedPromiseInitializeAsResolved(writer) { - defaultWriterClosedPromiseInitialize(writer); - defaultWriterClosedPromiseResolve(writer); - } - - function defaultWriterClosedPromiseReject(writer, reason) { - if (writer._closedPromise_reject === undefined) { - return; - } - setPromiseIsHandledToTrue(writer._closedPromise); - writer._closedPromise_reject(reason); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - - function defaultWriterClosedPromiseResetToRejected(writer, reason) { - defaultWriterClosedPromiseInitializeAsRejected(writer, reason); - } - - function defaultWriterClosedPromiseResolve(writer) { - if (writer._closedPromise_resolve === undefined) { - return; - } - writer._closedPromise_resolve(undefined); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - - function defaultWriterReadyPromiseInitialize(writer) { - writer._readyPromise = newPromise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - - function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { - defaultWriterReadyPromiseInitialize(writer); - defaultWriterReadyPromiseReject(writer, reason); - } - - function defaultWriterReadyPromiseInitializeAsResolved(writer) { - defaultWriterReadyPromiseInitialize(writer); - defaultWriterReadyPromiseResolve(writer); - } - - function defaultWriterReadyPromiseReject(writer, reason) { - if (writer._readyPromise_reject === undefined) { - return; - } - setPromiseIsHandledToTrue(writer._readyPromise); - writer._readyPromise_reject(reason); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - - function defaultWriterReadyPromiseReset(writer) { - defaultWriterReadyPromiseInitialize(writer); - } - - function defaultWriterReadyPromiseResetToRejected(writer, reason) { - defaultWriterReadyPromiseInitializeAsRejected(writer, reason); - } - - function defaultWriterReadyPromiseResolve(writer) { - if (writer._readyPromise_resolve === undefined) { - return; - } - writer._readyPromise_resolve(undefined); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } - - function isAbortSignal(value) { - if (typeof value !== 'object' || value === null) { - return false; - } - try { - return typeof value.aborted === 'boolean'; - } catch (_a) { - return false; - } - } - - var NativeDOMException = typeof DOMException !== 'undefined' ? DOMException : undefined; - - function isDOMExceptionConstructor(ctor) { - if (!(typeof ctor === 'function' || typeof ctor === 'object')) { - return false; - } - try { - new ctor(); - return true; - } catch (_a) { - return false; - } - } - - function createDOMExceptionPolyfill() { - var ctor = function DOMException(message, name) { - this.message = message || ''; - this.name = name || 'Error'; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - }; - ctor.prototype = Object.create(Error.prototype); - Object.defineProperty(ctor.prototype, 'constructor', { - value: ctor, - writable: true, - configurable: true - }); - return ctor; - } - - var DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill(); - - function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) { - var reader = AcquireReadableStreamDefaultReader(source); - var writer = AcquireWritableStreamDefaultWriter(dest); - source._disturbed = true; - var shuttingDown = false; - var currentWrite = promiseResolvedWith(undefined); - return newPromise(function (resolve, reject) { - var abortAlgorithm; - if (signal !== undefined) { - abortAlgorithm = function () { - var error = new DOMException$1('Aborted', 'AbortError'); - var actions = []; - if (!preventAbort) { - actions.push(function () { - if (dest._state === 'writable') { - return WritableStreamAbort(dest, error); - } - return promiseResolvedWith(undefined); - }); - } - if (!preventCancel) { - actions.push(function () { - if (source._state === 'readable') { - return ReadableStreamCancel(source, error); - } - return promiseResolvedWith(undefined); - }); - } - shutdownWithAction(function () { - return Promise.all(actions.map(function (action) { - return action(); - })); - }, true, error); - }; - if (signal.aborted) { - abortAlgorithm(); - return; - } - signal.addEventListener('abort', abortAlgorithm); - } - - function pipeLoop() { - return newPromise(function (resolveLoop, rejectLoop) { - function next(done) { - if (done) { - resolveLoop(); - } else { - PerformPromiseThen(pipeStep(), next, rejectLoop); - } - } - - next(false); - }); - } - - function pipeStep() { - if (shuttingDown) { - return promiseResolvedWith(true); - } - return PerformPromiseThen(writer._readyPromise, function () { - return newPromise(function (resolveRead, rejectRead) { - ReadableStreamDefaultReaderRead(reader, { - _chunkSteps: function (chunk) { - currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), undefined, noop); - resolveRead(false); - }, - _closeSteps: function () { - return resolveRead(true); - }, - _errorSteps: rejectRead - }); - }); - }); - } - - isOrBecomesErrored(source, reader._closedPromise, function (storedError) { - if (!preventAbort) { - shutdownWithAction(function () { - return WritableStreamAbort(dest, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesErrored(dest, writer._closedPromise, function (storedError) { - if (!preventCancel) { - shutdownWithAction(function () { - return ReadableStreamCancel(source, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesClosed(source, reader._closedPromise, function () { - if (!preventClose) { - shutdownWithAction(function () { - return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); - }); - } else { - shutdown(); - } - }); - if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === 'closed') { - var destClosed_1 = new TypeError('the destination writable stream closed before all data could be piped to it'); - if (!preventCancel) { - shutdownWithAction(function () { - return ReadableStreamCancel(source, destClosed_1); - }, true, destClosed_1); - } else { - shutdown(true, destClosed_1); - } - } - setPromiseIsHandledToTrue(pipeLoop()); - - function waitForWritesToFinish() { - var oldCurrentWrite = currentWrite; - return PerformPromiseThen(currentWrite, function () { - return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; - }); - } - - function isOrBecomesErrored(stream, promise, action) { - if (stream._state === 'errored') { - action(stream._storedError); - } else { - uponRejection(promise, action); - } - } - - function isOrBecomesClosed(stream, promise, action) { - if (stream._state === 'closed') { - action(); - } else { - uponFulfillment(promise, action); - } - } - - function shutdownWithAction(action, originalIsError, originalError) { - if (shuttingDown) { - return; - } - shuttingDown = true; - if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) { - uponFulfillment(waitForWritesToFinish(), doTheRest); - } else { - doTheRest(); - } - - function doTheRest() { - uponPromise(action(), function () { - return finalize(originalIsError, originalError); - }, function (newError) { - return finalize(true, newError); - }); - } - } - - function shutdown(isError, error) { - if (shuttingDown) { - return; - } - shuttingDown = true; - if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) { - uponFulfillment(waitForWritesToFinish(), function () { - return finalize(isError, error); - }); - } else { - finalize(isError, error); - } - } - - function finalize(isError, error) { - WritableStreamDefaultWriterRelease(writer); - ReadableStreamReaderGenericRelease(reader); - if (signal !== undefined) { - signal.removeEventListener('abort', abortAlgorithm); - } - if (isError) { - reject(error); - } else { - resolve(undefined); - } - } - }); - } - - var ReadableStreamDefaultController = function () { - function ReadableStreamDefaultController() { - throw new TypeError('Illegal constructor'); - } - - Object.defineProperty(ReadableStreamDefaultController.prototype, "desiredSize", { - get: function () { - if (!IsReadableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException('desiredSize'); - } - return ReadableStreamDefaultControllerGetDesiredSize(this); - }, - enumerable: false, - configurable: true - }); - ReadableStreamDefaultController.prototype.close = function () { - if (!IsReadableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException('close'); - } - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) { - throw new TypeError('The stream is not in a state that permits close'); - } - ReadableStreamDefaultControllerClose(this); - }; - ReadableStreamDefaultController.prototype.enqueue = function (chunk) { - if (chunk === void 0) { - chunk = undefined; - } - if (!IsReadableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException('enqueue'); - } - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) { - throw new TypeError('The stream is not in a state that permits enqueue'); - } - return ReadableStreamDefaultControllerEnqueue(this, chunk); - }; - ReadableStreamDefaultController.prototype.error = function (e) { - if (e === void 0) { - e = undefined; - } - if (!IsReadableStreamDefaultController(this)) { - throw defaultControllerBrandCheckException('error'); - } - ReadableStreamDefaultControllerError(this, e); - }; - ReadableStreamDefaultController.prototype[CancelSteps] = function (reason) { - ResetQueue(this); - var result = this._cancelAlgorithm(reason); - ReadableStreamDefaultControllerClearAlgorithms(this); - return result; - }; - ReadableStreamDefaultController.prototype[PullSteps] = function (readRequest) { - var stream = this._controlledReadableStream; - if (this._queue.length > 0) { - var chunk = DequeueValue(this); - if (this._closeRequested && this._queue.length === 0) { - ReadableStreamDefaultControllerClearAlgorithms(this); - ReadableStreamClose(stream); - } else { - ReadableStreamDefaultControllerCallPullIfNeeded(this); - } - readRequest._chunkSteps(chunk); - } else { - ReadableStreamAddReadRequest(stream, readRequest); - ReadableStreamDefaultControllerCallPullIfNeeded(this); - } - }; - return ReadableStreamDefaultController; - }(); - Object.defineProperties(ReadableStreamDefaultController.prototype, { - close: {enumerable: true}, - enqueue: {enumerable: true}, - error: {enumerable: true}, - desiredSize: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStreamDefaultController', - configurable: true - }); - } - - function IsReadableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) { - return false; - } - return true; - } - - function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); - if (!shouldPull) { - return; - } - if (controller._pulling) { - controller._pullAgain = true; - return; - } - controller._pulling = true; - var pullPromise = controller._pullAlgorithm(); - uponPromise(pullPromise, function () { - controller._pulling = false; - if (controller._pullAgain) { - controller._pullAgain = false; - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - } - }, function (e) { - ReadableStreamDefaultControllerError(controller, e); - }); - } - - function ReadableStreamDefaultControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { - return false; - } - if (!controller._started) { - return false; - } - if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - if (desiredSize > 0) { - return true; - } - return false; - } - - function ReadableStreamDefaultControllerClearAlgorithms(controller) { - controller._pullAlgorithm = undefined; - controller._cancelAlgorithm = undefined; - controller._strategySizeAlgorithm = undefined; - } - - function ReadableStreamDefaultControllerClose(controller) { - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { - return; - } - var stream = controller._controlledReadableStream; - controller._closeRequested = true; - if (controller._queue.length === 0) { - ReadableStreamDefaultControllerClearAlgorithms(controller); - ReadableStreamClose(stream); - } - } - - function ReadableStreamDefaultControllerEnqueue(controller, chunk) { - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { - return; - } - var stream = controller._controlledReadableStream; - if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { - ReadableStreamFulfillReadRequest(stream, chunk, false); - } else { - var chunkSize = void 0; - try { - chunkSize = controller._strategySizeAlgorithm(chunk); - } catch (chunkSizeE) { - ReadableStreamDefaultControllerError(controller, chunkSizeE); - throw chunkSizeE; - } - try { - EnqueueValueWithSize(controller, chunk, chunkSize); - } catch (enqueueE) { - ReadableStreamDefaultControllerError(controller, enqueueE); - throw enqueueE; - } - } - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - } - - function ReadableStreamDefaultControllerError(controller, e) { - var stream = controller._controlledReadableStream; - if (stream._state !== 'readable') { - return; - } - ResetQueue(controller); - ReadableStreamDefaultControllerClearAlgorithms(controller); - ReadableStreamError(stream, e); - } - - function ReadableStreamDefaultControllerGetDesiredSize(controller) { - var state = controller._controlledReadableStream._state; - if (state === 'errored') { - return null; - } - if (state === 'closed') { - return 0; - } - return controller._strategyHWM - controller._queueTotalSize; - } - - function ReadableStreamDefaultControllerHasBackpressure(controller) { - if (ReadableStreamDefaultControllerShouldCallPull(controller)) { - return false; - } - return true; - } - - function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) { - var state = controller._controlledReadableStream._state; - if (!controller._closeRequested && state === 'readable') { - return true; - } - return false; - } - - function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) { - controller._controlledReadableStream = stream; - controller._queue = undefined; - controller._queueTotalSize = undefined; - ResetQueue(controller); - controller._started = false; - controller._closeRequested = false; - controller._pullAgain = false; - controller._pulling = false; - controller._strategySizeAlgorithm = sizeAlgorithm; - controller._strategyHWM = highWaterMark; - controller._pullAlgorithm = pullAlgorithm; - controller._cancelAlgorithm = cancelAlgorithm; - stream._readableStreamController = controller; - var startResult = startAlgorithm(); - uponPromise(promiseResolvedWith(startResult), function () { - controller._started = true; - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - }, function (r) { - ReadableStreamDefaultControllerError(controller, r); - }); - } - - function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) { - var controller = Object.create(ReadableStreamDefaultController.prototype); - var startAlgorithm = function () { - return undefined; - }; - var pullAlgorithm = function () { - return promiseResolvedWith(undefined); - }; - var cancelAlgorithm = function () { - return promiseResolvedWith(undefined); - }; - if (underlyingSource.start !== undefined) { - startAlgorithm = function () { - return underlyingSource.start(controller); - }; - } - if (underlyingSource.pull !== undefined) { - pullAlgorithm = function () { - return underlyingSource.pull(controller); - }; - } - if (underlyingSource.cancel !== undefined) { - cancelAlgorithm = function (reason) { - return underlyingSource.cancel(reason); - }; - } - SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm); - } - - function defaultControllerBrandCheckException(name) { - return new TypeError("ReadableStreamDefaultController.prototype." + name + " can only be used on a ReadableStreamDefaultController"); - } - - function ReadableStreamTee(stream, cloneForBranch2) { - var reader = AcquireReadableStreamDefaultReader(stream); - var reading = false; - var canceled1 = false; - var canceled2 = false; - var reason1; - var reason2; - var branch1; - var branch2; - var resolveCancelPromise; - var cancelPromise = newPromise(function (resolve) { - resolveCancelPromise = resolve; - }); - - function pullAlgorithm() { - if (reading) { - return promiseResolvedWith(undefined); - } - reading = true; - var readRequest = { - _chunkSteps: function (value) { - queueMicrotask(function () { - reading = false; - var value1 = value; - var value2 = value; - if (!canceled1) { - ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, value1); - } - if (!canceled2) { - ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, value2); - } - resolveCancelPromise(undefined); - }); - }, - _closeSteps: function () { - reading = false; - if (!canceled1) { - ReadableStreamDefaultControllerClose(branch1._readableStreamController); - } - if (!canceled2) { - ReadableStreamDefaultControllerClose(branch2._readableStreamController); - } - }, - _errorSteps: function () { - reading = false; - } - }; - ReadableStreamDefaultReaderRead(reader, readRequest); - return promiseResolvedWith(undefined); - } - - function cancel1Algorithm(reason) { - canceled1 = true; - reason1 = reason; - if (canceled2) { - var compositeReason = CreateArrayFromList([ - reason1, - reason2 - ]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - resolveCancelPromise(cancelResult); - } - return cancelPromise; - } - - function cancel2Algorithm(reason) { - canceled2 = true; - reason2 = reason; - if (canceled1) { - var compositeReason = CreateArrayFromList([ - reason1, - reason2 - ]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - resolveCancelPromise(cancelResult); - } - return cancelPromise; - } - - function startAlgorithm() { - } - - branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm); - branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm); - uponRejection(reader._closedPromise, function (r) { - ReadableStreamDefaultControllerError(branch1._readableStreamController, r); - ReadableStreamDefaultControllerError(branch2._readableStreamController, r); - resolveCancelPromise(undefined); - }); - return [ - branch1, - branch2 - ]; - } - - function convertUnderlyingDefaultOrByteSource(source, context) { - assertDictionary(source, context); - var original = source; - var autoAllocateChunkSize = original === null || original === void 0 ? void 0 : original.autoAllocateChunkSize; - var cancel = original === null || original === void 0 ? void 0 : original.cancel; - var pull = original === null || original === void 0 ? void 0 : original.pull; - var start = original === null || original === void 0 ? void 0 : original.start; - var type = original === null || original === void 0 ? void 0 : original.type; - return { - autoAllocateChunkSize: autoAllocateChunkSize === undefined ? undefined : convertUnsignedLongLongWithEnforceRange(autoAllocateChunkSize, context + " has member 'autoAllocateChunkSize' that"), - cancel: cancel === undefined ? undefined : convertUnderlyingSourceCancelCallback(cancel, original, context + " has member 'cancel' that"), - pull: pull === undefined ? undefined : convertUnderlyingSourcePullCallback(pull, original, context + " has member 'pull' that"), - start: start === undefined ? undefined : convertUnderlyingSourceStartCallback(start, original, context + " has member 'start' that"), - type: type === undefined ? undefined : convertReadableStreamType(type, context + " has member 'type' that") - }; - } - - function convertUnderlyingSourceCancelCallback(fn, original, context) { - assertFunction(fn, context); - return function (reason) { - return promiseCall(fn, original, [reason]); - }; - } - - function convertUnderlyingSourcePullCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { - return promiseCall(fn, original, [controller]); - }; - } - - function convertUnderlyingSourceStartCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { - return reflectCall(fn, original, [controller]); - }; - } - - function convertReadableStreamType(type, context) { - type = "" + type; - if (type !== 'bytes') { - throw new TypeError(context + " '" + type + "' is not a valid enumeration value for ReadableStreamType"); - } - return type; - } - - function convertReaderOptions(options, context) { - assertDictionary(options, context); - var mode = options === null || options === void 0 ? void 0 : options.mode; - return {mode: mode === undefined ? undefined : convertReadableStreamReaderMode(mode, context + " has member 'mode' that")}; - } - - function convertReadableStreamReaderMode(mode, context) { - mode = "" + mode; - if (mode !== 'byob') { - throw new TypeError(context + " '" + mode + "' is not a valid enumeration value for ReadableStreamReaderMode"); - } - return mode; - } - - function convertIteratorOptions(options, context) { - assertDictionary(options, context); - var preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel; - return {preventCancel: Boolean(preventCancel)}; - } - - function convertPipeOptions(options, context) { - assertDictionary(options, context); - var preventAbort = options === null || options === void 0 ? void 0 : options.preventAbort; - var preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel; - var preventClose = options === null || options === void 0 ? void 0 : options.preventClose; - var signal = options === null || options === void 0 ? void 0 : options.signal; - if (signal !== undefined) { - assertAbortSignal(signal, context + " has member 'signal' that"); - } - return { - preventAbort: Boolean(preventAbort), - preventCancel: Boolean(preventCancel), - preventClose: Boolean(preventClose), - signal: signal - }; - } - - function assertAbortSignal(signal, context) { - if (!isAbortSignal(signal)) { - throw new TypeError(context + " is not an AbortSignal."); - } - } - - function convertReadableWritablePair(pair, context) { - assertDictionary(pair, context); - var readable = pair === null || pair === void 0 ? void 0 : pair.readable; - assertRequiredField(readable, 'readable', 'ReadableWritablePair'); - assertReadableStream(readable, context + " has member 'readable' that"); - var writable = pair === null || pair === void 0 ? void 0 : pair.writable; - assertRequiredField(writable, 'writable', 'ReadableWritablePair'); - assertWritableStream(writable, context + " has member 'writable' that"); - return { - readable: readable, - writable: writable - }; - } - - var ReadableStream = function () { - function ReadableStream(rawUnderlyingSource, rawStrategy) { - if (rawUnderlyingSource === void 0) { - rawUnderlyingSource = {}; - } - if (rawStrategy === void 0) { - rawStrategy = {}; - } - if (rawUnderlyingSource === undefined) { - rawUnderlyingSource = null; - } else { - assertObject(rawUnderlyingSource, 'First parameter'); - } - var strategy = convertQueuingStrategy(rawStrategy, 'Second parameter'); - var underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, 'First parameter'); - InitializeReadableStream(this); - if (underlyingSource.type === 'bytes') { - if (strategy.size !== undefined) { - throw new RangeError('The strategy for a byte stream cannot have a size function'); - } - var highWaterMark = ExtractHighWaterMark(strategy, 0); - SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark); - } else { - var sizeAlgorithm = ExtractSizeAlgorithm(strategy); - var highWaterMark = ExtractHighWaterMark(strategy, 1); - SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm); - } - } - - Object.defineProperty(ReadableStream.prototype, "locked", { - get: function () { - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('locked'); - } - return IsReadableStreamLocked(this); - }, - enumerable: false, - configurable: true - }); - ReadableStream.prototype.cancel = function (reason) { - if (reason === void 0) { - reason = undefined; - } - if (!IsReadableStream(this)) { - return promiseRejectedWith(streamBrandCheckException$1('cancel')); - } - if (IsReadableStreamLocked(this)) { - return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader')); - } - return ReadableStreamCancel(this, reason); - }; - ReadableStream.prototype.getReader = function (rawOptions) { - if (rawOptions === void 0) { - rawOptions = undefined; - } - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('getReader'); - } - var options = convertReaderOptions(rawOptions, 'First parameter'); - if (options.mode === undefined) { - return AcquireReadableStreamDefaultReader(this); - } - return AcquireReadableStreamBYOBReader(this); - }; - ReadableStream.prototype.pipeThrough = function (rawTransform, rawOptions) { - if (rawOptions === void 0) { - rawOptions = {}; - } - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('pipeThrough'); - } - assertRequiredArgument(rawTransform, 1, 'pipeThrough'); - var transform = convertReadableWritablePair(rawTransform, 'First parameter'); - var options = convertPipeOptions(rawOptions, 'Second parameter'); - if (IsReadableStreamLocked(this)) { - throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream'); - } - if (IsWritableStreamLocked(transform.writable)) { - throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream'); - } - var promise = ReadableStreamPipeTo(this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal); - setPromiseIsHandledToTrue(promise); - return transform.readable; - }; - ReadableStream.prototype.pipeTo = function (destination, rawOptions) { - if (rawOptions === void 0) { - rawOptions = {}; - } - if (!IsReadableStream(this)) { - return promiseRejectedWith(streamBrandCheckException$1('pipeTo')); - } - if (destination === undefined) { - return promiseRejectedWith("Parameter 1 is required in 'pipeTo'."); - } - if (!IsWritableStream(destination)) { - return promiseRejectedWith(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream")); - } - var options; - try { - options = convertPipeOptions(rawOptions, 'Second parameter'); - } catch (e) { - return promiseRejectedWith(e); - } - if (IsReadableStreamLocked(this)) { - return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')); - } - if (IsWritableStreamLocked(destination)) { - return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')); - } - return ReadableStreamPipeTo(this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal); - }; - ReadableStream.prototype.tee = function () { - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('tee'); - } - var branches = ReadableStreamTee(this); - return CreateArrayFromList(branches); - }; - ReadableStream.prototype.values = function (rawOptions) { - if (rawOptions === void 0) { - rawOptions = undefined; - } - if (!IsReadableStream(this)) { - throw streamBrandCheckException$1('values'); - } - var options = convertIteratorOptions(rawOptions, 'First parameter'); - return AcquireReadableStreamAsyncIterator(this, options.preventCancel); - }; - return ReadableStream; - }(); - Object.defineProperties(ReadableStream.prototype, { - cancel: {enumerable: true}, - getReader: {enumerable: true}, - pipeThrough: {enumerable: true}, - pipeTo: {enumerable: true}, - tee: {enumerable: true}, - values: {enumerable: true}, - locked: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.toStringTag, { - value: 'ReadableStream', - configurable: true - }); - } - if (typeof SymbolPolyfill.asyncIterator === 'symbol') { - Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.asyncIterator, { - value: ReadableStream.prototype.values, - writable: true, - configurable: true - }); - } - - function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) { - if (highWaterMark === void 0) { - highWaterMark = 1; - } - if (sizeAlgorithm === void 0) { - sizeAlgorithm = function () { - return 1; - }; - } - var stream = Object.create(ReadableStream.prototype); - InitializeReadableStream(stream); - var controller = Object.create(ReadableStreamDefaultController.prototype); - SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm); - return stream; - } - - function InitializeReadableStream(stream) { - stream._state = 'readable'; - stream._reader = undefined; - stream._storedError = undefined; - stream._disturbed = false; - } - - function IsReadableStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) { - return false; - } - return true; - } - - function IsReadableStreamLocked(stream) { - if (stream._reader === undefined) { - return false; - } - return true; - } - - function ReadableStreamCancel(stream, reason) { - stream._disturbed = true; - if (stream._state === 'closed') { - return promiseResolvedWith(undefined); - } - if (stream._state === 'errored') { - return promiseRejectedWith(stream._storedError); - } - ReadableStreamClose(stream); - var sourceCancelPromise = stream._readableStreamController[CancelSteps](reason); - return transformPromiseWith(sourceCancelPromise, noop); - } - - function ReadableStreamClose(stream) { - stream._state = 'closed'; - var reader = stream._reader; - if (reader === undefined) { - return; - } - defaultReaderClosedPromiseResolve(reader); - if (IsReadableStreamDefaultReader(reader)) { - reader._readRequests.forEach(function (readRequest) { - readRequest._closeSteps(); - }); - reader._readRequests = new SimpleQueue(); - } - } - - function ReadableStreamError(stream, e) { - stream._state = 'errored'; - stream._storedError = e; - var reader = stream._reader; - if (reader === undefined) { - return; - } - defaultReaderClosedPromiseReject(reader, e); - if (IsReadableStreamDefaultReader(reader)) { - reader._readRequests.forEach(function (readRequest) { - readRequest._errorSteps(e); - }); - reader._readRequests = new SimpleQueue(); - } else { - reader._readIntoRequests.forEach(function (readIntoRequest) { - readIntoRequest._errorSteps(e); - }); - reader._readIntoRequests = new SimpleQueue(); - } - } - - function streamBrandCheckException$1(name) { - return new TypeError("ReadableStream.prototype." + name + " can only be used on a ReadableStream"); - } - - function convertQueuingStrategyInit(init, context) { - assertDictionary(init, context); - var highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark; - assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit'); - return {highWaterMark: convertUnrestrictedDouble(highWaterMark)}; - } - - var byteLengthSizeFunction = function size(chunk) { - return chunk.byteLength; - }; - var ByteLengthQueuingStrategy = function () { - function ByteLengthQueuingStrategy(options) { - assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy'); - options = convertQueuingStrategyInit(options, 'First parameter'); - this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark; - } - - Object.defineProperty(ByteLengthQueuingStrategy.prototype, "highWaterMark", { - get: function () { - if (!IsByteLengthQueuingStrategy(this)) { - throw byteLengthBrandCheckException('highWaterMark'); - } - return this._byteLengthQueuingStrategyHighWaterMark; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ByteLengthQueuingStrategy.prototype, "size", { - get: function () { - if (!IsByteLengthQueuingStrategy(this)) { - throw byteLengthBrandCheckException('size'); - } - return byteLengthSizeFunction; - }, - enumerable: false, - configurable: true - }); - return ByteLengthQueuingStrategy; - }(); - Object.defineProperties(ByteLengthQueuingStrategy.prototype, { - highWaterMark: {enumerable: true}, - size: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(ByteLengthQueuingStrategy.prototype, SymbolPolyfill.toStringTag, { - value: 'ByteLengthQueuingStrategy', - configurable: true - }); - } - - function byteLengthBrandCheckException(name) { - return new TypeError("ByteLengthQueuingStrategy.prototype." + name + " can only be used on a ByteLengthQueuingStrategy"); - } - - function IsByteLengthQueuingStrategy(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_byteLengthQueuingStrategyHighWaterMark')) { - return false; - } - return true; - } - - var countSizeFunction = function size() { - return 1; - }; - var CountQueuingStrategy = function () { - function CountQueuingStrategy(options) { - assertRequiredArgument(options, 1, 'CountQueuingStrategy'); - options = convertQueuingStrategyInit(options, 'First parameter'); - this._countQueuingStrategyHighWaterMark = options.highWaterMark; - } - - Object.defineProperty(CountQueuingStrategy.prototype, "highWaterMark", { - get: function () { - if (!IsCountQueuingStrategy(this)) { - throw countBrandCheckException('highWaterMark'); - } - return this._countQueuingStrategyHighWaterMark; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CountQueuingStrategy.prototype, "size", { - get: function () { - if (!IsCountQueuingStrategy(this)) { - throw countBrandCheckException('size'); - } - return countSizeFunction; - }, - enumerable: false, - configurable: true - }); - return CountQueuingStrategy; - }(); - Object.defineProperties(CountQueuingStrategy.prototype, { - highWaterMark: {enumerable: true}, - size: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(CountQueuingStrategy.prototype, SymbolPolyfill.toStringTag, { - value: 'CountQueuingStrategy', - configurable: true - }); - } - - function countBrandCheckException(name) { - return new TypeError("CountQueuingStrategy.prototype." + name + " can only be used on a CountQueuingStrategy"); - } - - function IsCountQueuingStrategy(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_countQueuingStrategyHighWaterMark')) { - return false; - } - return true; - } - - function convertTransformer(original, context) { - assertDictionary(original, context); - var flush = original === null || original === void 0 ? void 0 : original.flush; - var readableType = original === null || original === void 0 ? void 0 : original.readableType; - var start = original === null || original === void 0 ? void 0 : original.start; - var transform = original === null || original === void 0 ? void 0 : original.transform; - var writableType = original === null || original === void 0 ? void 0 : original.writableType; - return { - flush: flush === undefined ? undefined : convertTransformerFlushCallback(flush, original, context + " has member 'flush' that"), - readableType: readableType, - start: start === undefined ? undefined : convertTransformerStartCallback(start, original, context + " has member 'start' that"), - transform: transform === undefined ? undefined : convertTransformerTransformCallback(transform, original, context + " has member 'transform' that"), - writableType: writableType - }; - } - - function convertTransformerFlushCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { - return promiseCall(fn, original, [controller]); - }; - } - - function convertTransformerStartCallback(fn, original, context) { - assertFunction(fn, context); - return function (controller) { - return reflectCall(fn, original, [controller]); - }; - } - - function convertTransformerTransformCallback(fn, original, context) { - assertFunction(fn, context); - return function (chunk, controller) { - return promiseCall(fn, original, [ - chunk, - controller - ]); - }; - } - - var TransformStream = function () { - function TransformStream(rawTransformer, rawWritableStrategy, rawReadableStrategy) { - if (rawTransformer === void 0) { - rawTransformer = {}; - } - if (rawWritableStrategy === void 0) { - rawWritableStrategy = {}; - } - if (rawReadableStrategy === void 0) { - rawReadableStrategy = {}; - } - if (rawTransformer === undefined) { - rawTransformer = null; - } - var writableStrategy = convertQueuingStrategy(rawWritableStrategy, 'Second parameter'); - var readableStrategy = convertQueuingStrategy(rawReadableStrategy, 'Third parameter'); - var transformer = convertTransformer(rawTransformer, 'First parameter'); - if (transformer.readableType !== undefined) { - throw new RangeError('Invalid readableType specified'); - } - if (transformer.writableType !== undefined) { - throw new RangeError('Invalid writableType specified'); - } - var readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0); - var readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy); - var writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1); - var writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy); - var startPromise_resolve; - var startPromise = newPromise(function (resolve) { - startPromise_resolve = resolve; - }); - InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm); - SetUpTransformStreamDefaultControllerFromTransformer(this, transformer); - if (transformer.start !== undefined) { - startPromise_resolve(transformer.start(this._transformStreamController)); - } else { - startPromise_resolve(undefined); - } - } - - Object.defineProperty(TransformStream.prototype, "readable", { - get: function () { - if (!IsTransformStream(this)) { - throw streamBrandCheckException$2('readable'); - } - return this._readable; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(TransformStream.prototype, "writable", { - get: function () { - if (!IsTransformStream(this)) { - throw streamBrandCheckException$2('writable'); - } - return this._writable; - }, - enumerable: false, - configurable: true - }); - return TransformStream; - }(); - Object.defineProperties(TransformStream.prototype, { - readable: {enumerable: true}, - writable: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(TransformStream.prototype, SymbolPolyfill.toStringTag, { - value: 'TransformStream', - configurable: true - }); - } - - function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) { - function startAlgorithm() { - return startPromise; - } - - function writeAlgorithm(chunk) { - return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk); - } - - function abortAlgorithm(reason) { - return TransformStreamDefaultSinkAbortAlgorithm(stream, reason); - } - - function closeAlgorithm() { - return TransformStreamDefaultSinkCloseAlgorithm(stream); - } - - stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm); - - function pullAlgorithm() { - return TransformStreamDefaultSourcePullAlgorithm(stream); - } - - function cancelAlgorithm(reason) { - TransformStreamErrorWritableAndUnblockWrite(stream, reason); - return promiseResolvedWith(undefined); - } - - stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm); - stream._backpressure = undefined; - stream._backpressureChangePromise = undefined; - stream._backpressureChangePromise_resolve = undefined; - TransformStreamSetBackpressure(stream, true); - stream._transformStreamController = undefined; - } - - function IsTransformStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) { - return false; - } - return true; - } - - function TransformStreamError(stream, e) { - ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e); - TransformStreamErrorWritableAndUnblockWrite(stream, e); - } - - function TransformStreamErrorWritableAndUnblockWrite(stream, e) { - TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController); - WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e); - if (stream._backpressure) { - TransformStreamSetBackpressure(stream, false); - } - } - - function TransformStreamSetBackpressure(stream, backpressure) { - if (stream._backpressureChangePromise !== undefined) { - stream._backpressureChangePromise_resolve(); - } - stream._backpressureChangePromise = newPromise(function (resolve) { - stream._backpressureChangePromise_resolve = resolve; - }); - stream._backpressure = backpressure; - } - - var TransformStreamDefaultController = function () { - function TransformStreamDefaultController() { - throw new TypeError('Illegal constructor'); - } - - Object.defineProperty(TransformStreamDefaultController.prototype, "desiredSize", { - get: function () { - if (!IsTransformStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$1('desiredSize'); - } - var readableController = this._controlledTransformStream._readable._readableStreamController; - return ReadableStreamDefaultControllerGetDesiredSize(readableController); - }, - enumerable: false, - configurable: true - }); - TransformStreamDefaultController.prototype.enqueue = function (chunk) { - if (chunk === void 0) { - chunk = undefined; - } - if (!IsTransformStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$1('enqueue'); - } - TransformStreamDefaultControllerEnqueue(this, chunk); - }; - TransformStreamDefaultController.prototype.error = function (reason) { - if (reason === void 0) { - reason = undefined; - } - if (!IsTransformStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$1('error'); - } - TransformStreamDefaultControllerError(this, reason); - }; - TransformStreamDefaultController.prototype.terminate = function () { - if (!IsTransformStreamDefaultController(this)) { - throw defaultControllerBrandCheckException$1('terminate'); - } - TransformStreamDefaultControllerTerminate(this); - }; - return TransformStreamDefaultController; - }(); - Object.defineProperties(TransformStreamDefaultController.prototype, { - enqueue: {enumerable: true}, - error: {enumerable: true}, - terminate: {enumerable: true}, - desiredSize: {enumerable: true} - }); - if (typeof SymbolPolyfill.toStringTag === 'symbol') { - Object.defineProperty(TransformStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { - value: 'TransformStreamDefaultController', - configurable: true - }); - } - - function IsTransformStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) { - return false; - } - return true; - } - - function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) { - controller._controlledTransformStream = stream; - stream._transformStreamController = controller; - controller._transformAlgorithm = transformAlgorithm; - controller._flushAlgorithm = flushAlgorithm; - } - - function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) { - var controller = Object.create(TransformStreamDefaultController.prototype); - var transformAlgorithm = function (chunk) { - try { - TransformStreamDefaultControllerEnqueue(controller, chunk); - return promiseResolvedWith(undefined); - } catch (transformResultE) { - return promiseRejectedWith(transformResultE); - } - }; - var flushAlgorithm = function () { - return promiseResolvedWith(undefined); - }; - if (transformer.transform !== undefined) { - transformAlgorithm = function (chunk) { - return transformer.transform(chunk, controller); - }; - } - if (transformer.flush !== undefined) { - flushAlgorithm = function () { - return transformer.flush(controller); - }; - } - SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm); - } - - function TransformStreamDefaultControllerClearAlgorithms(controller) { - controller._transformAlgorithm = undefined; - controller._flushAlgorithm = undefined; - } - - function TransformStreamDefaultControllerEnqueue(controller, chunk) { - var stream = controller._controlledTransformStream; - var readableController = stream._readable._readableStreamController; - if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) { - throw new TypeError('Readable side is not in a state that permits enqueue'); - } - try { - ReadableStreamDefaultControllerEnqueue(readableController, chunk); - } catch (e) { - TransformStreamErrorWritableAndUnblockWrite(stream, e); - throw stream._readable._storedError; - } - var backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController); - if (backpressure !== stream._backpressure) { - TransformStreamSetBackpressure(stream, true); - } - } - - function TransformStreamDefaultControllerError(controller, e) { - TransformStreamError(controller._controlledTransformStream, e); - } - - function TransformStreamDefaultControllerPerformTransform(controller, chunk) { - var transformPromise = controller._transformAlgorithm(chunk); - return transformPromiseWith(transformPromise, undefined, function (r) { - TransformStreamError(controller._controlledTransformStream, r); - throw r; - }); - } - - function TransformStreamDefaultControllerTerminate(controller) { - var stream = controller._controlledTransformStream; - var readableController = stream._readable._readableStreamController; - ReadableStreamDefaultControllerClose(readableController); - var error = new TypeError('TransformStream terminated'); - TransformStreamErrorWritableAndUnblockWrite(stream, error); - } - - function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) { - var controller = stream._transformStreamController; - if (stream._backpressure) { - var backpressureChangePromise = stream._backpressureChangePromise; - return transformPromiseWith(backpressureChangePromise, function () { - var writable = stream._writable; - var state = writable._state; - if (state === 'erroring') { - throw writable._storedError; - } - return TransformStreamDefaultControllerPerformTransform(controller, chunk); - }); - } - return TransformStreamDefaultControllerPerformTransform(controller, chunk); - } - - function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) { - TransformStreamError(stream, reason); - return promiseResolvedWith(undefined); - } - - function TransformStreamDefaultSinkCloseAlgorithm(stream) { - var readable = stream._readable; - var controller = stream._transformStreamController; - var flushPromise = controller._flushAlgorithm(); - TransformStreamDefaultControllerClearAlgorithms(controller); - return transformPromiseWith(flushPromise, function () { - if (readable._state === 'errored') { - throw readable._storedError; - } - ReadableStreamDefaultControllerClose(readable._readableStreamController); - }, function (r) { - TransformStreamError(stream, r); - throw readable._storedError; - }); - } - - function TransformStreamDefaultSourcePullAlgorithm(stream) { - TransformStreamSetBackpressure(stream, false); - return stream._backpressureChangePromise; - } - - function defaultControllerBrandCheckException$1(name) { - return new TypeError("TransformStreamDefaultController.prototype." + name + " can only be used on a TransformStreamDefaultController"); - } - - function streamBrandCheckException$2(name) { - return new TypeError("TransformStream.prototype." + name + " can only be used on a TransformStream"); - } - - exports.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy; - exports.CountQueuingStrategy = CountQueuingStrategy; - exports.ReadableByteStreamController = ReadableByteStreamController; - exports.ReadableStream = ReadableStream; - exports.ReadableStreamBYOBReader = ReadableStreamBYOBReader; - exports.ReadableStreamBYOBRequest = ReadableStreamBYOBRequest; - exports.ReadableStreamDefaultController = ReadableStreamDefaultController; - exports.ReadableStreamDefaultReader = ReadableStreamDefaultReader; - exports.TransformStream = TransformStream; - exports.TransformStreamDefaultController = TransformStreamDefaultController; - exports.WritableStream = WritableStream; - exports.WritableStreamDefaultController = WritableStreamDefaultController; - exports.WritableStreamDefaultWriter = WritableStreamDefaultWriter; - Object.defineProperty(exports, '__esModule', {value: true}); - })); - - /***/ - }), - /* 112 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - __w_pdfjs_require__(113); - var entryUnbind = __w_pdfjs_require__(117); - module.exports = entryUnbind('String', 'padStart'); - - /***/ - }), - /* 113 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var $ = __w_pdfjs_require__(9); - var $padStart = __w_pdfjs_require__(114).start; - var WEBKIT_BUG = __w_pdfjs_require__(116); - $({ - target: 'String', - proto: true, - forced: WEBKIT_BUG - }, { - padStart: function padStart(maxLength) { - return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - /***/ - }), - /* 114 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var toLength = __w_pdfjs_require__(46); - var repeat = __w_pdfjs_require__(115); - var requireObjectCoercible = __w_pdfjs_require__(19); - var ceil = Math.ceil; - var createMethod = function (IS_END) { - return function ($this, maxLength, fillString) { - var S = String(requireObjectCoercible($this)); - var stringLength = S.length; - var fillStr = fillString === undefined ? ' ' : String(fillString); - var intMaxLength = toLength(maxLength); - var fillLen, stringFiller; - if (intMaxLength <= stringLength || fillStr == '') - return S; - fillLen = intMaxLength - stringLength; - stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length)); - if (stringFiller.length > fillLen) - stringFiller = stringFiller.slice(0, fillLen); - return IS_END ? S + stringFiller : stringFiller + S; - }; - }; - module.exports = { - start: createMethod(false), - end: createMethod(true) - }; - - /***/ - }), - /* 115 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var toInteger = __w_pdfjs_require__(47); - var requireObjectCoercible = __w_pdfjs_require__(19); - module.exports = function repeat(count) { - var str = String(requireObjectCoercible(this)); - var result = ''; - var n = toInteger(count); - if (n < 0 || n == Infinity) - throw RangeError('Wrong number of repetitions'); - for (; n > 0; (n >>>= 1) && (str += str)) - if (n & 1) - result += str; - return result; - }; - - /***/ - }), - /* 116 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var userAgent = __w_pdfjs_require__(59); - module.exports = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); - - /***/ - }), - /* 117 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var global = __w_pdfjs_require__(10); - var bind = __w_pdfjs_require__(78); - var call = Function.call; - module.exports = function (CONSTRUCTOR, METHOD, length) { - return bind(call, global[CONSTRUCTOR].prototype[METHOD], length); - }; - - /***/ - }), - /* 118 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - __w_pdfjs_require__(119); - var entryUnbind = __w_pdfjs_require__(117); - module.exports = entryUnbind('String', 'padEnd'); - - /***/ - }), - /* 119 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - "use strict"; - - var $ = __w_pdfjs_require__(9); - var $padEnd = __w_pdfjs_require__(114).end; - var WEBKIT_BUG = __w_pdfjs_require__(116); - $({ - target: 'String', - proto: true, - forced: WEBKIT_BUG - }, { - padEnd: function padEnd(maxLength) { - return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - /***/ - }), - /* 120 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - __w_pdfjs_require__(121); - var path = __w_pdfjs_require__(42); - module.exports = path.Object.values; - - /***/ - }), - /* 121 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var $ = __w_pdfjs_require__(9); - var $values = __w_pdfjs_require__(122).values; - $({ - target: 'Object', - stat: true - }, { - values: function values(O) { - return $values(O); - } - }); - - /***/ - }), - /* 122 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var DESCRIPTORS = __w_pdfjs_require__(12); - var objectKeys = __w_pdfjs_require__(63); - var toIndexedObject = __w_pdfjs_require__(16); - var propertyIsEnumerable = __w_pdfjs_require__(14).f; - var createMethod = function (TO_ENTRIES) { - return function (it) { - var O = toIndexedObject(it); - var keys = objectKeys(O); - var length = keys.length; - var i = 0; - var result = []; - var key; - while (length > i) { - key = keys[i++]; - if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) { - result.push(TO_ENTRIES ? [ - key, - O[key] - ] : O[key]); - } - } - return result; - }; - }; - module.exports = { - entries: createMethod(true), - values: createMethod(false) - }; - - /***/ - }), - /* 123 */ - /***/ ((module, __unused_webpack_exports, __w_pdfjs_require__) => { - - __w_pdfjs_require__(124); - var path = __w_pdfjs_require__(42); - module.exports = path.Object.entries; - - /***/ - }), - /* 124 */ - /***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - var $ = __w_pdfjs_require__(9); - var $entries = __w_pdfjs_require__(122).entries; - $({ - target: 'Object', - stat: true - }, { - entries: function entries(O) { - return $entries(O); - } - }); - - /***/ - }), - /* 125 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.getDocument = getDocument; - exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; - exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultCMapReaderFactory = exports.DefaultCanvasFactory = exports.build = void 0; - - var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - - var _util = __w_pdfjs_require__(4); - - var _display_utils = __w_pdfjs_require__(1); - - var _font_loader = __w_pdfjs_require__(126); - - var _node_utils = __w_pdfjs_require__(127); - - var _annotation_storage = __w_pdfjs_require__(128); - - var _api_compatibility = __w_pdfjs_require__(129); - - var _canvas = __w_pdfjs_require__(130); - - var _worker_options = __w_pdfjs_require__(132); - - var _is_node = __w_pdfjs_require__(6); - - var _message_handler = __w_pdfjs_require__(133); - - var _metadata = __w_pdfjs_require__(134); - - var _optional_content_config = __w_pdfjs_require__(135); - - var _transport_stream = __w_pdfjs_require__(136); - - var _webgl = __w_pdfjs_require__(137); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); - } - - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e2) { - throw _e2; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - var DEFAULT_RANGE_CHUNK_SIZE = 65536; - var RENDERING_CANCELLED_TIMEOUT = 100; - var DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory; - exports.DefaultCanvasFactory = DefaultCanvasFactory; - var DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory; - exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; - var createPDFNetworkStream; - - function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { - createPDFNetworkStream = pdfNetworkStreamFactory; - } - - function getDocument(src) { - var task = new PDFDocumentLoadingTask(); - var source; - - if (typeof src === "string" || src instanceof URL) { - source = { - url: src - }; - } else if ((0, _util.isArrayBuffer)(src)) { - source = { - data: src - }; - } else if (src instanceof PDFDataRangeTransport) { - source = { - range: src - }; - } else { - if (_typeof(src) !== "object") { - throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or parameter object."); - } - - if (!src.url && !src.data && !src.range) { - throw new Error("Invalid parameter object: need either .data, .range or .url"); - } - - source = src; - } - - var params = Object.create(null); - var rangeTransport = null, - worker = null; - - for (var key in source) { - var value = source[key]; - - switch (key) { - case "url": - if (typeof window !== "undefined") { - try { - params[key] = new URL(value, window.location).href; - continue; - } catch (ex) { - (0, _util.warn)("Cannot create valid URL: \"".concat(ex, "\".")); - } - } else if (typeof value === "string" || value instanceof URL) { - params[key] = value.toString(); - continue; - } - - throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); - - case "range": - rangeTransport = value; - continue; - - case "worker": - worker = value; - continue; - - case "data": - if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) { - params[key] = new Uint8Array(value); - } else if (value instanceof Uint8Array) { - break; - } else if (typeof value === "string") { - params[key] = (0, _util.stringToBytes)(value); - } else if (_typeof(value) === "object" && value !== null && !isNaN(value.length)) { - params[key] = new Uint8Array(value); - } else if ((0, _util.isArrayBuffer)(value)) { - params[key] = new Uint8Array(value); - } else { - throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is expected in the data property."); - } - - continue; - } - - params[key] = value; - } - - params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; - params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory; - params.ignoreErrors = params.stopAtErrors !== true; - params.fontExtraProperties = params.fontExtraProperties === true; - params.pdfBug = params.pdfBug === true; - params.enableXfa = params.enableXfa === true; - - if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) { - params.docBaseUrl = null; - } - - if (!Number.isInteger(params.maxImageSize)) { - params.maxImageSize = -1; - } - - if (typeof params.isEvalSupported !== "boolean") { - params.isEvalSupported = true; - } - - if (typeof params.disableFontFace !== "boolean") { - params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false; - } - - if (typeof params.ownerDocument === "undefined") { - params.ownerDocument = globalThis.document; - } - - if (typeof params.disableRange !== "boolean") { - params.disableRange = false; - } - - if (typeof params.disableStream !== "boolean") { - params.disableStream = false; - } - - if (typeof params.disableAutoFetch !== "boolean") { - params.disableAutoFetch = false; - } - - (0, _util.setVerbosityLevel)(params.verbosity); - - if (!worker) { - var workerParams = { - verbosity: params.verbosity, - port: _worker_options.GlobalWorkerOptions.workerPort - }; - worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); - task._worker = worker; - } - - var docId = task.docId; - worker.promise.then(function () { - if (task.destroyed) { - throw new Error("Loading aborted"); - } - - var workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId); - - var networkStreamPromise = new Promise(function (resolve) { - var networkStream; - - if (rangeTransport) { - networkStream = new _transport_stream.PDFDataTransportStream({ - length: params.length, - initialData: params.initialData, - progressiveDone: params.progressiveDone, - contentDispositionFilename: params.contentDispositionFilename, - disableRange: params.disableRange, - disableStream: params.disableStream - }, rangeTransport); - } else if (!params.data) { - networkStream = createPDFNetworkStream({ - url: params.url, - length: params.length, - httpHeaders: params.httpHeaders, - withCredentials: params.withCredentials, - rangeChunkSize: params.rangeChunkSize, - disableRange: params.disableRange, - disableStream: params.disableStream - }); - } - - resolve(networkStream); - }); - return Promise.all([workerIdPromise, networkStreamPromise]).then(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - workerId = _ref2[0], - networkStream = _ref2[1]; - - if (task.destroyed) { - throw new Error("Loading aborted"); - } - - var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); - messageHandler.postMessageTransfers = worker.postMessageTransfers; - var transport = new WorkerTransport(messageHandler, task, networkStream, params); - task._transport = transport; - messageHandler.send("Ready", null); - }); - })["catch"](task._capability.reject); - return task; - } - - function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { - if (worker.destroyed) { - return Promise.reject(new Error("Worker was destroyed")); - } - - if (pdfDataRangeTransport) { - source.length = pdfDataRangeTransport.length; - source.initialData = pdfDataRangeTransport.initialData; - source.progressiveDone = pdfDataRangeTransport.progressiveDone; - source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; - } - - return worker.messageHandler.sendWithPromise("GetDocRequest", { - docId: docId, - apiVersion: '2.8.335', - source: { - data: source.data, - url: source.url, - password: source.password, - disableAutoFetch: source.disableAutoFetch, - rangeChunkSize: source.rangeChunkSize, - length: source.length - }, - maxImageSize: source.maxImageSize, - disableFontFace: source.disableFontFace, - postMessageTransfers: worker.postMessageTransfers, - docBaseUrl: source.docBaseUrl, - ignoreErrors: source.ignoreErrors, - isEvalSupported: source.isEvalSupported, - fontExtraProperties: source.fontExtraProperties, - enableXfa: source.enableXfa - }).then(function (workerId) { - if (worker.destroyed) { - throw new Error("Worker was destroyed"); - } - - return workerId; - }); - } - - var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { - var nextDocumentId = 0; - - var PDFDocumentLoadingTask = /*#__PURE__*/function () { - function PDFDocumentLoadingTask() { - _classCallCheck(this, PDFDocumentLoadingTask); - - this._capability = (0, _util.createPromiseCapability)(); - this._transport = null; - this._worker = null; - this.docId = "d" + nextDocumentId++; - this.destroyed = false; - this.onPassword = null; - this.onProgress = null; - this.onUnsupportedFeature = null; - } - - _createClass(PDFDocumentLoadingTask, [{ - key: "promise", - get: function get() { - return this._capability.promise; - } - }, { - key: "destroy", - value: function destroy() { - var _this = this; - - this.destroyed = true; - var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy(); - return transportDestroyed.then(function () { - _this._transport = null; - - if (_this._worker) { - _this._worker.destroy(); - - _this._worker = null; - } - }); - } - }]); - - return PDFDocumentLoadingTask; - }(); - - return PDFDocumentLoadingTask; - }(); - - var PDFDataRangeTransport = /*#__PURE__*/function () { - function PDFDataRangeTransport(length, initialData) { - var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var contentDispositionFilename = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - - _classCallCheck(this, PDFDataRangeTransport); - - this.length = length; - this.initialData = initialData; - this.progressiveDone = progressiveDone; - this.contentDispositionFilename = contentDispositionFilename; - this._rangeListeners = []; - this._progressListeners = []; - this._progressiveReadListeners = []; - this._progressiveDoneListeners = []; - this._readyCapability = (0, _util.createPromiseCapability)(); - } - - _createClass(PDFDataRangeTransport, [{ - key: "addRangeListener", - value: function addRangeListener(listener) { - this._rangeListeners.push(listener); - } - }, { - key: "addProgressListener", - value: function addProgressListener(listener) { - this._progressListeners.push(listener); - } - }, { - key: "addProgressiveReadListener", - value: function addProgressiveReadListener(listener) { - this._progressiveReadListeners.push(listener); - } - }, { - key: "addProgressiveDoneListener", - value: function addProgressiveDoneListener(listener) { - this._progressiveDoneListeners.push(listener); - } - }, { - key: "onDataRange", - value: function onDataRange(begin, chunk) { - var _iterator = _createForOfIteratorHelper(this._rangeListeners), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var listener = _step.value; - listener(begin, chunk); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - }, { - key: "onDataProgress", - value: function onDataProgress(loaded, total) { - var _this2 = this; - - this._readyCapability.promise.then(function () { - var _iterator2 = _createForOfIteratorHelper(_this2._progressListeners), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var listener = _step2.value; - listener(loaded, total); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - }); - } - }, { - key: "onDataProgressiveRead", - value: function onDataProgressiveRead(chunk) { - var _this3 = this; - - this._readyCapability.promise.then(function () { - var _iterator3 = _createForOfIteratorHelper(_this3._progressiveReadListeners), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var listener = _step3.value; - listener(chunk); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - }); - } - }, { - key: "onDataProgressiveDone", - value: function onDataProgressiveDone() { - var _this4 = this; - - this._readyCapability.promise.then(function () { - var _iterator4 = _createForOfIteratorHelper(_this4._progressiveDoneListeners), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var listener = _step4.value; - listener(); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - }); - } - }, { - key: "transportReady", - value: function transportReady() { - this._readyCapability.resolve(); - } - }, { - key: "requestDataRange", - value: function requestDataRange(begin, end) { - (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); - } - }, { - key: "abort", - value: function abort() { - } - }]); - - return PDFDataRangeTransport; - }(); - - exports.PDFDataRangeTransport = PDFDataRangeTransport; - - var PDFDocumentProxy = /*#__PURE__*/function () { - function PDFDocumentProxy(pdfInfo, transport) { - _classCallCheck(this, PDFDocumentProxy); - - this._pdfInfo = pdfInfo; - this._transport = transport; - } - - _createClass(PDFDocumentProxy, [{ - key: "annotationStorage", - get: function get() { - return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); - } - }, { - key: "numPages", - get: function get() { - return this._pdfInfo.numPages; - } - }, { - key: "fingerprint", - get: function get() { - return this._pdfInfo.fingerprint; - } - }, { - key: "isPureXfa", - get: function get() { - return this._pdfInfo.isPureXfa; - } - }, { - key: "getPage", - value: function getPage(pageNumber) { - return this._transport.getPage(pageNumber); - } - }, { - key: "getPageIndex", - value: function getPageIndex(ref) { - return this._transport.getPageIndex(ref); - } - }, { - key: "getDestinations", - value: function getDestinations() { - return this._transport.getDestinations(); - } - }, { - key: "getDestination", - value: function getDestination(id) { - return this._transport.getDestination(id); - } - }, { - key: "getPageLabels", - value: function getPageLabels() { - return this._transport.getPageLabels(); - } - }, { - key: "getPageLayout", - value: function getPageLayout() { - return this._transport.getPageLayout(); - } - }, { - key: "getPageMode", - value: function getPageMode() { - return this._transport.getPageMode(); - } - }, { - key: "getViewerPreferences", - value: function getViewerPreferences() { - return this._transport.getViewerPreferences(); - } - }, { - key: "getOpenAction", - value: function getOpenAction() { - return this._transport.getOpenAction(); - } - }, { - key: "getAttachments", - value: function getAttachments() { - return this._transport.getAttachments(); - } - }, { - key: "getJavaScript", - value: function getJavaScript() { - return this._transport.getJavaScript(); - } - }, { - key: "getJSActions", - value: function getJSActions() { - return this._transport.getDocJSActions(); - } - }, { - key: "getOutline", - value: function getOutline() { - return this._transport.getOutline(); - } - }, { - key: "getOptionalContentConfig", - value: function getOptionalContentConfig() { - return this._transport.getOptionalContentConfig(); - } - }, { - key: "getPermissions", - value: function getPermissions() { - return this._transport.getPermissions(); - } - }, { - key: "getMetadata", - value: function getMetadata() { - return this._transport.getMetadata(); - } - }, { - key: "getMarkInfo", - value: function getMarkInfo() { - return this._transport.getMarkInfo(); - } - }, { - key: "getData", - value: function getData() { - return this._transport.getData(); - } - }, { - key: "getDownloadInfo", - value: function getDownloadInfo() { - return this._transport.downloadInfoCapability.promise; - } - }, { - key: "getStats", - value: function getStats() { - return this._transport.getStats(); - } - }, { - key: "cleanup", - value: function cleanup() { - var keepLoadedFonts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); - } - }, { - key: "destroy", - value: function destroy() { - return this.loadingTask.destroy(); - } - }, { - key: "loadingParams", - get: function get() { - return this._transport.loadingParams; - } - }, { - key: "loadingTask", - get: function get() { - return this._transport.loadingTask; - } - }, { - key: "saveDocument", - value: function saveDocument(annotationStorage) { - return this._transport.saveDocument(annotationStorage); - } - }, { - key: "getFieldObjects", - value: function getFieldObjects() { - return this._transport.getFieldObjects(); - } - }, { - key: "hasJSActions", - value: function hasJSActions() { - return this._transport.hasJSActions(); - } - }, { - key: "getCalculationOrderIds", - value: function getCalculationOrderIds() { - return this._transport.getCalculationOrderIds(); - } - }]); - - return PDFDocumentProxy; - }(); - - exports.PDFDocumentProxy = PDFDocumentProxy; - - var PDFPageProxy = /*#__PURE__*/function () { - function PDFPageProxy(pageIndex, pageInfo, transport, ownerDocument) { - var pdfBug = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - - _classCallCheck(this, PDFPageProxy); - - this._pageIndex = pageIndex; - this._pageInfo = pageInfo; - this._ownerDocument = ownerDocument; - this._transport = transport; - this._stats = pdfBug ? new _display_utils.StatTimer() : null; - this._pdfBug = pdfBug; - this.commonObjs = transport.commonObjs; - this.objs = new PDFObjects(); - this.cleanupAfterRender = false; - this.pendingCleanup = false; - this._intentStates = new Map(); - this.destroyed = false; - } - - _createClass(PDFPageProxy, [{ - key: "pageNumber", - get: function get() { - return this._pageIndex + 1; - } - }, { - key: "rotate", - get: function get() { - return this._pageInfo.rotate; - } - }, { - key: "ref", - get: function get() { - return this._pageInfo.ref; - } - }, { - key: "userUnit", - get: function get() { - return this._pageInfo.userUnit; - } - }, { - key: "view", - get: function get() { - return this._pageInfo.view; - } - }, { - key: "getViewport", - value: function getViewport() { - var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - scale = _ref3.scale, - _ref3$rotation = _ref3.rotation, - rotation = _ref3$rotation === void 0 ? this.rotate : _ref3$rotation, - _ref3$offsetX = _ref3.offsetX, - offsetX = _ref3$offsetX === void 0 ? 0 : _ref3$offsetX, - _ref3$offsetY = _ref3.offsetY, - offsetY = _ref3$offsetY === void 0 ? 0 : _ref3$offsetY, - _ref3$dontFlip = _ref3.dontFlip, - dontFlip = _ref3$dontFlip === void 0 ? false : _ref3$dontFlip; - - return new _display_utils.PageViewport({ - viewBox: this.view, - scale: scale, - rotation: rotation, - offsetX: offsetX, - offsetY: offsetY, - dontFlip: dontFlip - }); - } - }, { - key: "getAnnotations", - value: function getAnnotations() { - var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref4$intent = _ref4.intent, - intent = _ref4$intent === void 0 ? null : _ref4$intent; - - if (!this._annotationsPromise || this._annotationsIntent !== intent) { - this._annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent); - this._annotationsIntent = intent; - } - - return this._annotationsPromise; - } - }, { - key: "getJSActions", - value: function getJSActions() { - return this._jsActionsPromise || (this._jsActionsPromise = this._transport.getPageJSActions(this._pageIndex)); - } - }, { - key: "getXfa", - value: function getXfa() { - return this._xfaPromise || (this._xfaPromise = this._transport.getPageXfa(this._pageIndex)); - } - }, { - key: "render", - value: function render(_ref5) { - var _this5 = this, - _intentState; - - var canvasContext = _ref5.canvasContext, - viewport = _ref5.viewport, - _ref5$intent = _ref5.intent, - intent = _ref5$intent === void 0 ? "display" : _ref5$intent, - _ref5$enableWebGL = _ref5.enableWebGL, - enableWebGL = _ref5$enableWebGL === void 0 ? false : _ref5$enableWebGL, - _ref5$renderInteracti = _ref5.renderInteractiveForms, - renderInteractiveForms = _ref5$renderInteracti === void 0 ? false : _ref5$renderInteracti, - _ref5$transform = _ref5.transform, - transform = _ref5$transform === void 0 ? null : _ref5$transform, - _ref5$imageLayer = _ref5.imageLayer, - imageLayer = _ref5$imageLayer === void 0 ? null : _ref5$imageLayer, - _ref5$canvasFactory = _ref5.canvasFactory, - canvasFactory = _ref5$canvasFactory === void 0 ? null : _ref5$canvasFactory, - _ref5$background = _ref5.background, - background = _ref5$background === void 0 ? null : _ref5$background, - _ref5$annotationStora = _ref5.annotationStorage, - annotationStorage = _ref5$annotationStora === void 0 ? null : _ref5$annotationStora, - _ref5$optionalContent = _ref5.optionalContentConfigPromise, - optionalContentConfigPromise = _ref5$optionalContent === void 0 ? null : _ref5$optionalContent; - - if (this._stats) { - this._stats.time("Overall"); - } - - var renderingIntent = intent === "print" ? "print" : "display"; - this.pendingCleanup = false; - - if (!optionalContentConfigPromise) { - optionalContentConfigPromise = this._transport.getOptionalContentConfig(); - } - - var intentState = this._intentStates.get(renderingIntent); - - if (!intentState) { - intentState = Object.create(null); - - this._intentStates.set(renderingIntent, intentState); - } - - if (intentState.streamReaderCancelTimeout) { - clearTimeout(intentState.streamReaderCancelTimeout); - intentState.streamReaderCancelTimeout = null; - } - - var canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({ - ownerDocument: this._ownerDocument - }); - var webGLContext = new _webgl.WebGLContext({ - enable: enableWebGL - }); - - if (!intentState.displayReadyCapability) { - intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - if (this._stats) { - this._stats.time("Page Request"); - } - - this._pumpOperatorList({ - pageIndex: this._pageIndex, - intent: renderingIntent, - renderInteractiveForms: renderInteractiveForms === true, - annotationStorage: (annotationStorage === null || annotationStorage === void 0 ? void 0 : annotationStorage.serializable) || null - }); - } - - var complete = function complete(error) { - intentState.renderTasks["delete"](internalRenderTask); - - if (_this5.cleanupAfterRender || renderingIntent === "print") { - _this5.pendingCleanup = true; - } - - _this5._tryCleanup(); - - if (error) { - internalRenderTask.capability.reject(error); - - _this5._abortOperatorList({ - intentState: intentState, - reason: error - }); - } else { - internalRenderTask.capability.resolve(); - } - - if (_this5._stats) { - _this5._stats.timeEnd("Rendering"); - - _this5._stats.timeEnd("Overall"); - } - }; - - var internalRenderTask = new InternalRenderTask({ - callback: complete, - params: { - canvasContext: canvasContext, - viewport: viewport, - transform: transform, - imageLayer: imageLayer, - background: background - }, - objs: this.objs, - commonObjs: this.commonObjs, - operatorList: intentState.operatorList, - pageIndex: this._pageIndex, - canvasFactory: canvasFactoryInstance, - webGLContext: webGLContext, - useRequestAnimationFrame: renderingIntent !== "print", - pdfBug: this._pdfBug - }); - ((_intentState = intentState).renderTasks || (_intentState.renderTasks = new Set())).add(internalRenderTask); - var renderTask = internalRenderTask.task; - Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(function (_ref6) { - var _ref7 = _slicedToArray(_ref6, 2), - transparency = _ref7[0], - optionalContentConfig = _ref7[1]; - - if (_this5.pendingCleanup) { - complete(); - return; - } - - if (_this5._stats) { - _this5._stats.time("Rendering"); - } - - internalRenderTask.initializeGraphics({ - transparency: transparency, - optionalContentConfig: optionalContentConfig - }); - internalRenderTask.operatorListChanged(); - })["catch"](complete); - return renderTask; - } - }, { - key: "getOperatorList", - value: function getOperatorList() { - function operatorListChanged() { - if (intentState.operatorList.lastChunk) { - intentState.opListReadCapability.resolve(intentState.operatorList); - intentState.renderTasks["delete"](opListTask); - } - } - - var renderingIntent = "oplist"; - - var intentState = this._intentStates.get(renderingIntent); - - if (!intentState) { - intentState = Object.create(null); - - this._intentStates.set(renderingIntent, intentState); - } - - var opListTask; - - if (!intentState.opListReadCapability) { - var _intentState2; - - opListTask = Object.create(null); - opListTask.operatorListChanged = operatorListChanged; - intentState.opListReadCapability = (0, _util.createPromiseCapability)(); - ((_intentState2 = intentState).renderTasks || (_intentState2.renderTasks = new Set())).add(opListTask); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - if (this._stats) { - this._stats.time("Page Request"); - } - - this._pumpOperatorList({ - pageIndex: this._pageIndex, - intent: renderingIntent - }); - } - - return intentState.opListReadCapability.promise; - } - }, { - key: "streamTextContent", - value: function streamTextContent() { - var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref8$normalizeWhites = _ref8.normalizeWhitespace, - normalizeWhitespace = _ref8$normalizeWhites === void 0 ? false : _ref8$normalizeWhites, - _ref8$disableCombineT = _ref8.disableCombineTextItems, - disableCombineTextItems = _ref8$disableCombineT === void 0 ? false : _ref8$disableCombineT; - - var TEXT_CONTENT_CHUNK_SIZE = 100; - return this._transport.messageHandler.sendWithStream("GetTextContent", { - pageIndex: this._pageIndex, - normalizeWhitespace: normalizeWhitespace === true, - combineTextItems: disableCombineTextItems !== true - }, { - highWaterMark: TEXT_CONTENT_CHUNK_SIZE, - size: function size(textContent) { - return textContent.items.length; - } - }); - } - }, { - key: "getTextContent", - value: function getTextContent() { - var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var readableStream = this.streamTextContent(params); - return new Promise(function (resolve, reject) { - function pump() { - reader.read().then(function (_ref9) { - var _textContent$items; - - var value = _ref9.value, - done = _ref9.done; - - if (done) { - resolve(textContent); - return; - } - - Object.assign(textContent.styles, value.styles); - - (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items)); - - pump(); - }, reject); - } - - var reader = readableStream.getReader(); - var textContent = { - items: [], - styles: Object.create(null) - }; - pump(); - }); - } - }, { - key: "_destroy", - value: function _destroy() { - this.destroyed = true; - this._transport.pageCache[this._pageIndex] = null; - var waitOn = []; - - var _iterator5 = _createForOfIteratorHelper(this._intentStates), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var _step5$value = _slicedToArray(_step5.value, 2), - intent = _step5$value[0], - intentState = _step5$value[1]; - - this._abortOperatorList({ - intentState: intentState, - reason: new Error("Page was destroyed."), - force: true - }); - - if (intent === "oplist") { - continue; - } - - var _iterator6 = _createForOfIteratorHelper(intentState.renderTasks), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var internalRenderTask = _step6.value; - waitOn.push(internalRenderTask.completed); - internalRenderTask.cancel(); - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - this.objs.clear(); - this._annotationsPromise = null; - this._jsActionsPromise = null; - this._xfaPromise = null; - this.pendingCleanup = false; - return Promise.all(waitOn); - } - }, { - key: "cleanup", - value: function cleanup() { - var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - this.pendingCleanup = true; - return this._tryCleanup(resetStats); - } - }, { - key: "_tryCleanup", - value: function _tryCleanup() { - var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!this.pendingCleanup) { - return false; - } - - var _iterator7 = _createForOfIteratorHelper(this._intentStates.values()), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var _step7$value = _step7.value, - renderTasks = _step7$value.renderTasks, - operatorList = _step7$value.operatorList; - - if (renderTasks.size > 0 || !operatorList.lastChunk) { - return false; - } - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - this._intentStates.clear(); - - this.objs.clear(); - this._annotationsPromise = null; - this._jsActionsPromise = null; - this._xfaPromise = null; - - if (resetStats && this._stats) { - this._stats = new _display_utils.StatTimer(); - } - - this.pendingCleanup = false; - return true; - } - }, { - key: "_startRenderPage", - value: function _startRenderPage(transparency, intent) { - var intentState = this._intentStates.get(intent); - - if (!intentState) { - return; - } - - if (this._stats) { - this._stats.timeEnd("Page Request"); - } - - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.resolve(transparency); - } - } - }, { - key: "_renderPageChunk", - value: function _renderPageChunk(operatorListChunk, intentState) { - for (var i = 0, ii = operatorListChunk.length; i < ii; i++) { - intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); - intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); - } - - intentState.operatorList.lastChunk = operatorListChunk.lastChunk; - - var _iterator8 = _createForOfIteratorHelper(intentState.renderTasks), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var internalRenderTask = _step8.value; - internalRenderTask.operatorListChanged(); - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - - if (operatorListChunk.lastChunk) { - this._tryCleanup(); - } - } - }, { - key: "_pumpOperatorList", - value: function _pumpOperatorList(args) { - var _this6 = this; - - (0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected "intent" argument.'); - - var readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", args); - - var reader = readableStream.getReader(); - - var intentState = this._intentStates.get(args.intent); - - intentState.streamReader = reader; - - var pump = function pump() { - reader.read().then(function (_ref10) { - var value = _ref10.value, - done = _ref10.done; - - if (done) { - intentState.streamReader = null; - return; - } - - if (_this6._transport.destroyed) { - return; - } - - _this6._renderPageChunk(value, intentState); - - pump(); - }, function (reason) { - intentState.streamReader = null; - - if (_this6._transport.destroyed) { - return; - } - - if (intentState.operatorList) { - intentState.operatorList.lastChunk = true; - - var _iterator9 = _createForOfIteratorHelper(intentState.renderTasks), - _step9; - - try { - for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { - var internalRenderTask = _step9.value; - internalRenderTask.operatorListChanged(); - } - } catch (err) { - _iterator9.e(err); - } finally { - _iterator9.f(); - } - - _this6._tryCleanup(); - } - - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.reject(reason); - } else if (intentState.opListReadCapability) { - intentState.opListReadCapability.reject(reason); - } else { - throw reason; - } - }); - }; - - pump(); - } - }, { - key: "_abortOperatorList", - value: function _abortOperatorList(_ref11) { - var _this7 = this; - - var intentState = _ref11.intentState, - reason = _ref11.reason, - _ref11$force = _ref11.force, - force = _ref11$force === void 0 ? false : _ref11$force; - (0, _util.assert)(reason instanceof Error || _typeof(reason) === "object" && reason !== null, 'PDFPageProxy._abortOperatorList: Expected "reason" argument.'); - - if (!intentState.streamReader) { - return; - } - - if (!force) { - if (intentState.renderTasks.size > 0) { - return; - } - - if (reason instanceof _display_utils.RenderingCancelledException) { - intentState.streamReaderCancelTimeout = setTimeout(function () { - _this7._abortOperatorList({ - intentState: intentState, - reason: reason, - force: true - }); - - intentState.streamReaderCancelTimeout = null; - }, RENDERING_CANCELLED_TIMEOUT); - return; - } - } - - intentState.streamReader.cancel(new _util.AbortException(reason === null || reason === void 0 ? void 0 : reason.message)); - intentState.streamReader = null; - - if (this._transport.destroyed) { - return; - } - - var _iterator10 = _createForOfIteratorHelper(this._intentStates), - _step10; - - try { - for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { - var _step10$value = _slicedToArray(_step10.value, 2), - intent = _step10$value[0], - curIntentState = _step10$value[1]; - - if (curIntentState === intentState) { - this._intentStates["delete"](intent); - - break; - } - } - } catch (err) { - _iterator10.e(err); - } finally { - _iterator10.f(); - } - - this.cleanup(); - } - }, { - key: "stats", - get: function get() { - return this._stats; - } - }]); - - return PDFPageProxy; - }(); - - exports.PDFPageProxy = PDFPageProxy; - - var LoopbackPort = /*#__PURE__*/function () { - function LoopbackPort() { - _classCallCheck(this, LoopbackPort); - - this._listeners = []; - this._deferred = Promise.resolve(undefined); - } - - _createClass(LoopbackPort, [{ - key: "postMessage", - value: function postMessage(obj, transfers) { - var _this8 = this; - - function cloneValue(value) { - if (_typeof(value) !== "object" || value === null) { - return value; - } - - if (cloned.has(value)) { - return cloned.get(value); - } - - var buffer, result; - - if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { - if (transfers !== null && transfers !== void 0 && transfers.includes(buffer)) { - result = new value.constructor(buffer, value.byteOffset, value.byteLength); - } else { - result = new value.constructor(value); - } - - cloned.set(value, result); - return result; - } - - if (value instanceof Map) { - result = new Map(); - cloned.set(value, result); - - var _iterator11 = _createForOfIteratorHelper(value), - _step11; - - try { - for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { - var _step11$value = _slicedToArray(_step11.value, 2), - key = _step11$value[0], - val = _step11$value[1]; - - result.set(key, cloneValue(val)); - } - } catch (err) { - _iterator11.e(err); - } finally { - _iterator11.f(); - } - - return result; - } - - if (value instanceof Set) { - result = new Set(); - cloned.set(value, result); - - var _iterator12 = _createForOfIteratorHelper(value), - _step12; - - try { - for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { - var _val = _step12.value; - result.add(cloneValue(_val)); - } - } catch (err) { - _iterator12.e(err); - } finally { - _iterator12.f(); - } - - return result; - } - - result = Array.isArray(value) ? [] : {}; - cloned.set(value, result); - - for (var i in value) { - var desc = void 0, - p = value; - - while (!(desc = Object.getOwnPropertyDescriptor(p, i))) { - p = Object.getPrototypeOf(p); - } - - if (typeof desc.value === "undefined") { - continue; - } - - if (typeof desc.value === "function") { - var _value$hasOwnProperty; - - if ((_value$hasOwnProperty = value.hasOwnProperty) !== null && _value$hasOwnProperty !== void 0 && _value$hasOwnProperty.call(value, i)) { - throw new Error("LoopbackPort.postMessage - cannot clone: ".concat(value[i])); - } - - continue; - } - - result[i] = cloneValue(desc.value); - } - - return result; - } - - var cloned = new WeakMap(); - var event = { - data: cloneValue(obj) - }; - - this._deferred.then(function () { - var _iterator13 = _createForOfIteratorHelper(_this8._listeners), - _step13; - - try { - for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { - var listener = _step13.value; - listener.call(_this8, event); - } - } catch (err) { - _iterator13.e(err); - } finally { - _iterator13.f(); - } - }); - } - }, { - key: "addEventListener", - value: function addEventListener(name, listener) { - this._listeners.push(listener); - } - }, { - key: "removeEventListener", - value: function removeEventListener(name, listener) { - var i = this._listeners.indexOf(listener); - - this._listeners.splice(i, 1); - } - }, { - key: "terminate", - value: function terminate() { - this._listeners.length = 0; - } - }]); - - return LoopbackPort; - }(); - - exports.LoopbackPort = LoopbackPort; - - var PDFWorker = function PDFWorkerClosure() { - var pdfWorkerPorts = new WeakMap(); - var isWorkerDisabled = false; - var fallbackWorkerSrc; - var nextFakeWorkerId = 0; - var fakeWorkerCapability; - - if (_is_node.isNodeJS && typeof require === "function") { - isWorkerDisabled = true; - fallbackWorkerSrc = "./pdf.worker.js"; - } else if ((typeof document === "undefined" ? "undefined" : _typeof(document)) === "object" && "currentScript" in document) { - var _document$currentScri; - - var pdfjsFilePath = (_document$currentScri = document.currentScript) === null || _document$currentScri === void 0 ? void 0 : _document$currentScri.src; - - if (pdfjsFilePath) { - fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); - } - } - - function _getWorkerSrc() { - if (_worker_options.GlobalWorkerOptions.workerSrc) { - return _worker_options.GlobalWorkerOptions.workerSrc; - } - - if (typeof fallbackWorkerSrc !== "undefined") { - if (!_is_node.isNodeJS) { - (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); - } - - return fallbackWorkerSrc; - } - - throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); - } - - function getMainThreadWorkerMessageHandler() { - var mainWorkerMessageHandler; - - try { - var _globalThis$pdfjsWork; - - mainWorkerMessageHandler = (_globalThis$pdfjsWork = globalThis.pdfjsWorker) === null || _globalThis$pdfjsWork === void 0 ? void 0 : _globalThis$pdfjsWork.WorkerMessageHandler; - } catch (ex) { - } - - return mainWorkerMessageHandler || null; - } - - function setupFakeWorkerGlobal() { - if (fakeWorkerCapability) { - return fakeWorkerCapability.promise; - } - - fakeWorkerCapability = (0, _util.createPromiseCapability)(); - - var loader = /*#__PURE__*/function () { - var _ref12 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var mainWorkerMessageHandler, worker; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - mainWorkerMessageHandler = getMainThreadWorkerMessageHandler(); - - if (!mainWorkerMessageHandler) { - _context.next = 3; - break; - } - - return _context.abrupt("return", mainWorkerMessageHandler); - - case 3: - if (!(_is_node.isNodeJS && typeof require === "function")) { - _context.next = 6; - break; - } - - worker = eval("require")(_getWorkerSrc()); - return _context.abrupt("return", worker.WorkerMessageHandler); - - case 6: - _context.next = 8; - return (0, _display_utils.loadScript)(_getWorkerSrc()); - - case 8: - return _context.abrupt("return", window.pdfjsWorker.WorkerMessageHandler); - - case 9: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - return function loader() { - return _ref12.apply(this, arguments); - }; - }(); - - loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject); - return fakeWorkerCapability.promise; - } - - function createCDNWrapper(url) { - var wrapper = "importScripts('" + url + "');"; - return URL.createObjectURL(new Blob([wrapper])); - } - - var PDFWorker = /*#__PURE__*/function () { - function PDFWorker() { - var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref13$name = _ref13.name, - name = _ref13$name === void 0 ? null : _ref13$name, - _ref13$port = _ref13.port, - port = _ref13$port === void 0 ? null : _ref13$port, - _ref13$verbosity = _ref13.verbosity, - verbosity = _ref13$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref13$verbosity; - - _classCallCheck(this, PDFWorker); - - if (port && pdfWorkerPorts.has(port)) { - throw new Error("Cannot use more than one PDFWorker per port"); - } - - this.name = name; - this.destroyed = false; - this.postMessageTransfers = true; - this.verbosity = verbosity; - this._readyCapability = (0, _util.createPromiseCapability)(); - this._port = null; - this._webWorker = null; - this._messageHandler = null; - - if (port) { - pdfWorkerPorts.set(port, this); - - this._initializeFromPort(port); - - return; - } - - this._initialize(); - } - - _createClass(PDFWorker, [{ - key: "promise", - get: function get() { - return this._readyCapability.promise; - } - }, { - key: "port", - get: function get() { - return this._port; - } - }, { - key: "messageHandler", - get: function get() { - return this._messageHandler; - } - }, { - key: "_initializeFromPort", - value: function _initializeFromPort(port) { - this._port = port; - this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); - - this._messageHandler.on("ready", function () { - }); - - this._readyCapability.resolve(); - } - }, { - key: "_initialize", - value: function _initialize() { - var _this9 = this; - - if (typeof Worker !== "undefined" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) { - var workerSrc = _getWorkerSrc(); - - try { - if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) { - workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href); - } - - var worker = new Worker(workerSrc); - var messageHandler = new _message_handler.MessageHandler("main", "worker", worker); - - var terminateEarly = function terminateEarly() { - worker.removeEventListener("error", onWorkerError); - messageHandler.destroy(); - worker.terminate(); - - if (_this9.destroyed) { - _this9._readyCapability.reject(new Error("Worker was destroyed")); - } else { - _this9._setupFakeWorker(); - } - }; - - var onWorkerError = function onWorkerError() { - if (!_this9._webWorker) { - terminateEarly(); - } - }; - - worker.addEventListener("error", onWorkerError); - messageHandler.on("test", function (data) { - worker.removeEventListener("error", onWorkerError); - - if (_this9.destroyed) { - terminateEarly(); - return; - } - - if (data) { - _this9._messageHandler = messageHandler; - _this9._port = worker; - _this9._webWorker = worker; - - if (!data.supportTransfers) { - _this9.postMessageTransfers = false; - } - - _this9._readyCapability.resolve(); - - messageHandler.send("configure", { - verbosity: _this9.verbosity - }); - } else { - _this9._setupFakeWorker(); - - messageHandler.destroy(); - worker.terminate(); - } - }); - messageHandler.on("ready", function (data) { - worker.removeEventListener("error", onWorkerError); - - if (_this9.destroyed) { - terminateEarly(); - return; - } - - try { - sendTest(); - } catch (e) { - _this9._setupFakeWorker(); - } - }); - - var sendTest = function sendTest() { - var testObj = new Uint8Array([_this9.postMessageTransfers ? 255 : 0]); - - try { - messageHandler.send("test", testObj, [testObj.buffer]); - } catch (ex) { - (0, _util.warn)("Cannot use postMessage transfers."); - testObj[0] = 0; - messageHandler.send("test", testObj); - } - }; - - sendTest(); - return; - } catch (e) { - (0, _util.info)("The worker has been disabled."); - } - } - - this._setupFakeWorker(); - } - }, { - key: "_setupFakeWorker", - value: function _setupFakeWorker() { - var _this10 = this; - - if (!isWorkerDisabled) { - (0, _util.warn)("Setting up fake worker."); - isWorkerDisabled = true; - } - - setupFakeWorkerGlobal().then(function (WorkerMessageHandler) { - if (_this10.destroyed) { - _this10._readyCapability.reject(new Error("Worker was destroyed")); - - return; - } - - var port = new LoopbackPort(); - _this10._port = port; - var id = "fake" + nextFakeWorkerId++; - var workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); - WorkerMessageHandler.setup(workerHandler, port); - var messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); - _this10._messageHandler = messageHandler; - - _this10._readyCapability.resolve(); - - messageHandler.send("configure", { - verbosity: _this10.verbosity - }); - })["catch"](function (reason) { - _this10._readyCapability.reject(new Error("Setting up fake worker failed: \"".concat(reason.message, "\"."))); - }); - } - }, { - key: "destroy", - value: function destroy() { - this.destroyed = true; - - if (this._webWorker) { - this._webWorker.terminate(); - - this._webWorker = null; - } - - pdfWorkerPorts["delete"](this._port); - this._port = null; - - if (this._messageHandler) { - this._messageHandler.destroy(); - - this._messageHandler = null; - } - } - }], [{ - key: "fromPort", - value: function fromPort(params) { - if (!params || !params.port) { - throw new Error("PDFWorker.fromPort - invalid method signature."); - } - - if (pdfWorkerPorts.has(params.port)) { - return pdfWorkerPorts.get(params.port); - } - - return new PDFWorker(params); - } - }, { - key: "getWorkerSrc", - value: function getWorkerSrc() { - return _getWorkerSrc(); - } - }]); - - return PDFWorker; - }(); - - return PDFWorker; - }(); - - exports.PDFWorker = PDFWorker; - - var WorkerTransport = /*#__PURE__*/function () { - function WorkerTransport(messageHandler, loadingTask, networkStream, params) { - _classCallCheck(this, WorkerTransport); - - this.messageHandler = messageHandler; - this.loadingTask = loadingTask; - this.commonObjs = new PDFObjects(); - this.fontLoader = new _font_loader.FontLoader({ - docId: loadingTask.docId, - onUnsupportedFeature: this._onUnsupportedFeature.bind(this), - ownerDocument: params.ownerDocument - }); - this._params = params; - this.CMapReaderFactory = new params.CMapReaderFactory({ - baseUrl: params.cMapUrl, - isCompressed: params.cMapPacked - }); - this.destroyed = false; - this.destroyCapability = null; - this._passwordCapability = null; - this._networkStream = networkStream; - this._fullReader = null; - this._lastProgress = null; - this.pageCache = []; - this.pagePromises = []; - this.downloadInfoCapability = (0, _util.createPromiseCapability)(); - this.setupMessageHandler(); - } - - _createClass(WorkerTransport, [{ - key: "loadingTaskSettled", - get: function get() { - return this.loadingTask._capability.settled; - } - }, { - key: "destroy", - value: function destroy() { - var _this11 = this; - - if (this.destroyCapability) { - return this.destroyCapability.promise; - } - - this.destroyed = true; - this.destroyCapability = (0, _util.createPromiseCapability)(); - - if (this._passwordCapability) { - this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); - } - - var waitOn = []; - this.pageCache.forEach(function (page) { - if (page) { - waitOn.push(page._destroy()); - } - }); - this.pageCache.length = 0; - this.pagePromises.length = 0; - var terminated = this.messageHandler.sendWithPromise("Terminate", null); - waitOn.push(terminated); - - if (this.loadingTaskSettled) { - var annotationStorageResetModified = this.loadingTask.promise.then(function (pdfDocument) { - if (pdfDocument.hasOwnProperty("annotationStorage")) { - pdfDocument.annotationStorage.resetModified(); - } - })["catch"](function () { - }); - waitOn.push(annotationStorageResetModified); - } - - Promise.all(waitOn).then(function () { - _this11.commonObjs.clear(); - - _this11.fontLoader.clear(); - - _this11._hasJSActionsPromise = null; - - if (_this11._networkStream) { - _this11._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); - } - - if (_this11.messageHandler) { - _this11.messageHandler.destroy(); - - _this11.messageHandler = null; - } - - _this11.destroyCapability.resolve(); - }, this.destroyCapability.reject); - return this.destroyCapability.promise; - } - }, { - key: "setupMessageHandler", - value: function setupMessageHandler() { - var _this12 = this; - - var messageHandler = this.messageHandler, - loadingTask = this.loadingTask; - messageHandler.on("GetReader", function (data, sink) { - (0, _util.assert)(_this12._networkStream, "GetReader - no `IPDFStream` instance available."); - _this12._fullReader = _this12._networkStream.getFullReader(); - - _this12._fullReader.onProgress = function (evt) { - _this12._lastProgress = { - loaded: evt.loaded, - total: evt.total - }; - }; - - sink.onPull = function () { - _this12._fullReader.read().then(function (_ref14) { - var value = _ref14.value, - done = _ref14.done; - - if (done) { - sink.close(); - return; - } - - (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer."); - sink.enqueue(new Uint8Array(value), 1, [value]); - })["catch"](function (reason) { - sink.error(reason); - }); - }; - - sink.onCancel = function (reason) { - _this12._fullReader.cancel(reason); - - sink.ready["catch"](function (readyReason) { - if (_this12.destroyed) { - return; - } - - throw readyReason; - }); - }; - }); - messageHandler.on("ReaderHeadersReady", function (data) { - var headersCapability = (0, _util.createPromiseCapability)(); - var fullReader = _this12._fullReader; - fullReader.headersReady.then(function () { - if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { - if (_this12._lastProgress && loadingTask.onProgress) { - loadingTask.onProgress(_this12._lastProgress); - } - - fullReader.onProgress = function (evt) { - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: evt.loaded, - total: evt.total - }); - } - }; - } - - headersCapability.resolve({ - isStreamingSupported: fullReader.isStreamingSupported, - isRangeSupported: fullReader.isRangeSupported, - contentLength: fullReader.contentLength - }); - }, headersCapability.reject); - return headersCapability.promise; - }); - messageHandler.on("GetRangeReader", function (data, sink) { - (0, _util.assert)(_this12._networkStream, "GetRangeReader - no `IPDFStream` instance available."); - - var rangeReader = _this12._networkStream.getRangeReader(data.begin, data.end); - - if (!rangeReader) { - sink.close(); - return; - } - - sink.onPull = function () { - rangeReader.read().then(function (_ref15) { - var value = _ref15.value, - done = _ref15.done; - - if (done) { - sink.close(); - return; - } - - (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer."); - sink.enqueue(new Uint8Array(value), 1, [value]); - })["catch"](function (reason) { - sink.error(reason); - }); - }; - - sink.onCancel = function (reason) { - rangeReader.cancel(reason); - sink.ready["catch"](function (readyReason) { - if (_this12.destroyed) { - return; - } - - throw readyReason; - }); - }; - }); - messageHandler.on("GetDoc", function (_ref16) { - var pdfInfo = _ref16.pdfInfo; - _this12._numPages = pdfInfo.numPages; - - loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, _this12)); - }); - messageHandler.on("DocException", function (ex) { - var reason; - - switch (ex.name) { - case "PasswordException": - reason = new _util.PasswordException(ex.message, ex.code); - break; - - case "InvalidPDFException": - reason = new _util.InvalidPDFException(ex.message); - break; - - case "MissingPDFException": - reason = new _util.MissingPDFException(ex.message); - break; - - case "UnexpectedResponseException": - reason = new _util.UnexpectedResponseException(ex.message, ex.status); - break; - - case "UnknownErrorException": - reason = new _util.UnknownErrorException(ex.message, ex.details); - break; - } - - if (!(reason instanceof Error)) { - var msg = "DocException - expected a valid Error."; - (0, _util.warn)(msg); - } - - loadingTask._capability.reject(reason); - }); - messageHandler.on("PasswordRequest", function (exception) { - _this12._passwordCapability = (0, _util.createPromiseCapability)(); - - if (loadingTask.onPassword) { - var updatePassword = function updatePassword(password) { - _this12._passwordCapability.resolve({ - password: password - }); - }; - - try { - loadingTask.onPassword(updatePassword, exception.code); - } catch (ex) { - _this12._passwordCapability.reject(ex); - } - } else { - _this12._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); - } - - return _this12._passwordCapability.promise; - }); - messageHandler.on("DataLoaded", function (data) { - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: data.length, - total: data.length - }); - } - - _this12.downloadInfoCapability.resolve(data); - }); - messageHandler.on("StartRenderPage", function (data) { - if (_this12.destroyed) { - return; - } - - var page = _this12.pageCache[data.pageIndex]; - - page._startRenderPage(data.transparency, data.intent); - }); - messageHandler.on("commonobj", function (data) { - var _globalThis$FontInspe; - - if (_this12.destroyed) { - return; - } - - var _data = _slicedToArray(data, 3), - id = _data[0], - type = _data[1], - exportedData = _data[2]; - - if (_this12.commonObjs.has(id)) { - return; - } - - switch (type) { - case "Font": - var params = _this12._params; - - if ("error" in exportedData) { - var exportedError = exportedData.error; - (0, _util.warn)("Error during font loading: ".concat(exportedError)); - - _this12.commonObjs.resolve(id, exportedError); - - break; - } - - var fontRegistry = null; - - if (params.pdfBug && (_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled) { - fontRegistry = { - registerFont: function registerFont(font, url) { - globalThis.FontInspector.fontAdded(font, url); - } - }; - } - - var font = new _font_loader.FontFaceObject(exportedData, { - isEvalSupported: params.isEvalSupported, - disableFontFace: params.disableFontFace, - ignoreErrors: params.ignoreErrors, - onUnsupportedFeature: _this12._onUnsupportedFeature.bind(_this12), - fontRegistry: fontRegistry - }); - - _this12.fontLoader.bind(font)["catch"](function (reason) { - return messageHandler.sendWithPromise("FontFallback", { - id: id - }); - })["finally"](function () { - if (!params.fontExtraProperties && font.data) { - font.data = null; - } - - _this12.commonObjs.resolve(id, font); - }); - - break; - - case "FontPath": - case "Image": - _this12.commonObjs.resolve(id, exportedData); - - break; - - default: - throw new Error("Got unknown common object type ".concat(type)); - } - }); - messageHandler.on("obj", function (data) { - var _imageData$data; - - if (_this12.destroyed) { - return undefined; - } - - var _data2 = _slicedToArray(data, 4), - id = _data2[0], - pageIndex = _data2[1], - type = _data2[2], - imageData = _data2[3]; - - var pageProxy = _this12.pageCache[pageIndex]; - - if (pageProxy.objs.has(id)) { - return undefined; - } - - switch (type) { - case "Image": - pageProxy.objs.resolve(id, imageData); - var MAX_IMAGE_SIZE_TO_STORE = 8000000; - - if ((imageData === null || imageData === void 0 ? void 0 : (_imageData$data = imageData.data) === null || _imageData$data === void 0 ? void 0 : _imageData$data.length) > MAX_IMAGE_SIZE_TO_STORE) { - pageProxy.cleanupAfterRender = true; - } - - break; - - default: - throw new Error("Got unknown object type ".concat(type)); - } - - return undefined; - }); - messageHandler.on("DocProgress", function (data) { - if (_this12.destroyed) { - return; - } - - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: data.loaded, - total: data.total - }); - } - }); - messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this)); - messageHandler.on("FetchBuiltInCMap", function (data, sink) { - if (_this12.destroyed) { - sink.error(new Error("Worker was destroyed")); - return; - } - - var fetched = false; - - sink.onPull = function () { - if (fetched) { - sink.close(); - return; - } - - fetched = true; - - _this12.CMapReaderFactory.fetch(data).then(function (builtInCMap) { - sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]); - })["catch"](function (reason) { - sink.error(reason); - }); - }; - }); - } - }, { - key: "_onUnsupportedFeature", - value: function _onUnsupportedFeature(_ref17) { - var featureId = _ref17.featureId; - - if (this.destroyed) { - return; - } - - if (this.loadingTask.onUnsupportedFeature) { - this.loadingTask.onUnsupportedFeature(featureId); - } - } - }, { - key: "getData", - value: function getData() { - return this.messageHandler.sendWithPromise("GetData", null); - } - }, { - key: "getPage", - value: function getPage(pageNumber) { - var _this13 = this; - - if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { - return Promise.reject(new Error("Invalid page request")); - } - - var pageIndex = pageNumber - 1; - - if (pageIndex in this.pagePromises) { - return this.pagePromises[pageIndex]; - } - - var promise = this.messageHandler.sendWithPromise("GetPage", { - pageIndex: pageIndex - }).then(function (pageInfo) { - if (_this13.destroyed) { - throw new Error("Transport destroyed"); - } - - var page = new PDFPageProxy(pageIndex, pageInfo, _this13, _this13._params.ownerDocument, _this13._params.pdfBug); - _this13.pageCache[pageIndex] = page; - return page; - }); - this.pagePromises[pageIndex] = promise; - return promise; - } - }, { - key: "getPageIndex", - value: function getPageIndex(ref) { - return this.messageHandler.sendWithPromise("GetPageIndex", { - ref: ref - })["catch"](function (reason) { - return Promise.reject(new Error(reason)); - }); - } - }, { - key: "getAnnotations", - value: function getAnnotations(pageIndex, intent) { - return this.messageHandler.sendWithPromise("GetAnnotations", { - pageIndex: pageIndex, - intent: intent - }); - } - }, { - key: "saveDocument", - value: function saveDocument(annotationStorage) { - var _this$_fullReader$fil, _this$_fullReader; - - return this.messageHandler.sendWithPromise("SaveDocument", { - numPages: this._numPages, - annotationStorage: (annotationStorage === null || annotationStorage === void 0 ? void 0 : annotationStorage.serializable) || null, - filename: (_this$_fullReader$fil = (_this$_fullReader = this._fullReader) === null || _this$_fullReader === void 0 ? void 0 : _this$_fullReader.filename) !== null && _this$_fullReader$fil !== void 0 ? _this$_fullReader$fil : null - })["finally"](function () { - if (annotationStorage) { - annotationStorage.resetModified(); - } - }); - } - }, { - key: "getFieldObjects", - value: function getFieldObjects() { - return this.messageHandler.sendWithPromise("GetFieldObjects", null); - } - }, { - key: "hasJSActions", - value: function hasJSActions() { - return this._hasJSActionsPromise || (this._hasJSActionsPromise = this.messageHandler.sendWithPromise("HasJSActions", null)); - } - }, { - key: "getCalculationOrderIds", - value: function getCalculationOrderIds() { - return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); - } - }, { - key: "getDestinations", - value: function getDestinations() { - return this.messageHandler.sendWithPromise("GetDestinations", null); - } - }, { - key: "getDestination", - value: function getDestination(id) { - if (typeof id !== "string") { - return Promise.reject(new Error("Invalid destination request.")); - } - - return this.messageHandler.sendWithPromise("GetDestination", { - id: id - }); - } - }, { - key: "getPageLabels", - value: function getPageLabels() { - return this.messageHandler.sendWithPromise("GetPageLabels", null); - } - }, { - key: "getPageLayout", - value: function getPageLayout() { - return this.messageHandler.sendWithPromise("GetPageLayout", null); - } - }, { - key: "getPageMode", - value: function getPageMode() { - return this.messageHandler.sendWithPromise("GetPageMode", null); - } - }, { - key: "getViewerPreferences", - value: function getViewerPreferences() { - return this.messageHandler.sendWithPromise("GetViewerPreferences", null); - } - }, { - key: "getOpenAction", - value: function getOpenAction() { - return this.messageHandler.sendWithPromise("GetOpenAction", null); - } - }, { - key: "getAttachments", - value: function getAttachments() { - return this.messageHandler.sendWithPromise("GetAttachments", null); - } - }, { - key: "getJavaScript", - value: function getJavaScript() { - return this.messageHandler.sendWithPromise("GetJavaScript", null); - } - }, { - key: "getDocJSActions", - value: function getDocJSActions() { - return this.messageHandler.sendWithPromise("GetDocJSActions", null); - } - }, { - key: "getPageJSActions", - value: function getPageJSActions(pageIndex) { - return this.messageHandler.sendWithPromise("GetPageJSActions", { - pageIndex: pageIndex - }); - } - }, { - key: "getPageXfa", - value: function getPageXfa(pageIndex) { - return this.messageHandler.sendWithPromise("GetPageXfa", { - pageIndex: pageIndex - }); - } - }, { - key: "getOutline", - value: function getOutline() { - return this.messageHandler.sendWithPromise("GetOutline", null); - } - }, { - key: "getOptionalContentConfig", - value: function getOptionalContentConfig() { - return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(function (results) { - return new _optional_content_config.OptionalContentConfig(results); - }); - } - }, { - key: "getPermissions", - value: function getPermissions() { - return this.messageHandler.sendWithPromise("GetPermissions", null); - } - }, { - key: "getMetadata", - value: function getMetadata() { - var _this14 = this; - - return this.messageHandler.sendWithPromise("GetMetadata", null).then(function (results) { - var _this14$_fullReader$f, _this14$_fullReader, _this14$_fullReader$c, - _this14$_fullReader2; - - return { - info: results[0], - metadata: results[1] ? new _metadata.Metadata(results[1]) : null, - contentDispositionFilename: (_this14$_fullReader$f = (_this14$_fullReader = _this14._fullReader) === null || _this14$_fullReader === void 0 ? void 0 : _this14$_fullReader.filename) !== null && _this14$_fullReader$f !== void 0 ? _this14$_fullReader$f : null, - contentLength: (_this14$_fullReader$c = (_this14$_fullReader2 = _this14._fullReader) === null || _this14$_fullReader2 === void 0 ? void 0 : _this14$_fullReader2.contentLength) !== null && _this14$_fullReader$c !== void 0 ? _this14$_fullReader$c : null - }; - }); - } - }, { - key: "getMarkInfo", - value: function getMarkInfo() { - return this.messageHandler.sendWithPromise("GetMarkInfo", null); - } - }, { - key: "getStats", - value: function getStats() { - return this.messageHandler.sendWithPromise("GetStats", null); - } - }, { - key: "startCleanup", - value: function () { - var _startCleanup = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var keepLoadedFonts, - i, - ii, - page, - cleanupSuccessful, - _args2 = arguments; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - keepLoadedFonts = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : false; - _context2.next = 3; - return this.messageHandler.sendWithPromise("Cleanup", null); - - case 3: - if (!this.destroyed) { - _context2.next = 5; - break; - } - - return _context2.abrupt("return"); - - case 5: - i = 0, ii = this.pageCache.length; - - case 6: - if (!(i < ii)) { - _context2.next = 16; - break; - } - - page = this.pageCache[i]; - - if (page) { - _context2.next = 10; - break; - } - - return _context2.abrupt("continue", 13); - - case 10: - cleanupSuccessful = page.cleanup(); - - if (cleanupSuccessful) { - _context2.next = 13; - break; - } - - throw new Error("startCleanup: Page ".concat(i + 1, " is currently rendering.")); - - case 13: - i++; - _context2.next = 6; - break; - - case 16: - this.commonObjs.clear(); - - if (!keepLoadedFonts) { - this.fontLoader.clear(); - } - - this._hasJSActionsPromise = null; - - case 19: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function startCleanup() { - return _startCleanup.apply(this, arguments); - } - - return startCleanup; - }() - }, { - key: "loadingParams", - get: function get() { - var params = this._params; - return (0, _util.shadow)(this, "loadingParams", { - disableAutoFetch: params.disableAutoFetch, - disableFontFace: params.disableFontFace - }); - } - }]); - - return WorkerTransport; - }(); - - var PDFObjects = /*#__PURE__*/function () { - function PDFObjects() { - _classCallCheck(this, PDFObjects); - - this._objs = Object.create(null); - } - - _createClass(PDFObjects, [{ - key: "_ensureObj", - value: function _ensureObj(objId) { - if (this._objs[objId]) { - return this._objs[objId]; - } - - return this._objs[objId] = { - capability: (0, _util.createPromiseCapability)(), - data: null, - resolved: false - }; - } - }, { - key: "get", - value: function get(objId) { - var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (callback) { - this._ensureObj(objId).capability.promise.then(callback); - - return null; - } - - var obj = this._objs[objId]; - - if (!obj || !obj.resolved) { - throw new Error("Requesting object that isn't resolved yet ".concat(objId, ".")); - } - - return obj.data; - } - }, { - key: "has", - value: function has(objId) { - var obj = this._objs[objId]; - return (obj === null || obj === void 0 ? void 0 : obj.resolved) || false; - } - }, { - key: "resolve", - value: function resolve(objId, data) { - var obj = this._ensureObj(objId); - - obj.resolved = true; - obj.data = data; - obj.capability.resolve(data); - } - }, { - key: "clear", - value: function clear() { - this._objs = Object.create(null); - } - }]); - - return PDFObjects; - }(); - - var RenderTask = /*#__PURE__*/function () { - function RenderTask(internalRenderTask) { - _classCallCheck(this, RenderTask); - - this._internalRenderTask = internalRenderTask; - this.onContinue = null; - } - - _createClass(RenderTask, [{ - key: "promise", - get: function get() { - return this._internalRenderTask.capability.promise; - } - }, { - key: "cancel", - value: function cancel() { - this._internalRenderTask.cancel(); - } - }]); - - return RenderTask; - }(); - - var InternalRenderTask = function InternalRenderTaskClosure() { - var canvasInRendering = new WeakSet(); - - var InternalRenderTask = /*#__PURE__*/function () { - function InternalRenderTask(_ref18) { - var callback = _ref18.callback, - params = _ref18.params, - objs = _ref18.objs, - commonObjs = _ref18.commonObjs, - operatorList = _ref18.operatorList, - pageIndex = _ref18.pageIndex, - canvasFactory = _ref18.canvasFactory, - webGLContext = _ref18.webGLContext, - _ref18$useRequestAnim = _ref18.useRequestAnimationFrame, - useRequestAnimationFrame = _ref18$useRequestAnim === void 0 ? false : _ref18$useRequestAnim, - _ref18$pdfBug = _ref18.pdfBug, - pdfBug = _ref18$pdfBug === void 0 ? false : _ref18$pdfBug; - - _classCallCheck(this, InternalRenderTask); - - this.callback = callback; - this.params = params; - this.objs = objs; - this.commonObjs = commonObjs; - this.operatorListIdx = null; - this.operatorList = operatorList; - this._pageIndex = pageIndex; - this.canvasFactory = canvasFactory; - this.webGLContext = webGLContext; - this._pdfBug = pdfBug; - this.running = false; - this.graphicsReadyCallback = null; - this.graphicsReady = false; - this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; - this.cancelled = false; - this.capability = (0, _util.createPromiseCapability)(); - this.task = new RenderTask(this); - this._cancelBound = this.cancel.bind(this); - this._continueBound = this._continue.bind(this); - this._scheduleNextBound = this._scheduleNext.bind(this); - this._nextBound = this._next.bind(this); - this._canvas = params.canvasContext.canvas; - } - - _createClass(InternalRenderTask, [{ - key: "completed", - get: function get() { - return this.capability.promise["catch"](function () { - }); - } - }, { - key: "initializeGraphics", - value: function initializeGraphics(_ref19) { - var _globalThis$StepperMa; - - var _ref19$transparency = _ref19.transparency, - transparency = _ref19$transparency === void 0 ? false : _ref19$transparency, - optionalContentConfig = _ref19.optionalContentConfig; - - if (this.cancelled) { - return; - } - - if (this._canvas) { - if (canvasInRendering.has(this._canvas)) { - throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); - } - - canvasInRendering.add(this._canvas); - } - - if (this._pdfBug && (_globalThis$StepperMa = globalThis.StepperManager) !== null && _globalThis$StepperMa !== void 0 && _globalThis$StepperMa.enabled) { - this.stepper = globalThis.StepperManager.create(this._pageIndex); - this.stepper.init(this.operatorList); - this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); - } - - var _this$params = this.params, - canvasContext = _this$params.canvasContext, - viewport = _this$params.viewport, - transform = _this$params.transform, - imageLayer = _this$params.imageLayer, - background = _this$params.background; - this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer, optionalContentConfig); - this.gfx.beginDrawing({ - transform: transform, - viewport: viewport, - transparency: transparency, - background: background - }); - this.operatorListIdx = 0; - this.graphicsReady = true; - - if (this.graphicsReadyCallback) { - this.graphicsReadyCallback(); - } - } - }, { - key: "cancel", - value: function cancel() { - var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - this.running = false; - this.cancelled = true; - - if (this.gfx) { - this.gfx.endDrawing(); - } - - if (this._canvas) { - canvasInRendering["delete"](this._canvas); - } - - this.callback(error || new _display_utils.RenderingCancelledException("Rendering cancelled, page ".concat(this._pageIndex + 1), "canvas")); - } - }, { - key: "operatorListChanged", - value: function operatorListChanged() { - if (!this.graphicsReady) { - if (!this.graphicsReadyCallback) { - this.graphicsReadyCallback = this._continueBound; - } - - return; - } - - if (this.stepper) { - this.stepper.updateOperatorList(this.operatorList); - } - - if (this.running) { - return; - } - - this._continue(); - } - }, { - key: "_continue", - value: function _continue() { - this.running = true; - - if (this.cancelled) { - return; - } - - if (this.task.onContinue) { - this.task.onContinue(this._scheduleNextBound); - } else { - this._scheduleNext(); - } - } - }, { - key: "_scheduleNext", - value: function _scheduleNext() { - var _this15 = this; - - if (this._useRequestAnimationFrame) { - window.requestAnimationFrame(function () { - _this15._nextBound()["catch"](_this15._cancelBound); - }); - } else { - Promise.resolve().then(this._nextBound)["catch"](this._cancelBound); - } - } - }, { - key: "_next", - value: function () { - var _next2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - if (!this.cancelled) { - _context3.next = 2; - break; - } - - return _context3.abrupt("return"); - - case 2: - this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); - - if (this.operatorListIdx === this.operatorList.argsArray.length) { - this.running = false; - - if (this.operatorList.lastChunk) { - this.gfx.endDrawing(); - - if (this._canvas) { - canvasInRendering["delete"](this._canvas); - } - - this.callback(); - } - } - - case 4: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function _next() { - return _next2.apply(this, arguments); - } - - return _next; - }() - }]); - - return InternalRenderTask; - }(); - - return InternalRenderTask; - }(); - - var version = '2.8.335'; - exports.version = version; - var build = '228adbf67'; - exports.build = build; - - /***/ - }), - /* 126 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.FontLoader = exports.FontFaceObject = void 0; - - var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - - var _util = __w_pdfjs_require__(4); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var BaseFontLoader = /*#__PURE__*/function () { - function BaseFontLoader(_ref) { - var docId = _ref.docId, - onUnsupportedFeature = _ref.onUnsupportedFeature, - _ref$ownerDocument = _ref.ownerDocument, - ownerDocument = _ref$ownerDocument === void 0 ? globalThis.document : _ref$ownerDocument; - - _classCallCheck(this, BaseFontLoader); - - if (this.constructor === BaseFontLoader) { - (0, _util.unreachable)("Cannot initialize BaseFontLoader."); - } - - this.docId = docId; - this._onUnsupportedFeature = onUnsupportedFeature; - this._document = ownerDocument; - this.nativeFontFaces = []; - this.styleElement = null; - } - - _createClass(BaseFontLoader, [{ - key: "addNativeFontFace", - value: function addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - - this._document.fonts.add(nativeFontFace); - } - }, { - key: "insertRule", - value: function insertRule(rule) { - var styleElement = this.styleElement; - - if (!styleElement) { - styleElement = this.styleElement = this._document.createElement("style"); - styleElement.id = "PDFJS_FONT_STYLE_TAG_".concat(this.docId); - - this._document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement); - } - - var styleSheet = styleElement.sheet; - styleSheet.insertRule(rule, styleSheet.cssRules.length); - } - }, { - key: "clear", - value: function clear() { - var _this = this; - - this.nativeFontFaces.forEach(function (nativeFontFace) { - _this._document.fonts["delete"](nativeFontFace); - }); - this.nativeFontFaces.length = 0; - - if (this.styleElement) { - this.styleElement.remove(); - this.styleElement = null; - } - } - }, { - key: "bind", - value: function () { - var _bind = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(font) { - var _this2 = this; - - var nativeFontFace, rule; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!(font.attached || font.missingFile)) { - _context.next = 2; - break; - } - - return _context.abrupt("return"); - - case 2: - font.attached = true; - - if (!this.isFontLoadingAPISupported) { - _context.next = 19; - break; - } - - nativeFontFace = font.createNativeFontFace(); - - if (!nativeFontFace) { - _context.next = 18; - break; - } - - this.addNativeFontFace(nativeFontFace); - _context.prev = 7; - _context.next = 10; - return nativeFontFace.loaded; - - case 10: - _context.next = 18; - break; - - case 12: - _context.prev = 12; - _context.t0 = _context["catch"](7); - - this._onUnsupportedFeature({ - featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative - }); - - (0, _util.warn)("Failed to load font '".concat(nativeFontFace.family, "': '").concat(_context.t0, "'.")); - font.disableFontFace = true; - throw _context.t0; - - case 18: - return _context.abrupt("return"); - - case 19: - rule = font.createFontFaceRule(); - - if (!rule) { - _context.next = 26; - break; - } - - this.insertRule(rule); - - if (!this.isSyncFontLoadingSupported) { - _context.next = 24; - break; - } - - return _context.abrupt("return"); - - case 24: - _context.next = 26; - return new Promise(function (resolve) { - var request = _this2._queueLoadingCallback(resolve); - - _this2._prepareFontLoadEvent([rule], [font], request); - }); - - case 26: - case "end": - return _context.stop(); - } - } - }, _callee, this, [[7, 12]]); - })); - - function bind(_x) { - return _bind.apply(this, arguments); - } - - return bind; - }() - }, { - key: "_queueLoadingCallback", - value: function _queueLoadingCallback(callback) { - (0, _util.unreachable)("Abstract method `_queueLoadingCallback`."); - } - }, { - key: "isFontLoadingAPISupported", - get: function get() { - var _this$_document; - - return (0, _util.shadow)(this, "isFontLoadingAPISupported", !!((_this$_document = this._document) !== null && _this$_document !== void 0 && _this$_document.fonts)); - } - }, { - key: "isSyncFontLoadingSupported", - get: function get() { - (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`."); - } - }, { - key: "_loadTestFont", - get: function get() { - (0, _util.unreachable)("Abstract method `_loadTestFont`."); - } - }, { - key: "_prepareFontLoadEvent", - value: function _prepareFontLoadEvent(rules, fontsToLoad, request) { - (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`."); - } - }]); - - return BaseFontLoader; - }(); - - var FontLoader; - exports.FontLoader = FontLoader; - { - exports.FontLoader = FontLoader = /*#__PURE__*/function (_BaseFontLoader) { - _inherits(GenericFontLoader, _BaseFontLoader); - - var _super = _createSuper(GenericFontLoader); - - function GenericFontLoader(params) { - var _this3; - - _classCallCheck(this, GenericFontLoader); - - _this3 = _super.call(this, params); - _this3.loadingContext = { - requests: [], - nextRequestId: 0 - }; - _this3.loadTestFontId = 0; - return _this3; - } - - _createClass(GenericFontLoader, [{ - key: "isSyncFontLoadingSupported", - get: function get() { - var supported = false; - - if (typeof navigator === "undefined") { - supported = true; - } else { - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - - if ((m === null || m === void 0 ? void 0 : m[1]) >= 14) { - supported = true; - } - } - - return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); - } - }, { - key: "_queueLoadingCallback", - value: function _queueLoadingCallback(callback) { - function completeRequest() { - (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); - request.done = true; - - while (context.requests.length > 0 && context.requests[0].done) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - - var context = this.loadingContext; - var request = { - id: "pdfjs-font-loading-".concat(context.nextRequestId++), - done: false, - complete: completeRequest, - callback: callback - }; - context.requests.push(request); - return request; - } - }, { - key: "_loadTestFont", - get: function get() { - var getLoadTestFont = function getLoadTestFont() { - return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); - }; - - return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont()); - } - }, { - key: "_prepareFontLoadEvent", - value: function _prepareFontLoadEvent(rules, fonts, request) { - var _this4 = this; - - function int32(data, offset) { - return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; - } - - function spliceString(s, offset, remove, insert) { - var chunk1 = s.substring(0, offset); - var chunk2 = s.substring(offset + remove); - return chunk1 + insert + chunk2; - } - - var i, ii; - - var canvas = this._document.createElement("canvas"); - - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext("2d"); - var called = 0; - - function isFontReady(name, callback) { - called++; - - if (called > 30) { - (0, _util.warn)("Load test font never loaded."); - callback(); - return; - } - - ctx.font = "30px " + name; - ctx.fillText(".", 0, 20); - var imageData = ctx.getImageData(0, 0, 1, 1); - - if (imageData.data[3] > 0) { - callback(); - return; - } - - setTimeout(isFontReady.bind(null, name, callback)); - } - - var loadTestFontId = "lt".concat(Date.now()).concat(this.loadTestFontId++); - var data = this._loadTestFont; - var COMMENT_OFFSET = 976; - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; - var checksum = int32(data, CFF_CHECKSUM_OFFSET); - - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; - } - - if (i < loadTestFontId.length) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; - } - - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); - var url = "url(data:font/opentype;base64,".concat(btoa(data), ");"); - var rule = "@font-face {font-family:\"".concat(loadTestFontId, "\";src:").concat(url, "}"); - this.insertRule(rule); - var names = []; - - for (i = 0, ii = fonts.length; i < ii; i++) { - names.push(fonts[i].loadedName); - } - - names.push(loadTestFontId); - - var div = this._document.createElement("div"); - - div.style.visibility = "hidden"; - div.style.width = div.style.height = "10px"; - div.style.position = "absolute"; - div.style.top = div.style.left = "0px"; - - for (i = 0, ii = names.length; i < ii; ++i) { - var span = this._document.createElement("span"); - - span.textContent = "Hi"; - span.style.fontFamily = names[i]; - div.appendChild(span); - } - - this._document.body.appendChild(div); - - isFontReady(loadTestFontId, function () { - _this4._document.body.removeChild(div); - - request.complete(); - }); - } - }]); - - return GenericFontLoader; - }(BaseFontLoader); - } - - var FontFaceObject = /*#__PURE__*/function () { - function FontFaceObject(translatedData, _ref2) { - var _ref2$isEvalSupported = _ref2.isEvalSupported, - isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported, - _ref2$disableFontFace = _ref2.disableFontFace, - disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace, - _ref2$ignoreErrors = _ref2.ignoreErrors, - ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors, - onUnsupportedFeature = _ref2.onUnsupportedFeature, - _ref2$fontRegistry = _ref2.fontRegistry, - fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry; - - _classCallCheck(this, FontFaceObject); - - this.compiledGlyphs = Object.create(null); - - for (var i in translatedData) { - this[i] = translatedData[i]; - } - - this.isEvalSupported = isEvalSupported !== false; - this.disableFontFace = disableFontFace === true; - this.ignoreErrors = ignoreErrors === true; - this._onUnsupportedFeature = onUnsupportedFeature; - this.fontRegistry = fontRegistry; - } - - _createClass(FontFaceObject, [{ - key: "createNativeFontFace", - value: function createNativeFontFace() { - if (!this.data || this.disableFontFace) { - return null; - } - - var nativeFontFace = new FontFace(this.loadedName, this.data, {}); - - if (this.fontRegistry) { - this.fontRegistry.registerFont(this); - } - - return nativeFontFace; - } - }, { - key: "createFontFaceRule", - value: function createFontFaceRule() { - if (!this.data || this.disableFontFace) { - return null; - } - - var data = (0, _util.bytesToString)(new Uint8Array(this.data)); - var url = "url(data:".concat(this.mimetype, ";base64,").concat(btoa(data), ");"); - var rule = "@font-face {font-family:\"".concat(this.loadedName, "\";src:").concat(url, "}"); - - if (this.fontRegistry) { - this.fontRegistry.registerFont(this, url); - } - - return rule; - } - }, { - key: "getPathGenerator", - value: function getPathGenerator(objs, character) { - if (this.compiledGlyphs[character] !== undefined) { - return this.compiledGlyphs[character]; - } - - var cmds, current; - - try { - cmds = objs.get(this.loadedName + "_path_" + character); - } catch (ex) { - if (!this.ignoreErrors) { - throw ex; - } - - this._onUnsupportedFeature({ - featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath - }); - - (0, _util.warn)("getPathGenerator - ignoring character: \"".concat(ex, "\".")); - return this.compiledGlyphs[character] = function (c, size) { - }; - } - - if (this.isEvalSupported && _util.IsEvalSupportedCached.value) { - var args, - js = ""; - - for (var i = 0, ii = cmds.length; i < ii; i++) { - current = cmds[i]; - - if (current.args !== undefined) { - args = current.args.join(","); - } else { - args = ""; - } - - js += "c." + current.cmd + "(" + args + ");\n"; - } - - return this.compiledGlyphs[character] = new Function("c", "size", js); - } - - return this.compiledGlyphs[character] = function (c, size) { - for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) { - current = cmds[_i]; - - if (current.cmd === "scale") { - current.args = [size, -size]; - } - - c[current.cmd].apply(c, current.args); - } - }; - } - }]); - - return FontFaceObject; - }(); - - exports.FontFaceObject = FontFaceObject; - - /***/ - }), - /* 127 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0; - - var _display_utils = __w_pdfjs_require__(1); - - var _is_node = __w_pdfjs_require__(6); - - var _util = __w_pdfjs_require__(4); - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var NodeCanvasFactory = function NodeCanvasFactory() { - _classCallCheck(this, NodeCanvasFactory); - - (0, _util.unreachable)("Not implemented: NodeCanvasFactory"); - }; - - exports.NodeCanvasFactory = NodeCanvasFactory; - - var NodeCMapReaderFactory = function NodeCMapReaderFactory() { - _classCallCheck(this, NodeCMapReaderFactory); - - (0, _util.unreachable)("Not implemented: NodeCMapReaderFactory"); - }; - - exports.NodeCMapReaderFactory = NodeCMapReaderFactory; - - if (_is_node.isNodeJS) { - exports.NodeCanvasFactory = NodeCanvasFactory = /*#__PURE__*/function (_BaseCanvasFactory) { - _inherits(NodeCanvasFactory, _BaseCanvasFactory); - - var _super = _createSuper(NodeCanvasFactory); - - function NodeCanvasFactory() { - _classCallCheck(this, NodeCanvasFactory); - - return _super.apply(this, arguments); - } - - _createClass(NodeCanvasFactory, [{ - key: "create", - value: function create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } - - var Canvas = require("canvas"); - - var canvas = Canvas.createCanvas(width, height); - return { - canvas: canvas, - context: canvas.getContext("2d") - }; - } - }]); - - return NodeCanvasFactory; - }(_display_utils.BaseCanvasFactory); - - exports.NodeCMapReaderFactory = NodeCMapReaderFactory = /*#__PURE__*/function (_BaseCMapReaderFactor) { - _inherits(NodeCMapReaderFactory, _BaseCMapReaderFactor); - - var _super2 = _createSuper(NodeCMapReaderFactory); - - function NodeCMapReaderFactory() { - _classCallCheck(this, NodeCMapReaderFactory); - - return _super2.apply(this, arguments); - } - - _createClass(NodeCMapReaderFactory, [{ - key: "_fetchData", - value: function _fetchData(url, compressionType) { - return new Promise(function (resolve, reject) { - var fs = require("fs"); - - fs.readFile(url, function (error, data) { - if (error || !data) { - reject(new Error(error)); - return; - } - - resolve({ - cMapData: new Uint8Array(data), - compressionType: compressionType - }); - }); - }); - } - }]); - - return NodeCMapReaderFactory; - }(_display_utils.BaseCMapReaderFactory); - } - - /***/ - }), - /* 128 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.AnnotationStorage = void 0; - - var _display_utils = __w_pdfjs_require__(1); - - var _util = __w_pdfjs_require__(4); - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var AnnotationStorage = /*#__PURE__*/function () { - function AnnotationStorage() { - _classCallCheck(this, AnnotationStorage); - - this._storage = new Map(); - this._modified = false; - this.onSetModified = null; - this.onResetModified = null; - } - - _createClass(AnnotationStorage, [{ - key: "getValue", - value: function getValue(key, defaultValue) { - var obj = this._storage.get(key); - - return obj !== undefined ? obj : defaultValue; - } - }, { - key: "getOrCreateValue", - value: function getOrCreateValue(key, defaultValue) { - (0, _display_utils.deprecated)("Use getValue instead."); - - if (this._storage.has(key)) { - return this._storage.get(key); - } - - this._storage.set(key, defaultValue); - - return defaultValue; - } - }, { - key: "setValue", - value: function setValue(key, value) { - var obj = this._storage.get(key); - - var modified = false; - - if (obj !== undefined) { - for (var _i = 0, _Object$entries = Object.entries(value); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), - entry = _Object$entries$_i[0], - val = _Object$entries$_i[1]; - - if (obj[entry] !== val) { - modified = true; - obj[entry] = val; - } - } - } else { - this._storage.set(key, value); - - modified = true; - } - - if (modified) { - this._setModified(); - } - } - }, { - key: "getAll", - value: function getAll() { - return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null; - } - }, { - key: "size", - get: function get() { - return this._storage.size; - } - }, { - key: "_setModified", - value: function _setModified() { - if (!this._modified) { - this._modified = true; - - if (typeof this.onSetModified === "function") { - this.onSetModified(); - } - } - } - }, { - key: "resetModified", - value: function resetModified() { - if (this._modified) { - this._modified = false; - - if (typeof this.onResetModified === "function") { - this.onResetModified(); - } - } - } - }, { - key: "serializable", - get: function get() { - return this._storage.size > 0 ? this._storage : null; - } - }]); - - return AnnotationStorage; - }(); - - exports.AnnotationStorage = AnnotationStorage; - - /***/ - }), - /* 129 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.apiCompatibilityParams = void 0; - - var _is_node = __w_pdfjs_require__(6); - - var compatibilityParams = Object.create(null); - { - (function checkFontFace() { - if (_is_node.isNodeJS) { - compatibilityParams.disableFontFace = true; - } - })(); - } - var apiCompatibilityParams = Object.freeze(compatibilityParams); - exports.apiCompatibilityParams = apiCompatibilityParams; - - /***/ - }), - /* 130 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.CanvasGraphics = void 0; - - var _util = __w_pdfjs_require__(4); - - var _pattern_helper = __w_pdfjs_require__(131); - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - var MIN_FONT_SIZE = 16; - var MAX_FONT_SIZE = 100; - var MAX_GROUP_SIZE = 4096; - var COMPILE_TYPE3_GLYPHS = true; - var MAX_SIZE_TO_COMPILE = 1000; - var FULL_CHUNK_HEIGHT = 16; - var LINEWIDTH_SCALE_FACTOR = 1.000001; - - function addContextCurrentTransform(ctx) { - if (!ctx.mozCurrentTransform) { - ctx._originalSave = ctx.save; - ctx._originalRestore = ctx.restore; - ctx._originalRotate = ctx.rotate; - ctx._originalScale = ctx.scale; - ctx._originalTranslate = ctx.translate; - ctx._originalTransform = ctx.transform; - ctx._originalSetTransform = ctx.setTransform; - ctx._originalResetTransform = ctx.resetTransform; - ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; - ctx._transformStack = []; - - try { - var desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth"); - ctx._setLineWidth = desc.set; - ctx._getLineWidth = desc.get; - Object.defineProperty(ctx, "lineWidth", { - set: function setLineWidth(width) { - this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR); - }, - get: function getLineWidth() { - return this._getLineWidth(); - } - }); - } catch (_) { - } - - Object.defineProperty(ctx, "mozCurrentTransform", { - get: function getCurrentTransform() { - return this._transformMatrix; - } - }); - Object.defineProperty(ctx, "mozCurrentTransformInverse", { - get: function getCurrentTransformInverse() { - var m = this._transformMatrix; - var a = m[0], - b = m[1], - c = m[2], - d = m[3], - e = m[4], - f = m[5]; - var ad_bc = a * d - b * c; - var bc_ad = b * c - a * d; - return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc]; - } - }); - - ctx.save = function ctxSave() { - var old = this._transformMatrix; - - this._transformStack.push(old); - - this._transformMatrix = old.slice(0, 6); - - this._originalSave(); - }; - - ctx.restore = function ctxRestore() { - var prev = this._transformStack.pop(); - - if (prev) { - this._transformMatrix = prev; - - this._originalRestore(); - } - }; - - ctx.translate = function ctxTranslate(x, y) { - var m = this._transformMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - - this._originalTranslate(x, y); - }; - - ctx.scale = function ctxScale(x, y) { - var m = this._transformMatrix; - m[0] = m[0] * x; - m[1] = m[1] * x; - m[2] = m[2] * y; - m[3] = m[3] * y; - - this._originalScale(x, y); - }; - - ctx.transform = function ctxTransform(a, b, c, d, e, f) { - var m = this._transformMatrix; - this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]]; - - ctx._originalTransform(a, b, c, d, e, f); - }; - - ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { - this._transformMatrix = [a, b, c, d, e, f]; - - ctx._originalSetTransform(a, b, c, d, e, f); - }; - - ctx.resetTransform = function ctxResetTransform() { - this._transformMatrix = [1, 0, 0, 1, 0, 0]; - - ctx._originalResetTransform(); - }; - - ctx.rotate = function ctxRotate(angle) { - var cosValue = Math.cos(angle); - var sinValue = Math.sin(angle); - var m = this._transformMatrix; - this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]]; - - this._originalRotate(angle); - }; - } - } - - var CachedCanvases = function CachedCanvasesClosure() { - function CachedCanvases(canvasFactory) { - this.canvasFactory = canvasFactory; - this.cache = Object.create(null); - } - - CachedCanvases.prototype = { - getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) { - var canvasEntry; - - if (this.cache[id] !== undefined) { - canvasEntry = this.cache[id]; - this.canvasFactory.reset(canvasEntry, width, height); - canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); - } else { - canvasEntry = this.canvasFactory.create(width, height); - this.cache[id] = canvasEntry; - } - - if (trackTransform) { - addContextCurrentTransform(canvasEntry.context); - } - - return canvasEntry; - }, - clear: function clear() { - for (var id in this.cache) { - var canvasEntry = this.cache[id]; - this.canvasFactory.destroy(canvasEntry); - delete this.cache[id]; - } - } - }; - return CachedCanvases; - }(); - - function compileType3Glyph(imgData) { - var POINT_TO_PROCESS_LIMIT = 1000; - var width = imgData.width, - height = imgData.height, - width1 = width + 1; - var i, ii, j, j0; - var points = new Uint8Array(width1 * (height + 1)); - var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); - var lineSize = width + 7 & ~7, - data0 = imgData.data; - var data = new Uint8Array(lineSize * height); - var pos = 0; - - for (i = 0, ii = data0.length; i < ii; i++) { - var elem = data0[i]; - var mask = 128; - - while (mask > 0) { - data[pos++] = elem & mask ? 0 : 255; - mask >>= 1; - } - } - - var count = 0; - pos = 0; - - if (data[pos] !== 0) { - points[0] = 1; - ++count; - } - - for (j = 1; j < width; j++) { - if (data[pos] !== data[pos + 1]) { - points[j] = data[pos] ? 2 : 1; - ++count; - } - - pos++; - } - - if (data[pos] !== 0) { - points[j] = 2; - ++count; - } - - for (i = 1; i < height; i++) { - pos = i * lineSize; - j0 = i * width1; - - if (data[pos - lineSize] !== data[pos]) { - points[j0] = data[pos] ? 1 : 8; - ++count; - } - - var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); - - for (j = 1; j < width; j++) { - sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); - - if (POINT_TYPES[sum]) { - points[j0 + j] = POINT_TYPES[sum]; - ++count; - } - - pos++; - } - - if (data[pos - lineSize] !== data[pos]) { - points[j0 + j] = data[pos] ? 2 : 4; - ++count; - } - - if (count > POINT_TO_PROCESS_LIMIT) { - return null; - } - } - - pos = lineSize * (height - 1); - j0 = i * width1; - - if (data[pos] !== 0) { - points[j0] = 8; - ++count; - } - - for (j = 1; j < width; j++) { - if (data[pos] !== data[pos + 1]) { - points[j0 + j] = data[pos] ? 4 : 8; - ++count; - } - - pos++; - } - - if (data[pos] !== 0) { - points[j0 + j] = 4; - ++count; - } - - if (count > POINT_TO_PROCESS_LIMIT) { - return null; - } - - var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); - var outlines = []; - - for (i = 0; count && i <= height; i++) { - var p = i * width1; - var end = p + width; - - while (p < end && !points[p]) { - p++; - } - - if (p === end) { - continue; - } - - var coords = [p % width1, i]; - var p0 = p; - var type = points[p]; - - do { - var step = steps[type]; - - do { - p += step; - } while (!points[p]); - - var pp = points[p]; - - if (pp !== 5 && pp !== 10) { - type = pp; - points[p] = 0; - } else { - type = pp & 0x33 * type >> 4; - points[p] &= type >> 2 | type << 2; - } - - coords.push(p % width1); - coords.push(p / width1 | 0); - - if (!points[p]) { - --count; - } - } while (p0 !== p); - - outlines.push(coords); - --i; - } - - var drawOutline = function drawOutline(c) { - c.save(); - c.scale(1 / width, -1 / height); - c.translate(0, -height); - c.beginPath(); - - for (var k = 0, kk = outlines.length; k < kk; k++) { - var o = outlines[k]; - c.moveTo(o[0], o[1]); - - for (var l = 2, ll = o.length; l < ll; l += 2) { - c.lineTo(o[l], o[l + 1]); - } - } - - c.fill(); - c.beginPath(); - c.restore(); - }; - - return drawOutline; - } - - var CanvasExtraState = function CanvasExtraStateClosure() { - function CanvasExtraState() { - this.alphaIsShape = false; - this.fontSize = 0; - this.fontSizeScale = 1; - this.textMatrix = _util.IDENTITY_MATRIX; - this.textMatrixScale = 1; - this.fontMatrix = _util.FONT_IDENTITY_MATRIX; - this.leading = 0; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRenderingMode = _util.TextRenderingMode.FILL; - this.textRise = 0; - this.fillColor = "#000000"; - this.strokeColor = "#000000"; - this.patternFill = false; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.activeSMask = null; - this.resumeSMaskCtx = null; - this.transferMaps = null; - } - - CanvasExtraState.prototype = { - clone: function CanvasExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - }; - return CanvasExtraState; - }(); - - var CanvasGraphics = function CanvasGraphicsClosure() { - var EXECUTION_TIME = 15; - var EXECUTION_STEPS = 10; - - function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer, optionalContentConfig) { - this.ctx = canvasCtx; - this.current = new CanvasExtraState(); - this.stateStack = []; - this.pendingClip = null; - this.pendingEOFill = false; - this.res = null; - this.xobjs = null; - this.commonObjs = commonObjs; - this.objs = objs; - this.canvasFactory = canvasFactory; - this.webGLContext = webGLContext; - this.imageLayer = imageLayer; - this.groupStack = []; - this.processingType3 = null; - this.baseTransform = null; - this.baseTransformStack = []; - this.groupLevel = 0; - this.smaskStack = []; - this.smaskCounter = 0; - this.tempSMask = null; - this.contentVisible = true; - this.markedContentStack = []; - this.optionalContentConfig = optionalContentConfig; - this.cachedCanvases = new CachedCanvases(this.canvasFactory); - - if (canvasCtx) { - addContextCurrentTransform(canvasCtx); - } - - this._cachedGetSinglePixelWidth = null; - } - - function putBinaryImageData(ctx, imgData) { - var transferMaps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { - ctx.putImageData(imgData, 0, 0); - return; - } - - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0, - destPos; - var src = imgData.data; - var dest = chunkImgData.data; - var i, j, thisChunkHeight, elemsInThisChunk; - var transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; - - if (transferMaps) { - switch (transferMaps.length) { - case 1: - transferMapRed = transferMaps[0]; - transferMapGreen = transferMaps[0]; - transferMapBlue = transferMaps[0]; - transferMapGray = transferMaps[0]; - break; - - case 4: - transferMapRed = transferMaps[0]; - transferMapGreen = transferMaps[1]; - transferMapBlue = transferMaps[2]; - transferMapGray = transferMaps[3]; - break; - } - } - - if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { - var srcLength = src.byteLength; - var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); - var dest32DataLength = dest32.length; - var fullSrcDiff = width + 7 >> 3; - var white = 0xffffffff; - var black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff; - - if (transferMapGray) { - if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { - var _ref = [black, white]; - white = _ref[0]; - black = _ref[1]; - } - } - - for (i = 0; i < totalChunks; i++) { - thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - destPos = 0; - - for (j = 0; j < thisChunkHeight; j++) { - var srcDiff = srcLength - srcPos; - var k = 0; - var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; - var kEndUnrolled = kEnd & ~7; - var mask = 0; - var srcByte = 0; - - for (; k < kEndUnrolled; k += 8) { - srcByte = src[srcPos++]; - dest32[destPos++] = srcByte & 128 ? white : black; - dest32[destPos++] = srcByte & 64 ? white : black; - dest32[destPos++] = srcByte & 32 ? white : black; - dest32[destPos++] = srcByte & 16 ? white : black; - dest32[destPos++] = srcByte & 8 ? white : black; - dest32[destPos++] = srcByte & 4 ? white : black; - dest32[destPos++] = srcByte & 2 ? white : black; - dest32[destPos++] = srcByte & 1 ? white : black; - } - - for (; k < kEnd; k++) { - if (mask === 0) { - srcByte = src[srcPos++]; - mask = 128; - } - - dest32[destPos++] = srcByte & mask ? white : black; - mask >>= 1; - } - } - - while (destPos < dest32DataLength) { - dest32[destPos++] = 0; - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { - var hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); - j = 0; - elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; - - for (i = 0; i < fullChunks; i++) { - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - srcPos += elemsInThisChunk; - - if (hasTransferMaps) { - for (var _k = 0; _k < elemsInThisChunk; _k += 4) { - if (transferMapRed) { - dest[_k + 0] = transferMapRed[dest[_k + 0]]; - } - - if (transferMapGreen) { - dest[_k + 1] = transferMapGreen[dest[_k + 1]]; - } - - if (transferMapBlue) { - dest[_k + 2] = transferMapBlue[dest[_k + 2]]; - } - } - } - - ctx.putImageData(chunkImgData, 0, j); - j += FULL_CHUNK_HEIGHT; - } - - if (i < totalChunks) { - elemsInThisChunk = width * partialChunkHeight * 4; - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - - if (hasTransferMaps) { - for (var _k2 = 0; _k2 < elemsInThisChunk; _k2 += 4) { - if (transferMapRed) { - dest[_k2 + 0] = transferMapRed[dest[_k2 + 0]]; - } - - if (transferMapGreen) { - dest[_k2 + 1] = transferMapGreen[dest[_k2 + 1]]; - } - - if (transferMapBlue) { - dest[_k2 + 2] = transferMapBlue[dest[_k2 + 2]]; - } - } - } - - ctx.putImageData(chunkImgData, 0, j); - } - } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { - var _hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); - - thisChunkHeight = FULL_CHUNK_HEIGHT; - elemsInThisChunk = width * thisChunkHeight; - - for (i = 0; i < totalChunks; i++) { - if (i >= fullChunks) { - thisChunkHeight = partialChunkHeight; - elemsInThisChunk = width * thisChunkHeight; - } - - destPos = 0; - - for (j = elemsInThisChunk; j--;) { - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = 255; - } - - if (_hasTransferMaps) { - for (var _k3 = 0; _k3 < destPos; _k3 += 4) { - if (transferMapRed) { - dest[_k3 + 0] = transferMapRed[dest[_k3 + 0]]; - } - - if (transferMapGreen) { - dest[_k3 + 1] = transferMapGreen[dest[_k3 + 1]]; - } - - if (transferMapBlue) { - dest[_k3 + 2] = transferMapBlue[dest[_k3 + 2]]; - } - } - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else { - throw new Error("bad image kind: ".concat(imgData.kind)); - } - } - - function putBinaryImageMask(ctx, imgData) { - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0; - var src = imgData.data; - var dest = chunkImgData.data; - - for (var i = 0; i < totalChunks; i++) { - var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - var destPos = 3; - - for (var j = 0; j < thisChunkHeight; j++) { - var elem = void 0, - mask = 0; - - for (var k = 0; k < width; k++) { - if (!mask) { - elem = src[srcPos++]; - mask = 128; - } - - dest[destPos] = elem & mask ? 0 : 255; - destPos += 4; - mask >>= 1; - } - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } - - function copyCtxState(sourceCtx, destCtx) { - var properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; - - for (var i = 0, ii = properties.length; i < ii; i++) { - var property = properties[i]; - - if (sourceCtx[property] !== undefined) { - destCtx[property] = sourceCtx[property]; - } - } - - if (sourceCtx.setLineDash !== undefined) { - destCtx.setLineDash(sourceCtx.getLineDash()); - destCtx.lineDashOffset = sourceCtx.lineDashOffset; - } - } - - function resetCtxToDefault(ctx) { - ctx.strokeStyle = "#000000"; - ctx.fillStyle = "#000000"; - ctx.fillRule = "nonzero"; - ctx.globalAlpha = 1; - ctx.lineWidth = 1; - ctx.lineCap = "butt"; - ctx.lineJoin = "miter"; - ctx.miterLimit = 10; - ctx.globalCompositeOperation = "source-over"; - ctx.font = "10px sans-serif"; - - if (ctx.setLineDash !== undefined) { - ctx.setLineDash([]); - ctx.lineDashOffset = 0; - } - } - - function composeSMaskBackdrop(bytes, r0, g0, b0) { - var length = bytes.length; - - for (var i = 3; i < length; i += 4) { - var alpha = bytes[i]; - - if (alpha === 0) { - bytes[i - 3] = r0; - bytes[i - 2] = g0; - bytes[i - 1] = b0; - } else if (alpha < 255) { - var alpha_ = 255 - alpha; - bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; - bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; - bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; - } - } - } - - function composeSMaskAlpha(maskData, layerData, transferMap) { - var length = maskData.length; - var scale = 1 / 255; - - for (var i = 3; i < length; i += 4) { - var alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; - layerData[i] = layerData[i] * alpha * scale | 0; - } - } - - function composeSMaskLuminosity(maskData, layerData, transferMap) { - var length = maskData.length; - - for (var i = 3; i < length; i += 4) { - var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; - layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; - } - } - - function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) { - var hasBackdrop = !!backdrop; - var r0 = hasBackdrop ? backdrop[0] : 0; - var g0 = hasBackdrop ? backdrop[1] : 0; - var b0 = hasBackdrop ? backdrop[2] : 0; - var composeFn; - - if (subtype === "Luminosity") { - composeFn = composeSMaskLuminosity; - } else { - composeFn = composeSMaskAlpha; - } - - var PIXELS_TO_PROCESS = 1048576; - var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); - - for (var row = 0; row < height; row += chunkSize) { - var chunkHeight = Math.min(chunkSize, height - row); - var maskData = maskCtx.getImageData(0, row, width, chunkHeight); - var layerData = layerCtx.getImageData(0, row, width, chunkHeight); - - if (hasBackdrop) { - composeSMaskBackdrop(maskData.data, r0, g0, b0); - } - - composeFn(maskData.data, layerData.data, transferMap); - maskCtx.putImageData(layerData, 0, row); - } - } - - function composeSMask(ctx, smask, layerCtx, webGLContext) { - var mask = smask.canvas; - var maskCtx = smask.context; - ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); - var backdrop = smask.backdrop || null; - - if (!smask.transferMap && webGLContext.isEnabled) { - var composed = webGLContext.composeSMask({ - layer: layerCtx.canvas, - mask: mask, - properties: { - subtype: smask.subtype, - backdrop: backdrop - } - }); - ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.drawImage(composed, smask.offsetX, smask.offsetY); - return; - } - - genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap); - ctx.drawImage(mask, 0, 0); - } - - var LINE_CAP_STYLES = ["butt", "round", "square"]; - var LINE_JOIN_STYLES = ["miter", "round", "bevel"]; - var NORMAL_CLIP = {}; - var EO_CLIP = {}; - CanvasGraphics.prototype = { - beginDrawing: function beginDrawing(_ref2) { - var transform = _ref2.transform, - viewport = _ref2.viewport, - _ref2$transparency = _ref2.transparency, - transparency = _ref2$transparency === void 0 ? false : _ref2$transparency, - _ref2$background = _ref2.background, - background = _ref2$background === void 0 ? null : _ref2$background; - var width = this.ctx.canvas.width; - var height = this.ctx.canvas.height; - this.ctx.save(); - this.ctx.fillStyle = background || "rgb(255, 255, 255)"; - this.ctx.fillRect(0, 0, width, height); - this.ctx.restore(); - - if (transparency) { - var transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true); - this.compositeCtx = this.ctx; - this.transparentCanvas = transparentCanvas.canvas; - this.ctx = transparentCanvas.context; - this.ctx.save(); - this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform); - } - - this.ctx.save(); - resetCtxToDefault(this.ctx); - - if (transform) { - this.ctx.transform.apply(this.ctx, transform); - } - - this.ctx.transform.apply(this.ctx, viewport.transform); - this.baseTransform = this.ctx.mozCurrentTransform.slice(); - this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]); - - if (this.imageLayer) { - this.imageLayer.beginLayout(); - } - }, - executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var i = executionStartIdx || 0; - var argsArrayLen = argsArray.length; - - if (argsArrayLen === i) { - return i; - } - - var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; - var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; - var steps = 0; - var commonObjs = this.commonObjs; - var objs = this.objs; - var fnId; - - while (true) { - if (stepper !== undefined && i === stepper.nextBreakPoint) { - stepper.breakIt(i, continueCallback); - return i; - } - - fnId = fnArray[i]; - - if (fnId !== _util.OPS.dependency) { - this[fnId].apply(this, argsArray[i]); - } else { - var _iterator = _createForOfIteratorHelper(argsArray[i]), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var depObjId = _step.value; - var objsPool = depObjId.startsWith("g_") ? commonObjs : objs; - - if (!objsPool.has(depObjId)) { - objsPool.get(depObjId, continueCallback); - return i; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - - i++; - - if (i === argsArrayLen) { - return i; - } - - if (chunkOperations && ++steps > EXECUTION_STEPS) { - if (Date.now() > endTime) { - continueCallback(); - return i; - } - - steps = 0; - } - } - }, - endDrawing: function CanvasGraphics_endDrawing() { - while (this.stateStack.length || this.current.activeSMask !== null) { - this.restore(); - } - - this.ctx.restore(); - - if (this.transparentCanvas) { - this.ctx = this.compositeCtx; - this.ctx.save(); - this.ctx.setTransform(1, 0, 0, 1, 0, 0); - this.ctx.drawImage(this.transparentCanvas, 0, 0); - this.ctx.restore(); - this.transparentCanvas = null; - } - - this.cachedCanvases.clear(); - this.webGLContext.clear(); - - if (this.imageLayer) { - this.imageLayer.endLayout(); - } - }, - setLineWidth: function CanvasGraphics_setLineWidth(width) { - this.current.lineWidth = width; - this.ctx.lineWidth = width; - }, - setLineCap: function CanvasGraphics_setLineCap(style) { - this.ctx.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function CanvasGraphics_setLineJoin(style) { - this.ctx.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function CanvasGraphics_setMiterLimit(limit) { - this.ctx.miterLimit = limit; - }, - setDash: function CanvasGraphics_setDash(dashArray, dashPhase) { - var ctx = this.ctx; - - if (ctx.setLineDash !== undefined) { - ctx.setLineDash(dashArray); - ctx.lineDashOffset = dashPhase; - } - }, - setRenderingIntent: function setRenderingIntent(intent) { - }, - setFlatness: function setFlatness(flatness) { - }, - setGState: function CanvasGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - - switch (key) { - case "LW": - this.setLineWidth(value); - break; - - case "LC": - this.setLineCap(value); - break; - - case "LJ": - this.setLineJoin(value); - break; - - case "ML": - this.setMiterLimit(value); - break; - - case "D": - this.setDash(value[0], value[1]); - break; - - case "RI": - this.setRenderingIntent(value); - break; - - case "FL": - this.setFlatness(value); - break; - - case "Font": - this.setFont(value[0], value[1]); - break; - - case "CA": - this.current.strokeAlpha = state[1]; - break; - - case "ca": - this.current.fillAlpha = state[1]; - this.ctx.globalAlpha = state[1]; - break; - - case "BM": - this.ctx.globalCompositeOperation = value; - break; - - case "SMask": - if (this.current.activeSMask) { - if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) { - this.suspendSMaskGroup(); - } else { - this.endSMaskGroup(); - } - } - - this.current.activeSMask = value ? this.tempSMask : null; - - if (this.current.activeSMask) { - this.beginSMaskGroup(); - } - - this.tempSMask = null; - break; - - case "TR": - this.current.transferMaps = value; - } - } - }, - beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() { - var activeSMask = this.current.activeSMask; - var drawnWidth = activeSMask.canvas.width; - var drawnHeight = activeSMask.canvas.height; - var cacheId = "smaskGroupAt" + this.groupLevel; - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var currentCtx = this.ctx; - var currentTransform = currentCtx.mozCurrentTransform; - this.ctx.save(); - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY); - groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse; - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext); - this.ctx.restore(); - this.ctx.save(); - copyCtxState(groupCtx, this.ctx); - this.current.resumeSMaskCtx = groupCtx; - - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); - - this.ctx.transform.apply(this.ctx, deltaTransform); - groupCtx.save(); - groupCtx.setTransform(1, 0, 0, 1, 0, 0); - groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height); - groupCtx.restore(); - }, - resumeSMaskGroup: function CanvasGraphics_resumeSMaskGroup() { - var groupCtx = this.current.resumeSMaskCtx; - var currentCtx = this.ctx; - this.ctx = groupCtx; - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - endSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext); - this.ctx.restore(); - copyCtxState(groupCtx, this.ctx); - - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); - - this.ctx.transform.apply(this.ctx, deltaTransform); - }, - save: function CanvasGraphics_save() { - this.ctx.save(); - var old = this.current; - this.stateStack.push(old); - this.current = old.clone(); - this.current.resumeSMaskCtx = null; - }, - restore: function CanvasGraphics_restore() { - if (this.current.resumeSMaskCtx) { - this.resumeSMaskGroup(); - } - - if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) { - this.endSMaskGroup(); - } - - if (this.stateStack.length !== 0) { - this.current = this.stateStack.pop(); - this.ctx.restore(); - this.pendingClip = null; - this._cachedGetSinglePixelWidth = null; - } else { - this.current.activeSMask = null; - } - }, - transform: function CanvasGraphics_transform(a, b, c, d, e, f) { - this.ctx.transform(a, b, c, d, e, f); - this._cachedGetSinglePixelWidth = null; - }, - constructPath: function CanvasGraphics_constructPath(ops, args) { - var ctx = this.ctx; - var current = this.current; - var x = current.x, - y = current.y; - - for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { - switch (ops[i] | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - ctx.moveTo(x, y); - - if (width === 0 || height === 0) { - ctx.lineTo(xw, yh); - } else { - ctx.lineTo(xw, y); - ctx.lineTo(xw, yh); - ctx.lineTo(x, yh); - } - - ctx.closePath(); - break; - - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - ctx.moveTo(x, y); - break; - - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - ctx.lineTo(x, y); - break; - - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); - j += 6; - break; - - case _util.OPS.curveTo2: - ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); - x = args[j + 2]; - y = args[j + 3]; - j += 4; - break; - - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); - j += 4; - break; - - case _util.OPS.closePath: - ctx.closePath(); - break; - } - } - - current.setCurrentPoint(x, y); - }, - closePath: function CanvasGraphics_closePath() { - this.ctx.closePath(); - }, - stroke: function CanvasGraphics_stroke(consumePath) { - consumePath = typeof consumePath !== "undefined" ? consumePath : true; - var ctx = this.ctx; - var strokeColor = this.current.strokeColor; - ctx.globalAlpha = this.current.strokeAlpha; - - if (this.contentVisible) { - if (_typeof(strokeColor) === "object" && strokeColor !== null && strokeColor !== void 0 && strokeColor.getPattern) { - ctx.save(); - var transform = ctx.mozCurrentTransform; - - var scale = _util.Util.singularValueDecompose2dScale(transform)[0]; - - ctx.strokeStyle = strokeColor.getPattern(ctx, this); - var lineWidth = this.getSinglePixelWidth(); - var scaledLineWidth = this.current.lineWidth * scale; - - if (lineWidth < 0 && -lineWidth >= scaledLineWidth) { - ctx.resetTransform(); - ctx.lineWidth = Math.round(this._combinedScaleFactor); - } else { - ctx.lineWidth = Math.max(lineWidth, scaledLineWidth); - } - - ctx.stroke(); - ctx.restore(); - } else { - var _lineWidth = this.getSinglePixelWidth(); - - if (_lineWidth < 0 && -_lineWidth >= this.current.lineWidth) { - ctx.save(); - ctx.resetTransform(); - ctx.lineWidth = Math.round(this._combinedScaleFactor); - ctx.stroke(); - ctx.restore(); - } else { - ctx.lineWidth = Math.max(_lineWidth, this.current.lineWidth); - ctx.stroke(); - } - } - } - - if (consumePath) { - this.consumePath(); - } - - ctx.globalAlpha = this.current.fillAlpha; - }, - closeStroke: function CanvasGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - fill: function CanvasGraphics_fill(consumePath) { - consumePath = typeof consumePath !== "undefined" ? consumePath : true; - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var needRestore = false; - - if (isPatternFill) { - ctx.save(); - - if (this.baseTransform) { - ctx.setTransform.apply(ctx, this.baseTransform); - } - - ctx.fillStyle = fillColor.getPattern(ctx, this); - needRestore = true; - } - - if (this.contentVisible) { - if (this.pendingEOFill) { - ctx.fill("evenodd"); - this.pendingEOFill = false; - } else { - ctx.fill(); - } - } - - if (needRestore) { - ctx.restore(); - } - - if (consumePath) { - this.consumePath(); - } - }, - eoFill: function CanvasGraphics_eoFill() { - this.pendingEOFill = true; - this.fill(); - }, - fillStroke: function CanvasGraphics_fillStroke() { - this.fill(false); - this.stroke(false); - this.consumePath(); - }, - eoFillStroke: function CanvasGraphics_eoFillStroke() { - this.pendingEOFill = true; - this.fillStroke(); - }, - closeFillStroke: function CanvasGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() { - this.pendingEOFill = true; - this.closePath(); - this.fillStroke(); - }, - endPath: function CanvasGraphics_endPath() { - this.consumePath(); - }, - clip: function CanvasGraphics_clip() { - this.pendingClip = NORMAL_CLIP; - }, - eoClip: function CanvasGraphics_eoClip() { - this.pendingClip = EO_CLIP; - }, - beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = _util.IDENTITY_MATRIX; - this.current.textMatrixScale = 1; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - endText: function CanvasGraphics_endText() { - var paths = this.pendingTextPaths; - var ctx = this.ctx; - - if (paths === undefined) { - ctx.beginPath(); - return; - } - - ctx.save(); - ctx.beginPath(); - - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - ctx.setTransform.apply(ctx, path.transform); - ctx.translate(path.x, path.y); - path.addToPath(ctx, path.fontSize); - } - - ctx.restore(); - ctx.clip(); - ctx.beginPath(); - delete this.pendingTextPaths; - }, - setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) { - this.current.charSpacing = spacing; - }, - setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) { - this.current.wordSpacing = spacing; - }, - setHScale: function CanvasGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setLeading: function CanvasGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setFont: function CanvasGraphics_setFont(fontRefName, size) { - var fontObj = this.commonObjs.get(fontRefName); - var current = this.current; - - if (!fontObj) { - throw new Error("Can't find font for ".concat(fontRefName)); - } - - current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; - - if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { - (0, _util.warn)("Invalid font matrix for font " + fontRefName); - } - - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - - this.current.font = fontObj; - this.current.fontSize = size; - - if (fontObj.isType3Font) { - return; - } - - var name = fontObj.loadedName || "sans-serif"; - var bold = "normal"; - - if (fontObj.black) { - bold = "900"; - } else if (fontObj.bold) { - bold = "bold"; - } - - var italic = fontObj.italic ? "italic" : "normal"; - var typeface = "\"".concat(name, "\", ").concat(fontObj.fallbackName); - var browserFontSize = size; - - if (size < MIN_FONT_SIZE) { - browserFontSize = MIN_FONT_SIZE; - } else if (size > MAX_FONT_SIZE) { - browserFontSize = MAX_FONT_SIZE; - } - - this.current.fontSizeScale = size / browserFontSize; - this.ctx.font = "".concat(italic, " ").concat(bold, " ").concat(browserFontSize, "px ").concat(typeface); - }, - setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) { - this.current.textRenderingMode = mode; - }, - setTextRise: function CanvasGraphics_setTextRise(rise) { - this.current.textRise = rise; - }, - moveText: function CanvasGraphics_moveText(x, y) { - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - }, - setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) { - this.current.textMatrix = [a, b, c, d, e, f]; - this.current.textMatrixScale = Math.hypot(a, b); - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - nextLine: function CanvasGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - paintChar: function paintChar(character, x, y, patternTransform, resetLineWidthToOne) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var textRenderingMode = current.textRenderingMode; - var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); - var patternFill = current.patternFill && !font.missingFile; - var addToPath; - - if (font.disableFontFace || isAddToPathSet || patternFill) { - addToPath = font.getPathGenerator(this.commonObjs, character); - } - - if (font.disableFontFace || patternFill) { - ctx.save(); - ctx.translate(x, y); - ctx.beginPath(); - addToPath(ctx, fontSize); - - if (patternTransform) { - ctx.setTransform.apply(ctx, patternTransform); - } - - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fill(); - } - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - if (resetLineWidthToOne) { - ctx.resetTransform(); - ctx.lineWidth = Math.round(this._combinedScaleFactor); - } - - ctx.stroke(); - } - - ctx.restore(); - } else { - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fillText(character, x, y); - } - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - if (resetLineWidthToOne) { - ctx.save(); - ctx.moveTo(x, y); - ctx.resetTransform(); - ctx.lineWidth = Math.round(this._combinedScaleFactor); - ctx.strokeText(character, 0, 0); - ctx.restore(); - } else { - ctx.strokeText(character, x, y); - } - } - } - - if (isAddToPathSet) { - var paths = this.pendingTextPaths || (this.pendingTextPaths = []); - paths.push({ - transform: ctx.mozCurrentTransform, - x: x, - y: y, - fontSize: fontSize, - addToPath: addToPath - }); - } - }, - - get isFontSubpixelAAEnabled() { - var _this$cachedCanvases$ = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10), - ctx = _this$cachedCanvases$.context; - - ctx.scale(1.5, 1); - ctx.fillText("I", 0, 10); - var data = ctx.getImageData(0, 0, 10, 10).data; - var enabled = false; - - for (var i = 3; i < data.length; i += 4) { - if (data[i] > 0 && data[i] < 255) { - enabled = true; - break; - } - } - - return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); - }, - - showText: function CanvasGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - - if (font.isType3Font) { - return this.showType3Text(glyphs); - } - - var fontSize = current.fontSize; - - if (fontSize === 0) { - return undefined; - } - - var ctx = this.ctx; - var fontSizeScale = current.fontSizeScale; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var spacingDir = vertical ? 1 : -1; - var defaultVMetrics = font.defaultVMetrics; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; - ctx.save(); - var patternTransform; - - if (current.patternFill) { - ctx.save(); - var pattern = current.fillColor.getPattern(ctx, this); - patternTransform = ctx.mozCurrentTransform; - ctx.restore(); - ctx.fillStyle = pattern; - } - - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y + current.textRise); - - if (fontDirection > 0) { - ctx.scale(textHScale, -1); - } else { - ctx.scale(textHScale, 1); - } - - var lineWidth = current.lineWidth; - var resetLineWidthToOne = false; - var scale = current.textMatrixScale; - - if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - this._cachedGetSinglePixelWidth = null; - lineWidth = this.getSinglePixelWidth(); - resetLineWidthToOne = lineWidth < 0; - } - } else { - lineWidth /= scale; - } - - if (fontSizeScale !== 1.0) { - ctx.scale(fontSizeScale, fontSizeScale); - lineWidth /= fontSizeScale; - } - - ctx.lineWidth = lineWidth; - var x = 0, - i; - - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - - if ((0, _util.isNum)(glyph)) { - x += spacingDir * glyph * fontSize / 1000; - continue; - } - - var restoreNeeded = false; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var character = glyph.fontChar; - var accent = glyph.accent; - var scaledX = void 0, - scaledY = void 0; - var width = glyph.width; - - if (vertical) { - var vmetric = glyph.vmetric || defaultVMetrics; - var vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; - var vy = vmetric[2] * widthAdvanceScale; - width = vmetric ? -vmetric[0] : width; - scaledX = vx / fontSizeScale; - scaledY = (x + vy) / fontSizeScale; - } else { - scaledX = x / fontSizeScale; - scaledY = 0; - } - - if (font.remeasure && width > 0) { - var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; - - if (width < measuredWidth && this.isFontSubpixelAAEnabled) { - var characterScaleX = width / measuredWidth; - restoreNeeded = true; - ctx.save(); - ctx.scale(characterScaleX, 1); - scaledX /= characterScaleX; - } else if (width !== measuredWidth) { - scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; - } - } - - if (this.contentVisible && (glyph.isInFont || font.missingFile)) { - if (simpleFillText && !accent) { - ctx.fillText(character, scaledX, scaledY); - } else { - this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne); - - if (accent) { - var scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; - var scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; - this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne); - } - } - } - - var charWidth = void 0; - - if (vertical) { - charWidth = width * widthAdvanceScale - spacing * fontDirection; - } else { - charWidth = width * widthAdvanceScale + spacing * fontDirection; - } - - x += charWidth; - - if (restoreNeeded) { - ctx.restore(); - } - } - - if (vertical) { - current.y -= x; - } else { - current.x += x * textHScale; - } - - ctx.restore(); - }, - showType3Text: function CanvasGraphics_showType3Text(glyphs) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - var fontDirection = current.fontDirection; - var spacingDir = font.vertical ? 1 : -1; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; - var glyphsLength = glyphs.length; - var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; - var i, glyph, width, spacingLength; - - if (isTextInvisible || fontSize === 0) { - return; - } - - this._cachedGetSinglePixelWidth = null; - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y); - ctx.scale(textHScale, fontDirection); - - for (i = 0; i < glyphsLength; ++i) { - glyph = glyphs[i]; - - if ((0, _util.isNum)(glyph)) { - spacingLength = spacingDir * glyph * fontSize / 1000; - this.ctx.translate(spacingLength, 0); - current.x += spacingLength * textHScale; - continue; - } - - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var operatorList = font.charProcOperatorList[glyph.operatorListId]; - - if (!operatorList) { - (0, _util.warn)("Type3 character \"".concat(glyph.operatorListId, "\" is not available.")); - continue; - } - - if (this.contentVisible) { - this.processingType3 = glyph; - this.save(); - ctx.scale(fontSize, fontSize); - ctx.transform.apply(ctx, fontMatrix); - this.executeOperatorList(operatorList); - this.restore(); - } - - var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); - - width = transformed[0] * fontSize + spacing; - ctx.translate(width, 0); - current.x += width * textHScale; - } - - ctx.restore(); - this.processingType3 = null; - }, - setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) { - }, - setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { - this.ctx.rect(llx, lly, urx - llx, ury - lly); - this.clip(); - this.endPath(); - }, - getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) { - var _this = this; - - var pattern; - - if (IR[0] === "TilingPattern") { - var color = IR[1]; - var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); - var canvasGraphicsFactory = { - createCanvasGraphics: function createCanvasGraphics(ctx) { - return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory, _this.webGLContext); - } - }; - pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); - } else { - pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR); - } - - return pattern; - }, - setStrokeColorN: function CanvasGraphics_setStrokeColorN() { - this.current.strokeColor = this.getColorN_Pattern(arguments); - }, - setFillColorN: function CanvasGraphics_setFillColorN() { - this.current.fillColor = this.getColorN_Pattern(arguments); - this.current.patternFill = true; - }, - setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = _util.Util.makeHexColor(r, g, b); - - this.ctx.strokeStyle = color; - this.current.strokeColor = color; - }, - setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = _util.Util.makeHexColor(r, g, b); - - this.ctx.fillStyle = color; - this.current.fillColor = color; - this.current.patternFill = false; - }, - shadingFill: function CanvasGraphics_shadingFill(patternIR) { - if (!this.contentVisible) { - return; - } - - var ctx = this.ctx; - this.save(); - var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); - ctx.fillStyle = pattern.getPattern(ctx, this, true); - var inv = ctx.mozCurrentTransformInverse; - - if (inv) { - var canvas = ctx.canvas; - var width = canvas.width; - var height = canvas.height; - - var bl = _util.Util.applyTransform([0, 0], inv); - - var br = _util.Util.applyTransform([0, height], inv); - - var ul = _util.Util.applyTransform([width, 0], inv); - - var ur = _util.Util.applyTransform([width, height], inv); - - var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); - var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); - var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); - var y1 = Math.max(bl[1], br[1], ul[1], ur[1]); - this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); - } else { - this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); - } - - this.restore(); - }, - beginInlineImage: function CanvasGraphics_beginInlineImage() { - (0, _util.unreachable)("Should not call beginInlineImage"); - }, - beginImageData: function CanvasGraphics_beginImageData() { - (0, _util.unreachable)("Should not call beginImageData"); - }, - paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) { - if (!this.contentVisible) { - return; - } - - this.save(); - this.baseTransformStack.push(this.baseTransform); - - if (Array.isArray(matrix) && matrix.length === 6) { - this.transform.apply(this, matrix); - } - - this.baseTransform = this.ctx.mozCurrentTransform; - - if (bbox) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - this.ctx.rect(bbox[0], bbox[1], width, height); - this.clip(); - this.endPath(); - } - }, - paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() { - if (!this.contentVisible) { - return; - } - - this.restore(); - this.baseTransform = this.baseTransformStack.pop(); - }, - beginGroup: function CanvasGraphics_beginGroup(group) { - if (!this.contentVisible) { - return; - } - - this.save(); - var currentCtx = this.ctx; - - if (!group.isolated) { - (0, _util.info)("TODO: Support non-isolated groups."); - } - - if (group.knockout) { - (0, _util.warn)("Knockout groups not supported."); - } - - var currentTransform = currentCtx.mozCurrentTransform; - - if (group.matrix) { - currentCtx.transform.apply(currentCtx, group.matrix); - } - - if (!group.bbox) { - throw new Error("Bounding box is required."); - } - - var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); - - var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; - bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); - var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); - var scaleX = 1, - scaleY = 1; - - if (drawnWidth > MAX_GROUP_SIZE) { - scaleX = drawnWidth / MAX_GROUP_SIZE; - drawnWidth = MAX_GROUP_SIZE; - } - - if (drawnHeight > MAX_GROUP_SIZE) { - scaleY = drawnHeight / MAX_GROUP_SIZE; - drawnHeight = MAX_GROUP_SIZE; - } - - var cacheId = "groupAt" + this.groupLevel; - - if (group.smask) { - cacheId += "_smask_" + this.smaskCounter++ % 2; - } - - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / scaleX, 1 / scaleY); - groupCtx.translate(-offsetX, -offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - - if (group.smask) { - this.smaskStack.push({ - canvas: scratchCanvas.canvas, - context: groupCtx, - offsetX: offsetX, - offsetY: offsetY, - scaleX: scaleX, - scaleY: scaleY, - subtype: group.smask.subtype, - backdrop: group.smask.backdrop, - transferMap: group.smask.transferMap || null, - startTransformInverse: null - }); - } else { - currentCtx.setTransform(1, 0, 0, 1, 0, 0); - currentCtx.translate(offsetX, offsetY); - currentCtx.scale(scaleX, scaleY); - } - - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; - this.current.activeSMask = null; - }, - endGroup: function CanvasGraphics_endGroup(group) { - if (!this.contentVisible) { - return; - } - - this.groupLevel--; - var groupCtx = this.ctx; - this.ctx = this.groupStack.pop(); - - if (this.ctx.imageSmoothingEnabled !== undefined) { - this.ctx.imageSmoothingEnabled = false; - } else { - this.ctx.mozImageSmoothingEnabled = false; - } - - if (group.smask) { - this.tempSMask = this.smaskStack.pop(); - } else { - this.ctx.drawImage(groupCtx.canvas, 0, 0); - } - - this.restore(); - }, - beginAnnotations: function CanvasGraphics_beginAnnotations() { - this.save(); - - if (this.baseTransform) { - this.ctx.setTransform.apply(this.ctx, this.baseTransform); - } - }, - endAnnotations: function CanvasGraphics_endAnnotations() { - this.restore(); - }, - beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) { - this.save(); - resetCtxToDefault(this.ctx); - this.current = new CanvasExtraState(); - - if (Array.isArray(rect) && rect.length === 4) { - var width = rect[2] - rect[0]; - var height = rect[3] - rect[1]; - this.ctx.rect(rect[0], rect[1], width, height); - this.clip(); - this.endPath(); - } - - this.transform.apply(this, transform); - this.transform.apply(this, matrix); - }, - endAnnotation: function CanvasGraphics_endAnnotation() { - this.restore(); - }, - paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) { - if (!this.contentVisible) { - return; - } - - var ctx = this.ctx; - var width = img.width, - height = img.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var glyph = this.processingType3; - - if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) { - if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) { - glyph.compiled = compileType3Glyph({ - data: img.data, - width: width, - height: height - }); - } else { - glyph.compiled = null; - } - } - - if (glyph !== null && glyph !== void 0 && glyph.compiled) { - glyph.compiled(ctx); - return; - } - - var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, img); - maskCtx.globalCompositeOperation = "source-in"; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - this.paintInlineImageXObject(maskCanvas.canvas); - }, - paintImageMaskXObjectRepeat: function paintImageMaskXObjectRepeat(imgData, scaleX) { - var skewX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - var skewY = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; - var scaleY = arguments.length > 4 ? arguments[4] : undefined; - var positions = arguments.length > 5 ? arguments[5] : undefined; - - if (!this.contentVisible) { - return; - } - - var width = imgData.width; - var height = imgData.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, imgData); - maskCtx.globalCompositeOperation = "source-in"; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - var ctx = this.ctx; - - for (var i = 0, ii = positions.length; i < ii; i += 2) { - ctx.save(); - ctx.transform(scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - }, - paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) { - if (!this.contentVisible) { - return; - } - - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - - for (var i = 0, ii = images.length; i < ii; i++) { - var image = images[i]; - var width = image.width, - height = image.height; - var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, image); - maskCtx.globalCompositeOperation = "source-in"; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - ctx.save(); - ctx.transform.apply(ctx, image.transform); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - }, - paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { - if (!this.contentVisible) { - return; - } - - var imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); - - if (!imgData) { - (0, _util.warn)("Dependent image isn't ready yet"); - return; - } - - this.paintInlineImageXObject(imgData); - }, - paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { - if (!this.contentVisible) { - return; - } - - var imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); - - if (!imgData) { - (0, _util.warn)("Dependent image isn't ready yet"); - return; - } - - var width = imgData.width; - var height = imgData.height; - var map = []; - - for (var i = 0, ii = positions.length; i < ii; i += 2) { - map.push({ - transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], - x: 0, - y: 0, - w: width, - h: height - }); - } - - this.paintInlineImageXObjectGroup(imgData, map); - }, - paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) { - if (!this.contentVisible) { - return; - } - - var width = imgData.width; - var height = imgData.height; - var ctx = this.ctx; - this.save(); - ctx.scale(1 / width, -1 / height); - var currentTransform = ctx.mozCurrentTransformInverse; - var widthScale = Math.max(Math.hypot(currentTransform[0], currentTransform[1]), 1); - var heightScale = Math.max(Math.hypot(currentTransform[2], currentTransform[3]), 1); - var imgToPaint, tmpCanvas, tmpCtx; - - if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { - imgToPaint = imgData; - } else { - tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); - tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); - imgToPaint = tmpCanvas.canvas; - } - - var paintWidth = width, - paintHeight = height; - var tmpCanvasId = "prescale1"; - - while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { - var newWidth = paintWidth, - newHeight = paintHeight; - - if (widthScale > 2 && paintWidth > 1) { - newWidth = Math.ceil(paintWidth / 2); - widthScale /= paintWidth / newWidth; - } - - if (heightScale > 2 && paintHeight > 1) { - newHeight = Math.ceil(paintHeight / 2); - heightScale /= paintHeight / newHeight; - } - - tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); - tmpCtx = tmpCanvas.context; - tmpCtx.clearRect(0, 0, newWidth, newHeight); - tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); - imgToPaint = tmpCanvas.canvas; - paintWidth = newWidth; - paintHeight = newHeight; - tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; - } - - ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height); - - if (this.imageLayer) { - var position = this.getCanvasPosition(0, -height); - this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: width / currentTransform[0], - height: height / currentTransform[3] - }); - } - - this.restore(); - }, - paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) { - if (!this.contentVisible) { - return; - } - - var ctx = this.ctx; - var w = imgData.width; - var h = imgData.height; - var tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); - - for (var i = 0, ii = map.length; i < ii; i++) { - var entry = map[i]; - ctx.save(); - ctx.transform.apply(ctx, entry.transform); - ctx.scale(1, -1); - ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); - - if (this.imageLayer) { - var position = this.getCanvasPosition(entry.x, entry.y); - this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: w, - height: h - }); - } - - ctx.restore(); - } - }, - paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() { - if (!this.contentVisible) { - return; - } - - this.ctx.fillRect(0, 0, 1, 1); - }, - markPoint: function CanvasGraphics_markPoint(tag) { - }, - markPointProps: function CanvasGraphics_markPointProps(tag, properties) { - }, - beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) { - this.markedContentStack.push({ - visible: true - }); - }, - beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) { - if (tag === "OC") { - this.markedContentStack.push({ - visible: this.optionalContentConfig.isVisible(properties) - }); - } else { - this.markedContentStack.push({ - visible: true - }); - } - - this.contentVisible = this.isContentVisible(); - }, - endMarkedContent: function CanvasGraphics_endMarkedContent() { - this.markedContentStack.pop(); - this.contentVisible = this.isContentVisible(); - }, - beginCompat: function CanvasGraphics_beginCompat() { - }, - endCompat: function CanvasGraphics_endCompat() { - }, - consumePath: function CanvasGraphics_consumePath() { - var ctx = this.ctx; - - if (this.pendingClip) { - if (this.pendingClip === EO_CLIP) { - ctx.clip("evenodd"); - } else { - ctx.clip(); - } - - this.pendingClip = null; - } - - ctx.beginPath(); - }, - getSinglePixelWidth: function getSinglePixelWidth() { - if (this._cachedGetSinglePixelWidth === null) { - var m = this.ctx.mozCurrentTransform; - var absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); - var sqNorm1 = Math.pow(m[0], 2) + Math.pow(m[2], 2); - var sqNorm2 = Math.pow(m[1], 2) + Math.pow(m[3], 2); - var pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet; - - if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) { - this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight); - } else if (absDet > Number.EPSILON) { - this._cachedGetSinglePixelWidth = pixelHeight; - } else { - this._cachedGetSinglePixelWidth = 1; - } - } - - return this._cachedGetSinglePixelWidth; - }, - getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) { - var transform = this.ctx.mozCurrentTransform; - return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; - }, - isContentVisible: function CanvasGraphics_isContentVisible() { - for (var i = this.markedContentStack.length - 1; i >= 0; i--) { - if (!this.markedContentStack[i].visible) { - return false; - } - } - - return true; - } - }; - - for (var op in _util.OPS) { - CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; - } - - return CanvasGraphics; - }(); - - exports.CanvasGraphics = CanvasGraphics; - - /***/ - }), - /* 131 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.getShadingPatternFromIR = getShadingPatternFromIR; - exports.TilingPattern = void 0; - - var _util = __w_pdfjs_require__(4); - - var ShadingIRs = {}; - - function applyBoundingBox(ctx, bbox) { - if (!bbox || typeof Path2D === "undefined") { - return; - } - - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - var region = new Path2D(); - region.rect(bbox[0], bbox[1], width, height); - ctx.clip(region); - } - - ShadingIRs.RadialAxial = { - fromIR: function RadialAxial_fromIR(raw) { - var type = raw[1]; - var bbox = raw[2]; - var colorStops = raw[3]; - var p0 = raw[4]; - var p1 = raw[5]; - var r0 = raw[6]; - var r1 = raw[7]; - return { - getPattern: function RadialAxial_getPattern(ctx) { - applyBoundingBox(ctx, bbox); - var grad; - - if (type === "axial") { - grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); - } else if (type === "radial") { - grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); - } - - for (var i = 0, ii = colorStops.length; i < ii; ++i) { - var c = colorStops[i]; - grad.addColorStop(c[0], c[1]); - } - - return grad; - } - }; - } - }; - - var createMeshCanvas = function createMeshCanvasClosure() { - function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { - var coords = context.coords, - colors = context.colors; - var bytes = data.data, - rowSize = data.width * 4; - var tmp; - - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } - - if (coords[p2 + 1] > coords[p3 + 1]) { - tmp = p2; - p2 = p3; - p3 = tmp; - tmp = c2; - c2 = c3; - c3 = tmp; - } - - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } - - var x1 = (coords[p1] + context.offsetX) * context.scaleX; - var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; - var x2 = (coords[p2] + context.offsetX) * context.scaleX; - var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; - var x3 = (coords[p3] + context.offsetX) * context.scaleX; - var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; - - if (y1 >= y3) { - return; - } - - var c1r = colors[c1], - c1g = colors[c1 + 1], - c1b = colors[c1 + 2]; - var c2r = colors[c2], - c2g = colors[c2 + 1], - c2b = colors[c2 + 2]; - var c3r = colors[c3], - c3g = colors[c3 + 1], - c3b = colors[c3 + 2]; - var minY = Math.round(y1), - maxY = Math.round(y3); - var xa, car, cag, cab; - var xb, cbr, cbg, cbb; - - for (var y = minY; y <= maxY; y++) { - if (y < y2) { - var _k = void 0; - - if (y < y1) { - _k = 0; - } else if (y1 === y2) { - _k = 1; - } else { - _k = (y1 - y) / (y1 - y2); - } - - xa = x1 - (x1 - x2) * _k; - car = c1r - (c1r - c2r) * _k; - cag = c1g - (c1g - c2g) * _k; - cab = c1b - (c1b - c2b) * _k; - } else { - var _k2 = void 0; - - if (y > y3) { - _k2 = 1; - } else if (y2 === y3) { - _k2 = 0; - } else { - _k2 = (y2 - y) / (y2 - y3); - } - - xa = x2 - (x2 - x3) * _k2; - car = c2r - (c2r - c3r) * _k2; - cag = c2g - (c2g - c3g) * _k2; - cab = c2b - (c2b - c3b) * _k2; - } - - var k = void 0; - - if (y < y1) { - k = 0; - } else if (y > y3) { - k = 1; - } else { - k = (y1 - y) / (y1 - y3); - } - - xb = x1 - (x1 - x3) * k; - cbr = c1r - (c1r - c3r) * k; - cbg = c1g - (c1g - c3g) * k; - cbb = c1b - (c1b - c3b) * k; - var x1_ = Math.round(Math.min(xa, xb)); - var x2_ = Math.round(Math.max(xa, xb)); - var j = rowSize * y + x1_ * 4; - - for (var x = x1_; x <= x2_; x++) { - k = (xa - x) / (xa - xb); - - if (k < 0) { - k = 0; - } else if (k > 1) { - k = 1; - } - - bytes[j++] = car - (car - cbr) * k | 0; - bytes[j++] = cag - (cag - cbg) * k | 0; - bytes[j++] = cab - (cab - cbb) * k | 0; - bytes[j++] = 255; - } - } - } - - function drawFigure(data, figure, context) { - var ps = figure.coords; - var cs = figure.colors; - var i, ii; - - switch (figure.type) { - case "lattice": - var verticesPerRow = figure.verticesPerRow; - var rows = Math.floor(ps.length / verticesPerRow) - 1; - var cols = verticesPerRow - 1; - - for (i = 0; i < rows; i++) { - var q = i * verticesPerRow; - - for (var j = 0; j < cols; j++, q++) { - drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); - drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); - } - } - - break; - - case "triangles": - for (i = 0, ii = ps.length; i < ii; i += 3) { - drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); - } - - break; - - default: - throw new Error("illegal figure"); - } - } - - function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) { - var EXPECTED_SCALE = 1.1; - var MAX_PATTERN_SIZE = 3000; - var BORDER_SIZE = 2; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var boundsWidth = Math.ceil(bounds[2]) - offsetX; - var boundsHeight = Math.ceil(bounds[3]) - offsetY; - var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var scaleX = boundsWidth / width; - var scaleY = boundsHeight / height; - var context = { - coords: coords, - colors: colors, - offsetX: -offsetX, - offsetY: -offsetY, - scaleX: 1 / scaleX, - scaleY: 1 / scaleY - }; - var paddedWidth = width + BORDER_SIZE * 2; - var paddedHeight = height + BORDER_SIZE * 2; - var canvas, tmpCanvas, i, ii; - - if (webGLContext.isEnabled) { - canvas = webGLContext.drawFigures({ - width: width, - height: height, - backgroundColor: backgroundColor, - figures: figures, - context: context - }); - tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); - tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE); - canvas = tmpCanvas.canvas; - } else { - tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); - var tmpCtx = tmpCanvas.context; - var data = tmpCtx.createImageData(width, height); - - if (backgroundColor) { - var bytes = data.data; - - for (i = 0, ii = bytes.length; i < ii; i += 4) { - bytes[i] = backgroundColor[0]; - bytes[i + 1] = backgroundColor[1]; - bytes[i + 2] = backgroundColor[2]; - bytes[i + 3] = 255; - } - } - - for (i = 0; i < figures.length; i++) { - drawFigure(data, figures[i], context); - } - - tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); - canvas = tmpCanvas.canvas; - } - - return { - canvas: canvas, - offsetX: offsetX - BORDER_SIZE * scaleX, - offsetY: offsetY - BORDER_SIZE * scaleY, - scaleX: scaleX, - scaleY: scaleY - }; - } - - return createMeshCanvas; - }(); - - ShadingIRs.Mesh = { - fromIR: function Mesh_fromIR(raw) { - var coords = raw[2]; - var colors = raw[3]; - var figures = raw[4]; - var bounds = raw[5]; - var matrix = raw[6]; - var bbox = raw[7]; - var background = raw[8]; - return { - getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { - applyBoundingBox(ctx, bbox); - var scale; - - if (shadingFill) { - scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); - } else { - scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); - - if (matrix) { - var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); - - scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; - } - } - - var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext); - - if (!shadingFill) { - ctx.setTransform.apply(ctx, owner.baseTransform); - - if (matrix) { - ctx.transform.apply(ctx, matrix); - } - } - - ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); - ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); - return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); - } - }; - } - }; - ShadingIRs.Dummy = { - fromIR: function Dummy_fromIR() { - return { - getPattern: function Dummy_fromIR_getPattern() { - return "hotpink"; - } - }; - } - }; - - function getShadingPatternFromIR(raw) { - var shadingIR = ShadingIRs[raw[0]]; - - if (!shadingIR) { - throw new Error("Unknown IR type: ".concat(raw[0])); - } - - return shadingIR.fromIR(raw); - } - - var TilingPattern = function TilingPatternClosure() { - var PaintType = { - COLORED: 1, - UNCOLORED: 2 - }; - var MAX_PATTERN_SIZE = 3000; - - function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { - this.operatorList = IR[2]; - this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; - this.bbox = IR[4]; - this.xstep = IR[5]; - this.ystep = IR[6]; - this.paintType = IR[7]; - this.tilingType = IR[8]; - this.color = color; - this.canvasGraphicsFactory = canvasGraphicsFactory; - this.baseTransform = baseTransform; - this.ctx = ctx; - } - - TilingPattern.prototype = { - createPatternCanvas: function TilinPattern_createPatternCanvas(owner) { - var operatorList = this.operatorList; - var bbox = this.bbox; - var xstep = this.xstep; - var ystep = this.ystep; - var paintType = this.paintType; - var tilingType = this.tilingType; - var color = this.color; - var canvasGraphicsFactory = this.canvasGraphicsFactory; - (0, _util.info)("TilingType: " + tilingType); - var x0 = bbox[0], - y0 = bbox[1], - x1 = bbox[2], - y1 = bbox[3]; - - var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); - - var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); - - var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; - var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); - var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); - var tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); - var tmpCtx = tmpCanvas.context; - var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); - graphics.groupLevel = owner.groupLevel; - this.setFillAndStrokeStyleToContext(graphics, paintType, color); - graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); - graphics.transform(1, 0, 0, 1, -x0, -y0); - this.clipBbox(graphics, bbox, x0, y0, x1, y1); - graphics.executeOperatorList(operatorList); - this.ctx.transform(1, 0, 0, 1, x0, y0); - this.ctx.scale(1 / dimx.scale, 1 / dimy.scale); - return tmpCanvas.canvas; - }, - getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) { - step = Math.abs(step); - var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize); - var size = Math.ceil(step * scale); - - if (size >= maxSize) { - size = maxSize; - } else { - scale = size / step; - } - - return { - scale: scale, - size: size - }; - }, - clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { - if (Array.isArray(bbox) && bbox.length === 4) { - var bboxWidth = x1 - x0; - var bboxHeight = y1 - y0; - graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); - graphics.clip(); - graphics.endPath(); - } - }, - setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) { - var context = graphics.ctx, - current = graphics.current; - - switch (paintType) { - case PaintType.COLORED: - var ctx = this.ctx; - context.fillStyle = ctx.fillStyle; - context.strokeStyle = ctx.strokeStyle; - current.fillColor = ctx.fillStyle; - current.strokeColor = ctx.strokeStyle; - break; - - case PaintType.UNCOLORED: - var cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); - - context.fillStyle = cssColor; - context.strokeStyle = cssColor; - current.fillColor = cssColor; - current.strokeColor = cssColor; - break; - - default: - throw new _util.FormatError("Unsupported paint type: ".concat(paintType)); - } - }, - getPattern: function TilingPattern_getPattern(ctx, owner) { - ctx = this.ctx; - ctx.setTransform.apply(ctx, this.baseTransform); - ctx.transform.apply(ctx, this.matrix); - var temporaryPatternCanvas = this.createPatternCanvas(owner); - return ctx.createPattern(temporaryPatternCanvas, "repeat"); - } - }; - return TilingPattern; - }(); - - exports.TilingPattern = TilingPattern; - - /***/ - }), - /* 132 */ - /***/ ((__unused_webpack_module, exports) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.GlobalWorkerOptions = void 0; - var GlobalWorkerOptions = Object.create(null); - exports.GlobalWorkerOptions = GlobalWorkerOptions; - GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; - GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc; - - /***/ - }), - /* 133 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.MessageHandler = void 0; - - var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - - var _util = __w_pdfjs_require__(4); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - var CallbackKind = { - UNKNOWN: 0, - DATA: 1, - ERROR: 2 - }; - var StreamKind = { - UNKNOWN: 0, - CANCEL: 1, - CANCEL_COMPLETE: 2, - CLOSE: 3, - ENQUEUE: 4, - ERROR: 5, - PULL: 6, - PULL_COMPLETE: 7, - START_COMPLETE: 8 - }; - - function wrapReason(reason) { - if (_typeof(reason) !== "object" || reason === null) { - return reason; - } - - switch (reason.name) { - case "AbortException": - return new _util.AbortException(reason.message); - - case "MissingPDFException": - return new _util.MissingPDFException(reason.message); - - case "UnexpectedResponseException": - return new _util.UnexpectedResponseException(reason.message, reason.status); - - case "UnknownErrorException": - return new _util.UnknownErrorException(reason.message, reason.details); - - default: - return new _util.UnknownErrorException(reason.message, reason.toString()); - } - } - - var MessageHandler = /*#__PURE__*/function () { - function MessageHandler(sourceName, targetName, comObj) { - var _this = this; - - _classCallCheck(this, MessageHandler); - - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackId = 1; - this.streamId = 1; - this.postMessageTransfers = true; - this.streamSinks = Object.create(null); - this.streamControllers = Object.create(null); - this.callbackCapabilities = Object.create(null); - this.actionHandler = Object.create(null); - - this._onComObjOnMessage = function (event) { - var data = event.data; - - if (data.targetName !== _this.sourceName) { - return; - } - - if (data.stream) { - _this._processStreamMessage(data); - - return; - } - - if (data.callback) { - var callbackId = data.callbackId; - var capability = _this.callbackCapabilities[callbackId]; - - if (!capability) { - throw new Error("Cannot resolve callback ".concat(callbackId)); - } - - delete _this.callbackCapabilities[callbackId]; - - if (data.callback === CallbackKind.DATA) { - capability.resolve(data.data); - } else if (data.callback === CallbackKind.ERROR) { - capability.reject(wrapReason(data.reason)); - } else { - throw new Error("Unexpected callback case"); - } - - return; - } - - var action = _this.actionHandler[data.action]; - - if (!action) { - throw new Error("Unknown action from worker: ".concat(data.action)); - } - - if (data.callbackId) { - var cbSourceName = _this.sourceName; - var cbTargetName = data.sourceName; - new Promise(function (resolve) { - resolve(action(data.data)); - }).then(function (result) { - comObj.postMessage({ - sourceName: cbSourceName, - targetName: cbTargetName, - callback: CallbackKind.DATA, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - comObj.postMessage({ - sourceName: cbSourceName, - targetName: cbTargetName, - callback: CallbackKind.ERROR, - callbackId: data.callbackId, - reason: wrapReason(reason) - }); - }); - return; - } - - if (data.streamId) { - _this._createStreamSink(data); - - return; - } - - action(data.data); - }; - - comObj.addEventListener("message", this._onComObjOnMessage); - } - - _createClass(MessageHandler, [{ - key: "on", - value: function on(actionName, handler) { - var ah = this.actionHandler; - - if (ah[actionName]) { - throw new Error("There is already an actionName called \"".concat(actionName, "\"")); - } - - ah[actionName] = handler; - } - }, { - key: "send", - value: function send(actionName, data, transfers) { - this._postMessage({ - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data - }, transfers); - } - }, { - key: "sendWithPromise", - value: function sendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackId++; - var capability = (0, _util.createPromiseCapability)(); - this.callbackCapabilities[callbackId] = capability; - - try { - this._postMessage({ - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - callbackId: callbackId, - data: data - }, transfers); - } catch (ex) { - capability.reject(ex); - } - - return capability.promise; - } - }, { - key: "sendWithStream", - value: function sendWithStream(actionName, data, queueingStrategy, transfers) { - var _this2 = this; - - var streamId = this.streamId++; - var sourceName = this.sourceName; - var targetName = this.targetName; - var comObj = this.comObj; - return new ReadableStream({ - start: function start(controller) { - var startCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId] = { - controller: controller, - startCall: startCapability, - pullCall: null, - cancelCall: null, - isClosed: false - }; - - _this2._postMessage({ - sourceName: sourceName, - targetName: targetName, - action: actionName, - streamId: streamId, - data: data, - desiredSize: controller.desiredSize - }, transfers); - - return startCapability.promise; - }, - pull: function pull(controller) { - var pullCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId].pullCall = pullCapability; - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.PULL, - streamId: streamId, - desiredSize: controller.desiredSize - }); - return pullCapability.promise; - }, - cancel: function cancel(reason) { - (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); - var cancelCapability = (0, _util.createPromiseCapability)(); - _this2.streamControllers[streamId].cancelCall = cancelCapability; - _this2.streamControllers[streamId].isClosed = true; - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.CANCEL, - streamId: streamId, - reason: wrapReason(reason) - }); - return cancelCapability.promise; - } - }, queueingStrategy); - } - }, { - key: "_createStreamSink", - value: function _createStreamSink(data) { - var self = this; - var action = this.actionHandler[data.action]; - var streamId = data.streamId; - var sourceName = this.sourceName; - var targetName = data.sourceName; - var comObj = this.comObj; - var streamSink = { - enqueue: function enqueue(chunk) { - var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - var transfers = arguments.length > 2 ? arguments[2] : undefined; - - if (this.isCancelled) { - return; - } - - var lastDesiredSize = this.desiredSize; - this.desiredSize -= size; - - if (lastDesiredSize > 0 && this.desiredSize <= 0) { - this.sinkCapability = (0, _util.createPromiseCapability)(); - this.ready = this.sinkCapability.promise; - } - - self._postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.ENQUEUE, - streamId: streamId, - chunk: chunk - }, transfers); - }, - close: function close() { - if (this.isCancelled) { - return; - } - - this.isCancelled = true; - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.CLOSE, - streamId: streamId - }); - delete self.streamSinks[streamId]; - }, - error: function error(reason) { - (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); - - if (this.isCancelled) { - return; - } - - this.isCancelled = true; - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.ERROR, - streamId: streamId, - reason: wrapReason(reason) - }); - }, - sinkCapability: (0, _util.createPromiseCapability)(), - onPull: null, - onCancel: null, - isCancelled: false, - desiredSize: data.desiredSize, - ready: null - }; - streamSink.sinkCapability.resolve(); - streamSink.ready = streamSink.sinkCapability.promise; - this.streamSinks[streamId] = streamSink; - new Promise(function (resolve) { - resolve(action(data.data, streamSink)); - }).then(function () { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.START_COMPLETE, - streamId: streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.START_COMPLETE, - streamId: streamId, - reason: wrapReason(reason) - }); - }); - } - }, { - key: "_processStreamMessage", - value: function _processStreamMessage(data) { - var streamId = data.streamId; - var sourceName = this.sourceName; - var targetName = data.sourceName; - var comObj = this.comObj; - - switch (data.stream) { - case StreamKind.START_COMPLETE: - if (data.success) { - this.streamControllers[streamId].startCall.resolve(); - } else { - this.streamControllers[streamId].startCall.reject(wrapReason(data.reason)); - } - - break; - - case StreamKind.PULL_COMPLETE: - if (data.success) { - this.streamControllers[streamId].pullCall.resolve(); - } else { - this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason)); - } - - break; - - case StreamKind.PULL: - if (!this.streamSinks[streamId]) { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.PULL_COMPLETE, - streamId: streamId, - success: true - }); - break; - } - - if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) { - this.streamSinks[streamId].sinkCapability.resolve(); - } - - this.streamSinks[streamId].desiredSize = data.desiredSize; - var onPull = this.streamSinks[data.streamId].onPull; - new Promise(function (resolve) { - resolve(onPull && onPull()); - }).then(function () { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.PULL_COMPLETE, - streamId: streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.PULL_COMPLETE, - streamId: streamId, - reason: wrapReason(reason) - }); - }); - break; - - case StreamKind.ENQUEUE: - (0, _util.assert)(this.streamControllers[streamId], "enqueue should have stream controller"); - - if (this.streamControllers[streamId].isClosed) { - break; - } - - this.streamControllers[streamId].controller.enqueue(data.chunk); - break; - - case StreamKind.CLOSE: - (0, _util.assert)(this.streamControllers[streamId], "close should have stream controller"); - - if (this.streamControllers[streamId].isClosed) { - break; - } - - this.streamControllers[streamId].isClosed = true; - this.streamControllers[streamId].controller.close(); - - this._deleteStreamController(streamId); - - break; - - case StreamKind.ERROR: - (0, _util.assert)(this.streamControllers[streamId], "error should have stream controller"); - this.streamControllers[streamId].controller.error(wrapReason(data.reason)); - - this._deleteStreamController(streamId); - - break; - - case StreamKind.CANCEL_COMPLETE: - if (data.success) { - this.streamControllers[streamId].cancelCall.resolve(); - } else { - this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason)); - } - - this._deleteStreamController(streamId); - - break; - - case StreamKind.CANCEL: - if (!this.streamSinks[streamId]) { - break; - } - - var onCancel = this.streamSinks[data.streamId].onCancel; - new Promise(function (resolve) { - resolve(onCancel && onCancel(wrapReason(data.reason))); - }).then(function () { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.CANCEL_COMPLETE, - streamId: streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: StreamKind.CANCEL_COMPLETE, - streamId: streamId, - reason: wrapReason(reason) - }); - }); - this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason)); - this.streamSinks[streamId].isCancelled = true; - delete this.streamSinks[streamId]; - break; - - default: - throw new Error("Unexpected stream case"); - } - } - }, { - key: "_deleteStreamController", - value: function () { - var _deleteStreamController2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(streamId) { - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) { - return capability && capability.promise; - })); - - case 2: - delete this.streamControllers[streamId]; - - case 3: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function _deleteStreamController(_x) { - return _deleteStreamController2.apply(this, arguments); - } - - return _deleteStreamController; - }() - }, { - key: "_postMessage", - value: function _postMessage(message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - } - }, { - key: "destroy", - value: function destroy() { - this.comObj.removeEventListener("message", this._onComObjOnMessage); - } - }]); - - return MessageHandler; - }(); - - exports.MessageHandler = MessageHandler; - - /***/ - }), - /* 134 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.Metadata = void 0; - - var _util = __w_pdfjs_require__(4); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var Metadata = /*#__PURE__*/function () { - function Metadata(_ref) { - var parsedData = _ref.parsedData, - rawData = _ref.rawData; - - _classCallCheck(this, Metadata); - - this._metadataMap = parsedData; - this._data = rawData; - } - - _createClass(Metadata, [{ - key: "getRaw", - value: function getRaw() { - return this._data; - } - }, { - key: "get", - value: function get(name) { - var _this$_metadataMap$ge; - - return (_this$_metadataMap$ge = this._metadataMap.get(name)) !== null && _this$_metadataMap$ge !== void 0 ? _this$_metadataMap$ge : null; - } - }, { - key: "getAll", - value: function getAll() { - return (0, _util.objectFromMap)(this._metadataMap); - } - }, { - key: "has", - value: function has(name) { - return this._metadataMap.has(name); - } - }]); - - return Metadata; - }(); - - exports.Metadata = Metadata; - - /***/ - }), - /* 135 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.OptionalContentConfig = void 0; - - var _util = __w_pdfjs_require__(4); - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var OptionalContentGroup = function OptionalContentGroup(name, intent) { - _classCallCheck(this, OptionalContentGroup); - - this.visible = true; - this.name = name; - this.intent = intent; - }; - - var OptionalContentConfig = /*#__PURE__*/function () { - function OptionalContentConfig(data) { - _classCallCheck(this, OptionalContentConfig); - - this.name = null; - this.creator = null; - this._order = null; - this._groups = new Map(); - - if (data === null) { - return; - } - - this.name = data.name; - this.creator = data.creator; - this._order = data.order; - - var _iterator = _createForOfIteratorHelper(data.groups), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _group = _step.value; - - this._groups.set(_group.id, new OptionalContentGroup(_group.name, _group.intent)); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - if (data.baseState === "OFF") { - var _iterator2 = _createForOfIteratorHelper(this._groups), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var group = _step2.value; - group.visible = false; - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - } - - var _iterator3 = _createForOfIteratorHelper(data.on), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var on = _step3.value; - this._groups.get(on).visible = true; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - var _iterator4 = _createForOfIteratorHelper(data.off), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var off = _step4.value; - this._groups.get(off).visible = false; - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - } - - _createClass(OptionalContentConfig, [{ - key: "isVisible", - value: function isVisible(group) { - if (group.type === "OCG") { - if (!this._groups.has(group.id)) { - (0, _util.warn)("Optional content group not found: ".concat(group.id)); - return true; - } - - return this._groups.get(group.id).visible; - } else if (group.type === "OCMD") { - if (group.expression) { - (0, _util.warn)("Visibility expression not supported yet."); - } - - if (!group.policy || group.policy === "AnyOn") { - var _iterator5 = _createForOfIteratorHelper(group.ids), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var id = _step5.value; - - if (!this._groups.has(id)) { - (0, _util.warn)("Optional content group not found: ".concat(id)); - return true; - } - - if (this._groups.get(id).visible) { - return true; - } - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - return false; - } else if (group.policy === "AllOn") { - var _iterator6 = _createForOfIteratorHelper(group.ids), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var _id = _step6.value; - - if (!this._groups.has(_id)) { - (0, _util.warn)("Optional content group not found: ".concat(_id)); - return true; - } - - if (!this._groups.get(_id).visible) { - return false; - } - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - - return true; - } else if (group.policy === "AnyOff") { - var _iterator7 = _createForOfIteratorHelper(group.ids), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var _id2 = _step7.value; - - if (!this._groups.has(_id2)) { - (0, _util.warn)("Optional content group not found: ".concat(_id2)); - return true; - } - - if (!this._groups.get(_id2).visible) { - return true; - } - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - return false; - } else if (group.policy === "AllOff") { - var _iterator8 = _createForOfIteratorHelper(group.ids), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var _id3 = _step8.value; - - if (!this._groups.has(_id3)) { - (0, _util.warn)("Optional content group not found: ".concat(_id3)); - return true; - } - - if (this._groups.get(_id3).visible) { - return false; - } - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - - return true; - } - - (0, _util.warn)("Unknown optional content policy ".concat(group.policy, ".")); - return true; - } - - (0, _util.warn)("Unknown group type ".concat(group.type, ".")); - return true; - } - }, { - key: "setVisibility", - value: function setVisibility(id) { - var visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - - if (!this._groups.has(id)) { - (0, _util.warn)("Optional content group not found: ".concat(id)); - return; - } - - this._groups.get(id).visible = !!visible; - } - }, { - key: "getOrder", - value: function getOrder() { - if (!this._groups.size) { - return null; - } - - if (this._order) { - return this._order.slice(); - } - - return Array.from(this._groups.keys()); - } - }, { - key: "getGroups", - value: function getGroups() { - return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null; - } - }, { - key: "getGroup", - value: function getGroup(id) { - return this._groups.get(id) || null; - } - }]); - - return OptionalContentConfig; - }(); - - exports.OptionalContentConfig = OptionalContentConfig; - - /***/ - }), - /* 136 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFDataTransportStream = void 0; - - var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - - var _util = __w_pdfjs_require__(4); - - var _display_utils = __w_pdfjs_require__(1); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var PDFDataTransportStream = /*#__PURE__*/function () { - function PDFDataTransportStream(params, pdfDataRangeTransport) { - var _this = this; - - _classCallCheck(this, PDFDataTransportStream); - - (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); - this._queuedChunks = []; - this._progressiveDone = params.progressiveDone || false; - this._contentDispositionFilename = params.contentDispositionFilename || null; - var initialData = params.initialData; - - if ((initialData === null || initialData === void 0 ? void 0 : initialData.length) > 0) { - var buffer = new Uint8Array(initialData).buffer; - - this._queuedChunks.push(buffer); - } - - this._pdfDataRangeTransport = pdfDataRangeTransport; - this._isStreamingSupported = !params.disableStream; - this._isRangeSupported = !params.disableRange; - this._contentLength = params.length; - this._fullRequestReader = null; - this._rangeReaders = []; - - this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) { - _this._onReceiveData({ - begin: begin, - chunk: chunk - }); - }); - - this._pdfDataRangeTransport.addProgressListener(function (loaded, total) { - _this._onProgress({ - loaded: loaded, - total: total - }); - }); - - this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) { - _this._onReceiveData({ - chunk: chunk - }); - }); - - this._pdfDataRangeTransport.addProgressiveDoneListener(function () { - _this._onProgressiveDone(); - }); - - this._pdfDataRangeTransport.transportReady(); - } - - _createClass(PDFDataTransportStream, [{ - key: "_onReceiveData", - value: function _onReceiveData(args) { - var buffer = new Uint8Array(args.chunk).buffer; - - if (args.begin === undefined) { - if (this._fullRequestReader) { - this._fullRequestReader._enqueue(buffer); - } else { - this._queuedChunks.push(buffer); - } - } else { - var found = this._rangeReaders.some(function (rangeReader) { - if (rangeReader._begin !== args.begin) { - return false; - } - - rangeReader._enqueue(buffer); - - return true; - }); - - (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); - } - } - }, { - key: "_progressiveDataLength", - get: function get() { - var _this$_fullRequestRea, _this$_fullRequestRea2; - - return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0; - } - }, { - key: "_onProgress", - value: function _onProgress(evt) { - if (evt.total === undefined) { - var firstReader = this._rangeReaders[0]; - - if (firstReader !== null && firstReader !== void 0 && firstReader.onProgress) { - firstReader.onProgress({ - loaded: evt.loaded - }); - } - } else { - var fullReader = this._fullRequestReader; - - if (fullReader !== null && fullReader !== void 0 && fullReader.onProgress) { - fullReader.onProgress({ - loaded: evt.loaded, - total: evt.total - }); - } - } - } - }, { - key: "_onProgressiveDone", - value: function _onProgressiveDone() { - if (this._fullRequestReader) { - this._fullRequestReader.progressiveDone(); - } - - this._progressiveDone = true; - } - }, { - key: "_removeRangeReader", - value: function _removeRangeReader(reader) { - var i = this._rangeReaders.indexOf(reader); - - if (i >= 0) { - this._rangeReaders.splice(i, 1); - } - } - }, { - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); - var queuedChunks = this._queuedChunks; - this._queuedChunks = null; - return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); - } - }, { - key: "getRangeReader", - value: function getRangeReader(begin, end) { - if (end <= this._progressiveDataLength) { - return null; - } - - var reader = new PDFDataTransportStreamRangeReader(this, begin, end); - - this._pdfDataRangeTransport.requestDataRange(begin, end); - - this._rangeReaders.push(reader); - - return reader; - } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - var readers = this._rangeReaders.slice(0); - - readers.forEach(function (rangeReader) { - rangeReader.cancel(reason); - }); - - this._pdfDataRangeTransport.abort(); - } - }]); - - return PDFDataTransportStream; - }(); - - exports.PDFDataTransportStream = PDFDataTransportStream; - - var PDFDataTransportStreamReader = /*#__PURE__*/function () { - function PDFDataTransportStreamReader(stream, queuedChunks) { - var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var contentDispositionFilename = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - - _classCallCheck(this, PDFDataTransportStreamReader); - - this._stream = stream; - this._done = progressiveDone || false; - this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; - this._queuedChunks = queuedChunks || []; - this._loaded = 0; - - var _iterator = _createForOfIteratorHelper(this._queuedChunks), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var chunk = _step.value; - this._loaded += chunk.byteLength; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - this._requests = []; - this._headersReady = Promise.resolve(); - stream._fullRequestReader = this; - this.onProgress = null; - } - - _createClass(PDFDataTransportStreamReader, [{ - key: "_enqueue", - value: function _enqueue(chunk) { - if (this._done) { - return; - } - - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._queuedChunks.push(chunk); - } - - this._loaded += chunk.byteLength; - } - }, { - key: "headersReady", - get: function get() { - return this._headersReady; - } - }, { - key: "filename", - get: function get() { - return this._filename; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._stream._isRangeSupported; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._stream._isStreamingSupported; - } - }, { - key: "contentLength", - get: function get() { - return this._stream._contentLength; - } - }, { - key: "read", - value: function () { - var _read = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var chunk, requestCapability; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!(this._queuedChunks.length > 0)) { - _context.next = 3; - break; - } - - chunk = this._queuedChunks.shift(); - return _context.abrupt("return", { - value: chunk, - done: false - }); - - case 3: - if (!this._done) { - _context.next = 5; - break; - } - - return _context.abrupt("return", { - value: undefined, - done: true - }); - - case 5: - requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return _context.abrupt("return", requestCapability.promise); - - case 8: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._done = true; - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - } - }, { - key: "progressiveDone", - value: function progressiveDone() { - if (this._done) { - return; - } - - this._done = true; - } - }]); - - return PDFDataTransportStreamReader; - }(); - - var PDFDataTransportStreamRangeReader = /*#__PURE__*/function () { - function PDFDataTransportStreamRangeReader(stream, begin, end) { - _classCallCheck(this, PDFDataTransportStreamRangeReader); - - this._stream = stream; - this._begin = begin; - this._end = end; - this._queuedChunk = null; - this._requests = []; - this._done = false; - this.onProgress = null; - } - - _createClass(PDFDataTransportStreamRangeReader, [{ - key: "_enqueue", - value: function _enqueue(chunk) { - if (this._done) { - return; - } - - if (this._requests.length === 0) { - this._queuedChunk = chunk; - } else { - var requestsCapability = this._requests.shift(); - - requestsCapability.resolve({ - value: chunk, - done: false - }); - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - } - - this._done = true; - - this._stream._removeRangeReader(this); - } - }, { - key: "isStreamingSupported", - get: function get() { - return false; - } - }, { - key: "read", - value: function () { - var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var chunk, requestCapability; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!this._queuedChunk) { - _context2.next = 4; - break; - } - - chunk = this._queuedChunk; - this._queuedChunk = null; - return _context2.abrupt("return", { - value: chunk, - done: false - }); - - case 4: - if (!this._done) { - _context2.next = 6; - break; - } - - return _context2.abrupt("return", { - value: undefined, - done: true - }); - - case 6: - requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return _context2.abrupt("return", requestCapability.promise); - - case 9: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._done = true; - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - - this._stream._removeRangeReader(this); - } - }]); - - return PDFDataTransportStreamRangeReader; - }(); - - /***/ - }), - /* 137 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.WebGLContext = void 0; - - var _util = __w_pdfjs_require__(4); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var WebGLContext = /*#__PURE__*/function () { - function WebGLContext(_ref) { - var _ref$enable = _ref.enable, - enable = _ref$enable === void 0 ? false : _ref$enable; - - _classCallCheck(this, WebGLContext); - - this._enabled = enable === true; - } - - _createClass(WebGLContext, [{ - key: "isEnabled", - get: function get() { - var enabled = this._enabled; - - if (enabled) { - enabled = WebGLUtils.tryInitGL(); - } - - return (0, _util.shadow)(this, "isEnabled", enabled); - } - }, { - key: "composeSMask", - value: function composeSMask(_ref2) { - var layer = _ref2.layer, - mask = _ref2.mask, - properties = _ref2.properties; - return WebGLUtils.composeSMask(layer, mask, properties); - } - }, { - key: "drawFigures", - value: function drawFigures(_ref3) { - var width = _ref3.width, - height = _ref3.height, - backgroundColor = _ref3.backgroundColor, - figures = _ref3.figures, - context = _ref3.context; - return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); - } - }, { - key: "clear", - value: function clear() { - WebGLUtils.cleanup(); - } - }]); - - return WebGLContext; - }(); - - exports.WebGLContext = WebGLContext; - - var WebGLUtils = function WebGLUtilsClosure() { - function loadShader(gl, code, shaderType) { - var shader = gl.createShader(shaderType); - gl.shaderSource(shader, code); - gl.compileShader(shader); - var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); - - if (!compiled) { - var errorMsg = gl.getShaderInfoLog(shader); - throw new Error("Error during shader compilation: " + errorMsg); - } - - return shader; - } - - function createVertexShader(gl, code) { - return loadShader(gl, code, gl.VERTEX_SHADER); - } - - function createFragmentShader(gl, code) { - return loadShader(gl, code, gl.FRAGMENT_SHADER); - } - - function createProgram(gl, shaders) { - var program = gl.createProgram(); - - for (var i = 0, ii = shaders.length; i < ii; ++i) { - gl.attachShader(program, shaders[i]); - } - - gl.linkProgram(program); - var linked = gl.getProgramParameter(program, gl.LINK_STATUS); - - if (!linked) { - var errorMsg = gl.getProgramInfoLog(program); - throw new Error("Error during program linking: " + errorMsg); - } - - return program; - } - - function createTexture(gl, image, textureId) { - gl.activeTexture(textureId); - var texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); - return texture; - } - - var currentGL, currentCanvas; - - function generateGL() { - if (currentGL) { - return; - } - - currentCanvas = document.createElement("canvas"); - currentGL = currentCanvas.getContext("webgl", { - premultipliedalpha: false - }); - } - - var smaskVertexShaderCode = "\ - attribute vec2 a_position; \ - attribute vec2 a_texCoord; \ - \ - uniform vec2 u_resolution; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_texCoord = a_texCoord; \ - } "; - var smaskFragmentShaderCode = "\ - precision mediump float; \ - \ - uniform vec4 u_backdrop; \ - uniform int u_subtype; \ - uniform sampler2D u_image; \ - uniform sampler2D u_mask; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec4 imageColor = texture2D(u_image, v_texCoord); \ - vec4 maskColor = texture2D(u_mask, v_texCoord); \ - if (u_backdrop.a > 0.0) { \ - maskColor.rgb = maskColor.rgb * maskColor.a + \ - u_backdrop.rgb * (1.0 - maskColor.a); \ - } \ - float lum; \ - if (u_subtype == 0) { \ - lum = maskColor.a; \ - } else { \ - lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \ - maskColor.b * 0.11; \ - } \ - imageColor.a *= lum; \ - imageColor.rgb *= imageColor.a; \ - gl_FragColor = imageColor; \ - } "; - var smaskCache = null; - - function initSmaskGL() { - generateGL(); - var canvas = currentCanvas; - currentCanvas = null; - var gl = currentGL; - currentGL = null; - var vertexShader = createVertexShader(gl, smaskVertexShaderCode); - var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution"); - cache.positionLocation = gl.getAttribLocation(program, "a_position"); - cache.backdropLocation = gl.getUniformLocation(program, "u_backdrop"); - cache.subtypeLocation = gl.getUniformLocation(program, "u_subtype"); - var texCoordLocation = gl.getAttribLocation(program, "a_texCoord"); - var texLayerLocation = gl.getUniformLocation(program, "u_image"); - var texMaskLocation = gl.getUniformLocation(program, "u_mask"); - var texCoordBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(texCoordLocation); - gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0); - gl.uniform1i(texLayerLocation, 0); - gl.uniform1i(texMaskLocation, 1); - smaskCache = cache; - } - - function composeSMask(layer, mask, properties) { - var width = layer.width, - height = layer.height; - - if (!smaskCache) { - initSmaskGL(); - } - - var cache = smaskCache, - canvas = cache.canvas, - gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - - if (properties.backdrop) { - gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1); - } else { - gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0); - } - - gl.uniform1i(cache.subtypeLocation, properties.subtype === "Luminosity" ? 1 : 0); - var texture = createTexture(gl, layer, gl.TEXTURE0); - var maskTexture = createTexture(gl, mask, gl.TEXTURE1); - var buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - gl.clearColor(0, 0, 0, 0); - gl.enable(gl.BLEND); - gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - gl.clear(gl.COLOR_BUFFER_BIT); - gl.drawArrays(gl.TRIANGLES, 0, 6); - gl.flush(); - gl.deleteTexture(texture); - gl.deleteTexture(maskTexture); - gl.deleteBuffer(buffer); - return canvas; - } - - var figuresVertexShaderCode = "\ - attribute vec2 a_position; \ - attribute vec3 a_color; \ - \ - uniform vec2 u_resolution; \ - uniform vec2 u_scale; \ - uniform vec2 u_offset; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - vec2 position = (a_position + u_offset) * u_scale; \ - vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_color = vec4(a_color / 255.0, 1.0); \ - } "; - var figuresFragmentShaderCode = "\ - precision mediump float; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - gl_FragColor = v_color; \ - } "; - var figuresCache = null; - - function initFiguresGL() { - generateGL(); - var canvas = currentCanvas; - currentCanvas = null; - var gl = currentGL; - currentGL = null; - var vertexShader = createVertexShader(gl, figuresVertexShaderCode); - var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution"); - cache.scaleLocation = gl.getUniformLocation(program, "u_scale"); - cache.offsetLocation = gl.getUniformLocation(program, "u_offset"); - cache.positionLocation = gl.getAttribLocation(program, "a_position"); - cache.colorLocation = gl.getAttribLocation(program, "a_color"); - figuresCache = cache; - } - - function drawFigures(width, height, backgroundColor, figures, context) { - if (!figuresCache) { - initFiguresGL(); - } - - var cache = figuresCache, - canvas = cache.canvas, - gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - var count = 0; - - for (var i = 0, ii = figures.length; i < ii; i++) { - switch (figures[i].type) { - case "lattice": - var rows = figures[i].coords.length / figures[i].verticesPerRow | 0; - count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6; - break; - - case "triangles": - count += figures[i].coords.length; - break; - } - } - - var coords = new Float32Array(count * 2); - var colors = new Uint8Array(count * 3); - var coordsMap = context.coords, - colorsMap = context.colors; - var pIndex = 0, - cIndex = 0; - - for (var _i = 0, _ii = figures.length; _i < _ii; _i++) { - var figure = figures[_i], - ps = figure.coords, - cs = figure.colors; - - switch (figure.type) { - case "lattice": - var cols = figure.verticesPerRow; - - var _rows = ps.length / cols | 0; - - for (var row = 1; row < _rows; row++) { - var offset = row * cols + 1; - - for (var col = 1; col < cols; col++, offset++) { - coords[pIndex] = coordsMap[ps[offset - cols - 1]]; - coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1]; - coords[pIndex + 2] = coordsMap[ps[offset - cols]]; - coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1]; - coords[pIndex + 4] = coordsMap[ps[offset - 1]]; - coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1]; - colors[cIndex] = colorsMap[cs[offset - cols - 1]]; - colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1]; - colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2]; - colors[cIndex + 3] = colorsMap[cs[offset - cols]]; - colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1]; - colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2]; - colors[cIndex + 6] = colorsMap[cs[offset - 1]]; - colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1]; - colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2]; - coords[pIndex + 6] = coords[pIndex + 2]; - coords[pIndex + 7] = coords[pIndex + 3]; - coords[pIndex + 8] = coords[pIndex + 4]; - coords[pIndex + 9] = coords[pIndex + 5]; - coords[pIndex + 10] = coordsMap[ps[offset]]; - coords[pIndex + 11] = coordsMap[ps[offset] + 1]; - colors[cIndex + 9] = colors[cIndex + 3]; - colors[cIndex + 10] = colors[cIndex + 4]; - colors[cIndex + 11] = colors[cIndex + 5]; - colors[cIndex + 12] = colors[cIndex + 6]; - colors[cIndex + 13] = colors[cIndex + 7]; - colors[cIndex + 14] = colors[cIndex + 8]; - colors[cIndex + 15] = colorsMap[cs[offset]]; - colors[cIndex + 16] = colorsMap[cs[offset] + 1]; - colors[cIndex + 17] = colorsMap[cs[offset] + 2]; - pIndex += 12; - cIndex += 18; - } - } - - break; - - case "triangles": - for (var j = 0, jj = ps.length; j < jj; j++) { - coords[pIndex] = coordsMap[ps[j]]; - coords[pIndex + 1] = coordsMap[ps[j] + 1]; - colors[cIndex] = colorsMap[cs[j]]; - colors[cIndex + 1] = colorsMap[cs[j] + 1]; - colors[cIndex + 2] = colorsMap[cs[j] + 2]; - pIndex += 2; - cIndex += 3; - } - - break; - } - } - - if (backgroundColor) { - gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0); - } else { - gl.clearColor(0, 0, 0, 0); - } - - gl.clear(gl.COLOR_BUFFER_BIT); - var coordsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - var colorsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.colorLocation); - gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0); - gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY); - gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY); - gl.drawArrays(gl.TRIANGLES, 0, count); - gl.flush(); - gl.deleteBuffer(coordsBuffer); - gl.deleteBuffer(colorsBuffer); - return canvas; - } - - return { - tryInitGL: function tryInitGL() { - try { - generateGL(); - return !!currentGL; - } catch (ex) { - } - - return false; - }, - composeSMask: composeSMask, - drawFigures: drawFigures, - cleanup: function cleanup() { - var _smaskCache, _figuresCache; - - if ((_smaskCache = smaskCache) !== null && _smaskCache !== void 0 && _smaskCache.canvas) { - smaskCache.canvas.width = 0; - smaskCache.canvas.height = 0; - } - - if ((_figuresCache = figuresCache) !== null && _figuresCache !== void 0 && _figuresCache.canvas) { - figuresCache.canvas.width = 0; - figuresCache.canvas.height = 0; - } - - smaskCache = null; - figuresCache = null; - } - }; - }(); - - /***/ - }), - /* 138 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.AnnotationLayer = void 0; - - var _display_utils = __w_pdfjs_require__(1); - - var _util = __w_pdfjs_require__(4); - - var _annotation_storage = __w_pdfjs_require__(128); - - var _scripting_utils = __w_pdfjs_require__(139); - - function _get(target, property, receiver) { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(receiver); - } - return desc.value; - }; - } - return _get(target, property, receiver || target); - } - - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e2) { - throw _e2; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var AnnotationElementFactory = /*#__PURE__*/function () { - function AnnotationElementFactory() { - _classCallCheck(this, AnnotationElementFactory); - } - - _createClass(AnnotationElementFactory, null, [{ - key: "create", - value: function create(parameters) { - var subtype = parameters.data.annotationType; - - switch (subtype) { - case _util.AnnotationType.LINK: - return new LinkAnnotationElement(parameters); - - case _util.AnnotationType.TEXT: - return new TextAnnotationElement(parameters); - - case _util.AnnotationType.WIDGET: - var fieldType = parameters.data.fieldType; - - switch (fieldType) { - case "Tx": - return new TextWidgetAnnotationElement(parameters); - - case "Btn": - if (parameters.data.radioButton) { - return new RadioButtonWidgetAnnotationElement(parameters); - } else if (parameters.data.checkBox) { - return new CheckboxWidgetAnnotationElement(parameters); - } - - return new PushButtonWidgetAnnotationElement(parameters); - - case "Ch": - return new ChoiceWidgetAnnotationElement(parameters); - } - - return new WidgetAnnotationElement(parameters); - - case _util.AnnotationType.POPUP: - return new PopupAnnotationElement(parameters); - - case _util.AnnotationType.FREETEXT: - return new FreeTextAnnotationElement(parameters); - - case _util.AnnotationType.LINE: - return new LineAnnotationElement(parameters); - - case _util.AnnotationType.SQUARE: - return new SquareAnnotationElement(parameters); - - case _util.AnnotationType.CIRCLE: - return new CircleAnnotationElement(parameters); - - case _util.AnnotationType.POLYLINE: - return new PolylineAnnotationElement(parameters); - - case _util.AnnotationType.CARET: - return new CaretAnnotationElement(parameters); - - case _util.AnnotationType.INK: - return new InkAnnotationElement(parameters); - - case _util.AnnotationType.POLYGON: - return new PolygonAnnotationElement(parameters); - - case _util.AnnotationType.HIGHLIGHT: - return new HighlightAnnotationElement(parameters); - - case _util.AnnotationType.UNDERLINE: - return new UnderlineAnnotationElement(parameters); - - case _util.AnnotationType.SQUIGGLY: - return new SquigglyAnnotationElement(parameters); - - case _util.AnnotationType.STRIKEOUT: - return new StrikeOutAnnotationElement(parameters); - - case _util.AnnotationType.STAMP: - return new StampAnnotationElement(parameters); - - case _util.AnnotationType.FILEATTACHMENT: - return new FileAttachmentAnnotationElement(parameters); - - default: - return new AnnotationElement(parameters); - } - } - }]); - - return AnnotationElementFactory; - }(); - - var AnnotationElement = /*#__PURE__*/function () { - function AnnotationElement(parameters) { - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$isRenderable = _ref.isRenderable, - isRenderable = _ref$isRenderable === void 0 ? false : _ref$isRenderable, - _ref$ignoreBorder = _ref.ignoreBorder, - ignoreBorder = _ref$ignoreBorder === void 0 ? false : _ref$ignoreBorder, - _ref$createQuadrilate = _ref.createQuadrilaterals, - createQuadrilaterals = _ref$createQuadrilate === void 0 ? false : _ref$createQuadrilate; - - _classCallCheck(this, AnnotationElement); - - this.isRenderable = isRenderable; - this.data = parameters.data; - this.layer = parameters.layer; - this.page = parameters.page; - this.viewport = parameters.viewport; - this.linkService = parameters.linkService; - this.downloadManager = parameters.downloadManager; - this.imageResourcesPath = parameters.imageResourcesPath; - this.renderInteractiveForms = parameters.renderInteractiveForms; - this.svgFactory = parameters.svgFactory; - this.annotationStorage = parameters.annotationStorage; - this.enableScripting = parameters.enableScripting; - this.hasJSActions = parameters.hasJSActions; - this._mouseState = parameters.mouseState; - - if (isRenderable) { - this.container = this._createContainer(ignoreBorder); - } - - if (createQuadrilaterals) { - this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); - } - } - - _createClass(AnnotationElement, [{ - key: "_createContainer", - value: function _createContainer() { - var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var data = this.data, - page = this.page, - viewport = this.viewport; - var container = document.createElement("section"); - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - container.setAttribute("data-annotation-id", data.id); - - var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); - - container.style.transform = "matrix(".concat(viewport.transform.join(","), ")"); - container.style.transformOrigin = "".concat(-rect[0], "px ").concat(-rect[1], "px"); - - if (!ignoreBorder && data.borderStyle.width > 0) { - container.style.borderWidth = "".concat(data.borderStyle.width, "px"); - - if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { - width = width - 2 * data.borderStyle.width; - height = height - 2 * data.borderStyle.width; - } - - var horizontalRadius = data.borderStyle.horizontalCornerRadius; - var verticalRadius = data.borderStyle.verticalCornerRadius; - - if (horizontalRadius > 0 || verticalRadius > 0) { - var radius = "".concat(horizontalRadius, "px / ").concat(verticalRadius, "px"); - container.style.borderRadius = radius; - } - - switch (data.borderStyle.style) { - case _util.AnnotationBorderStyleType.SOLID: - container.style.borderStyle = "solid"; - break; - - case _util.AnnotationBorderStyleType.DASHED: - container.style.borderStyle = "dashed"; - break; - - case _util.AnnotationBorderStyleType.BEVELED: - (0, _util.warn)("Unimplemented border style: beveled"); - break; - - case _util.AnnotationBorderStyleType.INSET: - (0, _util.warn)("Unimplemented border style: inset"); - break; - - case _util.AnnotationBorderStyleType.UNDERLINE: - container.style.borderBottomStyle = "solid"; - break; - - default: - break; - } - - if (data.color) { - container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); - } else { - container.style.borderWidth = 0; - } - } - - container.style.left = "".concat(rect[0], "px"); - container.style.top = "".concat(rect[1], "px"); - container.style.width = "".concat(width, "px"); - container.style.height = "".concat(height, "px"); - return container; - } - }, { - key: "_createQuadrilaterals", - value: function _createQuadrilaterals() { - var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!this.data.quadPoints) { - return null; - } - - var quadrilaterals = []; - var savedRect = this.data.rect; - - var _iterator = _createForOfIteratorHelper(this.data.quadPoints), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var quadPoint = _step.value; - this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; - quadrilaterals.push(this._createContainer(ignoreBorder)); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - this.data.rect = savedRect; - return quadrilaterals; - } - }, { - key: "_createPopup", - value: function _createPopup(trigger, data) { - var container = this.container; - - if (this.quadrilaterals) { - trigger = trigger || this.quadrilaterals; - container = this.quadrilaterals[0]; - } - - if (!trigger) { - trigger = document.createElement("div"); - trigger.style.height = container.style.height; - trigger.style.width = container.style.width; - container.appendChild(trigger); - } - - var popupElement = new PopupElement({ - container: container, - trigger: trigger, - color: data.color, - title: data.title, - modificationDate: data.modificationDate, - contents: data.contents, - hideWrapper: true - }); - var popup = popupElement.render(); - popup.style.left = container.style.width; - container.appendChild(popup); - } - }, { - key: "_renderQuadrilaterals", - value: function _renderQuadrilaterals(className) { - this.quadrilaterals.forEach(function (quadrilateral) { - quadrilateral.className = className; - }); - return this.quadrilaterals; - } - }, { - key: "render", - value: function render() { - (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); - } - }]); - - return AnnotationElement; - }(); - - var LinkAnnotationElement = /*#__PURE__*/function (_AnnotationElement) { - _inherits(LinkAnnotationElement, _AnnotationElement); - - var _super = _createSuper(LinkAnnotationElement); - - function LinkAnnotationElement(parameters) { - _classCallCheck(this, LinkAnnotationElement); - - var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"])); - return _super.call(this, parameters, { - isRenderable: isRenderable, - createQuadrilaterals: true - }); - } - - _createClass(LinkAnnotationElement, [{ - key: "render", - value: function render() { - var data = this.data, - linkService = this.linkService; - var link = document.createElement("a"); - - if (data.url) { - (0, _display_utils.addLinkAttributes)(link, { - url: data.url, - target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget, - rel: linkService.externalLinkRel, - enabled: linkService.externalLinkEnabled - }); - } else if (data.action) { - this._bindNamedAction(link, data.action); - } else if (data.dest) { - this._bindLink(link, data.dest); - } else if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { - this._bindJSAction(link, data); - } else { - this._bindLink(link, ""); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("linkAnnotation").map(function (quadrilateral, index) { - var linkElement = index === 0 ? link : link.cloneNode(); - quadrilateral.appendChild(linkElement); - return quadrilateral; - }); - } - - this.container.className = "linkAnnotation"; - this.container.appendChild(link); - return this.container; - } - }, { - key: "_bindLink", - value: function _bindLink(link, destination) { - var _this = this; - - link.href = this.linkService.getDestinationHash(destination); - - link.onclick = function () { - if (destination) { - _this.linkService.goToDestination(destination); - } - - return false; - }; - - if (destination || destination === "") { - link.className = "internalLink"; - } - } - }, { - key: "_bindNamedAction", - value: function _bindNamedAction(link, action) { - var _this2 = this; - - link.href = this.linkService.getAnchorUrl(""); - - link.onclick = function () { - _this2.linkService.executeNamedAction(action); - - return false; - }; - - link.className = "internalLink"; - } - }, { - key: "_bindJSAction", - value: function _bindJSAction(link, data) { - var _this3 = this; - - link.href = this.linkService.getAnchorUrl(""); - var map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); - - var _loop = function _loop() { - var name = _Object$keys[_i]; - var jsName = map.get(name); - - if (!jsName) { - return "continue"; - } - - link[jsName] = function () { - var _this3$linkService$ev; - - (_this3$linkService$ev = _this3.linkService.eventBus) === null || _this3$linkService$ev === void 0 ? void 0 : _this3$linkService$ev.dispatch("dispatcheventinsandbox", { - source: _this3, - detail: { - id: data.id, - name: name - } - }); - return false; - }; - }; - - for (var _i = 0, _Object$keys = Object.keys(data.actions); _i < _Object$keys.length; _i++) { - var _ret = _loop(); - - if (_ret === "continue") continue; - } - - link.className = "internalLink"; - } - }]); - - return LinkAnnotationElement; - }(AnnotationElement); - - var TextAnnotationElement = /*#__PURE__*/function (_AnnotationElement2) { - _inherits(TextAnnotationElement, _AnnotationElement2); - - var _super2 = _createSuper(TextAnnotationElement); - - function TextAnnotationElement(parameters) { - _classCallCheck(this, TextAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super2.call(this, parameters, { - isRenderable: isRenderable - }); - } - - _createClass(TextAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = "textAnnotation"; - var image = document.createElement("img"); - image.style.height = this.container.style.height; - image.style.width = this.container.style.width; - image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; - image.alt = "[{{type}} Annotation]"; - image.dataset.l10nId = "text_annotation_type"; - image.dataset.l10nArgs = JSON.stringify({ - type: this.data.name - }); - - if (!this.data.hasPopup) { - this._createPopup(image, this.data); - } - - this.container.appendChild(image); - return this.container; - } - }]); - - return TextAnnotationElement; - }(AnnotationElement); - - var WidgetAnnotationElement = /*#__PURE__*/function (_AnnotationElement3) { - _inherits(WidgetAnnotationElement, _AnnotationElement3); - - var _super3 = _createSuper(WidgetAnnotationElement); - - function WidgetAnnotationElement() { - _classCallCheck(this, WidgetAnnotationElement); - - return _super3.apply(this, arguments); - } - - _createClass(WidgetAnnotationElement, [{ - key: "render", - value: function render() { - if (this.data.alternativeText) { - this.container.title = this.data.alternativeText; - } - - return this.container; - } - }, { - key: "_getKeyModifier", - value: function _getKeyModifier(event) { - return navigator.platform.includes("Win") && event.ctrlKey || navigator.platform.includes("Mac") && event.metaKey; - } - }, { - key: "_setEventListener", - value: function _setEventListener(element, baseName, eventName, valueGetter) { - var _this4 = this; - - if (baseName.includes("mouse")) { - element.addEventListener(baseName, function (event) { - var _this4$linkService$ev; - - (_this4$linkService$ev = _this4.linkService.eventBus) === null || _this4$linkService$ev === void 0 ? void 0 : _this4$linkService$ev.dispatch("dispatcheventinsandbox", { - source: _this4, - detail: { - id: _this4.data.id, - name: eventName, - value: valueGetter(event), - shift: event.shiftKey, - modifier: _this4._getKeyModifier(event) - } - }); - }); - } else { - element.addEventListener(baseName, function (event) { - var _this4$linkService$ev2; - - (_this4$linkService$ev2 = _this4.linkService.eventBus) === null || _this4$linkService$ev2 === void 0 ? void 0 : _this4$linkService$ev2.dispatch("dispatcheventinsandbox", { - source: _this4, - detail: { - id: _this4.data.id, - name: eventName, - value: event.target.checked - } - }); - }); - } - } - }, { - key: "_setEventListeners", - value: function _setEventListeners(element, names, getter) { - var _iterator2 = _createForOfIteratorHelper(names), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _this$data$actions; - - var _step2$value = _slicedToArray(_step2.value, 2), - baseName = _step2$value[0], - eventName = _step2$value[1]; - - if (eventName === "Action" || (_this$data$actions = this.data.actions) !== null && _this$data$actions !== void 0 && _this$data$actions[eventName]) { - this._setEventListener(element, baseName, eventName, getter); - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - } - }, { - key: "_setColor", - value: function _setColor(event) { - var detail = event.detail, - target = event.target; - var style = target.style; - - for (var _i2 = 0, _arr2 = ["bgColor", "fillColor", "fgColor", "textColor", "borderColor", "strokeColor"]; _i2 < _arr2.length; _i2++) { - var name = _arr2[_i2]; - var color = detail[name]; - - if (!color) { - continue; - } - - color = _scripting_utils.ColorConverters["".concat(color[0], "_HTML")](color.slice(1)); - - switch (name) { - case "bgColor": - case "fillColor": - style.backgroundColor = color; - break; - - case "fgColor": - case "textColor": - style.color = color; - break; - - case "borderColor": - case "strokeColor": - style.borderColor = color; - break; - } - } - } - }]); - - return WidgetAnnotationElement; - }(AnnotationElement); - - var TextWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem) { - _inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem); - - var _super4 = _createSuper(TextWidgetAnnotationElement); - - function TextWidgetAnnotationElement(parameters) { - _classCallCheck(this, TextWidgetAnnotationElement); - - var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; - return _super4.call(this, parameters, { - isRenderable: isRenderable - }); - } - - _createClass(TextWidgetAnnotationElement, [{ - key: "render", - value: function render() { - var _this5 = this; - - var storage = this.annotationStorage; - var id = this.data.id; - this.container.className = "textWidgetAnnotation"; - var element = null; - - if (this.renderInteractiveForms) { - var storedData = storage.getValue(id, { - value: this.data.fieldValue, - valueAsString: this.data.fieldValue - }); - var textContent = storedData.valueAsString || storedData.value || ""; - var elementData = { - userValue: null, - formattedValue: null, - beforeInputSelectionRange: null, - beforeInputValue: null - }; - - if (this.data.multiLine) { - element = document.createElement("textarea"); - element.textContent = textContent; - } else { - element = document.createElement("input"); - element.type = "text"; - element.setAttribute("value", textContent); - } - - elementData.userValue = textContent; - element.setAttribute("id", id); - element.addEventListener("input", function (event) { - storage.setValue(id, { - value: event.target.value - }); - }); - - var blurListener = function blurListener(event) { - if (elementData.formattedValue) { - event.target.value = elementData.formattedValue; - } - - event.target.setSelectionRange(0, 0); - elementData.beforeInputSelectionRange = null; - }; - - if (this.enableScripting && this.hasJSActions) { - var _this$data$actions2; - - element.addEventListener("focus", function (event) { - if (elementData.userValue) { - event.target.value = elementData.userValue; - } - }); - element.addEventListener("updatefromsandbox", function (event) { - var detail = event.detail; - var actions = { - value: function value() { - elementData.userValue = detail.value || ""; - storage.setValue(id, { - value: elementData.userValue.toString() - }); - - if (!elementData.formattedValue) { - event.target.value = elementData.userValue; - } - }, - valueAsString: function valueAsString() { - elementData.formattedValue = detail.valueAsString || ""; - - if (event.target !== document.activeElement) { - event.target.value = elementData.formattedValue; - } - - storage.setValue(id, { - formattedValue: elementData.formattedValue - }); - }, - focus: function focus() { - setTimeout(function () { - return event.target.focus({ - preventScroll: false - }); - }, 0); - }, - userName: function userName() { - event.target.title = detail.userName; - }, - hidden: function hidden() { - event.target.style.visibility = detail.hidden ? "hidden" : "visible"; - storage.setValue(id, { - hidden: detail.hidden - }); - }, - editable: function editable() { - event.target.disabled = !detail.editable; - }, - selRange: function selRange() { - var _detail$selRange = _slicedToArray(detail.selRange, 2), - selStart = _detail$selRange[0], - selEnd = _detail$selRange[1]; - - if (selStart >= 0 && selEnd < event.target.value.length) { - event.target.setSelectionRange(selStart, selEnd); - } - } - }; - Object.keys(detail).filter(function (name) { - return name in actions; - }).forEach(function (name) { - return actions[name](); - }); - - _this5._setColor(event); - }); - element.addEventListener("keydown", function (event) { - var _this5$linkService$ev; - - elementData.beforeInputValue = event.target.value; - var commitKey = -1; - - if (event.key === "Escape") { - commitKey = 0; - } else if (event.key === "Enter") { - commitKey = 2; - } else if (event.key === "Tab") { - commitKey = 3; - } - - if (commitKey === -1) { - return; - } - - elementData.userValue = event.target.value; - (_this5$linkService$ev = _this5.linkService.eventBus) === null || _this5$linkService$ev === void 0 ? void 0 : _this5$linkService$ev.dispatch("dispatcheventinsandbox", { - source: _this5, - detail: { - id: id, - name: "Keystroke", - value: event.target.value, - willCommit: true, - commitKey: commitKey, - selStart: event.target.selectionStart, - selEnd: event.target.selectionEnd - } - }); - }); - var _blurListener = blurListener; - blurListener = null; - element.addEventListener("blur", function (event) { - if (_this5._mouseState.isDown) { - var _this5$linkService$ev2; - - elementData.userValue = event.target.value; - (_this5$linkService$ev2 = _this5.linkService.eventBus) === null || _this5$linkService$ev2 === void 0 ? void 0 : _this5$linkService$ev2.dispatch("dispatcheventinsandbox", { - source: _this5, - detail: { - id: id, - name: "Keystroke", - value: event.target.value, - willCommit: true, - commitKey: 1, - selStart: event.target.selectionStart, - selEnd: event.target.selectionEnd - } - }); - } - - _blurListener(event); - }); - element.addEventListener("mousedown", function (event) { - elementData.beforeInputValue = event.target.value; - elementData.beforeInputSelectionRange = null; - }); - element.addEventListener("keyup", function (event) { - if (event.target.selectionStart === event.target.selectionEnd) { - elementData.beforeInputSelectionRange = null; - } - }); - element.addEventListener("select", function (event) { - elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd]; - }); - - if ((_this$data$actions2 = this.data.actions) !== null && _this$data$actions2 !== void 0 && _this$data$actions2.Keystroke) { - element.addEventListener("input", function (event) { - var _this5$linkService$ev3; - - var selStart = -1; - var selEnd = -1; - - if (elementData.beforeInputSelectionRange) { - var _elementData$beforeIn = _slicedToArray(elementData.beforeInputSelectionRange, 2); - - selStart = _elementData$beforeIn[0]; - selEnd = _elementData$beforeIn[1]; - } - - (_this5$linkService$ev3 = _this5.linkService.eventBus) === null || _this5$linkService$ev3 === void 0 ? void 0 : _this5$linkService$ev3.dispatch("dispatcheventinsandbox", { - source: _this5, - detail: { - id: id, - name: "Keystroke", - value: elementData.beforeInputValue, - change: event.data, - willCommit: false, - selStart: selStart, - selEnd: selEnd - } - }); - }); - } - - this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], function (event) { - return event.target.value; - }); - } - - if (blurListener) { - element.addEventListener("blur", blurListener); - } - - element.disabled = this.data.readOnly; - element.name = this.data.fieldName; - - if (this.data.maxLen !== null) { - element.maxLength = this.data.maxLen; - } - - if (this.data.comb) { - var fieldWidth = this.data.rect[2] - this.data.rect[0]; - var combWidth = fieldWidth / this.data.maxLen; - element.classList.add("comb"); - element.style.letterSpacing = "calc(".concat(combWidth, "px - 1ch)"); - } - } else { - element = document.createElement("div"); - element.textContent = this.data.fieldValue; - element.style.verticalAlign = "middle"; - element.style.display = "table-cell"; - } - - this._setTextStyle(element); - - this.container.appendChild(element); - return this.container; - } - }, { - key: "_setTextStyle", - value: function _setTextStyle(element) { - var TEXT_ALIGNMENT = ["left", "center", "right"]; - var _this$data$defaultApp = this.data.defaultAppearanceData, - fontSize = _this$data$defaultApp.fontSize, - fontColor = _this$data$defaultApp.fontColor; - var style = element.style; - - if (fontSize) { - style.fontSize = "".concat(fontSize, "px"); - } - - style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); - - if (this.data.textAlignment !== null) { - style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; - } - } - }]); - - return TextWidgetAnnotationElement; - }(WidgetAnnotationElement); - - var CheckboxWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem2) { - _inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2); - - var _super5 = _createSuper(CheckboxWidgetAnnotationElement); - - function CheckboxWidgetAnnotationElement(parameters) { - _classCallCheck(this, CheckboxWidgetAnnotationElement); - - return _super5.call(this, parameters, { - isRenderable: parameters.renderInteractiveForms - }); - } - - _createClass(CheckboxWidgetAnnotationElement, [{ - key: "render", - value: function render() { - var _this6 = this; - - var storage = this.annotationStorage; - var data = this.data; - var id = data.id; - var value = storage.getValue(id, { - value: data.fieldValue && (data.exportValue && data.exportValue === data.fieldValue || !data.exportValue && data.fieldValue !== "Off") - }).value; - this.container.className = "buttonWidgetAnnotation checkBox"; - var element = document.createElement("input"); - element.disabled = data.readOnly; - element.type = "checkbox"; - element.name = this.data.fieldName; - - if (value) { - element.setAttribute("checked", true); - } - - element.setAttribute("id", id); - element.addEventListener("change", function (event) { - var name = event.target.name; - - var _iterator3 = _createForOfIteratorHelper(document.getElementsByName(name)), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var checkbox = _step3.value; - - if (checkbox !== event.target) { - checkbox.checked = false; - storage.setValue(checkbox.parentNode.getAttribute("data-annotation-id"), { - value: false - }); - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - storage.setValue(id, { - value: event.target.checked - }); - }); - - if (this.enableScripting && this.hasJSActions) { - element.addEventListener("updatefromsandbox", function (event) { - var detail = event.detail; - var actions = { - value: function value() { - event.target.checked = detail.value !== "Off"; - storage.setValue(id, { - value: event.target.checked - }); - }, - focus: function focus() { - setTimeout(function () { - return event.target.focus({ - preventScroll: false - }); - }, 0); - }, - hidden: function hidden() { - event.target.style.visibility = detail.hidden ? "hidden" : "visible"; - storage.setValue(id, { - hidden: detail.hidden - }); - }, - editable: function editable() { - event.target.disabled = !detail.editable; - } - }; - Object.keys(detail).filter(function (name) { - return name in actions; - }).forEach(function (name) { - return actions[name](); - }); - - _this6._setColor(event); - }); - - this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], function (event) { - return event.target.checked; - }); - } - - this.container.appendChild(element); - return this.container; - } - }]); - - return CheckboxWidgetAnnotationElement; - }(WidgetAnnotationElement); - - var RadioButtonWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem3) { - _inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3); - - var _super6 = _createSuper(RadioButtonWidgetAnnotationElement); - - function RadioButtonWidgetAnnotationElement(parameters) { - _classCallCheck(this, RadioButtonWidgetAnnotationElement); - - return _super6.call(this, parameters, { - isRenderable: parameters.renderInteractiveForms - }); - } - - _createClass(RadioButtonWidgetAnnotationElement, [{ - key: "render", - value: function render() { - var _this7 = this; - - this.container.className = "buttonWidgetAnnotation radioButton"; - var storage = this.annotationStorage; - var data = this.data; - var id = data.id; - var value = storage.getValue(id, { - value: data.fieldValue === data.buttonValue - }).value; - var element = document.createElement("input"); - element.disabled = data.readOnly; - element.type = "radio"; - element.name = data.fieldName; - - if (value) { - element.setAttribute("checked", true); - } - - element.setAttribute("id", id); - element.addEventListener("change", function (event) { - var target = event.target; - - var _iterator4 = _createForOfIteratorHelper(document.getElementsByName(target.name)), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var radio = _step4.value; - - if (radio !== target) { - storage.setValue(radio.getAttribute("id"), { - value: false - }); - } - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - storage.setValue(id, { - value: target.checked - }); - }); - - if (this.enableScripting && this.hasJSActions) { - var pdfButtonValue = data.buttonValue; - element.addEventListener("updatefromsandbox", function (event) { - var detail = event.detail; - var actions = { - value: function value() { - var checked = pdfButtonValue === detail.value; - - var _iterator5 = _createForOfIteratorHelper(document.getElementsByName(event.target.name)), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var radio = _step5.value; - var radioId = radio.getAttribute("id"); - radio.checked = radioId === id && checked; - storage.setValue(radioId, { - value: radio.checked - }); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - }, - focus: function focus() { - setTimeout(function () { - return event.target.focus({ - preventScroll: false - }); - }, 0); - }, - hidden: function hidden() { - event.target.style.visibility = detail.hidden ? "hidden" : "visible"; - storage.setValue(id, { - hidden: detail.hidden - }); - }, - editable: function editable() { - event.target.disabled = !detail.editable; - } - }; - Object.keys(detail).filter(function (name) { - return name in actions; - }).forEach(function (name) { - return actions[name](); - }); - - _this7._setColor(event); - }); - - this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], function (event) { - return event.target.checked; - }); - } - - this.container.appendChild(element); - return this.container; - } - }]); - - return RadioButtonWidgetAnnotationElement; - }(WidgetAnnotationElement); - - var PushButtonWidgetAnnotationElement = /*#__PURE__*/function (_LinkAnnotationElemen) { - _inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen); - - var _super7 = _createSuper(PushButtonWidgetAnnotationElement); - - function PushButtonWidgetAnnotationElement() { - _classCallCheck(this, PushButtonWidgetAnnotationElement); - - return _super7.apply(this, arguments); - } - - _createClass(PushButtonWidgetAnnotationElement, [{ - key: "render", - value: function render() { - var container = _get(_getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), "render", this).call(this); - - container.className = "buttonWidgetAnnotation pushButton"; - - if (this.data.alternativeText) { - container.title = this.data.alternativeText; - } - - return container; - } - }]); - - return PushButtonWidgetAnnotationElement; - }(LinkAnnotationElement); - - var ChoiceWidgetAnnotationElement = /*#__PURE__*/function (_WidgetAnnotationElem4) { - _inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4); - - var _super8 = _createSuper(ChoiceWidgetAnnotationElement); - - function ChoiceWidgetAnnotationElement(parameters) { - _classCallCheck(this, ChoiceWidgetAnnotationElement); - - return _super8.call(this, parameters, { - isRenderable: parameters.renderInteractiveForms - }); - } - - _createClass(ChoiceWidgetAnnotationElement, [{ - key: "render", - value: function render() { - var _this8 = this; - - this.container.className = "choiceWidgetAnnotation"; - var storage = this.annotationStorage; - var id = this.data.id; - storage.getValue(id, { - value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined - }); - var selectElement = document.createElement("select"); - selectElement.disabled = this.data.readOnly; - selectElement.name = this.data.fieldName; - selectElement.setAttribute("id", id); - - if (!this.data.combo) { - selectElement.size = this.data.options.length; - - if (this.data.multiSelect) { - selectElement.multiple = true; - } - } - - var _iterator6 = _createForOfIteratorHelper(this.data.options), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var option = _step6.value; - var optionElement = document.createElement("option"); - optionElement.textContent = option.displayValue; - optionElement.value = option.exportValue; - - if (this.data.fieldValue.includes(option.exportValue)) { - optionElement.setAttribute("selected", true); - } - - selectElement.appendChild(optionElement); - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - - var getValue = function getValue(event, isExport) { - var name = isExport ? "value" : "textContent"; - var options = event.target.options; - - if (!event.target.multiple) { - return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; - } - - return Array.prototype.filter.call(options, function (option) { - return option.selected; - }).map(function (option) { - return option[name]; - }); - }; - - var getItems = function getItems(event) { - var options = event.target.options; - return Array.prototype.map.call(options, function (option) { - return { - displayValue: option.textContent, - exportValue: option.value - }; - }); - }; - - if (this.enableScripting && this.hasJSActions) { - selectElement.addEventListener("updatefromsandbox", function (event) { - var detail = event.detail; - var actions = { - value: function value() { - var options = selectElement.options; - var value = detail.value; - var values = new Set(Array.isArray(value) ? value : [value]); - Array.prototype.forEach.call(options, function (option) { - option.selected = values.has(option.value); - }); - storage.setValue(id, { - value: getValue(event, true) - }); - }, - multipleSelection: function multipleSelection() { - selectElement.multiple = true; - }, - remove: function remove() { - var options = selectElement.options; - var index = detail.remove; - options[index].selected = false; - selectElement.remove(index); - - if (options.length > 0) { - var i = Array.prototype.findIndex.call(options, function (option) { - return option.selected; - }); - - if (i === -1) { - options[0].selected = true; - } - } - - storage.setValue(id, { - value: getValue(event, true), - items: getItems(event) - }); - }, - clear: function clear() { - while (selectElement.length !== 0) { - selectElement.remove(0); - } - - storage.setValue(id, { - value: null, - items: [] - }); - }, - insert: function insert() { - var _detail$insert = detail.insert, - index = _detail$insert.index, - displayValue = _detail$insert.displayValue, - exportValue = _detail$insert.exportValue; - var optionElement = document.createElement("option"); - optionElement.textContent = displayValue; - optionElement.value = exportValue; - selectElement.insertBefore(optionElement, selectElement.children[index]); - storage.setValue(id, { - value: getValue(event, true), - items: getItems(event) - }); - }, - items: function items() { - var items = detail.items; - - while (selectElement.length !== 0) { - selectElement.remove(0); - } - - var _iterator7 = _createForOfIteratorHelper(items), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var item = _step7.value; - var displayValue = item.displayValue, - exportValue = item.exportValue; - var optionElement = document.createElement("option"); - optionElement.textContent = displayValue; - optionElement.value = exportValue; - selectElement.appendChild(optionElement); - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - if (selectElement.options.length > 0) { - selectElement.options[0].selected = true; - } - - storage.setValue(id, { - value: getValue(event, true), - items: getItems(event) - }); - }, - indices: function indices() { - var indices = new Set(detail.indices); - var options = event.target.options; - Array.prototype.forEach.call(options, function (option, i) { - option.selected = indices.has(i); - }); - storage.setValue(id, { - value: getValue(event, true) - }); - }, - focus: function focus() { - setTimeout(function () { - return event.target.focus({ - preventScroll: false - }); - }, 0); - }, - hidden: function hidden() { - event.target.style.visibility = detail.hidden ? "hidden" : "visible"; - storage.setValue(id, { - hidden: detail.hidden - }); - }, - editable: function editable() { - event.target.disabled = !detail.editable; - } - }; - Object.keys(detail).filter(function (name) { - return name in actions; - }).forEach(function (name) { - return actions[name](); - }); - - _this8._setColor(event); - }); - selectElement.addEventListener("input", function (event) { - var _this8$linkService$ev; - - var exportValue = getValue(event, true); - var value = getValue(event, false); - storage.setValue(id, { - value: exportValue - }); - (_this8$linkService$ev = _this8.linkService.eventBus) === null || _this8$linkService$ev === void 0 ? void 0 : _this8$linkService$ev.dispatch("dispatcheventinsandbox", { - source: _this8, - detail: { - id: id, - name: "Keystroke", - value: value, - changeEx: exportValue, - willCommit: true, - commitKey: 1, - keyDown: false - } - }); - }); - - this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], function (event) { - return event.target.checked; - }); - } else { - selectElement.addEventListener("input", function (event) { - storage.setValue(id, { - value: getValue(event) - }); - }); - } - - this.container.appendChild(selectElement); - return this.container; - } - }]); - - return ChoiceWidgetAnnotationElement; - }(WidgetAnnotationElement); - - var PopupAnnotationElement = /*#__PURE__*/function (_AnnotationElement4) { - _inherits(PopupAnnotationElement, _AnnotationElement4); - - var _super9 = _createSuper(PopupAnnotationElement); - - function PopupAnnotationElement(parameters) { - _classCallCheck(this, PopupAnnotationElement); - - var isRenderable = !!(parameters.data.title || parameters.data.contents); - return _super9.call(this, parameters, { - isRenderable: isRenderable - }); - } - - _createClass(PopupAnnotationElement, [{ - key: "render", - value: function render() { - var IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]; - this.container.className = "popupAnnotation"; - - if (IGNORE_TYPES.includes(this.data.parentType)) { - return this.container; - } - - var selector = "[data-annotation-id=\"".concat(this.data.parentId, "\"]"); - var parentElements = this.layer.querySelectorAll(selector); - - if (parentElements.length === 0) { - return this.container; - } - - var popup = new PopupElement({ - container: this.container, - trigger: Array.from(parentElements), - color: this.data.color, - title: this.data.title, - modificationDate: this.data.modificationDate, - contents: this.data.contents - }); - var page = this.page; - - var rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]); - - var popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0]; - var popupTop = rect[1]; - this.container.style.transformOrigin = "".concat(-popupLeft, "px ").concat(-popupTop, "px"); - this.container.style.left = "".concat(popupLeft, "px"); - this.container.style.top = "".concat(popupTop, "px"); - this.container.appendChild(popup.render()); - return this.container; - } - }]); - - return PopupAnnotationElement; - }(AnnotationElement); - - var PopupElement = /*#__PURE__*/function () { - function PopupElement(parameters) { - _classCallCheck(this, PopupElement); - - this.container = parameters.container; - this.trigger = parameters.trigger; - this.color = parameters.color; - this.title = parameters.title; - this.modificationDate = parameters.modificationDate; - this.contents = parameters.contents; - this.hideWrapper = parameters.hideWrapper || false; - this.pinned = false; - } - - _createClass(PopupElement, [{ - key: "render", - value: function render() { - var _this9 = this; - - var BACKGROUND_ENLIGHT = 0.7; - var wrapper = document.createElement("div"); - wrapper.className = "popupWrapper"; - this.hideElement = this.hideWrapper ? wrapper : this.container; - this.hideElement.hidden = true; - var popup = document.createElement("div"); - popup.className = "popup"; - var color = this.color; - - if (color) { - var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; - var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; - var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0); - } - - var title = document.createElement("h1"); - title.textContent = this.title; - popup.appendChild(title); - - var dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); - - if (dateObject) { - var modificationDate = document.createElement("span"); - modificationDate.textContent = "{{date}}, {{time}}"; - modificationDate.dataset.l10nId = "annotation_date_string"; - modificationDate.dataset.l10nArgs = JSON.stringify({ - date: dateObject.toLocaleDateString(), - time: dateObject.toLocaleTimeString() - }); - popup.appendChild(modificationDate); - } - - var contents = this._formatContents(this.contents); - - popup.appendChild(contents); - - if (!Array.isArray(this.trigger)) { - this.trigger = [this.trigger]; - } - - this.trigger.forEach(function (element) { - element.addEventListener("click", _this9._toggle.bind(_this9)); - element.addEventListener("mouseover", _this9._show.bind(_this9, false)); - element.addEventListener("mouseout", _this9._hide.bind(_this9, false)); - }); - popup.addEventListener("click", this._hide.bind(this, true)); - wrapper.appendChild(popup); - return wrapper; - } - }, { - key: "_formatContents", - value: function _formatContents(contents) { - var p = document.createElement("p"); - var lines = contents.split(/(?:\r\n?|\n)/); - - for (var i = 0, ii = lines.length; i < ii; ++i) { - var line = lines[i]; - p.appendChild(document.createTextNode(line)); - - if (i < ii - 1) { - p.appendChild(document.createElement("br")); - } - } - - return p; - } - }, { - key: "_toggle", - value: function _toggle() { - if (this.pinned) { - this._hide(true); - } else { - this._show(true); - } - } - }, { - key: "_show", - value: function _show() { - var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (pin) { - this.pinned = true; - } - - if (this.hideElement.hidden) { - this.hideElement.hidden = false; - this.container.style.zIndex += 1; - } - } - }, { - key: "_hide", - value: function _hide() { - var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - if (unpin) { - this.pinned = false; - } - - if (!this.hideElement.hidden && !this.pinned) { - this.hideElement.hidden = true; - this.container.style.zIndex -= 1; - } - } - }]); - - return PopupElement; - }(); - - var FreeTextAnnotationElement = /*#__PURE__*/function (_AnnotationElement5) { - _inherits(FreeTextAnnotationElement, _AnnotationElement5); - - var _super10 = _createSuper(FreeTextAnnotationElement); - - function FreeTextAnnotationElement(parameters) { - _classCallCheck(this, FreeTextAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super10.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true - }); - } - - _createClass(FreeTextAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = "freeTextAnnotation"; - - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - return this.container; - } - }]); - - return FreeTextAnnotationElement; - }(AnnotationElement); - - var LineAnnotationElement = /*#__PURE__*/function (_AnnotationElement6) { - _inherits(LineAnnotationElement, _AnnotationElement6); - - var _super11 = _createSuper(LineAnnotationElement); - - function LineAnnotationElement(parameters) { - _classCallCheck(this, LineAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super11.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true - }); - } - - _createClass(LineAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = "lineAnnotation"; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var line = this.svgFactory.createElement("svg:line"); - line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]); - line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]); - line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]); - line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]); - line.setAttribute("stroke-width", data.borderStyle.width || 1); - line.setAttribute("stroke", "transparent"); - svg.appendChild(line); - this.container.append(svg); - - this._createPopup(line, data); - - return this.container; - } - }]); - - return LineAnnotationElement; - }(AnnotationElement); - - var SquareAnnotationElement = /*#__PURE__*/function (_AnnotationElement7) { - _inherits(SquareAnnotationElement, _AnnotationElement7); - - var _super12 = _createSuper(SquareAnnotationElement); - - function SquareAnnotationElement(parameters) { - _classCallCheck(this, SquareAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super12.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true - }); - } - - _createClass(SquareAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = "squareAnnotation"; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var borderWidth = data.borderStyle.width; - var square = this.svgFactory.createElement("svg:rect"); - square.setAttribute("x", borderWidth / 2); - square.setAttribute("y", borderWidth / 2); - square.setAttribute("width", width - borderWidth); - square.setAttribute("height", height - borderWidth); - square.setAttribute("stroke-width", borderWidth || 1); - square.setAttribute("stroke", "transparent"); - square.setAttribute("fill", "none"); - svg.appendChild(square); - this.container.append(svg); - - this._createPopup(square, data); - - return this.container; - } - }]); - - return SquareAnnotationElement; - }(AnnotationElement); - - var CircleAnnotationElement = /*#__PURE__*/function (_AnnotationElement8) { - _inherits(CircleAnnotationElement, _AnnotationElement8); - - var _super13 = _createSuper(CircleAnnotationElement); - - function CircleAnnotationElement(parameters) { - _classCallCheck(this, CircleAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super13.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true - }); - } - - _createClass(CircleAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = "circleAnnotation"; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var borderWidth = data.borderStyle.width; - var circle = this.svgFactory.createElement("svg:ellipse"); - circle.setAttribute("cx", width / 2); - circle.setAttribute("cy", height / 2); - circle.setAttribute("rx", width / 2 - borderWidth / 2); - circle.setAttribute("ry", height / 2 - borderWidth / 2); - circle.setAttribute("stroke-width", borderWidth || 1); - circle.setAttribute("stroke", "transparent"); - circle.setAttribute("fill", "none"); - svg.appendChild(circle); - this.container.append(svg); - - this._createPopup(circle, data); - - return this.container; - } - }]); - - return CircleAnnotationElement; - }(AnnotationElement); - - var PolylineAnnotationElement = /*#__PURE__*/function (_AnnotationElement9) { - _inherits(PolylineAnnotationElement, _AnnotationElement9); - - var _super14 = _createSuper(PolylineAnnotationElement); - - function PolylineAnnotationElement(parameters) { - var _this10; - - _classCallCheck(this, PolylineAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - _this10 = _super14.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true - }); - _this10.containerClassName = "polylineAnnotation"; - _this10.svgElementName = "svg:polyline"; - return _this10; - } - - _createClass(PolylineAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = this.containerClassName; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - var points = []; - - var _iterator8 = _createForOfIteratorHelper(data.vertices), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var coordinate = _step8.value; - var x = coordinate.x - data.rect[0]; - var y = data.rect[3] - coordinate.y; - points.push(x + "," + y); - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - - points = points.join(" "); - var polyline = this.svgFactory.createElement(this.svgElementName); - polyline.setAttribute("points", points); - polyline.setAttribute("stroke-width", data.borderStyle.width || 1); - polyline.setAttribute("stroke", "transparent"); - polyline.setAttribute("fill", "none"); - svg.appendChild(polyline); - this.container.append(svg); - - this._createPopup(polyline, data); - - return this.container; - } - }]); - - return PolylineAnnotationElement; - }(AnnotationElement); - - var PolygonAnnotationElement = /*#__PURE__*/function (_PolylineAnnotationEl) { - _inherits(PolygonAnnotationElement, _PolylineAnnotationEl); - - var _super15 = _createSuper(PolygonAnnotationElement); - - function PolygonAnnotationElement(parameters) { - var _this11; - - _classCallCheck(this, PolygonAnnotationElement); - - _this11 = _super15.call(this, parameters); - _this11.containerClassName = "polygonAnnotation"; - _this11.svgElementName = "svg:polygon"; - return _this11; - } - - return PolygonAnnotationElement; - }(PolylineAnnotationElement); - - var CaretAnnotationElement = /*#__PURE__*/function (_AnnotationElement10) { - _inherits(CaretAnnotationElement, _AnnotationElement10); - - var _super16 = _createSuper(CaretAnnotationElement); - - function CaretAnnotationElement(parameters) { - _classCallCheck(this, CaretAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super16.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true - }); - } - - _createClass(CaretAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = "caretAnnotation"; - - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - return this.container; - } - }]); - - return CaretAnnotationElement; - }(AnnotationElement); - - var InkAnnotationElement = /*#__PURE__*/function (_AnnotationElement11) { - _inherits(InkAnnotationElement, _AnnotationElement11); - - var _super17 = _createSuper(InkAnnotationElement); - - function InkAnnotationElement(parameters) { - var _this12; - - _classCallCheck(this, InkAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - _this12 = _super17.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true - }); - _this12.containerClassName = "inkAnnotation"; - _this12.svgElementName = "svg:polyline"; - return _this12; - } - - _createClass(InkAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = this.containerClassName; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = this.svgFactory.create(width, height); - - var _iterator9 = _createForOfIteratorHelper(data.inkLists), - _step9; - - try { - for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { - var inkList = _step9.value; - var points = []; - - var _iterator10 = _createForOfIteratorHelper(inkList), - _step10; - - try { - for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { - var coordinate = _step10.value; - var x = coordinate.x - data.rect[0]; - var y = data.rect[3] - coordinate.y; - points.push("".concat(x, ",").concat(y)); - } - } catch (err) { - _iterator10.e(err); - } finally { - _iterator10.f(); - } - - points = points.join(" "); - var polyline = this.svgFactory.createElement(this.svgElementName); - polyline.setAttribute("points", points); - polyline.setAttribute("stroke-width", data.borderStyle.width || 1); - polyline.setAttribute("stroke", "transparent"); - polyline.setAttribute("fill", "none"); - - this._createPopup(polyline, data); - - svg.appendChild(polyline); - } - } catch (err) { - _iterator9.e(err); - } finally { - _iterator9.f(); - } - - this.container.append(svg); - return this.container; - } - }]); - - return InkAnnotationElement; - }(AnnotationElement); - - var HighlightAnnotationElement = /*#__PURE__*/function (_AnnotationElement12) { - _inherits(HighlightAnnotationElement, _AnnotationElement12); - - var _super18 = _createSuper(HighlightAnnotationElement); - - function HighlightAnnotationElement(parameters) { - _classCallCheck(this, HighlightAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super18.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true, - createQuadrilaterals: true - }); - } - - _createClass(HighlightAnnotationElement, [{ - key: "render", - value: function render() { - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("highlightAnnotation"); - } - - this.container.className = "highlightAnnotation"; - return this.container; - } - }]); - - return HighlightAnnotationElement; - }(AnnotationElement); - - var UnderlineAnnotationElement = /*#__PURE__*/function (_AnnotationElement13) { - _inherits(UnderlineAnnotationElement, _AnnotationElement13); - - var _super19 = _createSuper(UnderlineAnnotationElement); - - function UnderlineAnnotationElement(parameters) { - _classCallCheck(this, UnderlineAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super19.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true, - createQuadrilaterals: true - }); - } - - _createClass(UnderlineAnnotationElement, [{ - key: "render", - value: function render() { - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("underlineAnnotation"); - } - - this.container.className = "underlineAnnotation"; - return this.container; - } - }]); - - return UnderlineAnnotationElement; - }(AnnotationElement); - - var SquigglyAnnotationElement = /*#__PURE__*/function (_AnnotationElement14) { - _inherits(SquigglyAnnotationElement, _AnnotationElement14); - - var _super20 = _createSuper(SquigglyAnnotationElement); - - function SquigglyAnnotationElement(parameters) { - _classCallCheck(this, SquigglyAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super20.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true, - createQuadrilaterals: true - }); - } - - _createClass(SquigglyAnnotationElement, [{ - key: "render", - value: function render() { - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("squigglyAnnotation"); - } - - this.container.className = "squigglyAnnotation"; - return this.container; - } - }]); - - return SquigglyAnnotationElement; - }(AnnotationElement); - - var StrikeOutAnnotationElement = /*#__PURE__*/function (_AnnotationElement15) { - _inherits(StrikeOutAnnotationElement, _AnnotationElement15); - - var _super21 = _createSuper(StrikeOutAnnotationElement); - - function StrikeOutAnnotationElement(parameters) { - _classCallCheck(this, StrikeOutAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super21.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true, - createQuadrilaterals: true - }); - } - - _createClass(StrikeOutAnnotationElement, [{ - key: "render", - value: function render() { - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("strikeoutAnnotation"); - } - - this.container.className = "strikeoutAnnotation"; - return this.container; - } - }]); - - return StrikeOutAnnotationElement; - }(AnnotationElement); - - var StampAnnotationElement = /*#__PURE__*/function (_AnnotationElement16) { - _inherits(StampAnnotationElement, _AnnotationElement16); - - var _super22 = _createSuper(StampAnnotationElement); - - function StampAnnotationElement(parameters) { - _classCallCheck(this, StampAnnotationElement); - - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - return _super22.call(this, parameters, { - isRenderable: isRenderable, - ignoreBorder: true - }); - } - - _createClass(StampAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = "stampAnnotation"; - - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - return this.container; - } - }]); - - return StampAnnotationElement; - }(AnnotationElement); - - var FileAttachmentAnnotationElement = /*#__PURE__*/function (_AnnotationElement17) { - _inherits(FileAttachmentAnnotationElement, _AnnotationElement17); - - var _super23 = _createSuper(FileAttachmentAnnotationElement); - - function FileAttachmentAnnotationElement(parameters) { - var _this13$linkService$e; - - var _this13; - - _classCallCheck(this, FileAttachmentAnnotationElement); - - _this13 = _super23.call(this, parameters, { - isRenderable: true - }); - var _this13$data$file = _this13.data.file, - filename = _this13$data$file.filename, - content = _this13$data$file.content; - _this13.filename = (0, _display_utils.getFilenameFromUrl)(filename); - _this13.content = content; - (_this13$linkService$e = _this13.linkService.eventBus) === null || _this13$linkService$e === void 0 ? void 0 : _this13$linkService$e.dispatch("fileattachmentannotation", { - source: _assertThisInitialized(_this13), - id: (0, _util.stringToPDFString)(filename), - filename: filename, - content: content - }); - return _this13; - } - - _createClass(FileAttachmentAnnotationElement, [{ - key: "render", - value: function render() { - this.container.className = "fileAttachmentAnnotation"; - var trigger = document.createElement("div"); - trigger.style.height = this.container.style.height; - trigger.style.width = this.container.style.width; - trigger.addEventListener("dblclick", this._download.bind(this)); - - if (!this.data.hasPopup && (this.data.title || this.data.contents)) { - this._createPopup(trigger, this.data); - } - - this.container.appendChild(trigger); - return this.container; - } - }, { - key: "_download", - value: function _download() { - var _this$downloadManager; - - (_this$downloadManager = this.downloadManager) === null || _this$downloadManager === void 0 ? void 0 : _this$downloadManager.openOrDownloadData(this.container, this.content, this.filename); - } - }]); - - return FileAttachmentAnnotationElement; - }(AnnotationElement); - - var AnnotationLayer = /*#__PURE__*/function () { - function AnnotationLayer() { - _classCallCheck(this, AnnotationLayer); - } - - _createClass(AnnotationLayer, null, [{ - key: "render", - value: function render(parameters) { - var sortedAnnotations = [], - popupAnnotations = []; - - var _iterator11 = _createForOfIteratorHelper(parameters.annotations), - _step11; - - try { - for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { - var _data = _step11.value; - - if (!_data) { - continue; - } - - if (_data.annotationType === _util.AnnotationType.POPUP) { - popupAnnotations.push(_data); - continue; - } - - sortedAnnotations.push(_data); - } - } catch (err) { - _iterator11.e(err); - } finally { - _iterator11.f(); - } - - if (popupAnnotations.length) { - sortedAnnotations.push.apply(sortedAnnotations, popupAnnotations); - } - - for (var _i3 = 0, _sortedAnnotations = sortedAnnotations; _i3 < _sortedAnnotations.length; _i3++) { - var data = _sortedAnnotations[_i3]; - var element = AnnotationElementFactory.create({ - data: data, - layer: parameters.div, - page: parameters.page, - viewport: parameters.viewport, - linkService: parameters.linkService, - downloadManager: parameters.downloadManager, - imageResourcesPath: parameters.imageResourcesPath || "", - renderInteractiveForms: parameters.renderInteractiveForms !== false, - svgFactory: new _display_utils.DOMSVGFactory(), - annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), - enableScripting: parameters.enableScripting, - hasJSActions: parameters.hasJSActions, - mouseState: parameters.mouseState || { - isDown: false - } - }); - - if (element.isRenderable) { - var rendered = element.render(); - - if (data.hidden) { - rendered.style.visibility = "hidden"; - } - - if (Array.isArray(rendered)) { - var _iterator12 = _createForOfIteratorHelper(rendered), - _step12; - - try { - for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { - var renderedElement = _step12.value; - parameters.div.appendChild(renderedElement); - } - } catch (err) { - _iterator12.e(err); - } finally { - _iterator12.f(); - } - } else { - if (element instanceof PopupAnnotationElement) { - parameters.div.prepend(rendered); - } else { - parameters.div.appendChild(rendered); - } - } - } - } - } - }, { - key: "update", - value: function update(parameters) { - var transform = "matrix(".concat(parameters.viewport.transform.join(","), ")"); - - var _iterator13 = _createForOfIteratorHelper(parameters.annotations), - _step13; - - try { - for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { - var data = _step13.value; - var elements = parameters.div.querySelectorAll("[data-annotation-id=\"".concat(data.id, "\"]")); - - if (elements) { - elements.forEach(function (element) { - element.style.transform = transform; - }); - } - } - } catch (err) { - _iterator13.e(err); - } finally { - _iterator13.f(); - } - - parameters.div.hidden = false; - } - }]); - - return AnnotationLayer; - }(); - - exports.AnnotationLayer = AnnotationLayer; - - /***/ - }), - /* 139 */ - /***/ ((__unused_webpack_module, exports) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.ColorConverters = void 0; - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function makeColorComp(n) { - return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); - } - - var ColorConverters = /*#__PURE__*/function () { - function ColorConverters() { - _classCallCheck(this, ColorConverters); - } - - _createClass(ColorConverters, null, [{ - key: "CMYK_G", - value: function CMYK_G(_ref) { - var _ref2 = _slicedToArray(_ref, 4), - c = _ref2[0], - y = _ref2[1], - m = _ref2[2], - k = _ref2[3]; - - return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; - } - }, { - key: "G_CMYK", - value: function G_CMYK(_ref3) { - var _ref4 = _slicedToArray(_ref3, 1), - g = _ref4[0]; - - return ["CMYK", 0, 0, 0, 1 - g]; - } - }, { - key: "G_RGB", - value: function G_RGB(_ref5) { - var _ref6 = _slicedToArray(_ref5, 1), - g = _ref6[0]; - - return ["RGB", g, g, g]; - } - }, { - key: "G_HTML", - value: function G_HTML(_ref7) { - var _ref8 = _slicedToArray(_ref7, 1), - g = _ref8[0]; - - var G = makeColorComp(g); - return "#".concat(G).concat(G).concat(G); - } - }, { - key: "RGB_G", - value: function RGB_G(_ref9) { - var _ref10 = _slicedToArray(_ref9, 3), - r = _ref10[0], - g = _ref10[1], - b = _ref10[2]; - - return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; - } - }, { - key: "RGB_HTML", - value: function RGB_HTML(_ref11) { - var _ref12 = _slicedToArray(_ref11, 3), - r = _ref12[0], - g = _ref12[1], - b = _ref12[2]; - - var R = makeColorComp(r); - var G = makeColorComp(g); - var B = makeColorComp(b); - return "#".concat(R).concat(G).concat(B); - } - }, { - key: "T_HTML", - value: function T_HTML() { - return "#00000000"; - } - }, { - key: "CMYK_RGB", - value: function CMYK_RGB(_ref13) { - var _ref14 = _slicedToArray(_ref13, 4), - c = _ref14[0], - y = _ref14[1], - m = _ref14[2], - k = _ref14[3]; - - return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; - } - }, { - key: "CMYK_HTML", - value: function CMYK_HTML(components) { - return this.RGB_HTML(this.CMYK_RGB(components)); - } - }, { - key: "RGB_CMYK", - value: function RGB_CMYK(_ref15) { - var _ref16 = _slicedToArray(_ref15, 3), - r = _ref16[0], - g = _ref16[1], - b = _ref16[2]; - - var c = 1 - r; - var m = 1 - g; - var y = 1 - b; - var k = Math.min(c, m, y); - return ["CMYK", c, m, y, k]; - } - }]); - - return ColorConverters; - }(); - - exports.ColorConverters = ColorConverters; - - /***/ - }), - /* 140 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.renderTextLayer = void 0; - - var _util = __w_pdfjs_require__(4); - - var renderTextLayer = function renderTextLayerClosure() { - var MAX_TEXT_DIVS_TO_RENDER = 100000; - var DEFAULT_FONT_SIZE = 30; - var DEFAULT_FONT_ASCENT = 0.8; - var ascentCache = new Map(); - var NonWhitespaceRegexp = /\S/; - - function isAllWhitespace(str) { - return !NonWhitespaceRegexp.test(str); - } - - function getAscent(fontFamily, ctx) { - var cachedAscent = ascentCache.get(fontFamily); - - if (cachedAscent) { - return cachedAscent; - } - - ctx.save(); - ctx.font = "".concat(DEFAULT_FONT_SIZE, "px ").concat(fontFamily); - var metrics = ctx.measureText(""); - var ascent = metrics.fontBoundingBoxAscent; - var descent = Math.abs(metrics.fontBoundingBoxDescent); - - if (ascent) { - ctx.restore(); - var ratio = ascent / (ascent + descent); - ascentCache.set(fontFamily, ratio); - return ratio; - } - - ctx.strokeStyle = "red"; - ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); - ctx.strokeText("g", 0, 0); - var pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; - descent = 0; - - for (var i = pixels.length - 1 - 3; i >= 0; i -= 4) { - if (pixels[i] > 0) { - descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); - break; - } - } - - ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); - ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); - pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; - ascent = 0; - - for (var _i = 0, ii = pixels.length; _i < ii; _i += 4) { - if (pixels[_i] > 0) { - ascent = DEFAULT_FONT_SIZE - Math.floor(_i / 4 / DEFAULT_FONT_SIZE); - break; - } - } - - ctx.restore(); - - if (ascent) { - var _ratio = ascent / (ascent + descent); - - ascentCache.set(fontFamily, _ratio); - return _ratio; - } - - ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); - return DEFAULT_FONT_ASCENT; - } - - function appendText(task, geom, styles, ctx) { - var textDiv = document.createElement("span"); - var textDivProperties = { - angle: 0, - canvasWidth: 0, - isWhitespace: false, - originalTransform: null, - paddingBottom: 0, - paddingLeft: 0, - paddingRight: 0, - paddingTop: 0, - scale: 1 - }; - - task._textDivs.push(textDiv); - - if (isAllWhitespace(geom.str)) { - textDivProperties.isWhitespace = true; - - task._textDivProperties.set(textDiv, textDivProperties); - - return; - } - - var tx = _util.Util.transform(task._viewport.transform, geom.transform); - - var angle = Math.atan2(tx[1], tx[0]); - var style = styles[geom.fontName]; - - if (style.vertical) { - angle += Math.PI / 2; - } - - var fontHeight = Math.hypot(tx[2], tx[3]); - var fontAscent = fontHeight * getAscent(style.fontFamily, ctx); - var left, top; - - if (angle === 0) { - left = tx[4]; - top = tx[5] - fontAscent; - } else { - left = tx[4] + fontAscent * Math.sin(angle); - top = tx[5] - fontAscent * Math.cos(angle); - } - - textDiv.style.left = "".concat(left, "px"); - textDiv.style.top = "".concat(top, "px"); - textDiv.style.fontSize = "".concat(fontHeight, "px"); - textDiv.style.fontFamily = style.fontFamily; - textDiv.textContent = geom.str; - textDiv.dir = geom.dir; - - if (task._fontInspectorEnabled) { - textDiv.dataset.fontName = geom.fontName; - } - - if (angle !== 0) { - textDivProperties.angle = angle * (180 / Math.PI); - } - - var shouldScaleText = false; - - if (geom.str.length > 1) { - shouldScaleText = true; - } else if (geom.transform[0] !== geom.transform[3]) { - var absScaleX = Math.abs(geom.transform[0]), - absScaleY = Math.abs(geom.transform[3]); - - if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { - shouldScaleText = true; - } - } - - if (shouldScaleText) { - if (style.vertical) { - textDivProperties.canvasWidth = geom.height * task._viewport.scale; - } else { - textDivProperties.canvasWidth = geom.width * task._viewport.scale; - } - } - - task._textDivProperties.set(textDiv, textDivProperties); - - if (task._textContentStream) { - task._layoutText(textDiv); - } - - if (task._enhanceTextSelection) { - var angleCos = 1, - angleSin = 0; - - if (angle !== 0) { - angleCos = Math.cos(angle); - angleSin = Math.sin(angle); - } - - var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; - var divHeight = fontHeight; - var m, b; - - if (angle !== 0) { - m = [angleCos, angleSin, -angleSin, angleCos, left, top]; - b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); - } else { - b = [left, top, left + divWidth, top + divHeight]; - } - - task._bounds.push({ - left: b[0], - top: b[1], - right: b[2], - bottom: b[3], - div: textDiv, - size: [divWidth, divHeight], - m: m - }); - } - } - - function render(task) { - if (task._canceled) { - return; - } - - var textDivs = task._textDivs; - var capability = task._capability; - var textDivsLength = textDivs.length; - - if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { - task._renderingDone = true; - capability.resolve(); - return; - } - - if (!task._textContentStream) { - for (var i = 0; i < textDivsLength; i++) { - task._layoutText(textDivs[i]); - } - } - - task._renderingDone = true; - capability.resolve(); - } - - function findPositiveMin(ts, offset, count) { - var result = 0; - - for (var i = 0; i < count; i++) { - var t = ts[offset++]; - - if (t > 0) { - result = result ? Math.min(t, result) : t; - } - } - - return result; - } - - function expand(task) { - var bounds = task._bounds; - var viewport = task._viewport; - var expanded = expandBounds(viewport.width, viewport.height, bounds); - - var _loop = function _loop(i) { - var div = bounds[i].div; - - var divProperties = task._textDivProperties.get(div); - - if (divProperties.angle === 0) { - divProperties.paddingLeft = bounds[i].left - expanded[i].left; - divProperties.paddingTop = bounds[i].top - expanded[i].top; - divProperties.paddingRight = expanded[i].right - bounds[i].right; - divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; - - task._textDivProperties.set(div, divProperties); - - return "continue"; - } - - var e = expanded[i], - b = bounds[i]; - var m = b.m, - c = m[0], - s = m[1]; - var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; - var ts = new Float64Array(64); - points.forEach(function (p, j) { - var t = _util.Util.applyTransform(p, m); - - ts[j + 0] = c && (e.left - t[0]) / c; - ts[j + 4] = s && (e.top - t[1]) / s; - ts[j + 8] = c && (e.right - t[0]) / c; - ts[j + 12] = s && (e.bottom - t[1]) / s; - ts[j + 16] = s && (e.left - t[0]) / -s; - ts[j + 20] = c && (e.top - t[1]) / c; - ts[j + 24] = s && (e.right - t[0]) / -s; - ts[j + 28] = c && (e.bottom - t[1]) / c; - ts[j + 32] = c && (e.left - t[0]) / -c; - ts[j + 36] = s && (e.top - t[1]) / -s; - ts[j + 40] = c && (e.right - t[0]) / -c; - ts[j + 44] = s && (e.bottom - t[1]) / -s; - ts[j + 48] = s && (e.left - t[0]) / s; - ts[j + 52] = c && (e.top - t[1]) / -c; - ts[j + 56] = s && (e.right - t[0]) / s; - ts[j + 60] = c && (e.bottom - t[1]) / -c; - }); - var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); - divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; - divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; - divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; - divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; - - task._textDivProperties.set(div, divProperties); - }; - - for (var i = 0; i < expanded.length; i++) { - var _ret = _loop(i); - - if (_ret === "continue") continue; - } - } - - function expandBounds(width, height, boxes) { - var bounds = boxes.map(function (box, i) { - return { - x1: box.left, - y1: box.top, - x2: box.right, - y2: box.bottom, - index: i, - x1New: undefined, - x2New: undefined - }; - }); - expandBoundsLTR(width, bounds); - var expanded = new Array(boxes.length); - bounds.forEach(function (b) { - var i = b.index; - expanded[i] = { - left: b.x1New, - top: 0, - right: b.x2New, - bottom: 0 - }; - }); - boxes.map(function (box, i) { - var e = expanded[i], - b = bounds[i]; - b.x1 = box.top; - b.y1 = width - e.right; - b.x2 = box.bottom; - b.y2 = width - e.left; - b.index = i; - b.x1New = undefined; - b.x2New = undefined; - }); - expandBoundsLTR(height, bounds); - bounds.forEach(function (b) { - var i = b.index; - expanded[i].top = b.x1New; - expanded[i].bottom = b.x2New; - }); - return expanded; - } - - function expandBoundsLTR(width, bounds) { - bounds.sort(function (a, b) { - return a.x1 - b.x1 || a.index - b.index; - }); - var fakeBoundary = { - x1: -Infinity, - y1: -Infinity, - x2: 0, - y2: Infinity, - index: -1, - x1New: 0, - x2New: 0 - }; - var horizon = [{ - start: -Infinity, - end: Infinity, - boundary: fakeBoundary - }]; - bounds.forEach(function (boundary) { - var i = 0; - - while (i < horizon.length && horizon[i].end <= boundary.y1) { - i++; - } - - var j = horizon.length - 1; - - while (j >= 0 && horizon[j].start >= boundary.y2) { - j--; - } - - var horizonPart, affectedBoundary; - var q, - k, - maxXNew = -Infinity; - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - var xNew = void 0; - - if (affectedBoundary.x2 > boundary.x1) { - xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; - } else if (affectedBoundary.x2New === undefined) { - xNew = (affectedBoundary.x2 + boundary.x1) / 2; - } else { - xNew = affectedBoundary.x2New; - } - - if (xNew > maxXNew) { - maxXNew = xNew; - } - } - - boundary.x1New = maxXNew; - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - - if (affectedBoundary.x2New === undefined) { - if (affectedBoundary.x2 > boundary.x1) { - if (affectedBoundary.index > boundary.index) { - affectedBoundary.x2New = affectedBoundary.x2; - } - } else { - affectedBoundary.x2New = maxXNew; - } - } else if (affectedBoundary.x2New > maxXNew) { - affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); - } - } - - var changedHorizon = []; - var lastBoundary = null; - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; - - if (lastBoundary === useBoundary) { - changedHorizon[changedHorizon.length - 1].end = horizonPart.end; - } else { - changedHorizon.push({ - start: horizonPart.start, - end: horizonPart.end, - boundary: useBoundary - }); - lastBoundary = useBoundary; - } - } - - if (horizon[i].start < boundary.y1) { - changedHorizon[0].start = boundary.y1; - changedHorizon.unshift({ - start: horizon[i].start, - end: boundary.y1, - boundary: horizon[i].boundary - }); - } - - if (boundary.y2 < horizon[j].end) { - changedHorizon[changedHorizon.length - 1].end = boundary.y2; - changedHorizon.push({ - start: boundary.y2, - end: horizon[j].end, - boundary: horizon[j].boundary - }); - } - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - - if (affectedBoundary.x2New !== undefined) { - continue; - } - - var used = false; - - for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { - used = horizon[k].boundary === affectedBoundary; - } - - for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { - used = horizon[k].boundary === affectedBoundary; - } - - for (k = 0; !used && k < changedHorizon.length; k++) { - used = changedHorizon[k].boundary === affectedBoundary; - } - - if (!used) { - affectedBoundary.x2New = maxXNew; - } - } - - Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); - }); - horizon.forEach(function (horizonPart) { - var affectedBoundary = horizonPart.boundary; - - if (affectedBoundary.x2New === undefined) { - affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); - } - }); - } - - function TextLayerRenderTask(_ref) { - var _globalThis$FontInspe, - _this = this; - - var textContent = _ref.textContent, - textContentStream = _ref.textContentStream, - container = _ref.container, - viewport = _ref.viewport, - textDivs = _ref.textDivs, - textContentItemsStr = _ref.textContentItemsStr, - enhanceTextSelection = _ref.enhanceTextSelection; - this._textContent = textContent; - this._textContentStream = textContentStream; - this._container = container; - this._document = container.ownerDocument; - this._viewport = viewport; - this._textDivs = textDivs || []; - this._textContentItemsStr = textContentItemsStr || []; - this._enhanceTextSelection = !!enhanceTextSelection; - this._fontInspectorEnabled = !!((_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled); - this._reader = null; - this._layoutTextLastFontSize = null; - this._layoutTextLastFontFamily = null; - this._layoutTextCtx = null; - this._textDivProperties = new WeakMap(); - this._renderingDone = false; - this._canceled = false; - this._capability = (0, _util.createPromiseCapability)(); - this._renderTimer = null; - this._bounds = []; - - this._capability.promise["finally"](function () { - if (_this._layoutTextCtx) { - _this._layoutTextCtx.canvas.width = 0; - _this._layoutTextCtx.canvas.height = 0; - _this._layoutTextCtx = null; - } - })["catch"](function () { - }); - } - - TextLayerRenderTask.prototype = { - get promise() { - return this._capability.promise; - }, - - cancel: function TextLayer_cancel() { - this._canceled = true; - - if (this._reader) { - this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")); - - this._reader = null; - } - - if (this._renderTimer !== null) { - clearTimeout(this._renderTimer); - this._renderTimer = null; - } - - this._capability.reject(new Error("TextLayer task cancelled.")); - }, - _processItems: function _processItems(items, styleCache) { - for (var i = 0, len = items.length; i < len; i++) { - this._textContentItemsStr.push(items[i].str); - - appendText(this, items[i], styleCache, this._layoutTextCtx); - } - }, - _layoutText: function _layoutText(textDiv) { - var textDivProperties = this._textDivProperties.get(textDiv); - - if (textDivProperties.isWhitespace) { - return; - } - - var transform = ""; - - if (textDivProperties.canvasWidth !== 0) { - var _textDiv$style = textDiv.style, - fontSize = _textDiv$style.fontSize, - fontFamily = _textDiv$style.fontFamily; - - if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { - this._layoutTextCtx.font = "".concat(fontSize, " ").concat(fontFamily); - this._layoutTextLastFontSize = fontSize; - this._layoutTextLastFontFamily = fontFamily; - } - - var _this$_layoutTextCtx$ = this._layoutTextCtx.measureText(textDiv.textContent), - width = _this$_layoutTextCtx$.width; - - if (width > 0) { - textDivProperties.scale = textDivProperties.canvasWidth / width; - transform = "scaleX(".concat(textDivProperties.scale, ")"); - } - } - - if (textDivProperties.angle !== 0) { - transform = "rotate(".concat(textDivProperties.angle, "deg) ").concat(transform); - } - - if (transform.length > 0) { - if (this._enhanceTextSelection) { - textDivProperties.originalTransform = transform; - } - - textDiv.style.transform = transform; - } - - this._textDivProperties.set(textDiv, textDivProperties); - - this._container.appendChild(textDiv); - }, - _render: function TextLayer_render(timeout) { - var _this2 = this; - - var capability = (0, _util.createPromiseCapability)(); - var styleCache = Object.create(null); - - var canvas = this._document.createElement("canvas"); - - canvas.height = canvas.width = DEFAULT_FONT_SIZE; - canvas.mozOpaque = true; - this._layoutTextCtx = canvas.getContext("2d", { - alpha: false - }); - - if (this._textContent) { - var textItems = this._textContent.items; - var textStyles = this._textContent.styles; - - this._processItems(textItems, textStyles); - - capability.resolve(); - } else if (this._textContentStream) { - var pump = function pump() { - _this2._reader.read().then(function (_ref2) { - var value = _ref2.value, - done = _ref2.done; - - if (done) { - capability.resolve(); - return; - } - - Object.assign(styleCache, value.styles); - - _this2._processItems(value.items, styleCache); - - pump(); - }, capability.reject); - }; - - this._reader = this._textContentStream.getReader(); - pump(); - } else { - throw new Error('Neither "textContent" nor "textContentStream"' + " parameters specified."); - } - - capability.promise.then(function () { - styleCache = null; - - if (!timeout) { - render(_this2); - } else { - _this2._renderTimer = setTimeout(function () { - render(_this2); - _this2._renderTimer = null; - }, timeout); - } - }, this._capability.reject); - }, - expandTextDivs: function TextLayer_expandTextDivs(expandDivs) { - if (!this._enhanceTextSelection || !this._renderingDone) { - return; - } - - if (this._bounds !== null) { - expand(this); - this._bounds = null; - } - - var transformBuf = [], - paddingBuf = []; - - for (var i = 0, ii = this._textDivs.length; i < ii; i++) { - var div = this._textDivs[i]; - - var divProps = this._textDivProperties.get(div); - - if (divProps.isWhitespace) { - continue; - } - - if (expandDivs) { - transformBuf.length = 0; - paddingBuf.length = 0; - - if (divProps.originalTransform) { - transformBuf.push(divProps.originalTransform); - } - - if (divProps.paddingTop > 0) { - paddingBuf.push("".concat(divProps.paddingTop, "px")); - transformBuf.push("translateY(".concat(-divProps.paddingTop, "px)")); - } else { - paddingBuf.push(0); - } - - if (divProps.paddingRight > 0) { - paddingBuf.push("".concat(divProps.paddingRight / divProps.scale, "px")); - } else { - paddingBuf.push(0); - } - - if (divProps.paddingBottom > 0) { - paddingBuf.push("".concat(divProps.paddingBottom, "px")); - } else { - paddingBuf.push(0); - } - - if (divProps.paddingLeft > 0) { - paddingBuf.push("".concat(divProps.paddingLeft / divProps.scale, "px")); - transformBuf.push("translateX(".concat(-divProps.paddingLeft / divProps.scale, "px)")); - } else { - paddingBuf.push(0); - } - - div.style.padding = paddingBuf.join(" "); - - if (transformBuf.length) { - div.style.transform = transformBuf.join(" "); - } - } else { - div.style.padding = null; - div.style.transform = divProps.originalTransform; - } - } - } - }; - - function renderTextLayer(renderParameters) { - var task = new TextLayerRenderTask({ - textContent: renderParameters.textContent, - textContentStream: renderParameters.textContentStream, - container: renderParameters.container, - viewport: renderParameters.viewport, - textDivs: renderParameters.textDivs, - textContentItemsStr: renderParameters.textContentItemsStr, - enhanceTextSelection: renderParameters.enhanceTextSelection - }); - - task._render(renderParameters.timeout); - - return task; - } - - return renderTextLayer; - }(); - - exports.renderTextLayer = renderTextLayer; - - /***/ - }), - /* 141 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.SVGGraphics = void 0; - - var _util = __w_pdfjs_require__(4); - - var _display_utils = __w_pdfjs_require__(1); - - var _is_node = __w_pdfjs_require__(6); - - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); - } - - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e2) { - throw _e2; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var SVGGraphics = function SVGGraphics() { - throw new Error("Not implemented: SVGGraphics"); - }; - - exports.SVGGraphics = SVGGraphics; - { - var opListToTree = function opListToTree(opList) { - var opTree = []; - var tmp = []; - - var _iterator = _createForOfIteratorHelper(opList), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var opListElement = _step.value; - - if (opListElement.fn === "save") { - opTree.push({ - fnId: 92, - fn: "group", - items: [] - }); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; - } - - if (opListElement.fn === "restore") { - opTree = tmp.pop(); - } else { - opTree.push(opListElement); - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return opTree; - }; - - var pf = function pf(value) { - if (Number.isInteger(value)) { - return value.toString(); - } - - var s = value.toFixed(10); - var i = s.length - 1; - - if (s[i] !== "0") { - return s; - } - - do { - i--; - } while (s[i] === "0"); - - return s.substring(0, s[i] === "." ? i : i + 1); - }; - - var pm = function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ""; - } - - return "scale(".concat(pf(m[0]), " ").concat(pf(m[3]), ")"); - } - - if (m[0] === m[3] && m[1] === -m[2]) { - var a = Math.acos(m[0]) * 180 / Math.PI; - return "rotate(".concat(pf(a), ")"); - } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return "translate(".concat(pf(m[4]), " ").concat(pf(m[5]), ")"); - } - } - - return "matrix(".concat(pf(m[0]), " ").concat(pf(m[1]), " ").concat(pf(m[2]), " ").concat(pf(m[3]), " ").concat(pf(m[4]), " ") + "".concat(pf(m[5]), ")"); - }; - - var SVG_DEFAULTS = { - fontStyle: "normal", - fontWeight: "normal", - fillColor: "#000000" - }; - var XML_NS = "http://www.w3.org/XML/1998/namespace"; - var XLINK_NS = "http://www.w3.org/1999/xlink"; - var LINE_CAP_STYLES = ["butt", "round", "square"]; - var LINE_JOIN_STYLES = ["miter", "round", "bevel"]; - - var convertImgDataToPng = function () { - var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - var CHUNK_WRAPPER_SIZE = 12; - var crcTable = new Int32Array(256); - - for (var i = 0; i < 256; i++) { - var c = i; - - for (var h = 0; h < 8; h++) { - if (c & 1) { - c = 0xedb88320 ^ c >> 1 & 0x7fffffff; - } else { - c = c >> 1 & 0x7fffffff; - } - } - - crcTable[i] = c; - } - - function crc32(data, start, end) { - var crc = -1; - - for (var _i = start; _i < end; _i++) { - var a = (crc ^ data[_i]) & 0xff; - var b = crcTable[a]; - crc = crc >>> 8 ^ b; - } - - return crc ^ -1; - } - - function writePngChunk(type, body, data, offset) { - var p = offset; - var len = body.length; - data[p] = len >> 24 & 0xff; - data[p + 1] = len >> 16 & 0xff; - data[p + 2] = len >> 8 & 0xff; - data[p + 3] = len & 0xff; - p += 4; - data[p] = type.charCodeAt(0) & 0xff; - data[p + 1] = type.charCodeAt(1) & 0xff; - data[p + 2] = type.charCodeAt(2) & 0xff; - data[p + 3] = type.charCodeAt(3) & 0xff; - p += 4; - data.set(body, p); - p += body.length; - var crc = crc32(data, offset + 4, p); - data[p] = crc >> 24 & 0xff; - data[p + 1] = crc >> 16 & 0xff; - data[p + 2] = crc >> 8 & 0xff; - data[p + 3] = crc & 0xff; - } - - function adler32(data, start, end) { - var a = 1; - var b = 0; - - for (var _i2 = start; _i2 < end; ++_i2) { - a = (a + (data[_i2] & 0xff)) % 65521; - b = (b + a) % 65521; - } - - return b << 16 | a; - } - - function deflateSync(literals) { - if (!_is_node.isNodeJS) { - return deflateSyncUncompressed(literals); - } - - try { - var input; - - if (parseInt(process.versions.node) >= 8) { - input = literals; - } else { - input = Buffer.from(literals); - } - - var output = require("zlib").deflateSync(input, { - level: 9 - }); - - return output instanceof Uint8Array ? output : new Uint8Array(output); - } catch (e) { - (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); - } - - return deflateSyncUncompressed(literals); - } - - function deflateSyncUncompressed(literals) { - var len = literals.length; - var maxBlockLength = 0xffff; - var deflateBlocks = Math.ceil(len / maxBlockLength); - var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - var pi = 0; - idat[pi++] = 0x78; - idat[pi++] = 0x9c; - var pos = 0; - - while (len > maxBlockLength) { - idat[pi++] = 0x00; - idat[pi++] = 0xff; - idat[pi++] = 0xff; - idat[pi++] = 0x00; - idat[pi++] = 0x00; - idat.set(literals.subarray(pos, pos + maxBlockLength), pi); - pi += maxBlockLength; - pos += maxBlockLength; - len -= maxBlockLength; - } - - idat[pi++] = 0x01; - idat[pi++] = len & 0xff; - idat[pi++] = len >> 8 & 0xff; - idat[pi++] = ~len & 0xffff & 0xff; - idat[pi++] = (~len & 0xffff) >> 8 & 0xff; - idat.set(literals.subarray(pos), pi); - pi += literals.length - pos; - var adler = adler32(literals, 0, literals.length); - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - return idat; - } - - function encode(imgData, kind, forceDataSchema, isMask) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; - - switch (kind) { - case _util.ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = width + 7 >> 3; - break; - - case _util.ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - - case _util.ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - - default: - throw new Error("invalid format"); - } - - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, - offsetBytes = 0; - - for (var y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - - if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { - offsetLiterals = 0; - - for (var _y = 0; _y < height; _y++) { - offsetLiterals++; - - for (var _i3 = 0; _i3 < lineSize; _i3++) { - literals[offsetLiterals++] ^= 0xff; - } - } - } - - var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); - var idat = deflateSync(literals); - var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; - var data = new Uint8Array(pngLength); - var offset = 0; - data.set(PNG_HEADER, offset); - offset += PNG_HEADER.length; - writePngChunk("IHDR", ihdr, data, offset); - offset += CHUNK_WRAPPER_SIZE + ihdr.length; - writePngChunk("IDATA", idat, data, offset); - offset += CHUNK_WRAPPER_SIZE + idat.length; - writePngChunk("IEND", new Uint8Array(0), data, offset); - return (0, _util.createObjectURL)(data, "image/png", forceDataSchema); - } - - return function convertImgDataToPng(imgData, forceDataSchema, isMask) { - var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; - return encode(imgData, kind, forceDataSchema, isMask); - }; - }(); - - var SVGExtraState = /*#__PURE__*/function () { - function SVGExtraState() { - _classCallCheck(this, SVGExtraState); - - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - this.textMatrix = _util.IDENTITY_MATRIX; - this.fontMatrix = _util.FONT_IDENTITY_MATRIX; - this.leading = 0; - this.textRenderingMode = _util.TextRenderingMode.FILL; - this.textMatrixScale = 1; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = "#000000"; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.lineJoin = ""; - this.lineCap = ""; - this.miterLimit = 0; - this.dashArray = []; - this.dashPhase = 0; - this.dependencies = []; - this.activeClipUrl = null; - this.clipGroup = null; - this.maskId = ""; - } - - _createClass(SVGExtraState, [{ - key: "clone", - value: function clone() { - return Object.create(this); - } - }, { - key: "setCurrentPoint", - value: function setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - }]); - - return SVGExtraState; - }(); - - var clipCount = 0; - var maskCount = 0; - var shadingCount = 0; - - exports.SVGGraphics = SVGGraphics = /*#__PURE__*/function () { - function SVGGraphics(commonObjs, objs) { - var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - _classCallCheck(this, SVGGraphics); - - this.svgFactory = new _display_utils.DOMSVGFactory(); - this.current = new SVGExtraState(); - this.transformMatrix = _util.IDENTITY_MATRIX; - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingClip = null; - this.pendingEOFill = false; - this.embedFonts = false; - this.embeddedFonts = Object.create(null); - this.cssStyle = null; - this.forceDataSchema = !!forceDataSchema; - this._operatorIdMapping = []; - - for (var op in _util.OPS) { - this._operatorIdMapping[_util.OPS[op]] = op; - } - } - - _createClass(SVGGraphics, [{ - key: "save", - value: function save() { - this.transformStack.push(this.transformMatrix); - var old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - } - }, { - key: "restore", - value: function restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - this.pendingClip = null; - this.tgrp = null; - } - }, { - key: "group", - value: function group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - } - }, { - key: "loadDependencies", - value: function loadDependencies(operatorList) { - var _this = this; - - var fnArray = operatorList.fnArray; - var argsArray = operatorList.argsArray; - - for (var i = 0, ii = fnArray.length; i < ii; i++) { - if (fnArray[i] !== _util.OPS.dependency) { - continue; - } - - var _iterator2 = _createForOfIteratorHelper(argsArray[i]), - _step2; - - try { - var _loop = function _loop() { - var obj = _step2.value; - var objsPool = obj.startsWith("g_") ? _this.commonObjs : _this.objs; - var promise = new Promise(function (resolve) { - objsPool.get(obj, resolve); - }); - - _this.current.dependencies.push(promise); - }; - - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - _loop(); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - } - - return Promise.all(this.current.dependencies); - } - }, { - key: "transform", - value: function transform(a, b, c, d, e, f) { - var transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); - this.tgrp = null; - } - }, { - key: "getSVG", - value: function getSVG(operatorList, viewport) { - var _this2 = this; - - this.viewport = viewport; - - var svgElement = this._initialize(viewport); - - return this.loadDependencies(operatorList).then(function () { - _this2.transformMatrix = _util.IDENTITY_MATRIX; - - _this2.executeOpTree(_this2.convertOpList(operatorList)); - - return svgElement; - }); - } - }, { - key: "convertOpList", - value: function convertOpList(operatorList) { - var operatorIdMapping = this._operatorIdMapping; - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var opList = []; - - for (var i = 0, ii = fnArray.length; i < ii; i++) { - var fnId = fnArray[i]; - opList.push({ - fnId: fnId, - fn: operatorIdMapping[fnId], - args: argsArray[i] - }); - } - - return opListToTree(opList); - } - }, { - key: "executeOpTree", - value: function executeOpTree(opTree) { - var _iterator3 = _createForOfIteratorHelper(opTree), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var opTreeElement = _step3.value; - var fn = opTreeElement.fn; - var fnId = opTreeElement.fnId; - var args = opTreeElement.args; - - switch (fnId | 0) { - case _util.OPS.beginText: - this.beginText(); - break; - - case _util.OPS.dependency: - break; - - case _util.OPS.setLeading: - this.setLeading(args); - break; - - case _util.OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - - case _util.OPS.setFont: - this.setFont(args); - break; - - case _util.OPS.showText: - this.showText(args[0]); - break; - - case _util.OPS.showSpacedText: - this.showText(args[0]); - break; - - case _util.OPS.endText: - this.endText(); - break; - - case _util.OPS.moveText: - this.moveText(args[0], args[1]); - break; - - case _util.OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - - case _util.OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - - case _util.OPS.setHScale: - this.setHScale(args[0]); - break; - - case _util.OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - - case _util.OPS.setTextRise: - this.setTextRise(args[0]); - break; - - case _util.OPS.setTextRenderingMode: - this.setTextRenderingMode(args[0]); - break; - - case _util.OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - - case _util.OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - - case _util.OPS.setLineCap: - this.setLineCap(args[0]); - break; - - case _util.OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - - case _util.OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - - case _util.OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - - case _util.OPS.setStrokeColorN: - this.setStrokeColorN(args); - break; - - case _util.OPS.setFillColorN: - this.setFillColorN(args); - break; - - case _util.OPS.shadingFill: - this.shadingFill(args[0]); - break; - - case _util.OPS.setDash: - this.setDash(args[0], args[1]); - break; - - case _util.OPS.setRenderingIntent: - this.setRenderingIntent(args[0]); - break; - - case _util.OPS.setFlatness: - this.setFlatness(args[0]); - break; - - case _util.OPS.setGState: - this.setGState(args[0]); - break; - - case _util.OPS.fill: - this.fill(); - break; - - case _util.OPS.eoFill: - this.eoFill(); - break; - - case _util.OPS.stroke: - this.stroke(); - break; - - case _util.OPS.fillStroke: - this.fillStroke(); - break; - - case _util.OPS.eoFillStroke: - this.eoFillStroke(); - break; - - case _util.OPS.clip: - this.clip("nonzero"); - break; - - case _util.OPS.eoClip: - this.clip("evenodd"); - break; - - case _util.OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - - case _util.OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - - case _util.OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - - case _util.OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - - case _util.OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - - case _util.OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - - case _util.OPS.closePath: - this.closePath(); - break; - - case _util.OPS.closeStroke: - this.closeStroke(); - break; - - case _util.OPS.closeFillStroke: - this.closeFillStroke(); - break; - - case _util.OPS.closeEOFillStroke: - this.closeEOFillStroke(); - break; - - case _util.OPS.nextLine: - this.nextLine(); - break; - - case _util.OPS.transform: - this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - - case _util.OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - - case _util.OPS.endPath: - this.endPath(); - break; - - case 92: - this.group(opTreeElement.items); - break; - - default: - (0, _util.warn)("Unimplemented operator ".concat(fn)); - break; - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - }, { - key: "setWordSpacing", - value: function setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - } - }, { - key: "setCharSpacing", - value: function setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - } - }, { - key: "nextLine", - value: function nextLine() { - this.moveText(0, this.current.leading); - } - }, { - key: "setTextMatrix", - value: function setTextMatrix(a, b, c, d, e, f) { - var current = this.current; - current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; - current.textMatrixScale = Math.hypot(a, b); - current.x = current.lineX = 0; - current.y = current.lineY = 0; - current.xcoords = []; - current.ycoords = []; - current.tspan = this.svgFactory.createElement("svg:tspan"); - current.tspan.setAttributeNS(null, "font-family", current.fontFamily); - current.tspan.setAttributeNS(null, "font-size", "".concat(pf(current.fontSize), "px")); - current.tspan.setAttributeNS(null, "y", pf(-current.y)); - current.txtElement = this.svgFactory.createElement("svg:text"); - current.txtElement.appendChild(current.tspan); - } - }, { - key: "beginText", - value: function beginText() { - var current = this.current; - current.x = current.lineX = 0; - current.y = current.lineY = 0; - current.textMatrix = _util.IDENTITY_MATRIX; - current.lineMatrix = _util.IDENTITY_MATRIX; - current.textMatrixScale = 1; - current.tspan = this.svgFactory.createElement("svg:tspan"); - current.txtElement = this.svgFactory.createElement("svg:text"); - current.txtgrp = this.svgFactory.createElement("svg:g"); - current.xcoords = []; - current.ycoords = []; - } - }, { - key: "moveText", - value: function moveText(x, y) { - var current = this.current; - current.x = current.lineX += x; - current.y = current.lineY += y; - current.xcoords = []; - current.ycoords = []; - current.tspan = this.svgFactory.createElement("svg:tspan"); - current.tspan.setAttributeNS(null, "font-family", current.fontFamily); - current.tspan.setAttributeNS(null, "font-size", "".concat(pf(current.fontSize), "px")); - current.tspan.setAttributeNS(null, "y", pf(-current.y)); - } - }, { - key: "showText", - value: function showText(glyphs) { - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - - if (fontSize === 0) { - return; - } - - var fontSizeScale = current.fontSizeScale; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var vertical = font.vertical; - var spacingDir = vertical ? 1 : -1; - var defaultVMetrics = font.defaultVMetrics; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var x = 0; - - var _iterator4 = _createForOfIteratorHelper(glyphs), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var glyph = _step4.value; - - if (glyph === null) { - x += fontDirection * wordSpacing; - continue; - } else if ((0, _util.isNum)(glyph)) { - x += spacingDir * glyph * fontSize / 1000; - continue; - } - - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var character = glyph.fontChar; - var scaledX = void 0, - scaledY = void 0; - var width = glyph.width; - - if (vertical) { - var vx = void 0; - var vmetric = glyph.vmetric || defaultVMetrics; - vx = glyph.vmetric ? vmetric[1] : width * 0.5; - vx = -vx * widthAdvanceScale; - var vy = vmetric[2] * widthAdvanceScale; - width = vmetric ? -vmetric[0] : width; - scaledX = vx / fontSizeScale; - scaledY = (x + vy) / fontSizeScale; - } else { - scaledX = x / fontSizeScale; - scaledY = 0; - } - - if (glyph.isInFont || font.missingFile) { - current.xcoords.push(current.x + scaledX); - - if (vertical) { - current.ycoords.push(-current.y + scaledY); - } - - current.tspan.textContent += character; - } else { - } - - var charWidth = void 0; - - if (vertical) { - charWidth = width * widthAdvanceScale - spacing * fontDirection; - } else { - charWidth = width * widthAdvanceScale + spacing * fontDirection; - } - - x += charWidth; - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); - - if (vertical) { - current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); - } else { - current.tspan.setAttributeNS(null, "y", pf(-current.y)); - } - - if (vertical) { - current.y -= x; - } else { - current.x += x * textHScale; - } - - current.tspan.setAttributeNS(null, "font-family", current.fontFamily); - current.tspan.setAttributeNS(null, "font-size", "".concat(pf(current.fontSize), "px")); - - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, "font-style", current.fontStyle); - } - - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); - } - - var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, "fill", current.fillColor); - } - - if (current.fillAlpha < 1) { - current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); - } - } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { - current.tspan.setAttributeNS(null, "fill", "transparent"); - } else { - current.tspan.setAttributeNS(null, "fill", "none"); - } - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - var lineWidthScale = 1 / (current.textMatrixScale || 1); - - this._setStrokeAttributes(current.tspan, lineWidthScale); - } - - var textMatrix = current.textMatrix; - - if (current.textRise !== 0) { - textMatrix = textMatrix.slice(); - textMatrix[5] += current.textRise; - } - - current.txtElement.setAttributeNS(null, "transform", "".concat(pm(textMatrix), " scale(").concat(pf(textHScale), ", -1)")); - current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - - this._ensureTransformGroup().appendChild(current.txtElement); - } - }, { - key: "setLeadingMoveText", - value: function setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - } - }, { - key: "addFontStyle", - value: function addFontStyle(fontObj) { - if (!fontObj.data) { - throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); - } - - if (!this.cssStyle) { - this.cssStyle = this.svgFactory.createElement("svg:style"); - this.cssStyle.setAttributeNS(null, "type", "text/css"); - this.defs.appendChild(this.cssStyle); - } - - var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); - this.cssStyle.textContent += "@font-face { font-family: \"".concat(fontObj.loadedName, "\";") + " src: url(".concat(url, "); }\n"); - } - }, { - key: "setFont", - value: function setFont(details) { - var current = this.current; - var fontObj = this.commonObjs.get(details[0]); - var size = details[1]; - current.font = fontObj; - - if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; - } - - current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; - var bold = "normal"; - - if (fontObj.black) { - bold = "900"; - } else if (fontObj.bold) { - bold = "bold"; - } - - var italic = fontObj.italic ? "italic" : "normal"; - - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - current.tspan = this.svgFactory.createElement("svg:tspan"); - current.tspan.setAttributeNS(null, "y", pf(-current.y)); - current.xcoords = []; - current.ycoords = []; - } - }, { - key: "endText", - value: function endText() { - var _current$txtElement; - - var current = this.current; - - if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && (_current$txtElement = current.txtElement) !== null && _current$txtElement !== void 0 && _current$txtElement.hasChildNodes()) { - current.element = current.txtElement; - this.clip("nonzero"); - this.endPath(); - } - } - }, { - key: "setLineWidth", - value: function setLineWidth(width) { - if (width > 0) { - this.current.lineWidth = width; - } - } - }, { - key: "setLineCap", - value: function setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - } - }, { - key: "setLineJoin", - value: function setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - } - }, { - key: "setMiterLimit", - value: function setMiterLimit(limit) { - this.current.miterLimit = limit; - } - }, { - key: "setStrokeAlpha", - value: function setStrokeAlpha(strokeAlpha) { - this.current.strokeAlpha = strokeAlpha; - } - }, { - key: "setStrokeRGBColor", - value: function setStrokeRGBColor(r, g, b) { - this.current.strokeColor = _util.Util.makeHexColor(r, g, b); - } - }, { - key: "setFillAlpha", - value: function setFillAlpha(fillAlpha) { - this.current.fillAlpha = fillAlpha; - } - }, { - key: "setFillRGBColor", - value: function setFillRGBColor(r, g, b) { - this.current.fillColor = _util.Util.makeHexColor(r, g, b); - this.current.tspan = this.svgFactory.createElement("svg:tspan"); - this.current.xcoords = []; - this.current.ycoords = []; - } - }, { - key: "setStrokeColorN", - value: function setStrokeColorN(args) { - this.current.strokeColor = this._makeColorN_Pattern(args); - } - }, { - key: "setFillColorN", - value: function setFillColorN(args) { - this.current.fillColor = this._makeColorN_Pattern(args); - } - }, { - key: "shadingFill", - value: function shadingFill(args) { - var width = this.viewport.width; - var height = this.viewport.height; - - var inv = _util.Util.inverseTransform(this.transformMatrix); - - var bl = _util.Util.applyTransform([0, 0], inv); - - var br = _util.Util.applyTransform([0, height], inv); - - var ul = _util.Util.applyTransform([width, 0], inv); - - var ur = _util.Util.applyTransform([width, height], inv); - - var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); - var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); - var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); - var y1 = Math.max(bl[1], br[1], ul[1], ur[1]); - var rect = this.svgFactory.createElement("svg:rect"); - rect.setAttributeNS(null, "x", x0); - rect.setAttributeNS(null, "y", y0); - rect.setAttributeNS(null, "width", x1 - x0); - rect.setAttributeNS(null, "height", y1 - y0); - rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); - - if (this.current.fillAlpha < 1) { - rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); - } - - this._ensureTransformGroup().appendChild(rect); - } - }, { - key: "_makeColorN_Pattern", - value: function _makeColorN_Pattern(args) { - if (args[0] === "TilingPattern") { - return this._makeTilingPattern(args); - } - - return this._makeShadingPattern(args); - } - }, { - key: "_makeTilingPattern", - value: function _makeTilingPattern(args) { - var color = args[1]; - var operatorList = args[2]; - var matrix = args[3] || _util.IDENTITY_MATRIX; - - var _args$ = _slicedToArray(args[4], 4), - x0 = _args$[0], - y0 = _args$[1], - x1 = _args$[2], - y1 = _args$[3]; - - var xstep = args[5]; - var ystep = args[6]; - var paintType = args[7]; - var tilingId = "shading".concat(shadingCount++); - - var _Util$applyTransform = _util.Util.applyTransform([x0, y0], matrix), - _Util$applyTransform2 = _slicedToArray(_Util$applyTransform, 2), - tx0 = _Util$applyTransform2[0], - ty0 = _Util$applyTransform2[1]; - - var _Util$applyTransform3 = _util.Util.applyTransform([x1, y1], matrix), - _Util$applyTransform4 = _slicedToArray(_Util$applyTransform3, 2), - tx1 = _Util$applyTransform4[0], - ty1 = _Util$applyTransform4[1]; - - var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(matrix), - _Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2), - xscale = _Util$singularValueDe2[0], - yscale = _Util$singularValueDe2[1]; - - var txstep = xstep * xscale; - var tystep = ystep * yscale; - var tiling = this.svgFactory.createElement("svg:pattern"); - tiling.setAttributeNS(null, "id", tilingId); - tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); - tiling.setAttributeNS(null, "width", txstep); - tiling.setAttributeNS(null, "height", tystep); - tiling.setAttributeNS(null, "x", "".concat(tx0)); - tiling.setAttributeNS(null, "y", "".concat(ty0)); - var svg = this.svg; - var transformMatrix = this.transformMatrix; - var fillColor = this.current.fillColor; - var strokeColor = this.current.strokeColor; - var bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); - this.svg = bbox; - this.transformMatrix = matrix; - - if (paintType === 2) { - var cssColor = _util.Util.makeHexColor.apply(_util.Util, _toConsumableArray(color)); - - this.current.fillColor = cssColor; - this.current.strokeColor = cssColor; - } - - this.executeOpTree(this.convertOpList(operatorList)); - this.svg = svg; - this.transformMatrix = transformMatrix; - this.current.fillColor = fillColor; - this.current.strokeColor = strokeColor; - tiling.appendChild(bbox.childNodes[0]); - this.defs.appendChild(tiling); - return "url(#".concat(tilingId, ")"); - } - }, { - key: "_makeShadingPattern", - value: function _makeShadingPattern(args) { - switch (args[0]) { - case "RadialAxial": - var shadingId = "shading".concat(shadingCount++); - var colorStops = args[3]; - var gradient; - - switch (args[1]) { - case "axial": - var point0 = args[4]; - var point1 = args[5]; - gradient = this.svgFactory.createElement("svg:linearGradient"); - gradient.setAttributeNS(null, "id", shadingId); - gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); - gradient.setAttributeNS(null, "x1", point0[0]); - gradient.setAttributeNS(null, "y1", point0[1]); - gradient.setAttributeNS(null, "x2", point1[0]); - gradient.setAttributeNS(null, "y2", point1[1]); - break; - - case "radial": - var focalPoint = args[4]; - var circlePoint = args[5]; - var focalRadius = args[6]; - var circleRadius = args[7]; - gradient = this.svgFactory.createElement("svg:radialGradient"); - gradient.setAttributeNS(null, "id", shadingId); - gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); - gradient.setAttributeNS(null, "cx", circlePoint[0]); - gradient.setAttributeNS(null, "cy", circlePoint[1]); - gradient.setAttributeNS(null, "r", circleRadius); - gradient.setAttributeNS(null, "fx", focalPoint[0]); - gradient.setAttributeNS(null, "fy", focalPoint[1]); - gradient.setAttributeNS(null, "fr", focalRadius); - break; - - default: - throw new Error("Unknown RadialAxial type: ".concat(args[1])); - } - - var _iterator5 = _createForOfIteratorHelper(colorStops), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var colorStop = _step5.value; - var stop = this.svgFactory.createElement("svg:stop"); - stop.setAttributeNS(null, "offset", colorStop[0]); - stop.setAttributeNS(null, "stop-color", colorStop[1]); - gradient.appendChild(stop); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - this.defs.appendChild(gradient); - return "url(#".concat(shadingId, ")"); - - case "Mesh": - (0, _util.warn)("Unimplemented pattern Mesh"); - return null; - - case "Dummy": - return "hotpink"; - - default: - throw new Error("Unknown IR type: ".concat(args[0])); - } - } - }, { - key: "setDash", - value: function setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; - } - }, { - key: "constructPath", - value: function constructPath(ops, args) { - var current = this.current; - var x = current.x, - y = current.y; - var d = []; - var j = 0; - - var _iterator6 = _createForOfIteratorHelper(ops), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var op = _step6.value; - - switch (op | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); - break; - - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push("M", pf(x), pf(y)); - break; - - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push("L", pf(x), pf(y)); - break; - - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - - case _util.OPS.curveTo2: - d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); - x = args[j + 2]; - y = args[j + 3]; - j += 4; - break; - - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); - j += 4; - break; - - case _util.OPS.closePath: - d.push("Z"); - break; - } - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - - d = d.join(" "); - - if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { - d = current.path.getAttributeNS(null, "d") + d; - } else { - current.path = this.svgFactory.createElement("svg:path"); - - this._ensureTransformGroup().appendChild(current.path); - } - - current.path.setAttributeNS(null, "d", d); - current.path.setAttributeNS(null, "fill", "none"); - current.element = current.path; - current.setCurrentPoint(x, y); - } - }, { - key: "endPath", - value: function endPath() { - var current = this.current; - current.path = null; - - if (!this.pendingClip) { - return; - } - - if (!current.element) { - this.pendingClip = null; - return; - } - - var clipId = "clippath".concat(clipCount++); - var clipPath = this.svgFactory.createElement("svg:clipPath"); - clipPath.setAttributeNS(null, "id", clipId); - clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); - var clipElement = current.element.cloneNode(true); - - if (this.pendingClip === "evenodd") { - clipElement.setAttributeNS(null, "clip-rule", "evenodd"); - } else { - clipElement.setAttributeNS(null, "clip-rule", "nonzero"); - } - - this.pendingClip = null; - clipPath.appendChild(clipElement); - this.defs.appendChild(clipPath); - - if (current.activeClipUrl) { - current.clipGroup = null; - this.extraStack.forEach(function (prev) { - prev.clipGroup = null; - }); - clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); - } - - current.activeClipUrl = "url(#".concat(clipId, ")"); - this.tgrp = null; - } - }, { - key: "clip", - value: function clip(type) { - this.pendingClip = type; - } - }, { - key: "closePath", - value: function closePath() { - var current = this.current; - - if (current.path) { - var d = "".concat(current.path.getAttributeNS(null, "d"), "Z"); - current.path.setAttributeNS(null, "d", d); - } - } - }, { - key: "setLeading", - value: function setLeading(leading) { - this.current.leading = -leading; - } - }, { - key: "setTextRise", - value: function setTextRise(textRise) { - this.current.textRise = textRise; - } - }, { - key: "setTextRenderingMode", - value: function setTextRenderingMode(textRenderingMode) { - this.current.textRenderingMode = textRenderingMode; - } - }, { - key: "setHScale", - value: function setHScale(scale) { - this.current.textHScale = scale / 100; - } - }, { - key: "setRenderingIntent", - value: function setRenderingIntent(intent) { - } - }, { - key: "setFlatness", - value: function setFlatness(flatness) { - } - }, { - key: "setGState", - value: function setGState(states) { - var _iterator7 = _createForOfIteratorHelper(states), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var _step7$value = _slicedToArray(_step7.value, 2), - key = _step7$value[0], - value = _step7$value[1]; - - switch (key) { - case "LW": - this.setLineWidth(value); - break; - - case "LC": - this.setLineCap(value); - break; - - case "LJ": - this.setLineJoin(value); - break; - - case "ML": - this.setMiterLimit(value); - break; - - case "D": - this.setDash(value[0], value[1]); - break; - - case "RI": - this.setRenderingIntent(value); - break; - - case "FL": - this.setFlatness(value); - break; - - case "Font": - this.setFont(value); - break; - - case "CA": - this.setStrokeAlpha(value); - break; - - case "ca": - this.setFillAlpha(value); - break; - - default: - (0, _util.warn)("Unimplemented graphic state operator ".concat(key)); - break; - } - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - } - }, { - key: "fill", - value: function fill() { - var current = this.current; - - if (current.element) { - current.element.setAttributeNS(null, "fill", current.fillColor); - current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); - this.endPath(); - } - } - }, { - key: "stroke", - value: function stroke() { - var current = this.current; - - if (current.element) { - this._setStrokeAttributes(current.element); - - current.element.setAttributeNS(null, "fill", "none"); - this.endPath(); - } - } - }, { - key: "_setStrokeAttributes", - value: function _setStrokeAttributes(element) { - var lineWidthScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - var current = this.current; - var dashArray = current.dashArray; - - if (lineWidthScale !== 1 && dashArray.length > 0) { - dashArray = dashArray.map(function (value) { - return lineWidthScale * value; - }); - } - - element.setAttributeNS(null, "stroke", current.strokeColor); - element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); - element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); - element.setAttributeNS(null, "stroke-linecap", current.lineCap); - element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); - element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); - element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); - element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); - } - }, { - key: "eoFill", - value: function eoFill() { - if (this.current.element) { - this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); - } - - this.fill(); - } - }, { - key: "fillStroke", - value: function fillStroke() { - this.stroke(); - this.fill(); - } - }, { - key: "eoFillStroke", - value: function eoFillStroke() { - if (this.current.element) { - this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); - } - - this.fillStroke(); - } - }, { - key: "closeStroke", - value: function closeStroke() { - this.closePath(); - this.stroke(); - } - }, { - key: "closeFillStroke", - value: function closeFillStroke() { - this.closePath(); - this.fillStroke(); - } - }, { - key: "closeEOFillStroke", - value: function closeEOFillStroke() { - this.closePath(); - this.eoFillStroke(); - } - }, { - key: "paintSolidColorImageMask", - value: function paintSolidColorImageMask() { - var rect = this.svgFactory.createElement("svg:rect"); - rect.setAttributeNS(null, "x", "0"); - rect.setAttributeNS(null, "y", "0"); - rect.setAttributeNS(null, "width", "1px"); - rect.setAttributeNS(null, "height", "1px"); - rect.setAttributeNS(null, "fill", this.current.fillColor); - - this._ensureTransformGroup().appendChild(rect); - } - }, { - key: "paintImageXObject", - value: function paintImageXObject(objId) { - var imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); - - if (!imgData) { - (0, _util.warn)("Dependent image with object ID ".concat(objId, " is not ready yet")); - return; - } - - this.paintInlineImageXObject(imgData); - } - }, { - key: "paintInlineImageXObject", - value: function paintInlineImageXObject(imgData, mask) { - var width = imgData.width; - var height = imgData.height; - var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); - var cliprect = this.svgFactory.createElement("svg:rect"); - cliprect.setAttributeNS(null, "x", "0"); - cliprect.setAttributeNS(null, "y", "0"); - cliprect.setAttributeNS(null, "width", pf(width)); - cliprect.setAttributeNS(null, "height", pf(height)); - this.current.element = cliprect; - this.clip("nonzero"); - var imgEl = this.svgFactory.createElement("svg:image"); - imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); - imgEl.setAttributeNS(null, "x", "0"); - imgEl.setAttributeNS(null, "y", pf(-height)); - imgEl.setAttributeNS(null, "width", pf(width) + "px"); - imgEl.setAttributeNS(null, "height", pf(height) + "px"); - imgEl.setAttributeNS(null, "transform", "scale(".concat(pf(1 / width), " ").concat(pf(-1 / height), ")")); - - if (mask) { - mask.appendChild(imgEl); - } else { - this._ensureTransformGroup().appendChild(imgEl); - } - } - }, { - key: "paintImageMaskXObject", - value: function paintImageMaskXObject(imgData) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - var fillColor = current.fillColor; - current.maskId = "mask".concat(maskCount++); - var mask = this.svgFactory.createElement("svg:mask"); - mask.setAttributeNS(null, "id", current.maskId); - var rect = this.svgFactory.createElement("svg:rect"); - rect.setAttributeNS(null, "x", "0"); - rect.setAttributeNS(null, "y", "0"); - rect.setAttributeNS(null, "width", pf(width)); - rect.setAttributeNS(null, "height", pf(height)); - rect.setAttributeNS(null, "fill", fillColor); - rect.setAttributeNS(null, "mask", "url(#".concat(current.maskId, ")")); - this.defs.appendChild(mask); - - this._ensureTransformGroup().appendChild(rect); - - this.paintInlineImageXObject(imgData, mask); - } - }, { - key: "paintFormXObjectBegin", - value: function paintFormXObjectBegin(matrix, bbox) { - if (Array.isArray(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); - } - - if (bbox) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - var cliprect = this.svgFactory.createElement("svg:rect"); - cliprect.setAttributeNS(null, "x", bbox[0]); - cliprect.setAttributeNS(null, "y", bbox[1]); - cliprect.setAttributeNS(null, "width", pf(width)); - cliprect.setAttributeNS(null, "height", pf(height)); - this.current.element = cliprect; - this.clip("nonzero"); - this.endPath(); - } - } - }, { - key: "paintFormXObjectEnd", - value: function paintFormXObjectEnd() { - } - }, { - key: "_initialize", - value: function _initialize(viewport) { - var svg = this.svgFactory.create(viewport.width, viewport.height); - var definitions = this.svgFactory.createElement("svg:defs"); - svg.appendChild(definitions); - this.defs = definitions; - var rootGroup = this.svgFactory.createElement("svg:g"); - rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); - svg.appendChild(rootGroup); - this.svg = rootGroup; - return svg; - } - }, { - key: "_ensureClipGroup", - value: function _ensureClipGroup() { - if (!this.current.clipGroup) { - var clipGroup = this.svgFactory.createElement("svg:g"); - clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); - this.svg.appendChild(clipGroup); - this.current.clipGroup = clipGroup; - } - - return this.current.clipGroup; - } - }, { - key: "_ensureTransformGroup", - value: function _ensureTransformGroup() { - if (!this.tgrp) { - this.tgrp = this.svgFactory.createElement("svg:g"); - this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); - - if (this.current.activeClipUrl) { - this._ensureClipGroup().appendChild(this.tgrp); - } else { - this.svg.appendChild(this.tgrp); - } - } - - return this.tgrp; - } - }]); - - return SVGGraphics; - }(); - } - - /***/ - }), - /* 142 */ - /***/ ((__unused_webpack_module, exports) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.XfaLayer = void 0; - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var XfaLayer = /*#__PURE__*/function () { - function XfaLayer() { - _classCallCheck(this, XfaLayer); - } - - _createClass(XfaLayer, null, [{ - key: "setAttributes", - value: function setAttributes(html, attrs) { - for (var _i = 0, _Object$entries = Object.entries(attrs); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), - key = _Object$entries$_i[0], - value = _Object$entries$_i[1]; - - if (value === null || value === undefined) { - continue; - } - - if (key !== "style") { - html.setAttribute(key, value); - } else { - Object.assign(html.style, value); - } - } - } - }, { - key: "render", - value: function render(parameters) { - var root = parameters.xfa; - var rootHtml = document.createElement(root.name); - - if (root.attributes) { - XfaLayer.setAttributes(rootHtml, root.attributes); - } - - var stack = [[root, -1, rootHtml]]; - var rootDiv = parameters.div; - rootDiv.appendChild(rootHtml); - var coeffs = parameters.viewport.transform.join(","); - rootDiv.style.transform = "matrix(".concat(coeffs, ")"); - rootDiv.setAttribute("class", "xfaLayer xfaFont"); - - while (stack.length > 0) { - var _stack = _slicedToArray(stack[stack.length - 1], 3), - parent = _stack[0], - i = _stack[1], - html = _stack[2]; - - if (i + 1 === parent.children.length) { - stack.pop(); - continue; - } - - var child = parent.children[++stack[stack.length - 1][1]]; - - if (child === null) { - continue; - } - - var name = child.name; - - if (name === "#text") { - html.appendChild(document.createTextNode(child.value)); - continue; - } - - var childHtml = document.createElement(name); - html.appendChild(childHtml); - - if (child.attributes) { - XfaLayer.setAttributes(childHtml, child.attributes); - } - - if (child.children && child.children.length > 0) { - stack.push([child, -1, childHtml]); - } else if (child.value) { - childHtml.appendChild(document.createTextNode(child.value)); - } - } - } - }, { - key: "update", - value: function update(parameters) { - var transform = "matrix(".concat(parameters.viewport.transform.join(","), ")"); - parameters.div.style.transform = transform; - parameters.div.hidden = false; - } - }]); - - return XfaLayer; - }(); - - exports.XfaLayer = XfaLayer; - - /***/ - }), - /* 143 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFNodeStream = void 0; - - var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - - var _util = __w_pdfjs_require__(4); - - var _network_utils = __w_pdfjs_require__(144); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - ; - - var fs = require("fs"); - - var http = require("http"); - - var https = require("https"); - - var url = require("url"); - - var fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; - - function parseUrl(sourceUrl) { - var parsedUrl = url.parse(sourceUrl); - - if (parsedUrl.protocol === "file:" || parsedUrl.host) { - return parsedUrl; - } - - if (/^[a-z]:[/\\]/i.test(sourceUrl)) { - return url.parse("file:///".concat(sourceUrl)); - } - - if (!parsedUrl.host) { - parsedUrl.protocol = "file:"; - } - - return parsedUrl; - } - - var PDFNodeStream = /*#__PURE__*/function () { - function PDFNodeStream(source) { - _classCallCheck(this, PDFNodeStream); - - this.source = source; - this.url = parseUrl(source.url); - this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; - this.isFsUrl = this.url.protocol === "file:"; - this.httpHeaders = this.isHttp && source.httpHeaders || {}; - this._fullRequestReader = null; - this._rangeRequestReaders = []; - } - - _createClass(PDFNodeStream, [{ - key: "_progressiveDataLength", - get: function get() { - var _this$_fullRequestRea, _this$_fullRequestRea2; - - return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0; - } - }, { - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); - this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); - return this._fullRequestReader; - } - }, { - key: "getRangeReader", - value: function getRangeReader(start, end) { - if (end <= this._progressiveDataLength) { - return null; - } - - var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); - - this._rangeRequestReaders.push(rangeReader); - - return rangeReader; - } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - var readers = this._rangeRequestReaders.slice(0); - - readers.forEach(function (reader) { - reader.cancel(reason); - }); - } - }]); - - return PDFNodeStream; - }(); - - exports.PDFNodeStream = PDFNodeStream; - - var BaseFullReader = /*#__PURE__*/function () { - function BaseFullReader(stream) { - _classCallCheck(this, BaseFullReader); - - this._url = stream.url; - this._done = false; - this._storedError = null; - this.onProgress = null; - var source = stream.source; - this._contentLength = source.length; - this._loaded = 0; - this._filename = null; - this._disableRange = source.disableRange || false; - this._rangeChunkSize = source.rangeChunkSize; - - if (!this._rangeChunkSize && !this._disableRange) { - this._disableRange = true; - } - - this._isStreamingSupported = !source.disableStream; - this._isRangeSupported = !source.disableRange; - this._readableStream = null; - this._readCapability = (0, _util.createPromiseCapability)(); - this._headersCapability = (0, _util.createPromiseCapability)(); - } - - _createClass(BaseFullReader, [{ - key: "headersReady", - get: function get() { - return this._headersCapability.promise; - } - }, { - key: "filename", - get: function get() { - return this._filename; - } - }, { - key: "contentLength", - get: function get() { - return this._contentLength; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._isRangeSupported; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }, { - key: "read", - value: function () { - var _read = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var chunk, buffer; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return this._readCapability.promise; - - case 2: - if (!this._done) { - _context.next = 4; - break; - } - - return _context.abrupt("return", { - value: undefined, - done: true - }); - - case 4: - if (!this._storedError) { - _context.next = 6; - break; - } - - throw this._storedError; - - case 6: - chunk = this._readableStream.read(); - - if (!(chunk === null)) { - _context.next = 10; - break; - } - - this._readCapability = (0, _util.createPromiseCapability)(); - return _context.abrupt("return", this.read()); - - case 10: - this._loaded += chunk.length; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded, - total: this._contentLength - }); - } - - buffer = new Uint8Array(chunk).buffer; - return _context.abrupt("return", { - value: buffer, - done: false - }); - - case 14: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - if (!this._readableStream) { - this._error(reason); - - return; - } - - this._readableStream.destroy(reason); - } - }, { - key: "_error", - value: function _error(reason) { - this._storedError = reason; - - this._readCapability.resolve(); - } - }, { - key: "_setReadableStream", - value: function _setReadableStream(readableStream) { - var _this = this; - - this._readableStream = readableStream; - readableStream.on("readable", function () { - _this._readCapability.resolve(); - }); - readableStream.on("end", function () { - readableStream.destroy(); - _this._done = true; - - _this._readCapability.resolve(); - }); - readableStream.on("error", function (reason) { - _this._error(reason); - }); - - if (!this._isStreamingSupported && this._isRangeSupported) { - this._error(new _util.AbortException("streaming is disabled")); - } - - if (this._storedError) { - this._readableStream.destroy(this._storedError); - } - } - }]); - - return BaseFullReader; - }(); - - var BaseRangeReader = /*#__PURE__*/function () { - function BaseRangeReader(stream) { - _classCallCheck(this, BaseRangeReader); - - this._url = stream.url; - this._done = false; - this._storedError = null; - this.onProgress = null; - this._loaded = 0; - this._readableStream = null; - this._readCapability = (0, _util.createPromiseCapability)(); - var source = stream.source; - this._isStreamingSupported = !source.disableStream; - } - - _createClass(BaseRangeReader, [{ - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }, { - key: "read", - value: function () { - var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var chunk, buffer; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return this._readCapability.promise; - - case 2: - if (!this._done) { - _context2.next = 4; - break; - } - - return _context2.abrupt("return", { - value: undefined, - done: true - }); - - case 4: - if (!this._storedError) { - _context2.next = 6; - break; - } - - throw this._storedError; - - case 6: - chunk = this._readableStream.read(); - - if (!(chunk === null)) { - _context2.next = 10; - break; - } - - this._readCapability = (0, _util.createPromiseCapability)(); - return _context2.abrupt("return", this.read()); - - case 10: - this._loaded += chunk.length; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded - }); - } - - buffer = new Uint8Array(chunk).buffer; - return _context2.abrupt("return", { - value: buffer, - done: false - }); - - case 14: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - if (!this._readableStream) { - this._error(reason); - - return; - } - - this._readableStream.destroy(reason); - } - }, { - key: "_error", - value: function _error(reason) { - this._storedError = reason; - - this._readCapability.resolve(); - } - }, { - key: "_setReadableStream", - value: function _setReadableStream(readableStream) { - var _this2 = this; - - this._readableStream = readableStream; - readableStream.on("readable", function () { - _this2._readCapability.resolve(); - }); - readableStream.on("end", function () { - readableStream.destroy(); - _this2._done = true; - - _this2._readCapability.resolve(); - }); - readableStream.on("error", function (reason) { - _this2._error(reason); - }); - - if (this._storedError) { - this._readableStream.destroy(this._storedError); - } - } - }]); - - return BaseRangeReader; - }(); - - function createRequestOptions(parsedUrl, headers) { - return { - protocol: parsedUrl.protocol, - auth: parsedUrl.auth, - host: parsedUrl.hostname, - port: parsedUrl.port, - path: parsedUrl.path, - method: "GET", - headers: headers - }; - } - - var PDFNodeStreamFullReader = /*#__PURE__*/function (_BaseFullReader) { - _inherits(PDFNodeStreamFullReader, _BaseFullReader); - - var _super = _createSuper(PDFNodeStreamFullReader); - - function PDFNodeStreamFullReader(stream) { - var _this3; - - _classCallCheck(this, PDFNodeStreamFullReader); - - _this3 = _super.call(this, stream); - - var handleResponse = function handleResponse(response) { - if (response.statusCode === 404) { - var error = new _util.MissingPDFException("Missing PDF \"".concat(_this3._url, "\".")); - _this3._storedError = error; - - _this3._headersCapability.reject(error); - - return; - } - - _this3._headersCapability.resolve(); - - _this3._setReadableStream(response); - - var getResponseHeader = function getResponseHeader(name) { - return _this3._readableStream.headers[name.toLowerCase()]; - }; - - var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader: getResponseHeader, - isHttp: stream.isHttp, - rangeChunkSize: _this3._rangeChunkSize, - disableRange: _this3._disableRange - }), - allowRangeRequests = _validateRangeRequest.allowRangeRequests, - suggestedLength = _validateRangeRequest.suggestedLength; - - _this3._isRangeSupported = allowRangeRequests; - _this3._contentLength = suggestedLength || _this3._contentLength; - _this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - }; - - _this3._request = null; - - if (_this3._url.protocol === "http:") { - _this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse); - } else { - _this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse); - } - - _this3._request.on("error", function (reason) { - _this3._storedError = reason; - - _this3._headersCapability.reject(reason); - }); - - _this3._request.end(); - - return _this3; - } - - return PDFNodeStreamFullReader; - }(BaseFullReader); - - var PDFNodeStreamRangeReader = /*#__PURE__*/function (_BaseRangeReader) { - _inherits(PDFNodeStreamRangeReader, _BaseRangeReader); - - var _super2 = _createSuper(PDFNodeStreamRangeReader); - - function PDFNodeStreamRangeReader(stream, start, end) { - var _this4; - - _classCallCheck(this, PDFNodeStreamRangeReader); - - _this4 = _super2.call(this, stream); - _this4._httpHeaders = {}; - - for (var property in stream.httpHeaders) { - var value = stream.httpHeaders[property]; - - if (typeof value === "undefined") { - continue; - } - - _this4._httpHeaders[property] = value; - } - - _this4._httpHeaders.Range = "bytes=".concat(start, "-").concat(end - 1); - - var handleResponse = function handleResponse(response) { - if (response.statusCode === 404) { - var error = new _util.MissingPDFException("Missing PDF \"".concat(_this4._url, "\".")); - _this4._storedError = error; - return; - } - - _this4._setReadableStream(response); - }; - - _this4._request = null; - - if (_this4._url.protocol === "http:") { - _this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse); - } else { - _this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse); - } - - _this4._request.on("error", function (reason) { - _this4._storedError = reason; - }); - - _this4._request.end(); - - return _this4; - } - - return PDFNodeStreamRangeReader; - }(BaseRangeReader); - - var PDFNodeStreamFsFullReader = /*#__PURE__*/function (_BaseFullReader2) { - _inherits(PDFNodeStreamFsFullReader, _BaseFullReader2); - - var _super3 = _createSuper(PDFNodeStreamFsFullReader); - - function PDFNodeStreamFsFullReader(stream) { - var _this5; - - _classCallCheck(this, PDFNodeStreamFsFullReader); - - _this5 = _super3.call(this, stream); - var path = decodeURIComponent(_this5._url.path); - - if (fileUriRegex.test(_this5._url.href)) { - path = path.replace(/^\//, ""); - } - - fs.lstat(path, function (error, stat) { - if (error) { - if (error.code === "ENOENT") { - error = new _util.MissingPDFException("Missing PDF \"".concat(path, "\".")); - } - - _this5._storedError = error; - - _this5._headersCapability.reject(error); - - return; - } - - _this5._contentLength = stat.size; - - _this5._setReadableStream(fs.createReadStream(path)); - - _this5._headersCapability.resolve(); - }); - return _this5; - } - - return PDFNodeStreamFsFullReader; - }(BaseFullReader); - - var PDFNodeStreamFsRangeReader = /*#__PURE__*/function (_BaseRangeReader2) { - _inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2); - - var _super4 = _createSuper(PDFNodeStreamFsRangeReader); - - function PDFNodeStreamFsRangeReader(stream, start, end) { - var _this6; - - _classCallCheck(this, PDFNodeStreamFsRangeReader); - - _this6 = _super4.call(this, stream); - var path = decodeURIComponent(_this6._url.path); - - if (fileUriRegex.test(_this6._url.href)) { - path = path.replace(/^\//, ""); - } - - _this6._setReadableStream(fs.createReadStream(path, { - start: start, - end: end - 1 - })); - - return _this6; - } - - return PDFNodeStreamFsRangeReader; - }(BaseRangeReader); - - /***/ - }), - /* 144 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.createResponseStatusError = createResponseStatusError; - exports.extractFilenameFromHeader = extractFilenameFromHeader; - exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; - exports.validateResponseStatus = validateResponseStatus; - - var _util = __w_pdfjs_require__(4); - - var _content_disposition = __w_pdfjs_require__(145); - - var _display_utils = __w_pdfjs_require__(1); - - function validateRangeRequestCapabilities(_ref) { - var getResponseHeader = _ref.getResponseHeader, - isHttp = _ref.isHttp, - rangeChunkSize = _ref.rangeChunkSize, - disableRange = _ref.disableRange; - (0, _util.assert)(rangeChunkSize > 0, "Range chunk size must be larger than zero"); - var returnValues = { - allowRangeRequests: false, - suggestedLength: undefined - }; - var length = parseInt(getResponseHeader("Content-Length"), 10); - - if (!Number.isInteger(length)) { - return returnValues; - } - - returnValues.suggestedLength = length; - - if (length <= 2 * rangeChunkSize) { - return returnValues; - } - - if (disableRange || !isHttp) { - return returnValues; - } - - if (getResponseHeader("Accept-Ranges") !== "bytes") { - return returnValues; - } - - var contentEncoding = getResponseHeader("Content-Encoding") || "identity"; - - if (contentEncoding !== "identity") { - return returnValues; - } - - returnValues.allowRangeRequests = true; - return returnValues; - } - - function extractFilenameFromHeader(getResponseHeader) { - var contentDisposition = getResponseHeader("Content-Disposition"); - - if (contentDisposition) { - var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); - - if (filename.includes("%")) { - try { - filename = decodeURIComponent(filename); - } catch (ex) { - } - } - - if ((0, _display_utils.isPdfFile)(filename)) { - return filename; - } - } - - return null; - } - - function createResponseStatusError(status, url) { - if (status === 404 || status === 0 && url.startsWith("file:")) { - return new _util.MissingPDFException('Missing PDF "' + url + '".'); - } - - return new _util.UnexpectedResponseException("Unexpected server response (".concat(status, ") while retrieving PDF \"").concat(url, "\"."), status); - } - - function validateResponseStatus(status) { - return status === 200 || status === 206; - } - - /***/ - }), - /* 145 */ - /***/ ((__unused_webpack_module, exports) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function getFilenameFromContentDispositionHeader(contentDisposition) { - var needsEncodingFixup = true; - var tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); - - if (tmp) { - tmp = tmp[1]; - var filename = rfc2616unquote(tmp); - filename = unescape(filename); - filename = rfc5987decode(filename); - filename = rfc2047decode(filename); - return fixupEncoding(filename); - } - - tmp = rfc2231getparam(contentDisposition); - - if (tmp) { - var _filename = rfc2047decode(tmp); - - return fixupEncoding(_filename); - } - - tmp = toParamRegExp("filename", "i").exec(contentDisposition); - - if (tmp) { - tmp = tmp[1]; - - var _filename2 = rfc2616unquote(tmp); - - _filename2 = rfc2047decode(_filename2); - return fixupEncoding(_filename2); - } - - function toParamRegExp(attributePattern, flags) { - return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); - } - - function textdecode(encoding, value) { - if (encoding) { - if (!/^[\x00-\xFF]+$/.test(value)) { - return value; - } - - try { - var decoder = new TextDecoder(encoding, { - fatal: true - }); - var bytes = Array.from(value, function (ch) { - return ch.charCodeAt(0) & 0xff; - }); - value = decoder.decode(new Uint8Array(bytes)); - needsEncodingFixup = false; - } catch (e) { - if (/^utf-?8$/i.test(encoding)) { - try { - value = decodeURIComponent(escape(value)); - needsEncodingFixup = false; - } catch (err) { - } - } - } - } - - return value; - } - - function fixupEncoding(value) { - if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { - value = textdecode("utf-8", value); - - if (needsEncodingFixup) { - value = textdecode("iso-8859-1", value); - } - } - - return value; - } - - function rfc2231getparam(contentDispositionStr) { - var matches = []; - var match; - var iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); - - while ((match = iter.exec(contentDispositionStr)) !== null) { - var _match = match, - _match2 = _slicedToArray(_match, 4), - n = _match2[1], - quot = _match2[2], - part = _match2[3]; - - n = parseInt(n, 10); - - if (n in matches) { - if (n === 0) { - break; - } - - continue; - } - - matches[n] = [quot, part]; - } - - var parts = []; - - for (var _n2 = 0; _n2 < matches.length; ++_n2) { - if (!(_n2 in matches)) { - break; - } - - var _matches$_n = _slicedToArray(matches[_n2], 2), - _quot = _matches$_n[0], - _part = _matches$_n[1]; - - _part = rfc2616unquote(_part); - - if (_quot) { - _part = unescape(_part); - - if (_n2 === 0) { - _part = rfc5987decode(_part); - } - } - - parts.push(_part); - } - - return parts.join(""); - } - - function rfc2616unquote(value) { - if (value.startsWith('"')) { - var parts = value.slice(1).split('\\"'); - - for (var i = 0; i < parts.length; ++i) { - var quotindex = parts[i].indexOf('"'); - - if (quotindex !== -1) { - parts[i] = parts[i].slice(0, quotindex); - parts.length = i + 1; - } - - parts[i] = parts[i].replace(/\\(.)/g, "$1"); - } - - value = parts.join('"'); - } - - return value; - } - - function rfc5987decode(extvalue) { - var encodingend = extvalue.indexOf("'"); - - if (encodingend === -1) { - return extvalue; - } - - var encoding = extvalue.slice(0, encodingend); - var langvalue = extvalue.slice(encodingend + 1); - var value = langvalue.replace(/^[^']*'/, ""); - return textdecode(encoding, value); - } - - function rfc2047decode(value) { - if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { - return value; - } - - return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { - if (encoding === "q" || encoding === "Q") { - text = text.replace(/_/g, " "); - text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) { - return String.fromCharCode(parseInt(hex, 16)); - }); - return textdecode(charset, text); - } - - try { - text = atob(text); - } catch (e) { - } - - return textdecode(charset, text); - }); - } - - return ""; - } - - /***/ - }), - /* 146 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFNetworkStream = void 0; - - var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - - var _util = __w_pdfjs_require__(4); - - var _network_utils = __w_pdfjs_require__(144); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - ; - var OK_RESPONSE = 200; - var PARTIAL_CONTENT_RESPONSE = 206; - - function getArrayBuffer(xhr) { - var data = xhr.response; - - if (typeof data !== "string") { - return data; - } - - var array = (0, _util.stringToBytes)(data); - return array.buffer; - } - - var NetworkManager = /*#__PURE__*/function () { - function NetworkManager(url, args) { - _classCallCheck(this, NetworkManager); - - this.url = url; - args = args || {}; - this.isHttp = /^https?:/i.test(url); - this.httpHeaders = this.isHttp && args.httpHeaders || {}; - this.withCredentials = args.withCredentials || false; - - this.getXhr = args.getXhr || function NetworkManager_getXhr() { - return new XMLHttpRequest(); - }; - - this.currXhrId = 0; - this.pendingRequests = Object.create(null); - } - - _createClass(NetworkManager, [{ - key: "requestRange", - value: function requestRange(begin, end, listeners) { - var args = { - begin: begin, - end: end - }; - - for (var prop in listeners) { - args[prop] = listeners[prop]; - } - - return this.request(args); - } - }, { - key: "requestFull", - value: function requestFull(listeners) { - return this.request(listeners); - } - }, { - key: "request", - value: function request(args) { - var xhr = this.getXhr(); - var xhrId = this.currXhrId++; - var pendingRequest = this.pendingRequests[xhrId] = { - xhr: xhr - }; - xhr.open("GET", this.url); - xhr.withCredentials = this.withCredentials; - - for (var property in this.httpHeaders) { - var value = this.httpHeaders[property]; - - if (typeof value === "undefined") { - continue; - } - - xhr.setRequestHeader(property, value); - } - - if (this.isHttp && "begin" in args && "end" in args) { - xhr.setRequestHeader("Range", "bytes=".concat(args.begin, "-").concat(args.end - 1)); - pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; - } else { - pendingRequest.expectedStatus = OK_RESPONSE; - } - - xhr.responseType = "arraybuffer"; - - if (args.onError) { - xhr.onerror = function (evt) { - args.onError(xhr.status); - }; - } - - xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); - xhr.onprogress = this.onProgress.bind(this, xhrId); - pendingRequest.onHeadersReceived = args.onHeadersReceived; - pendingRequest.onDone = args.onDone; - pendingRequest.onError = args.onError; - pendingRequest.onProgress = args.onProgress; - xhr.send(null); - return xhrId; - } - }, { - key: "onProgress", - value: function onProgress(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - - if (!pendingRequest) { - return; - } - - if (pendingRequest.onProgress) { - pendingRequest.onProgress(evt); - } - } - }, { - key: "onStateChange", - value: function onStateChange(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - - if (!pendingRequest) { - return; - } - - var xhr = pendingRequest.xhr; - - if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { - pendingRequest.onHeadersReceived(); - delete pendingRequest.onHeadersReceived; - } - - if (xhr.readyState !== 4) { - return; - } - - if (!(xhrId in this.pendingRequests)) { - return; - } - - delete this.pendingRequests[xhrId]; - - if (xhr.status === 0 && this.isHttp) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - - return; - } - - var xhrStatus = xhr.status || OK_RESPONSE; - var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; - - if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - - return; - } - - var chunk = getArrayBuffer(xhr); - - if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { - var rangeHeader = xhr.getResponseHeader("Content-Range"); - var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); - pendingRequest.onDone({ - begin: parseInt(matches[1], 10), - chunk: chunk - }); - } else if (chunk) { - pendingRequest.onDone({ - begin: 0, - chunk: chunk - }); - } else if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - } - }, { - key: "getRequestXhr", - value: function getRequestXhr(xhrId) { - return this.pendingRequests[xhrId].xhr; - } - }, { - key: "isPendingRequest", - value: function isPendingRequest(xhrId) { - return xhrId in this.pendingRequests; - } - }, { - key: "abortRequest", - value: function abortRequest(xhrId) { - var xhr = this.pendingRequests[xhrId].xhr; - delete this.pendingRequests[xhrId]; - xhr.abort(); - } - }]); - - return NetworkManager; - }(); - - var PDFNetworkStream = /*#__PURE__*/function () { - function PDFNetworkStream(source) { - _classCallCheck(this, PDFNetworkStream); - - this._source = source; - this._manager = new NetworkManager(source.url, { - httpHeaders: source.httpHeaders, - withCredentials: source.withCredentials - }); - this._rangeChunkSize = source.rangeChunkSize; - this._fullRequestReader = null; - this._rangeRequestReaders = []; - } - - _createClass(PDFNetworkStream, [{ - key: "_onRangeRequestReaderClosed", - value: function _onRangeRequestReaderClosed(reader) { - var i = this._rangeRequestReaders.indexOf(reader); - - if (i >= 0) { - this._rangeRequestReaders.splice(i, 1); - } - } - }, { - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); - this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); - return this._fullRequestReader; - } - }, { - key: "getRangeReader", - value: function getRangeReader(begin, end) { - var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); - reader.onClosed = this._onRangeRequestReaderClosed.bind(this); - - this._rangeRequestReaders.push(reader); - - return reader; - } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - var readers = this._rangeRequestReaders.slice(0); - - readers.forEach(function (reader) { - reader.cancel(reason); - }); - } - }]); - - return PDFNetworkStream; - }(); - - exports.PDFNetworkStream = PDFNetworkStream; - - var PDFNetworkStreamFullRequestReader = /*#__PURE__*/function () { - function PDFNetworkStreamFullRequestReader(manager, source) { - _classCallCheck(this, PDFNetworkStreamFullRequestReader); - - this._manager = manager; - var args = { - onHeadersReceived: this._onHeadersReceived.bind(this), - onDone: this._onDone.bind(this), - onError: this._onError.bind(this), - onProgress: this._onProgress.bind(this) - }; - this._url = source.url; - this._fullRequestId = manager.requestFull(args); - this._headersReceivedCapability = (0, _util.createPromiseCapability)(); - this._disableRange = source.disableRange || false; - this._contentLength = source.length; - this._rangeChunkSize = source.rangeChunkSize; - - if (!this._rangeChunkSize && !this._disableRange) { - this._disableRange = true; - } - - this._isStreamingSupported = false; - this._isRangeSupported = false; - this._cachedChunks = []; - this._requests = []; - this._done = false; - this._storedError = undefined; - this._filename = null; - this.onProgress = null; - } - - _createClass(PDFNetworkStreamFullRequestReader, [{ - key: "_onHeadersReceived", - value: function _onHeadersReceived() { - var fullRequestXhrId = this._fullRequestId; - - var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); - - var getResponseHeader = function getResponseHeader(name) { - return fullRequestXhr.getResponseHeader(name); - }; - - var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader: getResponseHeader, - isHttp: this._manager.isHttp, - rangeChunkSize: this._rangeChunkSize, - disableRange: this._disableRange - }), - allowRangeRequests = _validateRangeRequest.allowRangeRequests, - suggestedLength = _validateRangeRequest.suggestedLength; - - if (allowRangeRequests) { - this._isRangeSupported = true; - } - - this._contentLength = suggestedLength || this._contentLength; - this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - - if (this._isRangeSupported) { - this._manager.abortRequest(fullRequestXhrId); - } - - this._headersReceivedCapability.resolve(); - } - }, { - key: "_onDone", - value: function _onDone(args) { - if (args) { - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - - requestCapability.resolve({ - value: args.chunk, - done: false - }); - } else { - this._cachedChunks.push(args.chunk); - } - } - - this._done = true; - - if (this._cachedChunks.length > 0) { - return; - } - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - } - }, { - key: "_onError", - value: function _onError(status) { - var url = this._url; - var exception = (0, _network_utils.createResponseStatusError)(status, url); - this._storedError = exception; - - this._headersReceivedCapability.reject(exception); - - this._requests.forEach(function (requestCapability) { - requestCapability.reject(exception); - }); - - this._requests = []; - this._cachedChunks = []; - } - }, { - key: "_onProgress", - value: function _onProgress(data) { - if (this.onProgress) { - this.onProgress({ - loaded: data.loaded, - total: data.lengthComputable ? data.total : this._contentLength - }); - } - } - }, { - key: "filename", - get: function get() { - return this._filename; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._isRangeSupported; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }, { - key: "contentLength", - get: function get() { - return this._contentLength; - } - }, { - key: "headersReady", - get: function get() { - return this._headersReceivedCapability.promise; - } - }, { - key: "read", - value: function () { - var _read = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var chunk, requestCapability; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!this._storedError) { - _context.next = 2; - break; - } - - throw this._storedError; - - case 2: - if (!(this._cachedChunks.length > 0)) { - _context.next = 5; - break; - } - - chunk = this._cachedChunks.shift(); - return _context.abrupt("return", { - value: chunk, - done: false - }); - - case 5: - if (!this._done) { - _context.next = 7; - break; - } - - return _context.abrupt("return", { - value: undefined, - done: true - }); - - case 7: - requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return _context.abrupt("return", requestCapability.promise); - - case 10: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._done = true; - - this._headersReceivedCapability.reject(reason); - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - - if (this._manager.isPendingRequest(this._fullRequestId)) { - this._manager.abortRequest(this._fullRequestId); - } - - this._fullRequestReader = null; - } - }]); - - return PDFNetworkStreamFullRequestReader; - }(); - - var PDFNetworkStreamRangeRequestReader = /*#__PURE__*/function () { - function PDFNetworkStreamRangeRequestReader(manager, begin, end) { - _classCallCheck(this, PDFNetworkStreamRangeRequestReader); - - this._manager = manager; - var args = { - onDone: this._onDone.bind(this), - onProgress: this._onProgress.bind(this) - }; - this._requestId = manager.requestRange(begin, end, args); - this._requests = []; - this._queuedChunk = null; - this._done = false; - this.onProgress = null; - this.onClosed = null; - } - - _createClass(PDFNetworkStreamRangeRequestReader, [{ - key: "_close", - value: function _close() { - if (this.onClosed) { - this.onClosed(this); - } - } - }, { - key: "_onDone", - value: function _onDone(data) { - var chunk = data.chunk; - - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._queuedChunk = chunk; - } - - this._done = true; - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - - this._close(); - } - }, { - key: "_onProgress", - value: function _onProgress(evt) { - if (!this.isStreamingSupported && this.onProgress) { - this.onProgress({ - loaded: evt.loaded - }); - } - } - }, { - key: "isStreamingSupported", - get: function get() { - return false; - } - }, { - key: "read", - value: function () { - var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var chunk, requestCapability; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!(this._queuedChunk !== null)) { - _context2.next = 4; - break; - } - - chunk = this._queuedChunk; - this._queuedChunk = null; - return _context2.abrupt("return", { - value: chunk, - done: false - }); - - case 4: - if (!this._done) { - _context2.next = 6; - break; - } - - return _context2.abrupt("return", { - value: undefined, - done: true - }); - - case 6: - requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return _context2.abrupt("return", requestCapability.promise); - - case 9: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - this._done = true; - - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - - this._requests = []; - - if (this._manager.isPendingRequest(this._requestId)) { - this._manager.abortRequest(this._requestId); - } - - this._close(); - } - }]); - - return PDFNetworkStreamRangeRequestReader; - }(); - - /***/ - }), - /* 147 */ - /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFFetchStream = void 0; - - var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2)); - - var _util = __w_pdfjs_require__(4); - - var _network_utils = __w_pdfjs_require__(144); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - ; - - function createFetchOptions(headers, withCredentials, abortController) { - return { - method: "GET", - headers: headers, - signal: abortController === null || abortController === void 0 ? void 0 : abortController.signal, - mode: "cors", - credentials: withCredentials ? "include" : "same-origin", - redirect: "follow" - }; - } - - function createHeaders(httpHeaders) { - var headers = new Headers(); - - for (var property in httpHeaders) { - var value = httpHeaders[property]; - - if (typeof value === "undefined") { - continue; - } - - headers.append(property, value); - } - - return headers; - } - - var PDFFetchStream = /*#__PURE__*/function () { - function PDFFetchStream(source) { - _classCallCheck(this, PDFFetchStream); - - this.source = source; - this.isHttp = /^https?:/i.test(source.url); - this.httpHeaders = this.isHttp && source.httpHeaders || {}; - this._fullRequestReader = null; - this._rangeRequestReaders = []; - } - - _createClass(PDFFetchStream, [{ - key: "_progressiveDataLength", - get: function get() { - var _this$_fullRequestRea, _this$_fullRequestRea2; - - return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0; - } - }, { - key: "getFullReader", - value: function getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); - this._fullRequestReader = new PDFFetchStreamReader(this); - return this._fullRequestReader; - } - }, { - key: "getRangeReader", - value: function getRangeReader(begin, end) { - if (end <= this._progressiveDataLength) { - return null; - } - - var reader = new PDFFetchStreamRangeReader(this, begin, end); - - this._rangeRequestReaders.push(reader); - - return reader; - } - }, { - key: "cancelAllRequests", - value: function cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - var readers = this._rangeRequestReaders.slice(0); - - readers.forEach(function (reader) { - reader.cancel(reason); - }); - } - }]); - - return PDFFetchStream; - }(); - - exports.PDFFetchStream = PDFFetchStream; - - var PDFFetchStreamReader = /*#__PURE__*/function () { - function PDFFetchStreamReader(stream) { - var _this = this; - - _classCallCheck(this, PDFFetchStreamReader); - - this._stream = stream; - this._reader = null; - this._loaded = 0; - this._filename = null; - var source = stream.source; - this._withCredentials = source.withCredentials || false; - this._contentLength = source.length; - this._headersCapability = (0, _util.createPromiseCapability)(); - this._disableRange = source.disableRange || false; - this._rangeChunkSize = source.rangeChunkSize; - - if (!this._rangeChunkSize && !this._disableRange) { - this._disableRange = true; - } - - if (typeof AbortController !== "undefined") { - this._abortController = new AbortController(); - } - - this._isStreamingSupported = !source.disableStream; - this._isRangeSupported = !source.disableRange; - this._headers = createHeaders(this._stream.httpHeaders); - var url = source.url; - fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) { - if (!(0, _network_utils.validateResponseStatus)(response.status)) { - throw (0, _network_utils.createResponseStatusError)(response.status, url); - } - - _this._reader = response.body.getReader(); - - _this._headersCapability.resolve(); - - var getResponseHeader = function getResponseHeader(name) { - return response.headers.get(name); - }; - - var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader: getResponseHeader, - isHttp: _this._stream.isHttp, - rangeChunkSize: _this._rangeChunkSize, - disableRange: _this._disableRange - }), - allowRangeRequests = _validateRangeRequest.allowRangeRequests, - suggestedLength = _validateRangeRequest.suggestedLength; - - _this._isRangeSupported = allowRangeRequests; - _this._contentLength = suggestedLength || _this._contentLength; - _this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - - if (!_this._isStreamingSupported && _this._isRangeSupported) { - _this.cancel(new _util.AbortException("Streaming is disabled.")); - } - })["catch"](this._headersCapability.reject); - this.onProgress = null; - } - - _createClass(PDFFetchStreamReader, [{ - key: "headersReady", - get: function get() { - return this._headersCapability.promise; - } - }, { - key: "filename", - get: function get() { - return this._filename; - } - }, { - key: "contentLength", - get: function get() { - return this._contentLength; - } - }, { - key: "isRangeSupported", - get: function get() { - return this._isRangeSupported; - } - }, { - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }, { - key: "read", - value: function () { - var _read = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var _yield$this$_reader$r, value, done, buffer; - - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return this._headersCapability.promise; - - case 2: - _context.next = 4; - return this._reader.read(); - - case 4: - _yield$this$_reader$r = _context.sent; - value = _yield$this$_reader$r.value; - done = _yield$this$_reader$r.done; - - if (!done) { - _context.next = 9; - break; - } - - return _context.abrupt("return", { - value: value, - done: done - }); - - case 9: - this._loaded += value.byteLength; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded, - total: this._contentLength - }); - } - - buffer = new Uint8Array(value).buffer; - return _context.abrupt("return", { - value: buffer, - done: false - }); - - case 13: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function read() { - return _read.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - if (this._reader) { - this._reader.cancel(reason); - } - - if (this._abortController) { - this._abortController.abort(); - } - } - }]); - - return PDFFetchStreamReader; - }(); - - var PDFFetchStreamRangeReader = /*#__PURE__*/function () { - function PDFFetchStreamRangeReader(stream, begin, end) { - var _this2 = this; - - _classCallCheck(this, PDFFetchStreamRangeReader); - - this._stream = stream; - this._reader = null; - this._loaded = 0; - var source = stream.source; - this._withCredentials = source.withCredentials || false; - this._readCapability = (0, _util.createPromiseCapability)(); - this._isStreamingSupported = !source.disableStream; - - if (typeof AbortController !== "undefined") { - this._abortController = new AbortController(); - } - - this._headers = createHeaders(this._stream.httpHeaders); - - this._headers.append("Range", "bytes=".concat(begin, "-").concat(end - 1)); - - var url = source.url; - fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) { - if (!(0, _network_utils.validateResponseStatus)(response.status)) { - throw (0, _network_utils.createResponseStatusError)(response.status, url); - } - - _this2._readCapability.resolve(); - - _this2._reader = response.body.getReader(); - })["catch"](function (reason) { - if ((reason === null || reason === void 0 ? void 0 : reason.name) === "AbortError") { - return; - } - - throw reason; - }); - this.onProgress = null; - } - - _createClass(PDFFetchStreamRangeReader, [{ - key: "isStreamingSupported", - get: function get() { - return this._isStreamingSupported; - } - }, { - key: "read", - value: function () { - var _read2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var _yield$this$_reader$r2, value, done, buffer; - - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return this._readCapability.promise; - - case 2: - _context2.next = 4; - return this._reader.read(); - - case 4: - _yield$this$_reader$r2 = _context2.sent; - value = _yield$this$_reader$r2.value; - done = _yield$this$_reader$r2.done; - - if (!done) { - _context2.next = 9; - break; - } - - return _context2.abrupt("return", { - value: value, - done: done - }); - - case 9: - this._loaded += value.byteLength; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded - }); - } - - buffer = new Uint8Array(value).buffer; - return _context2.abrupt("return", { - value: buffer, - done: false - }); - - case 13: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function read() { - return _read2.apply(this, arguments); - } - - return read; - }() - }, { - key: "cancel", - value: function cancel(reason) { - if (this._reader) { - this._reader.cancel(reason); - } - - if (this._abortController) { - this._abortController.abort(); - } - } - }]); - - return PDFFetchStreamRangeReader; - }(); - - /***/ - }) - /******/]); - /************************************************************************/ - /******/ // The module cache - /******/ - var __webpack_module_cache__ = {}; - /******/ - /******/ // The require function - /******/ - function __w_pdfjs_require__(moduleId) { - /******/ // Check if module is in cache - /******/ - var cachedModule = __webpack_module_cache__[moduleId]; - /******/ - if (cachedModule !== undefined) { - /******/ - return cachedModule.exports; - /******/ - } - /******/ // Create a new module (and put it into the cache) - /******/ - var module = __webpack_module_cache__[moduleId] = { - /******/ id: moduleId, - /******/ loaded: false, - /******/ exports: {} - /******/ - }; - /******/ - /******/ // Execute the module function - /******/ - __webpack_modules__[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); - /******/ - /******/ // Flag the module as loaded - /******/ - module.loaded = true; - /******/ - /******/ // Return the exports of the module - /******/ - return module.exports; - /******/ - } - - /******/ - /************************************************************************/ - /******/ /* webpack/runtime/node module decorator */ - /******/ - (() => { - /******/ - __w_pdfjs_require__.nmd = (module) => { - /******/ - module.paths = []; - /******/ - if (!module.children) module.children = []; - /******/ - return module; - /******/ - }; - /******/ - })(); - /******/ - /************************************************************************/ - var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be in strict mode. - (() => { - "use strict"; - var exports = __webpack_exports__; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - Object.defineProperty(exports, "addLinkAttributes", ({ - enumerable: true, - get: function get() { - return _display_utils.addLinkAttributes; - } - })); - Object.defineProperty(exports, "getFilenameFromUrl", ({ - enumerable: true, - get: function get() { - return _display_utils.getFilenameFromUrl; - } - })); - Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ - enumerable: true, - get: function get() { - return _display_utils.getPdfFilenameFromUrl; - } - })); - Object.defineProperty(exports, "isPdfFile", ({ - enumerable: true, - get: function get() { - return _display_utils.isPdfFile; - } - })); - Object.defineProperty(exports, "LinkTarget", ({ - enumerable: true, - get: function get() { - return _display_utils.LinkTarget; - } - })); - Object.defineProperty(exports, "loadScript", ({ - enumerable: true, - get: function get() { - return _display_utils.loadScript; - } - })); - Object.defineProperty(exports, "PDFDateString", ({ - enumerable: true, - get: function get() { - return _display_utils.PDFDateString; - } - })); - Object.defineProperty(exports, "RenderingCancelledException", ({ - enumerable: true, - get: function get() { - return _display_utils.RenderingCancelledException; - } - })); - Object.defineProperty(exports, "build", ({ - enumerable: true, - get: function get() { - return _api.build; - } - })); - Object.defineProperty(exports, "getDocument", ({ - enumerable: true, - get: function get() { - return _api.getDocument; - } - })); - Object.defineProperty(exports, "LoopbackPort", ({ - enumerable: true, - get: function get() { - return _api.LoopbackPort; - } - })); - Object.defineProperty(exports, "PDFDataRangeTransport", ({ - enumerable: true, - get: function get() { - return _api.PDFDataRangeTransport; - } - })); - Object.defineProperty(exports, "PDFWorker", ({ - enumerable: true, - get: function get() { - return _api.PDFWorker; - } - })); - Object.defineProperty(exports, "version", ({ - enumerable: true, - get: function get() { - return _api.version; - } - })); - Object.defineProperty(exports, "CMapCompressionType", ({ - enumerable: true, - get: function get() { - return _util.CMapCompressionType; - } - })); - Object.defineProperty(exports, "createObjectURL", ({ - enumerable: true, - get: function get() { - return _util.createObjectURL; - } - })); - Object.defineProperty(exports, "createPromiseCapability", ({ - enumerable: true, - get: function get() { - return _util.createPromiseCapability; - } - })); - Object.defineProperty(exports, "createValidAbsoluteUrl", ({ - enumerable: true, - get: function get() { - return _util.createValidAbsoluteUrl; - } - })); - Object.defineProperty(exports, "InvalidPDFException", ({ - enumerable: true, - get: function get() { - return _util.InvalidPDFException; - } - })); - Object.defineProperty(exports, "MissingPDFException", ({ - enumerable: true, - get: function get() { - return _util.MissingPDFException; - } - })); - Object.defineProperty(exports, "OPS", ({ - enumerable: true, - get: function get() { - return _util.OPS; - } - })); - Object.defineProperty(exports, "PasswordResponses", ({ - enumerable: true, - get: function get() { - return _util.PasswordResponses; - } - })); - Object.defineProperty(exports, "PermissionFlag", ({ - enumerable: true, - get: function get() { - return _util.PermissionFlag; - } - })); - Object.defineProperty(exports, "removeNullCharacters", ({ - enumerable: true, - get: function get() { - return _util.removeNullCharacters; - } - })); - Object.defineProperty(exports, "shadow", ({ - enumerable: true, - get: function get() { - return _util.shadow; - } - })); - Object.defineProperty(exports, "UnexpectedResponseException", ({ - enumerable: true, - get: function get() { - return _util.UnexpectedResponseException; - } - })); - Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ - enumerable: true, - get: function get() { - return _util.UNSUPPORTED_FEATURES; - } - })); - Object.defineProperty(exports, "Util", ({ - enumerable: true, - get: function get() { - return _util.Util; - } - })); - Object.defineProperty(exports, "VerbosityLevel", ({ - enumerable: true, - get: function get() { - return _util.VerbosityLevel; - } - })); - Object.defineProperty(exports, "AnnotationLayer", ({ - enumerable: true, - get: function get() { - return _annotation_layer.AnnotationLayer; - } - })); - Object.defineProperty(exports, "apiCompatibilityParams", ({ - enumerable: true, - get: function get() { - return _api_compatibility.apiCompatibilityParams; - } - })); - Object.defineProperty(exports, "GlobalWorkerOptions", ({ - enumerable: true, - get: function get() { - return _worker_options.GlobalWorkerOptions; - } - })); - Object.defineProperty(exports, "renderTextLayer", ({ - enumerable: true, - get: function get() { - return _text_layer.renderTextLayer; - } - })); - Object.defineProperty(exports, "SVGGraphics", ({ - enumerable: true, - get: function get() { - return _svg.SVGGraphics; - } - })); - Object.defineProperty(exports, "XfaLayer", ({ - enumerable: true, - get: function get() { - return _xfa_layer.XfaLayer; - } - })); - - var _display_utils = __w_pdfjs_require__(1); - - var _api = __w_pdfjs_require__(125); - - var _util = __w_pdfjs_require__(4); - - var _annotation_layer = __w_pdfjs_require__(138); - - var _api_compatibility = __w_pdfjs_require__(129); - - var _worker_options = __w_pdfjs_require__(132); - - var _text_layer = __w_pdfjs_require__(140); - - var _svg = __w_pdfjs_require__(141); - - var _xfa_layer = __w_pdfjs_require__(142); - - var pdfjsVersion = '2.8.335'; - var pdfjsBuild = '228adbf67'; - { - var _require = __w_pdfjs_require__(6), - isNodeJS = _require.isNodeJS; - - if (isNodeJS) { - var PDFNodeStream = __w_pdfjs_require__(143).PDFNodeStream; - - (0, _api.setPDFNetworkStreamFactory)(function (params) { - return new PDFNodeStream(params); - }); - } else { - var PDFNetworkStream = __w_pdfjs_require__(146).PDFNetworkStream; - - var PDFFetchStream; - - if ((0, _display_utils.isFetchSupported)()) { - PDFFetchStream = __w_pdfjs_require__(147).PDFFetchStream; - } - - (0, _api.setPDFNetworkStreamFactory)(function (params) { - if (PDFFetchStream && (0, _display_utils.isValidFetchUrl)(params.url)) { - return new PDFFetchStream(params); - } - - return new PDFNetworkStream(params); - }); - } - } - })(); - - /******/ - return __webpack_exports__; - /******/ - })() - ; -}); -//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/pdf.js.map b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/pdf.js.map deleted file mode 100644 index bf3e8e5dea6d5b2452ce9bee41dba4cddde95f22..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/pdf.js.map +++ /dev/null @@ -1,2992 +0,0 @@ -{ - "version": 3, - "sources": [ - "webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition", - "webpack://pdfjs-dist/build/pdf/src/display/display_utils.js", - "webpack://pdfjs-dist/build/pdf/node_modules/@babel/runtime/regenerator/index.js", - "webpack://pdfjs-dist/build/pdf/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js", - "webpack://pdfjs-dist/build/pdf/src/shared/util.js", - "webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js", - "webpack://pdfjs-dist/build/pdf/src/shared/is_node.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/es/global-this.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.global-this.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/export.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/global.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-get-own-property-descriptor.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/descriptors.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/fails.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-property-is-enumerable.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/create-property-descriptor.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/to-indexed-object.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/indexed-object.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/classof-raw.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/require-object-coercible.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/to-primitive.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/is-object.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/has.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/ie8-dom-define.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/document-create-element.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/create-non-enumerable-property.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-define-property.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/an-object.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/redefine.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/set-global.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/inspect-source.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/shared-store.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/internal-state.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/native-weak-map.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/shared-key.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/shared.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/is-pure.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/uid.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/hidden-keys.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/copy-constructor-properties.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/own-keys.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/get-built-in.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/path.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-get-own-property-names.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-keys-internal.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/array-includes.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/to-length.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/to-integer.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/to-absolute-index.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/enum-bug-keys.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-get-own-property-symbols.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/is-forced.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/es/object/from-entries.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.array.iterator.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/add-to-unscopables.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/well-known-symbol.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/native-symbol.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/engine-is-node.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/engine-v8-version.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/engine-user-agent.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/use-symbol-as-uid.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-create.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-define-properties.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-keys.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/html.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/iterators.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/define-iterator.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/create-iterator-constructor.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/iterators-core.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-get-prototype-of.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/to-object.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/correct-prototype-getter.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/set-to-string-tag.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-set-prototype-of.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/a-possible-prototype.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.object.from-entries.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/iterate.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/is-array-iterator-method.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/function-bind-context.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/a-function.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/get-iterator-method.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/classof.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/to-string-tag-support.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/iterator-close.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/create-property.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/es/promise/index.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.aggregate-error.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.object.to-string.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-to-string.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.promise.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/native-promise-constructor.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/redefine-all.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/set-species.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/an-instance.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/check-correctness-of-iteration.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/species-constructor.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/task.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/engine-is-ios.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/microtask.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/engine-is-webos-webkit.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/promise-resolve.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/new-promise-capability.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/host-report-errors.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/perform.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.promise.all-settled.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.promise.any.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.promise.finally.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.string.iterator.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/string-multibyte.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/web.dom-collections.iterator.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/dom-iterables.js", - "webpack://pdfjs-dist/build/pdf/node_modules/web-streams-polyfill/dist/ponyfill.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/es/string/pad-start.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.string.pad-start.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/string-pad.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/string-repeat.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/string-pad-webkit-bug.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/entry-unbind.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/es/string/pad-end.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.string.pad-end.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/es/object/values.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.object.values.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/internals/object-to-array.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/es/object/entries.js", - "webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es.object.entries.js", - "webpack://pdfjs-dist/build/pdf/src/display/api.js", - "webpack://pdfjs-dist/build/pdf/src/display/font_loader.js", - "webpack://pdfjs-dist/build/pdf/src/display/node_utils.js", - "webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js", - "webpack://pdfjs-dist/build/pdf/src/display/api_compatibility.js", - "webpack://pdfjs-dist/build/pdf/src/display/canvas.js", - "webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js", - "webpack://pdfjs-dist/build/pdf/src/display/worker_options.js", - "webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js", - "webpack://pdfjs-dist/build/pdf/src/display/metadata.js", - "webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js", - "webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js", - "webpack://pdfjs-dist/build/pdf/src/display/webgl.js", - "webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js", - "webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js", - "webpack://pdfjs-dist/build/pdf/src/display/text_layer.js", - "webpack://pdfjs-dist/build/pdf/src/display/svg.js", - "webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js", - "webpack://pdfjs-dist/build/pdf/src/display/node_stream.js", - "webpack://pdfjs-dist/build/pdf/src/display/network_utils.js", - "webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js", - "webpack://pdfjs-dist/build/pdf/src/display/network.js", - "webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js", - "webpack://pdfjs-dist/build/pdf/webpack/bootstrap", - "webpack://pdfjs-dist/build/pdf/webpack/runtime/node module decorator", - "webpack://pdfjs-dist/build/pdf/src/pdf.js" - ], - "names": [ - "DEFAULT_LINK_REL", - "SVG_NS", - "constructor", - "unreachable", - "create", - "reset", - "canvasAndContext", - "width", - "height", - "destroy", - "ownerDocument", - "globalThis", - "canvas", - "context", - "baseUrl", - "isCompressed", - "url", - "compressionType", - "CMapCompressionType", - "reason", - "_fetchData", - "isFetchSupported", - "isValidFetchUrl", - "document", - "response", - "cMapData", - "stringToBytes", - "request", - "XMLHttpRequest", - "resolve", - "reject", - "assert", - "svg", - "createElement", - "offsetX", - "offsetY", - "dontFlip", - "centerX", - "viewBox", - "centerY", - "rotation", - "rotateA", - "rotateB", - "rotateC", - "rotateD", - "offsetCanvasX", - "Math", - "offsetCanvasY", - "clone", - "scale", - "convertToViewportPoint", - "convertToViewportRectangle", - "topLeft", - "rect", - "bottomRight", - "convertToPdfPoint", - "LinkTarget", - "NONE", - "SELF", - "BLANK", - "PARENT", - "TOP", - "enabled", - "urlNullRemoved", - "removeNullCharacters", - "link", - "targetStr", - "ii", - "i", - "anchor", - "query", - "end", - "defaultFilename", - "isDataScheme", - "warn", - "reURI", - "reFilename", - "splitURI", - "suggestedFilename", - "decodeURIComponent", - "Object", - "time", - "name", - "Date", - "timeEnd", - "start", - "toString", - "outBuf", - "longest", - "duration", - "Response", - "protocol", - "removeScriptElement", - "script", - "console", - "isString", - "pdfDateStringRegex", - "matches", - "year", - "parseInt", - "month", - "day", - "hour", - "minute", - "second", - "universalTimeRelation", - "offsetHour", - "offsetMinute", - "module", - "runtime", - "Op", - "hasOwn", - "$Symbol", - "iteratorSymbol", - "asyncIteratorSymbol", - "toStringTagSymbol", - "value", - "enumerable", - "configurable", - "writable", - "obj", - "define", - "protoGenerator", - "outerFn", - "generator", - "tryLocsList", - "makeInvokeMethod", - "exports", - "type", - "arg", - "fn", - "GenStateSuspendedStart", - "GenStateSuspendedYield", - "GenStateExecuting", - "GenStateCompleted", - "ContinueSentinel", - "IteratorPrototype", - "getProto", - "NativeIteratorPrototype", - "values", - "Gp", - "GeneratorFunctionPrototype", - "Generator", - "GeneratorFunction", - "ctor", - "genFun", - "__await", - "record", - "tryCatch", - "result", - "invoke", - "previousPromise", - "callInvokeWithMethodAndArg", - "defineIteratorMethods", - "AsyncIterator", - "PromiseImpl", - "iter", - "wrap", - "state", - "method", - "doneResult", - "delegate", - "delegateResult", - "maybeInvokeDelegate", - "done", - "info", - "entry", - "tryLoc", - "locs", - "keys", - "key", - "next", - "iteratorMethod", - "iterable", - "isNaN", - "Context", - "stop", - "rootEntry", - "rootRecord", - "dispatchException", - "handle", - "hasCatch", - "hasFinally", - "abrupt", - "finallyEntry", - "complete", - "finish", - "resetTryEntry", - "thrown", - "delegateYield", - "iterator", - "resultName", - "nextLoc", - "regeneratorRuntime", - "Function", - "IDENTITY_MATRIX", - "FONT_IDENTITY_MATRIX", - "PermissionFlag", - "PRINT", - "MODIFY_CONTENTS", - "COPY", - "MODIFY_ANNOTATIONS", - "FILL_INTERACTIVE_FORMS", - "COPY_FOR_ACCESSIBILITY", - "ASSEMBLE", - "PRINT_HIGH_QUALITY", - "TextRenderingMode", - "FILL", - "STROKE", - "FILL_STROKE", - "INVISIBLE", - "FILL_ADD_TO_PATH", - "STROKE_ADD_TO_PATH", - "FILL_STROKE_ADD_TO_PATH", - "ADD_TO_PATH", - "FILL_STROKE_MASK", - "ADD_TO_PATH_FLAG", - "ImageKind", - "GRAYSCALE_1BPP", - "RGB_24BPP", - "RGBA_32BPP", - "AnnotationType", - "TEXT", - "LINK", - "FREETEXT", - "LINE", - "SQUARE", - "CIRCLE", - "POLYGON", - "POLYLINE", - "HIGHLIGHT", - "UNDERLINE", - "SQUIGGLY", - "STRIKEOUT", - "STAMP", - "CARET", - "INK", - "POPUP", - "FILEATTACHMENT", - "SOUND", - "MOVIE", - "WIDGET", - "SCREEN", - "PRINTERMARK", - "TRAPNET", - "WATERMARK", - "THREED", - "REDACT", - "AnnotationStateModelType", - "MARKED", - "REVIEW", - "AnnotationMarkedState", - "UNMARKED", - "AnnotationReviewState", - "ACCEPTED", - "REJECTED", - "CANCELLED", - "COMPLETED", - "AnnotationReplyType", - "GROUP", - "REPLY", - "AnnotationFlag", - "HIDDEN", - "NOZOOM", - "NOROTATE", - "NOVIEW", - "READONLY", - "LOCKED", - "TOGGLENOVIEW", - "LOCKEDCONTENTS", - "AnnotationFieldFlag", - "REQUIRED", - "NOEXPORT", - "MULTILINE", - "PASSWORD", - "NOTOGGLETOOFF", - "RADIO", - "PUSHBUTTON", - "COMBO", - "EDIT", - "SORT", - "FILESELECT", - "MULTISELECT", - "DONOTSPELLCHECK", - "DONOTSCROLL", - "COMB", - "RICHTEXT", - "RADIOSINUNISON", - "COMMITONSELCHANGE", - "AnnotationBorderStyleType", - "SOLID", - "DASHED", - "BEVELED", - "INSET", - "AnnotationActionEventType", - "E", - "X", - "D", - "U", - "Fo", - "Bl", - "PO", - "PC", - "PV", - "PI", - "K", - "F", - "V", - "C", - "DocumentActionEventType", - "WC", - "WS", - "DS", - "WP", - "DP", - "PageActionEventType", - "O", - "StreamType", - "UNKNOWN", - "FLATE", - "LZW", - "DCT", - "JPX", - "JBIG", - "A85", - "AHX", - "CCF", - "RLX", - "FontType", - "TYPE1", - "TYPE1C", - "CIDFONTTYPE0", - "CIDFONTTYPE0C", - "TRUETYPE", - "CIDFONTTYPE2", - "TYPE3", - "OPENTYPE", - "TYPE0", - "MMTYPE1", - "VerbosityLevel", - "ERRORS", - "WARNINGS", - "INFOS", - "BINARY", - "STREAM", - "OPS", - "dependency", - "setLineWidth", - "setLineCap", - "setLineJoin", - "setMiterLimit", - "setDash", - "setRenderingIntent", - "setFlatness", - "setGState", - "save", - "restore", - "transform", - "moveTo", - "lineTo", - "curveTo", - "curveTo2", - "curveTo3", - "closePath", - "rectangle", - "stroke", - "closeStroke", - "fill", - "eoFill", - "fillStroke", - "eoFillStroke", - "closeFillStroke", - "closeEOFillStroke", - "endPath", - "clip", - "eoClip", - "beginText", - "endText", - "setCharSpacing", - "setWordSpacing", - "setHScale", - "setLeading", - "setFont", - "setTextRenderingMode", - "setTextRise", - "moveText", - "setLeadingMoveText", - "setTextMatrix", - "nextLine", - "showText", - "showSpacedText", - "nextLineShowText", - "nextLineSetSpacingShowText", - "setCharWidth", - "setCharWidthAndBounds", - "setStrokeColorSpace", - "setFillColorSpace", - "setStrokeColor", - "setStrokeColorN", - "setFillColor", - "setFillColorN", - "setStrokeGray", - "setFillGray", - "setStrokeRGBColor", - "setFillRGBColor", - "setStrokeCMYKColor", - "setFillCMYKColor", - "shadingFill", - "beginInlineImage", - "beginImageData", - "endInlineImage", - "paintXObject", - "markPoint", - "markPointProps", - "beginMarkedContent", - "beginMarkedContentProps", - "endMarkedContent", - "beginCompat", - "endCompat", - "paintFormXObjectBegin", - "paintFormXObjectEnd", - "beginGroup", - "endGroup", - "beginAnnotations", - "endAnnotations", - "beginAnnotation", - "endAnnotation", - "paintJpegXObject", - "paintImageMaskXObject", - "paintImageMaskXObjectGroup", - "paintImageXObject", - "paintInlineImageXObject", - "paintInlineImageXObjectGroup", - "paintImageXObjectRepeat", - "paintImageMaskXObjectRepeat", - "paintSolidColorImageMask", - "constructPath", - "UNSUPPORTED_FEATURES", - "unknown", - "forms", - "javaScript", - "smask", - "shadingPattern", - "font", - "errorTilingPattern", - "errorExtGState", - "errorXObject", - "errorFontLoadType3", - "errorFontState", - "errorFontMissing", - "errorFontTranslate", - "errorColorSpace", - "errorOperatorList", - "errorFontToUnicode", - "errorFontLoadNative", - "errorFontGetPath", - "errorMarkedContent", - "PasswordResponses", - "NEED_PASSWORD", - "INCORRECT_PASSWORD", - "verbosity", - "Number", - "base", - "other", - "absoluteUrl", - "_isValidProtocol", - "BaseException", - "NullCharactersRegExp", - "str", - "bytes", - "length", - "MAX_ARGUMENT_COUNT", - "String", - "strBuf", - "chunkEnd", - "chunk", - "arr", - "resultLength", - "arrayByteLength", - "pos", - "data", - "item", - "itemLength", - "buffer8", - "view32", - "IsLittleEndianCached", - "shadow", - "isLittleEndian", - "IsEvalSupportedCached", - "isEvalSupported", - "hexNumbers", - "Array", - "n", - "m1", - "m2", - "xt", - "p", - "m", - "yt", - "d", - "p1", - "Util", - "p2", - "r", - "p3", - "p4", - "v", - "transpose", - "a", - "b", - "c", - "first", - "sx", - "sy", - "orderedX", - "rect1", - "rect2", - "orderedY", - "PDFStringTranslateTable", - "code", - "match", - "buf", - "char", - "escape", - "unescape", - "encodeURIComponent", - "arr1", - "arr2", - "date", - "buffer", - "capability", - "isSettled", - "get", - "contentType", - "forceDataSchema", - "URL", - "digits", - "b1", - "b2", - "b3", - "d1", - "d2", - "d3", - "d4", - "require", - "Buffer", - "isReadableStreamSupported", - "controller", - "isNodeJS", - "process", - "$", - "global", - "getOwnPropertyDescriptor", - "createNonEnumerableProperty", - "redefine", - "setGlobal", - "copyConstructorProperties", - "isForced", - "options", - "source", - "TARGET", - "target", - "GLOBAL", - "STATIC", - "stat", - "FORCED", - "targetProperty", - "sourceProperty", - "descriptor", - "prototype", - "noTargetGet", - "forced", - "undefined", - "sham", - "check", - "it", - "window", - "self", - "DESCRIPTORS", - "propertyIsEnumerableModule", - "createPropertyDescriptor", - "toIndexedObject", - "toPrimitive", - "has", - "IE8_DOM_DEFINE", - "$getOwnPropertyDescriptor", - "P", - "error", - "f", - "call", - "fails", - "defineProperty", - "exec", - "$propertyIsEnumerable", - "propertyIsEnumerable", - "NASHORN_BUG", - "bitmap", - "IndexedObject", - "requireObjectCoercible", - "classof", - "split", - "slice", - "TypeError", - "isObject", - "input", - "PREFERRED_STRING", - "val", - "valueOf", - "hasOwnProperty", - "EXISTS", - "definePropertyModule", - "object", - "anObject", - "$defineProperty", - "Attributes", - "inspectSource", - "InternalStateModule", - "getInternalState", - "enforceInternalState", - "enforce", - "TEMPLATE", - "unsafe", - "simple", - "join", - "store", - "functionToString", - "SHARED", - "NATIVE_WEAK_MAP", - "objectHas", - "shared", - "sharedKey", - "hiddenKeys", - "WeakMap", - "set", - "getterFor", - "TYPE", - "wmget", - "wmhas", - "wmset", - "metadata", - "facade", - "STATE", - "test", - "uid", - "IS_PURE", - "push", - "version", - "mode", - "copyright", - "id", - "postfix", - "random", - "ownKeys", - "getOwnPropertyDescriptorModule", - "getBuiltIn", - "getOwnPropertyNamesModule", - "getOwnPropertySymbolsModule", - "getOwnPropertySymbols", - "concat", - "path", - "aFunction", - "variable", - "namespace", - "arguments", - "internalObjectKeys", - "enumBugKeys", - "getOwnPropertyNames", - "indexOf", - "names", - "toLength", - "toAbsoluteIndex", - "createMethod", - "IS_INCLUDES", - "$this", - "el", - "fromIndex", - "index", - "includes", - "toInteger", - "min", - "argument", - "ceil", - "floor", - "max", - "integer", - "replacement", - "feature", - "detection", - "normalize", - "POLYFILL", - "NATIVE", - "string", - "replace", - "toLowerCase", - "fromEntries", - "addToUnscopables", - "Iterators", - "defineIterator", - "ARRAY_ITERATOR", - "setInternalState", - "iterated", - "kind", - "Arguments", - "wellKnownSymbol", - "UNSCOPABLES", - "ArrayPrototype", - "NATIVE_SYMBOL", - "USE_SYMBOL_AS_UID", - "WellKnownSymbolsStore", - "Symbol", - "createWellKnownSymbol", - "withoutSetter", - "IS_NODE", - "V8_VERSION", - "userAgent", - "versions", - "v8", - "defineProperties", - "html", - "documentCreateElement", - "GT", - "LT", - "PROTOTYPE", - "SCRIPT", - "IE_PROTO", - "EmptyConstructor", - "scriptTag", - "content", - "NullProtoObjectViaActiveX", - "activeXDocument", - "write", - "close", - "temp", - "parentWindow", - "NullProtoObjectViaIFrame", - "iframe", - "JS", - "iframeDocument", - "style", - "display", - "appendChild", - "src", - "contentWindow", - "open", - "NullProtoObject", - "domain", - "ActiveXObject", - "Properties", - "objectKeys", - "createIteratorConstructor", - "getPrototypeOf", - "setPrototypeOf", - "setToStringTag", - "IteratorsCore", - "BUGGY_SAFARI_ITERATORS", - "ITERATOR", - "KEYS", - "VALUES", - "ENTRIES", - "returnThis", - "Iterable", - "NAME", - "IteratorConstructor", - "DEFAULT", - "IS_SET", - "getIterationMethod", - "KIND", - "defaultIterator", - "IterablePrototype", - "entries", - "TO_STRING_TAG", - "INCORRECT_VALUES_NAME", - "nativeIterator", - "anyNativeIterator", - "CurrentIteratorPrototype", - "methods", - "KEY", - "proto", - "PrototypeOfArrayIteratorPrototype", - "arrayIterator", - "NEW_ITERATOR_PROTOTYPE", - "toObject", - "CORRECT_PROTOTYPE_GETTER", - "ObjectPrototype", - "TAG", - "aPossiblePrototype", - "CORRECT_SETTER", - "setter", - "__proto__", - "iterate", - "createProperty", - "k", - "AS_ENTRIES", - "isArrayIteratorMethod", - "bind", - "getIteratorMethod", - "iteratorClose", - "Result", - "stopped", - "unboundFunction", - "that", - "IS_ITERATOR", - "INTERRUPTED", - "iterFn", - "step", - "condition", - "callFn", - "apply", - "TO_STRING_TAG_SUPPORT", - "classofRaw", - "CORRECT_ARGUMENTS", - "tryGet", - "tag", - "callee", - "returnMethod", - "propertyKey", - "Promise", - "$AggregateError", - "AggregateError", - "errors", - "message", - "Error", - "errorsArray", - "NativePromise", - "redefineAll", - "setSpecies", - "anInstance", - "checkCorrectnessOfIteration", - "speciesConstructor", - "task", - "microtask", - "promiseResolve", - "hostReportErrors", - "newPromiseCapabilityModule", - "perform", - "SPECIES", - "PROMISE", - "getInternalPromiseState", - "PromiseConstructor", - "$fetch", - "newPromiseCapability", - "newGenericPromiseCapability", - "DISPATCH_EVENT", - "createEvent", - "dispatchEvent", - "NATIVE_REJECTION_EVENT", - "PromiseRejectionEvent", - "UNHANDLED_REJECTION", - "REJECTION_HANDLED", - "PENDING", - "FULFILLED", - "HANDLED", - "UNHANDLED", - "Internal", - "OwnPromiseCapability", - "PromiseWrapper", - "nativeThen", - "GLOBAL_CORE_JS_PROMISE", - "promise", - "FakePromise", - "then", - "INCORRECT_ITERATION", - "all", - "isThenable", - "notify", - "isReject", - "notified", - "chain", - "reactions", - "ok", - "reaction", - "handler", - "fail", - "exited", - "rejection", - "onHandleUnhandled", - "enter", - "exit", - "onUnhandled", - "event", - "initEvent", - "IS_UNHANDLED", - "isUnhandled", - "emit", - "parent", - "unwrap", - "internalReject", - "internalResolve", - "wrapper", - "executor", - "onFulfilled", - "onRejected", - "fetch", - "x", - "$promiseResolve", - "counter", - "remaining", - "alreadyCalled", - "race", - "CONSTRUCTOR_NAME", - "Constructor", - "SAFE_CLOSING", - "called", - "iteratorWithReturn", - "from", - "SKIP_CLOSING", - "ITERATION_SUPPORT", - "defaultConstructor", - "S", - "IS_IOS", - "location", - "setImmediate", - "clear", - "clearImmediate", - "MessageChannel", - "Dispatch", - "queue", - "ONREADYSTATECHANGE", - "defer", - "channel", - "port", - "run", - "runner", - "listener", - "post", - "postMessage", - "host", - "args", - "nextTick", - "now", - "port2", - "port1", - "onmessage", - "addEventListener", - "importScripts", - "removeChild", - "setTimeout", - "macrotask", - "IS_WEBOS_WEBKIT", - "MutationObserver", - "WebKitMutationObserver", - "queueMicrotaskDescriptor", - "queueMicrotask", - "flush", - "head", - "last", - "toggle", - "node", - "createTextNode", - "observe", - "characterData", - "promiseCapability", - "PromiseCapability", - "$$resolve", - "$$reject", - "allSettled", - "status", - "PROMISE_ANY_ERROR", - "any", - "alreadyResolved", - "alreadyRejected", - "NON_GENERIC", - "real", - "onFinally", - "isFunction", - "e", - "charAt", - "STRING_ITERATOR", - "point", - "CONVERT_TO_STRING", - "position", - "size", - "charCodeAt", - "codeAt", - "DOMIterables", - "ArrayIteratorMethods", - "ArrayValues", - "COLLECTION_NAME", - "Collection", - "CollectionPrototype", - "METHOD_NAME", - "CSSRuleList", - "CSSStyleDeclaration", - "CSSValueList", - "ClientRectList", - "DOMRectList", - "DOMStringList", - "DOMTokenList", - "DataTransferItemList", - "FileList", - "HTMLAllCollection", - "HTMLCollection", - "HTMLFormElement", - "HTMLSelectElement", - "MediaList", - "MimeTypeArray", - "NamedNodeMap", - "NodeList", - "PaintRequestList", - "Plugin", - "PluginArray", - "SVGLengthList", - "SVGNumberList", - "SVGPathSegList", - "SVGPointList", - "SVGStringList", - "SVGTransformList", - "SourceBufferList", - "StyleSheetList", - "TextTrackCueList", - "TextTrackList", - "TouchList", - "factory", - "SymbolPolyfill", - "description", - "noop", - "getGlobals", - "globals", - "typeIsObject", - "rethrowAssertionErrorRejection", - "originalPromise", - "originalPromiseThen", - "originalPromiseResolve", - "originalPromiseReject", - "newPromise", - "promiseResolvedWith", - "promiseRejectedWith", - "PerformPromiseThen", - "uponPromise", - "uponFulfillment", - "uponRejection", - "transformPromiseWith", - "fulfillmentHandler", - "rejectionHandler", - "setPromiseIsHandledToTrue", - "globalQueueMicrotask", - "resolvedPromise", - "reflectCall", - "promiseCall", - "QUEUE_MAX_ARRAY_SIZE", - "SimpleQueue", - "_cursor", - "_size", - "_front", - "_elements", - "_next", - "_back", - "element", - "oldBack", - "newBack", - "shift", - "oldFront", - "newFront", - "oldCursor", - "newCursor", - "elements", - "forEach", - "callback", - "peek", - "front", - "cursor", - "ReadableStreamReaderGenericInitialize", - "reader", - "stream", - "_ownerReadableStream", - "_reader", - "_state", - "defaultReaderClosedPromiseInitialize", - "defaultReaderClosedPromiseInitializeAsResolved", - "defaultReaderClosedPromiseInitializeAsRejected", - "_storedError", - "ReadableStreamReaderGenericCancel", - "ReadableStreamCancel", - "ReadableStreamReaderGenericRelease", - "defaultReaderClosedPromiseReject", - "defaultReaderClosedPromiseResetToRejected", - "readerLockException", - "_closedPromise", - "_closedPromise_resolve", - "_closedPromise_reject", - "defaultReaderClosedPromiseResolve", - "AbortSteps", - "ErrorSteps", - "CancelSteps", - "PullSteps", - "NumberIsFinite", - "isFinite", - "MathTrunc", - "trunc", - "isDictionary", - "assertDictionary", - "assertFunction", - "assertObject", - "assertRequiredArgument", - "assertRequiredField", - "field", - "convertUnrestrictedDouble", - "censorNegativeZero", - "integerPart", - "convertUnsignedLongLongWithEnforceRange", - "lowerBound", - "upperBound", - "MAX_SAFE_INTEGER", - "assertReadableStream", - "IsReadableStream", - "AcquireReadableStreamDefaultReader", - "ReadableStreamDefaultReader", - "ReadableStreamAddReadRequest", - "readRequest", - "_readRequests", - "ReadableStreamFulfillReadRequest", - "_closeSteps", - "_chunkSteps", - "ReadableStreamGetNumReadRequests", - "ReadableStreamHasDefaultReader", - "IsReadableStreamDefaultReader", - "IsReadableStreamLocked", - "defaultReaderBrandCheckException", - "cancel", - "read", - "resolvePromise", - "rejectPromise", - "_errorSteps", - "ReadableStreamDefaultReaderRead", - "releaseLock", - "closed", - "toStringTag", - "_disturbed", - "_readableStreamController", - "_a", - "AsyncIteratorPrototype", - "asyncIterator", - "ReadableStreamAsyncIteratorImpl", - "preventCancel", - "_ongoingPromise", - "_isFinished", - "_preventCancel", - "_this", - "nextSteps", - "_nextSteps", - "return", - "returnSteps", - "_returnSteps", - "ReadableStreamAsyncIteratorPrototype", - "IsReadableStreamAsyncIterator", - "streamAsyncIteratorBrandCheckException", - "_asyncIteratorImpl", - "AcquireReadableStreamAsyncIterator", - "impl", - "NumberIsNaN", - "IsFiniteNonNegativeNumber", - "IsNonNegativeNumber", - "Infinity", - "DequeueValue", - "container", - "pair", - "_queue", - "_queueTotalSize", - "EnqueueValueWithSize", - "RangeError", - "PeekQueueValue", - "ResetQueue", - "CreateArrayFromList", - "CopyDataBlockBytes", - "dest", - "destOffset", - "srcOffset", - "Uint8Array", - "TransferArrayBuffer", - "IsDetachedBuffer", - "ReadableStreamBYOBRequest", - "IsReadableStreamBYOBRequest", - "byobRequestBrandCheckException", - "_view", - "respond", - "bytesWritten", - "_associatedReadableByteStreamController", - "ReadableByteStreamControllerRespond", - "respondWithNewView", - "view", - "ArrayBuffer", - "isView", - "byteLength", - "ReadableByteStreamControllerRespondWithNewView", - "ReadableByteStreamController", - "IsReadableByteStreamController", - "byteStreamControllerBrandCheckException", - "_byobRequest", - "_pendingPullIntos", - "firstDescriptor", - "byteOffset", - "bytesFilled", - "byobRequest", - "SetUpReadableStreamBYOBRequest", - "ReadableByteStreamControllerGetDesiredSize", - "_closeRequested", - "_controlledReadableByteStream", - "ReadableByteStreamControllerClose", - "enqueue", - "ReadableByteStreamControllerEnqueue", - "ReadableByteStreamControllerError", - "_cancelAlgorithm", - "ReadableByteStreamControllerClearAlgorithms", - "ReadableByteStreamControllerHandleQueueDrain", - "autoAllocateChunkSize", - "_autoAllocateChunkSize", - "bufferE", - "pullIntoDescriptor", - "elementSize", - "viewConstructor", - "readerType", - "ReadableByteStreamControllerCallPullIfNeeded", - "desiredSize", - "shouldPull", - "ReadableByteStreamControllerShouldCallPull", - "_pulling", - "_pullAgain", - "pullPromise", - "_pullAlgorithm", - "ReadableByteStreamControllerClearPendingPullIntos", - "ReadableByteStreamControllerInvalidateBYOBRequest", - "ReadableByteStreamControllerCommitPullIntoDescriptor", - "filledView", - "ReadableByteStreamControllerConvertPullIntoDescriptor", - "ReadableStreamFulfillReadIntoRequest", - "ReadableByteStreamControllerEnqueueChunkToQueue", - "ReadableByteStreamControllerFillPullIntoDescriptorFromQueue", - "currentAlignedBytes", - "maxBytesToCopy", - "maxBytesFilled", - "maxAlignedBytes", - "totalBytesToCopyRemaining", - "ready", - "headOfQueue", - "bytesToCopy", - "destStart", - "ReadableByteStreamControllerFillHeadPullIntoDescriptor", - "ReadableStreamClose", - "ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue", - "ReadableByteStreamControllerShiftPendingPullInto", - "ReadableByteStreamControllerPullInto", - "readIntoRequest", - "DataView", - "BYTES_PER_ELEMENT", - "ReadableStreamAddReadIntoRequest", - "emptyView", - "ReadableByteStreamControllerRespondInClosedState", - "ReadableStreamHasBYOBReader", - "ReadableStreamGetNumReadIntoRequests", - "ReadableByteStreamControllerRespondInReadableState", - "remainderSize", - "remainder", - "ReadableByteStreamControllerRespondInternal", - "_started", - "firstPendingPullInto", - "transferredBuffer", - "transferredView", - "ReadableStreamError", - "_strategyHWM", - "SetUpReadableByteStreamController", - "startAlgorithm", - "pullAlgorithm", - "cancelAlgorithm", - "highWaterMark", - "startResult", - "SetUpReadableByteStreamControllerFromUnderlyingSource", - "underlyingByteSource", - "pull", - "AcquireReadableStreamBYOBReader", - "ReadableStreamBYOBReader", - "_readIntoRequests", - "IsReadableStreamBYOBReader", - "byobReaderBrandCheckException", - "ReadableStreamBYOBReaderRead", - "ExtractHighWaterMark", - "strategy", - "defaultHWM", - "ExtractSizeAlgorithm", - "convertQueuingStrategy", - "init", - "convertQueuingStrategySize", - "convertUnderlyingSink", - "original", - "abort", - "convertUnderlyingSinkAbortCallback", - "convertUnderlyingSinkCloseCallback", - "convertUnderlyingSinkStartCallback", - "convertUnderlyingSinkWriteCallback", - "assertWritableStream", - "IsWritableStream", - "WritableStream", - "rawUnderlyingSink", - "rawStrategy", - "underlyingSink", - "InitializeWritableStream", - "sizeAlgorithm", - "SetUpWritableStreamDefaultControllerFromUnderlyingSink", - "streamBrandCheckException", - "IsWritableStreamLocked", - "WritableStreamAbort", - "WritableStreamCloseQueuedOrInFlight", - "WritableStreamClose", - "getWriter", - "AcquireWritableStreamDefaultWriter", - "locked", - "WritableStreamDefaultWriter", - "CreateWritableStream", - "writeAlgorithm", - "closeAlgorithm", - "abortAlgorithm", - "WritableStreamDefaultController", - "SetUpWritableStreamDefaultController", - "_writer", - "_writableStreamController", - "_writeRequests", - "_inFlightWriteRequest", - "_closeRequest", - "_inFlightCloseRequest", - "_pendingAbortRequest", - "_backpressure", - "_promise", - "wasAlreadyErroring", - "_resolve", - "_reject", - "_reason", - "_wasAlreadyErroring", - "WritableStreamStartErroring", - "closeRequest", - "writer", - "defaultWriterReadyPromiseResolve", - "WritableStreamDefaultControllerClose", - "WritableStreamAddWriteRequest", - "writeRequest", - "WritableStreamDealWithRejection", - "WritableStreamFinishErroring", - "WritableStreamDefaultWriterEnsureReadyPromiseRejected", - "WritableStreamHasOperationMarkedInFlight", - "storedError", - "WritableStreamRejectCloseAndClosedPromiseIfNeeded", - "abortRequest", - "WritableStreamFinishInFlightWrite", - "WritableStreamFinishInFlightWriteWithError", - "WritableStreamFinishInFlightClose", - "defaultWriterClosedPromiseResolve", - "WritableStreamFinishInFlightCloseWithError", - "WritableStreamMarkCloseRequestInFlight", - "WritableStreamMarkFirstWriteRequestInFlight", - "defaultWriterClosedPromiseReject", - "WritableStreamUpdateBackpressure", - "backpressure", - "defaultWriterReadyPromiseReset", - "_ownerWritableStream", - "defaultWriterReadyPromiseInitialize", - "defaultWriterReadyPromiseInitializeAsResolved", - "defaultWriterClosedPromiseInitialize", - "defaultWriterReadyPromiseInitializeAsRejected", - "defaultWriterClosedPromiseInitializeAsResolved", - "defaultWriterClosedPromiseInitializeAsRejected", - "IsWritableStreamDefaultWriter", - "defaultWriterBrandCheckException", - "defaultWriterLockException", - "WritableStreamDefaultWriterGetDesiredSize", - "_readyPromise", - "WritableStreamDefaultWriterAbort", - "WritableStreamDefaultWriterClose", - "WritableStreamDefaultWriterRelease", - "WritableStreamDefaultWriterWrite", - "WritableStreamDefaultWriterCloseWithErrorPropagation", - "WritableStreamDefaultWriterEnsureClosedPromiseRejected", - "_closedPromiseState", - "defaultWriterClosedPromiseResetToRejected", - "_readyPromiseState", - "defaultWriterReadyPromiseReject", - "defaultWriterReadyPromiseResetToRejected", - "WritableStreamDefaultControllerGetDesiredSize", - "releasedError", - "chunkSize", - "WritableStreamDefaultControllerGetChunkSize", - "WritableStreamDefaultControllerWrite", - "closeSentinel", - "IsWritableStreamDefaultController", - "_controlledWritableStream", - "WritableStreamDefaultControllerError", - "_abortAlgorithm", - "WritableStreamDefaultControllerClearAlgorithms", - "_strategySizeAlgorithm", - "_writeAlgorithm", - "_closeAlgorithm", - "WritableStreamDefaultControllerGetBackpressure", - "startPromise", - "WritableStreamDefaultControllerAdvanceQueueIfNeeded", - "chunkSizeE", - "WritableStreamDefaultControllerErrorIfNeeded", - "enqueueE", - "WritableStreamDefaultControllerProcessClose", - "WritableStreamDefaultControllerProcessWrite", - "sinkClosePromise", - "sinkWritePromise", - "_readyPromise_resolve", - "_readyPromise_reject", - "isAbortSignal", - "aborted", - "NativeDOMException", - "DOMException", - "isDOMExceptionConstructor", - "createDOMExceptionPolyfill", - "captureStackTrace", - "DOMException$1", - "ReadableStreamPipeTo", - "preventClose", - "preventAbort", - "signal", - "shuttingDown", - "currentWrite", - "actions", - "shutdownWithAction", - "map", - "action", - "pipeLoop", - "resolveLoop", - "rejectLoop", - "pipeStep", - "resolveRead", - "rejectRead", - "isOrBecomesErrored", - "shutdown", - "isOrBecomesClosed", - "destClosed_1", - "waitForWritesToFinish", - "oldCurrentWrite", - "originalIsError", - "originalError", - "doTheRest", - "finalize", - "newError", - "isError", - "removeEventListener", - "ReadableStreamDefaultController", - "IsReadableStreamDefaultController", - "defaultControllerBrandCheckException", - "ReadableStreamDefaultControllerGetDesiredSize", - "ReadableStreamDefaultControllerCanCloseOrEnqueue", - "ReadableStreamDefaultControllerClose", - "ReadableStreamDefaultControllerEnqueue", - "ReadableStreamDefaultControllerError", - "ReadableStreamDefaultControllerClearAlgorithms", - "_controlledReadableStream", - "ReadableStreamDefaultControllerCallPullIfNeeded", - "ReadableStreamDefaultControllerShouldCallPull", - "ReadableStreamDefaultControllerHasBackpressure", - "SetUpReadableStreamDefaultController", - "SetUpReadableStreamDefaultControllerFromUnderlyingSource", - "underlyingSource", - "ReadableStreamTee", - "cloneForBranch2", - "reading", - "canceled1", - "canceled2", - "reason1", - "reason2", - "branch1", - "branch2", - "resolveCancelPromise", - "cancelPromise", - "value1", - "value2", - "cancel1Algorithm", - "compositeReason", - "cancelResult", - "cancel2Algorithm", - "CreateReadableStream", - "convertUnderlyingDefaultOrByteSource", - "convertUnderlyingSourceCancelCallback", - "convertUnderlyingSourcePullCallback", - "convertUnderlyingSourceStartCallback", - "convertReadableStreamType", - "convertReaderOptions", - "convertReadableStreamReaderMode", - "convertIteratorOptions", - "Boolean", - "convertPipeOptions", - "assertAbortSignal", - "convertReadableWritablePair", - "readable", - "ReadableStream", - "rawUnderlyingSource", - "InitializeReadableStream", - "streamBrandCheckException$1", - "getReader", - "rawOptions", - "pipeThrough", - "rawTransform", - "pipeTo", - "destination", - "tee", - "branches", - "sourceCancelPromise", - "convertQueuingStrategyInit", - "byteLengthSizeFunction", - "ByteLengthQueuingStrategy", - "_byteLengthQueuingStrategyHighWaterMark", - "IsByteLengthQueuingStrategy", - "byteLengthBrandCheckException", - "countSizeFunction", - "CountQueuingStrategy", - "_countQueuingStrategyHighWaterMark", - "IsCountQueuingStrategy", - "countBrandCheckException", - "convertTransformer", - "readableType", - "writableType", - "convertTransformerFlushCallback", - "convertTransformerStartCallback", - "convertTransformerTransformCallback", - "TransformStream", - "rawTransformer", - "rawWritableStrategy", - "rawReadableStrategy", - "writableStrategy", - "readableStrategy", - "transformer", - "readableHighWaterMark", - "readableSizeAlgorithm", - "writableHighWaterMark", - "writableSizeAlgorithm", - "startPromise_resolve", - "InitializeTransformStream", - "SetUpTransformStreamDefaultControllerFromTransformer", - "_transformStreamController", - "IsTransformStream", - "streamBrandCheckException$2", - "_readable", - "_writable", - "TransformStreamDefaultSinkWriteAlgorithm", - "TransformStreamDefaultSinkAbortAlgorithm", - "TransformStreamDefaultSinkCloseAlgorithm", - "TransformStreamDefaultSourcePullAlgorithm", - "TransformStreamErrorWritableAndUnblockWrite", - "_backpressureChangePromise", - "_backpressureChangePromise_resolve", - "TransformStreamSetBackpressure", - "TransformStreamError", - "TransformStreamDefaultControllerClearAlgorithms", - "TransformStreamDefaultController", - "IsTransformStreamDefaultController", - "defaultControllerBrandCheckException$1", - "readableController", - "_controlledTransformStream", - "TransformStreamDefaultControllerEnqueue", - "TransformStreamDefaultControllerError", - "terminate", - "TransformStreamDefaultControllerTerminate", - "SetUpTransformStreamDefaultController", - "transformAlgorithm", - "flushAlgorithm", - "_transformAlgorithm", - "_flushAlgorithm", - "transformResultE", - "TransformStreamDefaultControllerPerformTransform", - "transformPromise", - "backpressureChangePromise", - "flushPromise", - "entryUnbind", - "$padStart", - "WEBKIT_BUG", - "padStart", - "maxLength", - "repeat", - "IS_END", - "fillString", - "stringLength", - "fillStr", - "intMaxLength", - "fillLen", - "stringFiller", - "count", - "CONSTRUCTOR", - "METHOD", - "$padEnd", - "padEnd", - "$values", - "TO_ENTRIES", - "$entries", - "DEFAULT_RANGE_CHUNK_SIZE", - "RENDERING_CANCELLED_TIMEOUT", - "DefaultCanvasFactory", - "DefaultCMapReaderFactory", - "createPDFNetworkStream", - "isArrayBuffer", - "range", - "params", - "rangeTransport", - "worker", - "apiCompatibilityParams", - "setVerbosityLevel", - "workerParams", - "GlobalWorkerOptions", - "PDFWorker", - "docId", - "workerIdPromise", - "_fetchDocument", - "networkStreamPromise", - "networkStream", - "initialData", - "progressiveDone", - "contentDispositionFilename", - "disableRange", - "disableStream", - "httpHeaders", - "withCredentials", - "rangeChunkSize", - "messageHandler", - "transport", - "pdfDataRangeTransport", - "apiVersion", - "password", - "disableAutoFetch", - "maxImageSize", - "disableFontFace", - "postMessageTransfers", - "docBaseUrl", - "ignoreErrors", - "fontExtraProperties", - "enableXfa", - "PDFDocumentLoadingTask", - "nextDocumentId", - "transportDestroyed", - "addRangeListener", - "addProgressListener", - "addProgressiveReadListener", - "addProgressiveDoneListener", - "onDataRange", - "onDataProgress", - "onDataProgressiveRead", - "onDataProgressiveDone", - "transportReady", - "requestDataRange", - "getPage", - "getPageIndex", - "getDestinations", - "getDestination", - "getPageLabels", - "getPageLayout", - "getPageMode", - "getViewerPreferences", - "getOpenAction", - "getAttachments", - "getJavaScript", - "getJSActions", - "getOutline", - "getOptionalContentConfig", - "getPermissions", - "getMetadata", - "getMarkInfo", - "getData", - "getDownloadInfo", - "getStats", - "cleanup", - "keepLoadedFonts", - "saveDocument", - "getFieldObjects", - "hasJSActions", - "getCalculationOrderIds", - "pdfBug", - "getViewport", - "getAnnotations", - "intent", - "getXfa", - "render", - "enableWebGL", - "renderInteractiveForms", - "imageLayer", - "canvasFactory", - "background", - "annotationStorage", - "optionalContentConfigPromise", - "renderingIntent", - "intentState", - "clearTimeout", - "canvasFactoryInstance", - "webGLContext", - "enable", - "fnArray", - "argsArray", - "lastChunk", - "pageIndex", - "internalRenderTask", - "canvasContext", - "viewport", - "objs", - "commonObjs", - "operatorList", - "useRequestAnimationFrame", - "renderTask", - "transparency", - "optionalContentConfig", - "getOperatorList", - "opListTask", - "streamTextContent", - "normalizeWhitespace", - "disableCombineTextItems", - "TEXT_CONTENT_CHUNK_SIZE", - "combineTextItems", - "textContent", - "getTextContent", - "readableStream", - "pump", - "items", - "styles", - "_destroy", - "waitOn", - "force", - "resetStats", - "_tryCleanup", - "renderTasks", - "_startRenderPage", - "_renderPageChunk", - "operatorListChunk", - "_pumpOperatorList", - "_abortOperatorList", - "curIntentState", - "cloned", - "transfers", - "cloneValue", - "desc", - "pdfWorkerPorts", - "isWorkerDisabled", - "nextFakeWorkerId", - "fallbackWorkerSrc", - "pdfjsFilePath", - "deprecated", - "mainWorkerMessageHandler", - "fakeWorkerCapability", - "loader", - "getMainThreadWorkerMessageHandler", - "eval", - "getWorkerSrc", - "loadScript", - "_initializeFromPort", - "_initialize", - "workerSrc", - "isSameOrigin", - "createCDNWrapper", - "terminateEarly", - "onWorkerError", - "sendTest", - "testObj", - "_setupFakeWorker", - "setupFakeWorkerGlobal", - "WorkerMessageHandler", - "workerHandler", - "loadingTask", - "onUnsupportedFeature", - "page", - "terminated", - "annotationStorageResetModified", - "pdfDocument", - "setupMessageHandler", - "evt", - "loaded", - "total", - "sink", - "readyReason", - "headersCapability", - "fullReader", - "isStreamingSupported", - "isRangeSupported", - "contentLength", - "rangeReader", - "pdfInfo", - "ex", - "msg", - "exception", - "updatePassword", - "exportedError", - "exportedData", - "fontRegistry", - "registerFont", - "pageProxy", - "MAX_IMAGE_SIZE_TO_STORE", - "imageData", - "fetched", - "builtInCMap", - "_onUnsupportedFeature", - "pageNumber", - "pageInfo", - "ref", - "numPages", - "filename", - "getDocJSActions", - "getPageJSActions", - "getPageXfa", - "results", - "cleanupSuccessful", - "_ensureObj", - "resolved", - "InternalRenderTask", - "canvasInRendering", - "initializeGraphics", - "operatorListChanged", - "_continue", - "_scheduleNext", - "build", - "addNativeFontFace", - "insertRule", - "styleElement", - "styleSheet", - "nativeFontFace", - "featureId", - "rule", - "_queueLoadingCallback", - "_prepareFontLoadEvent", - "FontLoader", - "requests", - "nextRequestId", - "supported", - "navigator", - "otherRequest", - "getLoadTestFont", - "atob", - "offset", - "chunk1", - "s", - "chunk2", - "ctx", - "isFontReady", - "loadTestFontId", - "COMMENT_OFFSET", - "spliceString", - "CFF_CHECKSUM_OFFSET", - "XXXX_VALUE", - "checksum", - "int32", - "string32", - "btoa", - "fonts", - "div", - "span", - "translatedData", - "createNativeFontFace", - "createFontFaceRule", - "bytesToString", - "getPathGenerator", - "cmds", - "js", - "current", - "NodeCanvasFactory", - "NodeCMapReaderFactory", - "Canvas", - "__non_webpack_require__", - "fs", - "getValue", - "getOrCreateValue", - "setValue", - "modified", - "getAll", - "objectFromMap", - "_setModified", - "resetModified", - "compatibilityParams", - "MIN_FONT_SIZE", - "MAX_FONT_SIZE", - "MAX_GROUP_SIZE", - "COMPILE_TYPE3_GLYPHS", - "MAX_SIZE_TO_COMPILE", - "FULL_CHUNK_HEIGHT", - "LINEWIDTH_SCALE_FACTOR", - "ad_bc", - "bc_ad", - "old", - "prev", - "cosValue", - "sinValue", - "CachedCanvases", - "getCanvas", - "canvasEntry", - "addContextCurrentTransform", - "POINT_TO_PROCESS_LIMIT", - "imgData", - "width1", - "points", - "POINT_TYPES", - "lineSize", - "data0", - "elem", - "mask", - "j", - "j0", - "sum", - "steps", - "outlines", - "coords", - "p0", - "pp", - "drawOutline", - "kk", - "o", - "l", - "ll", - "CanvasExtraState", - "setCurrentPoint", - "CanvasGraphics", - "EXECUTION_TIME", - "EXECUTION_STEPS", - "transferMaps", - "partialChunkHeight", - "fullChunks", - "totalChunks", - "chunkImgData", - "srcPos", - "transferMapRed", - "transferMapGreen", - "transferMapBlue", - "transferMapGray", - "srcLength", - "dest32", - "dest32DataLength", - "fullSrcDiff", - "white", - "black", - "thisChunkHeight", - "destPos", - "srcDiff", - "kEnd", - "kEndUnrolled", - "srcByte", - "hasTransferMaps", - "elemsInThisChunk", - "properties", - "property", - "sourceCtx", - "destCtx", - "alpha", - "alpha_", - "r0", - "g0", - "b0", - "maskData", - "transferMap", - "layerData", - "y", - "hasBackdrop", - "backdrop", - "subtype", - "composeFn", - "PIXELS_TO_PROCESS", - "row", - "chunkHeight", - "maskCtx", - "layerCtx", - "composeSMaskBackdrop", - "composed", - "layer", - "genericComposeSMask", - "LINE_CAP_STYLES", - "LINE_JOIN_STYLES", - "NORMAL_CLIP", - "EO_CLIP", - "beginDrawing", - "transparentCanvas", - "resetCtxToDefault", - "executeOperatorList", - "executionStartIdx", - "argsArrayLen", - "chunkOperations", - "endTime", - "stepper", - "fnId", - "objsPool", - "depObjId", - "continueCallback", - "endDrawing", - "states", - "beginSMaskGroup", - "activeSMask", - "drawnWidth", - "drawnHeight", - "cacheId", - "scratchCanvas", - "currentCtx", - "currentTransform", - "groupCtx", - "copyCtxState", - "suspendSMaskGroup", - "composeSMask", - "deltaTransform", - "resumeSMaskGroup", - "endSMaskGroup", - "ops", - "xw", - "yh", - "consumePath", - "strokeColor", - "lineWidth", - "scaledLineWidth", - "fillColor", - "isPatternFill", - "needRestore", - "paths", - "fontObj", - "bold", - "italic", - "typeface", - "browserFontSize", - "paintChar", - "textRenderingMode", - "fontSize", - "fillStrokeMode", - "isAddToPathSet", - "patternFill", - "addToPath", - "fontSizeScale", - "charSpacing", - "wordSpacing", - "fontDirection", - "textHScale", - "glyphsLength", - "glyphs", - "vertical", - "spacingDir", - "defaultVMetrics", - "widthAdvanceScale", - "simpleFillText", - "pattern", - "patternTransform", - "resetLineWidthToOne", - "glyph", - "isNum", - "restoreNeeded", - "spacing", - "character", - "accent", - "scaledX", - "scaledY", - "vmetric", - "vx", - "vy", - "measuredWidth", - "characterScaleX", - "scaledAccentX", - "scaledAccentY", - "charWidth", - "showType3Text", - "fontMatrix", - "isTextInvisible", - "spacingLength", - "transformed", - "urx", - "ury", - "getColorN_Pattern", - "IR", - "color", - "baseTransform", - "canvasGraphicsFactory", - "createCanvasGraphics", - "getShadingPatternFromIR", - "inv", - "bl", - "br", - "ul", - "ur", - "x0", - "y0", - "x1", - "y1", - "matrix", - "bbox", - "group", - "bounds", - "canvasBounds", - "scaleX", - "scaleY", - "startTransformInverse", - "img", - "maskCanvas", - "putBinaryImageMask", - "skewX", - "skewY", - "positions", - "images", - "image", - "objId", - "w", - "h", - "widthScale", - "heightScale", - "imgToPaint", - "tmpCanvas", - "tmpCtx", - "putBinaryImageData", - "paintWidth", - "paintHeight", - "tmpCanvasId", - "newWidth", - "newHeight", - "left", - "top", - "visible", - "getSinglePixelWidth", - "absDet", - "sqNorm1", - "sqNorm2", - "pixelHeight", - "getCanvasPosition", - "isContentVisible", - "ShadingIRs", - "region", - "fromIR", - "raw", - "colorStops", - "r1", - "getPattern", - "applyBoundingBox", - "grad", - "createMeshCanvas", - "colors", - "rowSize", - "tmp", - "c1", - "c2", - "c3", - "x2", - "y2", - "x3", - "y3", - "c1r", - "c1g", - "c1b", - "c2r", - "c2g", - "c2b", - "c3r", - "c3g", - "c3b", - "minY", - "maxY", - "xa", - "car", - "cag", - "cab", - "xb", - "cbr", - "cbg", - "cbb", - "x1_", - "x2_", - "ps", - "figure", - "cs", - "verticesPerRow", - "rows", - "cols", - "q", - "drawTriangle", - "EXPECTED_SCALE", - "MAX_PATTERN_SIZE", - "BORDER_SIZE", - "boundsWidth", - "boundsHeight", - "combinesScale", - "paddedWidth", - "paddedHeight", - "backgroundColor", - "figures", - "cachedCanvases", - "drawFigure", - "owner", - "matrixScale", - "temporaryPatternCanvas", - "shadingIR", - "TilingPattern", - "PaintType", - "COLORED", - "UNCOLORED", - "createPatternCanvas", - "xstep", - "ystep", - "paintType", - "tilingType", - "curMatrixScale", - "combinedScale", - "dimx", - "dimy", - "graphics", - "getSizeAndScale", - "maxSize", - "clipBbox", - "bboxWidth", - "bboxHeight", - "setFillAndStrokeStyleToContext", - "cssColor", - "CallbackKind", - "DATA", - "ERROR", - "StreamKind", - "CANCEL", - "CANCEL_COMPLETE", - "CLOSE", - "ENQUEUE", - "PULL", - "PULL_COMPLETE", - "START_COMPLETE", - "callbackId", - "wrapReason", - "cbSourceName", - "cbTargetName", - "comObj", - "sourceName", - "targetName", - "on", - "ah", - "send", - "sendWithPromise", - "sendWithStream", - "streamId", - "startCapability", - "startCall", - "pullCall", - "cancelCall", - "isClosed", - "pullCapability", - "cancelCapability", - "_createStreamSink", - "streamSink", - "lastDesiredSize", - "sinkCapability", - "onPull", - "onCancel", - "isCancelled", - "success", - "_processStreamMessage", - "_postMessage", - "getRaw", - "isVisible", - "setVisibility", - "getOrder", - "getGroups", - "getGroup", - "begin", - "_onReceiveData", - "found", - "_onProgress", - "firstReader", - "_onProgressiveDone", - "_removeRangeReader", - "getFullReader", - "queuedChunks", - "getRangeReader", - "cancelAllRequests", - "readers", - "isPdfFile", - "_enqueue", - "requestCapability", - "requestsCapability", - "WebGLUtils", - "drawFigures", - "shader", - "gl", - "compiled", - "errorMsg", - "loadShader", - "program", - "shaders", - "linked", - "texture", - "currentCanvas", - "currentGL", - "premultipliedalpha", - "smaskVertexShaderCode", - "smaskFragmentShaderCode", - "smaskCache", - "generateGL", - "vertexShader", - "createVertexShader", - "fragmentShader", - "createFragmentShader", - "cache", - "texCoordLocation", - "texLayerLocation", - "texMaskLocation", - "texCoordBuffer", - "initSmaskGL", - "createTexture", - "maskTexture", - "figuresVertexShaderCode", - "figuresFragmentShaderCode", - "figuresCache", - "initFiguresGL", - "coordsMap", - "colorsMap", - "pIndex", - "cIndex", - "col", - "jj", - "coordsBuffer", - "colorsBuffer", - "tryInitGL", - "parameters", - "fieldType", - "isRenderable", - "ignoreBorder", - "createQuadrilaterals", - "_createContainer", - "horizontalRadius", - "verticalRadius", - "radius", - "_createQuadrilaterals", - "quadrilaterals", - "savedRect", - "quadPoint", - "_createPopup", - "trigger", - "popupElement", - "title", - "modificationDate", - "contents", - "hideWrapper", - "popup", - "_renderQuadrilaterals", - "quadrilateral", - "addLinkAttributes", - "linkService", - "rel", - "linkElement", - "_bindLink", - "_bindNamedAction", - "_bindJSAction", - "jsName", - "detail", - "JSON", - "_getKeyModifier", - "_setEventListener", - "baseName", - "valueGetter", - "modifier", - "_setEventListeners", - "eventName", - "_setColor", - "ColorConverters", - "storage", - "storedData", - "valueAsString", - "elementData", - "userValue", - "formattedValue", - "beforeInputSelectionRange", - "beforeInputValue", - "blurListener", - "focus", - "preventScroll", - "userName", - "hidden", - "editable", - "selRange", - "selStart", - "selEnd", - "commitKey", - "willCommit", - "_blurListener", - "change", - "fieldWidth", - "combWidth", - "_setTextStyle", - "TEXT_ALIGNMENT", - "fontColor", - "checkbox", - "radio", - "pdfButtonValue", - "checked", - "radioId", - "selectElement", - "optionElement", - "option", - "isExport", - "getItems", - "displayValue", - "exportValue", - "multipleSelection", - "remove", - "insert", - "indices", - "changeEx", - "keyDown", - "IGNORE_TYPES", - "selector", - "parentElements", - "popupLeft", - "popupTop", - "BACKGROUND_ENLIGHT", - "g", - "dateObject", - "PDFDateString", - "_formatContents", - "lines", - "line", - "_toggle", - "_show", - "pin", - "_hide", - "unpin", - "borderWidth", - "square", - "circle", - "coordinate", - "polyline", - "getFilenameFromUrl", - "stringToPDFString", - "_download", - "sortedAnnotations", - "popupAnnotations", - "downloadManager", - "imageResourcesPath", - "svgFactory", - "enableScripting", - "mouseState", - "isDown", - "rendered", - "G", - "makeColorComp", - "R", - "B", - "renderTextLayer", - "MAX_TEXT_DIVS_TO_RENDER", - "DEFAULT_FONT_SIZE", - "DEFAULT_FONT_ASCENT", - "ascentCache", - "NonWhitespaceRegexp", - "cachedAscent", - "metrics", - "ascent", - "descent", - "ratio", - "pixels", - "textDiv", - "textDivProperties", - "angle", - "canvasWidth", - "isWhitespace", - "originalTransform", - "paddingBottom", - "paddingLeft", - "paddingRight", - "paddingTop", - "isAllWhitespace", - "geom", - "tx", - "fontHeight", - "fontAscent", - "getAscent", - "shouldScaleText", - "absScaleX", - "absScaleY", - "angleCos", - "angleSin", - "divWidth", - "divHeight", - "right", - "bottom", - "textDivs", - "textDivsLength", - "t", - "ts", - "expanded", - "expandBounds", - "divProperties", - "boxScale", - "findPositiveMin", - "box", - "x1New", - "x2New", - "expandBoundsLTR", - "boxes", - "fakeBoundary", - "horizon", - "boundary", - "maxXNew", - "horizonPart", - "affectedBoundary", - "xNew", - "changedHorizon", - "lastBoundary", - "useBoundary", - "used", - "textContentItemsStr", - "TextLayerRenderTask", - "_processItems", - "len", - "appendText", - "_layoutText", - "fontFamily", - "_render", - "styleCache", - "textItems", - "textStyles", - "expandTextDivs", - "expand", - "transformBuf", - "paddingBuf", - "divProps", - "renderParameters", - "textContentStream", - "enhanceTextSelection", - "SVGGraphics", - "opTree", - "opListElement", - "pf", - "SVG_DEFAULTS", - "fontStyle", - "fontWeight", - "XML_NS", - "XLINK_NS", - "convertImgDataToPng", - "PNG_HEADER", - "CHUNK_WRAPPER_SIZE", - "crcTable", - "crc", - "body", - "crc32", - "deflateSyncUncompressed", - "output", - "level", - "literals", - "maxBlockLength", - "deflateBlocks", - "idat", - "pi", - "adler", - "adler32", - "colorType", - "bitDepth", - "offsetLiterals", - "offsetBytes", - "ihdr", - "deflateSync", - "pngLength", - "writePngChunk", - "createObjectURL", - "encode", - "clipCount", - "maskCount", - "shadingCount", - "loadDependencies", - "transformMatrix", - "getSVG", - "svgElement", - "convertOpList", - "operatorIdMapping", - "opList", - "opListToTree", - "executeOpTree", - "opTreeElement", - "lineWidthScale", - "textMatrix", - "pm", - "addFontStyle", - "details", - "setStrokeAlpha", - "setFillAlpha", - "_makeColorN_Pattern", - "_makeTilingPattern", - "tilingId", - "txstep", - "tystep", - "tiling", - "tx1", - "ty1", - "_makeShadingPattern", - "shadingId", - "point0", - "point1", - "gradient", - "focalPoint", - "circlePoint", - "focalRadius", - "circleRadius", - "colorStop", - "op", - "clipId", - "clipPath", - "clipElement", - "_setStrokeAttributes", - "dashArray", - "imgSrc", - "cliprect", - "imgEl", - "definitions", - "rootGroup", - "_ensureClipGroup", - "clipGroup", - "_ensureTransformGroup", - "root", - "rootHtml", - "XfaLayer", - "stack", - "rootDiv", - "coeffs", - "child", - "childHtml", - "http", - "https", - "fileUriRegex", - "parsedUrl", - "parseUrl", - "_error", - "_setReadableStream", - "auth", - "headers", - "handleResponse", - "getResponseHeader", - "isHttp", - "suggestedLength", - "extractFilenameFromHeader", - "createRequestOptions", - "returnValues", - "allowRangeRequests", - "contentEncoding", - "contentDisposition", - "getFilenameFromContentDispositionHeader", - "needsEncodingFixup", - "toParamRegExp", - "rfc2616unquote", - "rfc5987decode", - "rfc2047decode", - "fixupEncoding", - "rfc2231getparam", - "decoder", - "fatal", - "ch", - "textdecode", - "parts", - "part", - "quotindex", - "encodingend", - "extvalue", - "encoding", - "langvalue", - "text", - "OK_RESPONSE", - "PARTIAL_CONTENT_RESPONSE", - "xhr", - "array", - "requestRange", - "listeners", - "requestFull", - "xhrId", - "pendingRequest", - "onProgress", - "onStateChange", - "xhrStatus", - "ok_response_on_range_request", - "getArrayBuffer", - "rangeHeader", - "getRequestXhr", - "isPendingRequest", - "_onRangeRequestReaderClosed", - "onHeadersReceived", - "onDone", - "onError", - "manager", - "_onHeadersReceived", - "fullRequestXhrId", - "fullRequestXhr", - "_onDone", - "_onError", - "createResponseStatusError", - "_close", - "abortController", - "credentials", - "redirect", - "createHeaders", - "createFetchOptions", - "validateResponseStatus", - "pdfjsVersion", - "pdfjsBuild", - "PDFNodeStream", - "setPDFNetworkStreamFactory", - "PDFNetworkStream", - "PDFFetchStream" - ], - "mappings": "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", - "file": "pdf.js", - "sourcesContent": [ - "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn ", - "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n CMapCompressionType,\n isString,\n removeNullCharacters,\n stringToBytes,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n unreachable(\"Abstract method `create` called.\");\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n canvas.width = width;\n canvas.height = height;\n return {\n canvas,\n context,\n };\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @private\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (isFetchSupported() && isValidFetchUrl(url, document.baseURI))\n ) {\n return fetch(url).then(async response => {\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n let cMapData;\n if (this.isCompressed) {\n cMapData = new Uint8Array(await response.arrayBuffer());\n } else {\n cMapData = stringToBytes(await response.text());\n }\n return { cMapData, compressionType };\n });\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n\n if (this.isCompressed) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let cMapData;\n if (this.isCompressed && request.response) {\n cMapData = new Uint8Array(request.response);\n } else if (!this.isCompressed && request.responseText) {\n cMapData = stringToBytes(request.responseText);\n }\n if (cMapData) {\n resolve({ cMapData, compressionType });\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n }\n}\n\nclass DOMSVGFactory {\n create(width, height) {\n assert(width > 0 && height > 0, \"Invalid SVG dimensions\");\n\n const svg = document.createElementNS(SVG_NS, \"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", width + \"px\");\n svg.setAttribute(\"height\", height + \"px\");\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n\n return svg;\n }\n\n createElement(type) {\n assert(typeof type === \"string\", \"Invalid SVG element type\");\n\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type) {\n super(msg);\n this.type = type;\n }\n}\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLLinkElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n assert(\n url && typeof url === \"string\",\n 'addLinkAttributes: A valid \"url\" parameter must provided.'\n );\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length\n );\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch (ex) {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const time of this.times) {\n const name = time.name;\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isFetchSupported() {\n return (\n typeof fetch !== \"undefined\" &&\n typeof Response !== \"undefined\" &&\n \"body\" in Response.prototype &&\n typeof ReadableStream !== \"undefined\"\n );\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || !isString(input)) {\n return null;\n }\n\n // Lazily initialize the regular expression.\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n }\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\nexport {\n addLinkAttributes,\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n DEFAULT_LINK_REL,\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMSVGFactory,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n isDataScheme,\n isFetchSupported,\n isPdfFile,\n isValidFetchUrl,\n LinkTarget,\n loadScript,\n PageViewport,\n PDFDateString,\n RenderingCancelledException,\n StatTimer,\n};\n", - "module.exports = require(\"regenerator-runtime\");\n", - "/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n", - "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n try {\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = this.constructor.name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg);\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg);\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {}\n\nclass MissingPDFException extends BaseException {}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg);\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {}\n\nconst NullCharactersRegExp = /\\x00/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(\n bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n \"Invalid argument for bytesToString\"\n );\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n}\n\n// prettier-ignore\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n // UTF16BE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n );\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n // UTF16LE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n );\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(String.fromCharCode((char >> 8) & 0xff));\n buf.push(String.fromCharCode(char & 0xff));\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nfunction createObjectURL(data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n isBool,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isNum,\n isSameOrigin,\n isString,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n", - "/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n // Provides support for globalThis in legacy browsers.\n // Support: Firefox<65, Chrome<71, Safari<12.1\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n // eslint-disable-next-line no-global-assign\n globalThis = require(\"core-js/es/global-this\");\n }\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Provides support for Object.fromEntries in legacy browsers.\n // Support: Firefox<63, Chrome<73, Safari<12.1\n (function checkObjectFromEntries() {\n if (Object.fromEntries) {\n return;\n }\n require(\"core-js/es/object/from-entries.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Safari<10.1, Node.js\n (function checkReadableStream() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `ReadableStream`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n let isReadableStreamSupported = false;\n\n if (typeof ReadableStream !== \"undefined\") {\n // MS Edge may say it has ReadableStream but they are not up to spec yet.\n try {\n // eslint-disable-next-line no-new\n new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n isReadableStreamSupported = true;\n } catch (e) {\n // The ReadableStream constructor cannot be used.\n }\n }\n if (isReadableStreamSupported) {\n return;\n }\n globalThis.ReadableStream = require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n })();\n\n // Provides support for String.prototype.padStart in legacy browsers.\n // Support: Chrome<57, Safari<10\n (function checkStringPadStart() {\n if (String.prototype.padStart) {\n return;\n }\n require(\"core-js/es/string/pad-start.js\");\n })();\n\n // Provides support for String.prototype.padEnd in legacy browsers.\n // Support: Chrome<57, Safari<10\n (function checkStringPadEnd() {\n if (String.prototype.padEnd) {\n return;\n }\n require(\"core-js/es/string/pad-end.js\");\n })();\n\n // Provides support for Object.values in legacy browsers.\n // Support: Chrome<54, Safari<10.1\n (function checkObjectValues() {\n if (Object.values) {\n return;\n }\n Object.values = require(\"core-js/es/object/values.js\");\n })();\n\n // Provides support for Object.entries in legacy browsers.\n // Support: Chrome<54, Safari<10.1\n (function checkObjectEntries() {\n if (Object.entries) {\n return;\n }\n Object.entries = require(\"core-js/es/object/entries.js\");\n })();\n}\n", - "/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n", - "require('../modules/es.global-this');\n\nmodule.exports = require('../internals/global');\n", - "var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n globalThis: global\n});\n", - "var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n", - "var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n", - "var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n", - "var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n", - "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n", - "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", - "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", - "// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n", - "var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n", - "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", - "// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", - "var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", - "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", - "var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n", - "var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n", - "var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n", - "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", - "var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", - "var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n", - "var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n", - "var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n", - "var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n", - "var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n", - "var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n", - "var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n", - "var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n", - "var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.10.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n", - "module.exports = false;\n", - "var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n", - "module.exports = {};\n", - "var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n", - "var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n", - "var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n", - "var global = require('../internals/global');\n\nmodule.exports = global;\n", - "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n", - "var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n", - "var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n", - "var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", - "var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n", - "var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", - "// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n", - "// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", - "var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", - "require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.from-entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.fromEntries;\n", - "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", - "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", - "var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n", - "var IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // eslint-disable-next-line es/no-symbol -- required for testing\n return !Symbol.sham &&\n // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41);\n});\n", - "var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n", - "var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n", - "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n", - "/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n", - "var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n", - "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n", - "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n", - "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", - "module.exports = {};\n", - "'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n", - "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n", - "'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", - "var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n", - "var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n", - "var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", - "var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n", - "/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n", - "var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n", - "var $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n", - "var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n", - "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", - "var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", - "module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n", - "var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", - "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n", - "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", - "var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n", - "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n", - "require('../../modules/es.aggregate-error');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n", - "'use strict';\nvar $ = require('../internals/export');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar iterate = require('../internals/iterate');\n\nvar $AggregateError = function AggregateError(errors, message) {\n var that = this;\n if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);\n if (setPrototypeOf) {\n // eslint-disable-next-line unicorn/error-message -- expected\n that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));\n var errorsArray = [];\n iterate(errors, errorsArray.push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\n$AggregateError.prototype = create(Error.prototype, {\n constructor: createPropertyDescriptor(5, $AggregateError),\n message: createPropertyDescriptor(5, ''),\n name: createPropertyDescriptor(5, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n AggregateError: $AggregateError\n});\n", - "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n", - "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n", - "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n", - "var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n", - "var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n", - "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n", - "module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n", - "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n", - "var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n", - "var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n", - "var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n", - "var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n", - "var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n", - "var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n", - "'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n", - "var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n", - "module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n", - "'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n", - "'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n errors.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n", - "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n", - "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n", - "var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n", - "var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n", - "// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n", - "/**\n * web-streams-polyfill v3.0.2\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.WebStreamsPolyfill = {}));\n}(this, (function (exports) { 'use strict';\n\n /// \n var SymbolPolyfill = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ?\n Symbol :\n function (description) { return \"Symbol(\" + description + \")\"; };\n\n /// \n function noop() {\n // do nothing\n }\n function getGlobals() {\n if (typeof self !== 'undefined') {\n return self;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n else if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n }\n var globals = getGlobals();\n\n function typeIsObject(x) {\n return (typeof x === 'object' && x !== null) || typeof x === 'function';\n }\n var rethrowAssertionErrorRejection = noop;\n\n var originalPromise = Promise;\n var originalPromiseThen = Promise.prototype.then;\n var originalPromiseResolve = Promise.resolve.bind(originalPromise);\n var originalPromiseReject = Promise.reject.bind(originalPromise);\n function newPromise(executor) {\n return new originalPromise(executor);\n }\n function promiseResolvedWith(value) {\n return originalPromiseResolve(value);\n }\n function promiseRejectedWith(reason) {\n return originalPromiseReject(reason);\n }\n function PerformPromiseThen(promise, onFulfilled, onRejected) {\n // There doesn't appear to be any way to correctly emulate the behaviour from JavaScript, so this is just an\n // approximation.\n return originalPromiseThen.call(promise, onFulfilled, onRejected);\n }\n function uponPromise(promise, onFulfilled, onRejected) {\n PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection);\n }\n function uponFulfillment(promise, onFulfilled) {\n uponPromise(promise, onFulfilled);\n }\n function uponRejection(promise, onRejected) {\n uponPromise(promise, undefined, onRejected);\n }\n function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {\n return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n }\n function setPromiseIsHandledToTrue(promise) {\n PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n }\n var queueMicrotask = (function () {\n var globalQueueMicrotask = globals && globals.queueMicrotask;\n if (typeof globalQueueMicrotask === 'function') {\n return globalQueueMicrotask;\n }\n var resolvedPromise = promiseResolvedWith(undefined);\n return function (fn) { return PerformPromiseThen(resolvedPromise, fn); };\n })();\n function reflectCall(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n return Function.prototype.apply.call(F, V, args);\n }\n function promiseCall(F, V, args) {\n try {\n return promiseResolvedWith(reflectCall(F, V, args));\n }\n catch (value) {\n return promiseRejectedWith(value);\n }\n }\n\n // Original from Chromium\n // https://chromium.googlesource.com/chromium/src/+/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/core/streams/SimpleQueue.js\n var QUEUE_MAX_ARRAY_SIZE = 16384;\n /**\n * Simple queue structure.\n *\n * Avoids scalability issues with using a packed array directly by using\n * multiple arrays in a linked list and keeping the array size bounded.\n */\n var SimpleQueue = /** @class */ (function () {\n function SimpleQueue() {\n this._cursor = 0;\n this._size = 0;\n // _front and _back are always defined.\n this._front = {\n _elements: [],\n _next: undefined\n };\n this._back = this._front;\n // The cursor is used to avoid calling Array.shift().\n // It contains the index of the front element of the array inside the\n // front-most node. It is always in the range [0, QUEUE_MAX_ARRAY_SIZE).\n this._cursor = 0;\n // When there is only one node, size === elements.length - cursor.\n this._size = 0;\n }\n Object.defineProperty(SimpleQueue.prototype, \"length\", {\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n // For exception safety, this method is structured in order:\n // 1. Read state\n // 2. Calculate required state mutations\n // 3. Perform state mutations\n SimpleQueue.prototype.push = function (element) {\n var oldBack = this._back;\n var newBack = oldBack;\n if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n newBack = {\n _elements: [],\n _next: undefined\n };\n }\n // push() is the mutation most likely to throw an exception, so it\n // goes first.\n oldBack._elements.push(element);\n if (newBack !== oldBack) {\n this._back = newBack;\n oldBack._next = newBack;\n }\n ++this._size;\n };\n // Like push(), shift() follows the read -> calculate -> mutate pattern for\n // exception safety.\n SimpleQueue.prototype.shift = function () { // must not be called on an empty queue\n var oldFront = this._front;\n var newFront = oldFront;\n var oldCursor = this._cursor;\n var newCursor = oldCursor + 1;\n var elements = oldFront._elements;\n var element = elements[oldCursor];\n if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n newFront = oldFront._next;\n newCursor = 0;\n }\n // No mutations before this point.\n --this._size;\n this._cursor = newCursor;\n if (oldFront !== newFront) {\n this._front = newFront;\n }\n // Permit shifted element to be garbage collected.\n elements[oldCursor] = undefined;\n return element;\n };\n // The tricky thing about forEach() is that it can be called\n // re-entrantly. The queue may be mutated inside the callback. It is easy to\n // see that push() within the callback has no negative effects since the end\n // of the queue is checked for on every iteration. If shift() is called\n // repeatedly within the callback then the next iteration may return an\n // element that has been removed. In this case the callback will be called\n // with undefined values until we either \"catch up\" with elements that still\n // exist or reach the back of the queue.\n SimpleQueue.prototype.forEach = function (callback) {\n var i = this._cursor;\n var node = this._front;\n var elements = node._elements;\n while (i !== elements.length || node._next !== undefined) {\n if (i === elements.length) {\n node = node._next;\n elements = node._elements;\n i = 0;\n if (elements.length === 0) {\n break;\n }\n }\n callback(elements[i]);\n ++i;\n }\n };\n // Return the element that would be returned if shift() was called now,\n // without modifying the queue.\n SimpleQueue.prototype.peek = function () { // must not be called on an empty queue\n var front = this._front;\n var cursor = this._cursor;\n return front._elements[cursor];\n };\n return SimpleQueue;\n }());\n\n function ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n }\n else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n }\n else {\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n }\n }\n // A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n // check.\n function ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n return ReadableStreamCancel(stream, reason);\n }\n function ReadableStreamReaderGenericRelease(reader) {\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\"));\n }\n else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\"));\n }\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n }\n // Helper functions for the readers.\n function readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n }\n // Helper functions for the ReadableStreamDefaultReader.\n function defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = newPromise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n }\n function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseReject(reader, reason);\n }\n function defaultReaderClosedPromiseInitializeAsResolved(reader) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseResolve(reader);\n }\n function defaultReaderClosedPromiseReject(reader, reason) {\n if (reader._closedPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(reader._closedPromise);\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n function defaultReaderClosedPromiseResetToRejected(reader, reason) {\n defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n }\n function defaultReaderClosedPromiseResolve(reader) {\n if (reader._closedPromise_resolve === undefined) {\n return;\n }\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n\n var AbortSteps = SymbolPolyfill('[[AbortSteps]]');\n var ErrorSteps = SymbolPolyfill('[[ErrorSteps]]');\n var CancelSteps = SymbolPolyfill('[[CancelSteps]]');\n var PullSteps = SymbolPolyfill('[[PullSteps]]');\n\n /// \n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill\n var NumberIsFinite = Number.isFinite || function (x) {\n return typeof x === 'number' && isFinite(x);\n };\n\n /// \n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc#Polyfill\n var MathTrunc = Math.trunc || function (v) {\n return v < 0 ? Math.ceil(v) : Math.floor(v);\n };\n\n // https://heycam.github.io/webidl/#idl-dictionaries\n function isDictionary(x) {\n return typeof x === 'object' || typeof x === 'function';\n }\n function assertDictionary(obj, context) {\n if (obj !== undefined && !isDictionary(obj)) {\n throw new TypeError(context + \" is not an object.\");\n }\n }\n // https://heycam.github.io/webidl/#idl-callback-functions\n function assertFunction(x, context) {\n if (typeof x !== 'function') {\n throw new TypeError(context + \" is not a function.\");\n }\n }\n // https://heycam.github.io/webidl/#idl-object\n function isObject(x) {\n return (typeof x === 'object' && x !== null) || typeof x === 'function';\n }\n function assertObject(x, context) {\n if (!isObject(x)) {\n throw new TypeError(context + \" is not an object.\");\n }\n }\n function assertRequiredArgument(x, position, context) {\n if (x === undefined) {\n throw new TypeError(\"Parameter \" + position + \" is required in '\" + context + \"'.\");\n }\n }\n function assertRequiredField(x, field, context) {\n if (x === undefined) {\n throw new TypeError(field + \" is required in '\" + context + \"'.\");\n }\n }\n // https://heycam.github.io/webidl/#idl-unrestricted-double\n function convertUnrestrictedDouble(value) {\n return Number(value);\n }\n function censorNegativeZero(x) {\n return x === 0 ? 0 : x;\n }\n function integerPart(x) {\n return censorNegativeZero(MathTrunc(x));\n }\n // https://heycam.github.io/webidl/#idl-unsigned-long-long\n function convertUnsignedLongLongWithEnforceRange(value, context) {\n var lowerBound = 0;\n var upperBound = Number.MAX_SAFE_INTEGER;\n var x = Number(value);\n x = censorNegativeZero(x);\n if (!NumberIsFinite(x)) {\n throw new TypeError(context + \" is not a finite number\");\n }\n x = integerPart(x);\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(context + \" is outside the accepted range of \" + lowerBound + \" to \" + upperBound + \", inclusive\");\n }\n if (!NumberIsFinite(x) || x === 0) {\n return 0;\n }\n // TODO Use BigInt if supported?\n // let xBigInt = BigInt(integerPart(x));\n // xBigInt = BigInt.asUintN(64, xBigInt);\n // return Number(xBigInt);\n return x;\n }\n\n function assertReadableStream(x, context) {\n if (!IsReadableStream(x)) {\n throw new TypeError(context + \" is not a ReadableStream.\");\n }\n }\n\n // Abstract operations for the ReadableStream.\n function AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n }\n // ReadableStream API exposed for controllers.\n function ReadableStreamAddReadRequest(stream, readRequest) {\n stream._reader._readRequests.push(readRequest);\n }\n function ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n var readRequest = reader._readRequests.shift();\n if (done) {\n readRequest._closeSteps();\n }\n else {\n readRequest._chunkSteps(chunk);\n }\n }\n function ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n }\n function ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamDefaultReader(reader)) {\n return false;\n }\n return true;\n }\n /**\n * A default reader vended by a {@link ReadableStream}.\n *\n * @public\n */\n var ReadableStreamDefaultReader = /** @class */ (function () {\n function ReadableStreamDefaultReader(stream) {\n assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader');\n assertReadableStream(stream, 'First parameter');\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readRequests = new SimpleQueue();\n }\n Object.defineProperty(ReadableStreamDefaultReader.prototype, \"closed\", {\n /**\n * Returns a promise that will be fulfilled when the stream becomes closed,\n * or rejected if the stream ever errors or the reader's lock is released before the stream finishes closing.\n */\n get: function () {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n */\n ReadableStreamDefaultReader.prototype.cancel = function (reason) {\n if (reason === void 0) { reason = undefined; }\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n };\n /**\n * Returns a promise that allows access to the next chunk from the stream's internal queue, if available.\n *\n * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.\n */\n ReadableStreamDefaultReader.prototype.read = function () {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n var resolvePromise;\n var rejectPromise;\n var promise = newPromise(function (resolve, reject) {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n var readRequest = {\n _chunkSteps: function (chunk) { return resolvePromise({ value: chunk, done: false }); },\n _closeSteps: function () { return resolvePromise({ value: undefined, done: true }); },\n _errorSteps: function (e) { return rejectPromise(e); }\n };\n ReadableStreamDefaultReaderRead(this, readRequest);\n return promise;\n };\n /**\n * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.\n * If the associated stream is errored when the lock is released, the reader will appear errored in the same way\n * from now on; otherwise, the reader will appear closed.\n *\n * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by\n * the reader's {@link ReadableStreamDefaultReader.read | read()} method has not yet been settled. Attempting to\n * do so will throw a `TypeError` and leave the reader locked to the stream.\n */\n ReadableStreamDefaultReader.prototype.releaseLock = function () {\n if (!IsReadableStreamDefaultReader(this)) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n };\n return ReadableStreamDefaultReader;\n }());\n Object.defineProperties(ReadableStreamDefaultReader.prototype, {\n cancel: { enumerable: true },\n read: { enumerable: true },\n releaseLock: { enumerable: true },\n closed: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamDefaultReader.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamDefaultReader',\n configurable: true\n });\n }\n // Abstract operations for the readers.\n function IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultReaderRead(reader, readRequest) {\n var stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'closed') {\n readRequest._closeSteps();\n }\n else if (stream._state === 'errored') {\n readRequest._errorSteps(stream._storedError);\n }\n else {\n stream._readableStreamController[PullSteps](readRequest);\n }\n }\n // Helper functions for the ReadableStreamDefaultReader.\n function defaultReaderBrandCheckException(name) {\n return new TypeError(\"ReadableStreamDefaultReader.prototype.\" + name + \" can only be used on a ReadableStreamDefaultReader\");\n }\n\n /// \n var _a;\n var AsyncIteratorPrototype;\n if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n // We're running inside a ES2018+ environment, but we're compiling to an older syntax.\n // We cannot access %AsyncIteratorPrototype% without non-ES2018 syntax, but we can re-create it.\n AsyncIteratorPrototype = (_a = {},\n // 25.1.3.1 %AsyncIteratorPrototype% [ @@asyncIterator ] ( )\n // https://tc39.github.io/ecma262/#sec-asynciteratorprototype-asynciterator\n _a[SymbolPolyfill.asyncIterator] = function () {\n return this;\n },\n _a);\n Object.defineProperty(AsyncIteratorPrototype, SymbolPolyfill.asyncIterator, { enumerable: false });\n }\n\n /// \n var ReadableStreamAsyncIteratorImpl = /** @class */ (function () {\n function ReadableStreamAsyncIteratorImpl(reader, preventCancel) {\n this._ongoingPromise = undefined;\n this._isFinished = false;\n this._reader = reader;\n this._preventCancel = preventCancel;\n }\n ReadableStreamAsyncIteratorImpl.prototype.next = function () {\n var _this = this;\n var nextSteps = function () { return _this._nextSteps(); };\n this._ongoingPromise = this._ongoingPromise ?\n transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) :\n nextSteps();\n return this._ongoingPromise;\n };\n ReadableStreamAsyncIteratorImpl.prototype.return = function (value) {\n var _this = this;\n var returnSteps = function () { return _this._returnSteps(value); };\n return this._ongoingPromise ?\n transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) :\n returnSteps();\n };\n ReadableStreamAsyncIteratorImpl.prototype._nextSteps = function () {\n var _this = this;\n if (this._isFinished) {\n return Promise.resolve({ value: undefined, done: true });\n }\n var reader = this._reader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('iterate'));\n }\n var resolvePromise;\n var rejectPromise;\n var promise = newPromise(function (resolve, reject) {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n var readRequest = {\n _chunkSteps: function (chunk) {\n _this._ongoingPromise = undefined;\n // This needs to be delayed by one microtask, otherwise we stop pulling too early which breaks a test.\n // FIXME Is this a bug in the specification, or in the test?\n queueMicrotask(function () { return resolvePromise({ value: chunk, done: false }); });\n },\n _closeSteps: function () {\n _this._ongoingPromise = undefined;\n _this._isFinished = true;\n ReadableStreamReaderGenericRelease(reader);\n resolvePromise({ value: undefined, done: true });\n },\n _errorSteps: function (reason) {\n _this._ongoingPromise = undefined;\n _this._isFinished = true;\n ReadableStreamReaderGenericRelease(reader);\n rejectPromise(reason);\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n return promise;\n };\n ReadableStreamAsyncIteratorImpl.prototype._returnSteps = function (value) {\n if (this._isFinished) {\n return Promise.resolve({ value: value, done: true });\n }\n this._isFinished = true;\n var reader = this._reader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('finish iterating'));\n }\n if (!this._preventCancel) {\n var result = ReadableStreamReaderGenericCancel(reader, value);\n ReadableStreamReaderGenericRelease(reader);\n return transformPromiseWith(result, function () { return ({ value: value, done: true }); });\n }\n ReadableStreamReaderGenericRelease(reader);\n return promiseResolvedWith({ value: value, done: true });\n };\n return ReadableStreamAsyncIteratorImpl;\n }());\n var ReadableStreamAsyncIteratorPrototype = {\n next: function () {\n if (!IsReadableStreamAsyncIterator(this)) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n }\n return this._asyncIteratorImpl.next();\n },\n return: function (value) {\n if (!IsReadableStreamAsyncIterator(this)) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('return'));\n }\n return this._asyncIteratorImpl.return(value);\n }\n };\n if (AsyncIteratorPrototype !== undefined) {\n Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n }\n // Abstract operations for the ReadableStream.\n function AcquireReadableStreamAsyncIterator(stream, preventCancel) {\n var reader = AcquireReadableStreamDefaultReader(stream);\n var impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel);\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype);\n iterator._asyncIteratorImpl = impl;\n return iterator;\n }\n function IsReadableStreamAsyncIterator(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) {\n return false;\n }\n return true;\n }\n // Helper functions for the ReadableStream.\n function streamAsyncIteratorBrandCheckException(name) {\n return new TypeError(\"ReadableStreamAsyncIterator.\" + name + \" can only be used on a ReadableSteamAsyncIterator\");\n }\n\n /// \n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Polyfill\n var NumberIsNaN = Number.isNaN || function (x) {\n // eslint-disable-next-line no-self-compare\n return x !== x;\n };\n\n function IsFiniteNonNegativeNumber(v) {\n if (!IsNonNegativeNumber(v)) {\n return false;\n }\n if (v === Infinity) {\n return false;\n }\n return true;\n }\n function IsNonNegativeNumber(v) {\n if (typeof v !== 'number') {\n return false;\n }\n if (NumberIsNaN(v)) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n return true;\n }\n\n function DequeueValue(container) {\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n return pair.value;\n }\n function EnqueueValueWithSize(container, value, size) {\n size = Number(size);\n if (!IsFiniteNonNegativeNumber(size)) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n container._queue.push({ value: value, size: size });\n container._queueTotalSize += size;\n }\n function PeekQueueValue(container) {\n var pair = container._queue.peek();\n return pair.value;\n }\n function ResetQueue(container) {\n container._queue = new SimpleQueue();\n container._queueTotalSize = 0;\n }\n\n function CreateArrayFromList(elements) {\n // We use arrays to represent lists, so this is basically a no-op.\n // Do a slice though just in case we happen to depend on the unique-ness.\n return elements.slice();\n }\n function CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n }\n // Not implemented correctly\n function TransferArrayBuffer(O) {\n return O;\n }\n // Not implemented correctly\n function IsDetachedBuffer(O) {\n return false;\n }\n\n /**\n * A pull-into request in a {@link ReadableByteStreamController}.\n *\n * @public\n */\n var ReadableStreamBYOBRequest = /** @class */ (function () {\n function ReadableStreamBYOBRequest() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(ReadableStreamBYOBRequest.prototype, \"view\", {\n /**\n * Returns the view for writing in to, or `null` if the BYOB request has already been responded to.\n */\n get: function () {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('view');\n }\n return this._view;\n },\n enumerable: false,\n configurable: true\n });\n ReadableStreamBYOBRequest.prototype.respond = function (bytesWritten) {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('respond');\n }\n assertRequiredArgument(bytesWritten, 1, 'respond');\n bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, 'First parameter');\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(this._view.buffer)) ;\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n };\n ReadableStreamBYOBRequest.prototype.respondWithNewView = function (view) {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('respondWithNewView');\n }\n assertRequiredArgument(view, 1, 'respondWithNewView');\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n if (view.byteLength === 0) {\n throw new TypeError('chunk must have non-zero byteLength');\n }\n if (view.buffer.byteLength === 0) {\n throw new TypeError(\"chunk's buffer must have non-zero byteLength\");\n }\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n };\n return ReadableStreamBYOBRequest;\n }());\n Object.defineProperties(ReadableStreamBYOBRequest.prototype, {\n respond: { enumerable: true },\n respondWithNewView: { enumerable: true },\n view: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamBYOBRequest.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamBYOBRequest',\n configurable: true\n });\n }\n /**\n * Allows control of a {@link ReadableStream | readable byte stream}'s state and internal queue.\n *\n * @public\n */\n var ReadableByteStreamController = /** @class */ (function () {\n function ReadableByteStreamController() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(ReadableByteStreamController.prototype, \"byobRequest\", {\n /**\n * Returns the current BYOB pull request, or `null` if there isn't one.\n */\n get: function () {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n if (this._byobRequest === null && this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos.peek();\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n var byobRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n SetUpReadableStreamBYOBRequest(byobRequest, this, view);\n this._byobRequest = byobRequest;\n }\n return this._byobRequest;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ReadableByteStreamController.prototype, \"desiredSize\", {\n /**\n * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is\n * over-full. An underlying byte source ought to use this information to determine when and how to apply backpressure.\n */\n get: function () {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n return ReadableByteStreamControllerGetDesiredSize(this);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from\n * the stream, but once those are read, the stream will become closed.\n */\n ReadableByteStreamController.prototype.close = function () {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('close');\n }\n if (this._closeRequested) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n var state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be closed\");\n }\n ReadableByteStreamControllerClose(this);\n };\n ReadableByteStreamController.prototype.enqueue = function (chunk) {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n assertRequiredArgument(chunk, 1, 'enqueue');\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('chunk must be an array buffer view');\n }\n if (chunk.byteLength === 0) {\n throw new TypeError('chunk must have non-zero byteLength');\n }\n if (chunk.buffer.byteLength === 0) {\n throw new TypeError(\"chunk's buffer must have non-zero byteLength\");\n }\n if (this._closeRequested) {\n throw new TypeError('stream is closed or draining');\n }\n var state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be enqueued to\");\n }\n ReadableByteStreamControllerEnqueue(this, chunk);\n };\n /**\n * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n */\n ReadableByteStreamController.prototype.error = function (e) {\n if (e === void 0) { e = undefined; }\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('error');\n }\n ReadableByteStreamControllerError(this, e);\n };\n /** @internal */\n ReadableByteStreamController.prototype[CancelSteps] = function (reason) {\n if (this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos.peek();\n firstDescriptor.bytesFilled = 0;\n }\n ResetQueue(this);\n var result = this._cancelAlgorithm(reason);\n ReadableByteStreamControllerClearAlgorithms(this);\n return result;\n };\n /** @internal */\n ReadableByteStreamController.prototype[PullSteps] = function (readRequest) {\n var stream = this._controlledReadableByteStream;\n if (this._queueTotalSize > 0) {\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n ReadableByteStreamControllerHandleQueueDrain(this);\n var view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n readRequest._chunkSteps(view);\n return;\n }\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n }\n catch (bufferE) {\n readRequest._errorSteps(bufferE);\n return;\n }\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n viewConstructor: Uint8Array,\n readerType: 'default'\n };\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n ReadableStreamAddReadRequest(stream, readRequest);\n ReadableByteStreamControllerCallPullIfNeeded(this);\n };\n return ReadableByteStreamController;\n }());\n Object.defineProperties(ReadableByteStreamController.prototype, {\n close: { enumerable: true },\n enqueue: { enumerable: true },\n error: { enumerable: true },\n byobRequest: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableByteStreamController.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableByteStreamController',\n configurable: true\n });\n }\n // Abstract operations for the ReadableByteStreamController.\n function IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n return false;\n }\n return true;\n }\n function IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n return true;\n }\n function ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (!shouldPull) {\n return;\n }\n if (controller._pulling) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n // TODO: Test controller argument\n var pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, function () {\n controller._pulling = false;\n if (controller._pullAgain) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n ReadableByteStreamControllerError(controller, e);\n });\n }\n function ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = new SimpleQueue();\n }\n function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n var done = false;\n if (stream._state === 'closed') {\n done = true;\n }\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n }\n else {\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n }\n function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n return new pullIntoDescriptor.viewConstructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n }\n function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n controller._queueTotalSize += byteLength;\n }\n function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n var queue = controller._queue;\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue.peek();\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n }\n else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n return ready;\n }\n function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n pullIntoDescriptor.bytesFilled += size;\n }\n function ReadableByteStreamControllerHandleQueueDrain(controller) {\n if (controller._queueTotalSize === 0 && controller._closeRequested) {\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(controller._controlledReadableByteStream);\n }\n else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }\n function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === null) {\n return;\n }\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = null;\n controller._byobRequest = null;\n }\n function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n var pullIntoDescriptor = controller._pendingPullIntos.peek();\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerPullInto(controller, view, readIntoRequest) {\n var stream = controller._controlledReadableByteStream;\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n var ctor = view.constructor;\n var buffer = TransferArrayBuffer(view.buffer);\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n viewConstructor: ctor,\n readerType: 'byob'\n };\n if (controller._pendingPullIntos.length > 0) {\n controller._pendingPullIntos.push(pullIntoDescriptor);\n // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n // - No change happens on desiredSize\n // - The source has already been notified of that there's at least 1 pending read(view)\n ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n return;\n }\n if (stream._state === 'closed') {\n var emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n readIntoRequest._closeSteps(emptyView);\n return;\n }\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n ReadableByteStreamControllerHandleQueueDrain(controller);\n readIntoRequest._chunkSteps(filledView);\n return;\n }\n if (controller._closeRequested) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n readIntoRequest._errorSteps(e);\n return;\n }\n }\n controller._pendingPullIntos.push(pullIntoDescriptor);\n ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n var stream = controller._controlledReadableByteStream;\n if (ReadableStreamHasBYOBReader(stream)) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n // TODO: Figure out whether we should detach the buffer or not here.\n return;\n }\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n }\n function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n var state = controller._controlledReadableByteStream._state;\n if (state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n }\n else {\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n return descriptor;\n }\n function ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return false;\n }\n if (controller._closeRequested) {\n return false;\n }\n if (!controller._started) {\n return false;\n }\n if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n var desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableByteStreamControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n }\n // A client of ReadableByteStreamController may use these functions directly to bypass state check.\n function ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableByteStream;\n if (controller._closeRequested || stream._state !== 'readable') {\n return;\n }\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n return;\n }\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos.peek();\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n throw e;\n }\n }\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n function ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableByteStream;\n if (controller._closeRequested || stream._state !== 'readable') {\n return;\n }\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n if (ReadableStreamHasDefaultReader(stream)) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n else {\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n }\n else if (ReadableStreamHasBYOBReader(stream)) {\n // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n }\n else {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return;\n }\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n ResetQueue(controller);\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableByteStreamControllerGetDesiredSize(controller) {\n var state = controller._controlledReadableByteStream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function ReadableByteStreamControllerRespond(controller, bytesWritten) {\n bytesWritten = Number(bytesWritten);\n if (!IsFiniteNonNegativeNumber(bytesWritten)) {\n throw new RangeError('bytesWritten must be a finite');\n }\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n }\n function ReadableByteStreamControllerRespondWithNewView(controller, view) {\n var firstDescriptor = controller._pendingPullIntos.peek();\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.byteLength !== view.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n firstDescriptor.buffer = view.buffer;\n ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n }\n function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) {\n controller._controlledReadableByteStream = stream;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._byobRequest = null;\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n controller._queue = controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._closeRequested = false;\n controller._started = false;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n controller._autoAllocateChunkSize = autoAllocateChunkSize;\n controller._pendingPullIntos = new SimpleQueue();\n stream._readableStreamController = controller;\n var startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), function () {\n controller._started = true;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableByteStreamControllerError(controller, r);\n });\n }\n function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) {\n var controller = Object.create(ReadableByteStreamController.prototype);\n var startAlgorithm = function () { return undefined; };\n var pullAlgorithm = function () { return promiseResolvedWith(undefined); };\n var cancelAlgorithm = function () { return promiseResolvedWith(undefined); };\n if (underlyingByteSource.start !== undefined) {\n startAlgorithm = function () { return underlyingByteSource.start(controller); };\n }\n if (underlyingByteSource.pull !== undefined) {\n pullAlgorithm = function () { return underlyingByteSource.pull(controller); };\n }\n if (underlyingByteSource.cancel !== undefined) {\n cancelAlgorithm = function (reason) { return underlyingByteSource.cancel(reason); };\n }\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize === 0) {\n throw new TypeError('autoAllocateChunkSize must be greater than 0');\n }\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize);\n }\n function SetUpReadableStreamBYOBRequest(request, controller, view) {\n request._associatedReadableByteStreamController = controller;\n request._view = view;\n }\n // Helper functions for the ReadableStreamBYOBRequest.\n function byobRequestBrandCheckException(name) {\n return new TypeError(\"ReadableStreamBYOBRequest.prototype.\" + name + \" can only be used on a ReadableStreamBYOBRequest\");\n }\n // Helper functions for the ReadableByteStreamController.\n function byteStreamControllerBrandCheckException(name) {\n return new TypeError(\"ReadableByteStreamController.prototype.\" + name + \" can only be used on a ReadableByteStreamController\");\n }\n\n // Abstract operations for the ReadableStream.\n function AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n }\n // ReadableStream API exposed for controllers.\n function ReadableStreamAddReadIntoRequest(stream, readIntoRequest) {\n stream._reader._readIntoRequests.push(readIntoRequest);\n }\n function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n var readIntoRequest = reader._readIntoRequests.shift();\n if (done) {\n readIntoRequest._closeSteps(chunk);\n }\n else {\n readIntoRequest._chunkSteps(chunk);\n }\n }\n function ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n }\n function ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamBYOBReader(reader)) {\n return false;\n }\n return true;\n }\n /**\n * A BYOB reader vended by a {@link ReadableStream}.\n *\n * @public\n */\n var ReadableStreamBYOBReader = /** @class */ (function () {\n function ReadableStreamBYOBReader(stream) {\n assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader');\n assertReadableStream(stream, 'First parameter');\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n if (!IsReadableByteStreamController(stream._readableStreamController)) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' +\n 'source');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readIntoRequests = new SimpleQueue();\n }\n Object.defineProperty(ReadableStreamBYOBReader.prototype, \"closed\", {\n /**\n * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or\n * the reader's lock is released before the stream finishes closing.\n */\n get: function () {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n */\n ReadableStreamBYOBReader.prototype.cancel = function (reason) {\n if (reason === void 0) { reason = undefined; }\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n };\n /**\n * Attempts to reads bytes into view, and returns a promise resolved with the result.\n *\n * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.\n */\n ReadableStreamBYOBReader.prototype.read = function (view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('read'));\n }\n if (!ArrayBuffer.isView(view)) {\n return promiseRejectedWith(new TypeError('view must be an array buffer view'));\n }\n if (view.byteLength === 0) {\n return promiseRejectedWith(new TypeError('view must have non-zero byteLength'));\n }\n if (view.buffer.byteLength === 0) {\n return promiseRejectedWith(new TypeError(\"view's buffer must have non-zero byteLength\"));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n var resolvePromise;\n var rejectPromise;\n var promise = newPromise(function (resolve, reject) {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n var readIntoRequest = {\n _chunkSteps: function (chunk) { return resolvePromise({ value: chunk, done: false }); },\n _closeSteps: function (chunk) { return resolvePromise({ value: chunk, done: true }); },\n _errorSteps: function (e) { return rejectPromise(e); }\n };\n ReadableStreamBYOBReaderRead(this, view, readIntoRequest);\n return promise;\n };\n /**\n * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.\n * If the associated stream is errored when the lock is released, the reader will appear errored in the same way\n * from now on; otherwise, the reader will appear closed.\n *\n * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by\n * the reader's {@link ReadableStreamBYOBReader.read | read()} method has not yet been settled. Attempting to\n * do so will throw a `TypeError` and leave the reader locked to the stream.\n */\n ReadableStreamBYOBReader.prototype.releaseLock = function () {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n };\n return ReadableStreamBYOBReader;\n }());\n Object.defineProperties(ReadableStreamBYOBReader.prototype, {\n cancel: { enumerable: true },\n read: { enumerable: true },\n releaseLock: { enumerable: true },\n closed: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamBYOBReader.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamBYOBReader',\n configurable: true\n });\n }\n // Abstract operations for the readers.\n function IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n return true;\n }\n function ReadableStreamBYOBReaderRead(reader, view, readIntoRequest) {\n var stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'errored') {\n readIntoRequest._errorSteps(stream._storedError);\n }\n else {\n ReadableByteStreamControllerPullInto(stream._readableStreamController, view, readIntoRequest);\n }\n }\n // Helper functions for the ReadableStreamBYOBReader.\n function byobReaderBrandCheckException(name) {\n return new TypeError(\"ReadableStreamBYOBReader.prototype.\" + name + \" can only be used on a ReadableStreamBYOBReader\");\n }\n\n function ExtractHighWaterMark(strategy, defaultHWM) {\n var highWaterMark = strategy.highWaterMark;\n if (highWaterMark === undefined) {\n return defaultHWM;\n }\n if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('Invalid highWaterMark');\n }\n return highWaterMark;\n }\n function ExtractSizeAlgorithm(strategy) {\n var size = strategy.size;\n if (!size) {\n return function () { return 1; };\n }\n return size;\n }\n\n function convertQueuingStrategy(init, context) {\n assertDictionary(init, context);\n var highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark;\n var size = init === null || init === void 0 ? void 0 : init.size;\n return {\n highWaterMark: highWaterMark === undefined ? undefined : convertUnrestrictedDouble(highWaterMark),\n size: size === undefined ? undefined : convertQueuingStrategySize(size, context + \" has member 'size' that\")\n };\n }\n function convertQueuingStrategySize(fn, context) {\n assertFunction(fn, context);\n return function (chunk) { return convertUnrestrictedDouble(fn(chunk)); };\n }\n\n function convertUnderlyingSink(original, context) {\n assertDictionary(original, context);\n var abort = original === null || original === void 0 ? void 0 : original.abort;\n var close = original === null || original === void 0 ? void 0 : original.close;\n var start = original === null || original === void 0 ? void 0 : original.start;\n var type = original === null || original === void 0 ? void 0 : original.type;\n var write = original === null || original === void 0 ? void 0 : original.write;\n return {\n abort: abort === undefined ?\n undefined :\n convertUnderlyingSinkAbortCallback(abort, original, context + \" has member 'abort' that\"),\n close: close === undefined ?\n undefined :\n convertUnderlyingSinkCloseCallback(close, original, context + \" has member 'close' that\"),\n start: start === undefined ?\n undefined :\n convertUnderlyingSinkStartCallback(start, original, context + \" has member 'start' that\"),\n write: write === undefined ?\n undefined :\n convertUnderlyingSinkWriteCallback(write, original, context + \" has member 'write' that\"),\n type: type\n };\n }\n function convertUnderlyingSinkAbortCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (reason) { return promiseCall(fn, original, [reason]); };\n }\n function convertUnderlyingSinkCloseCallback(fn, original, context) {\n assertFunction(fn, context);\n return function () { return promiseCall(fn, original, []); };\n }\n function convertUnderlyingSinkStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) { return reflectCall(fn, original, [controller]); };\n }\n function convertUnderlyingSinkWriteCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (chunk, controller) { return promiseCall(fn, original, [chunk, controller]); };\n }\n\n function assertWritableStream(x, context) {\n if (!IsWritableStream(x)) {\n throw new TypeError(context + \" is not a WritableStream.\");\n }\n }\n\n /**\n * A writable stream represents a destination for data, into which you can write.\n *\n * @public\n */\n var WritableStream = /** @class */ (function () {\n function WritableStream(rawUnderlyingSink, rawStrategy) {\n if (rawUnderlyingSink === void 0) { rawUnderlyingSink = {}; }\n if (rawStrategy === void 0) { rawStrategy = {}; }\n if (rawUnderlyingSink === undefined) {\n rawUnderlyingSink = null;\n }\n else {\n assertObject(rawUnderlyingSink, 'First parameter');\n }\n var strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n var underlyingSink = convertUnderlyingSink(rawUnderlyingSink, 'First parameter');\n InitializeWritableStream(this);\n var type = underlyingSink.type;\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n var sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n var highWaterMark = ExtractHighWaterMark(strategy, 1);\n SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n }\n Object.defineProperty(WritableStream.prototype, \"locked\", {\n /**\n * Returns whether or not the writable stream is locked to a writer.\n */\n get: function () {\n if (!IsWritableStream(this)) {\n throw streamBrandCheckException('locked');\n }\n return IsWritableStreamLocked(this);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be\n * immediately moved to an errored state, with any queued-up writes discarded. This will also execute any abort\n * mechanism of the underlying sink.\n *\n * The returned promise will fulfill if the stream shuts down successfully, or reject if the underlying sink signaled\n * that there was an error doing so. Additionally, it will reject with a `TypeError` (without attempting to cancel\n * the stream) if the stream is currently locked.\n */\n WritableStream.prototype.abort = function (reason) {\n if (reason === void 0) { reason = undefined; }\n if (!IsWritableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException('abort'));\n }\n if (IsWritableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n }\n return WritableStreamAbort(this, reason);\n };\n /**\n * Closes the stream. The underlying sink will finish processing any previously-written chunks, before invoking its\n * close behavior. During this time any further attempts to write will fail (without erroring the stream).\n *\n * The method returns a promise that will fulfill if all remaining chunks are successfully written and the stream\n * successfully closes, or rejects if an error is encountered during this process. Additionally, it will reject with\n * a `TypeError` (without attempting to cancel the stream) if the stream is currently locked.\n */\n WritableStream.prototype.close = function () {\n if (!IsWritableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException('close'));\n }\n if (IsWritableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n }\n if (WritableStreamCloseQueuedOrInFlight(this)) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamClose(this);\n };\n /**\n * Creates a {@link WritableStreamDefaultWriter | writer} and locks the stream to the new writer. While the stream\n * is locked, no other writer can be acquired until this one is released.\n *\n * This functionality is especially useful for creating abstractions that desire the ability to write to a stream\n * without interruption or interleaving. By getting a writer for the stream, you can ensure nobody else can write at\n * the same time, which would cause the resulting written data to be unpredictable and probably useless.\n */\n WritableStream.prototype.getWriter = function () {\n if (!IsWritableStream(this)) {\n throw streamBrandCheckException('getWriter');\n }\n return AcquireWritableStreamDefaultWriter(this);\n };\n return WritableStream;\n }());\n Object.defineProperties(WritableStream.prototype, {\n abort: { enumerable: true },\n close: { enumerable: true },\n getWriter: { enumerable: true },\n locked: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStream',\n configurable: true\n });\n }\n // Abstract operations for the WritableStream.\n function AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n }\n // Throws if and only if startAlgorithm throws.\n function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n if (highWaterMark === void 0) { highWaterMark = 1; }\n if (sizeAlgorithm === void 0) { sizeAlgorithm = function () { return 1; }; }\n var stream = Object.create(WritableStream.prototype);\n InitializeWritableStream(stream);\n var controller = Object.create(WritableStreamDefaultController.prototype);\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function InitializeWritableStream(stream) {\n stream._state = 'writable';\n // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n // 'erroring' or 'errored'. May be set to an undefined value.\n stream._storedError = undefined;\n stream._writer = undefined;\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n stream._writableStreamController = undefined;\n // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n // producer without waiting for the queued writes to finish.\n stream._writeRequests = new SimpleQueue();\n // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n stream._inFlightWriteRequest = undefined;\n // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n // has been detached.\n stream._closeRequest = undefined;\n // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n stream._inFlightCloseRequest = undefined;\n // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n stream._pendingAbortRequest = undefined;\n // The backpressure signal set by the controller.\n stream._backpressure = false;\n }\n function IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n return true;\n }\n function IsWritableStreamLocked(stream) {\n if (stream._writer === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamAbort(stream, reason) {\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n if (stream._pendingAbortRequest !== undefined) {\n return stream._pendingAbortRequest._promise;\n }\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n // reason will not be used, so don't keep a reference to it.\n reason = undefined;\n }\n var promise = newPromise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _promise: undefined,\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n stream._pendingAbortRequest._promise = promise;\n if (!wasAlreadyErroring) {\n WritableStreamStartErroring(stream, reason);\n }\n return promise;\n }\n function WritableStreamClose(stream) {\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseRejectedWith(new TypeError(\"The stream (in \" + state + \" state) is not in the writable state and cannot be closed\"));\n }\n var promise = newPromise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._closeRequest = closeRequest;\n });\n var writer = stream._writer;\n if (writer !== undefined && stream._backpressure && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n return promise;\n }\n // WritableStream API exposed for controllers.\n function WritableStreamAddWriteRequest(stream) {\n var promise = newPromise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._writeRequests.push(writeRequest);\n });\n return promise;\n }\n function WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n WritableStreamFinishErroring(stream);\n }\n function WritableStreamStartErroring(stream, reason) {\n var controller = stream._writableStreamController;\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) {\n WritableStreamFinishErroring(stream);\n }\n }\n function WritableStreamFinishErroring(stream) {\n stream._state = 'errored';\n stream._writableStreamController[ErrorSteps]();\n var storedError = stream._storedError;\n stream._writeRequests.forEach(function (writeRequest) {\n writeRequest._reject(storedError);\n });\n stream._writeRequests = new SimpleQueue();\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n if (abortRequest._wasAlreadyErroring) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n var promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n uponPromise(promise, function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n }\n function WritableStreamFinishInFlightWrite(stream) {\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n }\n function WritableStreamFinishInFlightWriteWithError(stream, error) {\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n WritableStreamDealWithRejection(stream, error);\n }\n function WritableStreamFinishInFlightClose(stream) {\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n var state = stream._state;\n if (state === 'erroring') {\n // The error was too late to do anything, so it is ignored.\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n stream._state = 'closed';\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n }\n function WritableStreamFinishInFlightCloseWithError(stream, error) {\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n // Never execute sink abort() after sink close().\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n }\n // TODO(ricea): Fix alphabetical order.\n function WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamMarkCloseRequestInFlight(stream) {\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n }\n function WritableStreamMarkFirstWriteRequestInFlight(stream) {\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n }\n function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n if (stream._closeRequest !== undefined) {\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n }\n }\n function WritableStreamUpdateBackpressure(stream, backpressure) {\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure) {\n defaultWriterReadyPromiseReset(writer);\n }\n else {\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n stream._backpressure = backpressure;\n }\n /**\n * A default writer vended by a {@link WritableStream}.\n *\n * @public\n */\n var WritableStreamDefaultWriter = /** @class */ (function () {\n function WritableStreamDefaultWriter(stream) {\n assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter');\n assertWritableStream(stream, 'First parameter');\n if (IsWritableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n this._ownerWritableStream = stream;\n stream._writer = this;\n var state = stream._state;\n if (state === 'writable') {\n if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) {\n defaultWriterReadyPromiseInitialize(this);\n }\n else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n defaultWriterClosedPromiseInitialize(this);\n }\n else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n defaultWriterClosedPromiseInitialize(this);\n }\n else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n }\n else {\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n }\n }\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"closed\", {\n /**\n * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or\n * the writer’s lock is released before the stream finishes closing.\n */\n get: function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n }\n return this._closedPromise;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"desiredSize\", {\n /**\n * Returns the desired size to fill the stream’s internal queue. It can be negative, if the queue is over-full.\n * A producer can use this information to determine the right amount of data to write.\n *\n * It will be `null` if the stream cannot be successfully written to (due to either being errored, or having an abort\n * queued up). It will return zero if the stream is closed. And the getter will throw an exception if invoked when\n * the writer’s lock is released.\n */\n get: function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n return WritableStreamDefaultWriterGetDesiredSize(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WritableStreamDefaultWriter.prototype, \"ready\", {\n /**\n * Returns a promise that will be fulfilled when the desired size to fill the stream’s internal queue transitions\n * from non-positive to positive, signaling that it is no longer applying backpressure. Once the desired size dips\n * back to zero or below, the getter will return a new promise that stays pending until the next transition.\n *\n * If the stream becomes errored or aborted, or the writer’s lock is released, the returned promise will become\n * rejected.\n */\n get: function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n }\n return this._readyPromise;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}.\n */\n WritableStreamDefaultWriter.prototype.abort = function (reason) {\n if (reason === void 0) { reason = undefined; }\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('abort'));\n }\n return WritableStreamDefaultWriterAbort(this, reason);\n };\n /**\n * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}.\n */\n WritableStreamDefaultWriter.prototype.close = function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n }\n var stream = this._ownerWritableStream;\n if (stream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('close'));\n }\n if (WritableStreamCloseQueuedOrInFlight(stream)) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamDefaultWriterClose(this);\n };\n /**\n * Releases the writer’s lock on the corresponding stream. After the lock is released, the writer is no longer active.\n * If the associated stream is errored when the lock is released, the writer will appear errored in the same way from\n * now on; otherwise, the writer will appear closed.\n *\n * Note that the lock can still be released even if some ongoing writes have not yet finished (i.e. even if the\n * promises returned from previous calls to {@link WritableStreamDefaultWriter.write | write()} have not yet settled).\n * It’s not necessary to hold the lock on the writer for the duration of the write; the lock instead simply prevents\n * other producers from writing in an interleaved manner.\n */\n WritableStreamDefaultWriter.prototype.releaseLock = function () {\n if (!IsWritableStreamDefaultWriter(this)) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n var stream = this._ownerWritableStream;\n if (stream === undefined) {\n return;\n }\n WritableStreamDefaultWriterRelease(this);\n };\n WritableStreamDefaultWriter.prototype.write = function (chunk) {\n if (chunk === void 0) { chunk = undefined; }\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n return WritableStreamDefaultWriterWrite(this, chunk);\n };\n return WritableStreamDefaultWriter;\n }());\n Object.defineProperties(WritableStreamDefaultWriter.prototype, {\n abort: { enumerable: true },\n close: { enumerable: true },\n releaseLock: { enumerable: true },\n write: { enumerable: true },\n closed: { enumerable: true },\n desiredSize: { enumerable: true },\n ready: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStreamDefaultWriter.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStreamDefaultWriter',\n configurable: true\n });\n }\n // Abstract operations for the WritableStreamDefaultWriter.\n function IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n return true;\n }\n // A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n function WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n return WritableStreamAbort(stream, reason);\n }\n function WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n return WritableStreamClose(stream);\n }\n function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return WritableStreamDefaultWriterClose(writer);\n }\n function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n }\n else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n }\n else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n }\n function WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n var releasedError = new TypeError(\"Writer was released and can no longer be used to monitor the stream's closedness\");\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n // rejected until afterwards. This means that simply testing state will not work.\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n }\n function WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n var controller = stream._writableStreamController;\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n if (stream !== writer._ownerWritableStream) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n var state = stream._state;\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return promiseRejectedWith(stream._storedError);\n }\n var promise = WritableStreamAddWriteRequest(stream);\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n return promise;\n }\n var closeSentinel = {};\n /**\n * Allows control of a {@link WritableStream | writable stream}'s state and internal queue.\n *\n * @public\n */\n var WritableStreamDefaultController = /** @class */ (function () {\n function WritableStreamDefaultController() {\n throw new TypeError('Illegal constructor');\n }\n /**\n * Closes the controlled writable stream, making all future interactions with it fail with the given error `e`.\n *\n * This method is rarely used, since usually it suffices to return a rejected promise from one of the underlying\n * sink's methods. However, it can be useful for suddenly shutting down a stream in response to an event outside the\n * normal lifecycle of interactions with the underlying sink.\n */\n WritableStreamDefaultController.prototype.error = function (e) {\n if (e === void 0) { e = undefined; }\n if (!IsWritableStreamDefaultController(this)) {\n throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n // just treat it as a no-op.\n return;\n }\n WritableStreamDefaultControllerError(this, e);\n };\n /** @internal */\n WritableStreamDefaultController.prototype[AbortSteps] = function (reason) {\n var result = this._abortAlgorithm(reason);\n WritableStreamDefaultControllerClearAlgorithms(this);\n return result;\n };\n /** @internal */\n WritableStreamDefaultController.prototype[ErrorSteps] = function () {\n ResetQueue(this);\n };\n return WritableStreamDefaultController;\n }());\n Object.defineProperties(WritableStreamDefaultController.prototype, {\n error: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStreamDefaultController',\n configurable: true\n });\n }\n // Abstract operations implementing interface required by the WritableStream.\n function IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n return false;\n }\n return true;\n }\n function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledWritableStream = stream;\n stream._writableStreamController = controller;\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._writeAlgorithm = writeAlgorithm;\n controller._closeAlgorithm = closeAlgorithm;\n controller._abortAlgorithm = abortAlgorithm;\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n var startResult = startAlgorithm();\n var startPromise = promiseResolvedWith(startResult);\n uponPromise(startPromise, function () {\n controller._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (r) {\n controller._started = true;\n WritableStreamDealWithRejection(stream, r);\n });\n }\n function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) {\n var controller = Object.create(WritableStreamDefaultController.prototype);\n var startAlgorithm = function () { return undefined; };\n var writeAlgorithm = function () { return promiseResolvedWith(undefined); };\n var closeAlgorithm = function () { return promiseResolvedWith(undefined); };\n var abortAlgorithm = function () { return promiseResolvedWith(undefined); };\n if (underlyingSink.start !== undefined) {\n startAlgorithm = function () { return underlyingSink.start(controller); };\n }\n if (underlyingSink.write !== undefined) {\n writeAlgorithm = function (chunk) { return underlyingSink.write(chunk, controller); };\n }\n if (underlyingSink.close !== undefined) {\n closeAlgorithm = function () { return underlyingSink.close(); };\n }\n if (underlyingSink.abort !== undefined) {\n abortAlgorithm = function (reason) { return underlyingSink.abort(reason); };\n }\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n }\n // ClearAlgorithms may be called twice. Erroring the same stream in multiple ways will often result in redundant calls.\n function WritableStreamDefaultControllerClearAlgorithms(controller) {\n controller._writeAlgorithm = undefined;\n controller._closeAlgorithm = undefined;\n controller._abortAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n function WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, closeSentinel, 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n try {\n return controller._strategySizeAlgorithm(chunk);\n }\n catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n }\n function WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n }\n catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n var stream = controller._controlledWritableStream;\n if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n // Abstract operations for the WritableStreamDefaultController.\n function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n if (!controller._started) {\n return;\n }\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n var state = stream._state;\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n if (controller._queue.length === 0) {\n return;\n }\n var value = PeekQueueValue(controller);\n if (value === closeSentinel) {\n WritableStreamDefaultControllerProcessClose(controller);\n }\n else {\n WritableStreamDefaultControllerProcessWrite(controller, value);\n }\n }\n function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n }\n function WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n WritableStreamMarkCloseRequestInFlight(stream);\n DequeueValue(controller);\n var sinkClosePromise = controller._closeAlgorithm();\n WritableStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(sinkClosePromise, function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n });\n }\n function WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n var sinkWritePromise = controller._writeAlgorithm(chunk);\n uponPromise(sinkWritePromise, function () {\n WritableStreamFinishInFlightWrite(stream);\n var state = stream._state;\n DequeueValue(controller);\n if (!WritableStreamCloseQueuedOrInFlight(stream) && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n if (stream._state === 'writable') {\n WritableStreamDefaultControllerClearAlgorithms(controller);\n }\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n });\n }\n function WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n }\n // A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n function WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n WritableStreamDefaultControllerClearAlgorithms(controller);\n WritableStreamStartErroring(stream, error);\n }\n // Helper functions for the WritableStream.\n function streamBrandCheckException(name) {\n return new TypeError(\"WritableStream.prototype.\" + name + \" can only be used on a WritableStream\");\n }\n // Helper functions for the WritableStreamDefaultWriter.\n function defaultWriterBrandCheckException(name) {\n return new TypeError(\"WritableStreamDefaultWriter.prototype.\" + name + \" can only be used on a WritableStreamDefaultWriter\");\n }\n function defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n }\n function defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = newPromise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n }\n function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseReject(writer, reason);\n }\n function defaultWriterClosedPromiseInitializeAsResolved(writer) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseResolve(writer);\n }\n function defaultWriterClosedPromiseReject(writer, reason) {\n if (writer._closedPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(writer._closedPromise);\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n }\n function defaultWriterClosedPromiseResetToRejected(writer, reason) {\n defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterClosedPromiseResolve(writer) {\n if (writer._closedPromise_resolve === undefined) {\n return;\n }\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n }\n function defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = newPromise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n }\n function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseReject(writer, reason);\n }\n function defaultWriterReadyPromiseInitializeAsResolved(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseResolve(writer);\n }\n function defaultWriterReadyPromiseReject(writer, reason) {\n if (writer._readyPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(writer._readyPromise);\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n }\n function defaultWriterReadyPromiseReset(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n }\n function defaultWriterReadyPromiseResetToRejected(writer, reason) {\n defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterReadyPromiseResolve(writer) {\n if (writer._readyPromise_resolve === undefined) {\n return;\n }\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n }\n\n function isAbortSignal(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n try {\n return typeof value.aborted === 'boolean';\n }\n catch (_a) {\n // AbortSignal.prototype.aborted throws if its brand check fails\n return false;\n }\n }\n\n /// \n var NativeDOMException = typeof DOMException !== 'undefined' ? DOMException : undefined;\n\n /// \n function isDOMExceptionConstructor(ctor) {\n if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n return false;\n }\n try {\n new ctor();\n return true;\n }\n catch (_a) {\n return false;\n }\n }\n function createDOMExceptionPolyfill() {\n var ctor = function DOMException(message, name) {\n this.message = message || '';\n this.name = name || 'Error';\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n };\n ctor.prototype = Object.create(Error.prototype);\n Object.defineProperty(ctor.prototype, 'constructor', { value: ctor, writable: true, configurable: true });\n return ctor;\n }\n var DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill();\n\n function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) {\n var reader = AcquireReadableStreamDefaultReader(source);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n source._disturbed = true;\n var shuttingDown = false;\n // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n var currentWrite = promiseResolvedWith(undefined);\n return newPromise(function (resolve, reject) {\n var abortAlgorithm;\n if (signal !== undefined) {\n abortAlgorithm = function () {\n var error = new DOMException$1('Aborted', 'AbortError');\n var actions = [];\n if (!preventAbort) {\n actions.push(function () {\n if (dest._state === 'writable') {\n return WritableStreamAbort(dest, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n if (!preventCancel) {\n actions.push(function () {\n if (source._state === 'readable') {\n return ReadableStreamCancel(source, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n shutdownWithAction(function () { return Promise.all(actions.map(function (action) { return action(); })); }, true, error);\n };\n if (signal.aborted) {\n abortAlgorithm();\n return;\n }\n signal.addEventListener('abort', abortAlgorithm);\n }\n // Using reader and writer, read all chunks from this and write them to dest\n // - Backpressure must be enforced\n // - Shutdown must stop all activity\n function pipeLoop() {\n return newPromise(function (resolveLoop, rejectLoop) {\n function next(done) {\n if (done) {\n resolveLoop();\n }\n else {\n // Use `PerformPromiseThen` instead of `uponPromise` to avoid\n // adding unnecessary `.catch(rethrowAssertionErrorRejection)` handlers\n PerformPromiseThen(pipeStep(), next, rejectLoop);\n }\n }\n next(false);\n });\n }\n function pipeStep() {\n if (shuttingDown) {\n return promiseResolvedWith(true);\n }\n return PerformPromiseThen(writer._readyPromise, function () {\n return newPromise(function (resolveRead, rejectRead) {\n ReadableStreamDefaultReaderRead(reader, {\n _chunkSteps: function (chunk) {\n currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), undefined, noop);\n resolveRead(false);\n },\n _closeSteps: function () { return resolveRead(true); },\n _errorSteps: rejectRead\n });\n });\n });\n }\n // Errors must be propagated forward\n isOrBecomesErrored(source, reader._closedPromise, function (storedError) {\n if (!preventAbort) {\n shutdownWithAction(function () { return WritableStreamAbort(dest, storedError); }, true, storedError);\n }\n else {\n shutdown(true, storedError);\n }\n });\n // Errors must be propagated backward\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (!preventCancel) {\n shutdownWithAction(function () { return ReadableStreamCancel(source, storedError); }, true, storedError);\n }\n else {\n shutdown(true, storedError);\n }\n });\n // Closing must be propagated forward\n isOrBecomesClosed(source, reader._closedPromise, function () {\n if (!preventClose) {\n shutdownWithAction(function () { return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); });\n }\n else {\n shutdown();\n }\n });\n // Closing must be propagated backward\n if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === 'closed') {\n var destClosed_1 = new TypeError('the destination writable stream closed before all data could be piped to it');\n if (!preventCancel) {\n shutdownWithAction(function () { return ReadableStreamCancel(source, destClosed_1); }, true, destClosed_1);\n }\n else {\n shutdown(true, destClosed_1);\n }\n }\n setPromiseIsHandledToTrue(pipeLoop());\n function waitForWritesToFinish() {\n // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n // for that too.\n var oldCurrentWrite = currentWrite;\n return PerformPromiseThen(currentWrite, function () { return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; });\n }\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n }\n else {\n uponRejection(promise, action);\n }\n }\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n }\n else {\n uponFulfillment(promise, action);\n }\n }\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n uponFulfillment(waitForWritesToFinish(), doTheRest);\n }\n else {\n doTheRest();\n }\n function doTheRest() {\n uponPromise(action(), function () { return finalize(originalIsError, originalError); }, function (newError) { return finalize(true, newError); });\n }\n }\n function shutdown(isError, error) {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n uponFulfillment(waitForWritesToFinish(), function () { return finalize(isError, error); });\n }\n else {\n finalize(isError, error);\n }\n }\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n if (signal !== undefined) {\n signal.removeEventListener('abort', abortAlgorithm);\n }\n if (isError) {\n reject(error);\n }\n else {\n resolve(undefined);\n }\n }\n });\n }\n\n /**\n * Allows control of a {@link ReadableStream | readable stream}'s state and internal queue.\n *\n * @public\n */\n var ReadableStreamDefaultController = /** @class */ (function () {\n function ReadableStreamDefaultController() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(ReadableStreamDefaultController.prototype, \"desiredSize\", {\n /**\n * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is\n * over-full. An underlying source ought to use this information to determine when and how to apply backpressure.\n */\n get: function () {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from\n * the stream, but once those are read, the stream will become closed.\n */\n ReadableStreamDefaultController.prototype.close = function () {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('close');\n }\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n throw new TypeError('The stream is not in a state that permits close');\n }\n ReadableStreamDefaultControllerClose(this);\n };\n ReadableStreamDefaultController.prototype.enqueue = function (chunk) {\n if (chunk === void 0) { chunk = undefined; }\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n throw new TypeError('The stream is not in a state that permits enqueue');\n }\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n };\n /**\n * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n */\n ReadableStreamDefaultController.prototype.error = function (e) {\n if (e === void 0) { e = undefined; }\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('error');\n }\n ReadableStreamDefaultControllerError(this, e);\n };\n /** @internal */\n ReadableStreamDefaultController.prototype[CancelSteps] = function (reason) {\n ResetQueue(this);\n var result = this._cancelAlgorithm(reason);\n ReadableStreamDefaultControllerClearAlgorithms(this);\n return result;\n };\n /** @internal */\n ReadableStreamDefaultController.prototype[PullSteps] = function (readRequest) {\n var stream = this._controlledReadableStream;\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n if (this._closeRequested && this._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(this);\n ReadableStreamClose(stream);\n }\n else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n readRequest._chunkSteps(chunk);\n }\n else {\n ReadableStreamAddReadRequest(stream, readRequest);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n };\n return ReadableStreamDefaultController;\n }());\n Object.defineProperties(ReadableStreamDefaultController.prototype, {\n close: { enumerable: true },\n enqueue: { enumerable: true },\n error: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamDefaultController',\n configurable: true\n });\n }\n // Abstract operations for the ReadableStreamDefaultController.\n function IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (!shouldPull) {\n return;\n }\n if (controller._pulling) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n var pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, function () {\n controller._pulling = false;\n if (controller._pullAgain) {\n controller._pullAgain = false;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n ReadableStreamDefaultControllerError(controller, e);\n });\n }\n function ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return false;\n }\n if (!controller._started) {\n return false;\n }\n if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableStreamDefaultControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n // A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n function ReadableStreamDefaultControllerClose(controller) {\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return;\n }\n var stream = controller._controlledReadableStream;\n controller._closeRequested = true;\n if (controller._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n }\n function ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return;\n }\n var stream = controller._controlledReadableStream;\n if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n }\n else {\n var chunkSize = void 0;\n try {\n chunkSize = controller._strategySizeAlgorithm(chunk);\n }\n catch (chunkSizeE) {\n ReadableStreamDefaultControllerError(controller, chunkSizeE);\n throw chunkSizeE;\n }\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n }\n catch (enqueueE) {\n ReadableStreamDefaultControllerError(controller, enqueueE);\n throw enqueueE;\n }\n }\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n function ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n if (stream._state !== 'readable') {\n return;\n }\n ResetQueue(controller);\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var state = controller._controlledReadableStream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n // This is used in the implementation of TransformStream.\n function ReadableStreamDefaultControllerHasBackpressure(controller) {\n if (ReadableStreamDefaultControllerShouldCallPull(controller)) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {\n var state = controller._controlledReadableStream._state;\n if (!controller._closeRequested && state === 'readable') {\n return true;\n }\n return false;\n }\n function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledReadableStream = stream;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._closeRequested = false;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n stream._readableStreamController = controller;\n var startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), function () {\n controller._started = true;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerError(controller, r);\n });\n }\n function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) {\n var controller = Object.create(ReadableStreamDefaultController.prototype);\n var startAlgorithm = function () { return undefined; };\n var pullAlgorithm = function () { return promiseResolvedWith(undefined); };\n var cancelAlgorithm = function () { return promiseResolvedWith(undefined); };\n if (underlyingSource.start !== undefined) {\n startAlgorithm = function () { return underlyingSource.start(controller); };\n }\n if (underlyingSource.pull !== undefined) {\n pullAlgorithm = function () { return underlyingSource.pull(controller); };\n }\n if (underlyingSource.cancel !== undefined) {\n cancelAlgorithm = function (reason) { return underlyingSource.cancel(reason); };\n }\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n }\n // Helper functions for the ReadableStreamDefaultController.\n function defaultControllerBrandCheckException(name) {\n return new TypeError(\"ReadableStreamDefaultController.prototype.\" + name + \" can only be used on a ReadableStreamDefaultController\");\n }\n\n function ReadableStreamTee(stream, cloneForBranch2) {\n var reader = AcquireReadableStreamDefaultReader(stream);\n var reading = false;\n var canceled1 = false;\n var canceled2 = false;\n var reason1;\n var reason2;\n var branch1;\n var branch2;\n var resolveCancelPromise;\n var cancelPromise = newPromise(function (resolve) {\n resolveCancelPromise = resolve;\n });\n function pullAlgorithm() {\n if (reading) {\n return promiseResolvedWith(undefined);\n }\n reading = true;\n var readRequest = {\n _chunkSteps: function (value) {\n // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n // successful synchronously-available reads get ahead of asynchronously-available errors.\n queueMicrotask(function () {\n reading = false;\n var value1 = value;\n var value2 = value;\n // There is no way to access the cloning code right now in the reference implementation.\n // If we add one then we'll need an implementation for serializable objects.\n // if (!canceled2 && cloneForBranch2) {\n // value2 = StructuredDeserialize(StructuredSerialize(value2));\n // }\n if (!canceled1) {\n ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, value1);\n }\n if (!canceled2) {\n ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, value2);\n }\n resolveCancelPromise(undefined);\n });\n },\n _closeSteps: function () {\n reading = false;\n if (!canceled1) {\n ReadableStreamDefaultControllerClose(branch1._readableStreamController);\n }\n if (!canceled2) {\n ReadableStreamDefaultControllerClose(branch2._readableStreamController);\n }\n },\n _errorSteps: function () {\n reading = false;\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\n canceled1 = true;\n reason1 = reason;\n if (canceled2) {\n var compositeReason = CreateArrayFromList([reason1, reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function cancel2Algorithm(reason) {\n canceled2 = true;\n reason2 = reason;\n if (canceled1) {\n var compositeReason = CreateArrayFromList([reason1, reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function startAlgorithm() {\n // do nothing\n }\n branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n uponRejection(reader._closedPromise, function (r) {\n ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n resolveCancelPromise(undefined);\n });\n return [branch1, branch2];\n }\n\n function convertUnderlyingDefaultOrByteSource(source, context) {\n assertDictionary(source, context);\n var original = source;\n var autoAllocateChunkSize = original === null || original === void 0 ? void 0 : original.autoAllocateChunkSize;\n var cancel = original === null || original === void 0 ? void 0 : original.cancel;\n var pull = original === null || original === void 0 ? void 0 : original.pull;\n var start = original === null || original === void 0 ? void 0 : original.start;\n var type = original === null || original === void 0 ? void 0 : original.type;\n return {\n autoAllocateChunkSize: autoAllocateChunkSize === undefined ?\n undefined :\n convertUnsignedLongLongWithEnforceRange(autoAllocateChunkSize, context + \" has member 'autoAllocateChunkSize' that\"),\n cancel: cancel === undefined ?\n undefined :\n convertUnderlyingSourceCancelCallback(cancel, original, context + \" has member 'cancel' that\"),\n pull: pull === undefined ?\n undefined :\n convertUnderlyingSourcePullCallback(pull, original, context + \" has member 'pull' that\"),\n start: start === undefined ?\n undefined :\n convertUnderlyingSourceStartCallback(start, original, context + \" has member 'start' that\"),\n type: type === undefined ? undefined : convertReadableStreamType(type, context + \" has member 'type' that\")\n };\n }\n function convertUnderlyingSourceCancelCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (reason) { return promiseCall(fn, original, [reason]); };\n }\n function convertUnderlyingSourcePullCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) { return promiseCall(fn, original, [controller]); };\n }\n function convertUnderlyingSourceStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) { return reflectCall(fn, original, [controller]); };\n }\n function convertReadableStreamType(type, context) {\n type = \"\" + type;\n if (type !== 'bytes') {\n throw new TypeError(context + \" '\" + type + \"' is not a valid enumeration value for ReadableStreamType\");\n }\n return type;\n }\n\n function convertReaderOptions(options, context) {\n assertDictionary(options, context);\n var mode = options === null || options === void 0 ? void 0 : options.mode;\n return {\n mode: mode === undefined ? undefined : convertReadableStreamReaderMode(mode, context + \" has member 'mode' that\")\n };\n }\n function convertReadableStreamReaderMode(mode, context) {\n mode = \"\" + mode;\n if (mode !== 'byob') {\n throw new TypeError(context + \" '\" + mode + \"' is not a valid enumeration value for ReadableStreamReaderMode\");\n }\n return mode;\n }\n\n function convertIteratorOptions(options, context) {\n assertDictionary(options, context);\n var preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;\n return { preventCancel: Boolean(preventCancel) };\n }\n\n function convertPipeOptions(options, context) {\n assertDictionary(options, context);\n var preventAbort = options === null || options === void 0 ? void 0 : options.preventAbort;\n var preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;\n var preventClose = options === null || options === void 0 ? void 0 : options.preventClose;\n var signal = options === null || options === void 0 ? void 0 : options.signal;\n if (signal !== undefined) {\n assertAbortSignal(signal, context + \" has member 'signal' that\");\n }\n return {\n preventAbort: Boolean(preventAbort),\n preventCancel: Boolean(preventCancel),\n preventClose: Boolean(preventClose),\n signal: signal\n };\n }\n function assertAbortSignal(signal, context) {\n if (!isAbortSignal(signal)) {\n throw new TypeError(context + \" is not an AbortSignal.\");\n }\n }\n\n function convertReadableWritablePair(pair, context) {\n assertDictionary(pair, context);\n var readable = pair === null || pair === void 0 ? void 0 : pair.readable;\n assertRequiredField(readable, 'readable', 'ReadableWritablePair');\n assertReadableStream(readable, context + \" has member 'readable' that\");\n var writable = pair === null || pair === void 0 ? void 0 : pair.writable;\n assertRequiredField(writable, 'writable', 'ReadableWritablePair');\n assertWritableStream(writable, context + \" has member 'writable' that\");\n return { readable: readable, writable: writable };\n }\n\n /**\n * A readable stream represents a source of data, from which you can read.\n *\n * @public\n */\n var ReadableStream = /** @class */ (function () {\n function ReadableStream(rawUnderlyingSource, rawStrategy) {\n if (rawUnderlyingSource === void 0) { rawUnderlyingSource = {}; }\n if (rawStrategy === void 0) { rawStrategy = {}; }\n if (rawUnderlyingSource === undefined) {\n rawUnderlyingSource = null;\n }\n else {\n assertObject(rawUnderlyingSource, 'First parameter');\n }\n var strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n var underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, 'First parameter');\n InitializeReadableStream(this);\n if (underlyingSource.type === 'bytes') {\n if (strategy.size !== undefined) {\n throw new RangeError('The strategy for a byte stream cannot have a size function');\n }\n var highWaterMark = ExtractHighWaterMark(strategy, 0);\n SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark);\n }\n else {\n var sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n var highWaterMark = ExtractHighWaterMark(strategy, 1);\n SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm);\n }\n }\n Object.defineProperty(ReadableStream.prototype, \"locked\", {\n /**\n * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}.\n */\n get: function () {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('locked');\n }\n return IsReadableStreamLocked(this);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Cancels the stream, signaling a loss of interest in the stream by a consumer.\n *\n * The supplied `reason` argument will be given to the underlying source's {@link UnderlyingSource.cancel | cancel()}\n * method, which might or might not use it.\n */\n ReadableStream.prototype.cancel = function (reason) {\n if (reason === void 0) { reason = undefined; }\n if (!IsReadableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$1('cancel'));\n }\n if (IsReadableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n return ReadableStreamCancel(this, reason);\n };\n ReadableStream.prototype.getReader = function (rawOptions) {\n if (rawOptions === void 0) { rawOptions = undefined; }\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('getReader');\n }\n var options = convertReaderOptions(rawOptions, 'First parameter');\n if (options.mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n return AcquireReadableStreamBYOBReader(this);\n };\n ReadableStream.prototype.pipeThrough = function (rawTransform, rawOptions) {\n if (rawOptions === void 0) { rawOptions = {}; }\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('pipeThrough');\n }\n assertRequiredArgument(rawTransform, 1, 'pipeThrough');\n var transform = convertReadableWritablePair(rawTransform, 'First parameter');\n var options = convertPipeOptions(rawOptions, 'Second parameter');\n if (IsReadableStreamLocked(this)) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream');\n }\n if (IsWritableStreamLocked(transform.writable)) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream');\n }\n var promise = ReadableStreamPipeTo(this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal);\n setPromiseIsHandledToTrue(promise);\n return transform.readable;\n };\n ReadableStream.prototype.pipeTo = function (destination, rawOptions) {\n if (rawOptions === void 0) { rawOptions = {}; }\n if (!IsReadableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$1('pipeTo'));\n }\n if (destination === undefined) {\n return promiseRejectedWith(\"Parameter 1 is required in 'pipeTo'.\");\n }\n if (!IsWritableStream(destination)) {\n return promiseRejectedWith(new TypeError(\"ReadableStream.prototype.pipeTo's first argument must be a WritableStream\"));\n }\n var options;\n try {\n options = convertPipeOptions(rawOptions, 'Second parameter');\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n if (IsReadableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(destination)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n return ReadableStreamPipeTo(this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal);\n };\n /**\n * Tees this readable stream, returning a two-element array containing the two resulting branches as\n * new {@link ReadableStream} instances.\n *\n * Teeing a stream will lock it, preventing any other consumer from acquiring a reader.\n * To cancel the stream, cancel both of the resulting branches; a composite cancellation reason will then be\n * propagated to the stream's underlying source.\n *\n * Note that the chunks seen in each branch will be the same object. If the chunks are not immutable,\n * this could allow interference between the two branches.\n */\n ReadableStream.prototype.tee = function () {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('tee');\n }\n var branches = ReadableStreamTee(this);\n return CreateArrayFromList(branches);\n };\n ReadableStream.prototype.values = function (rawOptions) {\n if (rawOptions === void 0) { rawOptions = undefined; }\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('values');\n }\n var options = convertIteratorOptions(rawOptions, 'First parameter');\n return AcquireReadableStreamAsyncIterator(this, options.preventCancel);\n };\n return ReadableStream;\n }());\n Object.defineProperties(ReadableStream.prototype, {\n cancel: { enumerable: true },\n getReader: { enumerable: true },\n pipeThrough: { enumerable: true },\n pipeTo: { enumerable: true },\n tee: { enumerable: true },\n values: { enumerable: true },\n locked: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStream',\n configurable: true\n });\n }\n if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.asyncIterator, {\n value: ReadableStream.prototype.values,\n writable: true,\n configurable: true\n });\n }\n // Abstract operations for the ReadableStream.\n // Throws if and only if startAlgorithm throws.\n function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n if (highWaterMark === void 0) { highWaterMark = 1; }\n if (sizeAlgorithm === void 0) { sizeAlgorithm = function () { return 1; }; }\n var stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n var controller = Object.create(ReadableStreamDefaultController.prototype);\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function InitializeReadableStream(stream) {\n stream._state = 'readable';\n stream._reader = undefined;\n stream._storedError = undefined;\n stream._disturbed = false;\n }\n function IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n return true;\n }\n function IsReadableStreamLocked(stream) {\n if (stream._reader === undefined) {\n return false;\n }\n return true;\n }\n // ReadableStream API exposed for controllers.\n function ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n if (stream._state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n ReadableStreamClose(stream);\n var sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n return transformPromiseWith(sourceCancelPromise, noop);\n }\n function ReadableStreamClose(stream) {\n stream._state = 'closed';\n var reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n defaultReaderClosedPromiseResolve(reader);\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(function (readRequest) {\n readRequest._closeSteps();\n });\n reader._readRequests = new SimpleQueue();\n }\n }\n function ReadableStreamError(stream, e) {\n stream._state = 'errored';\n stream._storedError = e;\n var reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n defaultReaderClosedPromiseReject(reader, e);\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(function (readRequest) {\n readRequest._errorSteps(e);\n });\n reader._readRequests = new SimpleQueue();\n }\n else {\n reader._readIntoRequests.forEach(function (readIntoRequest) {\n readIntoRequest._errorSteps(e);\n });\n reader._readIntoRequests = new SimpleQueue();\n }\n }\n // Helper functions for the ReadableStream.\n function streamBrandCheckException$1(name) {\n return new TypeError(\"ReadableStream.prototype.\" + name + \" can only be used on a ReadableStream\");\n }\n\n function convertQueuingStrategyInit(init, context) {\n assertDictionary(init, context);\n var highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark;\n assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit');\n return {\n highWaterMark: convertUnrestrictedDouble(highWaterMark)\n };\n }\n\n var byteLengthSizeFunction = function size(chunk) {\n return chunk.byteLength;\n };\n /**\n * A queuing strategy that counts the number of bytes in each chunk.\n *\n * @public\n */\n var ByteLengthQueuingStrategy = /** @class */ (function () {\n function ByteLengthQueuingStrategy(options) {\n assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy');\n options = convertQueuingStrategyInit(options, 'First parameter');\n this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark;\n }\n Object.defineProperty(ByteLengthQueuingStrategy.prototype, \"highWaterMark\", {\n /**\n * Returns the high water mark provided to the constructor.\n */\n get: function () {\n if (!IsByteLengthQueuingStrategy(this)) {\n throw byteLengthBrandCheckException('highWaterMark');\n }\n return this._byteLengthQueuingStrategyHighWaterMark;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ByteLengthQueuingStrategy.prototype, \"size\", {\n /**\n * Measures the size of `chunk` by returning the value of its `byteLength` property.\n */\n get: function () {\n if (!IsByteLengthQueuingStrategy(this)) {\n throw byteLengthBrandCheckException('size');\n }\n return byteLengthSizeFunction;\n },\n enumerable: false,\n configurable: true\n });\n return ByteLengthQueuingStrategy;\n }());\n Object.defineProperties(ByteLengthQueuingStrategy.prototype, {\n highWaterMark: { enumerable: true },\n size: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ByteLengthQueuingStrategy.prototype, SymbolPolyfill.toStringTag, {\n value: 'ByteLengthQueuingStrategy',\n configurable: true\n });\n }\n // Helper functions for the ByteLengthQueuingStrategy.\n function byteLengthBrandCheckException(name) {\n return new TypeError(\"ByteLengthQueuingStrategy.prototype.\" + name + \" can only be used on a ByteLengthQueuingStrategy\");\n }\n function IsByteLengthQueuingStrategy(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_byteLengthQueuingStrategyHighWaterMark')) {\n return false;\n }\n return true;\n }\n\n var countSizeFunction = function size() {\n return 1;\n };\n /**\n * A queuing strategy that counts the number of chunks.\n *\n * @public\n */\n var CountQueuingStrategy = /** @class */ (function () {\n function CountQueuingStrategy(options) {\n assertRequiredArgument(options, 1, 'CountQueuingStrategy');\n options = convertQueuingStrategyInit(options, 'First parameter');\n this._countQueuingStrategyHighWaterMark = options.highWaterMark;\n }\n Object.defineProperty(CountQueuingStrategy.prototype, \"highWaterMark\", {\n /**\n * Returns the high water mark provided to the constructor.\n */\n get: function () {\n if (!IsCountQueuingStrategy(this)) {\n throw countBrandCheckException('highWaterMark');\n }\n return this._countQueuingStrategyHighWaterMark;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CountQueuingStrategy.prototype, \"size\", {\n /**\n * Measures the size of `chunk` by always returning 1.\n * This ensures that the total queue size is a count of the number of chunks in the queue.\n */\n get: function () {\n if (!IsCountQueuingStrategy(this)) {\n throw countBrandCheckException('size');\n }\n return countSizeFunction;\n },\n enumerable: false,\n configurable: true\n });\n return CountQueuingStrategy;\n }());\n Object.defineProperties(CountQueuingStrategy.prototype, {\n highWaterMark: { enumerable: true },\n size: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(CountQueuingStrategy.prototype, SymbolPolyfill.toStringTag, {\n value: 'CountQueuingStrategy',\n configurable: true\n });\n }\n // Helper functions for the CountQueuingStrategy.\n function countBrandCheckException(name) {\n return new TypeError(\"CountQueuingStrategy.prototype.\" + name + \" can only be used on a CountQueuingStrategy\");\n }\n function IsCountQueuingStrategy(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_countQueuingStrategyHighWaterMark')) {\n return false;\n }\n return true;\n }\n\n function convertTransformer(original, context) {\n assertDictionary(original, context);\n var flush = original === null || original === void 0 ? void 0 : original.flush;\n var readableType = original === null || original === void 0 ? void 0 : original.readableType;\n var start = original === null || original === void 0 ? void 0 : original.start;\n var transform = original === null || original === void 0 ? void 0 : original.transform;\n var writableType = original === null || original === void 0 ? void 0 : original.writableType;\n return {\n flush: flush === undefined ?\n undefined :\n convertTransformerFlushCallback(flush, original, context + \" has member 'flush' that\"),\n readableType: readableType,\n start: start === undefined ?\n undefined :\n convertTransformerStartCallback(start, original, context + \" has member 'start' that\"),\n transform: transform === undefined ?\n undefined :\n convertTransformerTransformCallback(transform, original, context + \" has member 'transform' that\"),\n writableType: writableType\n };\n }\n function convertTransformerFlushCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) { return promiseCall(fn, original, [controller]); };\n }\n function convertTransformerStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (controller) { return reflectCall(fn, original, [controller]); };\n }\n function convertTransformerTransformCallback(fn, original, context) {\n assertFunction(fn, context);\n return function (chunk, controller) { return promiseCall(fn, original, [chunk, controller]); };\n }\n\n // Class TransformStream\n /**\n * A transform stream consists of a pair of streams: a {@link WritableStream | writable stream},\n * known as its writable side, and a {@link ReadableStream | readable stream}, known as its readable side.\n * In a manner specific to the transform stream in question, writes to the writable side result in new data being\n * made available for reading from the readable side.\n *\n * @public\n */\n var TransformStream = /** @class */ (function () {\n function TransformStream(rawTransformer, rawWritableStrategy, rawReadableStrategy) {\n if (rawTransformer === void 0) { rawTransformer = {}; }\n if (rawWritableStrategy === void 0) { rawWritableStrategy = {}; }\n if (rawReadableStrategy === void 0) { rawReadableStrategy = {}; }\n if (rawTransformer === undefined) {\n rawTransformer = null;\n }\n var writableStrategy = convertQueuingStrategy(rawWritableStrategy, 'Second parameter');\n var readableStrategy = convertQueuingStrategy(rawReadableStrategy, 'Third parameter');\n var transformer = convertTransformer(rawTransformer, 'First parameter');\n if (transformer.readableType !== undefined) {\n throw new RangeError('Invalid readableType specified');\n }\n if (transformer.writableType !== undefined) {\n throw new RangeError('Invalid writableType specified');\n }\n var readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0);\n var readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy);\n var writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);\n var writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);\n var startPromise_resolve;\n var startPromise = newPromise(function (resolve) {\n startPromise_resolve = resolve;\n });\n InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n if (transformer.start !== undefined) {\n startPromise_resolve(transformer.start(this._transformStreamController));\n }\n else {\n startPromise_resolve(undefined);\n }\n }\n Object.defineProperty(TransformStream.prototype, \"readable\", {\n /**\n * The readable side of the transform stream.\n */\n get: function () {\n if (!IsTransformStream(this)) {\n throw streamBrandCheckException$2('readable');\n }\n return this._readable;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TransformStream.prototype, \"writable\", {\n /**\n * The writable side of the transform stream.\n */\n get: function () {\n if (!IsTransformStream(this)) {\n throw streamBrandCheckException$2('writable');\n }\n return this._writable;\n },\n enumerable: false,\n configurable: true\n });\n return TransformStream;\n }());\n Object.defineProperties(TransformStream.prototype, {\n readable: { enumerable: true },\n writable: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(TransformStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'TransformStream',\n configurable: true\n });\n }\n function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) {\n function startAlgorithm() {\n return startPromise;\n }\n function writeAlgorithm(chunk) {\n return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n }\n function abortAlgorithm(reason) {\n return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n }\n function closeAlgorithm() {\n return TransformStreamDefaultSinkCloseAlgorithm(stream);\n }\n stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm);\n function pullAlgorithm() {\n return TransformStreamDefaultSourcePullAlgorithm(stream);\n }\n function cancelAlgorithm(reason) {\n TransformStreamErrorWritableAndUnblockWrite(stream, reason);\n return promiseResolvedWith(undefined);\n }\n stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n // The [[backpressure]] slot is set to undefined so that it can be initialised by TransformStreamSetBackpressure.\n stream._backpressure = undefined;\n stream._backpressureChangePromise = undefined;\n stream._backpressureChangePromise_resolve = undefined;\n TransformStreamSetBackpressure(stream, true);\n stream._transformStreamController = undefined;\n }\n function IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n return true;\n }\n // This is a no-op if both sides are already errored.\n function TransformStreamError(stream, e) {\n ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n }\n function TransformStreamErrorWritableAndUnblockWrite(stream, e) {\n TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\n if (stream._backpressure) {\n // Pretend that pull() was called to permit any pending write() calls to complete. TransformStreamSetBackpressure()\n // cannot be called from enqueue() or pull() once the ReadableStream is errored, so this will will be the final time\n // _backpressure is set.\n TransformStreamSetBackpressure(stream, false);\n }\n }\n function TransformStreamSetBackpressure(stream, backpressure) {\n // Passes also when called during construction.\n if (stream._backpressureChangePromise !== undefined) {\n stream._backpressureChangePromise_resolve();\n }\n stream._backpressureChangePromise = newPromise(function (resolve) {\n stream._backpressureChangePromise_resolve = resolve;\n });\n stream._backpressure = backpressure;\n }\n // Class TransformStreamDefaultController\n /**\n * Allows control of the {@link ReadableStream} and {@link WritableStream} of the associated {@link TransformStream}.\n *\n * @public\n */\n var TransformStreamDefaultController = /** @class */ (function () {\n function TransformStreamDefaultController() {\n throw new TypeError('Illegal constructor');\n }\n Object.defineProperty(TransformStreamDefaultController.prototype, \"desiredSize\", {\n /**\n * Returns the desired size to fill the readable side’s internal queue. It can be negative, if the queue is over-full.\n */\n get: function () {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('desiredSize');\n }\n var readableController = this._controlledTransformStream._readable._readableStreamController;\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n },\n enumerable: false,\n configurable: true\n });\n TransformStreamDefaultController.prototype.enqueue = function (chunk) {\n if (chunk === void 0) { chunk = undefined; }\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('enqueue');\n }\n TransformStreamDefaultControllerEnqueue(this, chunk);\n };\n /**\n * Errors both the readable side and the writable side of the controlled transform stream, making all future\n * interactions with it fail with the given error `e`. Any chunks queued for transformation will be discarded.\n */\n TransformStreamDefaultController.prototype.error = function (reason) {\n if (reason === void 0) { reason = undefined; }\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('error');\n }\n TransformStreamDefaultControllerError(this, reason);\n };\n /**\n * Closes the readable side and errors the writable side of the controlled transform stream. This is useful when the\n * transformer only needs to consume a portion of the chunks written to the writable side.\n */\n TransformStreamDefaultController.prototype.terminate = function () {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('terminate');\n }\n TransformStreamDefaultControllerTerminate(this);\n };\n return TransformStreamDefaultController;\n }());\n Object.defineProperties(TransformStreamDefaultController.prototype, {\n enqueue: { enumerable: true },\n error: { enumerable: true },\n terminate: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n if (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(TransformStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'TransformStreamDefaultController',\n configurable: true\n });\n }\n // Transform Stream Default Controller Abstract Operations\n function IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n return true;\n }\n function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) {\n controller._controlledTransformStream = stream;\n stream._transformStreamController = controller;\n controller._transformAlgorithm = transformAlgorithm;\n controller._flushAlgorithm = flushAlgorithm;\n }\n function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) {\n var controller = Object.create(TransformStreamDefaultController.prototype);\n var transformAlgorithm = function (chunk) {\n try {\n TransformStreamDefaultControllerEnqueue(controller, chunk);\n return promiseResolvedWith(undefined);\n }\n catch (transformResultE) {\n return promiseRejectedWith(transformResultE);\n }\n };\n var flushAlgorithm = function () { return promiseResolvedWith(undefined); };\n if (transformer.transform !== undefined) {\n transformAlgorithm = function (chunk) { return transformer.transform(chunk, controller); };\n }\n if (transformer.flush !== undefined) {\n flushAlgorithm = function () { return transformer.flush(controller); };\n }\n SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm);\n }\n function TransformStreamDefaultControllerClearAlgorithms(controller) {\n controller._transformAlgorithm = undefined;\n controller._flushAlgorithm = undefined;\n }\n function TransformStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledTransformStream;\n var readableController = stream._readable._readableStreamController;\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) {\n throw new TypeError('Readable side is not in a state that permits enqueue');\n }\n // We throttle transform invocations based on the backpressure of the ReadableStream, but we still\n // accept TransformStreamDefaultControllerEnqueue() calls.\n try {\n ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n }\n catch (e) {\n // This happens when readableStrategy.size() throws.\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n throw stream._readable._storedError;\n }\n var backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n if (backpressure !== stream._backpressure) {\n TransformStreamSetBackpressure(stream, true);\n }\n }\n function TransformStreamDefaultControllerError(controller, e) {\n TransformStreamError(controller._controlledTransformStream, e);\n }\n function TransformStreamDefaultControllerPerformTransform(controller, chunk) {\n var transformPromise = controller._transformAlgorithm(chunk);\n return transformPromiseWith(transformPromise, undefined, function (r) {\n TransformStreamError(controller._controlledTransformStream, r);\n throw r;\n });\n }\n function TransformStreamDefaultControllerTerminate(controller) {\n var stream = controller._controlledTransformStream;\n var readableController = stream._readable._readableStreamController;\n ReadableStreamDefaultControllerClose(readableController);\n var error = new TypeError('TransformStream terminated');\n TransformStreamErrorWritableAndUnblockWrite(stream, error);\n }\n // TransformStreamDefaultSink Algorithms\n function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) {\n var controller = stream._transformStreamController;\n if (stream._backpressure) {\n var backpressureChangePromise = stream._backpressureChangePromise;\n return transformPromiseWith(backpressureChangePromise, function () {\n var writable = stream._writable;\n var state = writable._state;\n if (state === 'erroring') {\n throw writable._storedError;\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n });\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n }\n function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) {\n // abort() is not called synchronously, so it is possible for abort() to be called when the stream is already\n // errored.\n TransformStreamError(stream, reason);\n return promiseResolvedWith(undefined);\n }\n function TransformStreamDefaultSinkCloseAlgorithm(stream) {\n // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n var readable = stream._readable;\n var controller = stream._transformStreamController;\n var flushPromise = controller._flushAlgorithm();\n TransformStreamDefaultControllerClearAlgorithms(controller);\n // Return a promise that is fulfilled with undefined on success.\n return transformPromiseWith(flushPromise, function () {\n if (readable._state === 'errored') {\n throw readable._storedError;\n }\n ReadableStreamDefaultControllerClose(readable._readableStreamController);\n }, function (r) {\n TransformStreamError(stream, r);\n throw readable._storedError;\n });\n }\n // TransformStreamDefaultSource Algorithms\n function TransformStreamDefaultSourcePullAlgorithm(stream) {\n // Invariant. Enforced by the promises returned by start() and pull().\n TransformStreamSetBackpressure(stream, false);\n // Prevent the next pull() call until there is backpressure.\n return stream._backpressureChangePromise;\n }\n // Helper functions for the TransformStreamDefaultController.\n function defaultControllerBrandCheckException$1(name) {\n return new TypeError(\"TransformStreamDefaultController.prototype.\" + name + \" can only be used on a TransformStreamDefaultController\");\n }\n // Helper functions for the TransformStream.\n function streamBrandCheckException$2(name) {\n return new TypeError(\"TransformStream.prototype.\" + name + \" can only be used on a TransformStream\");\n }\n\n exports.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;\n exports.CountQueuingStrategy = CountQueuingStrategy;\n exports.ReadableByteStreamController = ReadableByteStreamController;\n exports.ReadableStream = ReadableStream;\n exports.ReadableStreamBYOBReader = ReadableStreamBYOBReader;\n exports.ReadableStreamBYOBRequest = ReadableStreamBYOBRequest;\n exports.ReadableStreamDefaultController = ReadableStreamDefaultController;\n exports.ReadableStreamDefaultReader = ReadableStreamDefaultReader;\n exports.TransformStream = TransformStream;\n exports.TransformStreamDefaultController = TransformStreamDefaultController;\n exports.WritableStream = WritableStream;\n exports.WritableStreamDefaultController = WritableStreamDefaultController;\n exports.WritableStreamDefaultWriter = WritableStreamDefaultWriter;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=ponyfill.js.map\n", - "require('../../modules/es.string.pad-start');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'padStart');\n", - "'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", - "// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = String(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n", - "'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n", - "// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line unicorn/no-unsafe-regex -- safe\nmodule.exports = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n", - "var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\n\nvar call = Function.call;\n\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n", - "require('../../modules/es.string.pad-end');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'padEnd');\n", - "'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", - "require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n", - "var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n", - "var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n", - "require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n", - "var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n", - "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isSameOrigin,\n MissingPDFException,\n PasswordException,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { NodeCanvasFactory, NodeCMapReaderFactory } from \"./node_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { apiCompatibilityParams } from \"./api_compatibility.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { WebGLContext } from \"./webgl.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nconst DefaultCanvasFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type IPDFStreamFactory\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via `@font-face` rules. If disabled, fonts will\n * be rendered using a built-in font renderer that constructs the glyphs with\n * primitive path commands. The default value is `false`.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = apiCompatibilityParams.disableFontFace || false;\n }\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise} A promise that is resolved when the worker ID of the\n * `MessageHandler` is known.\n * @private\n */\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed\"));\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n return worker.messageHandler\n .sendWithPromise(\"GetDocRequest\", {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n postMessageTransfers: worker.postMessageTransfers,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n })\n .then(function (workerId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n });\n}\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n *\n * @typedef {Object} PDFDocumentLoadingTask\n * @property {string} docId - Unique identifier for the document loading task.\n * @property {boolean} destroyed - Whether the loading task is destroyed or not.\n * @property {function} [onPassword] - Callback to request a password if a wrong\n * or no password was provided. The callback receives two parameters: a\n * function that should be called with the new password, and a reason (see\n * {@link PasswordResponses}).\n * @property {function} [onProgress] - Callback to be able to monitor the\n * loading progress of the PDF file (necessary to implement e.g. a loading\n * bar). The callback receives an {Object} with the properties `loaded`\n * ({number}) and `total` ({number}) that indicate how many bytes are loaded.\n * @property {function} [onUnsupportedFeature] - Callback for when an\n * unsupported feature is used in the PDF document. The callback receives an\n * {@link UNSUPPORTED_FEATURES} argument.\n * @property {Promise} promise - Promise for document loading\n * task completion.\n * @property {function} destroy - Abort all network requests and destroy\n * the worker. Returns a promise that is resolved when destruction is\n * completed.\n */\n\n/**\n * @type {any}\n * @ignore\n */\nconst PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {\n let nextDocumentId = 0;\n\n /**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\n // eslint-disable-next-line no-shadow\n class PDFDocumentLoadingTask {\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = \"d\" + nextDocumentId++;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar). The callback receives\n * an {Object} with the properties `loaded` ({number}) and `total`\n * ({number}) that indicate how many bytes are loaded.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\n */\n destroy() {\n this.destroyed = true;\n\n const transportDestroyed = !this._transport\n ? Promise.resolve()\n : this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n });\n }\n }\n return PDFDocumentLoadingTask;\n})();\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {string} A (not guaranteed to be) unique ID to identify a PDF.\n */\n get fingerprint() {\n return this._pdfInfo.fingerprint;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return this._pdfInfo.isPureXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {{num: number, gen: number}} ref - The page reference. Must have\n * the `num` and `gen` properties.\n * @returns {Promise<{num: number, gen: number}>} A promise that is resolved\n * with the page index (starting from zero) that is associated with the\n * reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise>} A promise that is resolved with all\n * information of the given named destination.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array} items\n */\n\n /**\n * @returns {Promise>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @returns {Promise} A promise this is resolved with\n * current statistics about document structures (see\n * {@link PDFDocumentStats}).\n */\n getStats() {\n return this._transport.getStats();\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are either needed in the viewer and/or\n * whose default values may be affected by the `apiCompatibilityParams`.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @param {AnnotationStorage} annotationStorage - Storage for annotation\n * data in forms.\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument(annotationStorage) {\n return this._transport.saveDocument(annotationStorage);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing /AcroForm field data for the JS sandbox,\n * or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - Replaces all occurrences of\n * whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array} items - Array of {@link TextItem} objects.\n * @property {Object} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} intent - Determines the annotations that will be fetched,\n * can be either 'display' (viewable annotations) or 'print' (printable\n * annotations). If the parameter is omitted, all annotations are fetched.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display' or 'print'.\n * The default value is 'display'.\n * @property {boolean} [enableWebGL] - Enables WebGL accelerated rendering for\n * some operations. The default value is `false`.\n * @property {boolean} [renderInteractiveForms] - Whether or not interactive\n * form elements are rendered in the display layer. If so, we do not render\n * them on the canvas as well.\n * @property {Array} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n * @property {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @property {Promise} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {Object} The reference that points to this page. It has `num` and\n * `gen` properties.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = null } = {}) {\n if (!this._annotationsPromise || this._annotationsIntent !== intent) {\n this._annotationsPromise = this._transport.getAnnotations(\n this._pageIndex,\n intent\n );\n this._annotationsIntent = intent;\n }\n return this._annotationsPromise;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n getXfa() {\n return (this._xfaPromise ||= this._transport.getPageXfa(this._pageIndex));\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n enableWebGL = false,\n renderInteractiveForms = false,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n annotationStorage = null,\n optionalContentConfigPromise = null,\n }) {\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const renderingIntent = intent === \"print\" ? \"print\" : \"display\";\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(renderingIntent);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(renderingIntent, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const webGLContext = new WebGLContext({\n enable: enableWebGL,\n });\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n renderInteractiveForms: renderInteractiveForms === true,\n annotationStorage: annotationStorage?.serializable || null,\n });\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || renderingIntent === \"print\") {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error,\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n webGLContext,\n useRequestAnimationFrame: renderingIntent !== \"print\",\n pdfBug: this._pdfBug,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents page's operator list.\n */\n getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const renderingIntent = \"oplist\";\n let intentState = this._intentStates.get(renderingIntent);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(renderingIntent, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n });\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n normalizeWhitespace = false,\n disableCombineTextItems = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n this._transport.pageCache[this._pageIndex] = null;\n\n const waitOn = [];\n for (const [intent, intentState] of this._intentStates) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intent === \"oplist\") {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this._annotationsPromise = null;\n this._jsActionsPromise = null;\n this._xfaPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationsPromise = null;\n this._jsActionsPromise = null;\n this._xfaPromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, intent) {\n const intentState = this._intentStates.get(intent);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList(args) {\n assert(\n args.intent,\n 'PDFPageProxy._pumpOperatorList: Expected \"intent\" argument.'\n );\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n args\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(args.intent);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n assert(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null),\n 'PDFPageProxy._abortOperatorList: Expected \"reason\" argument.'\n );\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason?.message));\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [intent, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(intent);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n if (cloned.has(value)) {\n // already cloned the object\n return cloned.get(value);\n }\n let buffer, result;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n if (transfers?.includes(buffer)) {\n result = new value.constructor(\n buffer,\n value.byteOffset,\n value.byteLength\n );\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n if (value instanceof Map) {\n result = new Map();\n cloned.set(value, result); // Adding to cache now for cyclic references.\n for (const [key, val] of value) {\n result.set(key, cloneValue(val));\n }\n return result;\n }\n if (value instanceof Set) {\n result = new Set();\n cloned.set(value, result); // Adding to cache now for cyclic references.\n for (const val of value) {\n result.add(cloneValue(val));\n }\n return result;\n }\n result = Array.isArray(value) ? [] : {};\n cloned.set(value, result); // Adding to cache now for cyclic references.\n // Cloning all value and object properties, however ignoring properties\n // defined via getter.\n for (const i in value) {\n let desc,\n p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n if (typeof desc.value === \"function\") {\n if (value.hasOwnProperty?.(i)) {\n throw new Error(\n `LoopbackPort.postMessage - cannot clone: ${value[i]}`\n );\n }\n continue;\n }\n result[i] = cloneValue(desc.value);\n }\n return result;\n }\n\n const cloned = new WeakMap();\n const event = { data: cloneValue(obj) };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level; the\n * constants from {@link VerbosityLevel} should be used.\n */\n\n/** @type {any} */\nconst PDFWorker = (function PDFWorkerClosure() {\n const pdfWorkerPorts = new WeakMap();\n let isWorkerDisabled = false;\n let fallbackWorkerSrc;\n let nextFakeWorkerId = 0;\n let fakeWorkerCapability;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n isWorkerDisabled = true;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"LIB\")) {\n fallbackWorkerSrc = \"../pdf.worker.js\";\n } else {\n fallbackWorkerSrc = \"./pdf.worker.js\";\n }\n } else if (typeof document === \"object\" && \"currentScript\" in document) {\n const pdfjsFilePath = document.currentScript?.src;\n if (pdfjsFilePath) {\n fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n }\n\n function getWorkerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (typeof fallbackWorkerSrc !== \"undefined\") {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n function getMainThreadWorkerMessageHandler() {\n let mainWorkerMessageHandler;\n try {\n mainWorkerMessageHandler = globalThis.pdfjsWorker?.WorkerMessageHandler;\n } catch (ex) {\n /* Ignore errors. */\n }\n return mainWorkerMessageHandler || null;\n }\n\n // Loads worker code into main thread.\n function setupFakeWorkerGlobal() {\n if (fakeWorkerCapability) {\n return fakeWorkerCapability.promise;\n }\n fakeWorkerCapability = createPromiseCapability();\n\n const loader = async function () {\n const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a ` - - - - - -
-
-
-
-
- - - - -
-
- -
- -
-
-
-
-
- - - -
-
-
- -
- - - - -
-
-
-
- -
- -
- -
- -
- - -
-
- - - - - - - - - Current View - - -
- - -
-
-
- -
- -
- - - -
-
-
-
-
-
-
-
-
-
- -
-
-
- - -
- - - -
-
- - diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/viewer.js b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/viewer.js deleted file mode 100644 index 09362f5f14bf10689b7d8ee71d64a956dc032cd2..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/viewer.js +++ /dev/null @@ -1,22594 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * Javascript code in this page - * - * Copyright 2021 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @licend The above is the entire license notice for the - * Javascript code in this page - */ - -/******/ -(() => { // webpackBootstrap - /******/ - "use strict"; - /******/ - var __webpack_modules__ = ([ - /* 0 */, - /* 1 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.OptionKind = exports.AppOptions = void 0; - - var _viewer_compatibility = __webpack_require__(2); - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var OptionKind = { - VIEWER: 0x02, - API: 0x04, - WORKER: 0x08, - PREFERENCE: 0x80 - }; - exports.OptionKind = OptionKind; - var defaultOptions = { - cursorToolOnLoad: { - value: 0, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - defaultUrl: { - value: "", - kind: OptionKind.VIEWER - }, - defaultZoomValue: { - value: "", - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - disableHistory: { - value: false, - kind: OptionKind.VIEWER - }, - disablePageLabels: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - enablePermissions: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - enablePrintAutoRotate: { - value: true, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - enableScripting: { - value: true, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - enableWebGL: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - externalLinkRel: { - value: "noopener noreferrer nofollow", - kind: OptionKind.VIEWER - }, - externalLinkTarget: { - value: 0, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - historyUpdateUrl: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - ignoreDestinationZoom: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - imageResourcesPath: { - value: "images/", - kind: OptionKind.VIEWER - }, - maxCanvasPixels: { - value: 16777216, - compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels, - kind: OptionKind.VIEWER - }, - pdfBugEnabled: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - printResolution: { - value: 150, - kind: OptionKind.VIEWER - }, - renderer: { - value: "canvas", - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - renderInteractiveForms: { - value: true, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - sidebarViewOnLoad: { - value: 1, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - scrollModeOnLoad: { - value: -1, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - spreadModeOnLoad: { - value: -1, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - textLayerMode: { - value: 1, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - useOnlyCssZoom: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - viewerCssTheme: { - value: 0, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - viewOnLoad: { - value: 0, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - cMapPacked: { - value: true, - kind: OptionKind.API - }, - cMapUrl: { - value: "cmaps/", - kind: OptionKind.API - }, - disableAutoFetch: { - value: false, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - disableFontFace: { - value: false, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - disableRange: { - value: false, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - disableStream: { - value: false, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - docBaseUrl: { - value: "", - kind: OptionKind.API - }, - enableXfa: { - value: false, - kind: OptionKind.API - }, - fontExtraProperties: { - value: false, - kind: OptionKind.API - }, - isEvalSupported: { - value: true, - kind: OptionKind.API - }, - maxImageSize: { - value: -1, - kind: OptionKind.API - }, - pdfBug: { - value: false, - kind: OptionKind.API - }, - verbosity: { - value: 1, - kind: OptionKind.API - }, - workerPort: { - value: null, - kind: OptionKind.WORKER - }, - workerSrc: { - value: "pdf.worker.js", - kind: OptionKind.WORKER - } - }; - { - defaultOptions.disablePreferences = { - value: false, - kind: OptionKind.VIEWER - }; - defaultOptions.locale = { - value: typeof navigator !== "undefined" ? navigator.language : "en-US", - kind: OptionKind.VIEWER - }; - defaultOptions.sandboxBundleSrc = { - value: "pdf.sandbox.js", - kind: OptionKind.VIEWER - }; - } - var userOptions = Object.create(null); - - var AppOptions = /*#__PURE__*/function () { - function AppOptions() { - _classCallCheck(this, AppOptions); - - throw new Error("Cannot initialize AppOptions."); - } - - _createClass(AppOptions, null, [{ - key: "get", - value: function get(name) { - var userOption = userOptions[name]; - - if (userOption !== undefined) { - return userOption; - } - - var defaultOption = defaultOptions[name]; - - if (defaultOption !== undefined) { - var _defaultOption$compat; - - return (_defaultOption$compat = defaultOption.compatibility) !== null && _defaultOption$compat !== void 0 ? _defaultOption$compat : defaultOption.value; - } - - return undefined; - } - }, { - key: "getAll", - value: function getAll() { - var kind = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var options = Object.create(null); - - for (var name in defaultOptions) { - var _defaultOption$compat2; - - var defaultOption = defaultOptions[name]; - - if (kind) { - if ((kind & defaultOption.kind) === 0) { - continue; - } - - if (kind === OptionKind.PREFERENCE) { - var value = defaultOption.value, - valueType = _typeof(value); - - if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) { - options[name] = value; - continue; - } - - throw new Error("Invalid type for preference: ".concat(name)); - } - } - - var userOption = userOptions[name]; - options[name] = userOption !== undefined ? userOption : (_defaultOption$compat2 = defaultOption.compatibility) !== null && _defaultOption$compat2 !== void 0 ? _defaultOption$compat2 : defaultOption.value; - } - - return options; - } - }, { - key: "set", - value: function set(name, value) { - userOptions[name] = value; - } - }, { - key: "setAll", - value: function setAll(options) { - for (var name in options) { - userOptions[name] = options[name]; - } - } - }, { - key: "remove", - value: function remove(name) { - delete userOptions[name]; - } - }]); - - return AppOptions; - }(); - - exports.AppOptions = AppOptions; - - /***/ - }), - /* 2 */ - /***/ ((__unused_webpack_module, exports) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.viewerCompatibilityParams = void 0; - var compatibilityParams = Object.create(null); - { - var userAgent = typeof navigator !== "undefined" && navigator.userAgent || ""; - var platform = typeof navigator !== "undefined" && navigator.platform || ""; - var maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1; - var isAndroid = /Android/.test(userAgent); - var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; - var isIOSChrome = /CriOS/.test(userAgent); - - (function checkOnBlobSupport() { - if (isIOSChrome) { - compatibilityParams.disableCreateObjectURL = true; - } - })(); - - (function checkCanvasSizeLimitation() { - if (isIOS || isAndroid) { - compatibilityParams.maxCanvasPixels = 5242880; - } - })(); - } - var viewerCompatibilityParams = Object.freeze(compatibilityParams); - exports.viewerCompatibilityParams = viewerCompatibilityParams; - - /***/ - }), - /* 3 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _ui_utils = __webpack_require__(6); - - var _app_options = __webpack_require__(1); - - var _pdfjsLib = __webpack_require__(7); - - var _pdf_cursor_tools = __webpack_require__(8); - - var _pdf_rendering_queue = __webpack_require__(10); - - var _overlay_manager = __webpack_require__(11); - - var _password_prompt = __webpack_require__(12); - - var _pdf_attachment_viewer = __webpack_require__(13); - - var _pdf_document_properties = __webpack_require__(15); - - var _pdf_find_bar = __webpack_require__(16); - - var _pdf_find_controller = __webpack_require__(17); - - var _pdf_history = __webpack_require__(19); - - var _pdf_layer_viewer = __webpack_require__(20); - - var _pdf_link_service = __webpack_require__(21); - - var _pdf_outline_viewer = __webpack_require__(22); - - var _pdf_presentation_mode = __webpack_require__(23); - - var _pdf_scripting_manager = __webpack_require__(24); - - var _pdf_sidebar = __webpack_require__(25); - - var _pdf_sidebar_resizer = __webpack_require__(26); - - var _pdf_thumbnail_viewer = __webpack_require__(27); - - var _pdf_viewer = __webpack_require__(29); - - var _secondary_toolbar = __webpack_require__(36); - - var _toolbar = __webpack_require__(38); - - var _viewer_compatibility = __webpack_require__(2); - - var _view_history = __webpack_require__(39); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys.push.apply(keys, symbols); - } - return keys; - } - - function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - if (i % 2) { - ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - return target; - } - - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e2) { - throw _e2; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var DEFAULT_SCALE_DELTA = 1.1; - var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; - var FORCE_PAGES_LOADED_TIMEOUT = 10000; - var WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; - var ENABLE_PERMISSIONS_CLASS = "enablePermissions"; - var ViewOnLoad = { - UNKNOWN: -1, - PREVIOUS: 0, - INITIAL: 1 - }; - var ViewerCssTheme = { - AUTOMATIC: 0, - LIGHT: 1, - DARK: 2 - }; - var KNOWN_VERSIONS = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0", "2.1", "2.2", "2.3"]; - var KNOWN_GENERATORS = ["acrobat distiller", "acrobat pdfwriter", "adobe livecycle", "adobe pdf library", "adobe photoshop", "ghostscript", "tcpdf", "cairo", "dvipdfm", "dvips", "pdftex", "pdfkit", "itext", "prince", "quarkxpress", "mac os x", "microsoft", "openoffice", "oracle", "luradocument", "pdf-xchange", "antenna house", "aspose.cells", "fpdf"]; - - var DefaultExternalServices = /*#__PURE__*/function () { - function DefaultExternalServices() { - _classCallCheck(this, DefaultExternalServices); - - throw new Error("Cannot initialize DefaultExternalServices."); - } - - _createClass(DefaultExternalServices, null, [{ - key: "updateFindControlState", - value: function updateFindControlState(data) { - } - }, { - key: "updateFindMatchesCount", - value: function updateFindMatchesCount(data) { - } - }, { - key: "initPassiveLoading", - value: function initPassiveLoading(callbacks) { - } - }, { - key: "fallback", - value: function () { - var _fallback = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(data) { - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - function fallback(_x) { - return _fallback.apply(this, arguments); - } - - return fallback; - }() - }, { - key: "reportTelemetry", - value: function reportTelemetry(data) { - } - }, { - key: "createDownloadManager", - value: function createDownloadManager(options) { - throw new Error("Not implemented: createDownloadManager"); - } - }, { - key: "createPreferences", - value: function createPreferences() { - throw new Error("Not implemented: createPreferences"); - } - }, { - key: "createL10n", - value: function createL10n(options) { - throw new Error("Not implemented: createL10n"); - } - }, { - key: "createScripting", - value: function createScripting(options) { - throw new Error("Not implemented: createScripting"); - } - }, { - key: "supportsIntegratedFind", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false); - } - }, { - key: "supportsDocumentFonts", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "supportsDocumentFonts", true); - } - }, { - key: "supportedMouseWheelZoomModifierKeys", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "supportedMouseWheelZoomModifierKeys", { - ctrlKey: true, - metaKey: true - }); - } - }, { - key: "isInAutomation", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "isInAutomation", false); - } - }]); - - return DefaultExternalServices; - }(); - - exports.DefaultExternalServices = DefaultExternalServices; - var PDFViewerApplication = { - initialBookmark: document.location.hash.substring(1), - _initializedCapability: (0, _pdfjsLib.createPromiseCapability)(), - fellback: false, - appConfig: null, - pdfDocument: null, - pdfLoadingTask: null, - printService: null, - pdfViewer: null, - pdfThumbnailViewer: null, - pdfRenderingQueue: null, - pdfPresentationMode: null, - pdfDocumentProperties: null, - pdfLinkService: null, - pdfHistory: null, - pdfSidebar: null, - pdfSidebarResizer: null, - pdfOutlineViewer: null, - pdfAttachmentViewer: null, - pdfLayerViewer: null, - pdfCursorTools: null, - pdfScriptingManager: null, - store: null, - downloadManager: null, - overlayManager: null, - preferences: null, - toolbar: null, - secondaryToolbar: null, - eventBus: null, - l10n: null, - isInitialViewSet: false, - downloadComplete: false, - isViewerEmbedded: window.parent !== window, - url: "", - baseUrl: "", - externalServices: DefaultExternalServices, - _boundEvents: Object.create(null), - documentInfo: null, - metadata: null, - _contentDispositionFilename: null, - _contentLength: null, - triggerDelayedFallback: null, - _saveInProgress: false, - _wheelUnusedTicks: 0, - _idleCallbacks: new Set(), - initialize: function initialize(appConfig) { - var _this = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var appContainer; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _this.preferences = _this.externalServices.createPreferences(); - _this.appConfig = appConfig; - _context2.next = 4; - return _this._readPreferences(); - - case 4: - _context2.next = 6; - return _this._parseHashParameters(); - - case 6: - _this._forceCssTheme(); - - _context2.next = 9; - return _this._initializeL10n(); - - case 9: - if (_this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdfjsLib.LinkTarget.NONE) { - _app_options.AppOptions.set("externalLinkTarget", _pdfjsLib.LinkTarget.TOP); - } - - _context2.next = 12; - return _this._initializeViewerComponents(); - - case 12: - _this.bindEvents(); - - _this.bindWindowEvents(); - - appContainer = appConfig.appContainer || document.documentElement; - - _this.l10n.translate(appContainer).then(function () { - _this.eventBus.dispatch("localized", { - source: _this - }); - }); - - _this._initializedCapability.resolve(); - - case 17: - case "end": - return _context2.stop(); - } - } - }, _callee2); - }))(); - }, - _readPreferences: function _readPreferences() { - var _this2 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - if (!_app_options.AppOptions.get("disablePreferences")) { - _context3.next = 2; - break; - } - - return _context3.abrupt("return"); - - case 2: - _context3.prev = 2; - _context3.t0 = _app_options.AppOptions; - _context3.next = 6; - return _this2.preferences.getAll(); - - case 6: - _context3.t1 = _context3.sent; - - _context3.t0.setAll.call(_context3.t0, _context3.t1); - - _context3.next = 13; - break; - - case 10: - _context3.prev = 10; - _context3.t2 = _context3["catch"](2); - console.error("_readPreferences: \"".concat(_context3.t2 === null || _context3.t2 === void 0 ? void 0 : _context3.t2.message, "\".")); - - case 13: - case "end": - return _context3.stop(); - } - } - }, _callee3, null, [[2, 10]]); - }))(); - }, - _parseHashParameters: function _parseHashParameters() { - var _this3 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4() { - var hash, hashParams, waitOn, viewer, enabled; - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - if (_app_options.AppOptions.get("pdfBugEnabled")) { - _context4.next = 2; - break; - } - - return _context4.abrupt("return", undefined); - - case 2: - hash = document.location.hash.substring(1); - - if (hash) { - _context4.next = 5; - break; - } - - return _context4.abrupt("return", undefined); - - case 5: - hashParams = (0, _ui_utils.parseQueryString)(hash), waitOn = []; - - if ("disableworker" in hashParams && hashParams.disableworker === "true") { - waitOn.push(loadFakeWorker()); - } - - if ("disablerange" in hashParams) { - _app_options.AppOptions.set("disableRange", hashParams.disablerange === "true"); - } - - if ("disablestream" in hashParams) { - _app_options.AppOptions.set("disableStream", hashParams.disablestream === "true"); - } - - if ("disableautofetch" in hashParams) { - _app_options.AppOptions.set("disableAutoFetch", hashParams.disableautofetch === "true"); - } - - if ("disablefontface" in hashParams) { - _app_options.AppOptions.set("disableFontFace", hashParams.disablefontface === "true"); - } - - if ("disablehistory" in hashParams) { - _app_options.AppOptions.set("disableHistory", hashParams.disablehistory === "true"); - } - - if ("webgl" in hashParams) { - _app_options.AppOptions.set("enableWebGL", hashParams.webgl === "true"); - } - - if ("verbosity" in hashParams) { - _app_options.AppOptions.set("verbosity", hashParams.verbosity | 0); - } - - if (!("textlayer" in hashParams)) { - _context4.next = 23; - break; - } - - _context4.t0 = hashParams.textlayer; - _context4.next = _context4.t0 === "off" ? 18 : _context4.t0 === "visible" ? 20 : _context4.t0 === "shadow" ? 20 : _context4.t0 === "hover" ? 20 : 23; - break; - - case 18: - _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE); - - return _context4.abrupt("break", 23); - - case 20: - viewer = _this3.appConfig.viewerContainer; - viewer.classList.add("textLayer-" + hashParams.textlayer); - return _context4.abrupt("break", 23); - - case 23: - if ("pdfbug" in hashParams) { - _app_options.AppOptions.set("pdfBug", true); - - _app_options.AppOptions.set("fontExtraProperties", true); - - enabled = hashParams.pdfbug.split(","); - waitOn.push(loadAndEnablePDFBug(enabled)); - } - - if ("locale" in hashParams) { - _app_options.AppOptions.set("locale", hashParams.locale); - } - - if (!(waitOn.length === 0)) { - _context4.next = 27; - break; - } - - return _context4.abrupt("return", undefined); - - case 27: - return _context4.abrupt("return", Promise.all(waitOn)["catch"](function (reason) { - console.error("_parseHashParameters: \"".concat(reason.message, "\".")); - })); - - case 28: - case "end": - return _context4.stop(); - } - } - }, _callee4); - }))(); - }, - _initializeL10n: function _initializeL10n() { - var _this4 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee5() { - var dir; - return _regenerator["default"].wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - _this4.l10n = _this4.externalServices.createL10n({ - locale: _app_options.AppOptions.get("locale") - }); - _context5.next = 3; - return _this4.l10n.getDirection(); - - case 3: - dir = _context5.sent; - document.getElementsByTagName("html")[0].dir = dir; - - case 5: - case "end": - return _context5.stop(); - } - } - }, _callee5); - }))(); - }, - _forceCssTheme: function _forceCssTheme() { - var cssTheme = _app_options.AppOptions.get("viewerCssTheme"); - - if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) { - return; - } - - try { - var styleSheet = document.styleSheets[0]; - var cssRules = (styleSheet === null || styleSheet === void 0 ? void 0 : styleSheet.cssRules) || []; - - for (var i = 0, ii = cssRules.length; i < ii; i++) { - var _rule$media; - - var rule = cssRules[i]; - - if (rule instanceof CSSMediaRule && ((_rule$media = rule.media) === null || _rule$media === void 0 ? void 0 : _rule$media[0]) === "(prefers-color-scheme: dark)") { - if (cssTheme === ViewerCssTheme.LIGHT) { - styleSheet.deleteRule(i); - return; - } - - var darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText); - - if (darkRules !== null && darkRules !== void 0 && darkRules[1]) { - styleSheet.deleteRule(i); - styleSheet.insertRule(darkRules[1], i); - } - - return; - } - } - } catch (reason) { - console.error("_forceCssTheme: \"".concat(reason === null || reason === void 0 ? void 0 : reason.message, "\".")); - } - }, - _initializeViewerComponents: function _initializeViewerComponents() { - var _this5 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee6() { - var appConfig, eventBus, pdfRenderingQueue, pdfLinkService, downloadManager, findController, - pdfScriptingManager, container, viewer; - return _regenerator["default"].wrap(function _callee6$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - appConfig = _this5.appConfig; - eventBus = appConfig.eventBus || new _ui_utils.EventBus({ - isInAutomation: _this5.externalServices.isInAutomation - }); - _this5.eventBus = eventBus; - _this5.overlayManager = new _overlay_manager.OverlayManager(); - pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); - pdfRenderingQueue.onIdle = _this5._cleanup.bind(_this5); - _this5.pdfRenderingQueue = pdfRenderingQueue; - pdfLinkService = new _pdf_link_service.PDFLinkService({ - eventBus: eventBus, - externalLinkTarget: _app_options.AppOptions.get("externalLinkTarget"), - externalLinkRel: _app_options.AppOptions.get("externalLinkRel"), - ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom") - }); - _this5.pdfLinkService = pdfLinkService; - downloadManager = _this5.externalServices.createDownloadManager(); - _this5.downloadManager = downloadManager; - findController = new _pdf_find_controller.PDFFindController({ - linkService: pdfLinkService, - eventBus: eventBus - }); - _this5.findController = findController; - pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({ - eventBus: eventBus, - sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"), - scriptingFactory: _this5.externalServices, - docPropertiesLookup: _this5._scriptingDocProperties.bind(_this5) - }); - _this5.pdfScriptingManager = pdfScriptingManager; - container = appConfig.mainContainer; - viewer = appConfig.viewerContainer; - _this5.pdfViewer = new _pdf_viewer.PDFViewer({ - container: container, - viewer: viewer, - eventBus: eventBus, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService, - downloadManager: downloadManager, - findController: findController, - scriptingManager: pdfScriptingManager, - renderer: _app_options.AppOptions.get("renderer"), - enableWebGL: _app_options.AppOptions.get("enableWebGL"), - l10n: _this5.l10n, - textLayerMode: _app_options.AppOptions.get("textLayerMode"), - imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"), - renderInteractiveForms: _app_options.AppOptions.get("renderInteractiveForms"), - enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"), - useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"), - maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"), - enableScripting: _app_options.AppOptions.get("enableScripting") - }); - pdfRenderingQueue.setViewer(_this5.pdfViewer); - pdfLinkService.setViewer(_this5.pdfViewer); - pdfScriptingManager.setViewer(_this5.pdfViewer); - _this5.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({ - container: appConfig.sidebar.thumbnailView, - eventBus: eventBus, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService, - l10n: _this5.l10n - }); - pdfRenderingQueue.setThumbnailViewer(_this5.pdfThumbnailViewer); - _this5.pdfHistory = new _pdf_history.PDFHistory({ - linkService: pdfLinkService, - eventBus: eventBus - }); - pdfLinkService.setHistory(_this5.pdfHistory); - - if (!_this5.supportsIntegratedFind) { - _this5.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, _this5.l10n); - } - - _this5.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, _this5.overlayManager, eventBus, _this5.l10n); - _this5.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({ - container: container, - eventBus: eventBus, - cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad") - }); - _this5.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, _this5.l10n); - _this5.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus); - - if (_this5.supportsFullscreen) { - _this5.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({ - container: container, - pdfViewer: _this5.pdfViewer, - eventBus: eventBus - }); - } - - _this5.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, _this5.overlayManager, _this5.l10n, _this5.isViewerEmbedded); - _this5.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({ - container: appConfig.sidebar.outlineView, - eventBus: eventBus, - linkService: pdfLinkService - }); - _this5.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({ - container: appConfig.sidebar.attachmentsView, - eventBus: eventBus, - downloadManager: downloadManager - }); - _this5.pdfLayerViewer = new _pdf_layer_viewer.PDFLayerViewer({ - container: appConfig.sidebar.layersView, - eventBus: eventBus, - l10n: _this5.l10n - }); - _this5.pdfSidebar = new _pdf_sidebar.PDFSidebar({ - elements: appConfig.sidebar, - pdfViewer: _this5.pdfViewer, - pdfThumbnailViewer: _this5.pdfThumbnailViewer, - eventBus: eventBus, - l10n: _this5.l10n - }); - _this5.pdfSidebar.onToggled = _this5.forceRendering.bind(_this5); - _this5.pdfSidebarResizer = new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, _this5.l10n); - - case 38: - case "end": - return _context6.stop(); - } - } - }, _callee6); - }))(); - }, - run: function run(config) { - this.initialize(config).then(webViewerInitialized); - }, - - get initialized() { - return this._initializedCapability.settled; - }, - - get initializedPromise() { - return this._initializedCapability.promise; - }, - - zoomIn: function zoomIn(ticks) { - if (this.pdfViewer.isInPresentationMode) { - return; - } - - var newScale = this.pdfViewer.currentScale; - - do { - newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.ceil(newScale * 10) / 10; - newScale = Math.min(_ui_utils.MAX_SCALE, newScale); - } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE); - - this.pdfViewer.currentScaleValue = newScale; - }, - zoomOut: function zoomOut(ticks) { - if (this.pdfViewer.isInPresentationMode) { - return; - } - - var newScale = this.pdfViewer.currentScale; - - do { - newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.floor(newScale * 10) / 10; - newScale = Math.max(_ui_utils.MIN_SCALE, newScale); - } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE); - - this.pdfViewer.currentScaleValue = newScale; - }, - zoomReset: function zoomReset() { - if (this.pdfViewer.isInPresentationMode) { - return; - } - - this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - }, - - get pagesCount() { - return this.pdfDocument ? this.pdfDocument.numPages : 0; - }, - - get page() { - return this.pdfViewer.currentPageNumber; - }, - - set page(val) { - this.pdfViewer.currentPageNumber = val; - }, - - get supportsPrinting() { - return PDFPrintServiceFactory.instance.supportsPrinting; - }, - - get supportsFullscreen() { - var doc = document.documentElement; - var support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen); - - if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false) { - support = false; - } - - return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", support); - }, - - get supportsIntegratedFind() { - return this.externalServices.supportsIntegratedFind; - }, - - get supportsDocumentFonts() { - return this.externalServices.supportsDocumentFonts; - }, - - get loadingBar() { - var bar = new _ui_utils.ProgressBar("#loadingBar"); - return (0, _pdfjsLib.shadow)(this, "loadingBar", bar); - }, - - get supportedMouseWheelZoomModifierKeys() { - return this.externalServices.supportedMouseWheelZoomModifierKeys; - }, - - initPassiveLoading: function initPassiveLoading() { - throw new Error("Not implemented: initPassiveLoading"); - }, - setTitleUsingUrl: function setTitleUsingUrl() { - var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; - this.url = url; - this.baseUrl = url.split("#")[0]; - var title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, ""); - - if (!title) { - try { - title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url; - } catch (ex) { - title = url; - } - } - - this.setTitle(title); - }, - setTitle: function setTitle(title) { - if (this.isViewerEmbedded) { - return; - } - - document.title = title; - }, - - get _docFilename() { - return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url); - }, - - _cancelIdleCallbacks: function _cancelIdleCallbacks() { - if (!this._idleCallbacks.size) { - return; - } - - var _iterator = _createForOfIteratorHelper(this._idleCallbacks), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var callback = _step.value; - window.cancelIdleCallback(callback); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - this._idleCallbacks.clear(); - }, - close: function close() { - var _this6 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee7() { - var _this6$pdfDocument; - - var container, promises; - return _regenerator["default"].wrap(function _callee7$(_context7) { - while (1) { - switch (_context7.prev = _context7.next) { - case 0: - _this6._unblockDocumentLoadEvent(); - - container = _this6.appConfig.errorWrapper.container; - container.hidden = true; - - if (_this6.pdfLoadingTask) { - _context7.next = 5; - break; - } - - return _context7.abrupt("return"); - - case 5: - if (!(((_this6$pdfDocument = _this6.pdfDocument) === null || _this6$pdfDocument === void 0 ? void 0 : _this6$pdfDocument.annotationStorage.size) > 0 && _this6._annotationStorageModified)) { - _context7.next = 13; - break; - } - - _context7.prev = 6; - _context7.next = 9; - return _this6.save({ - sourceEventType: "save" - }); - - case 9: - _context7.next = 13; - break; - - case 11: - _context7.prev = 11; - _context7.t0 = _context7["catch"](6); - - case 13: - promises = []; - promises.push(_this6.pdfLoadingTask.destroy()); - _this6.pdfLoadingTask = null; - - if (_this6.pdfDocument) { - _this6.pdfDocument = null; - - _this6.pdfThumbnailViewer.setDocument(null); - - _this6.pdfViewer.setDocument(null); - - _this6.pdfLinkService.setDocument(null); - - _this6.pdfDocumentProperties.setDocument(null); - } - - webViewerResetPermissions(); - _this6.store = null; - _this6.isInitialViewSet = false; - _this6.downloadComplete = false; - _this6.url = ""; - _this6.baseUrl = ""; - _this6.documentInfo = null; - _this6.metadata = null; - _this6._contentDispositionFilename = null; - _this6._contentLength = null; - _this6.triggerDelayedFallback = null; - _this6._saveInProgress = false; - - _this6._cancelIdleCallbacks(); - - promises.push(_this6.pdfScriptingManager.destroyPromise); - - _this6.pdfSidebar.reset(); - - _this6.pdfOutlineViewer.reset(); - - _this6.pdfAttachmentViewer.reset(); - - _this6.pdfLayerViewer.reset(); - - if (_this6.pdfHistory) { - _this6.pdfHistory.reset(); - } - - if (_this6.findBar) { - _this6.findBar.reset(); - } - - _this6.toolbar.reset(); - - _this6.secondaryToolbar.reset(); - - if (typeof PDFBug !== "undefined") { - PDFBug.cleanup(); - } - - _context7.next = 42; - return Promise.all(promises); - - case 42: - case "end": - return _context7.stop(); - } - } - }, _callee7, null, [[6, 11]]); - }))(); - }, - open: function open(file, args) { - var _this7 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee8() { - var workerParameters, key, parameters, apiParameters, _key, value, _key2, loadingTask; - - return _regenerator["default"].wrap(function _callee8$(_context8) { - while (1) { - switch (_context8.prev = _context8.next) { - case 0: - if (!_this7.pdfLoadingTask) { - _context8.next = 3; - break; - } - - _context8.next = 3; - return _this7.close(); - - case 3: - workerParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER); - - for (key in workerParameters) { - _pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key]; - } - - parameters = Object.create(null); - - if (typeof file === "string") { - _this7.setTitleUsingUrl(file); - - parameters.url = file; - } else if (file && "byteLength" in file) { - parameters.data = file; - } else if (file.url && file.originalUrl) { - _this7.setTitleUsingUrl(file.originalUrl); - - parameters.url = file.url; - } - - apiParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.API); - - for (_key in apiParameters) { - value = apiParameters[_key]; - - if (_key === "docBaseUrl" && !value) { - } - - parameters[_key] = value; - } - - if (args) { - for (_key2 in args) { - parameters[_key2] = args[_key2]; - } - } - - loadingTask = (0, _pdfjsLib.getDocument)(parameters); - _this7.pdfLoadingTask = loadingTask; - - loadingTask.onPassword = function (updateCallback, reason) { - _this7.pdfLinkService.externalLinkEnabled = false; - - _this7.passwordPrompt.setUpdateCallback(updateCallback, reason); - - _this7.passwordPrompt.open(); - }; - - loadingTask.onProgress = function (_ref) { - var loaded = _ref.loaded, - total = _ref.total; - - _this7.progress(loaded / total); - }; - - loadingTask.onUnsupportedFeature = _this7.fallback.bind(_this7); - return _context8.abrupt("return", loadingTask.promise.then(function (pdfDocument) { - _this7.load(pdfDocument); - }, function (exception) { - if (loadingTask !== _this7.pdfLoadingTask) { - return undefined; - } - - var key = "loading_error"; - - if (exception instanceof _pdfjsLib.InvalidPDFException) { - key = "invalid_file_error"; - } else if (exception instanceof _pdfjsLib.MissingPDFException) { - key = "missing_file_error"; - } else if (exception instanceof _pdfjsLib.UnexpectedResponseException) { - key = "unexpected_response_error"; - } - - return _this7.l10n.get(key).then(function (msg) { - _this7._documentError(msg, { - message: exception === null || exception === void 0 ? void 0 : exception.message - }); - - throw exception; - }); - })); - - case 16: - case "end": - return _context8.stop(); - } - } - }, _callee8); - }))(); - }, - _ensureDownloadComplete: function _ensureDownloadComplete() { - if (this.pdfDocument && this.downloadComplete) { - return; - } - - throw new Error("PDF document not downloaded."); - }, - download: function download() { - var _arguments = arguments, - _this8 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee9() { - var _ref2, _ref2$sourceEventType, sourceEventType, url, filename, data, blob; - - return _regenerator["default"].wrap(function _callee9$(_context9) { - while (1) { - switch (_context9.prev = _context9.next) { - case 0: - _ref2 = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {}, _ref2$sourceEventType = _ref2.sourceEventType, sourceEventType = _ref2$sourceEventType === void 0 ? "download" : _ref2$sourceEventType; - url = _this8.baseUrl, filename = _this8._docFilename; - _context9.prev = 2; - - _this8._ensureDownloadComplete(); - - _context9.next = 6; - return _this8.pdfDocument.getData(); - - case 6: - data = _context9.sent; - blob = new Blob([data], { - type: "application/pdf" - }); - _context9.next = 10; - return _this8.downloadManager.download(blob, url, filename, sourceEventType); - - case 10: - _context9.next = 16; - break; - - case 12: - _context9.prev = 12; - _context9.t0 = _context9["catch"](2); - _context9.next = 16; - return _this8.downloadManager.downloadUrl(url, filename); - - case 16: - case "end": - return _context9.stop(); - } - } - }, _callee9, null, [[2, 12]]); - }))(); - }, - save: function save() { - var _arguments2 = arguments, - _this9 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee10() { - var _ref3, _ref3$sourceEventType, sourceEventType, url, filename, data, blob; - - return _regenerator["default"].wrap(function _callee10$(_context10) { - while (1) { - switch (_context10.prev = _context10.next) { - case 0: - _ref3 = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {}, _ref3$sourceEventType = _ref3.sourceEventType, sourceEventType = _ref3$sourceEventType === void 0 ? "download" : _ref3$sourceEventType; - - if (!_this9._saveInProgress) { - _context10.next = 3; - break; - } - - return _context10.abrupt("return"); - - case 3: - _this9._saveInProgress = true; - _context10.next = 6; - return _this9.pdfScriptingManager.dispatchWillSave(); - - case 6: - url = _this9.baseUrl, filename = _this9._docFilename; - _context10.prev = 7; - - _this9._ensureDownloadComplete(); - - _context10.next = 11; - return _this9.pdfDocument.saveDocument(_this9.pdfDocument.annotationStorage); - - case 11: - data = _context10.sent; - blob = new Blob([data], { - type: "application/pdf" - }); - _context10.next = 15; - return _this9.downloadManager.download(blob, url, filename, sourceEventType); - - case 15: - _context10.next = 21; - break; - - case 17: - _context10.prev = 17; - _context10.t0 = _context10["catch"](7); - _context10.next = 21; - return _this9.download({ - sourceEventType: sourceEventType - }); - - case 21: - _context10.prev = 21; - _context10.next = 24; - return _this9.pdfScriptingManager.dispatchDidSave(); - - case 24: - _this9._saveInProgress = false; - return _context10.finish(21); - - case 26: - case "end": - return _context10.stop(); - } - } - }, _callee10, null, [[7, 17, 21, 26]]); - }))(); - }, - downloadOrSave: function downloadOrSave(options) { - var _this$pdfDocument; - - if (((_this$pdfDocument = this.pdfDocument) === null || _this$pdfDocument === void 0 ? void 0 : _this$pdfDocument.annotationStorage.size) > 0) { - this.save(options); - } else { - this.download(options); - } - }, - _delayedFallback: function _delayedFallback(featureId) { - var _this10 = this; - - this.externalServices.reportTelemetry({ - type: "unsupportedFeature", - featureId: featureId - }); - - if (!this.triggerDelayedFallback) { - this.triggerDelayedFallback = function () { - _this10.fallback(featureId); - - _this10.triggerDelayedFallback = null; - }; - } - }, - fallback: function fallback(featureId) { - var _this11 = this; - - this.externalServices.reportTelemetry({ - type: "unsupportedFeature", - featureId: featureId - }); - - switch (featureId) { - case _pdfjsLib.UNSUPPORTED_FEATURES.errorFontLoadNative: - case _pdfjsLib.UNSUPPORTED_FEATURES.errorFontMissing: - return; - } - - if (this.fellback) { - return; - } - - this.fellback = true; - this.externalServices.fallback({ - featureId: featureId, - url: this.baseUrl - }).then(function (download) { - if (!download) { - return; - } - - _this11.download({ - sourceEventType: "download" - }); - }); - }, - _documentError: function _documentError(message) { - var moreInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - this._unblockDocumentLoadEvent(); - - this._otherError(message, moreInfo); - }, - _otherError: function _otherError(message) { - var moreInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var moreInfoText = [this.l10n.get("error_version_info", { - version: _pdfjsLib.version || "?", - build: _pdfjsLib.build || "?" - })]; - - if (moreInfo) { - moreInfoText.push(this.l10n.get("error_message", { - message: moreInfo.message - })); - - if (moreInfo.stack) { - moreInfoText.push(this.l10n.get("error_stack", { - stack: moreInfo.stack - })); - } else { - if (moreInfo.filename) { - moreInfoText.push(this.l10n.get("error_file", { - file: moreInfo.filename - })); - } - - if (moreInfo.lineNumber) { - moreInfoText.push(this.l10n.get("error_line", { - line: moreInfo.lineNumber - })); - } - } - } - - var errorWrapperConfig = this.appConfig.errorWrapper; - var errorWrapper = errorWrapperConfig.container; - errorWrapper.hidden = false; - var errorMessage = errorWrapperConfig.errorMessage; - errorMessage.textContent = message; - var closeButton = errorWrapperConfig.closeButton; - - closeButton.onclick = function () { - errorWrapper.hidden = true; - }; - - var errorMoreInfo = errorWrapperConfig.errorMoreInfo; - var moreInfoButton = errorWrapperConfig.moreInfoButton; - var lessInfoButton = errorWrapperConfig.lessInfoButton; - - moreInfoButton.onclick = function () { - errorMoreInfo.hidden = false; - moreInfoButton.hidden = true; - lessInfoButton.hidden = false; - errorMoreInfo.style.height = errorMoreInfo.scrollHeight + "px"; - }; - - lessInfoButton.onclick = function () { - errorMoreInfo.hidden = true; - moreInfoButton.hidden = false; - lessInfoButton.hidden = true; - }; - - moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; - lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; - closeButton.oncontextmenu = _ui_utils.noContextMenuHandler; - moreInfoButton.hidden = false; - lessInfoButton.hidden = true; - Promise.all(moreInfoText).then(function (parts) { - errorMoreInfo.value = parts.join("\n"); - }); - }, - progress: function progress(level) { - var _this12 = this; - - if (this.downloadComplete) { - return; - } - - var percent = Math.round(level * 100); - - if (percent > this.loadingBar.percent || isNaN(percent)) { - this.loadingBar.percent = percent; - var disableAutoFetch = this.pdfDocument ? this.pdfDocument.loadingParams.disableAutoFetch : _app_options.AppOptions.get("disableAutoFetch"); - - if (disableAutoFetch && percent) { - if (this.disableAutoFetchLoadingBarTimeout) { - clearTimeout(this.disableAutoFetchLoadingBarTimeout); - this.disableAutoFetchLoadingBarTimeout = null; - } - - this.loadingBar.show(); - this.disableAutoFetchLoadingBarTimeout = setTimeout(function () { - _this12.loadingBar.hide(); - - _this12.disableAutoFetchLoadingBarTimeout = null; - }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT); - } - } - }, - load: function load(pdfDocument) { - var _this13 = this; - - this.pdfDocument = pdfDocument; - pdfDocument.getDownloadInfo().then(function (_ref4) { - var length = _ref4.length; - _this13._contentLength = length; - _this13.downloadComplete = true; - - _this13.loadingBar.hide(); - - firstPagePromise.then(function () { - _this13.eventBus.dispatch("documentloaded", { - source: _this13 - }); - }); - }); - var pageLayoutPromise = pdfDocument.getPageLayout()["catch"](function () { - }); - var pageModePromise = pdfDocument.getPageMode()["catch"](function () { - }); - var openActionPromise = pdfDocument.getOpenAction()["catch"](function () { - }); - this.toolbar.setPagesCount(pdfDocument.numPages, false); - this.secondaryToolbar.setPagesCount(pdfDocument.numPages); - var baseDocumentUrl; - baseDocumentUrl = null; - this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); - this.pdfDocumentProperties.setDocument(pdfDocument, this.url); - var pdfViewer = this.pdfViewer; - pdfViewer.setDocument(pdfDocument); - var firstPagePromise = pdfViewer.firstPagePromise, - onePageRendered = pdfViewer.onePageRendered, - pagesPromise = pdfViewer.pagesPromise; - var pdfThumbnailViewer = this.pdfThumbnailViewer; - pdfThumbnailViewer.setDocument(pdfDocument); - var storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprint)).getMultiple({ - page: null, - zoom: _ui_utils.DEFAULT_SCALE_VALUE, - scrollLeft: "0", - scrollTop: "0", - rotation: null, - sidebarView: _ui_utils.SidebarView.UNKNOWN, - scrollMode: _ui_utils.ScrollMode.UNKNOWN, - spreadMode: _ui_utils.SpreadMode.UNKNOWN - })["catch"](function () { - return Object.create(null); - }); - firstPagePromise.then(function (pdfPage) { - _this13.loadingBar.setWidth(_this13.appConfig.viewerContainer); - - _this13._initializeAnnotationStorageCallbacks(pdfDocument); - - Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then( /*#__PURE__*/function () { - var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee11(_ref5) { - var _ref7, timeStamp, stored, pageLayout, pageMode, openAction, viewOnLoad, - initialBookmark, zoom, hash, rotation, sidebarView, scrollMode, spreadMode; - - return _regenerator["default"].wrap(function _callee11$(_context11) { - while (1) { - switch (_context11.prev = _context11.next) { - case 0: - _ref7 = _slicedToArray(_ref5, 5), timeStamp = _ref7[0], stored = _ref7[1], pageLayout = _ref7[2], pageMode = _ref7[3], openAction = _ref7[4]; - viewOnLoad = _app_options.AppOptions.get("viewOnLoad"); - - _this13._initializePdfHistory({ - fingerprint: pdfDocument.fingerprint, - viewOnLoad: viewOnLoad, - initialDest: openAction === null || openAction === void 0 ? void 0 : openAction.dest - }); - - initialBookmark = _this13.initialBookmark; - zoom = _app_options.AppOptions.get("defaultZoomValue"); - hash = zoom ? "zoom=".concat(zoom) : null; - rotation = null; - sidebarView = _app_options.AppOptions.get("sidebarViewOnLoad"); - scrollMode = _app_options.AppOptions.get("scrollModeOnLoad"); - spreadMode = _app_options.AppOptions.get("spreadModeOnLoad"); - - if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) { - hash = "page=".concat(stored.page, "&zoom=").concat(zoom || stored.zoom, ",") + "".concat(stored.scrollLeft, ",").concat(stored.scrollTop); - rotation = parseInt(stored.rotation, 10); - - if (sidebarView === _ui_utils.SidebarView.UNKNOWN) { - sidebarView = stored.sidebarView | 0; - } - - if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) { - scrollMode = stored.scrollMode | 0; - } - - if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) { - spreadMode = stored.spreadMode | 0; - } - } - - if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) { - sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode); - } - - if (pageLayout && spreadMode === _ui_utils.SpreadMode.UNKNOWN) { - spreadMode = (0, _ui_utils.apiPageLayoutToSpreadMode)(pageLayout); - } - - _this13.setInitialView(hash, { - rotation: rotation, - sidebarView: sidebarView, - scrollMode: scrollMode, - spreadMode: spreadMode - }); - - _this13.eventBus.dispatch("documentinit", { - source: _this13 - }); - - if (!_this13.isViewerEmbedded) { - pdfViewer.focus(); - } - - _this13._initializePermissions(pdfDocument); - - _context11.next = 19; - return Promise.race([pagesPromise, new Promise(function (resolve) { - setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT); - })]); - - case 19: - if (!(!initialBookmark && !hash)) { - _context11.next = 21; - break; - } - - return _context11.abrupt("return"); - - case 21: - if (!pdfViewer.hasEqualPageSizes) { - _context11.next = 23; - break; - } - - return _context11.abrupt("return"); - - case 23: - _this13.initialBookmark = initialBookmark; - pdfViewer.currentScaleValue = pdfViewer.currentScaleValue; - - _this13.setInitialView(hash); - - case 26: - case "end": - return _context11.stop(); - } - } - }, _callee11); - })); - - return function (_x2) { - return _ref6.apply(this, arguments); - }; - }())["catch"](function () { - _this13.setInitialView(); - }).then(function () { - pdfViewer.update(); - }); - }); - pagesPromise.then(function () { - _this13._unblockDocumentLoadEvent(); - - _this13._initializeAutoPrint(pdfDocument, openActionPromise); - }); - onePageRendered.then(function () { - pdfDocument.getOutline().then(function (outline) { - _this13.pdfOutlineViewer.render({ - outline: outline, - pdfDocument: pdfDocument - }); - }); - pdfDocument.getAttachments().then(function (attachments) { - _this13.pdfAttachmentViewer.render({ - attachments: attachments - }); - }); - pdfViewer.optionalContentConfigPromise.then(function (optionalContentConfig) { - _this13.pdfLayerViewer.render({ - optionalContentConfig: optionalContentConfig, - pdfDocument: pdfDocument - }); - }); - - if ("requestIdleCallback" in window) { - var callback = window.requestIdleCallback(function () { - _this13._collectTelemetry(pdfDocument); - - _this13._idleCallbacks["delete"](callback); - }, { - timeout: 1000 - }); - - _this13._idleCallbacks.add(callback); - } - }); - - this._initializePageLabels(pdfDocument); - - this._initializeMetadata(pdfDocument); - }, - _scriptingDocProperties: function _scriptingDocProperties(pdfDocument) { - var _this14 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee12() { - var _this14$metadata, _this14$metadata2; - - return _regenerator["default"].wrap(function _callee12$(_context12) { - while (1) { - switch (_context12.prev = _context12.next) { - case 0: - if (_this14.documentInfo) { - _context12.next = 5; - break; - } - - _context12.next = 3; - return new Promise(function (resolve) { - _this14.eventBus._on("metadataloaded", resolve, { - once: true - }); - }); - - case 3: - if (!(pdfDocument !== _this14.pdfDocument)) { - _context12.next = 5; - break; - } - - return _context12.abrupt("return", null); - - case 5: - if (_this14._contentLength) { - _context12.next = 10; - break; - } - - _context12.next = 8; - return new Promise(function (resolve) { - _this14.eventBus._on("documentloaded", resolve, { - once: true - }); - }); - - case 8: - if (!(pdfDocument !== _this14.pdfDocument)) { - _context12.next = 10; - break; - } - - return _context12.abrupt("return", null); - - case 10: - return _context12.abrupt("return", _objectSpread(_objectSpread({}, _this14.documentInfo), {}, { - baseURL: _this14.baseUrl, - filesize: _this14._contentLength, - filename: _this14._docFilename, - metadata: (_this14$metadata = _this14.metadata) === null || _this14$metadata === void 0 ? void 0 : _this14$metadata.getRaw(), - authors: (_this14$metadata2 = _this14.metadata) === null || _this14$metadata2 === void 0 ? void 0 : _this14$metadata2.get("dc:creator"), - numPages: _this14.pagesCount, - URL: _this14.url - })); - - case 11: - case "end": - return _context12.stop(); - } - } - }, _callee12); - }))(); - }, - _collectTelemetry: function _collectTelemetry(pdfDocument) { - var _this15 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee13() { - var markInfo, tagged; - return _regenerator["default"].wrap(function _callee13$(_context13) { - while (1) { - switch (_context13.prev = _context13.next) { - case 0: - _context13.next = 2; - return _this15.pdfDocument.getMarkInfo(); - - case 2: - markInfo = _context13.sent; - - if (!(pdfDocument !== _this15.pdfDocument)) { - _context13.next = 5; - break; - } - - return _context13.abrupt("return"); - - case 5: - tagged = (markInfo === null || markInfo === void 0 ? void 0 : markInfo.Marked) || false; - - _this15.externalServices.reportTelemetry({ - type: "tagged", - tagged: tagged - }); - - case 7: - case "end": - return _context13.stop(); - } - } - }, _callee13); - }))(); - }, - _initializeAutoPrint: function _initializeAutoPrint(pdfDocument, openActionPromise) { - var _this16 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee14() { - var _yield$Promise$all, _yield$Promise$all2, openAction, javaScript, triggerAutoPrint, - _iterator2, _step2, js; - - return _regenerator["default"].wrap(function _callee14$(_context14) { - while (1) { - switch (_context14.prev = _context14.next) { - case 0: - _context14.next = 2; - return Promise.all([openActionPromise, !_this16.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null]); - - case 2: - _yield$Promise$all = _context14.sent; - _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2); - openAction = _yield$Promise$all2[0]; - javaScript = _yield$Promise$all2[1]; - - if (!(pdfDocument !== _this16.pdfDocument)) { - _context14.next = 8; - break; - } - - return _context14.abrupt("return"); - - case 8: - triggerAutoPrint = false; - - if ((openAction === null || openAction === void 0 ? void 0 : openAction.action) === "Print") { - triggerAutoPrint = true; - } - - if (!javaScript) { - _context14.next = 31; - break; - } - - javaScript.some(function (js) { - if (!js) { - return false; - } - - console.warn("Warning: JavaScript is not supported"); - - _this16._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript); - - return true; - }); - - if (triggerAutoPrint) { - _context14.next = 31; - break; - } - - _iterator2 = _createForOfIteratorHelper(javaScript); - _context14.prev = 14; - - _iterator2.s(); - - case 16: - if ((_step2 = _iterator2.n()).done) { - _context14.next = 23; - break; - } - - js = _step2.value; - - if (!(js && _ui_utils.AutoPrintRegExp.test(js))) { - _context14.next = 21; - break; - } - - triggerAutoPrint = true; - return _context14.abrupt("break", 23); - - case 21: - _context14.next = 16; - break; - - case 23: - _context14.next = 28; - break; - - case 25: - _context14.prev = 25; - _context14.t0 = _context14["catch"](14); - - _iterator2.e(_context14.t0); - - case 28: - _context14.prev = 28; - - _iterator2.f(); - - return _context14.finish(28); - - case 31: - if (triggerAutoPrint) { - _this16.triggerPrinting(); - } - - case 32: - case "end": - return _context14.stop(); - } - } - }, _callee14, null, [[14, 25, 28, 31]]); - }))(); - }, - _initializeMetadata: function _initializeMetadata(pdfDocument) { - var _this17 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee15() { - var _this17$_contentDispo, _this17$_contentLengt; - - var _yield$pdfDocument$ge, info, metadata, contentDispositionFilename, contentLength, pdfTitle, - metadataTitle, versionId, generatorId, producer, formType; - - return _regenerator["default"].wrap(function _callee15$(_context15) { - while (1) { - switch (_context15.prev = _context15.next) { - case 0: - _context15.next = 2; - return pdfDocument.getMetadata(); - - case 2: - _yield$pdfDocument$ge = _context15.sent; - info = _yield$pdfDocument$ge.info; - metadata = _yield$pdfDocument$ge.metadata; - contentDispositionFilename = _yield$pdfDocument$ge.contentDispositionFilename; - contentLength = _yield$pdfDocument$ge.contentLength; - - if (!(pdfDocument !== _this17.pdfDocument)) { - _context15.next = 9; - break; - } - - return _context15.abrupt("return"); - - case 9: - _this17.documentInfo = info; - _this17.metadata = metadata; - (_this17$_contentDispo = _this17._contentDispositionFilename) !== null && _this17$_contentDispo !== void 0 ? _this17$_contentDispo : _this17._contentDispositionFilename = contentDispositionFilename; - (_this17$_contentLengt = _this17._contentLength) !== null && _this17$_contentLengt !== void 0 ? _this17$_contentLengt : _this17._contentLength = contentLength; - console.log("PDF ".concat(pdfDocument.fingerprint, " [").concat(info.PDFFormatVersion, " ") + "".concat((info.Producer || "-").trim(), " / ").concat((info.Creator || "-").trim(), "] ") + "(PDF.js: ".concat(_pdfjsLib.version || "-") + "".concat(_this17.pdfViewer.enableWebGL ? " [WebGL]" : "", ")")); - pdfTitle = info === null || info === void 0 ? void 0 : info.Title; - metadataTitle = metadata === null || metadata === void 0 ? void 0 : metadata.get("dc:title"); - - if (metadataTitle) { - if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) { - pdfTitle = metadataTitle; - } - } - - if (pdfTitle) { - _this17.setTitle("".concat(pdfTitle, " - ").concat(contentDispositionFilename || document.title)); - } else if (contentDispositionFilename) { - _this17.setTitle(contentDispositionFilename); - } - - if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) { - console.warn("Warning: XFA is not supported"); - - _this17._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); - } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !_this17.pdfViewer.renderInteractiveForms) { - console.warn("Warning: Interactive form support is not enabled"); - - _this17._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); - } - - versionId = "other"; - - if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) { - versionId = "v".concat(info.PDFFormatVersion.replace(".", "_")); - } - - generatorId = "other"; - - if (info.Producer) { - producer = info.Producer.toLowerCase(); - KNOWN_GENERATORS.some(function (generator) { - if (!producer.includes(generator)) { - return false; - } - - generatorId = generator.replace(/[ .-]/g, "_"); - return true; - }); - } - - formType = null; - - if (info.IsXFAPresent) { - formType = "xfa"; - } else if (info.IsAcroFormPresent) { - formType = "acroform"; - } - - _this17.externalServices.reportTelemetry({ - type: "documentInfo", - version: versionId, - generator: generatorId, - formType: formType - }); - - _this17.eventBus.dispatch("metadataloaded", { - source: _this17 - }); - - case 27: - case "end": - return _context15.stop(); - } - } - }, _callee15); - }))(); - }, - _initializePageLabels: function _initializePageLabels(pdfDocument) { - var _this18 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee16() { - var labels, numLabels, i, pdfViewer, pdfThumbnailViewer, toolbar; - return _regenerator["default"].wrap(function _callee16$(_context16) { - while (1) { - switch (_context16.prev = _context16.next) { - case 0: - _context16.next = 2; - return pdfDocument.getPageLabels(); - - case 2: - labels = _context16.sent; - - if (!(pdfDocument !== _this18.pdfDocument)) { - _context16.next = 5; - break; - } - - return _context16.abrupt("return"); - - case 5: - if (!(!labels || _app_options.AppOptions.get("disablePageLabels"))) { - _context16.next = 7; - break; - } - - return _context16.abrupt("return"); - - case 7: - numLabels = labels.length; - - if (!(numLabels !== _this18.pagesCount)) { - _context16.next = 11; - break; - } - - console.error("The number of Page Labels does not match the number of pages in the document."); - return _context16.abrupt("return"); - - case 11: - i = 0; - - while (i < numLabels && labels[i] === (i + 1).toString()) { - i++; - } - - if (!(i === numLabels)) { - _context16.next = 15; - break; - } - - return _context16.abrupt("return"); - - case 15: - pdfViewer = _this18.pdfViewer, pdfThumbnailViewer = _this18.pdfThumbnailViewer, toolbar = _this18.toolbar; - pdfViewer.setPageLabels(labels); - pdfThumbnailViewer.setPageLabels(labels); - toolbar.setPagesCount(numLabels, true); - toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); - - case 20: - case "end": - return _context16.stop(); - } - } - }, _callee16); - }))(); - }, - _initializePdfHistory: function _initializePdfHistory(_ref8) { - var fingerprint = _ref8.fingerprint, - viewOnLoad = _ref8.viewOnLoad, - _ref8$initialDest = _ref8.initialDest, - initialDest = _ref8$initialDest === void 0 ? null : _ref8$initialDest; - - if (this.isViewerEmbedded || _app_options.AppOptions.get("disableHistory")) { - return; - } - - this.pdfHistory.initialize({ - fingerprint: fingerprint, - resetHistory: viewOnLoad === ViewOnLoad.INITIAL, - updateUrl: _app_options.AppOptions.get("historyUpdateUrl") - }); - - if (this.pdfHistory.initialBookmark) { - this.initialBookmark = this.pdfHistory.initialBookmark; - this.initialRotation = this.pdfHistory.initialRotation; - } - - if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) { - this.initialBookmark = JSON.stringify(initialDest); - this.pdfHistory.push({ - explicitDest: initialDest, - pageNumber: null - }); - } - }, - _initializePermissions: function _initializePermissions(pdfDocument) { - var _this19 = this; - - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee17() { - var permissions; - return _regenerator["default"].wrap(function _callee17$(_context17) { - while (1) { - switch (_context17.prev = _context17.next) { - case 0: - _context17.next = 2; - return pdfDocument.getPermissions(); - - case 2: - permissions = _context17.sent; - - if (!(pdfDocument !== _this19.pdfDocument)) { - _context17.next = 5; - break; - } - - return _context17.abrupt("return"); - - case 5: - if (!(!permissions || !_app_options.AppOptions.get("enablePermissions"))) { - _context17.next = 7; - break; - } - - return _context17.abrupt("return"); - - case 7: - if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY)) { - _this19.appConfig.viewerContainer.classList.add(ENABLE_PERMISSIONS_CLASS); - } - - case 8: - case "end": - return _context17.stop(); - } - } - }, _callee17); - }))(); - }, - _initializeAnnotationStorageCallbacks: function _initializeAnnotationStorageCallbacks(pdfDocument) { - var _this20 = this; - - if (pdfDocument !== this.pdfDocument) { - return; - } - - var annotationStorage = pdfDocument.annotationStorage; - - annotationStorage.onSetModified = function () { - window.addEventListener("beforeunload", beforeUnload); - _this20._annotationStorageModified = true; - }; - - annotationStorage.onResetModified = function () { - window.removeEventListener("beforeunload", beforeUnload); - delete _this20._annotationStorageModified; - }; - }, - setInitialView: function setInitialView(storedHash) { - var _this21 = this; - - var _ref9 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - rotation = _ref9.rotation, - sidebarView = _ref9.sidebarView, - scrollMode = _ref9.scrollMode, - spreadMode = _ref9.spreadMode; - - var setRotation = function setRotation(angle) { - if ((0, _ui_utils.isValidRotation)(angle)) { - _this21.pdfViewer.pagesRotation = angle; - } - }; - - var setViewerModes = function setViewerModes(scroll, spread) { - if ((0, _ui_utils.isValidScrollMode)(scroll)) { - _this21.pdfViewer.scrollMode = scroll; - } - - if ((0, _ui_utils.isValidSpreadMode)(spread)) { - _this21.pdfViewer.spreadMode = spread; - } - }; - - this.isInitialViewSet = true; - this.pdfSidebar.setInitialView(sidebarView); - setViewerModes(scrollMode, spreadMode); - - if (this.initialBookmark) { - setRotation(this.initialRotation); - delete this.initialRotation; - this.pdfLinkService.setHash(this.initialBookmark); - this.initialBookmark = null; - } else if (storedHash) { - setRotation(rotation); - this.pdfLinkService.setHash(storedHash); - } - - this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); - this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber); - - if (!this.pdfViewer.currentScaleValue) { - this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - }, - _cleanup: function _cleanup() { - if (!this.pdfDocument) { - return; - } - - this.pdfViewer.cleanup(); - this.pdfThumbnailViewer.cleanup(); - this.pdfDocument.cleanup(this.pdfViewer.renderer === _ui_utils.RendererType.SVG); - }, - forceRendering: function forceRendering() { - this.pdfRenderingQueue.printing = !!this.printService; - this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible; - this.pdfRenderingQueue.renderHighestPriority(); - }, - beforePrint: function beforePrint() { - var _this22 = this; - - this.pdfScriptingManager.dispatchWillPrint(); - - if (this.printService) { - return; - } - - if (!this.supportsPrinting) { - this.l10n.get("printing_not_supported").then(function (msg) { - _this22._otherError(msg); - }); - return; - } - - if (!this.pdfViewer.pageViewsReady) { - this.l10n.get("printing_not_ready").then(function (msg) { - window.alert(msg); - }); - return; - } - - var pagesOverview = this.pdfViewer.getPagesOverview(); - var printContainer = this.appConfig.printContainer; - - var printResolution = _app_options.AppOptions.get("printResolution"); - - var optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise; - var printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this.l10n); - this.printService = printService; - this.forceRendering(); - printService.layout(); - this.externalServices.reportTelemetry({ - type: "print" - }); - }, - afterPrint: function afterPrint() { - this.pdfScriptingManager.dispatchDidPrint(); - - if (this.printService) { - this.printService.destroy(); - this.printService = null; - - if (this.pdfDocument) { - this.pdfDocument.annotationStorage.resetModified(); - } - } - - this.forceRendering(); - }, - rotatePages: function rotatePages(delta) { - this.pdfViewer.pagesRotation += delta; - }, - requestPresentationMode: function requestPresentationMode() { - if (!this.pdfPresentationMode) { - return; - } - - this.pdfPresentationMode.request(); - }, - triggerPrinting: function triggerPrinting() { - if (!this.supportsPrinting) { - return; - } - - window.print(); - }, - bindEvents: function bindEvents() { - var eventBus = this.eventBus, - _boundEvents = this._boundEvents; - _boundEvents.beforePrint = this.beforePrint.bind(this); - _boundEvents.afterPrint = this.afterPrint.bind(this); - - eventBus._on("resize", webViewerResize); - - eventBus._on("hashchange", webViewerHashchange); - - eventBus._on("beforeprint", _boundEvents.beforePrint); - - eventBus._on("afterprint", _boundEvents.afterPrint); - - eventBus._on("pagerendered", webViewerPageRendered); - - eventBus._on("updateviewarea", webViewerUpdateViewarea); - - eventBus._on("pagechanging", webViewerPageChanging); - - eventBus._on("scalechanging", webViewerScaleChanging); - - eventBus._on("rotationchanging", webViewerRotationChanging); - - eventBus._on("sidebarviewchanged", webViewerSidebarViewChanged); - - eventBus._on("pagemode", webViewerPageMode); - - eventBus._on("namedaction", webViewerNamedAction); - - eventBus._on("presentationmodechanged", webViewerPresentationModeChanged); - - eventBus._on("presentationmode", webViewerPresentationMode); - - eventBus._on("print", webViewerPrint); - - eventBus._on("download", webViewerDownload); - - eventBus._on("save", webViewerSave); - - eventBus._on("firstpage", webViewerFirstPage); - - eventBus._on("lastpage", webViewerLastPage); - - eventBus._on("nextpage", webViewerNextPage); - - eventBus._on("previouspage", webViewerPreviousPage); - - eventBus._on("zoomin", webViewerZoomIn); - - eventBus._on("zoomout", webViewerZoomOut); - - eventBus._on("zoomreset", webViewerZoomReset); - - eventBus._on("pagenumberchanged", webViewerPageNumberChanged); - - eventBus._on("scalechanged", webViewerScaleChanged); - - eventBus._on("rotatecw", webViewerRotateCw); - - eventBus._on("rotateccw", webViewerRotateCcw); - - eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig); - - eventBus._on("switchscrollmode", webViewerSwitchScrollMode); - - eventBus._on("scrollmodechanged", webViewerScrollModeChanged); - - eventBus._on("switchspreadmode", webViewerSwitchSpreadMode); - - eventBus._on("spreadmodechanged", webViewerSpreadModeChanged); - - eventBus._on("documentproperties", webViewerDocumentProperties); - - eventBus._on("find", webViewerFind); - - eventBus._on("findfromurlhash", webViewerFindFromUrlHash); - - eventBus._on("updatefindmatchescount", webViewerUpdateFindMatchesCount); - - eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState); - - if (_app_options.AppOptions.get("pdfBug")) { - _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug; - - eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug); - - eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug); - } - - eventBus._on("fileinputchange", webViewerFileInputChange); - - eventBus._on("openfile", webViewerOpenFile); - }, - bindWindowEvents: function bindWindowEvents() { - var eventBus = this.eventBus, - _boundEvents = this._boundEvents; - - _boundEvents.windowResize = function () { - eventBus.dispatch("resize", { - source: window - }); - }; - - _boundEvents.windowHashChange = function () { - eventBus.dispatch("hashchange", { - source: window, - hash: document.location.hash.substring(1) - }); - }; - - _boundEvents.windowBeforePrint = function () { - eventBus.dispatch("beforeprint", { - source: window - }); - }; - - _boundEvents.windowAfterPrint = function () { - eventBus.dispatch("afterprint", { - source: window - }); - }; - - _boundEvents.windowUpdateFromSandbox = function (event) { - eventBus.dispatch("updatefromsandbox", { - source: window, - detail: event.detail - }); - }; - - window.addEventListener("visibilitychange", webViewerVisibilityChange); - window.addEventListener("wheel", webViewerWheel, { - passive: false - }); - window.addEventListener("touchstart", webViewerTouchStart, { - passive: false - }); - window.addEventListener("click", webViewerClick); - window.addEventListener("keydown", webViewerKeyDown); - window.addEventListener("keyup", webViewerKeyUp); - window.addEventListener("resize", _boundEvents.windowResize); - window.addEventListener("hashchange", _boundEvents.windowHashChange); - window.addEventListener("beforeprint", _boundEvents.windowBeforePrint); - window.addEventListener("afterprint", _boundEvents.windowAfterPrint); - window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); - }, - unbindEvents: function unbindEvents() { - var eventBus = this.eventBus, - _boundEvents = this._boundEvents; - - eventBus._off("resize", webViewerResize); - - eventBus._off("hashchange", webViewerHashchange); - - eventBus._off("beforeprint", _boundEvents.beforePrint); - - eventBus._off("afterprint", _boundEvents.afterPrint); - - eventBus._off("pagerendered", webViewerPageRendered); - - eventBus._off("updateviewarea", webViewerUpdateViewarea); - - eventBus._off("pagechanging", webViewerPageChanging); - - eventBus._off("scalechanging", webViewerScaleChanging); - - eventBus._off("rotationchanging", webViewerRotationChanging); - - eventBus._off("sidebarviewchanged", webViewerSidebarViewChanged); - - eventBus._off("pagemode", webViewerPageMode); - - eventBus._off("namedaction", webViewerNamedAction); - - eventBus._off("presentationmodechanged", webViewerPresentationModeChanged); - - eventBus._off("presentationmode", webViewerPresentationMode); - - eventBus._off("print", webViewerPrint); - - eventBus._off("download", webViewerDownload); - - eventBus._off("save", webViewerSave); - - eventBus._off("firstpage", webViewerFirstPage); - - eventBus._off("lastpage", webViewerLastPage); - - eventBus._off("nextpage", webViewerNextPage); - - eventBus._off("previouspage", webViewerPreviousPage); - - eventBus._off("zoomin", webViewerZoomIn); - - eventBus._off("zoomout", webViewerZoomOut); - - eventBus._off("zoomreset", webViewerZoomReset); - - eventBus._off("pagenumberchanged", webViewerPageNumberChanged); - - eventBus._off("scalechanged", webViewerScaleChanged); - - eventBus._off("rotatecw", webViewerRotateCw); - - eventBus._off("rotateccw", webViewerRotateCcw); - - eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig); - - eventBus._off("switchscrollmode", webViewerSwitchScrollMode); - - eventBus._off("scrollmodechanged", webViewerScrollModeChanged); - - eventBus._off("switchspreadmode", webViewerSwitchSpreadMode); - - eventBus._off("spreadmodechanged", webViewerSpreadModeChanged); - - eventBus._off("documentproperties", webViewerDocumentProperties); - - eventBus._off("find", webViewerFind); - - eventBus._off("findfromurlhash", webViewerFindFromUrlHash); - - eventBus._off("updatefindmatchescount", webViewerUpdateFindMatchesCount); - - eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState); - - if (_boundEvents.reportPageStatsPDFBug) { - eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug); - - eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug); - - _boundEvents.reportPageStatsPDFBug = null; - } - - eventBus._off("fileinputchange", webViewerFileInputChange); - - eventBus._off("openfile", webViewerOpenFile); - - _boundEvents.beforePrint = null; - _boundEvents.afterPrint = null; - }, - unbindWindowEvents: function unbindWindowEvents() { - var _boundEvents = this._boundEvents; - window.removeEventListener("visibilitychange", webViewerVisibilityChange); - window.removeEventListener("wheel", webViewerWheel, { - passive: false - }); - window.removeEventListener("touchstart", webViewerTouchStart, { - passive: false - }); - window.removeEventListener("click", webViewerClick); - window.removeEventListener("keydown", webViewerKeyDown); - window.removeEventListener("keyup", webViewerKeyUp); - window.removeEventListener("resize", _boundEvents.windowResize); - window.removeEventListener("hashchange", _boundEvents.windowHashChange); - window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint); - window.removeEventListener("afterprint", _boundEvents.windowAfterPrint); - window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); - _boundEvents.windowResize = null; - _boundEvents.windowHashChange = null; - _boundEvents.windowBeforePrint = null; - _boundEvents.windowAfterPrint = null; - _boundEvents.windowUpdateFromSandbox = null; - }, - accumulateWheelTicks: function accumulateWheelTicks(ticks) { - if (this._wheelUnusedTicks > 0 && ticks < 0 || this._wheelUnusedTicks < 0 && ticks > 0) { - this._wheelUnusedTicks = 0; - } - - this._wheelUnusedTicks += ticks; - var wholeTicks = Math.sign(this._wheelUnusedTicks) * Math.floor(Math.abs(this._wheelUnusedTicks)); - this._wheelUnusedTicks -= wholeTicks; - return wholeTicks; - }, - _unblockDocumentLoadEvent: function _unblockDocumentLoadEvent() { - if (document.blockUnblockOnload) { - document.blockUnblockOnload(false); - } - - this._unblockDocumentLoadEvent = function () { - }; - }, - - get scriptingReady() { - return this.pdfScriptingManager.ready; - } - - }; - exports.PDFViewerApplication = PDFViewerApplication; - var validateFileURL; - { - var HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"]; - - validateFileURL = function validateFileURL(file) { - if (file === undefined) { - return; - } - - try { - var viewerOrigin = new URL(window.location.href).origin || "null"; - - if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) { - return; - } - - var _URL = new URL(file, window.location.href), - origin = _URL.origin, - protocol = _URL.protocol; - - if (origin !== viewerOrigin && protocol !== "blob:") { - throw new Error("file origin does not match viewer's"); - } - } catch (ex) { - PDFViewerApplication.l10n.get("loading_error").then(function (msg) { - PDFViewerApplication._documentError(msg, { - message: ex === null || ex === void 0 ? void 0 : ex.message - }); - }); - throw ex; - } - }; - } - - function loadFakeWorker() { - return _loadFakeWorker.apply(this, arguments); - } - - function _loadFakeWorker() { - _loadFakeWorker = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee18() { - return _regenerator["default"].wrap(function _callee18$(_context18) { - while (1) { - switch (_context18.prev = _context18.next) { - case 0: - if (!_pdfjsLib.GlobalWorkerOptions.workerSrc) { - _pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get("workerSrc"); - } - - return _context18.abrupt("return", (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.getWorkerSrc())); - - case 2: - case "end": - return _context18.stop(); - } - } - }, _callee18); - })); - return _loadFakeWorker.apply(this, arguments); - } - - function loadAndEnablePDFBug(enabledTabs) { - var appConfig = PDFViewerApplication.appConfig; - return (0, _pdfjsLib.loadScript)(appConfig.debuggerScriptPath).then(function () { - PDFBug.enable(enabledTabs); - PDFBug.init({ - OPS: _pdfjsLib.OPS - }, appConfig.mainContainer); - }); - } - - function reportPageStatsPDFBug(_ref10) { - var _pageView$pdfPage; - - var pageNumber = _ref10.pageNumber; - - if (typeof Stats === "undefined" || !Stats.enabled) { - return; - } - - var pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); - var pageStats = pageView === null || pageView === void 0 ? void 0 : (_pageView$pdfPage = pageView.pdfPage) === null || _pageView$pdfPage === void 0 ? void 0 : _pageView$pdfPage.stats; - - if (!pageStats) { - return; - } - - Stats.add(pageNumber, pageStats); - } - - function webViewerInitialized() { - var appConfig = PDFViewerApplication.appConfig; - var file; - var queryString = document.location.search.substring(1); - var params = (0, _ui_utils.parseQueryString)(queryString); - file = "file" in params ? params.file : _app_options.AppOptions.get("defaultUrl"); - validateFileURL(file); - var fileInput = document.createElement("input"); - fileInput.id = appConfig.openFileInputName; - fileInput.className = "fileInput"; - fileInput.setAttribute("type", "file"); - fileInput.oncontextmenu = _ui_utils.noContextMenuHandler; - document.body.appendChild(fileInput); - - if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { - appConfig.toolbar.openFile.hidden = true; - appConfig.secondaryToolbar.openFileButton.hidden = true; - } else { - fileInput.value = null; - } - - fileInput.addEventListener("change", function (evt) { - var files = evt.target.files; - - if (!files || files.length === 0) { - return; - } - - PDFViewerApplication.eventBus.dispatch("fileinputchange", { - source: this, - fileInput: evt.target - }); - }); - appConfig.mainContainer.addEventListener("dragover", function (evt) { - evt.preventDefault(); - evt.dataTransfer.dropEffect = "move"; - }); - appConfig.mainContainer.addEventListener("drop", function (evt) { - evt.preventDefault(); - var files = evt.dataTransfer.files; - - if (!files || files.length === 0) { - return; - } - - PDFViewerApplication.eventBus.dispatch("fileinputchange", { - source: this, - fileInput: evt.dataTransfer - }); - }); - - if (!PDFViewerApplication.supportsDocumentFonts) { - _app_options.AppOptions.set("disableFontFace", true); - - PDFViewerApplication.l10n.get("web_fonts_disabled").then(function (msg) { - console.warn(msg); - }); - } - - if (!PDFViewerApplication.supportsPrinting) { - appConfig.toolbar.print.classList.add("hidden"); - appConfig.secondaryToolbar.printButton.classList.add("hidden"); - } - - if (!PDFViewerApplication.supportsFullscreen) { - appConfig.toolbar.presentationModeButton.classList.add("hidden"); - appConfig.secondaryToolbar.presentationModeButton.classList.add("hidden"); - } - - if (PDFViewerApplication.supportsIntegratedFind) { - appConfig.toolbar.viewFind.classList.add("hidden"); - } - - appConfig.mainContainer.addEventListener("transitionend", function (evt) { - if (evt.target === this) { - PDFViewerApplication.eventBus.dispatch("resize", { - source: this - }); - } - }, true); - - try { - webViewerOpenFileViaURL(file); - } catch (reason) { - PDFViewerApplication.l10n.get("loading_error").then(function (msg) { - PDFViewerApplication._documentError(msg, reason); - }); - } - } - - function webViewerOpenFileViaURL(file) { - if (file) { - PDFViewerApplication.open(file); - } - } - - function webViewerResetPermissions() { - var appConfig = PDFViewerApplication.appConfig; - - if (!appConfig) { - return; - } - - appConfig.viewerContainer.classList.remove(ENABLE_PERMISSIONS_CLASS); - } - - function webViewerPageRendered(_ref11) { - var pageNumber = _ref11.pageNumber, - timestamp = _ref11.timestamp, - error = _ref11.error; - - if (pageNumber === PDFViewerApplication.page) { - PDFViewerApplication.toolbar.updateLoadingIndicatorState(false); - } - - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - var pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); - var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageNumber - 1); - - if (pageView && thumbnailView) { - thumbnailView.setImage(pageView); - } - } - - if (error) { - PDFViewerApplication.l10n.get("rendering_error").then(function (msg) { - PDFViewerApplication._otherError(msg, error); - }); - } - - PDFViewerApplication.externalServices.reportTelemetry({ - type: "pageInfo", - timestamp: timestamp - }); - PDFViewerApplication.pdfDocument.getStats().then(function (stats) { - PDFViewerApplication.externalServices.reportTelemetry({ - type: "documentStats", - stats: stats - }); - }); - } - - function webViewerPageMode(_ref12) { - var mode = _ref12.mode; - var view; - - switch (mode) { - case "thumbs": - view = _ui_utils.SidebarView.THUMBS; - break; - - case "bookmarks": - case "outline": - view = _ui_utils.SidebarView.OUTLINE; - break; - - case "attachments": - view = _ui_utils.SidebarView.ATTACHMENTS; - break; - - case "layers": - view = _ui_utils.SidebarView.LAYERS; - break; - - case "none": - view = _ui_utils.SidebarView.NONE; - break; - - default: - console.error('Invalid "pagemode" hash parameter: ' + mode); - return; - } - - PDFViewerApplication.pdfSidebar.switchView(view, true); - } - - function webViewerNamedAction(evt) { - switch (evt.action) { - case "GoToPage": - PDFViewerApplication.appConfig.toolbar.pageNumber.select(); - break; - - case "Find": - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.toggle(); - } - - break; - - case "Print": - PDFViewerApplication.triggerPrinting(); - break; - - case "SaveAs": - webViewerSave(); - break; - } - } - - function webViewerPresentationModeChanged(evt) { - PDFViewerApplication.pdfViewer.presentationModeState = evt.state; - } - - function webViewerSidebarViewChanged(evt) { - PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible; - var store = PDFViewerApplication.store; - - if (store && PDFViewerApplication.isInitialViewSet) { - store.set("sidebarView", evt.view)["catch"](function () { - }); - } - } - - function webViewerUpdateViewarea(evt) { - var location = evt.location, - store = PDFViewerApplication.store; - - if (store && PDFViewerApplication.isInitialViewSet) { - store.setMultiple({ - page: location.pageNumber, - zoom: location.scale, - scrollLeft: location.left, - scrollTop: location.top, - rotation: location.rotation - })["catch"](function () { - }); - } - - var href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); - PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href; - PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; - var currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); - var loading = (currentPage === null || currentPage === void 0 ? void 0 : currentPage.renderingState) !== _pdf_rendering_queue.RenderingStates.FINISHED; - PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading); - } - - function webViewerScrollModeChanged(evt) { - var store = PDFViewerApplication.store; - - if (store && PDFViewerApplication.isInitialViewSet) { - store.set("scrollMode", evt.mode)["catch"](function () { - }); - } - } - - function webViewerSpreadModeChanged(evt) { - var store = PDFViewerApplication.store; - - if (store && PDFViewerApplication.isInitialViewSet) { - store.set("spreadMode", evt.mode)["catch"](function () { - }); - } - } - - function webViewerResize() { - var pdfDocument = PDFViewerApplication.pdfDocument, - pdfViewer = PDFViewerApplication.pdfViewer; - - if (!pdfDocument) { - return; - } - - var currentScaleValue = pdfViewer.currentScaleValue; - - if (currentScaleValue === "auto" || currentScaleValue === "page-fit" || currentScaleValue === "page-width") { - pdfViewer.currentScaleValue = currentScaleValue; - } - - pdfViewer.update(); - } - - function webViewerHashchange(evt) { - var hash = evt.hash; - - if (!hash) { - return; - } - - if (!PDFViewerApplication.isInitialViewSet) { - PDFViewerApplication.initialBookmark = hash; - } else if (!PDFViewerApplication.pdfHistory.popStateInProgress) { - PDFViewerApplication.pdfLinkService.setHash(hash); - } - } - - var webViewerFileInputChange, webViewerOpenFile; - { - webViewerFileInputChange = function webViewerFileInputChange(evt) { - var _PDFViewerApplication; - - if ((_PDFViewerApplication = PDFViewerApplication.pdfViewer) !== null && _PDFViewerApplication !== void 0 && _PDFViewerApplication.isInPresentationMode) { - return; - } - - var file = evt.fileInput.files[0]; - - if (!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { - var url = URL.createObjectURL(file); - - if (file.name) { - url = { - url: url, - originalUrl: file.name - }; - } - - PDFViewerApplication.open(url); - } else { - PDFViewerApplication.setTitleUsingUrl(file.name); - var fileReader = new FileReader(); - - fileReader.onload = function webViewerChangeFileReaderOnload(event) { - var buffer = event.target.result; - PDFViewerApplication.open(new Uint8Array(buffer)); - }; - - fileReader.readAsArrayBuffer(file); - } - - var appConfig = PDFViewerApplication.appConfig; - appConfig.toolbar.viewBookmark.hidden = true; - appConfig.secondaryToolbar.viewBookmarkButton.hidden = true; - appConfig.toolbar.download.hidden = true; - appConfig.secondaryToolbar.downloadButton.hidden = true; - }; - - webViewerOpenFile = function webViewerOpenFile(evt) { - var openFileInputName = PDFViewerApplication.appConfig.openFileInputName; - document.getElementById(openFileInputName).click(); - }; - } - - function webViewerPresentationMode() { - PDFViewerApplication.requestPresentationMode(); - } - - function webViewerPrint() { - PDFViewerApplication.triggerPrinting(); - } - - function webViewerDownload() { - PDFViewerApplication.downloadOrSave({ - sourceEventType: "download" - }); - } - - function webViewerSave() { - PDFViewerApplication.downloadOrSave({ - sourceEventType: "save" - }); - } - - function webViewerFirstPage() { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = 1; - } - } - - function webViewerLastPage() { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - } - } - - function webViewerNextPage() { - PDFViewerApplication.pdfViewer.nextPage(); - } - - function webViewerPreviousPage() { - PDFViewerApplication.pdfViewer.previousPage(); - } - - function webViewerZoomIn() { - PDFViewerApplication.zoomIn(); - } - - function webViewerZoomOut() { - PDFViewerApplication.zoomOut(); - } - - function webViewerZoomReset() { - PDFViewerApplication.zoomReset(); - } - - function webViewerPageNumberChanged(evt) { - var pdfViewer = PDFViewerApplication.pdfViewer; - - if (evt.value !== "") { - PDFViewerApplication.pdfLinkService.goToPage(evt.value); - } - - if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { - PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); - } - } - - function webViewerScaleChanged(evt) { - PDFViewerApplication.pdfViewer.currentScaleValue = evt.value; - } - - function webViewerRotateCw() { - PDFViewerApplication.rotatePages(90); - } - - function webViewerRotateCcw() { - PDFViewerApplication.rotatePages(-90); - } - - function webViewerOptionalContentConfig(evt) { - PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise; - } - - function webViewerSwitchScrollMode(evt) { - PDFViewerApplication.pdfViewer.scrollMode = evt.mode; - } - - function webViewerSwitchSpreadMode(evt) { - PDFViewerApplication.pdfViewer.spreadMode = evt.mode; - } - - function webViewerDocumentProperties() { - PDFViewerApplication.pdfDocumentProperties.open(); - } - - function webViewerFind(evt) { - PDFViewerApplication.findController.executeCommand("find" + evt.type, { - query: evt.query, - phraseSearch: evt.phraseSearch, - caseSensitive: evt.caseSensitive, - entireWord: evt.entireWord, - highlightAll: evt.highlightAll, - findPrevious: evt.findPrevious - }); - } - - function webViewerFindFromUrlHash(evt) { - PDFViewerApplication.findController.executeCommand("find", { - query: evt.query, - phraseSearch: evt.phraseSearch, - caseSensitive: false, - entireWord: false, - highlightAll: true, - findPrevious: false - }); - } - - function webViewerUpdateFindMatchesCount(_ref13) { - var matchesCount = _ref13.matchesCount; - - if (PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount); - } else { - PDFViewerApplication.findBar.updateResultsCount(matchesCount); - } - } - - function webViewerUpdateFindControlState(_ref14) { - var state = _ref14.state, - previous = _ref14.previous, - matchesCount = _ref14.matchesCount, - rawQuery = _ref14.rawQuery; - - if (PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.externalServices.updateFindControlState({ - result: state, - findPrevious: previous, - matchesCount: matchesCount, - rawQuery: rawQuery - }); - } else { - PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount); - } - } - - function webViewerScaleChanging(evt) { - PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale); - PDFViewerApplication.pdfViewer.update(); - } - - function webViewerRotationChanging(evt) { - PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation; - PDFViewerApplication.forceRendering(); - PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber; - } - - function webViewerPageChanging(_ref15) { - var pageNumber = _ref15.pageNumber, - pageLabel = _ref15.pageLabel; - PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel); - PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber); - - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber); - } - } - - function webViewerVisibilityChange(evt) { - if (document.visibilityState === "visible") { - setZoomDisabledTimeout(); - } - } - - var zoomDisabledTimeout = null; - - function setZoomDisabledTimeout() { - if (zoomDisabledTimeout) { - clearTimeout(zoomDisabledTimeout); - } - - zoomDisabledTimeout = setTimeout(function () { - zoomDisabledTimeout = null; - }, WHEEL_ZOOM_DISABLED_TIMEOUT); - } - - function webViewerWheel(evt) { - var pdfViewer = PDFViewerApplication.pdfViewer, - supportedMouseWheelZoomModifierKeys = PDFViewerApplication.supportedMouseWheelZoomModifierKeys; - - if (pdfViewer.isInPresentationMode) { - return; - } - - if (evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { - evt.preventDefault(); - - if (zoomDisabledTimeout || document.visibilityState === "hidden") { - return; - } - - var previousScale = pdfViewer.currentScale; - var delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); - var ticks = 0; - - if (evt.deltaMode === WheelEvent.DOM_DELTA_LINE || evt.deltaMode === WheelEvent.DOM_DELTA_PAGE) { - if (Math.abs(delta) >= 1) { - ticks = Math.sign(delta); - } else { - ticks = PDFViewerApplication.accumulateWheelTicks(delta); - } - } else { - var PIXELS_PER_LINE_SCALE = 30; - ticks = PDFViewerApplication.accumulateWheelTicks(delta / PIXELS_PER_LINE_SCALE); - } - - if (ticks < 0) { - PDFViewerApplication.zoomOut(-ticks); - } else if (ticks > 0) { - PDFViewerApplication.zoomIn(ticks); - } - - var currentScale = pdfViewer.currentScale; - - if (previousScale !== currentScale) { - var scaleCorrectionFactor = currentScale / previousScale - 1; - var rect = pdfViewer.container.getBoundingClientRect(); - var dx = evt.clientX - rect.left; - var dy = evt.clientY - rect.top; - pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor; - pdfViewer.container.scrollTop += dy * scaleCorrectionFactor; - } - } else { - setZoomDisabledTimeout(); - } - } - - function webViewerTouchStart(evt) { - if (evt.touches.length > 1) { - evt.preventDefault(); - } - } - - function webViewerClick(evt) { - if (PDFViewerApplication.triggerDelayedFallback && PDFViewerApplication.pdfViewer.containsElement(evt.target)) { - PDFViewerApplication.triggerDelayedFallback(); - } - - if (!PDFViewerApplication.secondaryToolbar.isOpen) { - return; - } - - var appConfig = PDFViewerApplication.appConfig; - - if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) { - PDFViewerApplication.secondaryToolbar.close(); - } - } - - function webViewerKeyUp(evt) { - if (evt.keyCode === 9) { - if (PDFViewerApplication.triggerDelayedFallback) { - PDFViewerApplication.triggerDelayedFallback(); - } - } - } - - function webViewerKeyDown(evt) { - if (PDFViewerApplication.overlayManager.active) { - return; - } - - var handled = false, - ensureViewerFocused = false; - var cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); - var pdfViewer = PDFViewerApplication.pdfViewer; - var isViewerInPresentationMode = pdfViewer === null || pdfViewer === void 0 ? void 0 : pdfViewer.isInPresentationMode; - - if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { - switch (evt.keyCode) { - case 70: - if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) { - PDFViewerApplication.findBar.open(); - handled = true; - } - - break; - - case 71: - if (!PDFViewerApplication.supportsIntegratedFind) { - var findState = PDFViewerApplication.findController.state; - - if (findState) { - PDFViewerApplication.findController.executeCommand("findagain", { - query: findState.query, - phraseSearch: findState.phraseSearch, - caseSensitive: findState.caseSensitive, - entireWord: findState.entireWord, - highlightAll: findState.highlightAll, - findPrevious: cmd === 5 || cmd === 12 - }); - } - - handled = true; - } - - break; - - case 61: - case 107: - case 187: - case 171: - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomIn(); - } - - handled = true; - break; - - case 173: - case 109: - case 189: - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomOut(); - } - - handled = true; - break; - - case 48: - case 96: - if (!isViewerInPresentationMode) { - setTimeout(function () { - PDFViewerApplication.zoomReset(); - }); - handled = false; - } - - break; - - case 38: - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - - break; - - case 40: - if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - - break; - } - } - - var eventBus = PDFViewerApplication.eventBus; - - if (cmd === 1 || cmd === 8) { - switch (evt.keyCode) { - case 83: - eventBus.dispatch("download", { - source: window - }); - handled = true; - break; - - case 79: { - eventBus.dispatch("openfile", { - source: window - }); - handled = true; - } - break; - } - } - - if (cmd === 3 || cmd === 10) { - switch (evt.keyCode) { - case 80: - PDFViewerApplication.requestPresentationMode(); - handled = true; - break; - - case 71: - PDFViewerApplication.appConfig.toolbar.pageNumber.select(); - handled = true; - break; - } - } - - if (handled) { - if (ensureViewerFocused && !isViewerInPresentationMode) { - pdfViewer.focus(); - } - - evt.preventDefault(); - return; - } - - var curElement = (0, _ui_utils.getActiveOrFocusedElement)(); - var curElementTagName = curElement === null || curElement === void 0 ? void 0 : curElement.tagName.toUpperCase(); - - if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement !== null && curElement !== void 0 && curElement.isContentEditable) { - if (evt.keyCode !== 27) { - return; - } - } - - if (cmd === 0) { - var turnPage = 0, - turnOnlyIfPageFit = false; - - switch (evt.keyCode) { - case 38: - case 33: - if (pdfViewer.isVerticalScrollbarEnabled) { - turnOnlyIfPageFit = true; - } - - turnPage = -1; - break; - - case 8: - if (!isViewerInPresentationMode) { - turnOnlyIfPageFit = true; - } - - turnPage = -1; - break; - - case 37: - if (pdfViewer.isHorizontalScrollbarEnabled) { - turnOnlyIfPageFit = true; - } - - case 75: - case 80: - turnPage = -1; - break; - - case 27: - if (PDFViewerApplication.secondaryToolbar.isOpen) { - PDFViewerApplication.secondaryToolbar.close(); - handled = true; - } - - if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) { - PDFViewerApplication.findBar.close(); - handled = true; - } - - break; - - case 40: - case 34: - if (pdfViewer.isVerticalScrollbarEnabled) { - turnOnlyIfPageFit = true; - } - - turnPage = 1; - break; - - case 13: - case 32: - if (!isViewerInPresentationMode) { - turnOnlyIfPageFit = true; - } - - turnPage = 1; - break; - - case 39: - if (pdfViewer.isHorizontalScrollbarEnabled) { - turnOnlyIfPageFit = true; - } - - case 74: - case 78: - turnPage = 1; - break; - - case 36: - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - - break; - - case 35: - if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - - break; - - case 83: - PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT); - break; - - case 72: - PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND); - break; - - case 82: - PDFViewerApplication.rotatePages(90); - break; - - case 115: - PDFViewerApplication.pdfSidebar.toggle(); - break; - } - - if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) { - if (turnPage > 0) { - pdfViewer.nextPage(); - } else { - pdfViewer.previousPage(); - } - - handled = true; - } - } - - if (cmd === 4) { - switch (evt.keyCode) { - case 13: - case 32: - if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== "page-fit") { - break; - } - - if (PDFViewerApplication.page > 1) { - PDFViewerApplication.page--; - } - - handled = true; - break; - - case 82: - PDFViewerApplication.rotatePages(-90); - break; - } - } - - if (!handled && !isViewerInPresentationMode) { - if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== "BUTTON") { - ensureViewerFocused = true; - } - } - - if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { - pdfViewer.focus(); - } - - if (handled) { - evt.preventDefault(); - } - } - - function beforeUnload(evt) { - evt.preventDefault(); - evt.returnValue = ""; - return false; - } - - var PDFPrintServiceFactory = { - instance: { - supportsPrinting: false, - createPrintService: function createPrintService() { - throw new Error("Not implemented: createPrintService"); - } - } - }; - exports.PDFPrintServiceFactory = PDFPrintServiceFactory; - - /***/ - }), - /* 4 */ - /***/ ((module, __unused_webpack_exports, __webpack_require__) => { - - - module.exports = __webpack_require__(5); - - /***/ - }), - /* 5 */ - /***/ ((module, __unused_webpack_exports, __webpack_require__) => { - - /* module decorator */ - module = __webpack_require__.nmd(module); - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - var runtime = function (exports) { - "use strict"; - - var Op = Object.prototype; - var hasOwn = Op.hasOwnProperty; - var undefined; - var $Symbol = typeof Symbol === "function" ? Symbol : {}; - var iteratorSymbol = $Symbol.iterator || "@@iterator"; - var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; - var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - - function define(obj, key, value) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - return obj[key]; - } - - try { - define({}, ""); - } catch (err) { - define = function define(obj, key, value) { - return obj[key] = value; - }; - } - - function wrap(innerFn, outerFn, self, tryLocsList) { - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; - var generator = Object.create(protoGenerator.prototype); - var context = new Context(tryLocsList || []); - generator._invoke = makeInvokeMethod(innerFn, self, context); - return generator; - } - - exports.wrap = wrap; - - function tryCatch(fn, obj, arg) { - try { - return { - type: "normal", - arg: fn.call(obj, arg) - }; - } catch (err) { - return { - type: "throw", - arg: err - }; - } - } - - var GenStateSuspendedStart = "suspendedStart"; - var GenStateSuspendedYield = "suspendedYield"; - var GenStateExecuting = "executing"; - var GenStateCompleted = "completed"; - var ContinueSentinel = {}; - - function Generator() { - } - - function GeneratorFunction() { - } - - function GeneratorFunctionPrototype() { - } - - var IteratorPrototype = {}; - - IteratorPrototype[iteratorSymbol] = function () { - return this; - }; - - var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - - if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { - IteratorPrototype = NativeIteratorPrototype; - } - - var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); - GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; - GeneratorFunctionPrototype.constructor = GeneratorFunction; - GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"); - - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function (method) { - define(prototype, method, function (arg) { - return this._invoke(method, arg); - }); - }); - } - - exports.isGeneratorFunction = function (genFun) { - var ctor = typeof genFun === "function" && genFun.constructor; - return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false; - }; - - exports.mark = function (genFun) { - if (Object.setPrototypeOf) { - Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); - } else { - genFun.__proto__ = GeneratorFunctionPrototype; - define(genFun, toStringTagSymbol, "GeneratorFunction"); - } - - genFun.prototype = Object.create(Gp); - return genFun; - }; - - exports.awrap = function (arg) { - return { - __await: arg - }; - }; - - function AsyncIterator(generator, PromiseImpl) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - - if (record.type === "throw") { - reject(record.arg); - } else { - var result = record.arg; - var value = result.value; - - if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) { - return PromiseImpl.resolve(value.__await).then(function (value) { - invoke("next", value, resolve, reject); - }, function (err) { - invoke("throw", err, resolve, reject); - }); - } - - return PromiseImpl.resolve(value).then(function (unwrapped) { - result.value = unwrapped; - resolve(result); - }, function (error) { - return invoke("throw", error, resolve, reject); - }); - } - } - - var previousPromise; - - function enqueue(method, arg) { - function callInvokeWithMethodAndArg() { - return new PromiseImpl(function (resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - - return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); - } - - this._invoke = enqueue; - } - - defineIteratorMethods(AsyncIterator.prototype); - - AsyncIterator.prototype[asyncIteratorSymbol] = function () { - return this; - }; - - exports.AsyncIterator = AsyncIterator; - - exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { - if (PromiseImpl === void 0) PromiseImpl = Promise; - var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); - return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { - return result.done ? result.value : iter.next(); - }); - }; - - function makeInvokeMethod(innerFn, self, context) { - var state = GenStateSuspendedStart; - return function invoke(method, arg) { - if (state === GenStateExecuting) { - throw new Error("Generator is already running"); - } - - if (state === GenStateCompleted) { - if (method === "throw") { - throw arg; - } - - return doneResult(); - } - - context.method = method; - context.arg = arg; - - while (true) { - var delegate = context.delegate; - - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - - if (context.method === "next") { - context.sent = context._sent = context.arg; - } else if (context.method === "throw") { - if (state === GenStateSuspendedStart) { - state = GenStateCompleted; - throw context.arg; - } - - context.dispatchException(context.arg); - } else if (context.method === "return") { - context.abrupt("return", context.arg); - } - - state = GenStateExecuting; - var record = tryCatch(innerFn, self, context); - - if (record.type === "normal") { - state = context.done ? GenStateCompleted : GenStateSuspendedYield; - - if (record.arg === ContinueSentinel) { - continue; - } - - return { - value: record.arg, - done: context.done - }; - } else if (record.type === "throw") { - state = GenStateCompleted; - context.method = "throw"; - context.arg = record.arg; - } - } - }; - } - - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - - if (method === undefined) { - context.delegate = null; - - if (context.method === "throw") { - if (delegate.iterator["return"]) { - context.method = "return"; - context.arg = undefined; - maybeInvokeDelegate(delegate, context); - - if (context.method === "throw") { - return ContinueSentinel; - } - } - - context.method = "throw"; - context.arg = new TypeError("The iterator does not provide a 'throw' method"); - } - - return ContinueSentinel; - } - - var record = tryCatch(method, delegate.iterator, context.arg); - - if (record.type === "throw") { - context.method = "throw"; - context.arg = record.arg; - context.delegate = null; - return ContinueSentinel; - } - - var info = record.arg; - - if (!info) { - context.method = "throw"; - context.arg = new TypeError("iterator result is not an object"); - context.delegate = null; - return ContinueSentinel; - } - - if (info.done) { - context[delegate.resultName] = info.value; - context.next = delegate.nextLoc; - - if (context.method !== "return") { - context.method = "next"; - context.arg = undefined; - } - } else { - return info; - } - - context.delegate = null; - return ContinueSentinel; - } - - defineIteratorMethods(Gp); - define(Gp, toStringTagSymbol, "Generator"); - - Gp[iteratorSymbol] = function () { - return this; - }; - - Gp.toString = function () { - return "[object Generator]"; - }; - - function pushTryEntry(locs) { - var entry = { - tryLoc: locs[0] - }; - - if (1 in locs) { - entry.catchLoc = locs[1]; - } - - if (2 in locs) { - entry.finallyLoc = locs[2]; - entry.afterLoc = locs[3]; - } - - this.tryEntries.push(entry); - } - - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal"; - delete record.arg; - entry.completion = record; - } - - function Context(tryLocsList) { - this.tryEntries = [{ - tryLoc: "root" - }]; - tryLocsList.forEach(pushTryEntry, this); - this.reset(true); - } - - exports.keys = function (object) { - var keys = []; - - for (var key in object) { - keys.push(key); - } - - keys.reverse(); - return function next() { - while (keys.length) { - var key = keys.pop(); - - if (key in object) { - next.value = key; - next.done = false; - return next; - } - } - - next.done = true; - return next; - }; - }; - - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - - if (iteratorMethod) { - return iteratorMethod.call(iterable); - } - - if (typeof iterable.next === "function") { - return iterable; - } - - if (!isNaN(iterable.length)) { - var i = -1, - next = function next() { - while (++i < iterable.length) { - if (hasOwn.call(iterable, i)) { - next.value = iterable[i]; - next.done = false; - return next; - } - } - - next.value = undefined; - next.done = true; - return next; - }; - - return next.next = next; - } - } - - return { - next: doneResult - }; - } - - exports.values = values; - - function doneResult() { - return { - value: undefined, - done: true - }; - } - - Context.prototype = { - constructor: Context, - reset: function reset(skipTempReset) { - this.prev = 0; - this.next = 0; - this.sent = this._sent = undefined; - this.done = false; - this.delegate = null; - this.method = "next"; - this.arg = undefined; - this.tryEntries.forEach(resetTryEntry); - - if (!skipTempReset) { - for (var name in this) { - if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { - this[name] = undefined; - } - } - } - }, - stop: function stop() { - this.done = true; - var rootEntry = this.tryEntries[0]; - var rootRecord = rootEntry.completion; - - if (rootRecord.type === "throw") { - throw rootRecord.arg; - } - - return this.rval; - }, - dispatchException: function dispatchException(exception) { - if (this.done) { - throw exception; - } - - var context = this; - - function handle(loc, caught) { - record.type = "throw"; - record.arg = exception; - context.next = loc; - - if (caught) { - context.method = "next"; - context.arg = undefined; - } - - return !!caught; - } - - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - var record = entry.completion; - - if (entry.tryLoc === "root") { - return handle("end"); - } - - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"); - var hasFinally = hasOwn.call(entry, "finallyLoc"); - - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } else if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else if (hasCatch) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } - } else if (hasFinally) { - if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else { - throw new Error("try statement without catch or finally"); - } - } - } - }, - abrupt: function abrupt(type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - - if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { - finallyEntry = null; - } - - var record = finallyEntry ? finallyEntry.completion : {}; - record.type = type; - record.arg = arg; - - if (finallyEntry) { - this.method = "next"; - this.next = finallyEntry.finallyLoc; - return ContinueSentinel; - } - - return this.complete(record); - }, - complete: function complete(record, afterLoc) { - if (record.type === "throw") { - throw record.arg; - } - - if (record.type === "break" || record.type === "continue") { - this.next = record.arg; - } else if (record.type === "return") { - this.rval = this.arg = record.arg; - this.method = "return"; - this.next = "end"; - } else if (record.type === "normal" && afterLoc) { - this.next = afterLoc; - } - - return ContinueSentinel; - }, - finish: function finish(finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.finallyLoc === finallyLoc) { - this.complete(entry.completion, entry.afterLoc); - resetTryEntry(entry); - return ContinueSentinel; - } - } - }, - "catch": function _catch(tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - - if (record.type === "throw") { - var thrown = record.arg; - resetTryEntry(entry); - } - - return thrown; - } - } - - throw new Error("illegal catch attempt"); - }, - delegateYield: function delegateYield(iterable, resultName, nextLoc) { - this.delegate = { - iterator: values(iterable), - resultName: resultName, - nextLoc: nextLoc - }; - - if (this.method === "next") { - this.arg = undefined; - } - - return ContinueSentinel; - } - }; - return exports; - }((false ? 0 : _typeof(module)) === "object" ? module.exports : {}); - - try { - regeneratorRuntime = runtime; - } catch (accidentalStrictMode) { - Function("r", "regeneratorRuntime = r")(runtime); - } - - /***/ - }), - /* 6 */ - /***/ ((__unused_webpack_module, exports) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.apiPageLayoutToSpreadMode = apiPageLayoutToSpreadMode; - exports.apiPageModeToSidebarView = apiPageModeToSidebarView; - exports.approximateFraction = approximateFraction; - exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; - exports.binarySearchFirstItem = binarySearchFirstItem; - exports.getActiveOrFocusedElement = getActiveOrFocusedElement; - exports.getOutputScale = getOutputScale; - exports.getPageSizeInches = getPageSizeInches; - exports.getVisibleElements = getVisibleElements; - exports.isPortraitOrientation = isPortraitOrientation; - exports.isValidRotation = isValidRotation; - exports.isValidScrollMode = isValidScrollMode; - exports.isValidSpreadMode = isValidSpreadMode; - exports.moveToEndOfArray = moveToEndOfArray; - exports.noContextMenuHandler = noContextMenuHandler; - exports.normalizeWheelEventDelta = normalizeWheelEventDelta; - exports.normalizeWheelEventDirection = normalizeWheelEventDirection; - exports.parseQueryString = parseQueryString; - exports.roundToDivide = roundToDivide; - exports.scrollIntoView = scrollIntoView; - exports.waitOnEventOrTimeout = waitOnEventOrTimeout; - exports.watchScroll = watchScroll; - exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE = exports.CSS_UNITS = exports.AutoPrintRegExp = exports.animationStarted = void 0; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - var CSS_UNITS = 96.0 / 72.0; - exports.CSS_UNITS = CSS_UNITS; - var DEFAULT_SCALE_VALUE = "auto"; - exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; - var DEFAULT_SCALE = 1.0; - exports.DEFAULT_SCALE = DEFAULT_SCALE; - var MIN_SCALE = 0.1; - exports.MIN_SCALE = MIN_SCALE; - var MAX_SCALE = 10.0; - exports.MAX_SCALE = MAX_SCALE; - var UNKNOWN_SCALE = 0; - exports.UNKNOWN_SCALE = UNKNOWN_SCALE; - var MAX_AUTO_SCALE = 1.25; - exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; - var SCROLLBAR_PADDING = 40; - exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; - var VERTICAL_PADDING = 5; - exports.VERTICAL_PADDING = VERTICAL_PADDING; - var LOADINGBAR_END_OFFSET_VAR = "--loadingBar-end-offset"; - var PresentationModeState = { - UNKNOWN: 0, - NORMAL: 1, - CHANGING: 2, - FULLSCREEN: 3 - }; - exports.PresentationModeState = PresentationModeState; - var SidebarView = { - UNKNOWN: -1, - NONE: 0, - THUMBS: 1, - OUTLINE: 2, - ATTACHMENTS: 3, - LAYERS: 4 - }; - exports.SidebarView = SidebarView; - var RendererType = { - CANVAS: "canvas", - SVG: "svg" - }; - exports.RendererType = RendererType; - var TextLayerMode = { - DISABLE: 0, - ENABLE: 1, - ENABLE_ENHANCE: 2 - }; - exports.TextLayerMode = TextLayerMode; - var ScrollMode = { - UNKNOWN: -1, - VERTICAL: 0, - HORIZONTAL: 1, - WRAPPED: 2 - }; - exports.ScrollMode = ScrollMode; - var SpreadMode = { - UNKNOWN: -1, - NONE: 0, - ODD: 1, - EVEN: 2 - }; - exports.SpreadMode = SpreadMode; - var AutoPrintRegExp = /\bprint\s*\(/; - exports.AutoPrintRegExp = AutoPrintRegExp; - - function getOutputScale(ctx) { - var devicePixelRatio = window.devicePixelRatio || 1; - var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; - var pixelRatio = devicePixelRatio / backingStoreRatio; - return { - sx: pixelRatio, - sy: pixelRatio, - scaled: pixelRatio !== 1 - }; - } - - function scrollIntoView(element, spot) { - var skipOverflowHiddenElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var parent = element.offsetParent; - - if (!parent) { - console.error("offsetParent is not set -- cannot scroll"); - return; - } - - var offsetY = element.offsetTop + element.clientTop; - var offsetX = element.offsetLeft + element.clientLeft; - - while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || skipOverflowHiddenElements && getComputedStyle(parent).overflow === "hidden") { - if (parent.dataset._scaleY) { - offsetY /= parent.dataset._scaleY; - offsetX /= parent.dataset._scaleX; - } - - offsetY += parent.offsetTop; - offsetX += parent.offsetLeft; - parent = parent.offsetParent; - - if (!parent) { - return; - } - } - - if (spot) { - if (spot.top !== undefined) { - offsetY += spot.top; - } - - if (spot.left !== undefined) { - offsetX += spot.left; - parent.scrollLeft = offsetX; - } - } - - parent.scrollTop = offsetY; - } - - function watchScroll(viewAreaElement, callback) { - var debounceScroll = function debounceScroll(evt) { - if (rAF) { - return; - } - - rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { - rAF = null; - var currentX = viewAreaElement.scrollLeft; - var lastX = state.lastX; - - if (currentX !== lastX) { - state.right = currentX > lastX; - } - - state.lastX = currentX; - var currentY = viewAreaElement.scrollTop; - var lastY = state.lastY; - - if (currentY !== lastY) { - state.down = currentY > lastY; - } - - state.lastY = currentY; - callback(state); - }); - }; - - var state = { - right: true, - down: true, - lastX: viewAreaElement.scrollLeft, - lastY: viewAreaElement.scrollTop, - _eventHandler: debounceScroll - }; - var rAF = null; - viewAreaElement.addEventListener("scroll", debounceScroll, true); - return state; - } - - function parseQueryString(query) { - var parts = query.split("&"); - var params = Object.create(null); - - for (var i = 0, ii = parts.length; i < ii; ++i) { - var param = parts[i].split("="); - var key = param[0].toLowerCase(); - var value = param.length > 1 ? param[1] : null; - params[decodeURIComponent(key)] = decodeURIComponent(value); - } - - return params; - } - - function binarySearchFirstItem(items, condition) { - var minIndex = 0; - var maxIndex = items.length - 1; - - if (maxIndex < 0 || !condition(items[maxIndex])) { - return items.length; - } - - if (condition(items[minIndex])) { - return minIndex; - } - - while (minIndex < maxIndex) { - var currentIndex = minIndex + maxIndex >> 1; - var currentItem = items[currentIndex]; - - if (condition(currentItem)) { - maxIndex = currentIndex; - } else { - minIndex = currentIndex + 1; - } - } - - return minIndex; - } - - function approximateFraction(x) { - if (Math.floor(x) === x) { - return [x, 1]; - } - - var xinv = 1 / x; - var limit = 8; - - if (xinv > limit) { - return [1, limit]; - } else if (Math.floor(xinv) === xinv) { - return [1, xinv]; - } - - var x_ = x > 1 ? xinv : x; - var a = 0, - b = 1, - c = 1, - d = 1; - - while (true) { - var p = a + c, - q = b + d; - - if (q > limit) { - break; - } - - if (x_ <= p / q) { - c = p; - d = q; - } else { - a = p; - b = q; - } - } - - var result; - - if (x_ - a / b < c / d - x_) { - result = x_ === x ? [a, b] : [b, a]; - } else { - result = x_ === x ? [c, d] : [d, c]; - } - - return result; - } - - function roundToDivide(x, div) { - var r = x % div; - return r === 0 ? x : Math.round(x - r + div); - } - - function getPageSizeInches(_ref) { - var view = _ref.view, - userUnit = _ref.userUnit, - rotate = _ref.rotate; - - var _view = _slicedToArray(view, 4), - x1 = _view[0], - y1 = _view[1], - x2 = _view[2], - y2 = _view[3]; - - var changeOrientation = rotate % 180 !== 0; - var width = (x2 - x1) / 72 * userUnit; - var height = (y2 - y1) / 72 * userUnit; - return { - width: changeOrientation ? height : width, - height: changeOrientation ? width : height - }; - } - - function backtrackBeforeAllVisibleElements(index, views, top) { - if (index < 2) { - return index; - } - - var elt = views[index].div; - var pageTop = elt.offsetTop + elt.clientTop; - - if (pageTop >= top) { - elt = views[index - 1].div; - pageTop = elt.offsetTop + elt.clientTop; - } - - for (var i = index - 2; i >= 0; --i) { - elt = views[i].div; - - if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) { - break; - } - - index = i; - } - - return index; - } - - function getVisibleElements(_ref2) { - var scrollEl = _ref2.scrollEl, - views = _ref2.views, - _ref2$sortByVisibilit = _ref2.sortByVisibility, - sortByVisibility = _ref2$sortByVisibilit === void 0 ? false : _ref2$sortByVisibilit, - _ref2$horizontal = _ref2.horizontal, - horizontal = _ref2$horizontal === void 0 ? false : _ref2$horizontal, - _ref2$rtl = _ref2.rtl, - rtl = _ref2$rtl === void 0 ? false : _ref2$rtl; - var top = scrollEl.scrollTop, - bottom = top + scrollEl.clientHeight; - var left = scrollEl.scrollLeft, - right = left + scrollEl.clientWidth; - - function isElementBottomAfterViewTop(view) { - var element = view.div; - var elementBottom = element.offsetTop + element.clientTop + element.clientHeight; - return elementBottom > top; - } - - function isElementNextAfterViewHorizontally(view) { - var element = view.div; - var elementLeft = element.offsetLeft + element.clientLeft; - var elementRight = elementLeft + element.clientWidth; - return rtl ? elementLeft < right : elementRight > left; - } - - var visible = [], - numViews = views.length; - var firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); - - if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { - firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); - } - - var lastEdge = horizontal ? right : -1; - - for (var i = firstVisibleElementInd; i < numViews; i++) { - var view = views[i], - element = view.div; - var currentWidth = element.offsetLeft + element.clientLeft; - var currentHeight = element.offsetTop + element.clientTop; - var viewWidth = element.clientWidth, - viewHeight = element.clientHeight; - var viewRight = currentWidth + viewWidth; - var viewBottom = currentHeight + viewHeight; - - if (lastEdge === -1) { - if (viewBottom >= bottom) { - lastEdge = viewBottom; - } - } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) { - break; - } - - if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) { - continue; - } - - var hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); - var hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); - var fractionHeight = (viewHeight - hiddenHeight) / viewHeight, - fractionWidth = (viewWidth - hiddenWidth) / viewWidth; - var percent = fractionHeight * fractionWidth * 100 | 0; - visible.push({ - id: view.id, - x: currentWidth, - y: currentHeight, - view: view, - percent: percent, - widthPercent: fractionWidth * 100 | 0 - }); - } - - var first = visible[0], - last = visible[visible.length - 1]; - - if (sortByVisibility) { - visible.sort(function (a, b) { - var pc = a.percent - b.percent; - - if (Math.abs(pc) > 0.001) { - return -pc; - } - - return a.id - b.id; - }); - } - - return { - first: first, - last: last, - views: visible - }; - } - - function noContextMenuHandler(evt) { - evt.preventDefault(); - } - - function normalizeWheelEventDirection(evt) { - var delta = Math.hypot(evt.deltaX, evt.deltaY); - var angle = Math.atan2(evt.deltaY, evt.deltaX); - - if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { - delta = -delta; - } - - return delta; - } - - function normalizeWheelEventDelta(evt) { - var delta = normalizeWheelEventDirection(evt); - var MOUSE_DOM_DELTA_PIXEL_MODE = 0; - var MOUSE_DOM_DELTA_LINE_MODE = 1; - var MOUSE_PIXELS_PER_LINE = 30; - var MOUSE_LINES_PER_PAGE = 30; - - if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) { - delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; - } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { - delta /= MOUSE_LINES_PER_PAGE; - } - - return delta; - } - - function isValidRotation(angle) { - return Number.isInteger(angle) && angle % 90 === 0; - } - - function isValidScrollMode(mode) { - return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN; - } - - function isValidSpreadMode(mode) { - return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN; - } - - function isPortraitOrientation(size) { - return size.width <= size.height; - } - - var WaitOnType = { - EVENT: "event", - TIMEOUT: "timeout" - }; - exports.WaitOnType = WaitOnType; - - function waitOnEventOrTimeout(_ref3) { - var target = _ref3.target, - name = _ref3.name, - _ref3$delay = _ref3.delay, - delay = _ref3$delay === void 0 ? 0 : _ref3$delay; - return new Promise(function (resolve, reject) { - if (_typeof(target) !== "object" || !(name && typeof name === "string") || !(Number.isInteger(delay) && delay >= 0)) { - throw new Error("waitOnEventOrTimeout - invalid parameters."); - } - - function handler(type) { - if (target instanceof EventBus) { - target._off(name, eventHandler); - } else { - target.removeEventListener(name, eventHandler); - } - - if (timeout) { - clearTimeout(timeout); - } - - resolve(type); - } - - var eventHandler = handler.bind(null, WaitOnType.EVENT); - - if (target instanceof EventBus) { - target._on(name, eventHandler); - } else { - target.addEventListener(name, eventHandler); - } - - var timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT); - var timeout = setTimeout(timeoutHandler, delay); - }); - } - - var animationStarted = new Promise(function (resolve) { - window.requestAnimationFrame(resolve); - }); - exports.animationStarted = animationStarted; - - function dispatchDOMEvent(eventName) { - var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - throw new Error("Not implemented: dispatchDOMEvent"); - } - - var EventBus = /*#__PURE__*/function () { - function EventBus(options) { - _classCallCheck(this, EventBus); - - this._listeners = Object.create(null); - } - - _createClass(EventBus, [{ - key: "on", - value: function on(eventName, listener) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - this._on(eventName, listener, { - external: true, - once: options === null || options === void 0 ? void 0 : options.once - }); - } - }, { - key: "off", - value: function off(eventName, listener) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - this._off(eventName, listener, { - external: true, - once: options === null || options === void 0 ? void 0 : options.once - }); - } - }, { - key: "dispatch", - value: function dispatch(eventName) { - var _this = this; - - var eventListeners = this._listeners[eventName]; - - if (!eventListeners || eventListeners.length === 0) { - return; - } - - var args = Array.prototype.slice.call(arguments, 1); - var externalListeners; - eventListeners.slice(0).forEach(function (_ref4) { - var listener = _ref4.listener, - external = _ref4.external, - once = _ref4.once; - - if (once) { - _this._off(eventName, listener); - } - - if (external) { - (externalListeners || (externalListeners = [])).push(listener); - return; - } - - listener.apply(null, args); - }); - - if (externalListeners) { - externalListeners.forEach(function (listener) { - listener.apply(null, args); - }); - externalListeners = null; - } - } - }, { - key: "_on", - value: function _on(eventName, listener) { - var _this$_listeners; - - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var eventListeners = (_this$_listeners = this._listeners)[eventName] || (_this$_listeners[eventName] = []); - eventListeners.push({ - listener: listener, - external: (options === null || options === void 0 ? void 0 : options.external) === true, - once: (options === null || options === void 0 ? void 0 : options.once) === true - }); - } - }, { - key: "_off", - value: function _off(eventName, listener) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var eventListeners = this._listeners[eventName]; - - if (!eventListeners) { - return; - } - - for (var i = 0, ii = eventListeners.length; i < ii; i++) { - if (eventListeners[i].listener === listener) { - eventListeners.splice(i, 1); - return; - } - } - } - }]); - - return EventBus; - }(); - - exports.EventBus = EventBus; - - function clamp(v, min, max) { - return Math.min(Math.max(v, min), max); - } - - var ProgressBar = /*#__PURE__*/function () { - function ProgressBar(id) { - var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - height = _ref5.height, - width = _ref5.width, - units = _ref5.units; - - _classCallCheck(this, ProgressBar); - - this.visible = true; - this.div = document.querySelector(id + " .progress"); - this.bar = this.div.parentNode; - this.height = height || 100; - this.width = width || 100; - this.units = units || "%"; - this.div.style.height = this.height + this.units; - this.percent = 0; - } - - _createClass(ProgressBar, [{ - key: "_updateBar", - value: function _updateBar() { - if (this._indeterminate) { - this.div.classList.add("indeterminate"); - this.div.style.width = this.width + this.units; - return; - } - - this.div.classList.remove("indeterminate"); - var progressSize = this.width * this._percent / 100; - this.div.style.width = progressSize + this.units; - } - }, { - key: "percent", - get: function get() { - return this._percent; - }, - set: function set(val) { - this._indeterminate = isNaN(val); - this._percent = clamp(val, 0, 100); - - this._updateBar(); - } - }, { - key: "setWidth", - value: function setWidth(viewer) { - if (!viewer) { - return; - } - - var container = viewer.parentNode; - var scrollbarWidth = container.offsetWidth - viewer.offsetWidth; - - if (scrollbarWidth > 0) { - var doc = document.documentElement; - doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, "".concat(scrollbarWidth, "px")); - } - } - }, { - key: "hide", - value: function hide() { - if (!this.visible) { - return; - } - - this.visible = false; - this.bar.classList.add("hidden"); - } - }, { - key: "show", - value: function show() { - if (this.visible) { - return; - } - - this.visible = true; - this.bar.classList.remove("hidden"); - } - }]); - - return ProgressBar; - }(); - - exports.ProgressBar = ProgressBar; - - function moveToEndOfArray(arr, condition) { - var moved = [], - len = arr.length; - var write = 0; - - for (var read = 0; read < len; ++read) { - if (condition(arr[read])) { - moved.push(arr[read]); - } else { - arr[write] = arr[read]; - ++write; - } - } - - for (var _read = 0; write < len; ++_read, ++write) { - arr[write] = moved[_read]; - } - } - - function getActiveOrFocusedElement() { - var curRoot = document; - var curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); - - while ((_curActiveOrFocused = curActiveOrFocused) !== null && _curActiveOrFocused !== void 0 && _curActiveOrFocused.shadowRoot) { - var _curActiveOrFocused; - - curRoot = curActiveOrFocused.shadowRoot; - curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); - } - - return curActiveOrFocused; - } - - function apiPageLayoutToSpreadMode(layout) { - switch (layout) { - case "SinglePage": - case "OneColumn": - return SpreadMode.NONE; - - case "TwoColumnLeft": - case "TwoPageLeft": - return SpreadMode.ODD; - - case "TwoColumnRight": - case "TwoPageRight": - return SpreadMode.EVEN; - } - - return SpreadMode.NONE; - } - - function apiPageModeToSidebarView(mode) { - switch (mode) { - case "UseNone": - return SidebarView.NONE; - - case "UseThumbs": - return SidebarView.THUMBS; - - case "UseOutlines": - return SidebarView.OUTLINE; - - case "UseAttachments": - return SidebarView.ATTACHMENTS; - - case "UseOC": - return SidebarView.LAYERS; - } - - return SidebarView.NONE; - } - - /***/ - }), - /* 7 */ - /***/ ((module) => { - - - var pdfjsLib; - - if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) { - pdfjsLib = window["pdfjs-dist/build/pdf"]; - } else { - pdfjsLib = require("pdf.js"); - } - - module.exports = pdfjsLib; - - /***/ - }), - /* 8 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFCursorTools = exports.CursorTool = void 0; - - var _grab_to_pan = __webpack_require__(9); - - var _ui_utils = __webpack_require__(6); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var CursorTool = { - SELECT: 0, - HAND: 1, - ZOOM: 2 - }; - exports.CursorTool = CursorTool; - - var PDFCursorTools = /*#__PURE__*/function () { - function PDFCursorTools(_ref) { - var _this = this; - - var container = _ref.container, - eventBus = _ref.eventBus, - _ref$cursorToolOnLoad = _ref.cursorToolOnLoad, - cursorToolOnLoad = _ref$cursorToolOnLoad === void 0 ? CursorTool.SELECT : _ref$cursorToolOnLoad; - - _classCallCheck(this, PDFCursorTools); - - this.container = container; - this.eventBus = eventBus; - this.active = CursorTool.SELECT; - this.activeBeforePresentationMode = null; - this.handTool = new _grab_to_pan.GrabToPan({ - element: this.container - }); - - this._addEventListeners(); - - Promise.resolve().then(function () { - _this.switchTool(cursorToolOnLoad); - }); - } - - _createClass(PDFCursorTools, [{ - key: "activeTool", - get: function get() { - return this.active; - } - }, { - key: "switchTool", - value: function switchTool(tool) { - var _this2 = this; - - if (this.activeBeforePresentationMode !== null) { - return; - } - - if (tool === this.active) { - return; - } - - var disableActiveTool = function disableActiveTool() { - switch (_this2.active) { - case CursorTool.SELECT: - break; - - case CursorTool.HAND: - _this2.handTool.deactivate(); - - break; - - case CursorTool.ZOOM: - } - }; - - switch (tool) { - case CursorTool.SELECT: - disableActiveTool(); - break; - - case CursorTool.HAND: - disableActiveTool(); - this.handTool.activate(); - break; - - case CursorTool.ZOOM: - default: - console.error("switchTool: \"".concat(tool, "\" is an unsupported value.")); - return; - } - - this.active = tool; - - this._dispatchEvent(); - } - }, { - key: "_dispatchEvent", - value: function _dispatchEvent() { - this.eventBus.dispatch("cursortoolchanged", { - source: this, - tool: this.active - }); - } - }, { - key: "_addEventListeners", - value: function _addEventListeners() { - var _this3 = this; - - this.eventBus._on("switchcursortool", function (evt) { - _this3.switchTool(evt.tool); - }); - - this.eventBus._on("presentationmodechanged", function (evt) { - switch (evt.state) { - case _ui_utils.PresentationModeState.FULLSCREEN: { - var previouslyActive = _this3.active; - - _this3.switchTool(CursorTool.SELECT); - - _this3.activeBeforePresentationMode = previouslyActive; - break; - } - - case _ui_utils.PresentationModeState.NORMAL: { - var _previouslyActive = _this3.activeBeforePresentationMode; - _this3.activeBeforePresentationMode = null; - - _this3.switchTool(_previouslyActive); - - break; - } - } - }); - } - }]); - - return PDFCursorTools; - }(); - - exports.PDFCursorTools = PDFCursorTools; - - /***/ - }), - /* 9 */ - /***/ ((__unused_webpack_module, exports) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.GrabToPan = GrabToPan; - - function GrabToPan(options) { - this.element = options.element; - this.document = options.element.ownerDocument; - - if (typeof options.ignoreTarget === "function") { - this.ignoreTarget = options.ignoreTarget; - } - - this.onActiveChanged = options.onActiveChanged; - this.activate = this.activate.bind(this); - this.deactivate = this.deactivate.bind(this); - this.toggle = this.toggle.bind(this); - this._onmousedown = this._onmousedown.bind(this); - this._onmousemove = this._onmousemove.bind(this); - this._endPan = this._endPan.bind(this); - var overlay = this.overlay = document.createElement("div"); - overlay.className = "grab-to-pan-grabbing"; - } - - GrabToPan.prototype = { - CSS_CLASS_GRAB: "grab-to-pan-grab", - activate: function GrabToPan_activate() { - if (!this.active) { - this.active = true; - this.element.addEventListener("mousedown", this._onmousedown, true); - this.element.classList.add(this.CSS_CLASS_GRAB); - - if (this.onActiveChanged) { - this.onActiveChanged(true); - } - } - }, - deactivate: function GrabToPan_deactivate() { - if (this.active) { - this.active = false; - this.element.removeEventListener("mousedown", this._onmousedown, true); - - this._endPan(); - - this.element.classList.remove(this.CSS_CLASS_GRAB); - - if (this.onActiveChanged) { - this.onActiveChanged(false); - } - } - }, - toggle: function GrabToPan_toggle() { - if (this.active) { - this.deactivate(); - } else { - this.activate(); - } - }, - ignoreTarget: function GrabToPan_ignoreTarget(node) { - return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option"); - }, - _onmousedown: function GrabToPan__onmousedown(event) { - if (event.button !== 0 || this.ignoreTarget(event.target)) { - return; - } - - if (event.originalTarget) { - try { - event.originalTarget.tagName; - } catch (e) { - return; - } - } - - this.scrollLeftStart = this.element.scrollLeft; - this.scrollTopStart = this.element.scrollTop; - this.clientXStart = event.clientX; - this.clientYStart = event.clientY; - this.document.addEventListener("mousemove", this._onmousemove, true); - this.document.addEventListener("mouseup", this._endPan, true); - this.element.addEventListener("scroll", this._endPan, true); - event.preventDefault(); - event.stopPropagation(); - var focusedElement = document.activeElement; - - if (focusedElement && !focusedElement.contains(event.target)) { - focusedElement.blur(); - } - }, - _onmousemove: function GrabToPan__onmousemove(event) { - this.element.removeEventListener("scroll", this._endPan, true); - - if (isLeftMouseReleased(event)) { - this._endPan(); - - return; - } - - var xDiff = event.clientX - this.clientXStart; - var yDiff = event.clientY - this.clientYStart; - var scrollTop = this.scrollTopStart - yDiff; - var scrollLeft = this.scrollLeftStart - xDiff; - - if (this.element.scrollTo) { - this.element.scrollTo({ - top: scrollTop, - left: scrollLeft, - behavior: "instant" - }); - } else { - this.element.scrollTop = scrollTop; - this.element.scrollLeft = scrollLeft; - } - - if (!this.overlay.parentNode) { - document.body.appendChild(this.overlay); - } - }, - _endPan: function GrabToPan__endPan() { - this.element.removeEventListener("scroll", this._endPan, true); - this.document.removeEventListener("mousemove", this._onmousemove, true); - this.document.removeEventListener("mouseup", this._endPan, true); - this.overlay.remove(); - } - }; - - function isLeftMouseReleased(event) { - if ("buttons" in event) { - return !(event.buttons & 1); - } - - var chrome = window.chrome; - var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app); - var isSafari6plus = /Apple/.test(navigator.vendor) && /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent); - - if (isChrome15OrOpera15plus || isSafari6plus) { - return event.which === 0; - } - - return false; - } - - /***/ - }), - /* 10 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.RenderingStates = exports.PDFRenderingQueue = void 0; - - var _pdfjsLib = __webpack_require__(7); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var CLEANUP_TIMEOUT = 30000; - var RenderingStates = { - INITIAL: 0, - RUNNING: 1, - PAUSED: 2, - FINISHED: 3 - }; - exports.RenderingStates = RenderingStates; - - var PDFRenderingQueue = /*#__PURE__*/function () { - function PDFRenderingQueue() { - _classCallCheck(this, PDFRenderingQueue); - - this.pdfViewer = null; - this.pdfThumbnailViewer = null; - this.onIdle = null; - this.highestPriorityPage = null; - this.idleTimeout = null; - this.printing = false; - this.isThumbnailViewEnabled = false; - } - - _createClass(PDFRenderingQueue, [{ - key: "setViewer", - value: function setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - } - }, { - key: "setThumbnailViewer", - value: function setThumbnailViewer(pdfThumbnailViewer) { - this.pdfThumbnailViewer = pdfThumbnailViewer; - } - }, { - key: "isHighestPriority", - value: function isHighestPriority(view) { - return this.highestPriorityPage === view.renderingId; - } - }, { - key: "renderHighestPriority", - value: function renderHighestPriority(currentlyVisiblePages) { - if (this.idleTimeout) { - clearTimeout(this.idleTimeout); - this.idleTimeout = null; - } - - if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { - return; - } - - if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { - if (this.pdfThumbnailViewer.forceRendering()) { - return; - } - } - - if (this.printing) { - return; - } - - if (this.onIdle) { - this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); - } - } - }, { - key: "getHighestPriority", - value: function getHighestPriority(visible, views, scrolledDown) { - var visibleViews = visible.views; - var numVisible = visibleViews.length; - - if (numVisible === 0) { - return null; - } - - for (var i = 0; i < numVisible; ++i) { - var view = visibleViews[i].view; - - if (!this.isViewFinished(view)) { - return view; - } - } - - if (scrolledDown) { - var nextPageIndex = visible.last.id; - - if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) { - return views[nextPageIndex]; - } - } else { - var previousPageIndex = visible.first.id - 2; - - if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) { - return views[previousPageIndex]; - } - } - - return null; - } - }, { - key: "isViewFinished", - value: function isViewFinished(view) { - return view.renderingState === RenderingStates.FINISHED; - } - }, { - key: "renderView", - value: function renderView(view) { - var _this = this; - - switch (view.renderingState) { - case RenderingStates.FINISHED: - return false; - - case RenderingStates.PAUSED: - this.highestPriorityPage = view.renderingId; - view.resume(); - break; - - case RenderingStates.RUNNING: - this.highestPriorityPage = view.renderingId; - break; - - case RenderingStates.INITIAL: - this.highestPriorityPage = view.renderingId; - view.draw()["finally"](function () { - _this.renderHighestPriority(); - })["catch"](function (reason) { - if (reason instanceof _pdfjsLib.RenderingCancelledException) { - return; - } - - console.error("renderView: \"".concat(reason, "\"")); - }); - break; - } - - return true; - } - }]); - - return PDFRenderingQueue; - }(); - - exports.PDFRenderingQueue = PDFRenderingQueue; - - /***/ - }), - /* 11 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.OverlayManager = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var OverlayManager = /*#__PURE__*/function () { - function OverlayManager() { - _classCallCheck(this, OverlayManager); - - this._overlays = {}; - this._active = null; - this._keyDownBound = this._keyDown.bind(this); - } - - _createClass(OverlayManager, [{ - key: "active", - get: function get() { - return this._active; - } - }, { - key: "register", - value: function () { - var _register = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(name, element) { - var callerCloseMethod, - canForceClose, - container, - _args = arguments; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - callerCloseMethod = _args.length > 2 && _args[2] !== undefined ? _args[2] : null; - canForceClose = _args.length > 3 && _args[3] !== undefined ? _args[3] : false; - - if (!(!name || !element || !(container = element.parentNode))) { - _context.next = 6; - break; - } - - throw new Error("Not enough parameters."); - - case 6: - if (!this._overlays[name]) { - _context.next = 8; - break; - } - - throw new Error("The overlay is already registered."); - - case 8: - this._overlays[name] = { - element: element, - container: container, - callerCloseMethod: callerCloseMethod, - canForceClose: canForceClose - }; - - case 9: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function register(_x, _x2) { - return _register.apply(this, arguments); - } - - return register; - }() - }, { - key: "unregister", - value: function () { - var _unregister = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(name) { - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (this._overlays[name]) { - _context2.next = 4; - break; - } - - throw new Error("The overlay does not exist."); - - case 4: - if (!(this._active === name)) { - _context2.next = 6; - break; - } - - throw new Error("The overlay cannot be removed while it is active."); - - case 6: - delete this._overlays[name]; - - case 7: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function unregister(_x3) { - return _unregister.apply(this, arguments); - } - - return unregister; - }() - }, { - key: "open", - value: function () { - var _open = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3(name) { - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - if (this._overlays[name]) { - _context3.next = 4; - break; - } - - throw new Error("The overlay does not exist."); - - case 4: - if (!this._active) { - _context3.next = 14; - break; - } - - if (!this._overlays[name].canForceClose) { - _context3.next = 9; - break; - } - - this._closeThroughCaller(); - - _context3.next = 14; - break; - - case 9: - if (!(this._active === name)) { - _context3.next = 13; - break; - } - - throw new Error("The overlay is already active."); - - case 13: - throw new Error("Another overlay is currently active."); - - case 14: - this._active = name; - - this._overlays[this._active].element.classList.remove("hidden"); - - this._overlays[this._active].container.classList.remove("hidden"); - - window.addEventListener("keydown", this._keyDownBound); - - case 18: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function open(_x4) { - return _open.apply(this, arguments); - } - - return open; - }() - }, { - key: "close", - value: function () { - var _close = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4(name) { - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - if (this._overlays[name]) { - _context4.next = 4; - break; - } - - throw new Error("The overlay does not exist."); - - case 4: - if (this._active) { - _context4.next = 8; - break; - } - - throw new Error("The overlay is currently not active."); - - case 8: - if (!(this._active !== name)) { - _context4.next = 10; - break; - } - - throw new Error("Another overlay is currently active."); - - case 10: - this._overlays[this._active].container.classList.add("hidden"); - - this._overlays[this._active].element.classList.add("hidden"); - - this._active = null; - window.removeEventListener("keydown", this._keyDownBound); - - case 14: - case "end": - return _context4.stop(); - } - } - }, _callee4, this); - })); - - function close(_x5) { - return _close.apply(this, arguments); - } - - return close; - }() - }, { - key: "_keyDown", - value: function _keyDown(evt) { - if (this._active && evt.keyCode === 27) { - this._closeThroughCaller(); - - evt.preventDefault(); - } - } - }, { - key: "_closeThroughCaller", - value: function _closeThroughCaller() { - if (this._overlays[this._active].callerCloseMethod) { - this._overlays[this._active].callerCloseMethod(); - } - - if (this._active) { - this.close(this._active); - } - } - }]); - - return OverlayManager; - }(); - - exports.OverlayManager = OverlayManager; - - /***/ - }), - /* 12 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PasswordPrompt = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _pdfjsLib = __webpack_require__(7); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var PasswordPrompt = /*#__PURE__*/function () { - function PasswordPrompt(options, overlayManager, l10n) { - var _this = this; - - var isViewerEmbedded = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - _classCallCheck(this, PasswordPrompt); - - this.overlayName = options.overlayName; - this.container = options.container; - this.label = options.label; - this.input = options.input; - this.submitButton = options.submitButton; - this.cancelButton = options.cancelButton; - this.overlayManager = overlayManager; - this.l10n = l10n; - this._isViewerEmbedded = isViewerEmbedded; - this.updateCallback = null; - this.reason = null; - this.submitButton.addEventListener("click", this.verify.bind(this)); - this.cancelButton.addEventListener("click", this.close.bind(this)); - this.input.addEventListener("keydown", function (e) { - if (e.keyCode === 13) { - _this.verify(); - } - }); - this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true); - } - - _createClass(PasswordPrompt, [{ - key: "open", - value: function () { - var _open = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var passwordIncorrect; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return this.overlayManager.open(this.overlayName); - - case 2: - passwordIncorrect = this.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; - - if (!this._isViewerEmbedded || passwordIncorrect) { - this.input.focus(); - } - - _context.next = 6; - return this.l10n.get("password_".concat(passwordIncorrect ? "invalid" : "label")); - - case 6: - this.label.textContent = _context.sent; - - case 7: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function open() { - return _open.apply(this, arguments); - } - - return open; - }() - }, { - key: "close", - value: function close() { - var _this2 = this; - - this.overlayManager.close(this.overlayName).then(function () { - _this2.input.value = ""; - }); - } - }, { - key: "verify", - value: function verify() { - var password = this.input.value; - - if ((password === null || password === void 0 ? void 0 : password.length) > 0) { - this.close(); - this.updateCallback(password); - } - } - }, { - key: "setUpdateCallback", - value: function setUpdateCallback(updateCallback, reason) { - this.updateCallback = updateCallback; - this.reason = reason; - } - }]); - - return PasswordPrompt; - }(); - - exports.PasswordPrompt = PasswordPrompt; - - /***/ - }), - /* 13 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFAttachmentViewer = void 0; - - var _pdfjsLib = __webpack_require__(7); - - var _base_tree_viewer = __webpack_require__(14); - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _get(target, property, receiver) { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(receiver); - } - return desc.value; - }; - } - return _get(target, property, receiver || target); - } - - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - var PDFAttachmentViewer = /*#__PURE__*/function (_BaseTreeViewer) { - _inherits(PDFAttachmentViewer, _BaseTreeViewer); - - var _super = _createSuper(PDFAttachmentViewer); - - function PDFAttachmentViewer(options) { - var _this; - - _classCallCheck(this, PDFAttachmentViewer); - - _this = _super.call(this, options); - _this.downloadManager = options.downloadManager; - - _this.eventBus._on("fileattachmentannotation", _this._appendAttachment.bind(_assertThisInitialized(_this))); - - return _this; - } - - _createClass(PDFAttachmentViewer, [{ - key: "reset", - value: function reset() { - var keepRenderedCapability = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - _get(_getPrototypeOf(PDFAttachmentViewer.prototype), "reset", this).call(this); - - this._attachments = null; - - if (!keepRenderedCapability) { - this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)(); - } - - if (this._pendingDispatchEvent) { - clearTimeout(this._pendingDispatchEvent); - } - - this._pendingDispatchEvent = null; - } - }, { - key: "_dispatchEvent", - value: function _dispatchEvent(attachmentsCount) { - var _this2 = this; - - this._renderedCapability.resolve(); - - if (this._pendingDispatchEvent) { - clearTimeout(this._pendingDispatchEvent); - this._pendingDispatchEvent = null; - } - - if (attachmentsCount === 0) { - this._pendingDispatchEvent = setTimeout(function () { - _this2.eventBus.dispatch("attachmentsloaded", { - source: _this2, - attachmentsCount: 0 - }); - - _this2._pendingDispatchEvent = null; - }); - return; - } - - this.eventBus.dispatch("attachmentsloaded", { - source: this, - attachmentsCount: attachmentsCount - }); - } - }, { - key: "_bindLink", - value: function _bindLink(element, _ref) { - var _this3 = this; - - var content = _ref.content, - filename = _ref.filename; - - element.onclick = function () { - _this3.downloadManager.openOrDownloadData(element, content, filename); - - return false; - }; - } - }, { - key: "render", - value: function render(_ref2) { - var attachments = _ref2.attachments, - _ref2$keepRenderedCap = _ref2.keepRenderedCapability, - keepRenderedCapability = _ref2$keepRenderedCap === void 0 ? false : _ref2$keepRenderedCap; - - if (this._attachments) { - this.reset(keepRenderedCapability); - } - - this._attachments = attachments || null; - - if (!attachments) { - this._dispatchEvent(0); - - return; - } - - var names = Object.keys(attachments).sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - var fragment = document.createDocumentFragment(); - var attachmentsCount = 0; - - var _iterator = _createForOfIteratorHelper(names), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var name = _step.value; - var item = attachments[name]; - var content = item.content, - filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename); - var div = document.createElement("div"); - div.className = "treeItem"; - var element = document.createElement("a"); - - this._bindLink(element, { - content: content, - filename: filename - }); - - element.textContent = this._normalizeTextContent(filename); - div.appendChild(element); - fragment.appendChild(div); - attachmentsCount++; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - this._finishRendering(fragment, attachmentsCount); - } - }, { - key: "_appendAttachment", - value: function _appendAttachment(_ref3) { - var _this4 = this; - - var id = _ref3.id, - filename = _ref3.filename, - content = _ref3.content; - var renderedPromise = this._renderedCapability.promise; - renderedPromise.then(function () { - if (renderedPromise !== _this4._renderedCapability.promise) { - return; - } - - var attachments = _this4._attachments; - - if (!attachments) { - attachments = Object.create(null); - } else { - for (var name in attachments) { - if (id === name) { - return; - } - } - } - - attachments[id] = { - filename: filename, - content: content - }; - - _this4.render({ - attachments: attachments, - keepRenderedCapability: true - }); - }); - } - }]); - - return PDFAttachmentViewer; - }(_base_tree_viewer.BaseTreeViewer); - - exports.PDFAttachmentViewer = PDFAttachmentViewer; - - /***/ - }), - /* 14 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.BaseTreeViewer = void 0; - - var _pdfjsLib = __webpack_require__(7); - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var TREEITEM_OFFSET_TOP = -100; - var TREEITEM_SELECTED_CLASS = "selected"; - - var BaseTreeViewer = /*#__PURE__*/function () { - function BaseTreeViewer(options) { - _classCallCheck(this, BaseTreeViewer); - - if (this.constructor === BaseTreeViewer) { - throw new Error("Cannot initialize BaseTreeViewer."); - } - - this.container = options.container; - this.eventBus = options.eventBus; - this.reset(); - } - - _createClass(BaseTreeViewer, [{ - key: "reset", - value: function reset() { - this._pdfDocument = null; - this._lastToggleIsShow = true; - this._currentTreeItem = null; - this.container.textContent = ""; - this.container.classList.remove("treeWithDeepNesting"); - } - }, { - key: "_dispatchEvent", - value: function _dispatchEvent(count) { - throw new Error("Not implemented: _dispatchEvent"); - } - }, { - key: "_bindLink", - value: function _bindLink(element, params) { - throw new Error("Not implemented: _bindLink"); - } - }, { - key: "_normalizeTextContent", - value: function _normalizeTextContent(str) { - return (0, _pdfjsLib.removeNullCharacters)(str) || "\u2013"; - } - }, { - key: "_addToggleButton", - value: function _addToggleButton(div) { - var _this = this; - - var hidden = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var toggler = document.createElement("div"); - toggler.className = "treeItemToggler"; - - if (hidden) { - toggler.classList.add("treeItemsHidden"); - } - - toggler.onclick = function (evt) { - evt.stopPropagation(); - toggler.classList.toggle("treeItemsHidden"); - - if (evt.shiftKey) { - var shouldShowAll = !toggler.classList.contains("treeItemsHidden"); - - _this._toggleTreeItem(div, shouldShowAll); - } - }; - - div.insertBefore(toggler, div.firstChild); - } - }, { - key: "_toggleTreeItem", - value: function _toggleTreeItem(root) { - var show = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - this._lastToggleIsShow = show; - - var _iterator = _createForOfIteratorHelper(root.querySelectorAll(".treeItemToggler")), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var toggler = _step.value; - toggler.classList.toggle("treeItemsHidden", !show); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - }, { - key: "_toggleAllTreeItems", - value: function _toggleAllTreeItems() { - this._toggleTreeItem(this.container, !this._lastToggleIsShow); - } - }, { - key: "_finishRendering", - value: function _finishRendering(fragment, count) { - var hasAnyNesting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (hasAnyNesting) { - this.container.classList.add("treeWithDeepNesting"); - this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden"); - } - - this.container.appendChild(fragment); - - this._dispatchEvent(count); - } - }, { - key: "render", - value: function render(params) { - throw new Error("Not implemented: render"); - } - }, { - key: "_updateCurrentTreeItem", - value: function _updateCurrentTreeItem() { - var treeItem = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (this._currentTreeItem) { - this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS); - - this._currentTreeItem = null; - } - - if (treeItem) { - treeItem.classList.add(TREEITEM_SELECTED_CLASS); - this._currentTreeItem = treeItem; - } - } - }, { - key: "_scrollToCurrentTreeItem", - value: function _scrollToCurrentTreeItem(treeItem) { - if (!treeItem) { - return; - } - - var currentNode = treeItem.parentNode; - - while (currentNode && currentNode !== this.container) { - if (currentNode.classList.contains("treeItem")) { - var toggler = currentNode.firstElementChild; - toggler === null || toggler === void 0 ? void 0 : toggler.classList.remove("treeItemsHidden"); - } - - currentNode = currentNode.parentNode; - } - - this._updateCurrentTreeItem(treeItem); - - this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP); - } - }]); - - return BaseTreeViewer; - }(); - - exports.BaseTreeViewer = BaseTreeViewer; - - /***/ - }), - /* 15 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFDocumentProperties = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _pdfjsLib = __webpack_require__(7); - - var _ui_utils = __webpack_require__(6); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var DEFAULT_FIELD_CONTENT = "-"; - var NON_METRIC_LOCALES = ["en-us", "en-lr", "my"]; - var US_PAGE_NAMES = { - "8.5x11": "Letter", - "8.5x14": "Legal" - }; - var METRIC_PAGE_NAMES = { - "297x420": "A3", - "210x297": "A4" - }; - - function getPageName(size, isPortrait, pageNames) { - var width = isPortrait ? size.width : size.height; - var height = isPortrait ? size.height : size.width; - return pageNames["".concat(width, "x").concat(height)]; - } - - var PDFDocumentProperties = /*#__PURE__*/function () { - function PDFDocumentProperties(_ref, overlayManager, eventBus, l10n) { - var _this = this; - - var overlayName = _ref.overlayName, - fields = _ref.fields, - container = _ref.container, - closeButton = _ref.closeButton; - - _classCallCheck(this, PDFDocumentProperties); - - this.overlayName = overlayName; - this.fields = fields; - this.container = container; - this.overlayManager = overlayManager; - this.l10n = l10n; - - this._reset(); - - closeButton.addEventListener("click", this.close.bind(this)); - this.overlayManager.register(this.overlayName, this.container, this.close.bind(this)); - - eventBus._on("pagechanging", function (evt) { - _this._currentPageNumber = evt.pageNumber; - }); - - eventBus._on("rotationchanging", function (evt) { - _this._pagesRotation = evt.pagesRotation; - }); - - this._isNonMetricLocale = true; - l10n.getLanguage().then(function (locale) { - _this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale); - }); - } - - _createClass(PDFDocumentProperties, [{ - key: "open", - value: function () { - var _open = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var _this2 = this; - - var freezeFieldData, currentPageNumber, pagesRotation, _yield$this$pdfDocume, info, - contentDispositionFilename, contentLength, _yield$Promise$all, _yield$Promise$all2, - fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized, - _yield$this$pdfDocume2, length, data; - - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - freezeFieldData = function freezeFieldData(data) { - Object.defineProperty(_this2, "fieldData", { - value: Object.freeze(data), - writable: false, - enumerable: true, - configurable: true - }); - }; - - _context.next = 3; - return Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]); - - case 3: - currentPageNumber = this._currentPageNumber; - pagesRotation = this._pagesRotation; - - if (!(this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation)) { - _context.next = 8; - break; - } - - this._updateUI(); - - return _context.abrupt("return"); - - case 8: - _context.next = 10; - return this.pdfDocument.getMetadata(); - - case 10: - _yield$this$pdfDocume = _context.sent; - info = _yield$this$pdfDocume.info; - contentDispositionFilename = _yield$this$pdfDocume.contentDispositionFilename; - contentLength = _yield$this$pdfDocume.contentLength; - _context.next = 16; - return Promise.all([contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url), this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(function (pdfPage) { - return _this2._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); - }), this._parseLinearization(info.IsLinearized)]); - - case 16: - _yield$Promise$all = _context.sent; - _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 6); - fileName = _yield$Promise$all2[0]; - fileSize = _yield$Promise$all2[1]; - creationDate = _yield$Promise$all2[2]; - modificationDate = _yield$Promise$all2[3]; - pageSize = _yield$Promise$all2[4]; - isLinearized = _yield$Promise$all2[5]; - freezeFieldData({ - fileName: fileName, - fileSize: fileSize, - title: info.Title, - author: info.Author, - subject: info.Subject, - keywords: info.Keywords, - creationDate: creationDate, - modificationDate: modificationDate, - creator: info.Creator, - producer: info.Producer, - version: info.PDFFormatVersion, - pageCount: this.pdfDocument.numPages, - pageSize: pageSize, - linearized: isLinearized, - _currentPageNumber: currentPageNumber, - _pagesRotation: pagesRotation - }); - - this._updateUI(); - - _context.next = 28; - return this.pdfDocument.getDownloadInfo(); - - case 28: - _yield$this$pdfDocume2 = _context.sent; - length = _yield$this$pdfDocume2.length; - - if (!(contentLength === length)) { - _context.next = 32; - break; - } - - return _context.abrupt("return"); - - case 32: - data = Object.assign(Object.create(null), this.fieldData); - _context.next = 35; - return this._parseFileSize(length); - - case 35: - data.fileSize = _context.sent; - freezeFieldData(data); - - this._updateUI(); - - case 38: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function open() { - return _open.apply(this, arguments); - } - - return open; - }() - }, { - key: "close", - value: function close() { - this.overlayManager.close(this.overlayName); - } - }, { - key: "setDocument", - value: function setDocument(pdfDocument) { - var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (this.pdfDocument) { - this._reset(); - - this._updateUI(true); - } - - if (!pdfDocument) { - return; - } - - this.pdfDocument = pdfDocument; - this.url = url; - - this._dataAvailableCapability.resolve(); - } - }, { - key: "_reset", - value: function _reset() { - this.pdfDocument = null; - this.url = null; - delete this.fieldData; - this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._currentPageNumber = 1; - this._pagesRotation = 0; - } - }, { - key: "_updateUI", - value: function _updateUI() { - var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (reset || !this.fieldData) { - for (var id in this.fields) { - this.fields[id].textContent = DEFAULT_FIELD_CONTENT; - } - - return; - } - - if (this.overlayManager.active !== this.overlayName) { - return; - } - - for (var _id in this.fields) { - var content = this.fieldData[_id]; - this.fields[_id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT; - } - } - }, { - key: "_parseFileSize", - value: function () { - var _parseFileSize2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var fileSize, - kb, - mb, - _args2 = arguments; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - fileSize = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : 0; - kb = fileSize / 1024, mb = kb / 1024; - - if (kb) { - _context2.next = 4; - break; - } - - return _context2.abrupt("return", undefined); - - case 4: - return _context2.abrupt("return", this.l10n.get("document_properties_".concat(mb >= 1 ? "mb" : "kb"), { - size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(), - size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(), - size_b: fileSize.toLocaleString() - })); - - case 5: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function _parseFileSize() { - return _parseFileSize2.apply(this, arguments); - } - - return _parseFileSize; - }() - }, { - key: "_parsePageSize", - value: function () { - var _parsePageSize2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3(pageSizeInches, pagesRotation) { - var isPortrait, sizeInches, sizeMillimeters, rawName, exactMillimeters, intMillimeters, - _yield$Promise$all3, _yield$Promise$all4, _yield$Promise$all4$, width, height, unit, - name, orientation; - - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - if (pageSizeInches) { - _context3.next = 2; - break; - } - - return _context3.abrupt("return", undefined); - - case 2: - if (pagesRotation % 180 !== 0) { - pageSizeInches = { - width: pageSizeInches.height, - height: pageSizeInches.width - }; - } - - isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches); - sizeInches = { - width: Math.round(pageSizeInches.width * 100) / 100, - height: Math.round(pageSizeInches.height * 100) / 100 - }; - sizeMillimeters = { - width: Math.round(pageSizeInches.width * 25.4 * 10) / 10, - height: Math.round(pageSizeInches.height * 25.4 * 10) / 10 - }; - rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES); - - if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) { - exactMillimeters = { - width: pageSizeInches.width * 25.4, - height: pageSizeInches.height * 25.4 - }; - intMillimeters = { - width: Math.round(sizeMillimeters.width), - height: Math.round(sizeMillimeters.height) - }; - - if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) { - rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES); - - if (rawName) { - sizeInches = { - width: Math.round(intMillimeters.width / 25.4 * 100) / 100, - height: Math.round(intMillimeters.height / 25.4 * 100) / 100 - }; - sizeMillimeters = intMillimeters; - } - } - } - - _context3.next = 10; - return Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get("document_properties_page_size_unit_".concat(this._isNonMetricLocale ? "inches" : "millimeters")), rawName && this.l10n.get("document_properties_page_size_name_".concat(rawName.toLowerCase())), this.l10n.get("document_properties_page_size_orientation_".concat(isPortrait ? "portrait" : "landscape"))]); - - case 10: - _yield$Promise$all3 = _context3.sent; - _yield$Promise$all4 = _slicedToArray(_yield$Promise$all3, 4); - _yield$Promise$all4$ = _yield$Promise$all4[0]; - width = _yield$Promise$all4$.width; - height = _yield$Promise$all4$.height; - unit = _yield$Promise$all4[1]; - name = _yield$Promise$all4[2]; - orientation = _yield$Promise$all4[3]; - return _context3.abrupt("return", this.l10n.get("document_properties_page_size_dimension_".concat(name ? "name_" : "", "string"), { - width: width.toLocaleString(), - height: height.toLocaleString(), - unit: unit, - name: name, - orientation: orientation - })); - - case 19: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function _parsePageSize(_x, _x2) { - return _parsePageSize2.apply(this, arguments); - } - - return _parsePageSize; - }() - }, { - key: "_parseDate", - value: function () { - var _parseDate2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4(inputDate) { - var dateObject; - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate); - - if (dateObject) { - _context4.next = 3; - break; - } - - return _context4.abrupt("return", undefined); - - case 3: - return _context4.abrupt("return", this.l10n.get("document_properties_date_string", { - date: dateObject.toLocaleDateString(), - time: dateObject.toLocaleTimeString() - })); - - case 4: - case "end": - return _context4.stop(); - } - } - }, _callee4, this); - })); - - function _parseDate(_x3) { - return _parseDate2.apply(this, arguments); - } - - return _parseDate; - }() - }, { - key: "_parseLinearization", - value: function _parseLinearization(isLinearized) { - return this.l10n.get("document_properties_linearized_".concat(isLinearized ? "yes" : "no")); - } - }]); - - return PDFDocumentProperties; - }(); - - exports.PDFDocumentProperties = PDFDocumentProperties; - - /***/ - }), - /* 16 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFFindBar = void 0; - - var _pdf_find_controller = __webpack_require__(17); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var MATCHES_COUNT_LIMIT = 1000; - - var PDFFindBar = /*#__PURE__*/function () { - function PDFFindBar(options, eventBus, l10n) { - var _this = this; - - _classCallCheck(this, PDFFindBar); - - this.opened = false; - this.bar = options.bar; - this.toggleButton = options.toggleButton; - this.findField = options.findField; - this.highlightAll = options.highlightAllCheckbox; - this.caseSensitive = options.caseSensitiveCheckbox; - this.entireWord = options.entireWordCheckbox; - this.findMsg = options.findMsg; - this.findResultsCount = options.findResultsCount; - this.findPreviousButton = options.findPreviousButton; - this.findNextButton = options.findNextButton; - this.eventBus = eventBus; - this.l10n = l10n; - this.toggleButton.addEventListener("click", function () { - _this.toggle(); - }); - this.findField.addEventListener("input", function () { - _this.dispatchEvent(""); - }); - this.bar.addEventListener("keydown", function (e) { - switch (e.keyCode) { - case 13: - if (e.target === _this.findField) { - _this.dispatchEvent("again", e.shiftKey); - } - - break; - - case 27: - _this.close(); - - break; - } - }); - this.findPreviousButton.addEventListener("click", function () { - _this.dispatchEvent("again", true); - }); - this.findNextButton.addEventListener("click", function () { - _this.dispatchEvent("again", false); - }); - this.highlightAll.addEventListener("click", function () { - _this.dispatchEvent("highlightallchange"); - }); - this.caseSensitive.addEventListener("click", function () { - _this.dispatchEvent("casesensitivitychange"); - }); - this.entireWord.addEventListener("click", function () { - _this.dispatchEvent("entirewordchange"); - }); - - this.eventBus._on("resize", this._adjustWidth.bind(this)); - } - - _createClass(PDFFindBar, [{ - key: "reset", - value: function reset() { - this.updateUIState(); - } - }, { - key: "dispatchEvent", - value: function dispatchEvent(type, findPrev) { - this.eventBus.dispatch("find", { - source: this, - type: type, - query: this.findField.value, - phraseSearch: true, - caseSensitive: this.caseSensitive.checked, - entireWord: this.entireWord.checked, - highlightAll: this.highlightAll.checked, - findPrevious: findPrev - }); - } - }, { - key: "updateUIState", - value: function updateUIState(state, previous, matchesCount) { - var _this2 = this; - - var findMsg = Promise.resolve(""); - var status = ""; - - switch (state) { - case _pdf_find_controller.FindState.FOUND: - break; - - case _pdf_find_controller.FindState.PENDING: - status = "pending"; - break; - - case _pdf_find_controller.FindState.NOT_FOUND: - findMsg = this.l10n.get("find_not_found"); - status = "notFound"; - break; - - case _pdf_find_controller.FindState.WRAPPED: - findMsg = this.l10n.get("find_reached_".concat(previous ? "top" : "bottom")); - break; - } - - this.findField.setAttribute("data-status", status); - findMsg.then(function (msg) { - _this2.findMsg.textContent = msg; - - _this2._adjustWidth(); - }); - this.updateResultsCount(matchesCount); - } - }, { - key: "updateResultsCount", - value: function updateResultsCount() { - var _this3 = this; - - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$current = _ref.current, - current = _ref$current === void 0 ? 0 : _ref$current, - _ref$total = _ref.total, - total = _ref$total === void 0 ? 0 : _ref$total; - - var limit = MATCHES_COUNT_LIMIT; - var matchCountMsg = Promise.resolve(""); - - if (total > 0) { - if (total > limit) { - var key = "find_match_count_limit"; - matchCountMsg = this.l10n.get(key, { - limit: limit - }); - } else { - var _key = "find_match_count"; - matchCountMsg = this.l10n.get(_key, { - current: current, - total: total - }); - } - } - - matchCountMsg.then(function (msg) { - _this3.findResultsCount.textContent = msg; - - _this3.findResultsCount.classList.toggle("hidden", !total); - - _this3._adjustWidth(); - }); - } - }, { - key: "open", - value: function open() { - if (!this.opened) { - this.opened = true; - this.toggleButton.classList.add("toggled"); - this.toggleButton.setAttribute("aria-expanded", "true"); - this.bar.classList.remove("hidden"); - } - - this.findField.select(); - this.findField.focus(); - - this._adjustWidth(); - } - }, { - key: "close", - value: function close() { - if (!this.opened) { - return; - } - - this.opened = false; - this.toggleButton.classList.remove("toggled"); - this.toggleButton.setAttribute("aria-expanded", "false"); - this.bar.classList.add("hidden"); - this.eventBus.dispatch("findbarclose", { - source: this - }); - } - }, { - key: "toggle", - value: function toggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - } - }, { - key: "_adjustWidth", - value: function _adjustWidth() { - if (!this.opened) { - return; - } - - this.bar.classList.remove("wrapContainers"); - var findbarHeight = this.bar.clientHeight; - var inputContainerHeight = this.bar.firstElementChild.clientHeight; - - if (findbarHeight > inputContainerHeight) { - this.bar.classList.add("wrapContainers"); - } - } - }]); - - return PDFFindBar; - }(); - - exports.PDFFindBar = PDFFindBar; - - /***/ - }), - /* 17 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFFindController = exports.FindState = void 0; - - var _pdfjsLib = __webpack_require__(7); - - var _pdf_find_utils = __webpack_require__(18); - - var _ui_utils = __webpack_require__(6); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e2) { - throw _e2; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - var FindState = { - FOUND: 0, - NOT_FOUND: 1, - WRAPPED: 2, - PENDING: 3 - }; - exports.FindState = FindState; - var FIND_TIMEOUT = 250; - var MATCH_SCROLL_OFFSET_TOP = -50; - var MATCH_SCROLL_OFFSET_LEFT = -400; - var CHARACTERS_TO_NORMALIZE = { - "\u2018": "'", - "\u2019": "'", - "\u201A": "'", - "\u201B": "'", - "\u201C": '"', - "\u201D": '"', - "\u201E": '"', - "\u201F": '"', - "\xBC": "1/4", - "\xBD": "1/2", - "\xBE": "3/4" - }; - var normalizationRegex = null; - - function normalize(text) { - if (!normalizationRegex) { - var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(""); - normalizationRegex = new RegExp("[".concat(replace, "]"), "g"); - } - - var diffs = null; - var normalizedText = text.replace(normalizationRegex, function (ch, index) { - var normalizedCh = CHARACTERS_TO_NORMALIZE[ch], - diff = normalizedCh.length - ch.length; - - if (diff !== 0) { - (diffs || (diffs = [])).push([index, diff]); - } - - return normalizedCh; - }); - return [normalizedText, diffs]; - } - - function getOriginalIndex(matchIndex) { - var diffs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (!diffs) { - return matchIndex; - } - - var totalDiff = 0; - - var _iterator = _createForOfIteratorHelper(diffs), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _step$value = _slicedToArray(_step.value, 2), - index = _step$value[0], - diff = _step$value[1]; - - var currentIndex = index + totalDiff; - - if (currentIndex >= matchIndex) { - break; - } - - if (currentIndex + diff > matchIndex) { - totalDiff += matchIndex - currentIndex; - break; - } - - totalDiff += diff; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return matchIndex - totalDiff; - } - - var PDFFindController = /*#__PURE__*/function () { - function PDFFindController(_ref) { - var linkService = _ref.linkService, - eventBus = _ref.eventBus; - - _classCallCheck(this, PDFFindController); - - this._linkService = linkService; - this._eventBus = eventBus; - - this._reset(); - - eventBus._on("findbarclose", this._onFindBarClose.bind(this)); - } - - _createClass(PDFFindController, [{ - key: "highlightMatches", - get: function get() { - return this._highlightMatches; - } - }, { - key: "pageMatches", - get: function get() { - return this._pageMatches; - } - }, { - key: "pageMatchesLength", - get: function get() { - return this._pageMatchesLength; - } - }, { - key: "selected", - get: function get() { - return this._selected; - } - }, { - key: "state", - get: function get() { - return this._state; - } - }, { - key: "setDocument", - value: function setDocument(pdfDocument) { - if (this._pdfDocument) { - this._reset(); - } - - if (!pdfDocument) { - return; - } - - this._pdfDocument = pdfDocument; - - this._firstPageCapability.resolve(); - } - }, { - key: "executeCommand", - value: function executeCommand(cmd, state) { - var _this = this; - - if (!state) { - return; - } - - var pdfDocument = this._pdfDocument; - - if (this._state === null || this._shouldDirtyMatch(cmd, state)) { - this._dirtyMatch = true; - } - - this._state = state; - - if (cmd !== "findhighlightallchange") { - this._updateUIState(FindState.PENDING); - } - - this._firstPageCapability.promise.then(function () { - if (!_this._pdfDocument || pdfDocument && _this._pdfDocument !== pdfDocument) { - return; - } - - _this._extractText(); - - var findbarClosed = !_this._highlightMatches; - var pendingTimeout = !!_this._findTimeout; - - if (_this._findTimeout) { - clearTimeout(_this._findTimeout); - _this._findTimeout = null; - } - - if (cmd === "find") { - _this._findTimeout = setTimeout(function () { - _this._nextMatch(); - - _this._findTimeout = null; - }, FIND_TIMEOUT); - } else if (_this._dirtyMatch) { - _this._nextMatch(); - } else if (cmd === "findagain") { - _this._nextMatch(); - - if (findbarClosed && _this._state.highlightAll) { - _this._updateAllPages(); - } - } else if (cmd === "findhighlightallchange") { - if (pendingTimeout) { - _this._nextMatch(); - } else { - _this._highlightMatches = true; - } - - _this._updateAllPages(); - } else { - _this._nextMatch(); - } - }); - } - }, { - key: "scrollMatchIntoView", - value: function scrollMatchIntoView(_ref2) { - var _ref2$element = _ref2.element, - element = _ref2$element === void 0 ? null : _ref2$element, - _ref2$pageIndex = _ref2.pageIndex, - pageIndex = _ref2$pageIndex === void 0 ? -1 : _ref2$pageIndex, - _ref2$matchIndex = _ref2.matchIndex, - matchIndex = _ref2$matchIndex === void 0 ? -1 : _ref2$matchIndex; - - if (!this._scrollMatches || !element) { - return; - } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) { - return; - } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) { - return; - } - - this._scrollMatches = false; - var spot = { - top: MATCH_SCROLL_OFFSET_TOP, - left: MATCH_SCROLL_OFFSET_LEFT - }; - (0, _ui_utils.scrollIntoView)(element, spot, true); - } - }, { - key: "_reset", - value: function _reset() { - this._highlightMatches = false; - this._scrollMatches = false; - this._pdfDocument = null; - this._pageMatches = []; - this._pageMatchesLength = []; - this._state = null; - this._selected = { - pageIdx: -1, - matchIdx: -1 - }; - this._offset = { - pageIdx: null, - matchIdx: null, - wrapped: false - }; - this._extractTextPromises = []; - this._pageContents = []; - this._pageDiffs = []; - this._matchesCountTotal = 0; - this._pagesToSearch = null; - this._pendingFindMatches = Object.create(null); - this._resumePageIdx = null; - this._dirtyMatch = false; - clearTimeout(this._findTimeout); - this._findTimeout = null; - this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); - } - }, { - key: "_query", - get: function get() { - if (this._state.query !== this._rawQuery) { - this._rawQuery = this._state.query; - - var _normalize = normalize(this._state.query); - - var _normalize2 = _slicedToArray(_normalize, 1); - - this._normalizedQuery = _normalize2[0]; - } - - return this._normalizedQuery; - } - }, { - key: "_shouldDirtyMatch", - value: function _shouldDirtyMatch(cmd, state) { - if (state.query !== this._state.query) { - return true; - } - - switch (cmd) { - case "findagain": - var pageNumber = this._selected.pageIdx + 1; - var linkService = this._linkService; - - if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !linkService.isPageVisible(pageNumber)) { - return true; - } - - return false; - - case "findhighlightallchange": - return false; - } - - return true; - } - }, { - key: "_prepareMatches", - value: function _prepareMatches(matchesWithLength, matches, matchesLength) { - function isSubTerm(currentIndex) { - var currentElem = matchesWithLength[currentIndex]; - var nextElem = matchesWithLength[currentIndex + 1]; - - if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) { - currentElem.skipped = true; - return true; - } - - for (var i = currentIndex - 1; i >= 0; i--) { - var prevElem = matchesWithLength[i]; - - if (prevElem.skipped) { - continue; - } - - if (prevElem.match + prevElem.matchLength < currentElem.match) { - break; - } - - if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) { - currentElem.skipped = true; - return true; - } - } - - return false; - } - - matchesWithLength.sort(function (a, b) { - return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match; - }); - - for (var i = 0, len = matchesWithLength.length; i < len; i++) { - if (isSubTerm(i)) { - continue; - } - - matches.push(matchesWithLength[i].match); - matchesLength.push(matchesWithLength[i].matchLength); - } - } - }, { - key: "_isEntireWord", - value: function _isEntireWord(content, startIdx, length) { - if (startIdx > 0) { - var first = content.charCodeAt(startIdx); - var limit = content.charCodeAt(startIdx - 1); - - if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) { - return false; - } - } - - var endIdx = startIdx + length - 1; - - if (endIdx < content.length - 1) { - var last = content.charCodeAt(endIdx); - - var _limit = content.charCodeAt(endIdx + 1); - - if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(_limit)) { - return false; - } - } - - return true; - } - }, { - key: "_calculatePhraseMatch", - value: function _calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord) { - var matches = [], - matchesLength = []; - var queryLen = query.length; - var matchIdx = -queryLen; - - while (true) { - matchIdx = pageContent.indexOf(query, matchIdx + queryLen); - - if (matchIdx === -1) { - break; - } - - if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) { - continue; - } - - var originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs), - matchEnd = matchIdx + queryLen - 1, - originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1; - matches.push(originalMatchIdx); - matchesLength.push(originalQueryLen); - } - - this._pageMatches[pageIndex] = matches; - this._pageMatchesLength[pageIndex] = matchesLength; - } - }, { - key: "_calculateWordMatch", - value: function _calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord) { - var matchesWithLength = []; - var queryArray = query.match(/\S+/g); - - for (var i = 0, len = queryArray.length; i < len; i++) { - var subquery = queryArray[i]; - var subqueryLen = subquery.length; - var matchIdx = -subqueryLen; - - while (true) { - matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen); - - if (matchIdx === -1) { - break; - } - - if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) { - continue; - } - - var originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs), - matchEnd = matchIdx + subqueryLen - 1, - originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1; - matchesWithLength.push({ - match: originalMatchIdx, - matchLength: originalQueryLen, - skipped: false - }); - } - } - - this._pageMatchesLength[pageIndex] = []; - this._pageMatches[pageIndex] = []; - - this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], this._pageMatchesLength[pageIndex]); - } - }, { - key: "_calculateMatch", - value: function _calculateMatch(pageIndex) { - var pageContent = this._pageContents[pageIndex]; - var pageDiffs = this._pageDiffs[pageIndex]; - var query = this._query; - var _this$_state = this._state, - caseSensitive = _this$_state.caseSensitive, - entireWord = _this$_state.entireWord, - phraseSearch = _this$_state.phraseSearch; - - if (query.length === 0) { - return; - } - - if (!caseSensitive) { - pageContent = pageContent.toLowerCase(); - query = query.toLowerCase(); - } - - if (phraseSearch) { - this._calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord); - } else { - this._calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord); - } - - if (this._state.highlightAll) { - this._updatePage(pageIndex); - } - - if (this._resumePageIdx === pageIndex) { - this._resumePageIdx = null; - - this._nextPageMatch(); - } - - var pageMatchesCount = this._pageMatches[pageIndex].length; - - if (pageMatchesCount > 0) { - this._matchesCountTotal += pageMatchesCount; - - this._updateUIResultsCount(); - } - } - }, { - key: "_extractText", - value: function _extractText() { - var _this2 = this; - - if (this._extractTextPromises.length > 0) { - return; - } - - var promise = Promise.resolve(); - - var _loop = function _loop(i, ii) { - var extractTextCapability = (0, _pdfjsLib.createPromiseCapability)(); - _this2._extractTextPromises[i] = extractTextCapability.promise; - promise = promise.then(function () { - return _this2._pdfDocument.getPage(i + 1).then(function (pdfPage) { - return pdfPage.getTextContent({ - normalizeWhitespace: true - }); - }).then(function (textContent) { - var textItems = textContent.items; - var strBuf = []; - - for (var j = 0, jj = textItems.length; j < jj; j++) { - strBuf.push(textItems[j].str); - } - - var _normalize3 = normalize(strBuf.join("")); - - var _normalize4 = _slicedToArray(_normalize3, 2); - - _this2._pageContents[i] = _normalize4[0]; - _this2._pageDiffs[i] = _normalize4[1]; - extractTextCapability.resolve(i); - }, function (reason) { - console.error("Unable to get text content for page ".concat(i + 1), reason); - _this2._pageContents[i] = ""; - _this2._pageDiffs[i] = null; - extractTextCapability.resolve(i); - }); - }); - }; - - for (var i = 0, ii = this._linkService.pagesCount; i < ii; i++) { - _loop(i, ii); - } - } - }, { - key: "_updatePage", - value: function _updatePage(index) { - if (this._scrollMatches && this._selected.pageIdx === index) { - this._linkService.page = index + 1; - } - - this._eventBus.dispatch("updatetextlayermatches", { - source: this, - pageIndex: index - }); - } - }, { - key: "_updateAllPages", - value: function _updateAllPages() { - this._eventBus.dispatch("updatetextlayermatches", { - source: this, - pageIndex: -1 - }); - } - }, { - key: "_nextMatch", - value: function _nextMatch() { - var _this3 = this; - - var previous = this._state.findPrevious; - var currentPageIndex = this._linkService.page - 1; - var numPages = this._linkService.pagesCount; - this._highlightMatches = true; - - if (this._dirtyMatch) { - this._dirtyMatch = false; - this._selected.pageIdx = this._selected.matchIdx = -1; - this._offset.pageIdx = currentPageIndex; - this._offset.matchIdx = null; - this._offset.wrapped = false; - this._resumePageIdx = null; - this._pageMatches.length = 0; - this._pageMatchesLength.length = 0; - this._matchesCountTotal = 0; - - this._updateAllPages(); - - for (var i = 0; i < numPages; i++) { - if (this._pendingFindMatches[i] === true) { - continue; - } - - this._pendingFindMatches[i] = true; - - this._extractTextPromises[i].then(function (pageIdx) { - delete _this3._pendingFindMatches[pageIdx]; - - _this3._calculateMatch(pageIdx); - }); - } - } - - if (this._query === "") { - this._updateUIState(FindState.FOUND); - - return; - } - - if (this._resumePageIdx) { - return; - } - - var offset = this._offset; - this._pagesToSearch = numPages; - - if (offset.matchIdx !== null) { - var numPageMatches = this._pageMatches[offset.pageIdx].length; - - if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { - offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; - - this._updateMatch(true); - - return; - } - - this._advanceOffsetPage(previous); - } - - this._nextPageMatch(); - } - }, { - key: "_matchesReady", - value: function _matchesReady(matches) { - var offset = this._offset; - var numMatches = matches.length; - var previous = this._state.findPrevious; - - if (numMatches) { - offset.matchIdx = previous ? numMatches - 1 : 0; - - this._updateMatch(true); - - return true; - } - - this._advanceOffsetPage(previous); - - if (offset.wrapped) { - offset.matchIdx = null; - - if (this._pagesToSearch < 0) { - this._updateMatch(false); - - return true; - } - } - - return false; - } - }, { - key: "_nextPageMatch", - value: function _nextPageMatch() { - if (this._resumePageIdx !== null) { - console.error("There can only be one pending page."); - } - - var matches = null; - - do { - var pageIdx = this._offset.pageIdx; - matches = this._pageMatches[pageIdx]; - - if (!matches) { - this._resumePageIdx = pageIdx; - break; - } - } while (!this._matchesReady(matches)); - } - }, { - key: "_advanceOffsetPage", - value: function _advanceOffsetPage(previous) { - var offset = this._offset; - var numPages = this._linkService.pagesCount; - offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; - offset.matchIdx = null; - this._pagesToSearch--; - - if (offset.pageIdx >= numPages || offset.pageIdx < 0) { - offset.pageIdx = previous ? numPages - 1 : 0; - offset.wrapped = true; - } - } - }, { - key: "_updateMatch", - value: function _updateMatch() { - var found = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var state = FindState.NOT_FOUND; - var wrapped = this._offset.wrapped; - this._offset.wrapped = false; - - if (found) { - var previousPage = this._selected.pageIdx; - this._selected.pageIdx = this._offset.pageIdx; - this._selected.matchIdx = this._offset.matchIdx; - state = wrapped ? FindState.WRAPPED : FindState.FOUND; - - if (previousPage !== -1 && previousPage !== this._selected.pageIdx) { - this._updatePage(previousPage); - } - } - - this._updateUIState(state, this._state.findPrevious); - - if (this._selected.pageIdx !== -1) { - this._scrollMatches = true; - - this._updatePage(this._selected.pageIdx); - } - } - }, { - key: "_onFindBarClose", - value: function _onFindBarClose(evt) { - var _this4 = this; - - var pdfDocument = this._pdfDocument; - - this._firstPageCapability.promise.then(function () { - if (!_this4._pdfDocument || pdfDocument && _this4._pdfDocument !== pdfDocument) { - return; - } - - if (_this4._findTimeout) { - clearTimeout(_this4._findTimeout); - _this4._findTimeout = null; - } - - if (_this4._resumePageIdx) { - _this4._resumePageIdx = null; - _this4._dirtyMatch = true; - } - - _this4._updateUIState(FindState.FOUND); - - _this4._highlightMatches = false; - - _this4._updateAllPages(); - }); - } - }, { - key: "_requestMatchesCount", - value: function _requestMatchesCount() { - var _this$_selected = this._selected, - pageIdx = _this$_selected.pageIdx, - matchIdx = _this$_selected.matchIdx; - var current = 0, - total = this._matchesCountTotal; - - if (matchIdx !== -1) { - for (var i = 0; i < pageIdx; i++) { - var _this$_pageMatches$i; - - current += ((_this$_pageMatches$i = this._pageMatches[i]) === null || _this$_pageMatches$i === void 0 ? void 0 : _this$_pageMatches$i.length) || 0; - } - - current += matchIdx + 1; - } - - if (current < 1 || current > total) { - current = total = 0; - } - - return { - current: current, - total: total - }; - } - }, { - key: "_updateUIResultsCount", - value: function _updateUIResultsCount() { - this._eventBus.dispatch("updatefindmatchescount", { - source: this, - matchesCount: this._requestMatchesCount() - }); - } - }, { - key: "_updateUIState", - value: function _updateUIState(state, previous) { - var _this$_state$query, _this$_state2; - - this._eventBus.dispatch("updatefindcontrolstate", { - source: this, - state: state, - previous: previous, - matchesCount: this._requestMatchesCount(), - rawQuery: (_this$_state$query = (_this$_state2 = this._state) === null || _this$_state2 === void 0 ? void 0 : _this$_state2.query) !== null && _this$_state$query !== void 0 ? _this$_state$query : null - }); - } - }]); - - return PDFFindController; - }(); - - exports.PDFFindController = PDFFindController; - - /***/ - }), - /* 18 */ - /***/ ((__unused_webpack_module, exports) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.getCharacterType = getCharacterType; - exports.CharacterType = void 0; - var CharacterType = { - SPACE: 0, - ALPHA_LETTER: 1, - PUNCT: 2, - HAN_LETTER: 3, - KATAKANA_LETTER: 4, - HIRAGANA_LETTER: 5, - HALFWIDTH_KATAKANA_LETTER: 6, - THAI_LETTER: 7 - }; - exports.CharacterType = CharacterType; - - function isAlphabeticalScript(charCode) { - return charCode < 0x2e80; - } - - function isAscii(charCode) { - return (charCode & 0xff80) === 0; - } - - function isAsciiAlpha(charCode) { - return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a; - } - - function isAsciiDigit(charCode) { - return charCode >= 0x30 && charCode <= 0x39; - } - - function isAsciiSpace(charCode) { - return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a; - } - - function isHan(charCode) { - return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff; - } - - function isKatakana(charCode) { - return charCode >= 0x30a0 && charCode <= 0x30ff; - } - - function isHiragana(charCode) { - return charCode >= 0x3040 && charCode <= 0x309f; - } - - function isHalfwidthKatakana(charCode) { - return charCode >= 0xff60 && charCode <= 0xff9f; - } - - function isThai(charCode) { - return (charCode & 0xff80) === 0x0e00; - } - - function getCharacterType(charCode) { - if (isAlphabeticalScript(charCode)) { - if (isAscii(charCode)) { - if (isAsciiSpace(charCode)) { - return CharacterType.SPACE; - } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) { - return CharacterType.ALPHA_LETTER; - } - - return CharacterType.PUNCT; - } else if (isThai(charCode)) { - return CharacterType.THAI_LETTER; - } else if (charCode === 0xa0) { - return CharacterType.SPACE; - } - - return CharacterType.ALPHA_LETTER; - } - - if (isHan(charCode)) { - return CharacterType.HAN_LETTER; - } else if (isKatakana(charCode)) { - return CharacterType.KATAKANA_LETTER; - } else if (isHiragana(charCode)) { - return CharacterType.HIRAGANA_LETTER; - } else if (isHalfwidthKatakana(charCode)) { - return CharacterType.HALFWIDTH_KATAKANA_LETTER; - } - - return CharacterType.ALPHA_LETTER; - } - - /***/ - }), - /* 19 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.isDestArraysEqual = isDestArraysEqual; - exports.isDestHashesEqual = isDestHashesEqual; - exports.PDFHistory = void 0; - - var _ui_utils = __webpack_require__(6); - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var HASH_CHANGE_TIMEOUT = 1000; - var POSITION_UPDATED_THRESHOLD = 50; - var UPDATE_VIEWAREA_TIMEOUT = 1000; - - function getCurrentHash() { - return document.location.hash; - } - - var PDFHistory = /*#__PURE__*/function () { - function PDFHistory(_ref) { - var _this = this; - - var linkService = _ref.linkService, - eventBus = _ref.eventBus; - - _classCallCheck(this, PDFHistory); - - this.linkService = linkService; - this.eventBus = eventBus; - this._initialized = false; - this._fingerprint = ""; - this.reset(); - this._boundEvents = null; - this._isViewerInPresentationMode = false; - - this.eventBus._on("presentationmodechanged", function (evt) { - _this._isViewerInPresentationMode = evt.state !== _ui_utils.PresentationModeState.NORMAL; - }); - - this.eventBus._on("pagesinit", function () { - _this._isPagesLoaded = false; - - _this.eventBus._on("pagesloaded", function (evt) { - _this._isPagesLoaded = !!evt.pagesCount; - }, { - once: true - }); - }); - } - - _createClass(PDFHistory, [{ - key: "initialize", - value: function initialize(_ref2) { - var fingerprint = _ref2.fingerprint, - _ref2$resetHistory = _ref2.resetHistory, - resetHistory = _ref2$resetHistory === void 0 ? false : _ref2$resetHistory, - _ref2$updateUrl = _ref2.updateUrl, - updateUrl = _ref2$updateUrl === void 0 ? false : _ref2$updateUrl; - - if (!fingerprint || typeof fingerprint !== "string") { - console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.'); - return; - } - - if (this._initialized) { - this.reset(); - } - - var reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint; - this._fingerprint = fingerprint; - this._updateUrl = updateUrl === true; - this._initialized = true; - - this._bindEvents(); - - var state = window.history.state; - this._popStateInProgress = false; - this._blockHashChange = 0; - this._currentHash = getCurrentHash(); - this._numPositionUpdates = 0; - this._uid = this._maxUid = 0; - this._destination = null; - this._position = null; - - if (!this._isValidState(state, true) || resetHistory) { - var _this$_parseCurrentHa = this._parseCurrentHash(true), - hash = _this$_parseCurrentHa.hash, - page = _this$_parseCurrentHa.page, - rotation = _this$_parseCurrentHa.rotation; - - if (!hash || reInitialized || resetHistory) { - this._pushOrReplaceState(null, true); - - return; - } - - this._pushOrReplaceState({ - hash: hash, - page: page, - rotation: rotation - }, true); - - return; - } - - var destination = state.destination; - - this._updateInternalState(destination, state.uid, true); - - if (destination.rotation !== undefined) { - this._initialRotation = destination.rotation; - } - - if (destination.dest) { - this._initialBookmark = JSON.stringify(destination.dest); - this._destination.page = null; - } else if (destination.hash) { - this._initialBookmark = destination.hash; - } else if (destination.page) { - this._initialBookmark = "page=".concat(destination.page); - } - } - }, { - key: "reset", - value: function reset() { - if (this._initialized) { - this._pageHide(); - - this._initialized = false; - - this._unbindEvents(); - } - - if (this._updateViewareaTimeout) { - clearTimeout(this._updateViewareaTimeout); - this._updateViewareaTimeout = null; - } - - this._initialBookmark = null; - this._initialRotation = null; - } - }, { - key: "push", - value: function push(_ref3) { - var _this2 = this; - - var _ref3$namedDest = _ref3.namedDest, - namedDest = _ref3$namedDest === void 0 ? null : _ref3$namedDest, - explicitDest = _ref3.explicitDest, - pageNumber = _ref3.pageNumber; - - if (!this._initialized) { - return; - } - - if (namedDest && typeof namedDest !== "string") { - console.error("PDFHistory.push: " + "\"".concat(namedDest, "\" is not a valid namedDest parameter.")); - return; - } else if (!Array.isArray(explicitDest)) { - console.error("PDFHistory.push: " + "\"".concat(explicitDest, "\" is not a valid explicitDest parameter.")); - return; - } else if (!this._isValidPage(pageNumber)) { - if (pageNumber !== null || this._destination) { - console.error("PDFHistory.push: " + "\"".concat(pageNumber, "\" is not a valid pageNumber parameter.")); - return; - } - } - - var hash = namedDest || JSON.stringify(explicitDest); - - if (!hash) { - return; - } - - var forceReplace = false; - - if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) { - if (this._destination.page) { - return; - } - - forceReplace = true; - } - - if (this._popStateInProgress && !forceReplace) { - return; - } - - this._pushOrReplaceState({ - dest: explicitDest, - hash: hash, - page: pageNumber, - rotation: this.linkService.rotation - }, forceReplace); - - if (!this._popStateInProgress) { - this._popStateInProgress = true; - Promise.resolve().then(function () { - _this2._popStateInProgress = false; - }); - } - } - }, { - key: "pushPage", - value: function pushPage(pageNumber) { - var _this$_destination, - _this3 = this; - - if (!this._initialized) { - return; - } - - if (!this._isValidPage(pageNumber)) { - console.error("PDFHistory.pushPage: \"".concat(pageNumber, "\" is not a valid page number.")); - return; - } - - if (((_this$_destination = this._destination) === null || _this$_destination === void 0 ? void 0 : _this$_destination.page) === pageNumber) { - return; - } - - if (this._popStateInProgress) { - return; - } - - this._pushOrReplaceState({ - dest: null, - hash: "page=".concat(pageNumber), - page: pageNumber, - rotation: this.linkService.rotation - }); - - if (!this._popStateInProgress) { - this._popStateInProgress = true; - Promise.resolve().then(function () { - _this3._popStateInProgress = false; - }); - } - } - }, { - key: "pushCurrentPosition", - value: function pushCurrentPosition() { - if (!this._initialized || this._popStateInProgress) { - return; - } - - this._tryPushCurrentPosition(); - } - }, { - key: "back", - value: function back() { - if (!this._initialized || this._popStateInProgress) { - return; - } - - var state = window.history.state; - - if (this._isValidState(state) && state.uid > 0) { - window.history.back(); - } - } - }, { - key: "forward", - value: function forward() { - if (!this._initialized || this._popStateInProgress) { - return; - } - - var state = window.history.state; - - if (this._isValidState(state) && state.uid < this._maxUid) { - window.history.forward(); - } - } - }, { - key: "popStateInProgress", - get: function get() { - return this._initialized && (this._popStateInProgress || this._blockHashChange > 0); - } - }, { - key: "initialBookmark", - get: function get() { - return this._initialized ? this._initialBookmark : null; - } - }, { - key: "initialRotation", - get: function get() { - return this._initialized ? this._initialRotation : null; - } - }, { - key: "_pushOrReplaceState", - value: function _pushOrReplaceState(destination) { - var forceReplace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var shouldReplace = forceReplace || !this._destination; - var newState = { - fingerprint: this._fingerprint, - uid: shouldReplace ? this._uid : this._uid + 1, - destination: destination - }; - - this._updateInternalState(destination, newState.uid); - - var newUrl; - - if (this._updateUrl && destination !== null && destination !== void 0 && destination.hash) { - var baseUrl = document.location.href.split("#")[0]; - - if (!baseUrl.startsWith("file://")) { - newUrl = "".concat(baseUrl, "#").concat(destination.hash); - } - } - - if (shouldReplace) { - window.history.replaceState(newState, "", newUrl); - } else { - window.history.pushState(newState, "", newUrl); - } - } - }, { - key: "_tryPushCurrentPosition", - value: function _tryPushCurrentPosition() { - var temporary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!this._position) { - return; - } - - var position = this._position; - - if (temporary) { - position = Object.assign(Object.create(null), this._position); - position.temporary = true; - } - - if (!this._destination) { - this._pushOrReplaceState(position); - - return; - } - - if (this._destination.temporary) { - this._pushOrReplaceState(position, true); - - return; - } - - if (this._destination.hash === position.hash) { - return; - } - - if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) { - return; - } - - var forceReplace = false; - - if (this._destination.page >= position.first && this._destination.page <= position.page) { - if (this._destination.dest !== undefined || !this._destination.first) { - return; - } - - forceReplace = true; - } - - this._pushOrReplaceState(position, forceReplace); - } - }, { - key: "_isValidPage", - value: function _isValidPage(val) { - return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount; - } - }, { - key: "_isValidState", - value: function _isValidState(state) { - var checkReload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (!state) { - return false; - } - - if (state.fingerprint !== this._fingerprint) { - if (checkReload) { - if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) { - return false; - } - - var _performance$getEntri = performance.getEntriesByType("navigation"), - _performance$getEntri2 = _slicedToArray(_performance$getEntri, 1), - perfEntry = _performance$getEntri2[0]; - - if ((perfEntry === null || perfEntry === void 0 ? void 0 : perfEntry.type) !== "reload") { - return false; - } - } else { - return false; - } - } - - if (!Number.isInteger(state.uid) || state.uid < 0) { - return false; - } - - if (state.destination === null || _typeof(state.destination) !== "object") { - return false; - } - - return true; - } - }, { - key: "_updateInternalState", - value: function _updateInternalState(destination, uid) { - var removeTemporary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (this._updateViewareaTimeout) { - clearTimeout(this._updateViewareaTimeout); - this._updateViewareaTimeout = null; - } - - if (removeTemporary && destination !== null && destination !== void 0 && destination.temporary) { - delete destination.temporary; - } - - this._destination = destination; - this._uid = uid; - this._maxUid = Math.max(this._maxUid, uid); - this._numPositionUpdates = 0; - } - }, { - key: "_parseCurrentHash", - value: function _parseCurrentHash() { - var checkNameddest = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var hash = unescape(getCurrentHash()).substring(1); - var params = (0, _ui_utils.parseQueryString)(hash); - var nameddest = params.nameddest || ""; - var page = params.page | 0; - - if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) { - page = null; - } - - return { - hash: hash, - page: page, - rotation: this.linkService.rotation - }; - } - }, { - key: "_updateViewarea", - value: function _updateViewarea(_ref4) { - var _this4 = this; - - var location = _ref4.location; - - if (this._updateViewareaTimeout) { - clearTimeout(this._updateViewareaTimeout); - this._updateViewareaTimeout = null; - } - - this._position = { - hash: this._isViewerInPresentationMode ? "page=".concat(location.pageNumber) : location.pdfOpenParams.substring(1), - page: this.linkService.page, - first: location.pageNumber, - rotation: location.rotation - }; - - if (this._popStateInProgress) { - return; - } - - if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) { - this._numPositionUpdates++; - } - - if (UPDATE_VIEWAREA_TIMEOUT > 0) { - this._updateViewareaTimeout = setTimeout(function () { - if (!_this4._popStateInProgress) { - _this4._tryPushCurrentPosition(true); - } - - _this4._updateViewareaTimeout = null; - }, UPDATE_VIEWAREA_TIMEOUT); - } - } - }, { - key: "_popState", - value: function _popState(_ref5) { - var _this5 = this; - - var state = _ref5.state; - var newHash = getCurrentHash(), - hashChanged = this._currentHash !== newHash; - this._currentHash = newHash; - - if (!state) { - this._uid++; - - var _this$_parseCurrentHa2 = this._parseCurrentHash(), - hash = _this$_parseCurrentHa2.hash, - page = _this$_parseCurrentHa2.page, - rotation = _this$_parseCurrentHa2.rotation; - - this._pushOrReplaceState({ - hash: hash, - page: page, - rotation: rotation - }, true); - - return; - } - - if (!this._isValidState(state)) { - return; - } - - this._popStateInProgress = true; - - if (hashChanged) { - this._blockHashChange++; - (0, _ui_utils.waitOnEventOrTimeout)({ - target: window, - name: "hashchange", - delay: HASH_CHANGE_TIMEOUT - }).then(function () { - _this5._blockHashChange--; - }); - } - - var destination = state.destination; - - this._updateInternalState(destination, state.uid, true); - - if ((0, _ui_utils.isValidRotation)(destination.rotation)) { - this.linkService.rotation = destination.rotation; - } - - if (destination.dest) { - this.linkService.goToDestination(destination.dest); - } else if (destination.hash) { - this.linkService.setHash(destination.hash); - } else if (destination.page) { - this.linkService.page = destination.page; - } - - Promise.resolve().then(function () { - _this5._popStateInProgress = false; - }); - } - }, { - key: "_pageHide", - value: function _pageHide() { - if (!this._destination || this._destination.temporary) { - this._tryPushCurrentPosition(); - } - } - }, { - key: "_bindEvents", - value: function _bindEvents() { - if (this._boundEvents) { - return; - } - - this._boundEvents = { - updateViewarea: this._updateViewarea.bind(this), - popState: this._popState.bind(this), - pageHide: this._pageHide.bind(this) - }; - - this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea); - - window.addEventListener("popstate", this._boundEvents.popState); - window.addEventListener("pagehide", this._boundEvents.pageHide); - } - }, { - key: "_unbindEvents", - value: function _unbindEvents() { - if (!this._boundEvents) { - return; - } - - this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea); - - window.removeEventListener("popstate", this._boundEvents.popState); - window.removeEventListener("pagehide", this._boundEvents.pageHide); - this._boundEvents = null; - } - }]); - - return PDFHistory; - }(); - - exports.PDFHistory = PDFHistory; - - function isDestHashesEqual(destHash, pushHash) { - if (typeof destHash !== "string" || typeof pushHash !== "string") { - return false; - } - - if (destHash === pushHash) { - return true; - } - - var _parseQueryString = (0, _ui_utils.parseQueryString)(destHash), - nameddest = _parseQueryString.nameddest; - - if (nameddest === pushHash) { - return true; - } - - return false; - } - - function isDestArraysEqual(firstDest, secondDest) { - function isEntryEqual(first, second) { - if (_typeof(first) !== _typeof(second)) { - return false; - } - - if (Array.isArray(first) || Array.isArray(second)) { - return false; - } - - if (first !== null && _typeof(first) === "object" && second !== null) { - if (Object.keys(first).length !== Object.keys(second).length) { - return false; - } - - for (var key in first) { - if (!isEntryEqual(first[key], second[key])) { - return false; - } - } - - return true; - } - - return first === second || Number.isNaN(first) && Number.isNaN(second); - } - - if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) { - return false; - } - - if (firstDest.length !== secondDest.length) { - return false; - } - - for (var i = 0, ii = firstDest.length; i < ii; i++) { - if (!isEntryEqual(firstDest[i], secondDest[i])) { - return false; - } - } - - return true; - } - - /***/ - }), - /* 20 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFLayerViewer = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _base_tree_viewer = __webpack_require__(14); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _get(target, property, receiver) { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(receiver); - } - return desc.value; - }; - } - return _get(target, property, receiver || target); - } - - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - var PDFLayerViewer = /*#__PURE__*/function (_BaseTreeViewer) { - _inherits(PDFLayerViewer, _BaseTreeViewer); - - var _super = _createSuper(PDFLayerViewer); - - function PDFLayerViewer(options) { - var _this; - - _classCallCheck(this, PDFLayerViewer); - - _this = _super.call(this, options); - _this.l10n = options.l10n; - - _this.eventBus._on("resetlayers", _this._resetLayers.bind(_assertThisInitialized(_this))); - - _this.eventBus._on("togglelayerstree", _this._toggleAllTreeItems.bind(_assertThisInitialized(_this))); - - return _this; - } - - _createClass(PDFLayerViewer, [{ - key: "reset", - value: function reset() { - _get(_getPrototypeOf(PDFLayerViewer.prototype), "reset", this).call(this); - - this._optionalContentConfig = null; - } - }, { - key: "_dispatchEvent", - value: function _dispatchEvent(layersCount) { - this.eventBus.dispatch("layersloaded", { - source: this, - layersCount: layersCount - }); - } - }, { - key: "_bindLink", - value: function _bindLink(element, _ref) { - var _this2 = this; - - var groupId = _ref.groupId, - input = _ref.input; - - var setVisibility = function setVisibility() { - _this2._optionalContentConfig.setVisibility(groupId, input.checked); - - _this2.eventBus.dispatch("optionalcontentconfig", { - source: _this2, - promise: Promise.resolve(_this2._optionalContentConfig) - }); - }; - - element.onclick = function (evt) { - if (evt.target === input) { - setVisibility(); - return true; - } else if (evt.target !== element) { - return true; - } - - input.checked = !input.checked; - setVisibility(); - return false; - }; - } - }, { - key: "_setNestedName", - value: function () { - var _setNestedName2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(element, _ref2) { - var _ref2$name, name; - - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _ref2$name = _ref2.name, name = _ref2$name === void 0 ? null : _ref2$name; - - if (!(typeof name === "string")) { - _context.next = 4; - break; - } - - element.textContent = this._normalizeTextContent(name); - return _context.abrupt("return"); - - case 4: - _context.next = 6; - return this.l10n.get("additional_layers"); - - case 6: - element.textContent = _context.sent; - element.style.fontStyle = "italic"; - - case 8: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function _setNestedName(_x, _x2) { - return _setNestedName2.apply(this, arguments); - } - - return _setNestedName; - }() - }, { - key: "_addToggleButton", - value: function _addToggleButton(div, _ref3) { - var _ref3$name = _ref3.name, - name = _ref3$name === void 0 ? null : _ref3$name; - - _get(_getPrototypeOf(PDFLayerViewer.prototype), "_addToggleButton", this).call(this, div, name === null); - } - }, { - key: "_toggleAllTreeItems", - value: function _toggleAllTreeItems() { - if (!this._optionalContentConfig) { - return; - } - - _get(_getPrototypeOf(PDFLayerViewer.prototype), "_toggleAllTreeItems", this).call(this); - } - }, { - key: "render", - value: function render(_ref4) { - var optionalContentConfig = _ref4.optionalContentConfig, - pdfDocument = _ref4.pdfDocument; - - if (this._optionalContentConfig) { - this.reset(); - } - - this._optionalContentConfig = optionalContentConfig || null; - this._pdfDocument = pdfDocument || null; - var groups = optionalContentConfig === null || optionalContentConfig === void 0 ? void 0 : optionalContentConfig.getOrder(); - - if (!groups) { - this._dispatchEvent(0); - - return; - } - - var fragment = document.createDocumentFragment(), - queue = [{ - parent: fragment, - groups: groups - }]; - var layersCount = 0, - hasAnyNesting = false; - - while (queue.length > 0) { - var levelData = queue.shift(); - - var _iterator = _createForOfIteratorHelper(levelData.groups), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var groupId = _step.value; - var div = document.createElement("div"); - div.className = "treeItem"; - var element = document.createElement("a"); - div.appendChild(element); - - if (_typeof(groupId) === "object") { - hasAnyNesting = true; - - this._addToggleButton(div, groupId); - - this._setNestedName(element, groupId); - - var itemsDiv = document.createElement("div"); - itemsDiv.className = "treeItems"; - div.appendChild(itemsDiv); - queue.push({ - parent: itemsDiv, - groups: groupId.order - }); - } else { - var group = optionalContentConfig.getGroup(groupId); - var input = document.createElement("input"); - - this._bindLink(element, { - groupId: groupId, - input: input - }); - - input.type = "checkbox"; - input.id = groupId; - input.checked = group.visible; - var label = document.createElement("label"); - label.setAttribute("for", groupId); - label.textContent = this._normalizeTextContent(group.name); - element.appendChild(input); - element.appendChild(label); - layersCount++; - } - - levelData.parent.appendChild(div); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - - this._finishRendering(fragment, layersCount, hasAnyNesting); - } - }, { - key: "_resetLayers", - value: function () { - var _resetLayers2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var optionalContentConfig; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (this._optionalContentConfig) { - _context2.next = 2; - break; - } - - return _context2.abrupt("return"); - - case 2: - _context2.next = 4; - return this._pdfDocument.getOptionalContentConfig(); - - case 4: - optionalContentConfig = _context2.sent; - this.eventBus.dispatch("optionalcontentconfig", { - source: this, - promise: Promise.resolve(optionalContentConfig) - }); - this.render({ - optionalContentConfig: optionalContentConfig, - pdfDocument: this._pdfDocument - }); - - case 7: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function _resetLayers() { - return _resetLayers2.apply(this, arguments); - } - - return _resetLayers; - }() - }]); - - return PDFLayerViewer; - }(_base_tree_viewer.BaseTreeViewer); - - exports.PDFLayerViewer = PDFLayerViewer; - - /***/ - }), - /* 21 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.SimpleLinkService = exports.PDFLinkService = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _ui_utils = __webpack_require__(6); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var PDFLinkService = /*#__PURE__*/function () { - function PDFLinkService() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - eventBus = _ref.eventBus, - _ref$externalLinkTarg = _ref.externalLinkTarget, - externalLinkTarget = _ref$externalLinkTarg === void 0 ? null : _ref$externalLinkTarg, - _ref$externalLinkRel = _ref.externalLinkRel, - externalLinkRel = _ref$externalLinkRel === void 0 ? null : _ref$externalLinkRel, - _ref$externalLinkEnab = _ref.externalLinkEnabled, - externalLinkEnabled = _ref$externalLinkEnab === void 0 ? true : _ref$externalLinkEnab, - _ref$ignoreDestinatio = _ref.ignoreDestinationZoom, - ignoreDestinationZoom = _ref$ignoreDestinatio === void 0 ? false : _ref$ignoreDestinatio; - - _classCallCheck(this, PDFLinkService); - - this.eventBus = eventBus; - this.externalLinkTarget = externalLinkTarget; - this.externalLinkRel = externalLinkRel; - this.externalLinkEnabled = externalLinkEnabled; - this._ignoreDestinationZoom = ignoreDestinationZoom; - this.baseUrl = null; - this.pdfDocument = null; - this.pdfViewer = null; - this.pdfHistory = null; - this._pagesRefCache = null; - } - - _createClass(PDFLinkService, [{ - key: "setDocument", - value: function setDocument(pdfDocument) { - var baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - this.baseUrl = baseUrl; - this.pdfDocument = pdfDocument; - this._pagesRefCache = Object.create(null); - } - }, { - key: "setViewer", - value: function setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - } - }, { - key: "setHistory", - value: function setHistory(pdfHistory) { - this.pdfHistory = pdfHistory; - } - }, { - key: "pagesCount", - get: function get() { - return this.pdfDocument ? this.pdfDocument.numPages : 0; - } - }, { - key: "page", - get: function get() { - return this.pdfViewer.currentPageNumber; - }, - set: function set(value) { - this.pdfViewer.currentPageNumber = value; - } - }, { - key: "rotation", - get: function get() { - return this.pdfViewer.pagesRotation; - }, - set: function set(value) { - this.pdfViewer.pagesRotation = value; - } - }, { - key: "navigateTo", - value: function navigateTo(dest) { - console.error("Deprecated method: `navigateTo`, use `goToDestination` instead."); - this.goToDestination(dest); - } - }, { - key: "_goToDestinationHelper", - value: function _goToDestinationHelper(rawDest) { - var _this = this; - - var namedDest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var explicitDest = arguments.length > 2 ? arguments[2] : undefined; - var destRef = explicitDest[0]; - var pageNumber; - - if (destRef instanceof Object) { - pageNumber = this._cachedPageNumber(destRef); - - if (pageNumber === null) { - this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) { - _this.cachePageRef(pageIndex + 1, destRef); - - _this._goToDestinationHelper(rawDest, namedDest, explicitDest); - })["catch"](function () { - console.error("PDFLinkService._goToDestinationHelper: \"".concat(destRef, "\" is not ") + "a valid page reference, for dest=\"".concat(rawDest, "\".")); - }); - return; - } - } else if (Number.isInteger(destRef)) { - pageNumber = destRef + 1; - } else { - console.error("PDFLinkService._goToDestinationHelper: \"".concat(destRef, "\" is not ") + "a valid destination reference, for dest=\"".concat(rawDest, "\".")); - return; - } - - if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { - console.error("PDFLinkService._goToDestinationHelper: \"".concat(pageNumber, "\" is not ") + "a valid page number, for dest=\"".concat(rawDest, "\".")); - return; - } - - if (this.pdfHistory) { - this.pdfHistory.pushCurrentPosition(); - this.pdfHistory.push({ - namedDest: namedDest, - explicitDest: explicitDest, - pageNumber: pageNumber - }); - } - - this.pdfViewer.scrollPageIntoView({ - pageNumber: pageNumber, - destArray: explicitDest, - ignoreDestinationZoom: this._ignoreDestinationZoom - }); - } - }, { - key: "goToDestination", - value: function () { - var _goToDestination = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(dest) { - var namedDest, explicitDest; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (this.pdfDocument) { - _context.next = 2; - break; - } - - return _context.abrupt("return"); - - case 2: - if (!(typeof dest === "string")) { - _context.next = 9; - break; - } - - namedDest = dest; - _context.next = 6; - return this.pdfDocument.getDestination(dest); - - case 6: - explicitDest = _context.sent; - _context.next = 13; - break; - - case 9: - namedDest = null; - _context.next = 12; - return dest; - - case 12: - explicitDest = _context.sent; - - case 13: - if (Array.isArray(explicitDest)) { - _context.next = 16; - break; - } - - console.error("PDFLinkService.goToDestination: \"".concat(explicitDest, "\" is not ") + "a valid destination array, for dest=\"".concat(dest, "\".")); - return _context.abrupt("return"); - - case 16: - this._goToDestinationHelper(dest, namedDest, explicitDest); - - case 17: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function goToDestination(_x) { - return _goToDestination.apply(this, arguments); - } - - return goToDestination; - }() - }, { - key: "goToPage", - value: function goToPage(val) { - if (!this.pdfDocument) { - return; - } - - var pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0; - - if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { - console.error("PDFLinkService.goToPage: \"".concat(val, "\" is not a valid page.")); - return; - } - - if (this.pdfHistory) { - this.pdfHistory.pushCurrentPosition(); - this.pdfHistory.pushPage(pageNumber); - } - - this.pdfViewer.scrollPageIntoView({ - pageNumber: pageNumber - }); - } - }, { - key: "getDestinationHash", - value: function getDestinationHash(dest) { - if (typeof dest === "string") { - if (dest.length > 0) { - return this.getAnchorUrl("#" + escape(dest)); - } - } else if (Array.isArray(dest)) { - var str = JSON.stringify(dest); - - if (str.length > 0) { - return this.getAnchorUrl("#" + escape(str)); - } - } - - return this.getAnchorUrl(""); - } - }, { - key: "getAnchorUrl", - value: function getAnchorUrl(anchor) { - return (this.baseUrl || "") + anchor; - } - }, { - key: "setHash", - value: function setHash(hash) { - if (!this.pdfDocument) { - return; - } - - var pageNumber, dest; - - if (hash.includes("=")) { - var params = (0, _ui_utils.parseQueryString)(hash); - - if ("search" in params) { - this.eventBus.dispatch("findfromurlhash", { - source: this, - query: params.search.replace(/"/g, ""), - phraseSearch: params.phrase === "true" - }); - } - - if ("page" in params) { - pageNumber = params.page | 0 || 1; - } - - if ("zoom" in params) { - var zoomArgs = params.zoom.split(","); - var zoomArg = zoomArgs[0]; - var zoomArgNumber = parseFloat(zoomArg); - - if (!zoomArg.includes("Fit")) { - dest = [null, { - name: "XYZ" - }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; - } else { - if (zoomArg === "Fit" || zoomArg === "FitB") { - dest = [null, { - name: zoomArg - }]; - } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") { - dest = [null, { - name: zoomArg - }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; - } else if (zoomArg === "FitR") { - if (zoomArgs.length !== 5) { - console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); - } else { - dest = [null, { - name: zoomArg - }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; - } - } else { - console.error("PDFLinkService.setHash: \"".concat(zoomArg, "\" is not ") + "a valid zoom value."); - } - } - } - - if (dest) { - this.pdfViewer.scrollPageIntoView({ - pageNumber: pageNumber || this.page, - destArray: dest, - allowNegativeOffset: true - }); - } else if (pageNumber) { - this.page = pageNumber; - } - - if ("pagemode" in params) { - this.eventBus.dispatch("pagemode", { - source: this, - mode: params.pagemode - }); - } - - if ("nameddest" in params) { - this.goToDestination(params.nameddest); - } - } else { - dest = unescape(hash); - - try { - dest = JSON.parse(dest); - - if (!Array.isArray(dest)) { - dest = dest.toString(); - } - } catch (ex) { - } - - if (typeof dest === "string" || isValidExplicitDestination(dest)) { - this.goToDestination(dest); - return; - } - - console.error("PDFLinkService.setHash: \"".concat(unescape(hash), "\" is not ") + "a valid destination."); - } - } - }, { - key: "executeNamedAction", - value: function executeNamedAction(action) { - switch (action) { - case "GoBack": - if (this.pdfHistory) { - this.pdfHistory.back(); - } - - break; - - case "GoForward": - if (this.pdfHistory) { - this.pdfHistory.forward(); - } - - break; - - case "NextPage": - this.pdfViewer.nextPage(); - break; - - case "PrevPage": - this.pdfViewer.previousPage(); - break; - - case "LastPage": - this.page = this.pagesCount; - break; - - case "FirstPage": - this.page = 1; - break; - - default: - break; - } - - this.eventBus.dispatch("namedaction", { - source: this, - action: action - }); - } - }, { - key: "cachePageRef", - value: function cachePageRef(pageNum, pageRef) { - if (!pageRef) { - return; - } - - var refStr = pageRef.gen === 0 ? "".concat(pageRef.num, "R") : "".concat(pageRef.num, "R").concat(pageRef.gen); - this._pagesRefCache[refStr] = pageNum; - } - }, { - key: "_cachedPageNumber", - value: function _cachedPageNumber(pageRef) { - var _this$_pagesRefCache; - - var refStr = pageRef.gen === 0 ? "".concat(pageRef.num, "R") : "".concat(pageRef.num, "R").concat(pageRef.gen); - return ((_this$_pagesRefCache = this._pagesRefCache) === null || _this$_pagesRefCache === void 0 ? void 0 : _this$_pagesRefCache[refStr]) || null; - } - }, { - key: "isPageVisible", - value: function isPageVisible(pageNumber) { - return this.pdfViewer.isPageVisible(pageNumber); - } - }, { - key: "isPageCached", - value: function isPageCached(pageNumber) { - return this.pdfViewer.isPageCached(pageNumber); - } - }]); - - return PDFLinkService; - }(); - - exports.PDFLinkService = PDFLinkService; - - function isValidExplicitDestination(dest) { - if (!Array.isArray(dest)) { - return false; - } - - var destLength = dest.length; - - if (destLength < 2) { - return false; - } - - var page = dest[0]; - - if (!(_typeof(page) === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) { - return false; - } - - var zoom = dest[1]; - - if (!(_typeof(zoom) === "object" && typeof zoom.name === "string")) { - return false; - } - - var allowNull = true; - - switch (zoom.name) { - case "XYZ": - if (destLength !== 5) { - return false; - } - - break; - - case "Fit": - case "FitB": - return destLength === 2; - - case "FitH": - case "FitBH": - case "FitV": - case "FitBV": - if (destLength !== 3) { - return false; - } - - break; - - case "FitR": - if (destLength !== 6) { - return false; - } - - allowNull = false; - break; - - default: - return false; - } - - for (var i = 2; i < destLength; i++) { - var param = dest[i]; - - if (!(typeof param === "number" || allowNull && param === null)) { - return false; - } - } - - return true; - } - - var SimpleLinkService = /*#__PURE__*/function () { - function SimpleLinkService() { - _classCallCheck(this, SimpleLinkService); - - this.externalLinkTarget = null; - this.externalLinkRel = null; - this.externalLinkEnabled = true; - this._ignoreDestinationZoom = false; - } - - _createClass(SimpleLinkService, [{ - key: "pagesCount", - get: function get() { - return 0; - } - }, { - key: "page", - get: function get() { - return 0; - }, - set: function set(value) { - } - }, { - key: "rotation", - get: function get() { - return 0; - }, - set: function set(value) { - } - }, { - key: "goToDestination", - value: function () { - var _goToDestination2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(dest) { - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - - function goToDestination(_x2) { - return _goToDestination2.apply(this, arguments); - } - - return goToDestination; - }() - }, { - key: "goToPage", - value: function goToPage(val) { - } - }, { - key: "getDestinationHash", - value: function getDestinationHash(dest) { - return "#"; - } - }, { - key: "getAnchorUrl", - value: function getAnchorUrl(hash) { - return "#"; - } - }, { - key: "setHash", - value: function setHash(hash) { - } - }, { - key: "executeNamedAction", - value: function executeNamedAction(action) { - } - }, { - key: "cachePageRef", - value: function cachePageRef(pageNum, pageRef) { - } - }, { - key: "isPageVisible", - value: function isPageVisible(pageNumber) { - return true; - } - }, { - key: "isPageCached", - value: function isPageCached(pageNumber) { - return true; - } - }]); - - return SimpleLinkService; - }(); - - exports.SimpleLinkService = SimpleLinkService; - - /***/ - }), - /* 22 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFOutlineViewer = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _pdfjsLib = __webpack_require__(7); - - var _base_tree_viewer = __webpack_require__(14); - - var _ui_utils = __webpack_require__(6); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e2) { - throw _e2; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); - } - - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _get(target, property, receiver) { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(receiver); - } - return desc.value; - }; - } - return _get(target, property, receiver || target); - } - - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - var PDFOutlineViewer = /*#__PURE__*/function (_BaseTreeViewer) { - _inherits(PDFOutlineViewer, _BaseTreeViewer); - - var _super = _createSuper(PDFOutlineViewer); - - function PDFOutlineViewer(options) { - var _this; - - _classCallCheck(this, PDFOutlineViewer); - - _this = _super.call(this, options); - _this.linkService = options.linkService; - - _this.eventBus._on("toggleoutlinetree", _this._toggleAllTreeItems.bind(_assertThisInitialized(_this))); - - _this.eventBus._on("currentoutlineitem", _this._currentOutlineItem.bind(_assertThisInitialized(_this))); - - _this.eventBus._on("pagechanging", function (evt) { - _this._currentPageNumber = evt.pageNumber; - }); - - _this.eventBus._on("pagesloaded", function (evt) { - _this._isPagesLoaded = !!evt.pagesCount; - }); - - _this.eventBus._on("sidebarviewchanged", function (evt) { - _this._sidebarView = evt.view; - }); - - return _this; - } - - _createClass(PDFOutlineViewer, [{ - key: "reset", - value: function reset() { - _get(_getPrototypeOf(PDFOutlineViewer.prototype), "reset", this).call(this); - - this._outline = null; - this._pageNumberToDestHashCapability = null; - this._currentPageNumber = 1; - this._isPagesLoaded = false; - } - }, { - key: "_dispatchEvent", - value: function _dispatchEvent(outlineCount) { - var _this$_pdfDocument; - - this.eventBus.dispatch("outlineloaded", { - source: this, - outlineCount: outlineCount, - enableCurrentOutlineItemButton: outlineCount > 0 && !((_this$_pdfDocument = this._pdfDocument) !== null && _this$_pdfDocument !== void 0 && _this$_pdfDocument.loadingParams.disableAutoFetch) - }); - } - }, { - key: "_bindLink", - value: function _bindLink(element, _ref) { - var _this2 = this; - - var url = _ref.url, - newWindow = _ref.newWindow, - dest = _ref.dest; - var linkService = this.linkService; - - if (url) { - (0, _pdfjsLib.addLinkAttributes)(element, { - url: url, - target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget, - rel: linkService.externalLinkRel, - enabled: linkService.externalLinkEnabled - }); - return; - } - - element.href = linkService.getDestinationHash(dest); - - element.onclick = function (evt) { - _this2._updateCurrentTreeItem(evt.target.parentNode); - - if (dest) { - linkService.goToDestination(dest); - } - - return false; - }; - } - }, { - key: "_setStyles", - value: function _setStyles(element, _ref2) { - var bold = _ref2.bold, - italic = _ref2.italic; - - if (bold) { - element.style.fontWeight = "bold"; - } - - if (italic) { - element.style.fontStyle = "italic"; - } - } - }, { - key: "_addToggleButton", - value: function _addToggleButton(div, _ref3) { - var count = _ref3.count, - items = _ref3.items; - var hidden = false; - - if (count < 0) { - var totalCount = items.length; - - if (totalCount > 0) { - var queue = _toConsumableArray(items); - - while (queue.length > 0) { - var _queue$shift = queue.shift(), - nestedCount = _queue$shift.count, - nestedItems = _queue$shift.items; - - if (nestedCount > 0 && nestedItems.length > 0) { - totalCount += nestedItems.length; - queue.push.apply(queue, _toConsumableArray(nestedItems)); - } - } - } - - if (Math.abs(count) === totalCount) { - hidden = true; - } - } - - _get(_getPrototypeOf(PDFOutlineViewer.prototype), "_addToggleButton", this).call(this, div, hidden); - } - }, { - key: "_toggleAllTreeItems", - value: function _toggleAllTreeItems() { - if (!this._outline) { - return; - } - - _get(_getPrototypeOf(PDFOutlineViewer.prototype), "_toggleAllTreeItems", this).call(this); - } - }, { - key: "render", - value: function render(_ref4) { - var outline = _ref4.outline, - pdfDocument = _ref4.pdfDocument; - - if (this._outline) { - this.reset(); - } - - this._outline = outline || null; - this._pdfDocument = pdfDocument || null; - - if (!outline) { - this._dispatchEvent(0); - - return; - } - - var fragment = document.createDocumentFragment(); - var queue = [{ - parent: fragment, - items: outline - }]; - var outlineCount = 0, - hasAnyNesting = false; - - while (queue.length > 0) { - var levelData = queue.shift(); - - var _iterator = _createForOfIteratorHelper(levelData.items), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var item = _step.value; - var div = document.createElement("div"); - div.className = "treeItem"; - var element = document.createElement("a"); - - this._bindLink(element, item); - - this._setStyles(element, item); - - element.textContent = this._normalizeTextContent(item.title); - div.appendChild(element); - - if (item.items.length > 0) { - hasAnyNesting = true; - - this._addToggleButton(div, item); - - var itemsDiv = document.createElement("div"); - itemsDiv.className = "treeItems"; - div.appendChild(itemsDiv); - queue.push({ - parent: itemsDiv, - items: item.items - }); - } - - levelData.parent.appendChild(div); - outlineCount++; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - - this._finishRendering(fragment, outlineCount, hasAnyNesting); - } - }, { - key: "_currentOutlineItem", - value: function () { - var _currentOutlineItem2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var pageNumberToDestHash, i, destHash, linkElement; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (this._isPagesLoaded) { - _context.next = 2; - break; - } - - throw new Error("_currentOutlineItem: All pages have not been loaded."); - - case 2: - if (!(!this._outline || !this._pdfDocument)) { - _context.next = 4; - break; - } - - return _context.abrupt("return"); - - case 4: - _context.next = 6; - return this._getPageNumberToDestHash(this._pdfDocument); - - case 6: - pageNumberToDestHash = _context.sent; - - if (pageNumberToDestHash) { - _context.next = 9; - break; - } - - return _context.abrupt("return"); - - case 9: - this._updateCurrentTreeItem(null); - - if (!(this._sidebarView !== _ui_utils.SidebarView.OUTLINE)) { - _context.next = 12; - break; - } - - return _context.abrupt("return"); - - case 12: - i = this._currentPageNumber; - - case 13: - if (!(i > 0)) { - _context.next = 25; - break; - } - - destHash = pageNumberToDestHash.get(i); - - if (destHash) { - _context.next = 17; - break; - } - - return _context.abrupt("continue", 22); - - case 17: - linkElement = this.container.querySelector("a[href=\"".concat(destHash, "\"]")); - - if (linkElement) { - _context.next = 20; - break; - } - - return _context.abrupt("continue", 22); - - case 20: - this._scrollToCurrentTreeItem(linkElement.parentNode); - - return _context.abrupt("break", 25); - - case 22: - i--; - _context.next = 13; - break; - - case 25: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function _currentOutlineItem() { - return _currentOutlineItem2.apply(this, arguments); - } - - return _currentOutlineItem; - }() - }, { - key: "_getPageNumberToDestHash", - value: function () { - var _getPageNumberToDestHash2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(pdfDocument) { - var pageNumberToDestHash, pageNumberNesting, queue, levelData, currentNesting, _iterator2, - _step2, _step2$value, dest, items, explicitDest, pageNumber, _explicitDest, - _explicitDest2, destRef, destHash; - - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!this._pageNumberToDestHashCapability) { - _context2.next = 2; - break; - } - - return _context2.abrupt("return", this._pageNumberToDestHashCapability.promise); - - case 2: - this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)(); - pageNumberToDestHash = new Map(), pageNumberNesting = new Map(); - queue = [{ - nesting: 0, - items: this._outline - }]; - - case 5: - if (!(queue.length > 0)) { - _context2.next = 56; - break; - } - - levelData = queue.shift(), currentNesting = levelData.nesting; - _iterator2 = _createForOfIteratorHelper(levelData.items); - _context2.prev = 8; - - _iterator2.s(); - - case 10: - if ((_step2 = _iterator2.n()).done) { - _context2.next = 46; - break; - } - - _step2$value = _step2.value, dest = _step2$value.dest, items = _step2$value.items; - explicitDest = void 0, pageNumber = void 0; - - if (!(typeof dest === "string")) { - _context2.next = 21; - break; - } - - _context2.next = 16; - return pdfDocument.getDestination(dest); - - case 16: - explicitDest = _context2.sent; - - if (!(pdfDocument !== this._pdfDocument)) { - _context2.next = 19; - break; - } - - return _context2.abrupt("return", null); - - case 19: - _context2.next = 22; - break; - - case 21: - explicitDest = dest; - - case 22: - if (!Array.isArray(explicitDest)) { - _context2.next = 43; - break; - } - - _explicitDest = explicitDest, _explicitDest2 = _slicedToArray(_explicitDest, 1), destRef = _explicitDest2[0]; - - if (!(destRef instanceof Object)) { - _context2.next = 41; - break; - } - - pageNumber = this.linkService._cachedPageNumber(destRef); - - if (pageNumber) { - _context2.next = 39; - break; - } - - _context2.prev = 27; - _context2.next = 30; - return pdfDocument.getPageIndex(destRef); - - case 30: - _context2.t0 = _context2.sent; - pageNumber = _context2.t0 + 1; - - if (!(pdfDocument !== this._pdfDocument)) { - _context2.next = 34; - break; - } - - return _context2.abrupt("return", null); - - case 34: - this.linkService.cachePageRef(pageNumber, destRef); - _context2.next = 39; - break; - - case 37: - _context2.prev = 37; - _context2.t1 = _context2["catch"](27); - - case 39: - _context2.next = 42; - break; - - case 41: - if (Number.isInteger(destRef)) { - pageNumber = destRef + 1; - } - - case 42: - if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) { - destHash = this.linkService.getDestinationHash(dest); - pageNumberToDestHash.set(pageNumber, destHash); - pageNumberNesting.set(pageNumber, currentNesting); - } - - case 43: - if (items.length > 0) { - queue.push({ - nesting: currentNesting + 1, - items: items - }); - } - - case 44: - _context2.next = 10; - break; - - case 46: - _context2.next = 51; - break; - - case 48: - _context2.prev = 48; - _context2.t2 = _context2["catch"](8); - - _iterator2.e(_context2.t2); - - case 51: - _context2.prev = 51; - - _iterator2.f(); - - return _context2.finish(51); - - case 54: - _context2.next = 5; - break; - - case 56: - this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null); - - return _context2.abrupt("return", this._pageNumberToDestHashCapability.promise); - - case 58: - case "end": - return _context2.stop(); - } - } - }, _callee2, this, [[8, 48, 51, 54], [27, 37]]); - })); - - function _getPageNumberToDestHash(_x) { - return _getPageNumberToDestHash2.apply(this, arguments); - } - - return _getPageNumberToDestHash; - }() - }]); - - return PDFOutlineViewer; - }(_base_tree_viewer.BaseTreeViewer); - - exports.PDFOutlineViewer = PDFOutlineViewer; - - /***/ - }), - /* 23 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFPresentationMode = void 0; - - var _ui_utils = __webpack_require__(6); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; - var DELAY_BEFORE_HIDING_CONTROLS = 3000; - var ACTIVE_SELECTOR = "pdfPresentationMode"; - var CONTROLS_SELECTOR = "pdfPresentationModeControls"; - var MOUSE_SCROLL_COOLDOWN_TIME = 50; - var PAGE_SWITCH_THRESHOLD = 0.1; - var SWIPE_MIN_DISTANCE_THRESHOLD = 50; - var SWIPE_ANGLE_THRESHOLD = Math.PI / 6; - - var PDFPresentationMode = /*#__PURE__*/function () { - function PDFPresentationMode(_ref) { - var container = _ref.container, - pdfViewer = _ref.pdfViewer, - eventBus = _ref.eventBus; - - _classCallCheck(this, PDFPresentationMode); - - this.container = container; - this.pdfViewer = pdfViewer; - this.eventBus = eventBus; - this.active = false; - this.args = null; - this.contextMenuOpen = false; - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - this.touchSwipeState = null; - } - - _createClass(PDFPresentationMode, [{ - key: "request", - value: function request() { - if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount) { - return false; - } - - this._addFullscreenChangeListeners(); - - this._setSwitchInProgress(); - - this._notifyStateChange(); - - if (this.container.requestFullscreen) { - this.container.requestFullscreen(); - } else if (this.container.mozRequestFullScreen) { - this.container.mozRequestFullScreen(); - } else if (this.container.webkitRequestFullscreen) { - this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } else { - return false; - } - - this.args = { - page: this.pdfViewer.currentPageNumber, - previousScale: this.pdfViewer.currentScaleValue - }; - return true; - } - }, { - key: "_mouseWheel", - value: function _mouseWheel(evt) { - if (!this.active) { - return; - } - - evt.preventDefault(); - var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); - var currentTime = Date.now(); - var storedTime = this.mouseScrollTimeStamp; - - if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { - return; - } - - if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { - this._resetMouseScrollState(); - } - - this.mouseScrollDelta += delta; - - if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { - var totalDelta = this.mouseScrollDelta; - - this._resetMouseScrollState(); - - var success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage(); - - if (success) { - this.mouseScrollTimeStamp = currentTime; - } - } - } - }, { - key: "isFullscreen", - get: function get() { - return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen); - } - }, { - key: "_notifyStateChange", - value: function _notifyStateChange() { - var state = _ui_utils.PresentationModeState.NORMAL; - - if (this.switchInProgress) { - state = _ui_utils.PresentationModeState.CHANGING; - } else if (this.active) { - state = _ui_utils.PresentationModeState.FULLSCREEN; - } - - this.eventBus.dispatch("presentationmodechanged", { - source: this, - state: state, - - get active() { - throw new Error("Deprecated parameter: `active`, please use `state` instead."); - }, - - get switchInProgress() { - throw new Error("Deprecated parameter: `switchInProgress`, please use `state` instead."); - } - - }); - } - }, { - key: "_setSwitchInProgress", - value: function _setSwitchInProgress() { - var _this = this; - - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - } - - this.switchInProgress = setTimeout(function () { - _this._removeFullscreenChangeListeners(); - - delete _this.switchInProgress; - - _this._notifyStateChange(); - }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS); - } - }, { - key: "_resetSwitchInProgress", - value: function _resetSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - delete this.switchInProgress; - } - } - }, { - key: "_enter", - value: function _enter() { - var _this2 = this; - - this.active = true; - - this._resetSwitchInProgress(); - - this._notifyStateChange(); - - this.container.classList.add(ACTIVE_SELECTOR); - setTimeout(function () { - _this2.pdfViewer.currentPageNumber = _this2.args.page; - _this2.pdfViewer.currentScaleValue = "page-fit"; - }, 0); - - this._addWindowListeners(); - - this._showControls(); - - this.contextMenuOpen = false; - window.getSelection().removeAllRanges(); - } - }, { - key: "_exit", - value: function _exit() { - var _this3 = this; - - var page = this.pdfViewer.currentPageNumber; - this.container.classList.remove(ACTIVE_SELECTOR); - setTimeout(function () { - _this3.active = false; - - _this3._removeFullscreenChangeListeners(); - - _this3._notifyStateChange(); - - _this3.pdfViewer.currentScaleValue = _this3.args.previousScale; - _this3.pdfViewer.currentPageNumber = page; - _this3.args = null; - }, 0); - - this._removeWindowListeners(); - - this._hideControls(); - - this._resetMouseScrollState(); - - this.contextMenuOpen = false; - } - }, { - key: "_mouseDown", - value: function _mouseDown(evt) { - if (this.contextMenuOpen) { - this.contextMenuOpen = false; - evt.preventDefault(); - return; - } - - if (evt.button === 0) { - var isInternalLink = evt.target.href && evt.target.classList.contains("internalLink"); - - if (!isInternalLink) { - evt.preventDefault(); - - if (evt.shiftKey) { - this.pdfViewer.previousPage(); - } else { - this.pdfViewer.nextPage(); - } - } - } - } - }, { - key: "_contextMenu", - value: function _contextMenu() { - this.contextMenuOpen = true; - } - }, { - key: "_showControls", - value: function _showControls() { - var _this4 = this; - - if (this.controlsTimeout) { - clearTimeout(this.controlsTimeout); - } else { - this.container.classList.add(CONTROLS_SELECTOR); - } - - this.controlsTimeout = setTimeout(function () { - _this4.container.classList.remove(CONTROLS_SELECTOR); - - delete _this4.controlsTimeout; - }, DELAY_BEFORE_HIDING_CONTROLS); - } - }, { - key: "_hideControls", - value: function _hideControls() { - if (!this.controlsTimeout) { - return; - } - - clearTimeout(this.controlsTimeout); - this.container.classList.remove(CONTROLS_SELECTOR); - delete this.controlsTimeout; - } - }, { - key: "_resetMouseScrollState", - value: function _resetMouseScrollState() { - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - } - }, { - key: "_touchSwipe", - value: function _touchSwipe(evt) { - if (!this.active) { - return; - } - - if (evt.touches.length > 1) { - this.touchSwipeState = null; - return; - } - - switch (evt.type) { - case "touchstart": - this.touchSwipeState = { - startX: evt.touches[0].pageX, - startY: evt.touches[0].pageY, - endX: evt.touches[0].pageX, - endY: evt.touches[0].pageY - }; - break; - - case "touchmove": - if (this.touchSwipeState === null) { - return; - } - - this.touchSwipeState.endX = evt.touches[0].pageX; - this.touchSwipeState.endY = evt.touches[0].pageY; - evt.preventDefault(); - break; - - case "touchend": - if (this.touchSwipeState === null) { - return; - } - - var delta = 0; - var dx = this.touchSwipeState.endX - this.touchSwipeState.startX; - var dy = this.touchSwipeState.endY - this.touchSwipeState.startY; - var absAngle = Math.abs(Math.atan2(dy, dx)); - - if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { - delta = dx; - } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { - delta = dy; - } - - if (delta > 0) { - this.pdfViewer.previousPage(); - } else if (delta < 0) { - this.pdfViewer.nextPage(); - } - - break; - } - } - }, { - key: "_addWindowListeners", - value: function _addWindowListeners() { - this.showControlsBind = this._showControls.bind(this); - this.mouseDownBind = this._mouseDown.bind(this); - this.mouseWheelBind = this._mouseWheel.bind(this); - this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this); - this.contextMenuBind = this._contextMenu.bind(this); - this.touchSwipeBind = this._touchSwipe.bind(this); - window.addEventListener("mousemove", this.showControlsBind); - window.addEventListener("mousedown", this.mouseDownBind); - window.addEventListener("wheel", this.mouseWheelBind, { - passive: false - }); - window.addEventListener("keydown", this.resetMouseScrollStateBind); - window.addEventListener("contextmenu", this.contextMenuBind); - window.addEventListener("touchstart", this.touchSwipeBind); - window.addEventListener("touchmove", this.touchSwipeBind); - window.addEventListener("touchend", this.touchSwipeBind); - } - }, { - key: "_removeWindowListeners", - value: function _removeWindowListeners() { - window.removeEventListener("mousemove", this.showControlsBind); - window.removeEventListener("mousedown", this.mouseDownBind); - window.removeEventListener("wheel", this.mouseWheelBind, { - passive: false - }); - window.removeEventListener("keydown", this.resetMouseScrollStateBind); - window.removeEventListener("contextmenu", this.contextMenuBind); - window.removeEventListener("touchstart", this.touchSwipeBind); - window.removeEventListener("touchmove", this.touchSwipeBind); - window.removeEventListener("touchend", this.touchSwipeBind); - delete this.showControlsBind; - delete this.mouseDownBind; - delete this.mouseWheelBind; - delete this.resetMouseScrollStateBind; - delete this.contextMenuBind; - delete this.touchSwipeBind; - } - }, { - key: "_fullscreenChange", - value: function _fullscreenChange() { - if (this.isFullscreen) { - this._enter(); - } else { - this._exit(); - } - } - }, { - key: "_addFullscreenChangeListeners", - value: function _addFullscreenChangeListeners() { - this.fullscreenChangeBind = this._fullscreenChange.bind(this); - window.addEventListener("fullscreenchange", this.fullscreenChangeBind); - window.addEventListener("mozfullscreenchange", this.fullscreenChangeBind); - window.addEventListener("webkitfullscreenchange", this.fullscreenChangeBind); - } - }, { - key: "_removeFullscreenChangeListeners", - value: function _removeFullscreenChangeListeners() { - window.removeEventListener("fullscreenchange", this.fullscreenChangeBind); - window.removeEventListener("mozfullscreenchange", this.fullscreenChangeBind); - window.removeEventListener("webkitfullscreenchange", this.fullscreenChangeBind); - delete this.fullscreenChangeBind; - } - }]); - - return PDFPresentationMode; - }(); - - exports.PDFPresentationMode = PDFPresentationMode; - - /***/ - }), - /* 24 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFScriptingManager = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _pdfjsLib = __webpack_require__(7); - - var _ui_utils = __webpack_require__(6); - - var _pdf_rendering_queue = __webpack_require__(10); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys.push.apply(keys, symbols); - } - return keys; - } - - function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - if (i % 2) { - ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - return target; - } - - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e2) { - throw _e2; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var PDFScriptingManager = /*#__PURE__*/function () { - function PDFScriptingManager(_ref) { - var eventBus = _ref.eventBus, - _ref$sandboxBundleSrc = _ref.sandboxBundleSrc, - sandboxBundleSrc = _ref$sandboxBundleSrc === void 0 ? null : _ref$sandboxBundleSrc, - _ref$scriptingFactory = _ref.scriptingFactory, - scriptingFactory = _ref$scriptingFactory === void 0 ? null : _ref$scriptingFactory, - _ref$docPropertiesLoo = _ref.docPropertiesLookup, - docPropertiesLookup = _ref$docPropertiesLoo === void 0 ? null : _ref$docPropertiesLoo; - - _classCallCheck(this, PDFScriptingManager); - - this._pdfDocument = null; - this._pdfViewer = null; - this._closeCapability = null; - this._destroyCapability = null; - this._scripting = null; - this._mouseState = Object.create(null); - this._pageEventsReady = false; - this._ready = false; - this._eventBus = eventBus; - this._sandboxBundleSrc = sandboxBundleSrc; - this._scriptingFactory = scriptingFactory; - this._docPropertiesLookup = docPropertiesLookup; - } - - _createClass(PDFScriptingManager, [{ - key: "setViewer", - value: function setViewer(pdfViewer) { - this._pdfViewer = pdfViewer; - } - }, { - key: "setDocument", - value: function () { - var _setDocument = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(pdfDocument) { - var _this = this, - _this$_scripting3; - - var _yield$Promise$all, _yield$Promise$all2, objects, calculationOrder, docActions, - _iterator, _step, _step$value, name, listener, _iterator2, _step2, _step2$value, _name, - _listener, docProperties; - - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!this._pdfDocument) { - _context2.next = 3; - break; - } - - _context2.next = 3; - return this._destroyScripting(); - - case 3: - this._pdfDocument = pdfDocument; - - if (pdfDocument) { - _context2.next = 6; - break; - } - - return _context2.abrupt("return"); - - case 6: - _context2.next = 8; - return Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); - - case 8: - _yield$Promise$all = _context2.sent; - _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3); - objects = _yield$Promise$all2[0]; - calculationOrder = _yield$Promise$all2[1]; - docActions = _yield$Promise$all2[2]; - - if (!(!objects && !docActions)) { - _context2.next = 17; - break; - } - - _context2.next = 16; - return this._destroyScripting(); - - case 16: - return _context2.abrupt("return"); - - case 17: - if (!(pdfDocument !== this._pdfDocument)) { - _context2.next = 19; - break; - } - - return _context2.abrupt("return"); - - case 19: - this._scripting = this._createScripting(); - - this._internalEvents.set("updatefromsandbox", function (event) { - if ((event === null || event === void 0 ? void 0 : event.source) !== window) { - return; - } - - _this._updateFromSandbox(event.detail); - }); - - this._internalEvents.set("dispatcheventinsandbox", function (event) { - var _this$_scripting; - - (_this$_scripting = _this._scripting) === null || _this$_scripting === void 0 ? void 0 : _this$_scripting.dispatchEventInSandbox(event.detail); - }); - - this._internalEvents.set("pagechanging", function (_ref2) { - var pageNumber = _ref2.pageNumber, - previous = _ref2.previous; - - if (pageNumber === previous) { - return; - } - - _this._dispatchPageClose(previous); - - _this._dispatchPageOpen(pageNumber); - }); - - this._internalEvents.set("pagerendered", function (_ref3) { - var pageNumber = _ref3.pageNumber; - - if (!_this._pageOpenPending.has(pageNumber)) { - return; - } - - if (pageNumber !== _this._pdfViewer.currentPageNumber) { - return; - } - - _this._dispatchPageOpen(pageNumber); - }); - - this._internalEvents.set("pagesdestroy", /*#__PURE__*/function () { - var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(event) { - var _this$_scripting2, _this$_closeCapabilit; - - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return _this._dispatchPageClose(_this._pdfViewer.currentPageNumber); - - case 2: - _context.next = 4; - return (_this$_scripting2 = _this._scripting) === null || _this$_scripting2 === void 0 ? void 0 : _this$_scripting2.dispatchEventInSandbox({ - id: "doc", - name: "WillClose" - }); - - case 4: - (_this$_closeCapabilit = _this._closeCapability) === null || _this$_closeCapabilit === void 0 ? void 0 : _this$_closeCapabilit.resolve(); - - case 5: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - return function (_x2) { - return _ref4.apply(this, arguments); - }; - }()); - - this._domEvents.set("mousedown", function (event) { - _this._mouseState.isDown = true; - }); - - this._domEvents.set("mouseup", function (event) { - _this._mouseState.isDown = false; - }); - - _iterator = _createForOfIteratorHelper(this._internalEvents); - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - _step$value = _slicedToArray(_step.value, 2), name = _step$value[0], listener = _step$value[1]; - - this._eventBus._on(name, listener); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - _iterator2 = _createForOfIteratorHelper(this._domEvents); - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - _step2$value = _slicedToArray(_step2.value, 2), _name = _step2$value[0], _listener = _step2$value[1]; - window.addEventListener(_name, _listener); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - _context2.prev = 31; - _context2.next = 34; - return this._getDocProperties(); - - case 34: - docProperties = _context2.sent; - - if (!(pdfDocument !== this._pdfDocument)) { - _context2.next = 37; - break; - } - - return _context2.abrupt("return"); - - case 37: - _context2.next = 39; - return this._scripting.createSandbox({ - objects: objects, - calculationOrder: calculationOrder, - appInfo: { - platform: navigator.platform, - language: navigator.language - }, - docInfo: _objectSpread(_objectSpread({}, docProperties), {}, { - actions: docActions - }) - }); - - case 39: - this._eventBus.dispatch("sandboxcreated", { - source: this - }); - - _context2.next = 48; - break; - - case 42: - _context2.prev = 42; - _context2.t0 = _context2["catch"](31); - console.error("PDFScriptingManager.setDocument: \"".concat(_context2.t0 === null || _context2.t0 === void 0 ? void 0 : _context2.t0.message, "\".")); - _context2.next = 47; - return this._destroyScripting(); - - case 47: - return _context2.abrupt("return"); - - case 48: - _context2.next = 50; - return (_this$_scripting3 = this._scripting) === null || _this$_scripting3 === void 0 ? void 0 : _this$_scripting3.dispatchEventInSandbox({ - id: "doc", - name: "Open" - }); - - case 50: - _context2.next = 52; - return this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true); - - case 52: - Promise.resolve().then(function () { - if (pdfDocument === _this._pdfDocument) { - _this._ready = true; - } - }); - - case 53: - case "end": - return _context2.stop(); - } - } - }, _callee2, this, [[31, 42]]); - })); - - function setDocument(_x) { - return _setDocument.apply(this, arguments); - } - - return setDocument; - }() - }, { - key: "dispatchWillSave", - value: function () { - var _dispatchWillSave = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3(detail) { - var _this$_scripting4; - - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - return _context3.abrupt("return", (_this$_scripting4 = this._scripting) === null || _this$_scripting4 === void 0 ? void 0 : _this$_scripting4.dispatchEventInSandbox({ - id: "doc", - name: "WillSave" - })); - - case 1: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function dispatchWillSave(_x3) { - return _dispatchWillSave.apply(this, arguments); - } - - return dispatchWillSave; - }() - }, { - key: "dispatchDidSave", - value: function () { - var _dispatchDidSave = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4(detail) { - var _this$_scripting5; - - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - return _context4.abrupt("return", (_this$_scripting5 = this._scripting) === null || _this$_scripting5 === void 0 ? void 0 : _this$_scripting5.dispatchEventInSandbox({ - id: "doc", - name: "DidSave" - })); - - case 1: - case "end": - return _context4.stop(); - } - } - }, _callee4, this); - })); - - function dispatchDidSave(_x4) { - return _dispatchDidSave.apply(this, arguments); - } - - return dispatchDidSave; - }() - }, { - key: "dispatchWillPrint", - value: function () { - var _dispatchWillPrint = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee5(detail) { - var _this$_scripting6; - - return _regenerator["default"].wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - return _context5.abrupt("return", (_this$_scripting6 = this._scripting) === null || _this$_scripting6 === void 0 ? void 0 : _this$_scripting6.dispatchEventInSandbox({ - id: "doc", - name: "WillPrint" - })); - - case 1: - case "end": - return _context5.stop(); - } - } - }, _callee5, this); - })); - - function dispatchWillPrint(_x5) { - return _dispatchWillPrint.apply(this, arguments); - } - - return dispatchWillPrint; - }() - }, { - key: "dispatchDidPrint", - value: function () { - var _dispatchDidPrint = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee6(detail) { - var _this$_scripting7; - - return _regenerator["default"].wrap(function _callee6$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - return _context6.abrupt("return", (_this$_scripting7 = this._scripting) === null || _this$_scripting7 === void 0 ? void 0 : _this$_scripting7.dispatchEventInSandbox({ - id: "doc", - name: "DidPrint" - })); - - case 1: - case "end": - return _context6.stop(); - } - } - }, _callee6, this); - })); - - function dispatchDidPrint(_x6) { - return _dispatchDidPrint.apply(this, arguments); - } - - return dispatchDidPrint; - }() - }, { - key: "mouseState", - get: function get() { - return this._mouseState; - } - }, { - key: "destroyPromise", - get: function get() { - var _this$_destroyCapabil; - - return ((_this$_destroyCapabil = this._destroyCapability) === null || _this$_destroyCapabil === void 0 ? void 0 : _this$_destroyCapabil.promise) || null; - } - }, { - key: "ready", - get: function get() { - return this._ready; - } - }, { - key: "_internalEvents", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map()); - } - }, { - key: "_domEvents", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "_domEvents", new Map()); - } - }, { - key: "_pageOpenPending", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set()); - } - }, { - key: "_visitedPages", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map()); - } - }, { - key: "_updateFromSandbox", - value: function () { - var _updateFromSandbox2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee7(detail) { - var isInPresentationMode, id, command, value, element, _this$_pdfDocument; - - return _regenerator["default"].wrap(function _callee7$(_context7) { - while (1) { - switch (_context7.prev = _context7.next) { - case 0: - isInPresentationMode = this._pdfViewer.isInPresentationMode || this._pdfViewer.isChangingPresentationMode; - id = detail.id, command = detail.command, value = detail.value; - - if (id) { - _context7.next = 25; - break; - } - - _context7.t0 = command; - _context7.next = _context7.t0 === "clear" ? 6 : _context7.t0 === "error" ? 8 : _context7.t0 === "layout" ? 10 : _context7.t0 === "page-num" ? 12 : _context7.t0 === "print" ? 14 : _context7.t0 === "println" ? 18 : _context7.t0 === "zoom" ? 20 : 24; - break; - - case 6: - console.clear(); - return _context7.abrupt("break", 24); - - case 8: - console.error(value); - return _context7.abrupt("break", 24); - - case 10: - this._pdfViewer.spreadMode = (0, _ui_utils.apiPageLayoutToSpreadMode)(value); - return _context7.abrupt("break", 24); - - case 12: - this._pdfViewer.currentPageNumber = value + 1; - return _context7.abrupt("break", 24); - - case 14: - _context7.next = 16; - return this._pdfViewer.pagesPromise; - - case 16: - this._eventBus.dispatch("print", { - source: this - }); - - return _context7.abrupt("break", 24); - - case 18: - console.log(value); - return _context7.abrupt("break", 24); - - case 20: - if (!isInPresentationMode) { - _context7.next = 22; - break; - } - - return _context7.abrupt("return"); - - case 22: - this._pdfViewer.currentScaleValue = value; - return _context7.abrupt("break", 24); - - case 24: - return _context7.abrupt("return"); - - case 25: - if (!isInPresentationMode) { - _context7.next = 28; - break; - } - - if (!detail.focus) { - _context7.next = 28; - break; - } - - return _context7.abrupt("return"); - - case 28: - element = document.getElementById(id); - - if (element) { - element.dispatchEvent(new CustomEvent("updatefromsandbox", { - detail: detail - })); - } else { - delete detail.id; - (_this$_pdfDocument = this._pdfDocument) === null || _this$_pdfDocument === void 0 ? void 0 : _this$_pdfDocument.annotationStorage.setValue(id, detail); - } - - case 30: - case "end": - return _context7.stop(); - } - } - }, _callee7, this); - })); - - function _updateFromSandbox(_x7) { - return _updateFromSandbox2.apply(this, arguments); - } - - return _updateFromSandbox; - }() - }, { - key: "_dispatchPageOpen", - value: function () { - var _dispatchPageOpen2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee9(pageNumber) { - var _this2 = this; - - var initialize, - pdfDocument, - visitedPages, - pageView, - actionsPromise, - _args9 = arguments; - return _regenerator["default"].wrap(function _callee9$(_context9) { - while (1) { - switch (_context9.prev = _context9.next) { - case 0: - initialize = _args9.length > 1 && _args9[1] !== undefined ? _args9[1] : false; - pdfDocument = this._pdfDocument, visitedPages = this._visitedPages; - - if (initialize) { - this._closeCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._pageEventsReady = true; - } - - if (this._pageEventsReady) { - _context9.next = 5; - break; - } - - return _context9.abrupt("return"); - - case 5: - pageView = this._pdfViewer.getPageView(pageNumber - 1); - - if (!((pageView === null || pageView === void 0 ? void 0 : pageView.renderingState) !== _pdf_rendering_queue.RenderingStates.FINISHED)) { - _context9.next = 9; - break; - } - - this._pageOpenPending.add(pageNumber); - - return _context9.abrupt("return"); - - case 9: - this._pageOpenPending["delete"](pageNumber); - - actionsPromise = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee8() { - var _pageView$pdfPage, _this2$_scripting; - - var actions; - return _regenerator["default"].wrap(function _callee8$(_context8) { - while (1) { - switch (_context8.prev = _context8.next) { - case 0: - _context8.next = 2; - return !visitedPages.has(pageNumber) ? (_pageView$pdfPage = pageView.pdfPage) === null || _pageView$pdfPage === void 0 ? void 0 : _pageView$pdfPage.getJSActions() : null; - - case 2: - actions = _context8.sent; - - if (!(pdfDocument !== _this2._pdfDocument)) { - _context8.next = 5; - break; - } - - return _context8.abrupt("return"); - - case 5: - _context8.next = 7; - return (_this2$_scripting = _this2._scripting) === null || _this2$_scripting === void 0 ? void 0 : _this2$_scripting.dispatchEventInSandbox({ - id: "page", - name: "PageOpen", - pageNumber: pageNumber, - actions: actions - }); - - case 7: - case "end": - return _context8.stop(); - } - } - }, _callee8); - }))(); - visitedPages.set(pageNumber, actionsPromise); - - case 12: - case "end": - return _context9.stop(); - } - } - }, _callee9, this); - })); - - function _dispatchPageOpen(_x8) { - return _dispatchPageOpen2.apply(this, arguments); - } - - return _dispatchPageOpen; - }() - }, { - key: "_dispatchPageClose", - value: function () { - var _dispatchPageClose2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee10(pageNumber) { - var _this$_scripting8; - - var pdfDocument, visitedPages, actionsPromise; - return _regenerator["default"].wrap(function _callee10$(_context10) { - while (1) { - switch (_context10.prev = _context10.next) { - case 0: - pdfDocument = this._pdfDocument, visitedPages = this._visitedPages; - - if (this._pageEventsReady) { - _context10.next = 3; - break; - } - - return _context10.abrupt("return"); - - case 3: - if (!this._pageOpenPending.has(pageNumber)) { - _context10.next = 5; - break; - } - - return _context10.abrupt("return"); - - case 5: - actionsPromise = visitedPages.get(pageNumber); - - if (actionsPromise) { - _context10.next = 8; - break; - } - - return _context10.abrupt("return"); - - case 8: - visitedPages.set(pageNumber, null); - _context10.next = 11; - return actionsPromise; - - case 11: - if (!(pdfDocument !== this._pdfDocument)) { - _context10.next = 13; - break; - } - - return _context10.abrupt("return"); - - case 13: - _context10.next = 15; - return (_this$_scripting8 = this._scripting) === null || _this$_scripting8 === void 0 ? void 0 : _this$_scripting8.dispatchEventInSandbox({ - id: "page", - name: "PageClose", - pageNumber: pageNumber - }); - - case 15: - case "end": - return _context10.stop(); - } - } - }, _callee10, this); - })); - - function _dispatchPageClose(_x9) { - return _dispatchPageClose2.apply(this, arguments); - } - - return _dispatchPageClose; - }() - }, { - key: "_getDocProperties", - value: function () { - var _getDocProperties2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee11() { - return _regenerator["default"].wrap(function _callee11$(_context11) { - while (1) { - switch (_context11.prev = _context11.next) { - case 0: - if (!this._docPropertiesLookup) { - _context11.next = 2; - break; - } - - return _context11.abrupt("return", this._docPropertiesLookup(this._pdfDocument)); - - case 2: - throw new Error("_getDocProperties: Unable to lookup properties."); - - case 3: - case "end": - return _context11.stop(); - } - } - }, _callee11, this); - })); - - function _getDocProperties() { - return _getDocProperties2.apply(this, arguments); - } - - return _getDocProperties; - }() - }, { - key: "_createScripting", - value: function _createScripting() { - this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)(); - - if (this._scripting) { - throw new Error("_createScripting: Scripting already exists."); - } - - if (this._scriptingFactory) { - return this._scriptingFactory.createScripting({ - sandboxBundleSrc: this._sandboxBundleSrc - }); - } - - throw new Error("_createScripting: Cannot create scripting."); - } - }, { - key: "_destroyScripting", - value: function () { - var _destroyScripting2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee12() { - var _this$_destroyCapabil3; - - var _this$_destroyCapabil2, _iterator3, _step3, _step3$value, name, listener, _iterator4, - _step4, _step4$value, _name2, _listener2; - - return _regenerator["default"].wrap(function _callee12$(_context12) { - while (1) { - switch (_context12.prev = _context12.next) { - case 0: - if (this._scripting) { - _context12.next = 4; - break; - } - - this._pdfDocument = null; - (_this$_destroyCapabil2 = this._destroyCapability) === null || _this$_destroyCapabil2 === void 0 ? void 0 : _this$_destroyCapabil2.resolve(); - return _context12.abrupt("return"); - - case 4: - if (!this._closeCapability) { - _context12.next = 8; - break; - } - - _context12.next = 7; - return Promise.race([this._closeCapability.promise, new Promise(function (resolve) { - setTimeout(resolve, 1000); - })])["catch"](function (reason) { - }); - - case 7: - this._closeCapability = null; - - case 8: - this._pdfDocument = null; - _context12.prev = 9; - _context12.next = 12; - return this._scripting.destroySandbox(); - - case 12: - _context12.next = 16; - break; - - case 14: - _context12.prev = 14; - _context12.t0 = _context12["catch"](9); - - case 16: - _iterator3 = _createForOfIteratorHelper(this._internalEvents); - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - _step3$value = _slicedToArray(_step3.value, 2), name = _step3$value[0], listener = _step3$value[1]; - - this._eventBus._off(name, listener); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - this._internalEvents.clear(); - - _iterator4 = _createForOfIteratorHelper(this._domEvents); - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - _step4$value = _slicedToArray(_step4.value, 2), _name2 = _step4$value[0], _listener2 = _step4$value[1]; - window.removeEventListener(_name2, _listener2); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - this._domEvents.clear(); - - this._pageOpenPending.clear(); - - this._visitedPages.clear(); - - this._scripting = null; - delete this._mouseState.isDown; - this._pageEventsReady = false; - this._ready = false; - (_this$_destroyCapabil3 = this._destroyCapability) === null || _this$_destroyCapabil3 === void 0 ? void 0 : _this$_destroyCapabil3.resolve(); - - case 29: - case "end": - return _context12.stop(); - } - } - }, _callee12, this, [[9, 14]]); - })); - - function _destroyScripting() { - return _destroyScripting2.apply(this, arguments); - } - - return _destroyScripting; - }() - }]); - - return PDFScriptingManager; - }(); - - exports.PDFScriptingManager = PDFScriptingManager; - - /***/ - }), - /* 25 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFSidebar = void 0; - - var _ui_utils = __webpack_require__(6); - - var _pdf_rendering_queue = __webpack_require__(10); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; - - var PDFSidebar = /*#__PURE__*/function () { - function PDFSidebar(_ref) { - var elements = _ref.elements, - pdfViewer = _ref.pdfViewer, - pdfThumbnailViewer = _ref.pdfThumbnailViewer, - eventBus = _ref.eventBus, - l10n = _ref.l10n; - - _classCallCheck(this, PDFSidebar); - - this.isOpen = false; - this.active = _ui_utils.SidebarView.THUMBS; - this.isInitialViewSet = false; - this.onToggled = null; - this.pdfViewer = pdfViewer; - this.pdfThumbnailViewer = pdfThumbnailViewer; - this.outerContainer = elements.outerContainer; - this.viewerContainer = elements.viewerContainer; - this.toggleButton = elements.toggleButton; - this.thumbnailButton = elements.thumbnailButton; - this.outlineButton = elements.outlineButton; - this.attachmentsButton = elements.attachmentsButton; - this.layersButton = elements.layersButton; - this.thumbnailView = elements.thumbnailView; - this.outlineView = elements.outlineView; - this.attachmentsView = elements.attachmentsView; - this.layersView = elements.layersView; - this._outlineOptionsContainer = elements.outlineOptionsContainer; - this._currentOutlineItemButton = elements.currentOutlineItemButton; - this.eventBus = eventBus; - this.l10n = l10n; - - this._addEventListeners(); - } - - _createClass(PDFSidebar, [{ - key: "reset", - value: function reset() { - this.isInitialViewSet = false; - - this._hideUINotification(true); - - this.switchView(_ui_utils.SidebarView.THUMBS); - this.outlineButton.disabled = false; - this.attachmentsButton.disabled = false; - this.layersButton.disabled = false; - this._currentOutlineItemButton.disabled = true; - } - }, { - key: "visibleView", - get: function get() { - return this.isOpen ? this.active : _ui_utils.SidebarView.NONE; - } - }, { - key: "isThumbnailViewVisible", - get: function get() { - return this.isOpen && this.active === _ui_utils.SidebarView.THUMBS; - } - }, { - key: "isOutlineViewVisible", - get: function get() { - return this.isOpen && this.active === _ui_utils.SidebarView.OUTLINE; - } - }, { - key: "isAttachmentsViewVisible", - get: function get() { - return this.isOpen && this.active === _ui_utils.SidebarView.ATTACHMENTS; - } - }, { - key: "isLayersViewVisible", - get: function get() { - return this.isOpen && this.active === _ui_utils.SidebarView.LAYERS; - } - }, { - key: "setInitialView", - value: function setInitialView() { - var view = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ui_utils.SidebarView.NONE; - - if (this.isInitialViewSet) { - return; - } - - this.isInitialViewSet = true; - - if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) { - this._dispatchEvent(); - - return; - } - - if (!this._switchView(view, true)) { - this._dispatchEvent(); - } - } - }, { - key: "switchView", - value: function switchView(view) { - var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - this._switchView(view, forceOpen); - } - }, { - key: "_switchView", - value: function _switchView(view) { - var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var isViewChanged = view !== this.active; - var shouldForceRendering = false; - - switch (view) { - case _ui_utils.SidebarView.NONE: - if (this.isOpen) { - this.close(); - return true; - } - - return false; - - case _ui_utils.SidebarView.THUMBS: - if (this.isOpen && isViewChanged) { - shouldForceRendering = true; - } - - break; - - case _ui_utils.SidebarView.OUTLINE: - if (this.outlineButton.disabled) { - return false; - } - - break; - - case _ui_utils.SidebarView.ATTACHMENTS: - if (this.attachmentsButton.disabled) { - return false; - } - - break; - - case _ui_utils.SidebarView.LAYERS: - if (this.layersButton.disabled) { - return false; - } - - break; - - default: - console.error("PDFSidebar._switchView: \"".concat(view, "\" is not a valid view.")); - return false; - } - - this.active = view; - this.thumbnailButton.classList.toggle("toggled", view === _ui_utils.SidebarView.THUMBS); - this.outlineButton.classList.toggle("toggled", view === _ui_utils.SidebarView.OUTLINE); - this.attachmentsButton.classList.toggle("toggled", view === _ui_utils.SidebarView.ATTACHMENTS); - this.layersButton.classList.toggle("toggled", view === _ui_utils.SidebarView.LAYERS); - this.thumbnailView.classList.toggle("hidden", view !== _ui_utils.SidebarView.THUMBS); - this.outlineView.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE); - this.attachmentsView.classList.toggle("hidden", view !== _ui_utils.SidebarView.ATTACHMENTS); - this.layersView.classList.toggle("hidden", view !== _ui_utils.SidebarView.LAYERS); - - this._outlineOptionsContainer.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE); - - if (forceOpen && !this.isOpen) { - this.open(); - return true; - } - - if (shouldForceRendering) { - this._updateThumbnailViewer(); - - this._forceRendering(); - } - - if (isViewChanged) { - this._dispatchEvent(); - } - - return isViewChanged; - } - }, { - key: "open", - value: function open() { - if (this.isOpen) { - return; - } - - this.isOpen = true; - this.toggleButton.classList.add("toggled"); - this.toggleButton.setAttribute("aria-expanded", "true"); - this.outerContainer.classList.add("sidebarMoving", "sidebarOpen"); - - if (this.active === _ui_utils.SidebarView.THUMBS) { - this._updateThumbnailViewer(); - } - - this._forceRendering(); - - this._dispatchEvent(); - - this._hideUINotification(); - } - }, { - key: "close", - value: function close() { - if (!this.isOpen) { - return; - } - - this.isOpen = false; - this.toggleButton.classList.remove("toggled"); - this.toggleButton.setAttribute("aria-expanded", "false"); - this.outerContainer.classList.add("sidebarMoving"); - this.outerContainer.classList.remove("sidebarOpen"); - - this._forceRendering(); - - this._dispatchEvent(); - } - }, { - key: "toggle", - value: function toggle() { - if (this.isOpen) { - this.close(); - } else { - this.open(); - } - } - }, { - key: "_dispatchEvent", - value: function _dispatchEvent() { - this.eventBus.dispatch("sidebarviewchanged", { - source: this, - view: this.visibleView - }); - } - }, { - key: "_forceRendering", - value: function _forceRendering() { - if (this.onToggled) { - this.onToggled(); - } else { - this.pdfViewer.forceRendering(); - this.pdfThumbnailViewer.forceRendering(); - } - } - }, { - key: "_updateThumbnailViewer", - value: function _updateThumbnailViewer() { - var pdfViewer = this.pdfViewer, - pdfThumbnailViewer = this.pdfThumbnailViewer; - var pagesCount = pdfViewer.pagesCount; - - for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) { - var pageView = pdfViewer.getPageView(pageIndex); - - if ((pageView === null || pageView === void 0 ? void 0 : pageView.renderingState) === _pdf_rendering_queue.RenderingStates.FINISHED) { - var thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - } - - pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); - } - }, { - key: "_showUINotification", - value: function _showUINotification() { - var _this = this; - - this.l10n.get("toggle_sidebar_notification2.title").then(function (msg) { - _this.toggleButton.title = msg; - }); - - if (!this.isOpen) { - this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); - } - } - }, { - key: "_hideUINotification", - value: function _hideUINotification() { - var _this2 = this; - - var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (this.isOpen || reset) { - this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); - } - - if (reset) { - this.l10n.get("toggle_sidebar.title").then(function (msg) { - _this2.toggleButton.title = msg; - }); - } - } - }, { - key: "_addEventListeners", - value: function _addEventListeners() { - var _this3 = this; - - this.viewerContainer.addEventListener("transitionend", function (evt) { - if (evt.target === _this3.viewerContainer) { - _this3.outerContainer.classList.remove("sidebarMoving"); - } - }); - this.toggleButton.addEventListener("click", function () { - _this3.toggle(); - }); - this.thumbnailButton.addEventListener("click", function () { - _this3.switchView(_ui_utils.SidebarView.THUMBS); - }); - this.outlineButton.addEventListener("click", function () { - _this3.switchView(_ui_utils.SidebarView.OUTLINE); - }); - this.outlineButton.addEventListener("dblclick", function () { - _this3.eventBus.dispatch("toggleoutlinetree", { - source: _this3 - }); - }); - this.attachmentsButton.addEventListener("click", function () { - _this3.switchView(_ui_utils.SidebarView.ATTACHMENTS); - }); - this.layersButton.addEventListener("click", function () { - _this3.switchView(_ui_utils.SidebarView.LAYERS); - }); - this.layersButton.addEventListener("dblclick", function () { - _this3.eventBus.dispatch("resetlayers", { - source: _this3 - }); - }); - - this._currentOutlineItemButton.addEventListener("click", function () { - _this3.eventBus.dispatch("currentoutlineitem", { - source: _this3 - }); - }); - - var onTreeLoaded = function onTreeLoaded(count, button, view) { - button.disabled = !count; - - if (count) { - _this3._showUINotification(); - } else if (_this3.active === view) { - _this3.switchView(_ui_utils.SidebarView.THUMBS); - } - }; - - this.eventBus._on("outlineloaded", function (evt) { - onTreeLoaded(evt.outlineCount, _this3.outlineButton, _ui_utils.SidebarView.OUTLINE); - - if (evt.enableCurrentOutlineItemButton) { - _this3.pdfViewer.pagesPromise.then(function () { - _this3._currentOutlineItemButton.disabled = !_this3.isInitialViewSet; - }); - } - }); - - this.eventBus._on("attachmentsloaded", function (evt) { - onTreeLoaded(evt.attachmentsCount, _this3.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS); - }); - - this.eventBus._on("layersloaded", function (evt) { - onTreeLoaded(evt.layersCount, _this3.layersButton, _ui_utils.SidebarView.LAYERS); - }); - - this.eventBus._on("presentationmodechanged", function (evt) { - if (evt.state === _ui_utils.PresentationModeState.NORMAL && _this3.isThumbnailViewVisible) { - _this3._updateThumbnailViewer(); - } - }); - } - }]); - - return PDFSidebar; - }(); - - exports.PDFSidebar = PDFSidebar; - - /***/ - }), - /* 26 */ - /***/ ((__unused_webpack_module, exports) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFSidebarResizer = void 0; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var SIDEBAR_WIDTH_VAR = "--sidebar-width"; - var SIDEBAR_MIN_WIDTH = 200; - var SIDEBAR_RESIZING_CLASS = "sidebarResizing"; - - var PDFSidebarResizer = /*#__PURE__*/function () { - function PDFSidebarResizer(options, eventBus, l10n) { - var _this = this; - - _classCallCheck(this, PDFSidebarResizer); - - this.isRTL = false; - this.sidebarOpen = false; - this.doc = document.documentElement; - this._width = null; - this._outerContainerWidth = null; - this._boundEvents = Object.create(null); - this.outerContainer = options.outerContainer; - this.resizer = options.resizer; - this.eventBus = eventBus; - l10n.getDirection().then(function (dir) { - _this.isRTL = dir === "rtl"; - }); - - this._addEventListeners(); - } - - _createClass(PDFSidebarResizer, [{ - key: "outerContainerWidth", - get: function get() { - return this._outerContainerWidth || (this._outerContainerWidth = this.outerContainer.clientWidth); - } - }, { - key: "_updateWidth", - value: function _updateWidth() { - var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var maxWidth = Math.floor(this.outerContainerWidth / 2); - - if (width > maxWidth) { - width = maxWidth; - } - - if (width < SIDEBAR_MIN_WIDTH) { - width = SIDEBAR_MIN_WIDTH; - } - - if (width === this._width) { - return false; - } - - this._width = width; - this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, "".concat(width, "px")); - return true; - } - }, { - key: "_mouseMove", - value: function _mouseMove(evt) { - var width = evt.clientX; - - if (this.isRTL) { - width = this.outerContainerWidth - width; - } - - this._updateWidth(width); - } - }, { - key: "_mouseUp", - value: function _mouseUp(evt) { - this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); - this.eventBus.dispatch("resize", { - source: this - }); - var _boundEvents = this._boundEvents; - window.removeEventListener("mousemove", _boundEvents.mouseMove); - window.removeEventListener("mouseup", _boundEvents.mouseUp); - } - }, { - key: "_addEventListeners", - value: function _addEventListeners() { - var _this2 = this; - - var _boundEvents = this._boundEvents; - _boundEvents.mouseMove = this._mouseMove.bind(this); - _boundEvents.mouseUp = this._mouseUp.bind(this); - this.resizer.addEventListener("mousedown", function (evt) { - if (evt.button !== 0) { - return; - } - - _this2.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); - - window.addEventListener("mousemove", _boundEvents.mouseMove); - window.addEventListener("mouseup", _boundEvents.mouseUp); - }); - - this.eventBus._on("sidebarviewchanged", function (evt) { - _this2.sidebarOpen = !!(evt !== null && evt !== void 0 && evt.view); - }); - - this.eventBus._on("resize", function (evt) { - if ((evt === null || evt === void 0 ? void 0 : evt.source) !== window) { - return; - } - - _this2._outerContainerWidth = null; - - if (!_this2._width) { - return; - } - - if (!_this2.sidebarOpen) { - _this2._updateWidth(_this2._width); - - return; - } - - _this2.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); - - var updated = _this2._updateWidth(_this2._width); - - Promise.resolve().then(function () { - _this2.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); - - if (updated) { - _this2.eventBus.dispatch("resize", { - source: _this2 - }); - } - }); - }); - } - }]); - - return PDFSidebarResizer; - }(); - - exports.PDFSidebarResizer = PDFSidebarResizer; - - /***/ - }), - /* 27 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFThumbnailViewer = void 0; - - var _ui_utils = __webpack_require__(6); - - var _pdf_thumbnail_view = __webpack_require__(28); - - var _pdf_rendering_queue = __webpack_require__(10); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var THUMBNAIL_SCROLL_MARGIN = -19; - var THUMBNAIL_SELECTED_CLASS = "selected"; - - var PDFThumbnailViewer = /*#__PURE__*/function () { - function PDFThumbnailViewer(_ref) { - var _this = this; - - var container = _ref.container, - eventBus = _ref.eventBus, - linkService = _ref.linkService, - renderingQueue = _ref.renderingQueue, - l10n = _ref.l10n; - - _classCallCheck(this, PDFThumbnailViewer); - - this.container = container; - this.linkService = linkService; - this.renderingQueue = renderingQueue; - this.l10n = l10n; - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); - - this._resetView(); - - eventBus._on("optionalcontentconfigchanged", function () { - _this._setImageDisabled = true; - }); - } - - _createClass(PDFThumbnailViewer, [{ - key: "_scrollUpdated", - value: function _scrollUpdated() { - this.renderingQueue.renderHighestPriority(); - } - }, { - key: "getThumbnail", - value: function getThumbnail(index) { - return this._thumbnails[index]; - } - }, { - key: "_getVisibleThumbs", - value: function _getVisibleThumbs() { - return (0, _ui_utils.getVisibleElements)({ - scrollEl: this.container, - views: this._thumbnails - }); - } - }, { - key: "scrollThumbnailIntoView", - value: function scrollThumbnailIntoView(pageNumber) { - if (!this.pdfDocument) { - return; - } - - var thumbnailView = this._thumbnails[pageNumber - 1]; - - if (!thumbnailView) { - console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.'); - return; - } - - if (pageNumber !== this._currentPageNumber) { - var prevThumbnailView = this._thumbnails[this._currentPageNumber - 1]; - prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS); - thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); - } - - var visibleThumbs = this._getVisibleThumbs(); - - var numVisibleThumbs = visibleThumbs.views.length; - - if (numVisibleThumbs > 0) { - var first = visibleThumbs.first.id; - var last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first; - var shouldScroll = false; - - if (pageNumber <= first || pageNumber >= last) { - shouldScroll = true; - } else { - visibleThumbs.views.some(function (view) { - if (view.id !== pageNumber) { - return false; - } - - shouldScroll = view.percent < 100; - return true; - }); - } - - if (shouldScroll) { - (0, _ui_utils.scrollIntoView)(thumbnailView.div, { - top: THUMBNAIL_SCROLL_MARGIN - }); - } - } - - this._currentPageNumber = pageNumber; - } - }, { - key: "pagesRotation", - get: function get() { - return this._pagesRotation; - }, - set: function set(rotation) { - if (!(0, _ui_utils.isValidRotation)(rotation)) { - throw new Error("Invalid thumbnails rotation angle."); - } - - if (!this.pdfDocument) { - return; - } - - if (this._pagesRotation === rotation) { - return; - } - - this._pagesRotation = rotation; - - for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { - this._thumbnails[i].update(rotation); - } - } - }, { - key: "cleanup", - value: function cleanup() { - for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { - if (this._thumbnails[i] && this._thumbnails[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - this._thumbnails[i].reset(); - } - } - - _pdf_thumbnail_view.TempImageFactory.destroyCanvas(); - } - }, { - key: "_resetView", - value: function _resetView() { - this._thumbnails = []; - this._currentPageNumber = 1; - this._pageLabels = null; - this._pagesRotation = 0; - this._optionalContentConfigPromise = null; - this._pagesRequests = new WeakMap(); - this._setImageDisabled = false; - this.container.textContent = ""; - } - }, { - key: "setDocument", - value: function setDocument(pdfDocument) { - var _this2 = this; - - if (this.pdfDocument) { - this._cancelRendering(); - - this._resetView(); - } - - this.pdfDocument = pdfDocument; - - if (!pdfDocument) { - return; - } - - var firstPagePromise = pdfDocument.getPage(1); - var optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); - firstPagePromise.then(function (firstPdfPage) { - _this2._optionalContentConfigPromise = optionalContentConfigPromise; - var pagesCount = pdfDocument.numPages; - var viewport = firstPdfPage.getViewport({ - scale: 1 - }); - - var checkSetImageDisabled = function checkSetImageDisabled() { - return _this2._setImageDisabled; - }; - - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ - container: _this2.container, - id: pageNum, - defaultViewport: viewport.clone(), - optionalContentConfigPromise: optionalContentConfigPromise, - linkService: _this2.linkService, - renderingQueue: _this2.renderingQueue, - checkSetImageDisabled: checkSetImageDisabled, - disableCanvasToImageConversion: false, - l10n: _this2.l10n - }); - - _this2._thumbnails.push(thumbnail); - } - - var firstThumbnailView = _this2._thumbnails[0]; - - if (firstThumbnailView) { - firstThumbnailView.setPdfPage(firstPdfPage); - } - - var thumbnailView = _this2._thumbnails[_this2._currentPageNumber - 1]; - thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); - })["catch"](function (reason) { - console.error("Unable to initialize thumbnail viewer", reason); - }); - } - }, { - key: "_cancelRendering", - value: function _cancelRendering() { - for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { - if (this._thumbnails[i]) { - this._thumbnails[i].cancelRendering(); - } - } - } - }, { - key: "setPageLabels", - value: function setPageLabels(labels) { - if (!this.pdfDocument) { - return; - } - - if (!labels) { - this._pageLabels = null; - } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { - this._pageLabels = null; - console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels."); - } else { - this._pageLabels = labels; - } - - for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { - var _this$_pageLabels$i, _this$_pageLabels; - - this._thumbnails[i].setPageLabel((_this$_pageLabels$i = (_this$_pageLabels = this._pageLabels) === null || _this$_pageLabels === void 0 ? void 0 : _this$_pageLabels[i]) !== null && _this$_pageLabels$i !== void 0 ? _this$_pageLabels$i : null); - } - } - }, { - key: "_ensurePdfPageLoaded", - value: function _ensurePdfPageLoaded(thumbView) { - var _this3 = this; - - if (thumbView.pdfPage) { - return Promise.resolve(thumbView.pdfPage); - } - - if (this._pagesRequests.has(thumbView)) { - return this._pagesRequests.get(thumbView); - } - - var promise = this.pdfDocument.getPage(thumbView.id).then(function (pdfPage) { - if (!thumbView.pdfPage) { - thumbView.setPdfPage(pdfPage); - } - - _this3._pagesRequests["delete"](thumbView); - - return pdfPage; - })["catch"](function (reason) { - console.error("Unable to get page for thumb view", reason); - - _this3._pagesRequests["delete"](thumbView); - }); - - this._pagesRequests.set(thumbView, promise); - - return promise; - } - }, { - key: "forceRendering", - value: function forceRendering() { - var _this4 = this; - - var visibleThumbs = this._getVisibleThumbs(); - - var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, this.scroll.down); - - if (thumbView) { - this._ensurePdfPageLoaded(thumbView).then(function () { - _this4.renderingQueue.renderView(thumbView); - }); - - return true; - } - - return false; - } - }]); - - return PDFThumbnailViewer; - }(); - - exports.PDFThumbnailViewer = PDFThumbnailViewer; - - /***/ - }), - /* 28 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.TempImageFactory = exports.PDFThumbnailView = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _ui_utils = __webpack_require__(6); - - var _pdfjsLib = __webpack_require__(7); - - var _pdf_rendering_queue = __webpack_require__(10); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var MAX_NUM_SCALING_STEPS = 3; - var THUMBNAIL_CANVAS_BORDER_WIDTH = 1; - var THUMBNAIL_WIDTH = 98; - - var TempImageFactory = function TempImageFactoryClosure() { - var tempCanvasCache = null; - return { - getCanvas: function getCanvas(width, height) { - var tempCanvas = tempCanvasCache; - - if (!tempCanvas) { - tempCanvas = document.createElement("canvas"); - tempCanvasCache = tempCanvas; - } - - tempCanvas.width = width; - tempCanvas.height = height; - tempCanvas.mozOpaque = true; - var ctx = tempCanvas.getContext("2d", { - alpha: false - }); - ctx.save(); - ctx.fillStyle = "rgb(255, 255, 255)"; - ctx.fillRect(0, 0, width, height); - ctx.restore(); - return tempCanvas; - }, - destroyCanvas: function destroyCanvas() { - var tempCanvas = tempCanvasCache; - - if (tempCanvas) { - tempCanvas.width = 0; - tempCanvas.height = 0; - } - - tempCanvasCache = null; - } - }; - }(); - - exports.TempImageFactory = TempImageFactory; - - var PDFThumbnailView = /*#__PURE__*/function () { - function PDFThumbnailView(_ref) { - var container = _ref.container, - id = _ref.id, - defaultViewport = _ref.defaultViewport, - optionalContentConfigPromise = _ref.optionalContentConfigPromise, - linkService = _ref.linkService, - renderingQueue = _ref.renderingQueue, - checkSetImageDisabled = _ref.checkSetImageDisabled, - _ref$disableCanvasToI = _ref.disableCanvasToImageConversion, - disableCanvasToImageConversion = _ref$disableCanvasToI === void 0 ? false : _ref$disableCanvasToI, - l10n = _ref.l10n; - - _classCallCheck(this, PDFThumbnailView); - - this.id = id; - this.renderingId = "thumbnail" + id; - this.pageLabel = null; - this.pdfPage = null; - this.rotation = 0; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this._optionalContentConfigPromise = optionalContentConfigPromise || null; - this.linkService = linkService; - this.renderingQueue = renderingQueue; - this.renderTask = null; - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - - this._checkSetImageDisabled = checkSetImageDisabled || function () { - return false; - }; - - this.disableCanvasToImageConversion = disableCanvasToImageConversion; - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - this.canvasWidth = THUMBNAIL_WIDTH; - this.canvasHeight = this.canvasWidth / this.pageRatio | 0; - this.scale = this.canvasWidth / this.pageWidth; - this.l10n = l10n; - var anchor = document.createElement("a"); - anchor.href = linkService.getAnchorUrl("#page=" + id); - - this._thumbPageTitle.then(function (msg) { - anchor.title = msg; - }); - - anchor.onclick = function () { - linkService.goToPage(id); - return false; - }; - - this.anchor = anchor; - var div = document.createElement("div"); - div.className = "thumbnail"; - div.setAttribute("data-page-number", this.id); - this.div = div; - var ring = document.createElement("div"); - ring.className = "thumbnailSelectionRing"; - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + "px"; - ring.style.height = this.canvasHeight + borderAdjustment + "px"; - this.ring = ring; - div.appendChild(ring); - anchor.appendChild(div); - container.appendChild(anchor); - } - - _createClass(PDFThumbnailView, [{ - key: "setPdfPage", - value: function setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport({ - scale: 1, - rotation: totalRotation - }); - this.reset(); - } - }, { - key: "reset", - value: function reset() { - this.cancelRendering(); - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - this.canvasHeight = this.canvasWidth / this.pageRatio | 0; - this.scale = this.canvasWidth / this.pageWidth; - this.div.removeAttribute("data-loaded"); - var ring = this.ring; - var childNodes = ring.childNodes; - - for (var i = childNodes.length - 1; i >= 0; i--) { - ring.removeChild(childNodes[i]); - } - - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + "px"; - ring.style.height = this.canvasHeight + borderAdjustment + "px"; - - if (this.canvas) { - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - - if (this.image) { - this.image.removeAttribute("src"); - delete this.image; - } - } - }, { - key: "update", - value: function update(rotation) { - if (typeof rotation !== "undefined") { - this.rotation = rotation; - } - - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: 1, - rotation: totalRotation - }); - this.reset(); - } - }, { - key: "cancelRendering", - value: function cancelRendering() { - if (this.renderTask) { - this.renderTask.cancel(); - this.renderTask = null; - } - - this.resume = null; - } - }, { - key: "_getPageDrawContext", - value: function _getPageDrawContext() { - var canvas = document.createElement("canvas"); - this.canvas = canvas; - canvas.mozOpaque = true; - var ctx = canvas.getContext("2d", { - alpha: false - }); - var outputScale = (0, _ui_utils.getOutputScale)(ctx); - canvas.width = this.canvasWidth * outputScale.sx | 0; - canvas.height = this.canvasHeight * outputScale.sy | 0; - canvas.style.width = this.canvasWidth + "px"; - canvas.style.height = this.canvasHeight + "px"; - var transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; - return [ctx, transform]; - } - }, { - key: "_convertCanvasToImage", - value: function _convertCanvasToImage() { - var _this = this; - - if (!this.canvas) { - return; - } - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - return; - } - - var className = "thumbnailImage"; - - if (this.disableCanvasToImageConversion) { - this.canvas.className = className; - - this._thumbPageCanvas.then(function (msg) { - _this.canvas.setAttribute("aria-label", msg); - }); - - this.div.setAttribute("data-loaded", true); - this.ring.appendChild(this.canvas); - return; - } - - var image = document.createElement("img"); - image.className = className; - - this._thumbPageCanvas.then(function (msg) { - image.setAttribute("aria-label", msg); - }); - - image.style.width = this.canvasWidth + "px"; - image.style.height = this.canvasHeight + "px"; - image.src = this.canvas.toDataURL(); - this.image = image; - this.div.setAttribute("data-loaded", true); - this.ring.appendChild(image); - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - }, { - key: "draw", - value: function draw() { - var _this2 = this; - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - console.error("Must be in new state before drawing"); - return Promise.resolve(undefined); - } - - var pdfPage = this.pdfPage; - - if (!pdfPage) { - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - return Promise.reject(new Error("pdfPage is not loaded")); - } - - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - - var finishRenderTask = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var error, - _args = arguments; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - error = _args.length > 0 && _args[0] !== undefined ? _args[0] : null; - - if (renderTask === _this2.renderTask) { - _this2.renderTask = null; - } - - if (!(error instanceof _pdfjsLib.RenderingCancelledException)) { - _context.next = 4; - break; - } - - return _context.abrupt("return"); - - case 4: - _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - - _this2._convertCanvasToImage(); - - if (!error) { - _context.next = 8; - break; - } - - throw error; - - case 8: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - return function finishRenderTask() { - return _ref2.apply(this, arguments); - }; - }(); - - var _this$_getPageDrawCon = this._getPageDrawContext(), - _this$_getPageDrawCon2 = _slicedToArray(_this$_getPageDrawCon, 2), - ctx = _this$_getPageDrawCon2[0], - transform = _this$_getPageDrawCon2[1]; - - var drawViewport = this.viewport.clone({ - scale: this.scale - }); - - var renderContinueCallback = function renderContinueCallback(cont) { - if (!_this2.renderingQueue.isHighestPriority(_this2)) { - _this2.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; - - _this2.resume = function () { - _this2.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - cont(); - }; - - return; - } - - cont(); - }; - - var renderContext = { - canvasContext: ctx, - transform: transform, - viewport: drawViewport, - optionalContentConfigPromise: this._optionalContentConfigPromise - }; - var renderTask = this.renderTask = pdfPage.render(renderContext); - renderTask.onContinue = renderContinueCallback; - var resultPromise = renderTask.promise.then(function () { - finishRenderTask(null); - }, function (error) { - finishRenderTask(error); - }); - resultPromise["finally"](function () { - var _this2$pdfPage; - - var pageCached = _this2.linkService.isPageCached(_this2.id); - - if (pageCached) { - return; - } - - (_this2$pdfPage = _this2.pdfPage) === null || _this2$pdfPage === void 0 ? void 0 : _this2$pdfPage.cleanup(); - }); - return resultPromise; - } - }, { - key: "setImage", - value: function setImage(pageView) { - if (this._checkSetImageDisabled()) { - return; - } - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - return; - } - - var img = pageView.canvas; - - if (!img) { - return; - } - - if (!this.pdfPage) { - this.setPdfPage(pageView.pdfPage); - } - - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - - var _this$_getPageDrawCon3 = this._getPageDrawContext(), - _this$_getPageDrawCon4 = _slicedToArray(_this$_getPageDrawCon3, 1), - ctx = _this$_getPageDrawCon4[0]; - - var canvas = ctx.canvas; - - if (img.width <= 2 * canvas.width) { - ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); - - this._convertCanvasToImage(); - - return; - } - - var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; - var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; - var reducedImage = TempImageFactory.getCanvas(reducedWidth, reducedHeight); - var reducedImageCtx = reducedImage.getContext("2d"); - - while (reducedWidth > img.width || reducedHeight > img.height) { - reducedWidth >>= 1; - reducedHeight >>= 1; - } - - reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); - - while (reducedWidth > 2 * canvas.width) { - reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); - reducedWidth >>= 1; - reducedHeight >>= 1; - } - - ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); - - this._convertCanvasToImage(); - } - }, { - key: "_thumbPageTitle", - get: function get() { - var _this$pageLabel; - - return this.l10n.get("thumb_page_title", { - page: (_this$pageLabel = this.pageLabel) !== null && _this$pageLabel !== void 0 ? _this$pageLabel : this.id - }); - } - }, { - key: "_thumbPageCanvas", - get: function get() { - var _this$pageLabel2; - - return this.l10n.get("thumb_page_canvas", { - page: (_this$pageLabel2 = this.pageLabel) !== null && _this$pageLabel2 !== void 0 ? _this$pageLabel2 : this.id - }); - } - }, { - key: "setPageLabel", - value: function setPageLabel(label) { - var _this3 = this; - - this.pageLabel = typeof label === "string" ? label : null; - - this._thumbPageTitle.then(function (msg) { - _this3.anchor.title = msg; - }); - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - return; - } - - this._thumbPageCanvas.then(function (msg) { - if (_this3.image) { - _this3.image.setAttribute("aria-label", msg); - } else if (_this3.disableCanvasToImageConversion && _this3.canvas) { - _this3.canvas.setAttribute("aria-label", msg); - } - }); - } - }]); - - return PDFThumbnailView; - }(); - - exports.PDFThumbnailView = PDFThumbnailView; - - /***/ - }), - /* 29 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFViewer = void 0; - - var _ui_utils = __webpack_require__(6); - - var _base_viewer = __webpack_require__(30); - - var _pdfjsLib = __webpack_require__(7); - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _get(target, property, receiver) { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(receiver); - } - return desc.value; - }; - } - return _get(target, property, receiver || target); - } - - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - var PDFViewer = /*#__PURE__*/function (_BaseViewer) { - _inherits(PDFViewer, _BaseViewer); - - var _super = _createSuper(PDFViewer); - - function PDFViewer() { - _classCallCheck(this, PDFViewer); - - return _super.apply(this, arguments); - } - - _createClass(PDFViewer, [{ - key: "_viewerElement", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "_viewerElement", this.viewer); - } - }, { - key: "_scrollIntoView", - value: function _scrollIntoView(_ref) { - var pageDiv = _ref.pageDiv, - _ref$pageSpot = _ref.pageSpot, - pageSpot = _ref$pageSpot === void 0 ? null : _ref$pageSpot, - _ref$pageNumber = _ref.pageNumber, - pageNumber = _ref$pageNumber === void 0 ? null : _ref$pageNumber; - - if (!pageSpot && !this.isInPresentationMode) { - var left = pageDiv.offsetLeft + pageDiv.clientLeft; - var right = left + pageDiv.clientWidth; - var _this$container = this.container, - scrollLeft = _this$container.scrollLeft, - clientWidth = _this$container.clientWidth; - - if (this._isScrollModeHorizontal || left < scrollLeft || right > scrollLeft + clientWidth) { - pageSpot = { - left: 0, - top: 0 - }; - } - } - - _get(_getPrototypeOf(PDFViewer.prototype), "_scrollIntoView", this).call(this, { - pageDiv: pageDiv, - pageSpot: pageSpot, - pageNumber: pageNumber - }); - } - }, { - key: "_getVisiblePages", - value: function _getVisiblePages() { - if (this.isInPresentationMode) { - return this._getCurrentVisiblePage(); - } - - return _get(_getPrototypeOf(PDFViewer.prototype), "_getVisiblePages", this).call(this); - } - }, { - key: "_updateHelper", - value: function _updateHelper(visiblePages) { - if (this.isInPresentationMode) { - return; - } - - var currentId = this._currentPageNumber; - var stillFullyVisible = false; - - var _iterator = _createForOfIteratorHelper(visiblePages), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var page = _step.value; - - if (page.percent < 100) { - break; - } - - if (page.id === currentId && this._scrollMode === _ui_utils.ScrollMode.VERTICAL && this._spreadMode === _ui_utils.SpreadMode.NONE) { - stillFullyVisible = true; - break; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - if (!stillFullyVisible) { - currentId = visiblePages[0].id; - } - - this._setCurrentPageNumber(currentId); - } - }]); - - return PDFViewer; - }(_base_viewer.BaseViewer); - - exports.PDFViewer = PDFViewer; - - /***/ - }), - /* 30 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.BaseViewer = void 0; - - var _pdfjsLib = __webpack_require__(7); - - var _ui_utils = __webpack_require__(6); - - var _pdf_rendering_queue = __webpack_require__(10); - - var _annotation_layer_builder = __webpack_require__(31); - - var _l10n_utils = __webpack_require__(32); - - var _pdf_page_view = __webpack_require__(33); - - var _pdf_link_service = __webpack_require__(21); - - var _text_layer_builder = __webpack_require__(34); - - var _xfa_layer_builder = __webpack_require__(35); - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var DEFAULT_CACHE_SIZE = 10; - - function PDFPageViewBuffer(size) { - var data = []; - - this.push = function (view) { - var i = data.indexOf(view); - - if (i >= 0) { - data.splice(i, 1); - } - - data.push(view); - - if (data.length > size) { - data.shift().destroy(); - } - }; - - this.resize = function (newSize, pagesToKeep) { - size = newSize; - - if (pagesToKeep) { - var pageIdsToKeep = new Set(); - - for (var i = 0, iMax = pagesToKeep.length; i < iMax; ++i) { - pageIdsToKeep.add(pagesToKeep[i].id); - } - - (0, _ui_utils.moveToEndOfArray)(data, function (page) { - return pageIdsToKeep.has(page.id); - }); - } - - while (data.length > size) { - data.shift().destroy(); - } - }; - - this.has = function (view) { - return data.includes(view); - }; - } - - function isSameScale(oldScale, newScale) { - if (newScale === oldScale) { - return true; - } - - if (Math.abs(newScale - oldScale) < 1e-15) { - return true; - } - - return false; - } - - var BaseViewer = /*#__PURE__*/function () { - function BaseViewer(options) { - var _this$container, - _this$viewer, - _this = this; - - _classCallCheck(this, BaseViewer); - - if (this.constructor === BaseViewer) { - throw new Error("Cannot initialize BaseViewer."); - } - - var viewerVersion = '2.8.335'; - - if (_pdfjsLib.version !== viewerVersion) { - throw new Error("The API version \"".concat(_pdfjsLib.version, "\" does not match the Viewer version \"").concat(viewerVersion, "\".")); - } - - this._name = this.constructor.name; - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - - if (!(((_this$container = this.container) === null || _this$container === void 0 ? void 0 : _this$container.tagName.toUpperCase()) === "DIV" && ((_this$viewer = this.viewer) === null || _this$viewer === void 0 ? void 0 : _this$viewer.tagName.toUpperCase()) === "DIV")) { - throw new Error("Invalid `container` and/or `viewer` option."); - } - - if (this.container.offsetParent && getComputedStyle(this.container).position !== "absolute") { - throw new Error("The `container` must be absolutely positioned."); - } - - this.eventBus = options.eventBus; - this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); - this.downloadManager = options.downloadManager || null; - this.findController = options.findController || null; - this._scriptingManager = options.scriptingManager || null; - this.removePageBorders = options.removePageBorders || false; - this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE; - this.imageResourcesPath = options.imageResourcesPath || ""; - this.renderInteractiveForms = options.renderInteractiveForms !== false; - this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; - this.enableWebGL = options.enableWebGL || false; - this.useOnlyCssZoom = options.useOnlyCssZoom || false; - this.maxCanvasPixels = options.maxCanvasPixels; - this.l10n = options.l10n || _l10n_utils.NullL10n; - this.enableScripting = options.enableScripting === true && !!this._scriptingManager; - this.defaultRenderingQueue = !options.renderingQueue; - - if (this.defaultRenderingQueue) { - this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); - this.renderingQueue.setViewer(this); - } else { - this.renderingQueue = options.renderingQueue; - } - - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); - this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN; - this._onBeforeDraw = this._onAfterDraw = null; - - this._resetView(); - - if (this.removePageBorders) { - this.viewer.classList.add("removePageBorders"); - } - - Promise.resolve().then(function () { - _this.eventBus.dispatch("baseviewerinit", { - source: _this - }); - }); - } - - _createClass(BaseViewer, [{ - key: "pagesCount", - get: function get() { - return this._pages.length; - } - }, { - key: "getPageView", - value: function getPageView(index) { - return this._pages[index]; - } - }, { - key: "pageViewsReady", - get: function get() { - if (!this._pagesCapability.settled) { - return false; - } - - return this._pages.every(function (pageView) { - return pageView === null || pageView === void 0 ? void 0 : pageView.pdfPage; - }); - } - }, { - key: "currentPageNumber", - get: function get() { - return this._currentPageNumber; - }, - set: function set(val) { - if (!Number.isInteger(val)) { - throw new Error("Invalid page number."); - } - - if (!this.pdfDocument) { - return; - } - - if (!this._setCurrentPageNumber(val, true)) { - console.error("".concat(this._name, ".currentPageNumber: \"").concat(val, "\" is not a valid page.")); - } - } - }, { - key: "_setCurrentPageNumber", - value: function _setCurrentPageNumber(val) { - var _this$_pageLabels, _this$_pageLabels2; - - var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (this._currentPageNumber === val) { - if (resetCurrentPageView) { - this._resetCurrentPageView(); - } - - return true; - } - - if (!(0 < val && val <= this.pagesCount)) { - return false; - } - - var previous = this._currentPageNumber; - this._currentPageNumber = val; - this.eventBus.dispatch("pagechanging", { - source: this, - pageNumber: val, - pageLabel: (_this$_pageLabels = (_this$_pageLabels2 = this._pageLabels) === null || _this$_pageLabels2 === void 0 ? void 0 : _this$_pageLabels2[val - 1]) !== null && _this$_pageLabels !== void 0 ? _this$_pageLabels : null, - previous: previous - }); - - if (resetCurrentPageView) { - this._resetCurrentPageView(); - } - - return true; - } - }, { - key: "currentPageLabel", - get: function get() { - var _this$_pageLabels3, _this$_pageLabels4; - - return (_this$_pageLabels3 = (_this$_pageLabels4 = this._pageLabels) === null || _this$_pageLabels4 === void 0 ? void 0 : _this$_pageLabels4[this._currentPageNumber - 1]) !== null && _this$_pageLabels3 !== void 0 ? _this$_pageLabels3 : null; - }, - set: function set(val) { - if (!this.pdfDocument) { - return; - } - - var page = val | 0; - - if (this._pageLabels) { - var i = this._pageLabels.indexOf(val); - - if (i >= 0) { - page = i + 1; - } - } - - if (!this._setCurrentPageNumber(page, true)) { - console.error("".concat(this._name, ".currentPageLabel: \"").concat(val, "\" is not a valid page.")); - } - } - }, { - key: "currentScale", - get: function get() { - return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; - }, - set: function set(val) { - if (isNaN(val)) { - throw new Error("Invalid numeric scale."); - } - - if (!this.pdfDocument) { - return; - } - - this._setScale(val, false); - } - }, { - key: "currentScaleValue", - get: function get() { - return this._currentScaleValue; - }, - set: function set(val) { - if (!this.pdfDocument) { - return; - } - - this._setScale(val, false); - } - }, { - key: "pagesRotation", - get: function get() { - return this._pagesRotation; - }, - set: function set(rotation) { - if (!(0, _ui_utils.isValidRotation)(rotation)) { - throw new Error("Invalid pages rotation angle."); - } - - if (!this.pdfDocument) { - return; - } - - rotation %= 360; - - if (rotation < 0) { - rotation += 360; - } - - if (this._pagesRotation === rotation) { - return; - } - - this._pagesRotation = rotation; - var pageNumber = this._currentPageNumber; - - for (var i = 0, ii = this._pages.length; i < ii; i++) { - var pageView = this._pages[i]; - pageView.update(pageView.scale, rotation); - } - - if (this._currentScaleValue) { - this._setScale(this._currentScaleValue, true); - } - - this.eventBus.dispatch("rotationchanging", { - source: this, - pagesRotation: rotation, - pageNumber: pageNumber - }); - - if (this.defaultRenderingQueue) { - this.update(); - } - } - }, { - key: "firstPagePromise", - get: function get() { - return this.pdfDocument ? this._firstPageCapability.promise : null; - } - }, { - key: "onePageRendered", - get: function get() { - return this.pdfDocument ? this._onePageRenderedCapability.promise : null; - } - }, { - key: "pagesPromise", - get: function get() { - return this.pdfDocument ? this._pagesCapability.promise : null; - } - }, { - key: "_viewerElement", - get: function get() { - throw new Error("Not implemented: _viewerElement"); - } - }, { - key: "_onePageRenderedOrForceFetch", - value: function _onePageRenderedOrForceFetch() { - if (!this.container.offsetParent || this._getVisiblePages().views.length === 0) { - return Promise.resolve(); - } - - return this._onePageRenderedCapability.promise; - } - }, { - key: "setDocument", - value: function setDocument(pdfDocument) { - var _this2 = this; - - if (this.pdfDocument) { - this.eventBus.dispatch("pagesdestroy", { - source: this - }); - - this._cancelRendering(); - - this._resetView(); - - if (this.findController) { - this.findController.setDocument(null); - } - - if (this._scriptingManager) { - this._scriptingManager.setDocument(null); - } - } - - this.pdfDocument = pdfDocument; - - if (!pdfDocument) { - return; - } - - var isPureXfa = pdfDocument.isPureXfa; - var pagesCount = pdfDocument.numPages; - var firstPagePromise = pdfDocument.getPage(1); - var optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); - - this._pagesCapability.promise.then(function () { - _this2.eventBus.dispatch("pagesloaded", { - source: _this2, - pagesCount: pagesCount - }); - }); - - this._onBeforeDraw = function (evt) { - var pageView = _this2._pages[evt.pageNumber - 1]; - - if (!pageView) { - return; - } - - _this2._buffer.push(pageView); - }; - - this.eventBus._on("pagerender", this._onBeforeDraw); - - this._onAfterDraw = function (evt) { - if (evt.cssTransform || _this2._onePageRenderedCapability.settled) { - return; - } - - _this2._onePageRenderedCapability.resolve(); - - _this2.eventBus._off("pagerendered", _this2._onAfterDraw); - - _this2._onAfterDraw = null; - }; - - this.eventBus._on("pagerendered", this._onAfterDraw); - - firstPagePromise.then(function (firstPdfPage) { - _this2._firstPageCapability.resolve(firstPdfPage); - - _this2._optionalContentConfigPromise = optionalContentConfigPromise; - var scale = _this2.currentScale; - var viewport = firstPdfPage.getViewport({ - scale: scale * _ui_utils.CSS_UNITS - }); - var textLayerFactory = _this2.textLayerMode !== _ui_utils.TextLayerMode.DISABLE ? _this2 : null; - var xfaLayerFactory = isPureXfa ? _this2 : null; - - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var pageView = new _pdf_page_view.PDFPageView({ - container: _this2._viewerElement, - eventBus: _this2.eventBus, - id: pageNum, - scale: scale, - defaultViewport: viewport.clone(), - optionalContentConfigPromise: optionalContentConfigPromise, - renderingQueue: _this2.renderingQueue, - textLayerFactory: textLayerFactory, - textLayerMode: _this2.textLayerMode, - annotationLayerFactory: _this2, - xfaLayerFactory: xfaLayerFactory, - imageResourcesPath: _this2.imageResourcesPath, - renderInteractiveForms: _this2.renderInteractiveForms, - renderer: _this2.renderer, - enableWebGL: _this2.enableWebGL, - useOnlyCssZoom: _this2.useOnlyCssZoom, - maxCanvasPixels: _this2.maxCanvasPixels, - l10n: _this2.l10n, - enableScripting: _this2.enableScripting - }); - - _this2._pages.push(pageView); - } - - var firstPageView = _this2._pages[0]; - - if (firstPageView) { - firstPageView.setPdfPage(firstPdfPage); - - _this2.linkService.cachePageRef(1, firstPdfPage.ref); - } - - if (_this2._spreadMode !== _ui_utils.SpreadMode.NONE) { - _this2._updateSpreadMode(); - } - - _this2._onePageRenderedOrForceFetch().then(function () { - if (_this2.findController) { - _this2.findController.setDocument(pdfDocument); - } - - if (_this2.enableScripting) { - _this2._scriptingManager.setDocument(pdfDocument); - } - - if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > 7500) { - _this2._pagesCapability.resolve(); - - return; - } - - var getPagesLeft = pagesCount - 1; - - if (getPagesLeft <= 0) { - _this2._pagesCapability.resolve(); - - return; - } - - var _loop = function _loop(_pageNum) { - pdfDocument.getPage(_pageNum).then(function (pdfPage) { - var pageView = _this2._pages[_pageNum - 1]; - - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - - _this2.linkService.cachePageRef(_pageNum, pdfPage.ref); - - if (--getPagesLeft === 0) { - _this2._pagesCapability.resolve(); - } - }, function (reason) { - console.error("Unable to get page ".concat(_pageNum, " to initialize viewer"), reason); - - if (--getPagesLeft === 0) { - _this2._pagesCapability.resolve(); - } - }); - }; - - for (var _pageNum = 2; _pageNum <= pagesCount; ++_pageNum) { - _loop(_pageNum); - } - }); - - _this2.eventBus.dispatch("pagesinit", { - source: _this2 - }); - - if (_this2.defaultRenderingQueue) { - _this2.update(); - } - })["catch"](function (reason) { - console.error("Unable to initialize viewer", reason); - }); - } - }, { - key: "setPageLabels", - value: function setPageLabels(labels) { - if (!this.pdfDocument) { - return; - } - - if (!labels) { - this._pageLabels = null; - } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { - this._pageLabels = null; - console.error("".concat(this._name, ".setPageLabels: Invalid page labels.")); - } else { - this._pageLabels = labels; - } - - for (var i = 0, ii = this._pages.length; i < ii; i++) { - var _this$_pageLabels$i, _this$_pageLabels5; - - this._pages[i].setPageLabel((_this$_pageLabels$i = (_this$_pageLabels5 = this._pageLabels) === null || _this$_pageLabels5 === void 0 ? void 0 : _this$_pageLabels5[i]) !== null && _this$_pageLabels$i !== void 0 ? _this$_pageLabels$i : null); - } - } - }, { - key: "_resetView", - value: function _resetView() { - this._pages = []; - this._currentPageNumber = 1; - this._currentScale = _ui_utils.UNKNOWN_SCALE; - this._currentScaleValue = null; - this._pageLabels = null; - this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); - this._location = null; - this._pagesRotation = 0; - this._optionalContentConfigPromise = null; - this._pagesRequests = new WeakMap(); - this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._pagesCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._scrollMode = _ui_utils.ScrollMode.VERTICAL; - this._spreadMode = _ui_utils.SpreadMode.NONE; - - if (this._onBeforeDraw) { - this.eventBus._off("pagerender", this._onBeforeDraw); - - this._onBeforeDraw = null; - } - - if (this._onAfterDraw) { - this.eventBus._off("pagerendered", this._onAfterDraw); - - this._onAfterDraw = null; - } - - this.viewer.textContent = ""; - - this._updateScrollMode(); - } - }, { - key: "_scrollUpdate", - value: function _scrollUpdate() { - if (this.pagesCount === 0) { - return; - } - - this.update(); - } - }, { - key: "_scrollIntoView", - value: function _scrollIntoView(_ref) { - var pageDiv = _ref.pageDiv, - _ref$pageSpot = _ref.pageSpot, - pageSpot = _ref$pageSpot === void 0 ? null : _ref$pageSpot, - _ref$pageNumber = _ref.pageNumber, - pageNumber = _ref$pageNumber === void 0 ? null : _ref$pageNumber; - (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot); - } - }, { - key: "_setScaleUpdatePages", - value: function _setScaleUpdatePages(newScale, newValue) { - var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - this._currentScaleValue = newValue.toString(); - - if (isSameScale(this._currentScale, newScale)) { - if (preset) { - this.eventBus.dispatch("scalechanging", { - source: this, - scale: newScale, - presetValue: newValue - }); - } - - return; - } - - for (var i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].update(newScale); - } - - this._currentScale = newScale; - - if (!noScroll) { - var page = this._currentPageNumber, - dest; - - if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) { - page = this._location.pageNumber; - dest = [null, { - name: "XYZ" - }, this._location.left, this._location.top, null]; - } - - this.scrollPageIntoView({ - pageNumber: page, - destArray: dest, - allowNegativeOffset: true - }); - } - - this.eventBus.dispatch("scalechanging", { - source: this, - scale: newScale, - presetValue: preset ? newValue : undefined - }); - - if (this.defaultRenderingQueue) { - this.update(); - } - } - }, { - key: "_pageWidthScaleFactor", - get: function get() { - if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL && !this.isInPresentationMode) { - return 2; - } - - return 1; - } - }, { - key: "_setScale", - value: function _setScale(value) { - var noScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var scale = parseFloat(value); - - if (scale > 0) { - this._setScaleUpdatePages(scale, value, noScroll, false); - } else { - var currentPage = this._pages[this._currentPageNumber - 1]; - - if (!currentPage) { - return; - } - - var noPadding = this.isInPresentationMode || this.removePageBorders; - var hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING; - var vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING; - - if (!noPadding && this._isScrollModeHorizontal) { - var _ref2 = [vPadding, hPadding]; - hPadding = _ref2[0]; - vPadding = _ref2[1]; - } - - var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this._pageWidthScaleFactor; - var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; - - switch (value) { - case "page-actual": - scale = 1; - break; - - case "page-width": - scale = pageWidthScale; - break; - - case "page-height": - scale = pageHeightScale; - break; - - case "page-fit": - scale = Math.min(pageWidthScale, pageHeightScale); - break; - - case "auto": - var horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale); - scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); - break; - - default: - console.error("".concat(this._name, "._setScale: \"").concat(value, "\" is an unknown zoom value.")); - return; - } - - this._setScaleUpdatePages(scale, value, noScroll, true); - } - } - }, { - key: "_resetCurrentPageView", - value: function _resetCurrentPageView() { - if (this.isInPresentationMode) { - this._setScale(this._currentScaleValue, true); - } - - var pageView = this._pages[this._currentPageNumber - 1]; - - this._scrollIntoView({ - pageDiv: pageView.div - }); - } - }, { - key: "pageLabelToPageNumber", - value: function pageLabelToPageNumber(label) { - if (!this._pageLabels) { - return null; - } - - var i = this._pageLabels.indexOf(label); - - if (i < 0) { - return null; - } - - return i + 1; - } - }, { - key: "scrollPageIntoView", - value: function scrollPageIntoView(_ref3) { - var pageNumber = _ref3.pageNumber, - _ref3$destArray = _ref3.destArray, - destArray = _ref3$destArray === void 0 ? null : _ref3$destArray, - _ref3$allowNegativeOf = _ref3.allowNegativeOffset, - allowNegativeOffset = _ref3$allowNegativeOf === void 0 ? false : _ref3$allowNegativeOf, - _ref3$ignoreDestinati = _ref3.ignoreDestinationZoom, - ignoreDestinationZoom = _ref3$ignoreDestinati === void 0 ? false : _ref3$ignoreDestinati; - - if (!this.pdfDocument) { - return; - } - - var pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1]; - - if (!pageView) { - console.error("".concat(this._name, ".scrollPageIntoView: ") + "\"".concat(pageNumber, "\" is not a valid pageNumber parameter.")); - return; - } - - if (this.isInPresentationMode || !destArray) { - this._setCurrentPageNumber(pageNumber, true); - - return; - } - - var x = 0, - y = 0; - var width = 0, - height = 0, - widthScale, - heightScale; - var changeOrientation = pageView.rotation % 180 !== 0; - var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS; - var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS; - var scale = 0; - - switch (destArray[1].name) { - case "XYZ": - x = destArray[2]; - y = destArray[3]; - scale = destArray[4]; - x = x !== null ? x : 0; - y = y !== null ? y : pageHeight; - break; - - case "Fit": - case "FitB": - scale = "page-fit"; - break; - - case "FitH": - case "FitBH": - y = destArray[2]; - scale = "page-width"; - - if (y === null && this._location) { - x = this._location.left; - y = this._location.top; - } else if (typeof y !== "number") { - y = pageHeight; - } - - break; - - case "FitV": - case "FitBV": - x = destArray[2]; - width = pageWidth; - height = pageHeight; - scale = "page-height"; - break; - - case "FitR": - x = destArray[2]; - y = destArray[3]; - width = destArray[4] - x; - height = destArray[5] - y; - var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; - var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; - widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS; - heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS; - scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); - break; - - default: - console.error("".concat(this._name, ".scrollPageIntoView: ") + "\"".concat(destArray[1].name, "\" is not a valid destination type.")); - return; - } - - if (!ignoreDestinationZoom) { - if (scale && scale !== this._currentScale) { - this.currentScaleValue = scale; - } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { - this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - } - - if (scale === "page-fit" && !destArray[4]) { - this._scrollIntoView({ - pageDiv: pageView.div, - pageNumber: pageNumber - }); - - return; - } - - var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; - var left = Math.min(boundingRect[0][0], boundingRect[1][0]); - var top = Math.min(boundingRect[0][1], boundingRect[1][1]); - - if (!allowNegativeOffset) { - left = Math.max(left, 0); - top = Math.max(top, 0); - } - - this._scrollIntoView({ - pageDiv: pageView.div, - pageSpot: { - left: left, - top: top - }, - pageNumber: pageNumber - }); - } - }, { - key: "_updateLocation", - value: function _updateLocation(firstPage) { - var currentScale = this._currentScale; - var currentScaleValue = this._currentScaleValue; - var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; - var pageNumber = firstPage.id; - var pdfOpenParams = "#page=" + pageNumber; - pdfOpenParams += "&zoom=" + normalizedScaleValue; - var currentPageView = this._pages[pageNumber - 1]; - var container = this.container; - var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); - var intLeft = Math.round(topLeft[0]); - var intTop = Math.round(topLeft[1]); - pdfOpenParams += "," + intLeft + "," + intTop; - this._location = { - pageNumber: pageNumber, - scale: normalizedScaleValue, - top: intTop, - left: intLeft, - rotation: this._pagesRotation, - pdfOpenParams: pdfOpenParams - }; - } - }, { - key: "_updateHelper", - value: function _updateHelper(visiblePages) { - throw new Error("Not implemented: _updateHelper"); - } - }, { - key: "update", - value: function update() { - var visible = this._getVisiblePages(); - - var visiblePages = visible.views, - numVisiblePages = visiblePages.length; - - if (numVisiblePages === 0) { - return; - } - - var newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1); - - this._buffer.resize(newCacheSize, visiblePages); - - this.renderingQueue.renderHighestPriority(visible); - - this._updateHelper(visiblePages); - - this._updateLocation(visible.first); - - this.eventBus.dispatch("updateviewarea", { - source: this, - location: this._location - }); - } - }, { - key: "containsElement", - value: function containsElement(element) { - return this.container.contains(element); - } - }, { - key: "focus", - value: function focus() { - this.container.focus(); - } - }, { - key: "_isScrollModeHorizontal", - get: function get() { - return this.isInPresentationMode ? false : this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL; - } - }, { - key: "_isContainerRtl", - get: function get() { - return getComputedStyle(this.container).direction === "rtl"; - } - }, { - key: "isInPresentationMode", - get: function get() { - return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN; - } - }, { - key: "isChangingPresentationMode", - get: function get() { - return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING; - } - }, { - key: "isHorizontalScrollbarEnabled", - get: function get() { - return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; - } - }, { - key: "isVerticalScrollbarEnabled", - get: function get() { - return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight; - } - }, { - key: "_getCurrentVisiblePage", - value: function _getCurrentVisiblePage() { - if (!this.pagesCount) { - return { - views: [] - }; - } - - var pageView = this._pages[this._currentPageNumber - 1]; - var element = pageView.div; - var view = { - id: pageView.id, - x: element.offsetLeft + element.clientLeft, - y: element.offsetTop + element.clientTop, - view: pageView - }; - return { - first: view, - last: view, - views: [view] - }; - } - }, { - key: "_getVisiblePages", - value: function _getVisiblePages() { - return (0, _ui_utils.getVisibleElements)({ - scrollEl: this.container, - views: this._pages, - sortByVisibility: true, - horizontal: this._isScrollModeHorizontal, - rtl: this._isScrollModeHorizontal && this._isContainerRtl - }); - } - }, { - key: "isPageVisible", - value: function isPageVisible(pageNumber) { - if (!this.pdfDocument) { - return false; - } - - if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { - console.error("".concat(this._name, ".isPageVisible: \"").concat(pageNumber, "\" is not a valid page.")); - return false; - } - - return this._getVisiblePages().views.some(function (view) { - return view.id === pageNumber; - }); - } - }, { - key: "isPageCached", - value: function isPageCached(pageNumber) { - if (!this.pdfDocument || !this._buffer) { - return false; - } - - if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { - console.error("".concat(this._name, ".isPageCached: \"").concat(pageNumber, "\" is not a valid page.")); - return false; - } - - var pageView = this._pages[pageNumber - 1]; - - if (!pageView) { - return false; - } - - return this._buffer.has(pageView); - } - }, { - key: "cleanup", - value: function cleanup() { - for (var i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - this._pages[i].reset(); - } - } - } - }, { - key: "_cancelRendering", - value: function _cancelRendering() { - for (var i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i]) { - this._pages[i].cancelRendering(); - } - } - } - }, { - key: "_ensurePdfPageLoaded", - value: function _ensurePdfPageLoaded(pageView) { - var _this3 = this; - - if (pageView.pdfPage) { - return Promise.resolve(pageView.pdfPage); - } - - if (this._pagesRequests.has(pageView)) { - return this._pagesRequests.get(pageView); - } - - var promise = this.pdfDocument.getPage(pageView.id).then(function (pdfPage) { - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - - _this3._pagesRequests["delete"](pageView); - - return pdfPage; - })["catch"](function (reason) { - console.error("Unable to get page for page view", reason); - - _this3._pagesRequests["delete"](pageView); - }); - - this._pagesRequests.set(pageView, promise); - - return promise; - } - }, { - key: "forceRendering", - value: function forceRendering(currentlyVisiblePages) { - var _this4 = this; - - var visiblePages = currentlyVisiblePages || this._getVisiblePages(); - - var scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down; - var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead); - - if (pageView) { - this._ensurePdfPageLoaded(pageView).then(function () { - _this4.renderingQueue.renderView(pageView); - }); - - return true; - } - - return false; - } - }, { - key: "createTextLayerBuilder", - value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) { - var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - var eventBus = arguments.length > 4 ? arguments[4] : undefined; - return new _text_layer_builder.TextLayerBuilder({ - textLayerDiv: textLayerDiv, - eventBus: eventBus, - pageIndex: pageIndex, - viewport: viewport, - findController: this.isInPresentationMode ? null : this.findController, - enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection - }); - } - }, { - key: "createAnnotationLayerBuilder", - value: function createAnnotationLayerBuilder(pageDiv, pdfPage) { - var _this$pdfDocument, _this$pdfDocument2, _this$_scriptingManag; - - var annotationStorage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var imageResourcesPath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ""; - var renderInteractiveForms = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - var l10n = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _l10n_utils.NullL10n; - var enableScripting = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; - var hasJSActionsPromise = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null; - var mouseState = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null; - return new _annotation_layer_builder.AnnotationLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - annotationStorage: annotationStorage || ((_this$pdfDocument = this.pdfDocument) === null || _this$pdfDocument === void 0 ? void 0 : _this$pdfDocument.annotationStorage), - imageResourcesPath: imageResourcesPath, - renderInteractiveForms: renderInteractiveForms, - linkService: this.linkService, - downloadManager: this.downloadManager, - l10n: l10n, - enableScripting: enableScripting, - hasJSActionsPromise: hasJSActionsPromise || ((_this$pdfDocument2 = this.pdfDocument) === null || _this$pdfDocument2 === void 0 ? void 0 : _this$pdfDocument2.hasJSActions()), - mouseState: mouseState || ((_this$_scriptingManag = this._scriptingManager) === null || _this$_scriptingManag === void 0 ? void 0 : _this$_scriptingManag.mouseState) - }); - } - }, { - key: "createXfaLayerBuilder", - value: function createXfaLayerBuilder(pageDiv, pdfPage) { - return new _xfa_layer_builder.XfaLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage - }); - } - }, { - key: "hasEqualPageSizes", - get: function get() { - var firstPageView = this._pages[0]; - - for (var i = 1, ii = this._pages.length; i < ii; ++i) { - var pageView = this._pages[i]; - - if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { - return false; - } - } - - return true; - } - }, { - key: "getPagesOverview", - value: function getPagesOverview() { - var _this5 = this; - - return this._pages.map(function (pageView) { - var viewport = pageView.pdfPage.getViewport({ - scale: 1 - }); - - if (!_this5.enablePrintAutoRotate || (0, _ui_utils.isPortraitOrientation)(viewport)) { - return { - width: viewport.width, - height: viewport.height, - rotation: viewport.rotation - }; - } - - return { - width: viewport.height, - height: viewport.width, - rotation: (viewport.rotation - 90) % 360 - }; - }); - } - }, { - key: "optionalContentConfigPromise", - get: function get() { - if (!this.pdfDocument) { - return Promise.resolve(null); - } - - if (!this._optionalContentConfigPromise) { - return this.pdfDocument.getOptionalContentConfig(); - } - - return this._optionalContentConfigPromise; - }, - set: function set(promise) { - if (!(promise instanceof Promise)) { - throw new Error("Invalid optionalContentConfigPromise: ".concat(promise)); - } - - if (!this.pdfDocument) { - return; - } - - if (!this._optionalContentConfigPromise) { - return; - } - - this._optionalContentConfigPromise = promise; - - var _iterator = _createForOfIteratorHelper(this._pages), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var pageView = _step.value; - pageView.update(pageView.scale, pageView.rotation, promise); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - this.update(); - this.eventBus.dispatch("optionalcontentconfigchanged", { - source: this, - promise: promise - }); - } - }, { - key: "scrollMode", - get: function get() { - return this._scrollMode; - }, - set: function set(mode) { - if (this._scrollMode === mode) { - return; - } - - if (!(0, _ui_utils.isValidScrollMode)(mode)) { - throw new Error("Invalid scroll mode: ".concat(mode)); - } - - this._scrollMode = mode; - this.eventBus.dispatch("scrollmodechanged", { - source: this, - mode: mode - }); - - this._updateScrollMode(this._currentPageNumber); - } - }, { - key: "_updateScrollMode", - value: function _updateScrollMode() { - var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var scrollMode = this._scrollMode, - viewer = this.viewer; - viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL); - viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED); - - if (!this.pdfDocument || !pageNumber) { - return; - } - - if (this._currentScaleValue && isNaN(this._currentScaleValue)) { - this._setScale(this._currentScaleValue, true); - } - - this._setCurrentPageNumber(pageNumber, true); - - this.update(); - } - }, { - key: "spreadMode", - get: function get() { - return this._spreadMode; - }, - set: function set(mode) { - if (this._spreadMode === mode) { - return; - } - - if (!(0, _ui_utils.isValidSpreadMode)(mode)) { - throw new Error("Invalid spread mode: ".concat(mode)); - } - - this._spreadMode = mode; - this.eventBus.dispatch("spreadmodechanged", { - source: this, - mode: mode - }); - - this._updateSpreadMode(this._currentPageNumber); - } - }, { - key: "_updateSpreadMode", - value: function _updateSpreadMode() { - var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (!this.pdfDocument) { - return; - } - - var viewer = this.viewer, - pages = this._pages; - viewer.textContent = ""; - - if (this._spreadMode === _ui_utils.SpreadMode.NONE) { - for (var i = 0, iMax = pages.length; i < iMax; ++i) { - viewer.appendChild(pages[i].div); - } - } else { - var parity = this._spreadMode - 1; - var spread = null; - - for (var _i = 0, _iMax = pages.length; _i < _iMax; ++_i) { - if (spread === null) { - spread = document.createElement("div"); - spread.className = "spread"; - viewer.appendChild(spread); - } else if (_i % 2 === parity) { - spread = spread.cloneNode(false); - viewer.appendChild(spread); - } - - spread.appendChild(pages[_i].div); - } - } - - if (!pageNumber) { - return; - } - - if (this._currentScaleValue && isNaN(this._currentScaleValue)) { - this._setScale(this._currentScaleValue, true); - } - - this._setCurrentPageNumber(pageNumber, true); - - this.update(); - } - }, { - key: "_getPageAdvance", - value: function _getPageAdvance(currentPageNumber) { - var previous = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (this.isInPresentationMode) { - return 1; - } - - switch (this._scrollMode) { - case _ui_utils.ScrollMode.WRAPPED: { - var _this$_getVisiblePage = this._getVisiblePages(), - views = _this$_getVisiblePage.views, - pageLayout = new Map(); - - var _iterator2 = _createForOfIteratorHelper(views), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _step2$value = _step2.value, - id = _step2$value.id, - y = _step2$value.y, - percent = _step2$value.percent, - widthPercent = _step2$value.widthPercent; - - if (percent === 0 || widthPercent < 100) { - continue; - } - - var yArray = pageLayout.get(y); - - if (!yArray) { - pageLayout.set(y, yArray || (yArray = [])); - } - - yArray.push(id); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - var _iterator3 = _createForOfIteratorHelper(pageLayout.values()), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var _yArray = _step3.value; - - var currentIndex = _yArray.indexOf(currentPageNumber); - - if (currentIndex === -1) { - continue; - } - - var numPages = _yArray.length; - - if (numPages === 1) { - break; - } - - if (previous) { - for (var i = currentIndex - 1, ii = 0; i >= ii; i--) { - var currentId = _yArray[i], - expectedId = _yArray[i + 1] - 1; - - if (currentId < expectedId) { - return currentPageNumber - expectedId; - } - } - } else { - for (var _i2 = currentIndex + 1, _ii = numPages; _i2 < _ii; _i2++) { - var _currentId = _yArray[_i2], - _expectedId = _yArray[_i2 - 1] + 1; - - if (_currentId > _expectedId) { - return _expectedId - currentPageNumber; - } - } - } - - if (previous) { - var firstId = _yArray[0]; - - if (firstId < currentPageNumber) { - return currentPageNumber - firstId + 1; - } - } else { - var lastId = _yArray[numPages - 1]; - - if (lastId > currentPageNumber) { - return lastId - currentPageNumber + 1; - } - } - - break; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - break; - } - - case _ui_utils.ScrollMode.HORIZONTAL: { - break; - } - - case _ui_utils.ScrollMode.VERTICAL: { - if (this._spreadMode === _ui_utils.SpreadMode.NONE) { - break; - } - - var parity = this._spreadMode - 1; - - if (previous && currentPageNumber % 2 !== parity) { - break; - } else if (!previous && currentPageNumber % 2 === parity) { - break; - } - - var _this$_getVisiblePage2 = this._getVisiblePages(), - _views = _this$_getVisiblePage2.views, - _expectedId2 = previous ? currentPageNumber - 1 : currentPageNumber + 1; - - var _iterator4 = _createForOfIteratorHelper(_views), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var _step4$value = _step4.value, - _id = _step4$value.id, - _percent = _step4$value.percent, - _widthPercent = _step4$value.widthPercent; - - if (_id !== _expectedId2) { - continue; - } - - if (_percent > 0 && _widthPercent === 100) { - return 2; - } - - break; - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - break; - } - } - - return 1; - } - }, { - key: "nextPage", - value: function nextPage() { - var currentPageNumber = this._currentPageNumber, - pagesCount = this.pagesCount; - - if (currentPageNumber >= pagesCount) { - return false; - } - - var advance = this._getPageAdvance(currentPageNumber, false) || 1; - this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount); - return true; - } - }, { - key: "previousPage", - value: function previousPage() { - var currentPageNumber = this._currentPageNumber; - - if (currentPageNumber <= 1) { - return false; - } - - var advance = this._getPageAdvance(currentPageNumber, true) || 1; - this.currentPageNumber = Math.max(currentPageNumber - advance, 1); - return true; - } - }]); - - return BaseViewer; - }(); - - exports.BaseViewer = BaseViewer; - - /***/ - }), - /* 31 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = void 0; - - var _pdfjsLib = __webpack_require__(7); - - var _l10n_utils = __webpack_require__(32); - - var _pdf_link_service = __webpack_require__(21); - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var AnnotationLayerBuilder = /*#__PURE__*/function () { - function AnnotationLayerBuilder(_ref) { - var pageDiv = _ref.pageDiv, - pdfPage = _ref.pdfPage, - linkService = _ref.linkService, - downloadManager = _ref.downloadManager, - _ref$annotationStorag = _ref.annotationStorage, - annotationStorage = _ref$annotationStorag === void 0 ? null : _ref$annotationStorag, - _ref$imageResourcesPa = _ref.imageResourcesPath, - imageResourcesPath = _ref$imageResourcesPa === void 0 ? "" : _ref$imageResourcesPa, - _ref$renderInteractiv = _ref.renderInteractiveForms, - renderInteractiveForms = _ref$renderInteractiv === void 0 ? true : _ref$renderInteractiv, - _ref$l10n = _ref.l10n, - l10n = _ref$l10n === void 0 ? _l10n_utils.NullL10n : _ref$l10n, - _ref$enableScripting = _ref.enableScripting, - enableScripting = _ref$enableScripting === void 0 ? false : _ref$enableScripting, - _ref$hasJSActionsProm = _ref.hasJSActionsPromise, - hasJSActionsPromise = _ref$hasJSActionsProm === void 0 ? null : _ref$hasJSActionsProm, - _ref$mouseState = _ref.mouseState, - mouseState = _ref$mouseState === void 0 ? null : _ref$mouseState; - - _classCallCheck(this, AnnotationLayerBuilder); - - this.pageDiv = pageDiv; - this.pdfPage = pdfPage; - this.linkService = linkService; - this.downloadManager = downloadManager; - this.imageResourcesPath = imageResourcesPath; - this.renderInteractiveForms = renderInteractiveForms; - this.l10n = l10n; - this.annotationStorage = annotationStorage; - this.enableScripting = enableScripting; - this._hasJSActionsPromise = hasJSActionsPromise; - this._mouseState = mouseState; - this.div = null; - this._cancelled = false; - } - - _createClass(AnnotationLayerBuilder, [{ - key: "render", - value: function render(viewport) { - var _this = this; - - var intent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "display"; - return Promise.all([this.pdfPage.getAnnotations({ - intent: intent - }), this._hasJSActionsPromise]).then(function (_ref2) { - var _ref3 = _slicedToArray(_ref2, 2), - annotations = _ref3[0], - _ref3$ = _ref3[1], - hasJSActions = _ref3$ === void 0 ? false : _ref3$; - - if (_this._cancelled) { - return; - } - - if (annotations.length === 0) { - return; - } - - var parameters = { - viewport: viewport.clone({ - dontFlip: true - }), - div: _this.div, - annotations: annotations, - page: _this.pdfPage, - imageResourcesPath: _this.imageResourcesPath, - renderInteractiveForms: _this.renderInteractiveForms, - linkService: _this.linkService, - downloadManager: _this.downloadManager, - annotationStorage: _this.annotationStorage, - enableScripting: _this.enableScripting, - hasJSActions: hasJSActions, - mouseState: _this._mouseState - }; - - if (_this.div) { - _pdfjsLib.AnnotationLayer.update(parameters); - } else { - _this.div = document.createElement("div"); - _this.div.className = "annotationLayer"; - - _this.pageDiv.appendChild(_this.div); - - parameters.div = _this.div; - - _pdfjsLib.AnnotationLayer.render(parameters); - - _this.l10n.translate(_this.div); - } - }); - } - }, { - key: "cancel", - value: function cancel() { - this._cancelled = true; - } - }, { - key: "hide", - value: function hide() { - if (!this.div) { - return; - } - - this.div.hidden = true; - } - }]); - - return AnnotationLayerBuilder; - }(); - - exports.AnnotationLayerBuilder = AnnotationLayerBuilder; - - var DefaultAnnotationLayerFactory = /*#__PURE__*/function () { - function DefaultAnnotationLayerFactory() { - _classCallCheck(this, DefaultAnnotationLayerFactory); - } - - _createClass(DefaultAnnotationLayerFactory, [{ - key: "createAnnotationLayerBuilder", - value: function createAnnotationLayerBuilder(pageDiv, pdfPage) { - var annotationStorage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var imageResourcesPath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ""; - var renderInteractiveForms = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var l10n = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _l10n_utils.NullL10n; - var enableScripting = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; - var hasJSActionsPromise = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null; - var mouseState = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null; - return new AnnotationLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - imageResourcesPath: imageResourcesPath, - renderInteractiveForms: renderInteractiveForms, - linkService: new _pdf_link_service.SimpleLinkService(), - l10n: l10n, - annotationStorage: annotationStorage, - enableScripting: enableScripting, - hasJSActionsPromise: hasJSActionsPromise, - mouseState: mouseState - }); - } - }]); - - return DefaultAnnotationLayerFactory; - }(); - - exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; - - /***/ - }), - /* 32 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.getL10nFallback = getL10nFallback; - exports.NullL10n = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - var DEFAULT_L10N_STRINGS = { - of_pages: "of {{pagesCount}}", - page_of_pages: "({{pageNumber}} of {{pagesCount}})", - document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)", - document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)", - document_properties_date_string: "{{date}}, {{time}}", - document_properties_page_size_unit_inches: "in", - document_properties_page_size_unit_millimeters: "mm", - document_properties_page_size_orientation_portrait: "portrait", - document_properties_page_size_orientation_landscape: "landscape", - document_properties_page_size_name_a3: "A3", - document_properties_page_size_name_a4: "A4", - document_properties_page_size_name_letter: "Letter", - document_properties_page_size_name_legal: "Legal", - document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})", - document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", - document_properties_linearized_yes: "Yes", - document_properties_linearized_no: "No", - print_progress_percent: "{{progress}}%", - "toggle_sidebar.title": "Toggle Sidebar", - "toggle_sidebar_notification2.title": "Toggle Sidebar (document contains outline/attachments/layers)", - additional_layers: "Additional Layers", - page_landmark: "Page {{page}}", - thumb_page_title: "Page {{page}}", - thumb_page_canvas: "Thumbnail of Page {{page}}", - find_reached_top: "Reached top of document, continued from bottom", - find_reached_bottom: "Reached end of document, continued from top", - "find_match_count[one]": "{{current}} of {{total}} match", - "find_match_count[other]": "{{current}} of {{total}} matches", - "find_match_count_limit[one]": "More than {{limit}} match", - "find_match_count_limit[other]": "More than {{limit}} matches", - find_not_found: "Phrase not found", - error_version_info: "PDF.js v{{version}} (build: {{build}})", - error_message: "Message: {{message}}", - error_stack: "Stack: {{stack}}", - error_file: "File: {{file}}", - error_line: "Line: {{line}}", - rendering_error: "An error occurred while rendering the page.", - page_scale_width: "Page Width", - page_scale_fit: "Page Fit", - page_scale_auto: "Automatic Zoom", - page_scale_actual: "Actual Size", - page_scale_percent: "{{scale}}%", - loading: "Loading…", - loading_error: "An error occurred while loading the PDF.", - invalid_file_error: "Invalid or corrupted PDF file.", - missing_file_error: "Missing PDF file.", - unexpected_response_error: "Unexpected server response.", - printing_not_supported: "Warning: Printing is not fully supported by this browser.", - printing_not_ready: "Warning: The PDF is not fully loaded for printing.", - web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts." - }; - - function getL10nFallback(key, args) { - switch (key) { - case "find_match_count": - key = "find_match_count[".concat(args.total === 1 ? "one" : "other", "]"); - break; - - case "find_match_count_limit": - key = "find_match_count_limit[".concat(args.limit === 1 ? "one" : "other", "]"); - break; - } - - return DEFAULT_L10N_STRINGS[key] || ""; - } - - function formatL10nValue(text, args) { - if (!args) { - return text; - } - - return text.replace(/\{\{\s*(\w+)\s*\}\}/g, function (all, name) { - return name in args ? args[name] : "{{" + name + "}}"; - }); - } - - var NullL10n = { - getLanguage: function getLanguage() { - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - return _context.abrupt("return", "en-us"); - - case 1: - case "end": - return _context.stop(); - } - } - }, _callee); - }))(); - }, - getDirection: function getDirection() { - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - return _context2.abrupt("return", "ltr"); - - case 1: - case "end": - return _context2.stop(); - } - } - }, _callee2); - }))(); - }, - get: function get(key) { - var _arguments = arguments; - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { - var args, fallback; - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - args = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : null; - fallback = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : getL10nFallback(key, args); - return _context3.abrupt("return", formatL10nValue(fallback, args)); - - case 3: - case "end": - return _context3.stop(); - } - } - }, _callee3); - }))(); - }, - translate: function translate(element) { - return _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4() { - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - case "end": - return _context4.stop(); - } - } - }, _callee4); - }))(); - } - }; - exports.NullL10n = NullL10n; - - /***/ - }), - /* 33 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFPageView = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _ui_utils = __webpack_require__(6); - - var _pdfjsLib = __webpack_require__(7); - - var _l10n_utils = __webpack_require__(32); - - var _pdf_rendering_queue = __webpack_require__(10); - - var _viewer_compatibility = __webpack_require__(2); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216; - - var PDFPageView = /*#__PURE__*/function () { - function PDFPageView(options) { - _classCallCheck(this, PDFPageView); - - var container = options.container; - var defaultViewport = options.defaultViewport; - this.id = options.id; - this.renderingId = "page" + this.id; - this.pdfPage = null; - this.pageLabel = null; - this.rotation = 0; - this.scale = options.scale || _ui_utils.DEFAULT_SCALE; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; - this.hasRestrictedScaling = false; - this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE; - this.imageResourcesPath = options.imageResourcesPath || ""; - this.renderInteractiveForms = options.renderInteractiveForms !== false; - this.useOnlyCssZoom = options.useOnlyCssZoom || false; - this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; - this.eventBus = options.eventBus; - this.renderingQueue = options.renderingQueue; - this.textLayerFactory = options.textLayerFactory; - this.annotationLayerFactory = options.annotationLayerFactory; - this.xfaLayerFactory = options.xfaLayerFactory; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; - this.enableWebGL = options.enableWebGL || false; - this.l10n = options.l10n || _l10n_utils.NullL10n; - this.enableScripting = options.enableScripting === true; - this.paintTask = null; - this.paintedViewportMap = new WeakMap(); - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - this._renderError = null; - this.annotationLayer = null; - this.textLayer = null; - this.zoomLayer = null; - this.xfaLayer = null; - var div = document.createElement("div"); - div.className = "page"; - div.style.width = Math.floor(this.viewport.width) + "px"; - div.style.height = Math.floor(this.viewport.height) + "px"; - div.setAttribute("data-page-number", this.id); - div.setAttribute("role", "region"); - this.l10n.get("page_landmark", { - page: this.id - }).then(function (msg) { - div.setAttribute("aria-label", msg); - }); - this.div = div; - container.appendChild(div); - } - - _createClass(PDFPageView, [{ - key: "setPdfPage", - value: function setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport({ - scale: this.scale * _ui_utils.CSS_UNITS, - rotation: totalRotation - }); - this.reset(); - } - }, { - key: "destroy", - value: function destroy() { - this.reset(); - - if (this.pdfPage) { - this.pdfPage.cleanup(); - } - } - }, { - key: "_renderAnnotationLayer", - value: function () { - var _renderAnnotationLayer2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var error; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - error = null; - _context.prev = 1; - _context.next = 4; - return this.annotationLayer.render(this.viewport, "display"); - - case 4: - _context.next = 9; - break; - - case 6: - _context.prev = 6; - _context.t0 = _context["catch"](1); - error = _context.t0; - - case 9: - _context.prev = 9; - this.eventBus.dispatch("annotationlayerrendered", { - source: this, - pageNumber: this.id, - error: error - }); - return _context.finish(9); - - case 12: - case "end": - return _context.stop(); - } - } - }, _callee, this, [[1, 6, 9, 12]]); - })); - - function _renderAnnotationLayer() { - return _renderAnnotationLayer2.apply(this, arguments); - } - - return _renderAnnotationLayer; - }() - }, { - key: "_renderXfaLayer", - value: function () { - var _renderXfaLayer2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var error; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - error = null; - _context2.prev = 1; - _context2.next = 4; - return this.xfaLayer.render(this.viewport, "display"); - - case 4: - _context2.next = 9; - break; - - case 6: - _context2.prev = 6; - _context2.t0 = _context2["catch"](1); - error = _context2.t0; - - case 9: - _context2.prev = 9; - this.eventBus.dispatch("xfalayerrendered", { - source: this, - pageNumber: this.id, - error: error - }); - return _context2.finish(9); - - case 12: - case "end": - return _context2.stop(); - } - } - }, _callee2, this, [[1, 6, 9, 12]]); - })); - - function _renderXfaLayer() { - return _renderXfaLayer2.apply(this, arguments); - } - - return _renderXfaLayer; - }() - }, { - key: "_resetZoomLayer", - value: function _resetZoomLayer() { - var removeFromDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!this.zoomLayer) { - return; - } - - var zoomLayerCanvas = this.zoomLayer.firstChild; - this.paintedViewportMap["delete"](zoomLayerCanvas); - zoomLayerCanvas.width = 0; - zoomLayerCanvas.height = 0; - - if (removeFromDOM) { - this.zoomLayer.remove(); - } - - this.zoomLayer = null; - } - }, { - key: "reset", - value: function reset() { - var _this$annotationLayer, - _this$xfaLayer, - _this = this; - - var keepZoomLayer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var keepAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - this.cancelRendering(keepAnnotations); - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - var div = this.div; - div.style.width = Math.floor(this.viewport.width) + "px"; - div.style.height = Math.floor(this.viewport.height) + "px"; - var childNodes = div.childNodes; - var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null; - var currentAnnotationNode = keepAnnotations && ((_this$annotationLayer = this.annotationLayer) === null || _this$annotationLayer === void 0 ? void 0 : _this$annotationLayer.div) || null; - var currentXfaLayerNode = ((_this$xfaLayer = this.xfaLayer) === null || _this$xfaLayer === void 0 ? void 0 : _this$xfaLayer.div) || null; - - for (var i = childNodes.length - 1; i >= 0; i--) { - var node = childNodes[i]; - - if (currentZoomLayerNode === node || currentAnnotationNode === node || currentXfaLayerNode === node) { - continue; - } - - div.removeChild(node); - } - - div.removeAttribute("data-loaded"); - - if (currentAnnotationNode) { - this.annotationLayer.hide(); - } else if (this.annotationLayer) { - this.annotationLayer.cancel(); - this.annotationLayer = null; - } - - if (!currentZoomLayerNode) { - if (this.canvas) { - this.paintedViewportMap["delete"](this.canvas); - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - - this._resetZoomLayer(); - } - - if (this.svg) { - this.paintedViewportMap["delete"](this.svg); - delete this.svg; - } - - this.loadingIconDiv = document.createElement("div"); - this.loadingIconDiv.className = "loadingIcon"; - this.loadingIconDiv.setAttribute("role", "img"); - this.l10n.get("loading").then(function (msg) { - var _this$loadingIconDiv; - - (_this$loadingIconDiv = _this.loadingIconDiv) === null || _this$loadingIconDiv === void 0 ? void 0 : _this$loadingIconDiv.setAttribute("aria-label", msg); - }); - div.appendChild(this.loadingIconDiv); - } - }, { - key: "update", - value: function update(scale, rotation) { - var optionalContentConfigPromise = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - this.scale = scale || this.scale; - - if (typeof rotation !== "undefined") { - this.rotation = rotation; - } - - if (optionalContentConfigPromise instanceof Promise) { - this._optionalContentConfigPromise = optionalContentConfigPromise; - } - - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: this.scale * _ui_utils.CSS_UNITS, - rotation: totalRotation - }); - - if (this.svg) { - this.cssTransform(this.svg, true); - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: true, - timestamp: performance.now(), - error: this._renderError - }); - return; - } - - var isScalingRestricted = false; - - if (this.canvas && this.maxCanvasPixels > 0) { - var outputScale = this.outputScale; - - if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) { - isScalingRestricted = true; - } - } - - if (this.canvas) { - if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { - this.cssTransform(this.canvas, true); - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: true, - timestamp: performance.now(), - error: this._renderError - }); - return; - } - - if (!this.zoomLayer && !this.canvas.hidden) { - this.zoomLayer = this.canvas.parentNode; - this.zoomLayer.style.position = "absolute"; - } - } - - if (this.zoomLayer) { - this.cssTransform(this.zoomLayer.firstChild); - } - - this.reset(true, true); - } - }, { - key: "cancelRendering", - value: function cancelRendering() { - var keepAnnotations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (this.paintTask) { - this.paintTask.cancel(); - this.paintTask = null; - } - - this.resume = null; - - if (this.textLayer) { - this.textLayer.cancel(); - this.textLayer = null; - } - - if (!keepAnnotations && this.annotationLayer) { - this.annotationLayer.cancel(); - this.annotationLayer = null; - } - } - }, { - key: "cssTransform", - value: function cssTransform(target) { - var redrawAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var width = this.viewport.width; - var height = this.viewport.height; - var div = this.div; - target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + "px"; - target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + "px"; - var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation; - var absRotation = Math.abs(relativeRotation); - var scaleX = 1, - scaleY = 1; - - if (absRotation === 90 || absRotation === 270) { - scaleX = height / width; - scaleY = width / height; - } - - target.style.transform = "rotate(".concat(relativeRotation, "deg) scale(").concat(scaleX, ", ").concat(scaleY, ")"); - - if (this.textLayer) { - var textLayerViewport = this.textLayer.viewport; - var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation; - var textAbsRotation = Math.abs(textRelativeRotation); - var scale = width / textLayerViewport.width; - - if (textAbsRotation === 90 || textAbsRotation === 270) { - scale = width / textLayerViewport.height; - } - - var textLayerDiv = this.textLayer.textLayerDiv; - var transX, transY; - - switch (textAbsRotation) { - case 0: - transX = transY = 0; - break; - - case 90: - transX = 0; - transY = "-" + textLayerDiv.style.height; - break; - - case 180: - transX = "-" + textLayerDiv.style.width; - transY = "-" + textLayerDiv.style.height; - break; - - case 270: - transX = "-" + textLayerDiv.style.width; - transY = 0; - break; - - default: - console.error("Bad rotation value."); - break; - } - - textLayerDiv.style.transform = "rotate(".concat(textAbsRotation, "deg) ") + "scale(".concat(scale, ") ") + "translate(".concat(transX, ", ").concat(transY, ")"); - textLayerDiv.style.transformOrigin = "0% 0%"; - } - - if (redrawAnnotations && this.annotationLayer) { - this._renderAnnotationLayer(); - } - - if (this.xfaLayer) { - this._renderXfaLayer(); - } - } - }, { - key: "width", - get: function get() { - return this.viewport.width; - } - }, { - key: "height", - get: function get() { - return this.viewport.height; - } - }, { - key: "getPagePoint", - value: function getPagePoint(x, y) { - return this.viewport.convertToPdfPoint(x, y); - } - }, { - key: "draw", - value: function draw() { - var _this$annotationLayer2, - _this2 = this; - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - console.error("Must be in new state before drawing"); - this.reset(); - } - - var div = this.div, - pdfPage = this.pdfPage; - - if (!pdfPage) { - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - - if (this.loadingIconDiv) { - div.removeChild(this.loadingIconDiv); - delete this.loadingIconDiv; - } - - return Promise.reject(new Error("pdfPage is not loaded")); - } - - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - var canvasWrapper = document.createElement("div"); - canvasWrapper.style.width = div.style.width; - canvasWrapper.style.height = div.style.height; - canvasWrapper.classList.add("canvasWrapper"); - - if ((_this$annotationLayer2 = this.annotationLayer) !== null && _this$annotationLayer2 !== void 0 && _this$annotationLayer2.div) { - div.insertBefore(canvasWrapper, this.annotationLayer.div); - } else { - div.appendChild(canvasWrapper); - } - - var textLayer = null; - - if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) { - var _this$annotationLayer3; - - var textLayerDiv = document.createElement("div"); - textLayerDiv.className = "textLayer"; - textLayerDiv.style.width = canvasWrapper.style.width; - textLayerDiv.style.height = canvasWrapper.style.height; - - if ((_this$annotationLayer3 = this.annotationLayer) !== null && _this$annotationLayer3 !== void 0 && _this$annotationLayer3.div) { - div.insertBefore(textLayerDiv, this.annotationLayer.div); - } else { - div.appendChild(textLayerDiv); - } - - textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE, this.eventBus); - } - - this.textLayer = textLayer; - var renderContinueCallback = null; - - if (this.renderingQueue) { - renderContinueCallback = function renderContinueCallback(cont) { - if (!_this2.renderingQueue.isHighestPriority(_this2)) { - _this2.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; - - _this2.resume = function () { - _this2.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - cont(); - }; - - return; - } - - cont(); - }; - } - - var finishPaintTask = /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { - var error, - _args3 = arguments; - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - error = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null; - - if (paintTask === _this2.paintTask) { - _this2.paintTask = null; - } - - if (!(error instanceof _pdfjsLib.RenderingCancelledException)) { - _context3.next = 5; - break; - } - - _this2._renderError = null; - return _context3.abrupt("return"); - - case 5: - _this2._renderError = error; - _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - - if (_this2.loadingIconDiv) { - div.removeChild(_this2.loadingIconDiv); - delete _this2.loadingIconDiv; - } - - _this2._resetZoomLayer(true); - - _this2.eventBus.dispatch("pagerendered", { - source: _this2, - pageNumber: _this2.id, - cssTransform: false, - timestamp: performance.now(), - error: _this2._renderError - }); - - if (!error) { - _context3.next = 12; - break; - } - - throw error; - - case 12: - case "end": - return _context3.stop(); - } - } - }, _callee3); - })); - - return function finishPaintTask() { - return _ref.apply(this, arguments); - }; - }(); - - var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); - paintTask.onRenderContinue = renderContinueCallback; - this.paintTask = paintTask; - var resultPromise = paintTask.promise.then(function () { - return finishPaintTask(null).then(function () { - if (textLayer) { - var readableStream = pdfPage.streamTextContent({ - normalizeWhitespace: true - }); - textLayer.setTextContentStream(readableStream); - textLayer.render(); - } - }); - }, function (reason) { - return finishPaintTask(reason); - }); - - if (this.annotationLayerFactory) { - if (!this.annotationLayer) { - this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, null, this.imageResourcesPath, this.renderInteractiveForms, this.l10n, this.enableScripting, null, null); - } - - this._renderAnnotationLayer(); - } - - if (this.xfaLayerFactory) { - if (!this.xfaLayer) { - this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(div, pdfPage); - } - - this._renderXfaLayer(); - } - - div.setAttribute("data-loaded", true); - this.eventBus.dispatch("pagerender", { - source: this, - pageNumber: this.id - }); - return resultPromise; - } - }, { - key: "paintOnCanvas", - value: function paintOnCanvas(canvasWrapper) { - var renderCapability = (0, _pdfjsLib.createPromiseCapability)(); - var result = { - promise: renderCapability.promise, - onRenderContinue: function onRenderContinue(cont) { - cont(); - }, - cancel: function cancel() { - renderTask.cancel(); - } - }; - var viewport = this.viewport; - var canvas = document.createElement("canvas"); - canvas.hidden = true; - var isCanvasHidden = true; - - var showCanvas = function showCanvas() { - if (isCanvasHidden) { - canvas.hidden = false; - isCanvasHidden = false; - } - }; - - canvasWrapper.appendChild(canvas); - this.canvas = canvas; - canvas.mozOpaque = true; - var ctx = canvas.getContext("2d", { - alpha: false - }); - var outputScale = (0, _ui_utils.getOutputScale)(ctx); - this.outputScale = outputScale; - - if (this.useOnlyCssZoom) { - var actualSizeViewport = viewport.clone({ - scale: _ui_utils.CSS_UNITS - }); - outputScale.sx *= actualSizeViewport.width / viewport.width; - outputScale.sy *= actualSizeViewport.height / viewport.height; - outputScale.scaled = true; - } - - if (this.maxCanvasPixels > 0) { - var pixelsInViewport = viewport.width * viewport.height; - var maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); - - if (outputScale.sx > maxScale || outputScale.sy > maxScale) { - outputScale.sx = maxScale; - outputScale.sy = maxScale; - outputScale.scaled = true; - this.hasRestrictedScaling = true; - } else { - this.hasRestrictedScaling = false; - } - } - - var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); - var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); - canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); - canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); - canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px"; - canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + "px"; - this.paintedViewportMap.set(canvas, viewport); - var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0]; - var renderContext = { - canvasContext: ctx, - transform: transform, - viewport: this.viewport, - enableWebGL: this.enableWebGL, - renderInteractiveForms: this.renderInteractiveForms, - optionalContentConfigPromise: this._optionalContentConfigPromise - }; - var renderTask = this.pdfPage.render(renderContext); - - renderTask.onContinue = function (cont) { - showCanvas(); - - if (result.onRenderContinue) { - result.onRenderContinue(cont); - } else { - cont(); - } - }; - - renderTask.promise.then(function () { - showCanvas(); - renderCapability.resolve(undefined); - }, function (error) { - showCanvas(); - renderCapability.reject(error); - }); - return result; - } - }, { - key: "paintOnSvg", - value: function paintOnSvg(wrapper) { - var _this3 = this; - - var cancelled = false; - - var ensureNotCancelled = function ensureNotCancelled() { - if (cancelled) { - throw new _pdfjsLib.RenderingCancelledException("Rendering cancelled, page ".concat(_this3.id), "svg"); - } - }; - - var pdfPage = this.pdfPage; - var actualSizeViewport = this.viewport.clone({ - scale: _ui_utils.CSS_UNITS - }); - var promise = pdfPage.getOperatorList().then(function (opList) { - ensureNotCancelled(); - var svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs, _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL); - return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) { - ensureNotCancelled(); - _this3.svg = svg; - - _this3.paintedViewportMap.set(svg, actualSizeViewport); - - svg.style.width = wrapper.style.width; - svg.style.height = wrapper.style.height; - _this3.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - wrapper.appendChild(svg); - }); - }); - return { - promise: promise, - onRenderContinue: function onRenderContinue(cont) { - cont(); - }, - cancel: function cancel() { - cancelled = true; - } - }; - } - }, { - key: "setPageLabel", - value: function setPageLabel(label) { - this.pageLabel = typeof label === "string" ? label : null; - - if (this.pageLabel !== null) { - this.div.setAttribute("data-page-label", this.pageLabel); - } else { - this.div.removeAttribute("data-page-label"); - } - } - }]); - - return PDFPageView; - }(); - - exports.PDFPageView = PDFPageView; - - /***/ - }), - /* 34 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.TextLayerBuilder = exports.DefaultTextLayerFactory = void 0; - - var _pdfjsLib = __webpack_require__(7); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var EXPAND_DIVS_TIMEOUT = 300; - - var TextLayerBuilder = /*#__PURE__*/function () { - function TextLayerBuilder(_ref) { - var textLayerDiv = _ref.textLayerDiv, - eventBus = _ref.eventBus, - pageIndex = _ref.pageIndex, - viewport = _ref.viewport, - _ref$findController = _ref.findController, - findController = _ref$findController === void 0 ? null : _ref$findController, - _ref$enhanceTextSelec = _ref.enhanceTextSelection, - enhanceTextSelection = _ref$enhanceTextSelec === void 0 ? false : _ref$enhanceTextSelec; - - _classCallCheck(this, TextLayerBuilder); - - this.textLayerDiv = textLayerDiv; - this.eventBus = eventBus; - this.textContent = null; - this.textContentItemsStr = []; - this.textContentStream = null; - this.renderingDone = false; - this.pageIdx = pageIndex; - this.pageNumber = this.pageIdx + 1; - this.matches = []; - this.viewport = viewport; - this.textDivs = []; - this.findController = findController; - this.textLayerRenderTask = null; - this.enhanceTextSelection = enhanceTextSelection; - this._onUpdateTextLayerMatches = null; - - this._bindMouse(); - } - - _createClass(TextLayerBuilder, [{ - key: "_finishRendering", - value: function _finishRendering() { - this.renderingDone = true; - - if (!this.enhanceTextSelection) { - var endOfContent = document.createElement("div"); - endOfContent.className = "endOfContent"; - this.textLayerDiv.appendChild(endOfContent); - } - - this.eventBus.dispatch("textlayerrendered", { - source: this, - pageNumber: this.pageNumber, - numTextDivs: this.textDivs.length - }); - } - }, { - key: "render", - value: function render() { - var _this = this; - - var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - - if (!(this.textContent || this.textContentStream) || this.renderingDone) { - return; - } - - this.cancel(); - this.textDivs = []; - var textLayerFrag = document.createDocumentFragment(); - this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ - textContent: this.textContent, - textContentStream: this.textContentStream, - container: textLayerFrag, - viewport: this.viewport, - textDivs: this.textDivs, - textContentItemsStr: this.textContentItemsStr, - timeout: timeout, - enhanceTextSelection: this.enhanceTextSelection - }); - this.textLayerRenderTask.promise.then(function () { - _this.textLayerDiv.appendChild(textLayerFrag); - - _this._finishRendering(); - - _this._updateMatches(); - }, function (reason) { - }); - - if (!this._onUpdateTextLayerMatches) { - this._onUpdateTextLayerMatches = function (evt) { - if (evt.pageIndex === _this.pageIdx || evt.pageIndex === -1) { - _this._updateMatches(); - } - }; - - this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches); - } - } - }, { - key: "cancel", - value: function cancel() { - if (this.textLayerRenderTask) { - this.textLayerRenderTask.cancel(); - this.textLayerRenderTask = null; - } - - if (this._onUpdateTextLayerMatches) { - this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches); - - this._onUpdateTextLayerMatches = null; - } - } - }, { - key: "setTextContentStream", - value: function setTextContentStream(readableStream) { - this.cancel(); - this.textContentStream = readableStream; - } - }, { - key: "setTextContent", - value: function setTextContent(textContent) { - this.cancel(); - this.textContent = textContent; - } - }, { - key: "_convertMatches", - value: function _convertMatches(matches, matchesLength) { - if (!matches) { - return []; - } - - var textContentItemsStr = this.textContentItemsStr; - var i = 0, - iIndex = 0; - var end = textContentItemsStr.length - 1; - var result = []; - - for (var m = 0, mm = matches.length; m < mm; m++) { - var matchIdx = matches[m]; - - while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { - iIndex += textContentItemsStr[i].length; - i++; - } - - if (i === textContentItemsStr.length) { - console.error("Could not find a matching mapping"); - } - - var match = { - begin: { - divIdx: i, - offset: matchIdx - iIndex - } - }; - matchIdx += matchesLength[m]; - - while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { - iIndex += textContentItemsStr[i].length; - i++; - } - - match.end = { - divIdx: i, - offset: matchIdx - iIndex - }; - result.push(match); - } - - return result; - } - }, { - key: "_renderMatches", - value: function _renderMatches(matches) { - if (matches.length === 0) { - return; - } - - var findController = this.findController, - pageIdx = this.pageIdx, - textContentItemsStr = this.textContentItemsStr, - textDivs = this.textDivs; - var isSelectedPage = pageIdx === findController.selected.pageIdx; - var selectedMatchIdx = findController.selected.matchIdx; - var highlightAll = findController.state.highlightAll; - var prevEnd = null; - var infinity = { - divIdx: -1, - offset: undefined - }; - - function beginText(begin, className) { - var divIdx = begin.divIdx; - textDivs[divIdx].textContent = ""; - appendTextToDiv(divIdx, 0, begin.offset, className); - } - - function appendTextToDiv(divIdx, fromOffset, toOffset, className) { - var div = textDivs[divIdx]; - var content = textContentItemsStr[divIdx].substring(fromOffset, toOffset); - var node = document.createTextNode(content); - - if (className) { - var span = document.createElement("span"); - span.className = className; - span.appendChild(node); - div.appendChild(span); - return; - } - - div.appendChild(node); - } - - var i0 = selectedMatchIdx, - i1 = i0 + 1; - - if (highlightAll) { - i0 = 0; - i1 = matches.length; - } else if (!isSelectedPage) { - return; - } - - for (var i = i0; i < i1; i++) { - var match = matches[i]; - var begin = match.begin; - var end = match.end; - var isSelected = isSelectedPage && i === selectedMatchIdx; - var highlightSuffix = isSelected ? " selected" : ""; - - if (isSelected) { - findController.scrollMatchIntoView({ - element: textDivs[begin.divIdx], - pageIndex: pageIdx, - matchIndex: selectedMatchIdx - }); - } - - if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { - if (prevEnd !== null) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - - beginText(begin); - } else { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); - } - - if (begin.divIdx === end.divIdx) { - appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix); - } else { - appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix); - - for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { - textDivs[n0].className = "highlight middle" + highlightSuffix; - } - - beginText(end, "highlight end" + highlightSuffix); - } - - prevEnd = end; - } - - if (prevEnd) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - } - }, { - key: "_updateMatches", - value: function _updateMatches() { - if (!this.renderingDone) { - return; - } - - var findController = this.findController, - matches = this.matches, - pageIdx = this.pageIdx, - textContentItemsStr = this.textContentItemsStr, - textDivs = this.textDivs; - var clearedUntilDivIdx = -1; - - for (var i = 0, ii = matches.length; i < ii; i++) { - var match = matches[i]; - var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); - - for (var n = begin, end = match.end.divIdx; n <= end; n++) { - var div = textDivs[n]; - div.textContent = textContentItemsStr[n]; - div.className = ""; - } - - clearedUntilDivIdx = match.end.divIdx + 1; - } - - if (!(findController !== null && findController !== void 0 && findController.highlightMatches)) { - return; - } - - var pageMatches = findController.pageMatches[pageIdx] || null; - var pageMatchesLength = findController.pageMatchesLength[pageIdx] || null; - this.matches = this._convertMatches(pageMatches, pageMatchesLength); - - this._renderMatches(this.matches); - } - }, { - key: "_bindMouse", - value: function _bindMouse() { - var _this2 = this; - - var div = this.textLayerDiv; - var expandDivsTimer = null; - div.addEventListener("mousedown", function (evt) { - if (_this2.enhanceTextSelection && _this2.textLayerRenderTask) { - _this2.textLayerRenderTask.expandTextDivs(true); - - if (expandDivsTimer) { - clearTimeout(expandDivsTimer); - expandDivsTimer = null; - } - - return; - } - - var end = div.querySelector(".endOfContent"); - - if (!end) { - return; - } - - var adjustTop = evt.target !== div; - adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none"; - - if (adjustTop) { - var divBounds = div.getBoundingClientRect(); - var r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); - end.style.top = (r * 100).toFixed(2) + "%"; - } - - end.classList.add("active"); - }); - div.addEventListener("mouseup", function () { - if (_this2.enhanceTextSelection && _this2.textLayerRenderTask) { - expandDivsTimer = setTimeout(function () { - if (_this2.textLayerRenderTask) { - _this2.textLayerRenderTask.expandTextDivs(false); - } - - expandDivsTimer = null; - }, EXPAND_DIVS_TIMEOUT); - return; - } - - var end = div.querySelector(".endOfContent"); - - if (!end) { - return; - } - - end.style.top = ""; - end.classList.remove("active"); - }); - } - }]); - - return TextLayerBuilder; - }(); - - exports.TextLayerBuilder = TextLayerBuilder; - - var DefaultTextLayerFactory = /*#__PURE__*/function () { - function DefaultTextLayerFactory() { - _classCallCheck(this, DefaultTextLayerFactory); - } - - _createClass(DefaultTextLayerFactory, [{ - key: "createTextLayerBuilder", - value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) { - var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - var eventBus = arguments.length > 4 ? arguments[4] : undefined; - return new TextLayerBuilder({ - textLayerDiv: textLayerDiv, - pageIndex: pageIndex, - viewport: viewport, - enhanceTextSelection: enhanceTextSelection, - eventBus: eventBus - }); - } - }]); - - return DefaultTextLayerFactory; - }(); - - exports.DefaultTextLayerFactory = DefaultTextLayerFactory; - - /***/ - }), - /* 35 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.XfaLayerBuilder = exports.DefaultXfaLayerFactory = void 0; - - var _pdfjsLib = __webpack_require__(7); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var XfaLayerBuilder = /*#__PURE__*/function () { - function XfaLayerBuilder(_ref) { - var pageDiv = _ref.pageDiv, - pdfPage = _ref.pdfPage; - - _classCallCheck(this, XfaLayerBuilder); - - this.pageDiv = pageDiv; - this.pdfPage = pdfPage; - this.div = null; - this._cancelled = false; - } - - _createClass(XfaLayerBuilder, [{ - key: "render", - value: function render(viewport) { - var _this = this; - - var intent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "display"; - return this.pdfPage.getXfa().then(function (xfa) { - if (_this._cancelled) { - return; - } - - var parameters = { - viewport: viewport.clone({ - dontFlip: true - }), - div: _this.div, - xfa: xfa, - page: _this.pdfPage - }; - - if (_this.div) { - _pdfjsLib.XfaLayer.update(parameters); - } else { - _this.div = document.createElement("div"); - - _this.pageDiv.appendChild(_this.div); - - parameters.div = _this.div; - - _pdfjsLib.XfaLayer.render(parameters); - } - }); - } - }, { - key: "cancel", - value: function cancel() { - this._cancelled = true; - } - }, { - key: "hide", - value: function hide() { - if (!this.div) { - return; - } - - this.div.hidden = true; - } - }]); - - return XfaLayerBuilder; - }(); - - exports.XfaLayerBuilder = XfaLayerBuilder; - - var DefaultXfaLayerFactory = /*#__PURE__*/function () { - function DefaultXfaLayerFactory() { - _classCallCheck(this, DefaultXfaLayerFactory); - } - - _createClass(DefaultXfaLayerFactory, [{ - key: "createXfaLayerBuilder", - value: function createXfaLayerBuilder(pageDiv, pdfPage) { - return new XfaLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage - }); - } - }]); - - return DefaultXfaLayerFactory; - }(); - - exports.DefaultXfaLayerFactory = DefaultXfaLayerFactory; - - /***/ - }), - /* 36 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.SecondaryToolbar = void 0; - - var _ui_utils = __webpack_require__(6); - - var _pdf_cursor_tools = __webpack_require__(8); - - var _pdf_single_page_viewer = __webpack_require__(37); - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var SecondaryToolbar = /*#__PURE__*/function () { - function SecondaryToolbar(options, mainContainer, eventBus) { - var _this = this; - - _classCallCheck(this, SecondaryToolbar); - - this.toolbar = options.toolbar; - this.toggleButton = options.toggleButton; - this.toolbarButtonContainer = options.toolbarButtonContainer; - this.buttons = [{ - element: options.presentationModeButton, - eventName: "presentationmode", - close: true - }, { - element: options.openFileButton, - eventName: "openfile", - close: true - }, { - element: options.printButton, - eventName: "print", - close: true - }, { - element: options.downloadButton, - eventName: "download", - close: true - }, { - element: options.viewBookmarkButton, - eventName: null, - close: true - }, { - element: options.firstPageButton, - eventName: "firstpage", - close: true - }, { - element: options.lastPageButton, - eventName: "lastpage", - close: true - }, { - element: options.pageRotateCwButton, - eventName: "rotatecw", - close: false - }, { - element: options.pageRotateCcwButton, - eventName: "rotateccw", - close: false - }, { - element: options.cursorSelectToolButton, - eventName: "switchcursortool", - eventDetails: { - tool: _pdf_cursor_tools.CursorTool.SELECT - }, - close: true - }, { - element: options.cursorHandToolButton, - eventName: "switchcursortool", - eventDetails: { - tool: _pdf_cursor_tools.CursorTool.HAND - }, - close: true - }, { - element: options.scrollVerticalButton, - eventName: "switchscrollmode", - eventDetails: { - mode: _ui_utils.ScrollMode.VERTICAL - }, - close: true - }, { - element: options.scrollHorizontalButton, - eventName: "switchscrollmode", - eventDetails: { - mode: _ui_utils.ScrollMode.HORIZONTAL - }, - close: true - }, { - element: options.scrollWrappedButton, - eventName: "switchscrollmode", - eventDetails: { - mode: _ui_utils.ScrollMode.WRAPPED - }, - close: true - }, { - element: options.spreadNoneButton, - eventName: "switchspreadmode", - eventDetails: { - mode: _ui_utils.SpreadMode.NONE - }, - close: true - }, { - element: options.spreadOddButton, - eventName: "switchspreadmode", - eventDetails: { - mode: _ui_utils.SpreadMode.ODD - }, - close: true - }, { - element: options.spreadEvenButton, - eventName: "switchspreadmode", - eventDetails: { - mode: _ui_utils.SpreadMode.EVEN - }, - close: true - }, { - element: options.documentPropertiesButton, - eventName: "documentproperties", - close: true - }]; - this.items = { - firstPage: options.firstPageButton, - lastPage: options.lastPageButton, - pageRotateCw: options.pageRotateCwButton, - pageRotateCcw: options.pageRotateCcwButton - }; - this.mainContainer = mainContainer; - this.eventBus = eventBus; - this.opened = false; - this.containerHeight = null; - this.previousContainerHeight = null; - this.reset(); - - this._bindClickListeners(); - - this._bindCursorToolsListener(options); - - this._bindScrollModeListener(options); - - this._bindSpreadModeListener(options); - - this.eventBus._on("resize", this._setMaxHeight.bind(this)); - - this.eventBus._on("baseviewerinit", function (evt) { - if (evt.source instanceof _pdf_single_page_viewer.PDFSinglePageViewer) { - _this.toolbarButtonContainer.classList.add("hiddenScrollModeButtons", "hiddenSpreadModeButtons"); - } else { - _this.toolbarButtonContainer.classList.remove("hiddenScrollModeButtons", "hiddenSpreadModeButtons"); - } - }); - } - - _createClass(SecondaryToolbar, [{ - key: "isOpen", - get: function get() { - return this.opened; - } - }, { - key: "setPageNumber", - value: function setPageNumber(pageNumber) { - this.pageNumber = pageNumber; - - this._updateUIState(); - } - }, { - key: "setPagesCount", - value: function setPagesCount(pagesCount) { - this.pagesCount = pagesCount; - - this._updateUIState(); - } - }, { - key: "reset", - value: function reset() { - this.pageNumber = 0; - this.pagesCount = 0; - - this._updateUIState(); - - this.eventBus.dispatch("secondarytoolbarreset", { - source: this - }); - } - }, { - key: "_updateUIState", - value: function _updateUIState() { - this.items.firstPage.disabled = this.pageNumber <= 1; - this.items.lastPage.disabled = this.pageNumber >= this.pagesCount; - this.items.pageRotateCw.disabled = this.pagesCount === 0; - this.items.pageRotateCcw.disabled = this.pagesCount === 0; - } - }, { - key: "_bindClickListeners", - value: function _bindClickListeners() { - var _this2 = this; - - this.toggleButton.addEventListener("click", this.toggle.bind(this)); - - var _iterator = _createForOfIteratorHelper(this.buttons), - _step; - - try { - var _loop = function _loop() { - var _step$value = _step.value, - element = _step$value.element, - eventName = _step$value.eventName, - close = _step$value.close, - eventDetails = _step$value.eventDetails; - element.addEventListener("click", function (evt) { - if (eventName !== null) { - var details = { - source: _this2 - }; - - for (var property in eventDetails) { - details[property] = eventDetails[property]; - } - - _this2.eventBus.dispatch(eventName, details); - } - - if (close) { - _this2.close(); - } - }); - }; - - for (_iterator.s(); !(_step = _iterator.n()).done;) { - _loop(); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - }, { - key: "_bindCursorToolsListener", - value: function _bindCursorToolsListener(buttons) { - this.eventBus._on("cursortoolchanged", function (_ref) { - var tool = _ref.tool; - buttons.cursorSelectToolButton.classList.toggle("toggled", tool === _pdf_cursor_tools.CursorTool.SELECT); - buttons.cursorHandToolButton.classList.toggle("toggled", tool === _pdf_cursor_tools.CursorTool.HAND); - }); - } - }, { - key: "_bindScrollModeListener", - value: function _bindScrollModeListener(buttons) { - var _this3 = this; - - function scrollModeChanged(_ref2) { - var mode = _ref2.mode; - buttons.scrollVerticalButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.VERTICAL); - buttons.scrollHorizontalButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.HORIZONTAL); - buttons.scrollWrappedButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.WRAPPED); - var isScrollModeHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL; - buttons.spreadNoneButton.disabled = isScrollModeHorizontal; - buttons.spreadOddButton.disabled = isScrollModeHorizontal; - buttons.spreadEvenButton.disabled = isScrollModeHorizontal; - } - - this.eventBus._on("scrollmodechanged", scrollModeChanged); - - this.eventBus._on("secondarytoolbarreset", function (evt) { - if (evt.source === _this3) { - scrollModeChanged({ - mode: _ui_utils.ScrollMode.VERTICAL - }); - } - }); - } - }, { - key: "_bindSpreadModeListener", - value: function _bindSpreadModeListener(buttons) { - var _this4 = this; - - function spreadModeChanged(_ref3) { - var mode = _ref3.mode; - buttons.spreadNoneButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.NONE); - buttons.spreadOddButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.ODD); - buttons.spreadEvenButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.EVEN); - } - - this.eventBus._on("spreadmodechanged", spreadModeChanged); - - this.eventBus._on("secondarytoolbarreset", function (evt) { - if (evt.source === _this4) { - spreadModeChanged({ - mode: _ui_utils.SpreadMode.NONE - }); - } - }); - } - }, { - key: "open", - value: function open() { - if (this.opened) { - return; - } - - this.opened = true; - - this._setMaxHeight(); - - this.toggleButton.classList.add("toggled"); - this.toggleButton.setAttribute("aria-expanded", "true"); - this.toolbar.classList.remove("hidden"); - } - }, { - key: "close", - value: function close() { - if (!this.opened) { - return; - } - - this.opened = false; - this.toolbar.classList.add("hidden"); - this.toggleButton.classList.remove("toggled"); - this.toggleButton.setAttribute("aria-expanded", "false"); - } - }, { - key: "toggle", - value: function toggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - } - }, { - key: "_setMaxHeight", - value: function _setMaxHeight() { - if (!this.opened) { - return; - } - - this.containerHeight = this.mainContainer.clientHeight; - - if (this.containerHeight === this.previousContainerHeight) { - return; - } - - this.toolbarButtonContainer.style.maxHeight = "".concat(this.containerHeight - _ui_utils.SCROLLBAR_PADDING, "px"); - this.previousContainerHeight = this.containerHeight; - } - }]); - - return SecondaryToolbar; - }(); - - exports.SecondaryToolbar = SecondaryToolbar; - - /***/ - }), - /* 37 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFSinglePageViewer = void 0; - - var _base_viewer = __webpack_require__(30); - - var _pdfjsLib = __webpack_require__(7); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _get(target, property, receiver) { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(receiver); - } - return desc.value; - }; - } - return _get(target, property, receiver || target); - } - - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - var PDFSinglePageViewer = /*#__PURE__*/function (_BaseViewer) { - _inherits(PDFSinglePageViewer, _BaseViewer); - - var _super = _createSuper(PDFSinglePageViewer); - - function PDFSinglePageViewer(options) { - var _this; - - _classCallCheck(this, PDFSinglePageViewer); - - _this = _super.call(this, options); - - _this.eventBus._on("pagesinit", function (evt) { - _this._ensurePageViewVisible(); - }); - - return _this; - } - - _createClass(PDFSinglePageViewer, [{ - key: "_viewerElement", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "_viewerElement", this._shadowViewer); - } - }, { - key: "_pageWidthScaleFactor", - get: function get() { - return 1; - } - }, { - key: "_resetView", - value: function _resetView() { - _get(_getPrototypeOf(PDFSinglePageViewer.prototype), "_resetView", this).call(this); - - this._previousPageNumber = 1; - this._shadowViewer = document.createDocumentFragment(); - this._updateScrollDown = null; - } - }, { - key: "_ensurePageViewVisible", - value: function _ensurePageViewVisible() { - var pageView = this._pages[this._currentPageNumber - 1]; - var previousPageView = this._pages[this._previousPageNumber - 1]; - var viewerNodes = this.viewer.childNodes; - - switch (viewerNodes.length) { - case 0: - this.viewer.appendChild(pageView.div); - break; - - case 1: - if (viewerNodes[0] !== previousPageView.div) { - throw new Error("_ensurePageViewVisible: Unexpected previously visible page."); - } - - if (pageView === previousPageView) { - break; - } - - this._shadowViewer.appendChild(previousPageView.div); - - this.viewer.appendChild(pageView.div); - this.container.scrollTop = 0; - break; - - default: - throw new Error("_ensurePageViewVisible: Only one page should be visible at a time."); - } - - this._previousPageNumber = this._currentPageNumber; - } - }, { - key: "_scrollUpdate", - value: function _scrollUpdate() { - if (this._updateScrollDown) { - this._updateScrollDown(); - } - - _get(_getPrototypeOf(PDFSinglePageViewer.prototype), "_scrollUpdate", this).call(this); - } - }, { - key: "_scrollIntoView", - value: function _scrollIntoView(_ref) { - var _this2 = this; - - var pageDiv = _ref.pageDiv, - _ref$pageSpot = _ref.pageSpot, - pageSpot = _ref$pageSpot === void 0 ? null : _ref$pageSpot, - _ref$pageNumber = _ref.pageNumber, - pageNumber = _ref$pageNumber === void 0 ? null : _ref$pageNumber; - - if (pageNumber) { - this._setCurrentPageNumber(pageNumber); - } - - var scrolledDown = this._currentPageNumber >= this._previousPageNumber; - - this._ensurePageViewVisible(); - - this.update(); - - _get(_getPrototypeOf(PDFSinglePageViewer.prototype), "_scrollIntoView", this).call(this, { - pageDiv: pageDiv, - pageSpot: pageSpot, - pageNumber: pageNumber - }); - - this._updateScrollDown = function () { - _this2.scroll.down = scrolledDown; - _this2._updateScrollDown = null; - }; - } - }, { - key: "_getVisiblePages", - value: function _getVisiblePages() { - return this._getCurrentVisiblePage(); - } - }, { - key: "_updateHelper", - value: function _updateHelper(visiblePages) { - } - }, { - key: "_isScrollModeHorizontal", - get: function get() { - return (0, _pdfjsLib.shadow)(this, "_isScrollModeHorizontal", false); - } - }, { - key: "_updateScrollMode", - value: function _updateScrollMode() { - } - }, { - key: "_updateSpreadMode", - value: function _updateSpreadMode() { - } - }, { - key: "_getPageAdvance", - value: function _getPageAdvance() { - return 1; - } - }]); - - return PDFSinglePageViewer; - }(_base_viewer.BaseViewer); - - exports.PDFSinglePageViewer = PDFSinglePageViewer; - - /***/ - }), - /* 38 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.Toolbar = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _ui_utils = __webpack_require__(6); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F() { - }; - return { - s: F, n: function n() { - if (i >= o.length) return {done: true}; - return {done: false, value: o[i++]}; - }, e: function e(_e) { - throw _e; - }, f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { - s: function s() { - it = o[Symbol.iterator](); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f() { - try { - if (!normalCompletion && it["return"] != null) it["return"](); - } finally { - if (didErr) throw err; - } - } - }; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading"; - var SCALE_SELECT_CONTAINER_WIDTH = 140; - var SCALE_SELECT_WIDTH = 162; - - var Toolbar = /*#__PURE__*/function () { - function Toolbar(options, eventBus, l10n) { - _classCallCheck(this, Toolbar); - - this.toolbar = options.container; - this.eventBus = eventBus; - this.l10n = l10n; - this.buttons = [{ - element: options.previous, - eventName: "previouspage" - }, { - element: options.next, - eventName: "nextpage" - }, { - element: options.zoomIn, - eventName: "zoomin" - }, { - element: options.zoomOut, - eventName: "zoomout" - }, { - element: options.openFile, - eventName: "openfile" - }, { - element: options.print, - eventName: "print" - }, { - element: options.presentationModeButton, - eventName: "presentationmode" - }, { - element: options.download, - eventName: "download" - }, { - element: options.viewBookmark, - eventName: null - }]; - this.items = { - numPages: options.numPages, - pageNumber: options.pageNumber, - scaleSelectContainer: options.scaleSelectContainer, - scaleSelect: options.scaleSelect, - customScaleOption: options.customScaleOption, - previous: options.previous, - next: options.next, - zoomIn: options.zoomIn, - zoomOut: options.zoomOut - }; - this._wasLocalized = false; - this.reset(); - - this._bindListeners(); - } - - _createClass(Toolbar, [{ - key: "setPageNumber", - value: function setPageNumber(pageNumber, pageLabel) { - this.pageNumber = pageNumber; - this.pageLabel = pageLabel; - - this._updateUIState(false); - } - }, { - key: "setPagesCount", - value: function setPagesCount(pagesCount, hasPageLabels) { - this.pagesCount = pagesCount; - this.hasPageLabels = hasPageLabels; - - this._updateUIState(true); - } - }, { - key: "setPageScale", - value: function setPageScale(pageScaleValue, pageScale) { - this.pageScaleValue = (pageScaleValue || pageScale).toString(); - this.pageScale = pageScale; - - this._updateUIState(false); - } - }, { - key: "reset", - value: function reset() { - this.pageNumber = 0; - this.pageLabel = null; - this.hasPageLabels = false; - this.pagesCount = 0; - this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - this.pageScale = _ui_utils.DEFAULT_SCALE; - - this._updateUIState(true); - - this.updateLoadingIndicatorState(); - } - }, { - key: "_bindListeners", - value: function _bindListeners() { - var _this = this; - - var _this$items = this.items, - pageNumber = _this$items.pageNumber, - scaleSelect = _this$items.scaleSelect; - var self = this; - - var _iterator = _createForOfIteratorHelper(this.buttons), - _step; - - try { - var _loop = function _loop() { - var _step$value = _step.value, - element = _step$value.element, - eventName = _step$value.eventName; - element.addEventListener("click", function (evt) { - if (eventName !== null) { - _this.eventBus.dispatch(eventName, { - source: _this - }); - } - }); - }; - - for (_iterator.s(); !(_step = _iterator.n()).done;) { - _loop(); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - pageNumber.addEventListener("click", function () { - this.select(); - }); - pageNumber.addEventListener("change", function () { - self.eventBus.dispatch("pagenumberchanged", { - source: self, - value: this.value - }); - }); - scaleSelect.addEventListener("change", function () { - if (this.value === "custom") { - return; - } - - self.eventBus.dispatch("scalechanged", { - source: self, - value: this.value - }); - }); - scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler; - - this.eventBus._on("localized", function () { - _this._wasLocalized = true; - - _this._adjustScaleWidth(); - - _this._updateUIState(true); - }); - } - }, { - key: "_updateUIState", - value: function _updateUIState() { - var resetNumPages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!this._wasLocalized) { - return; - } - - var pageNumber = this.pageNumber, - pagesCount = this.pagesCount, - pageScaleValue = this.pageScaleValue, - pageScale = this.pageScale, - items = this.items; - - if (resetNumPages) { - if (this.hasPageLabels) { - items.pageNumber.type = "text"; - } else { - items.pageNumber.type = "number"; - this.l10n.get("of_pages", { - pagesCount: pagesCount - }).then(function (msg) { - items.numPages.textContent = msg; - }); - } - - items.pageNumber.max = pagesCount; - } - - if (this.hasPageLabels) { - items.pageNumber.value = this.pageLabel; - this.l10n.get("page_of_pages", { - pageNumber: pageNumber, - pagesCount: pagesCount - }).then(function (msg) { - items.numPages.textContent = msg; - }); - } else { - items.pageNumber.value = pageNumber; - } - - items.previous.disabled = pageNumber <= 1; - items.next.disabled = pageNumber >= pagesCount; - items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE; - items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE; - this.l10n.get("page_scale_percent", { - scale: Math.round(pageScale * 10000) / 100 - }).then(function (msg) { - var predefinedValueFound = false; - - var _iterator2 = _createForOfIteratorHelper(items.scaleSelect.options), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var option = _step2.value; - - if (option.value !== pageScaleValue) { - option.selected = false; - continue; - } - - option.selected = true; - predefinedValueFound = true; - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - if (!predefinedValueFound) { - items.customScaleOption.textContent = msg; - items.customScaleOption.selected = true; - } - }); - } - }, { - key: "updateLoadingIndicatorState", - value: function updateLoadingIndicatorState() { - var loading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var pageNumberInput = this.items.pageNumber; - pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading); - } - }, { - key: "_adjustScaleWidth", - value: function () { - var _adjustScaleWidth2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var items, l10n, predefinedValuesPromise, canvas, ctx, _getComputedStyle, fontSize, - fontFamily, maxWidth, _iterator3, _step3, predefinedValue, _ctx$measureText, width, - overflow; - - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - items = this.items, l10n = this.l10n; - predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), l10n.get("page_scale_fit"), l10n.get("page_scale_width")]); - canvas = document.createElement("canvas"); - canvas.mozOpaque = true; - ctx = canvas.getContext("2d", { - alpha: false - }); - _context.next = 7; - return _ui_utils.animationStarted; - - case 7: - _getComputedStyle = getComputedStyle(items.scaleSelect), fontSize = _getComputedStyle.fontSize, fontFamily = _getComputedStyle.fontFamily; - ctx.font = "".concat(fontSize, " ").concat(fontFamily); - maxWidth = 0; - _context.t0 = _createForOfIteratorHelper; - _context.next = 13; - return predefinedValuesPromise; - - case 13: - _context.t1 = _context.sent; - _iterator3 = (0, _context.t0)(_context.t1); - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - predefinedValue = _step3.value; - _ctx$measureText = ctx.measureText(predefinedValue), width = _ctx$measureText.width; - - if (width > maxWidth) { - maxWidth = width; - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - overflow = SCALE_SELECT_WIDTH - SCALE_SELECT_CONTAINER_WIDTH; - maxWidth += 2 * overflow; - - if (maxWidth > SCALE_SELECT_CONTAINER_WIDTH) { - items.scaleSelect.style.width = "".concat(maxWidth + overflow, "px"); - items.scaleSelectContainer.style.width = "".concat(maxWidth, "px"); - } - - canvas.width = 0; - canvas.height = 0; - canvas = ctx = null; - - case 22: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function _adjustScaleWidth() { - return _adjustScaleWidth2.apply(this, arguments); - } - - return _adjustScaleWidth; - }() - }]); - - return Toolbar; - }(); - - exports.Toolbar = Toolbar; - - /***/ - }), - /* 39 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.ViewHistory = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; - - var ViewHistory = /*#__PURE__*/function () { - function ViewHistory(fingerprint) { - var _this = this; - - var cacheSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_VIEW_HISTORY_CACHE_SIZE; - - _classCallCheck(this, ViewHistory); - - this.fingerprint = fingerprint; - this.cacheSize = cacheSize; - this._initializedPromise = this._readFromStorage().then(function (databaseStr) { - var database = JSON.parse(databaseStr || "{}"); - var index = -1; - - if (!Array.isArray(database.files)) { - database.files = []; - } else { - while (database.files.length >= _this.cacheSize) { - database.files.shift(); - } - - for (var i = 0, ii = database.files.length; i < ii; i++) { - var branch = database.files[i]; - - if (branch.fingerprint === _this.fingerprint) { - index = i; - break; - } - } - } - - if (index === -1) { - index = database.files.push({ - fingerprint: _this.fingerprint - }) - 1; - } - - _this.file = database.files[index]; - _this.database = database; - }); - } - - _createClass(ViewHistory, [{ - key: "_writeToStorage", - value: function () { - var _writeToStorage2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var databaseStr; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - databaseStr = JSON.stringify(this.database); - localStorage.setItem("pdfjs.history", databaseStr); - - case 2: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function _writeToStorage() { - return _writeToStorage2.apply(this, arguments); - } - - return _writeToStorage; - }() - }, { - key: "_readFromStorage", - value: function () { - var _readFromStorage2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - return _context2.abrupt("return", localStorage.getItem("pdfjs.history")); - - case 1: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - - function _readFromStorage() { - return _readFromStorage2.apply(this, arguments); - } - - return _readFromStorage; - }() - }, { - key: "set", - value: function () { - var _set = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3(name, val) { - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - _context3.next = 2; - return this._initializedPromise; - - case 2: - this.file[name] = val; - return _context3.abrupt("return", this._writeToStorage()); - - case 4: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function set(_x, _x2) { - return _set.apply(this, arguments); - } - - return set; - }() - }, { - key: "setMultiple", - value: function () { - var _setMultiple = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4(properties) { - var name; - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - _context4.next = 2; - return this._initializedPromise; - - case 2: - for (name in properties) { - this.file[name] = properties[name]; - } - - return _context4.abrupt("return", this._writeToStorage()); - - case 4: - case "end": - return _context4.stop(); - } - } - }, _callee4, this); - })); - - function setMultiple(_x3) { - return _setMultiple.apply(this, arguments); - } - - return setMultiple; - }() - }, { - key: "get", - value: function () { - var _get = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee5(name, defaultValue) { - var val; - return _regenerator["default"].wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - _context5.next = 2; - return this._initializedPromise; - - case 2: - val = this.file[name]; - return _context5.abrupt("return", val !== undefined ? val : defaultValue); - - case 4: - case "end": - return _context5.stop(); - } - } - }, _callee5, this); - })); - - function get(_x4, _x5) { - return _get.apply(this, arguments); - } - - return get; - }() - }, { - key: "getMultiple", - value: function () { - var _getMultiple = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee6(properties) { - var values, name, val; - return _regenerator["default"].wrap(function _callee6$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - _context6.next = 2; - return this._initializedPromise; - - case 2: - values = Object.create(null); - - for (name in properties) { - val = this.file[name]; - values[name] = val !== undefined ? val : properties[name]; - } - - return _context6.abrupt("return", values); - - case 5: - case "end": - return _context6.stop(); - } - } - }, _callee6, this); - })); - - function getMultiple(_x6) { - return _getMultiple.apply(this, arguments); - } - - return getMultiple; - }() - }]); - - return ViewHistory; - }(); - - exports.ViewHistory = ViewHistory; - - /***/ - }), - /* 40 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.GenericCom = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _app = __webpack_require__(3); - - var _preferences = __webpack_require__(41); - - var _download_manager = __webpack_require__(42); - - var _genericl10n = __webpack_require__(43); - - var _generic_scripting = __webpack_require__(45); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - - function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { - })); - return true; - } catch (e) { - return false; - } - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - ; - var GenericCom = {}; - exports.GenericCom = GenericCom; - - var GenericPreferences = /*#__PURE__*/function (_BasePreferences) { - _inherits(GenericPreferences, _BasePreferences); - - var _super = _createSuper(GenericPreferences); - - function GenericPreferences() { - _classCallCheck(this, GenericPreferences); - - return _super.apply(this, arguments); - } - - _createClass(GenericPreferences, [{ - key: "_writeToStorage", - value: function () { - var _writeToStorage2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(prefObj) { - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj)); - - case 1: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - function _writeToStorage(_x) { - return _writeToStorage2.apply(this, arguments); - } - - return _writeToStorage; - }() - }, { - key: "_readFromStorage", - value: function () { - var _readFromStorage2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(prefObj) { - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - return _context2.abrupt("return", JSON.parse(localStorage.getItem("pdfjs.preferences"))); - - case 1: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - - function _readFromStorage(_x2) { - return _readFromStorage2.apply(this, arguments); - } - - return _readFromStorage; - }() - }]); - - return GenericPreferences; - }(_preferences.BasePreferences); - - var GenericExternalServices = /*#__PURE__*/function (_DefaultExternalServi) { - _inherits(GenericExternalServices, _DefaultExternalServi); - - var _super2 = _createSuper(GenericExternalServices); - - function GenericExternalServices() { - _classCallCheck(this, GenericExternalServices); - - return _super2.apply(this, arguments); - } - - _createClass(GenericExternalServices, null, [{ - key: "createDownloadManager", - value: function createDownloadManager(options) { - return new _download_manager.DownloadManager(); - } - }, { - key: "createPreferences", - value: function createPreferences() { - return new GenericPreferences(); - } - }, { - key: "createL10n", - value: function createL10n(_ref) { - var _ref$locale = _ref.locale, - locale = _ref$locale === void 0 ? "en-US" : _ref$locale; - return new _genericl10n.GenericL10n(locale); - } - }, { - key: "createScripting", - value: function createScripting(_ref2) { - var sandboxBundleSrc = _ref2.sandboxBundleSrc; - return new _generic_scripting.GenericScripting(sandboxBundleSrc); - } - }]); - - return GenericExternalServices; - }(_app.DefaultExternalServices); - - _app.PDFViewerApplication.externalServices = GenericExternalServices; - - /***/ - }), - /* 41 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.BasePreferences = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _app_options = __webpack_require__(1); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - return _typeof(obj); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var BasePreferences = /*#__PURE__*/function () { - function BasePreferences() { - var _this = this; - - _classCallCheck(this, BasePreferences); - - if (this.constructor === BasePreferences) { - throw new Error("Cannot initialize BasePreferences."); - } - - Object.defineProperty(this, "defaults", { - value: Object.freeze({ - "cursorToolOnLoad": 0, - "defaultZoomValue": "", - "disablePageLabels": false, - "enablePermissions": false, - "enablePrintAutoRotate": true, - "enableScripting": true, - "enableWebGL": false, - "externalLinkTarget": 0, - "historyUpdateUrl": false, - "ignoreDestinationZoom": false, - "pdfBugEnabled": false, - "renderer": "canvas", - "renderInteractiveForms": true, - "sidebarViewOnLoad": -1, - "scrollModeOnLoad": -1, - "spreadModeOnLoad": -1, - "textLayerMode": 1, - "useOnlyCssZoom": false, - "viewerCssTheme": 0, - "viewOnLoad": 0, - "disableAutoFetch": false, - "disableFontFace": false, - "disableRange": false, - "disableStream": false - }), - writable: false, - enumerable: true, - configurable: false - }); - this.prefs = Object.create(null); - this._initializedPromise = this._readFromStorage(this.defaults).then(function (prefs) { - for (var name in _this.defaults) { - var prefValue = prefs === null || prefs === void 0 ? void 0 : prefs[name]; - - if (_typeof(prefValue) === _typeof(_this.defaults[name])) { - _this.prefs[name] = prefValue; - } - } - }); - } - - _createClass(BasePreferences, [{ - key: "_writeToStorage", - value: function () { - var _writeToStorage2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(prefObj) { - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - throw new Error("Not implemented: _writeToStorage"); - - case 1: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - - function _writeToStorage(_x) { - return _writeToStorage2.apply(this, arguments); - } - - return _writeToStorage; - }() - }, { - key: "_readFromStorage", - value: function () { - var _readFromStorage2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(prefObj) { - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - throw new Error("Not implemented: _readFromStorage"); - - case 1: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - - function _readFromStorage(_x2) { - return _readFromStorage2.apply(this, arguments); - } - - return _readFromStorage; - }() - }, { - key: "reset", - value: function () { - var _reset = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - _context3.next = 2; - return this._initializedPromise; - - case 2: - this.prefs = Object.create(null); - return _context3.abrupt("return", this._writeToStorage(this.defaults)); - - case 4: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function reset() { - return _reset.apply(this, arguments); - } - - return reset; - }() - }, { - key: "set", - value: function () { - var _set = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4(name, value) { - var defaultValue, valueType, defaultType; - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - _context4.next = 2; - return this._initializedPromise; - - case 2: - defaultValue = this.defaults[name]; - - if (!(defaultValue === undefined)) { - _context4.next = 7; - break; - } - - throw new Error("Set preference: \"".concat(name, "\" is undefined.")); - - case 7: - if (!(value === undefined)) { - _context4.next = 9; - break; - } - - throw new Error("Set preference: no value is specified."); - - case 9: - valueType = _typeof(value); - defaultType = _typeof(defaultValue); - - if (!(valueType !== defaultType)) { - _context4.next = 19; - break; - } - - if (!(valueType === "number" && defaultType === "string")) { - _context4.next = 16; - break; - } - - value = value.toString(); - _context4.next = 17; - break; - - case 16: - throw new Error("Set preference: \"".concat(value, "\" is a ").concat(valueType, ", expected a ").concat(defaultType, ".")); - - case 17: - _context4.next = 21; - break; - - case 19: - if (!(valueType === "number" && !Number.isInteger(value))) { - _context4.next = 21; - break; - } - - throw new Error("Set preference: \"".concat(value, "\" must be an integer.")); - - case 21: - this.prefs[name] = value; - return _context4.abrupt("return", this._writeToStorage(this.prefs)); - - case 23: - case "end": - return _context4.stop(); - } - } - }, _callee4, this); - })); - - function set(_x3, _x4) { - return _set.apply(this, arguments); - } - - return set; - }() - }, { - key: "get", - value: function () { - var _get = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee5(name) { - var defaultValue, prefValue; - return _regenerator["default"].wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - _context5.next = 2; - return this._initializedPromise; - - case 2: - defaultValue = this.defaults[name], prefValue = this.prefs[name]; - - if (!(defaultValue === undefined)) { - _context5.next = 5; - break; - } - - throw new Error("Get preference: \"".concat(name, "\" is undefined.")); - - case 5: - return _context5.abrupt("return", prefValue !== undefined ? prefValue : defaultValue); - - case 6: - case "end": - return _context5.stop(); - } - } - }, _callee5, this); - })); - - function get(_x5) { - return _get.apply(this, arguments); - } - - return get; - }() - }, { - key: "getAll", - value: function () { - var _getAll = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee6() { - var obj, name, prefValue; - return _regenerator["default"].wrap(function _callee6$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - _context6.next = 2; - return this._initializedPromise; - - case 2: - obj = Object.create(null); - - for (name in this.defaults) { - prefValue = this.prefs[name]; - obj[name] = prefValue !== undefined ? prefValue : this.defaults[name]; - } - - return _context6.abrupt("return", obj); - - case 5: - case "end": - return _context6.stop(); - } - } - }, _callee6, this); - })); - - function getAll() { - return _getAll.apply(this, arguments); - } - - return getAll; - }() - }]); - - return BasePreferences; - }(); - - exports.BasePreferences = BasePreferences; - - /***/ - }), - /* 42 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.DownloadManager = void 0; - - var _pdfjsLib = __webpack_require__(7); - - var _viewer_compatibility = __webpack_require__(2); - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - ; - - function _download(blobUrl, filename) { - var a = document.createElement("a"); - - if (!a.click) { - throw new Error('DownloadManager: "a.click()" is not supported.'); - } - - a.href = blobUrl; - a.target = "_parent"; - - if ("download" in a) { - a.download = filename; - } - - (document.body || document.documentElement).appendChild(a); - a.click(); - a.remove(); - } - - var DownloadManager = /*#__PURE__*/function () { - function DownloadManager() { - _classCallCheck(this, DownloadManager); - - this._openBlobUrls = new WeakMap(); - } - - _createClass(DownloadManager, [{ - key: "downloadUrl", - value: function downloadUrl(url, filename) { - if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) { - return; - } - - _download(url + "#pdfjs.action=download", filename); - } - }, { - key: "downloadData", - value: function downloadData(data, filename, contentType) { - var blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL); - - _download(blobUrl, filename); - } - }, { - key: "openOrDownloadData", - value: function openOrDownloadData(element, data, filename) { - var isPdfData = (0, _pdfjsLib.isPdfFile)(filename); - var contentType = isPdfData ? "application/pdf" : ""; - - if (isPdfData && !_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { - var blobUrl = this._openBlobUrls.get(element); - - if (!blobUrl) { - blobUrl = URL.createObjectURL(new Blob([data], { - type: contentType - })); - - this._openBlobUrls.set(element, blobUrl); - } - - var viewerUrl; - viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename); - - try { - window.open(viewerUrl); - return true; - } catch (ex) { - console.error("openOrDownloadData: ".concat(ex)); - URL.revokeObjectURL(blobUrl); - - this._openBlobUrls["delete"](element); - } - } - - this.downloadData(data, filename, contentType); - return false; - } - }, { - key: "download", - value: function download(blob, url, filename) { - var sourceEventType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "download"; - - if (_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { - this.downloadUrl(url, filename); - return; - } - - var blobUrl = URL.createObjectURL(blob); - - _download(blobUrl, filename); - } - }]); - - return DownloadManager; - }(); - - exports.DownloadManager = DownloadManager; - - /***/ - }), - /* 43 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.GenericL10n = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - __webpack_require__(44); - - var _l10n_utils = __webpack_require__(32); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - var webL10n = document.webL10n; - - var GenericL10n = /*#__PURE__*/function () { - function GenericL10n(lang) { - _classCallCheck(this, GenericL10n); - - this._lang = lang; - this._ready = new Promise(function (resolve, reject) { - webL10n.setLanguage(lang, function () { - resolve(webL10n); - }); - }); - } - - _createClass(GenericL10n, [{ - key: "getLanguage", - value: function () { - var _getLanguage = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { - var l10n; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return this._ready; - - case 2: - l10n = _context.sent; - return _context.abrupt("return", l10n.getLanguage()); - - case 4: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function getLanguage() { - return _getLanguage.apply(this, arguments); - } - - return getLanguage; - }() - }, { - key: "getDirection", - value: function () { - var _getDirection = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { - var l10n; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return this._ready; - - case 2: - l10n = _context2.sent; - return _context2.abrupt("return", l10n.getDirection()); - - case 4: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function getDirection() { - return _getDirection.apply(this, arguments); - } - - return getDirection; - }() - }, { - key: "get", - value: function () { - var _get = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3(key) { - var args, - fallback, - l10n, - _args3 = arguments; - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - args = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : null; - fallback = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : (0, _l10n_utils.getL10nFallback)(key, args); - _context3.next = 4; - return this._ready; - - case 4: - l10n = _context3.sent; - return _context3.abrupt("return", l10n.get(key, args, fallback)); - - case 6: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function get(_x) { - return _get.apply(this, arguments); - } - - return get; - }() - }, { - key: "translate", - value: function () { - var _translate = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4(element) { - var l10n; - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - _context4.next = 2; - return this._ready; - - case 2: - l10n = _context4.sent; - return _context4.abrupt("return", l10n.translate(element)); - - case 4: - case "end": - return _context4.stop(); - } - } - }, _callee4, this); - })); - - function translate(_x2) { - return _translate.apply(this, arguments); - } - - return translate; - }() - }]); - - return GenericL10n; - }(); - - exports.GenericL10n = GenericL10n; - - /***/ - }), - /* 44 */ - /***/ (() => { - - - document.webL10n = function (window, document, undefined) { - var gL10nData = {}; - var gTextData = ''; - var gTextProp = 'textContent'; - var gLanguage = ''; - var gMacros = {}; - var gReadyState = 'loading'; - var gAsyncResourceLoading = true; - - function getL10nResourceLinks() { - return document.querySelectorAll('link[type="application/l10n"]'); - } - - function getL10nDictionary() { - var script = document.querySelector('script[type="application/l10n"]'); - return script ? JSON.parse(script.innerHTML) : null; - } - - function getTranslatableChildren(element) { - return element ? element.querySelectorAll('*[data-l10n-id]') : []; - } - - function getL10nAttributes(element) { - if (!element) return {}; - var l10nId = element.getAttribute('data-l10n-id'); - var l10nArgs = element.getAttribute('data-l10n-args'); - var args = {}; - - if (l10nArgs) { - try { - args = JSON.parse(l10nArgs); - } catch (e) { - console.warn('could not parse arguments for #' + l10nId); - } - } - - return { - id: l10nId, - args: args - }; - } - - function xhrLoadText(url, onSuccess, onFailure) { - onSuccess = onSuccess || function _onSuccess(data) { - }; - - onFailure = onFailure || function _onFailure() { - }; - - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, gAsyncResourceLoading); - - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=utf-8'); - } - - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - if (xhr.status == 200 || xhr.status === 0) { - onSuccess(xhr.responseText); - } else { - onFailure(); - } - } - }; - - xhr.onerror = onFailure; - xhr.ontimeout = onFailure; - - try { - xhr.send(null); - } catch (e) { - onFailure(); - } - } - - function parseResource(href, lang, successCallback, failureCallback) { - var baseURL = href.replace(/[^\/]*$/, '') || './'; - - function evalString(text) { - if (text.lastIndexOf('\\') < 0) return text; - return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'"); - } - - function parseProperties(text, parsedPropertiesCallback) { - var dictionary = {}; - var reBlank = /^\s*|\s*$/; - var reComment = /^\s*#|^\s*$/; - var reSection = /^\s*\[(.*)\]\s*$/; - var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; - var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; - - function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { - var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); - var currentLang = '*'; - var genericLang = lang.split('-', 1)[0]; - var skipLang = false; - var match = ''; - - function nextEntry() { - while (true) { - if (!entries.length) { - parsedRawLinesCallback(); - return; - } - - var line = entries.shift(); - if (reComment.test(line)) continue; - - if (extendedSyntax) { - match = reSection.exec(line); - - if (match) { - currentLang = match[1].toLowerCase(); - skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang; - continue; - } else if (skipLang) { - continue; - } - - match = reImport.exec(line); - - if (match) { - loadImport(baseURL + match[1], nextEntry); - return; - } - } - - var tmp = line.match(reSplit); - - if (tmp && tmp.length == 3) { - dictionary[tmp[1]] = evalString(tmp[2]); - } - } - } - - nextEntry(); - } - - function loadImport(url, callback) { - xhrLoadText(url, function (content) { - parseRawLines(content, false, callback); - }, function () { - console.warn(url + ' not found.'); - callback(); - }); - } - - parseRawLines(text, true, function () { - parsedPropertiesCallback(dictionary); - }); - } - - xhrLoadText(href, function (response) { - gTextData += response; - parseProperties(response, function (data) { - for (var key in data) { - var id, - prop, - index = key.lastIndexOf('.'); - - if (index > 0) { - id = key.substring(0, index); - prop = key.substring(index + 1); - } else { - id = key; - prop = gTextProp; - } - - if (!gL10nData[id]) { - gL10nData[id] = {}; - } - - gL10nData[id][prop] = data[key]; - } - - if (successCallback) { - successCallback(); - } - }); - }, failureCallback); - } - - function loadLocale(lang, callback) { - if (lang) { - lang = lang.toLowerCase(); - } - - callback = callback || function _callback() { - }; - - clear(); - gLanguage = lang; - var langLinks = getL10nResourceLinks(); - var langCount = langLinks.length; - - if (langCount === 0) { - var dict = getL10nDictionary(); - - if (dict && dict.locales && dict.default_locale) { - console.log('using the embedded JSON directory, early way out'); - gL10nData = dict.locales[lang]; - - if (!gL10nData) { - var defaultLocale = dict.default_locale.toLowerCase(); - - for (var anyCaseLang in dict.locales) { - anyCaseLang = anyCaseLang.toLowerCase(); - - if (anyCaseLang === lang) { - gL10nData = dict.locales[lang]; - break; - } else if (anyCaseLang === defaultLocale) { - gL10nData = dict.locales[defaultLocale]; - } - } - } - - callback(); - } else { - console.log('no resource to load, early way out'); - } - - gReadyState = 'complete'; - return; - } - - var onResourceLoaded = null; - var gResourceCount = 0; - - onResourceLoaded = function onResourceLoaded() { - gResourceCount++; - - if (gResourceCount >= langCount) { - callback(); - gReadyState = 'complete'; - } - }; - - function L10nResourceLink(link) { - var href = link.href; - - this.load = function (lang, callback) { - parseResource(href, lang, callback, function () { - console.warn(href + ' not found.'); - console.warn('"' + lang + '" resource not found'); - gLanguage = ''; - callback(); - }); - }; - } - - for (var i = 0; i < langCount; i++) { - var resource = new L10nResourceLink(langLinks[i]); - resource.load(lang, onResourceLoaded); - } - } - - function clear() { - gL10nData = {}; - gTextData = ''; - gLanguage = ''; - } - - function getPluralRules(lang) { - var locales2rules = { - 'af': 3, - 'ak': 4, - 'am': 4, - 'ar': 1, - 'asa': 3, - 'az': 0, - 'be': 11, - 'bem': 3, - 'bez': 3, - 'bg': 3, - 'bh': 4, - 'bm': 0, - 'bn': 3, - 'bo': 0, - 'br': 20, - 'brx': 3, - 'bs': 11, - 'ca': 3, - 'cgg': 3, - 'chr': 3, - 'cs': 12, - 'cy': 17, - 'da': 3, - 'de': 3, - 'dv': 3, - 'dz': 0, - 'ee': 3, - 'el': 3, - 'en': 3, - 'eo': 3, - 'es': 3, - 'et': 3, - 'eu': 3, - 'fa': 0, - 'ff': 5, - 'fi': 3, - 'fil': 4, - 'fo': 3, - 'fr': 5, - 'fur': 3, - 'fy': 3, - 'ga': 8, - 'gd': 24, - 'gl': 3, - 'gsw': 3, - 'gu': 3, - 'guw': 4, - 'gv': 23, - 'ha': 3, - 'haw': 3, - 'he': 2, - 'hi': 4, - 'hr': 11, - 'hu': 0, - 'id': 0, - 'ig': 0, - 'ii': 0, - 'is': 3, - 'it': 3, - 'iu': 7, - 'ja': 0, - 'jmc': 3, - 'jv': 0, - 'ka': 0, - 'kab': 5, - 'kaj': 3, - 'kcg': 3, - 'kde': 0, - 'kea': 0, - 'kk': 3, - 'kl': 3, - 'km': 0, - 'kn': 0, - 'ko': 0, - 'ksb': 3, - 'ksh': 21, - 'ku': 3, - 'kw': 7, - 'lag': 18, - 'lb': 3, - 'lg': 3, - 'ln': 4, - 'lo': 0, - 'lt': 10, - 'lv': 6, - 'mas': 3, - 'mg': 4, - 'mk': 16, - 'ml': 3, - 'mn': 3, - 'mo': 9, - 'mr': 3, - 'ms': 0, - 'mt': 15, - 'my': 0, - 'nah': 3, - 'naq': 7, - 'nb': 3, - 'nd': 3, - 'ne': 3, - 'nl': 3, - 'nn': 3, - 'no': 3, - 'nr': 3, - 'nso': 4, - 'ny': 3, - 'nyn': 3, - 'om': 3, - 'or': 3, - 'pa': 3, - 'pap': 3, - 'pl': 13, - 'ps': 3, - 'pt': 3, - 'rm': 3, - 'ro': 9, - 'rof': 3, - 'ru': 11, - 'rwk': 3, - 'sah': 0, - 'saq': 3, - 'se': 7, - 'seh': 3, - 'ses': 0, - 'sg': 0, - 'sh': 11, - 'shi': 19, - 'sk': 12, - 'sl': 14, - 'sma': 7, - 'smi': 7, - 'smj': 7, - 'smn': 7, - 'sms': 7, - 'sn': 3, - 'so': 3, - 'sq': 3, - 'sr': 11, - 'ss': 3, - 'ssy': 3, - 'st': 3, - 'sv': 3, - 'sw': 3, - 'syr': 3, - 'ta': 3, - 'te': 3, - 'teo': 3, - 'th': 0, - 'ti': 4, - 'tig': 3, - 'tk': 3, - 'tl': 4, - 'tn': 3, - 'to': 0, - 'tr': 0, - 'ts': 3, - 'tzm': 22, - 'uk': 11, - 'ur': 3, - 've': 3, - 'vi': 0, - 'vun': 3, - 'wa': 4, - 'wae': 3, - 'wo': 0, - 'xh': 3, - 'xog': 3, - 'yo': 0, - 'zh': 0, - 'zu': 3 - }; - - function isIn(n, list) { - return list.indexOf(n) !== -1; - } - - function isBetween(n, start, end) { - return start <= n && n <= end; - } - - var pluralRules = { - '0': function _(n) { - return 'other'; - }, - '1': function _(n) { - if (isBetween(n % 100, 3, 10)) return 'few'; - if (n === 0) return 'zero'; - if (isBetween(n % 100, 11, 99)) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '2': function _(n) { - if (n !== 0 && n % 10 === 0) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '3': function _(n) { - if (n == 1) return 'one'; - return 'other'; - }, - '4': function _(n) { - if (isBetween(n, 0, 1)) return 'one'; - return 'other'; - }, - '5': function _(n) { - if (isBetween(n, 0, 2) && n != 2) return 'one'; - return 'other'; - }, - '6': function _(n) { - if (n === 0) return 'zero'; - if (n % 10 == 1 && n % 100 != 11) return 'one'; - return 'other'; - }, - '7': function _(n) { - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '8': function _(n) { - if (isBetween(n, 3, 6)) return 'few'; - if (isBetween(n, 7, 10)) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '9': function _(n) { - if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few'; - if (n == 1) return 'one'; - return 'other'; - }, - '10': function _(n) { - if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few'; - if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one'; - return 'other'; - }, - '11': function _(n) { - if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; - if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many'; - if (n % 10 == 1 && n % 100 != 11) return 'one'; - return 'other'; - }, - '12': function _(n) { - if (isBetween(n, 2, 4)) return 'few'; - if (n == 1) return 'one'; - return 'other'; - }, - '13': function _(n) { - if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; - if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many'; - if (n == 1) return 'one'; - return 'other'; - }, - '14': function _(n) { - if (isBetween(n % 100, 3, 4)) return 'few'; - if (n % 100 == 2) return 'two'; - if (n % 100 == 1) return 'one'; - return 'other'; - }, - '15': function _(n) { - if (n === 0 || isBetween(n % 100, 2, 10)) return 'few'; - if (isBetween(n % 100, 11, 19)) return 'many'; - if (n == 1) return 'one'; - return 'other'; - }, - '16': function _(n) { - if (n % 10 == 1 && n != 11) return 'one'; - return 'other'; - }, - '17': function _(n) { - if (n == 3) return 'few'; - if (n === 0) return 'zero'; - if (n == 6) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '18': function _(n) { - if (n === 0) return 'zero'; - if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one'; - return 'other'; - }, - '19': function _(n) { - if (isBetween(n, 2, 10)) return 'few'; - if (isBetween(n, 0, 1)) return 'one'; - return 'other'; - }, - '20': function _(n) { - if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few'; - if (n % 1000000 === 0 && n !== 0) return 'many'; - if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two'; - if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one'; - return 'other'; - }, - '21': function _(n) { - if (n === 0) return 'zero'; - if (n == 1) return 'one'; - return 'other'; - }, - '22': function _(n) { - if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one'; - return 'other'; - }, - '23': function _(n) { - if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one'; - return 'other'; - }, - '24': function _(n) { - if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few'; - if (isIn(n, [2, 12])) return 'two'; - if (isIn(n, [1, 11])) return 'one'; - return 'other'; - } - }; - var index = locales2rules[lang.replace(/-.*$/, '')]; - - if (!(index in pluralRules)) { - console.warn('plural form unknown for [' + lang + ']'); - return function () { - return 'other'; - }; - } - - return pluralRules[index]; - } - - gMacros.plural = function (str, param, key, prop) { - var n = parseFloat(param); - if (isNaN(n)) return str; - if (prop != gTextProp) return str; - - if (!gMacros._pluralRules) { - gMacros._pluralRules = getPluralRules(gLanguage); - } - - var index = '[' + gMacros._pluralRules(n) + ']'; - - if (n === 0 && key + '[zero]' in gL10nData) { - str = gL10nData[key + '[zero]'][prop]; - } else if (n == 1 && key + '[one]' in gL10nData) { - str = gL10nData[key + '[one]'][prop]; - } else if (n == 2 && key + '[two]' in gL10nData) { - str = gL10nData[key + '[two]'][prop]; - } else if (key + index in gL10nData) { - str = gL10nData[key + index][prop]; - } else if (key + '[other]' in gL10nData) { - str = gL10nData[key + '[other]'][prop]; - } - - return str; - }; - - function getL10nData(key, args, fallback) { - var data = gL10nData[key]; - - if (!data) { - console.warn('#' + key + ' is undefined.'); - - if (!fallback) { - return null; - } - - data = fallback; - } - - var rv = {}; - - for (var prop in data) { - var str = data[prop]; - str = substIndexes(str, args, key, prop); - str = substArguments(str, args, key); - rv[prop] = str; - } - - return rv; - } - - function substIndexes(str, args, key, prop) { - var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; - var reMatch = reIndex.exec(str); - if (!reMatch || !reMatch.length) return str; - var macroName = reMatch[1]; - var paramName = reMatch[2]; - var param; - - if (args && paramName in args) { - param = args[paramName]; - } else if (paramName in gL10nData) { - param = gL10nData[paramName]; - } - - if (macroName in gMacros) { - var macro = gMacros[macroName]; - str = macro(str, param, key, prop); - } - - return str; - } - - function substArguments(str, args, key) { - var reArgs = /\{\{\s*(.+?)\s*\}\}/g; - return str.replace(reArgs, function (matched_text, arg) { - if (args && arg in args) { - return args[arg]; - } - - if (arg in gL10nData) { - return gL10nData[arg]; - } - - console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); - return matched_text; - }); - } - - function translateElement(element) { - var l10n = getL10nAttributes(element); - if (!l10n.id) return; - var data = getL10nData(l10n.id, l10n.args); - - if (!data) { - console.warn('#' + l10n.id + ' is undefined.'); - return; - } - - if (data[gTextProp]) { - if (getChildElementCount(element) === 0) { - element[gTextProp] = data[gTextProp]; - } else { - var children = element.childNodes; - var found = false; - - for (var i = 0, l = children.length; i < l; i++) { - if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { - if (found) { - children[i].nodeValue = ''; - } else { - children[i].nodeValue = data[gTextProp]; - found = true; - } - } - } - - if (!found) { - var textNode = document.createTextNode(data[gTextProp]); - element.insertBefore(textNode, element.firstChild); - } - } - - delete data[gTextProp]; - } - - for (var k in data) { - element[k] = data[k]; - } - } - - function getChildElementCount(element) { - if (element.children) { - return element.children.length; - } - - if (typeof element.childElementCount !== 'undefined') { - return element.childElementCount; - } - - var count = 0; - - for (var i = 0; i < element.childNodes.length; i++) { - count += element.nodeType === 1 ? 1 : 0; - } - - return count; - } - - function translateFragment(element) { - element = element || document.documentElement; - var children = getTranslatableChildren(element); - var elementCount = children.length; - - for (var i = 0; i < elementCount; i++) { - translateElement(children[i]); - } - - translateElement(element); - } - - return { - get: function get(key, args, fallbackString) { - var index = key.lastIndexOf('.'); - var prop = gTextProp; - - if (index > 0) { - prop = key.substring(index + 1); - key = key.substring(0, index); - } - - var fallback; - - if (fallbackString) { - fallback = {}; - fallback[prop] = fallbackString; - } - - var data = getL10nData(key, args, fallback); - - if (data && prop in data) { - return data[prop]; - } - - return '{{' + key + '}}'; - }, - getData: function getData() { - return gL10nData; - }, - getText: function getText() { - return gTextData; - }, - getLanguage: function getLanguage() { - return gLanguage; - }, - setLanguage: function setLanguage(lang, callback) { - loadLocale(lang, function () { - if (callback) callback(); - }); - }, - getDirection: function getDirection() { - var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; - var shortCode = gLanguage.split('-', 1)[0]; - return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr'; - }, - translate: translateFragment, - getReadyState: function getReadyState() { - return gReadyState; - }, - ready: function ready(callback) { - if (!callback) { - return; - } else if (gReadyState == 'complete' || gReadyState == 'interactive') { - window.setTimeout(function () { - callback(); - }); - } else if (document.addEventListener) { - document.addEventListener('localized', function once() { - document.removeEventListener('localized', once); - callback(); - }); - } - } - }; - }(window, document); - - /***/ - }), - /* 45 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.docPropertiesLookup = docPropertiesLookup; - exports.GenericScripting = void 0; - - var _regenerator = _interopRequireDefault(__webpack_require__(4)); - - var _pdfjsLib = __webpack_require__(7); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : {"default": obj}; - } - - function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys.push.apply(keys, symbols); - } - return keys; - } - - function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - if (i % 2) { - ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - return target; - } - - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function docPropertiesLookup(_x) { - return _docPropertiesLookup.apply(this, arguments); - } - - function _docPropertiesLookup() { - _docPropertiesLookup = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee4(pdfDocument) { - var url, baseUrl, _yield$pdfDocument$ge, info, metadata, contentDispositionFilename, contentLength, - _yield$pdfDocument$ge2, length; - - return _regenerator["default"].wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - url = "", baseUrl = url.split("#")[0]; - _context4.next = 3; - return pdfDocument.getMetadata(); - - case 3: - _yield$pdfDocument$ge = _context4.sent; - info = _yield$pdfDocument$ge.info; - metadata = _yield$pdfDocument$ge.metadata; - contentDispositionFilename = _yield$pdfDocument$ge.contentDispositionFilename; - contentLength = _yield$pdfDocument$ge.contentLength; - - if (contentLength) { - _context4.next = 14; - break; - } - - _context4.next = 11; - return pdfDocument.getDownloadInfo(); - - case 11: - _yield$pdfDocument$ge2 = _context4.sent; - length = _yield$pdfDocument$ge2.length; - contentLength = length; - - case 14: - return _context4.abrupt("return", _objectSpread(_objectSpread({}, info), {}, { - baseURL: baseUrl, - filesize: contentLength, - filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url), - metadata: metadata === null || metadata === void 0 ? void 0 : metadata.getRaw(), - authors: metadata === null || metadata === void 0 ? void 0 : metadata.get("dc:creator"), - numPages: pdfDocument.numPages, - URL: url - })); - - case 15: - case "end": - return _context4.stop(); - } - } - }, _callee4); - })); - return _docPropertiesLookup.apply(this, arguments); - } - - var GenericScripting = /*#__PURE__*/function () { - function GenericScripting(sandboxBundleSrc) { - _classCallCheck(this, GenericScripting); - - this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(function () { - return window.pdfjsSandbox.QuickJSSandbox(); - }); - } - - _createClass(GenericScripting, [{ - key: "createSandbox", - value: function () { - var _createSandbox = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(data) { - var sandbox; - return _regenerator["default"].wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return this._ready; - - case 2: - sandbox = _context.sent; - sandbox.create(data); - - case 4: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function createSandbox(_x2) { - return _createSandbox.apply(this, arguments); - } - - return createSandbox; - }() - }, { - key: "dispatchEventInSandbox", - value: function () { - var _dispatchEventInSandbox = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(event) { - var sandbox; - return _regenerator["default"].wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return this._ready; - - case 2: - sandbox = _context2.sent; - sandbox.dispatchEvent(event); - - case 4: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function dispatchEventInSandbox(_x3) { - return _dispatchEventInSandbox.apply(this, arguments); - } - - return dispatchEventInSandbox; - }() - }, { - key: "destroySandbox", - value: function () { - var _destroySandbox = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { - var sandbox; - return _regenerator["default"].wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - _context3.next = 2; - return this._ready; - - case 2: - sandbox = _context3.sent; - sandbox.nukeSandbox(); - - case 4: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - - function destroySandbox() { - return _destroySandbox.apply(this, arguments); - } - - return destroySandbox; - }() - }]); - - return GenericScripting; - }(); - - exports.GenericScripting = GenericScripting; - - /***/ - }), - /* 46 */ - /***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - exports.PDFPrintService = PDFPrintService; - - var _app = __webpack_require__(3); - - var _viewer_compatibility = __webpack_require__(2); - - var activeService = null; - var overlayManager = null; - - function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise) { - var scratchCanvas = activeService.scratchCanvas; - var PRINT_UNITS = printResolution / 72.0; - scratchCanvas.width = Math.floor(size.width * PRINT_UNITS); - scratchCanvas.height = Math.floor(size.height * PRINT_UNITS); - var ctx = scratchCanvas.getContext("2d"); - ctx.save(); - ctx.fillStyle = "rgb(255, 255, 255)"; - ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height); - ctx.restore(); - return pdfDocument.getPage(pageNumber).then(function (pdfPage) { - var renderContext = { - canvasContext: ctx, - transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], - viewport: pdfPage.getViewport({ - scale: 1, - rotation: size.rotation - }), - intent: "print", - annotationStorage: pdfDocument.annotationStorage, - optionalContentConfigPromise: optionalContentConfigPromise - }; - return pdfPage.render(renderContext).promise; - }); - } - - function PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution) { - var optionalContentConfigPromise = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; - var l10n = arguments.length > 5 ? arguments[5] : undefined; - this.pdfDocument = pdfDocument; - this.pagesOverview = pagesOverview; - this.printContainer = printContainer; - this._printResolution = printResolution || 150; - this._optionalContentConfigPromise = optionalContentConfigPromise || pdfDocument.getOptionalContentConfig(); - this.l10n = l10n; - this.currentPage = -1; - this.scratchCanvas = document.createElement("canvas"); - } - - PDFPrintService.prototype = { - layout: function layout() { - this.throwIfInactive(); - var body = document.querySelector("body"); - body.setAttribute("data-pdfjsprinting", true); - var hasEqualPageSizes = this.pagesOverview.every(function (size) { - return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height; - }, this); - - if (!hasEqualPageSizes) { - console.warn("Not all pages have the same size. The printed " + "result may be incorrect!"); - } - - this.pageStyleSheet = document.createElement("style"); - var pageSize = this.pagesOverview[0]; - this.pageStyleSheet.textContent = "@page { size: " + pageSize.width + "pt " + pageSize.height + "pt;}"; - body.appendChild(this.pageStyleSheet); - }, - destroy: function destroy() { - if (activeService !== this) { - return; - } - - this.printContainer.textContent = ""; - var body = document.querySelector("body"); - body.removeAttribute("data-pdfjsprinting"); - - if (this.pageStyleSheet) { - this.pageStyleSheet.remove(); - this.pageStyleSheet = null; - } - - this.scratchCanvas.width = this.scratchCanvas.height = 0; - this.scratchCanvas = null; - activeService = null; - ensureOverlay().then(function () { - if (overlayManager.active !== "printServiceOverlay") { - return; - } - - overlayManager.close("printServiceOverlay"); - }); - }, - renderPages: function renderPages() { - var _this = this; - - var pageCount = this.pagesOverview.length; - - var renderNextPage = function renderNextPage(resolve, reject) { - _this.throwIfInactive(); - - if (++_this.currentPage >= pageCount) { - renderProgress(pageCount, pageCount, _this.l10n); - resolve(); - return; - } - - var index = _this.currentPage; - renderProgress(index, pageCount, _this.l10n); - renderPage(_this, _this.pdfDocument, index + 1, _this.pagesOverview[index], _this._printResolution, _this._optionalContentConfigPromise).then(_this.useRenderedPage.bind(_this)).then(function () { - renderNextPage(resolve, reject); - }, reject); - }; - - return new Promise(renderNextPage); - }, - useRenderedPage: function useRenderedPage() { - this.throwIfInactive(); - var img = document.createElement("img"); - var scratchCanvas = this.scratchCanvas; - - if ("toBlob" in scratchCanvas && !_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { - scratchCanvas.toBlob(function (blob) { - img.src = URL.createObjectURL(blob); - }); - } else { - img.src = scratchCanvas.toDataURL(); - } - - var wrapper = document.createElement("div"); - wrapper.appendChild(img); - this.printContainer.appendChild(wrapper); - return new Promise(function (resolve, reject) { - img.onload = resolve; - img.onerror = reject; - }); - }, - performPrint: function performPrint() { - var _this2 = this; - - this.throwIfInactive(); - return new Promise(function (resolve) { - setTimeout(function () { - if (!_this2.active) { - resolve(); - return; - } - - print.call(window); - setTimeout(resolve, 20); - }, 0); - }); - }, - - get active() { - return this === activeService; - }, - - throwIfInactive: function throwIfInactive() { - if (!this.active) { - throw new Error("This print request was cancelled or completed."); - } - } - }; - var print = window.print; - - window.print = function () { - if (activeService) { - console.warn("Ignored window.print() because of a pending print job."); - return; - } - - ensureOverlay().then(function () { - if (activeService) { - overlayManager.open("printServiceOverlay"); - } - }); - - try { - dispatchEvent("beforeprint"); - } finally { - if (!activeService) { - console.error("Expected print service to be initialized."); - ensureOverlay().then(function () { - if (overlayManager.active === "printServiceOverlay") { - overlayManager.close("printServiceOverlay"); - } - }); - return; - } - - var activeServiceOnEntry = activeService; - activeService.renderPages().then(function () { - return activeServiceOnEntry.performPrint(); - })["catch"](function () { - }).then(function () { - if (activeServiceOnEntry.active) { - abort(); - } - }); - } - }; - - function dispatchEvent(eventType) { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent(eventType, false, false, "custom"); - window.dispatchEvent(event); - } - - function abort() { - if (activeService) { - activeService.destroy(); - dispatchEvent("afterprint"); - } - } - - function renderProgress(index, total, l10n) { - var progressContainer = document.getElementById("printServiceOverlay"); - var progress = Math.round(100 * index / total); - var progressBar = progressContainer.querySelector("progress"); - var progressPerc = progressContainer.querySelector(".relative-progress"); - progressBar.value = progress; - l10n.get("print_progress_percent", { - progress: progress - }).then(function (msg) { - progressPerc.textContent = msg; - }); - } - - window.addEventListener("keydown", function (event) { - if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { - window.print(); - event.preventDefault(); - - if (event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } else { - event.stopPropagation(); - } - } - }, true); - - if ("onbeforeprint" in window) { - var stopPropagationIfNeeded = function stopPropagationIfNeeded(event) { - if (event.detail !== "custom" && event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } - }; - - window.addEventListener("beforeprint", stopPropagationIfNeeded); - window.addEventListener("afterprint", stopPropagationIfNeeded); - } - - var overlayPromise; - - function ensureOverlay() { - if (!overlayPromise) { - overlayManager = _app.PDFViewerApplication.overlayManager; - - if (!overlayManager) { - throw new Error("The overlay manager has not yet been initialized."); - } - - overlayPromise = overlayManager.register("printServiceOverlay", document.getElementById("printServiceOverlay"), abort, true); - document.getElementById("printCancel").onclick = abort; - } - - return overlayPromise; - } - - _app.PDFPrintServiceFactory.instance = { - supportsPrinting: true, - createPrintService: function createPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, l10n) { - if (activeService) { - throw new Error("The print service is created and active."); - } - - activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, l10n); - return activeService; - } - }; - - /***/ - }) - /******/]); - /************************************************************************/ - /******/ // The module cache - /******/ - var __webpack_module_cache__ = {}; - /******/ - /******/ // The require function - /******/ - function __webpack_require__(moduleId) { - /******/ // Check if module is in cache - /******/ - var cachedModule = __webpack_module_cache__[moduleId]; - /******/ - if (cachedModule !== undefined) { - /******/ - return cachedModule.exports; - /******/ - } - /******/ // Create a new module (and put it into the cache) - /******/ - var module = __webpack_module_cache__[moduleId] = { - /******/ id: moduleId, - /******/ loaded: false, - /******/ exports: {} - /******/ - }; - /******/ - /******/ // Execute the module function - /******/ - __webpack_modules__[moduleId](module, module.exports, __webpack_require__); - /******/ - /******/ // Flag the module as loaded - /******/ - module.loaded = true; - /******/ - /******/ // Return the exports of the module - /******/ - return module.exports; - /******/ - } - - /******/ - /************************************************************************/ - /******/ /* webpack/runtime/node module decorator */ - /******/ - (() => { - /******/ - __webpack_require__.nmd = (module) => { - /******/ - module.paths = []; - /******/ - if (!module.children) module.children = []; - /******/ - return module; - /******/ - }; - /******/ - })(); - /******/ - /************************************************************************/ - var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. - (() => { - var exports = __webpack_exports__; - - - Object.defineProperty(exports, "__esModule", ({ - value: true - })); - Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ - enumerable: true, - get: function get() { - return _app_options.AppOptions; - } - })); - Object.defineProperty(exports, "PDFViewerApplication", ({ - enumerable: true, - get: function get() { - return _app.PDFViewerApplication; - } - })); - - var _app_options = __webpack_require__(1); - - var _app = __webpack_require__(3); - - var pdfjsVersion = '2.8.335'; - var pdfjsBuild = '228adbf67'; - window.PDFViewerApplication = _app.PDFViewerApplication; - window.PDFViewerApplicationOptions = _app_options.AppOptions; - ; - ; - { - __webpack_require__(40); - } - ; - { - __webpack_require__(46); - } - - function getViewerConfiguration() { - var errorWrapper = null; - errorWrapper = { - container: document.getElementById("errorWrapper"), - errorMessage: document.getElementById("errorMessage"), - closeButton: document.getElementById("errorClose"), - errorMoreInfo: document.getElementById("errorMoreInfo"), - moreInfoButton: document.getElementById("errorShowMore"), - lessInfoButton: document.getElementById("errorShowLess") - }; - return { - appContainer: document.body, - mainContainer: document.getElementById("viewerContainer"), - viewerContainer: document.getElementById("viewer"), - eventBus: null, - toolbar: { - container: document.getElementById("toolbarViewer"), - numPages: document.getElementById("numPages"), - pageNumber: document.getElementById("pageNumber"), - scaleSelectContainer: document.getElementById("scaleSelectContainer"), - scaleSelect: document.getElementById("scaleSelect"), - customScaleOption: document.getElementById("customScaleOption"), - previous: document.getElementById("previous"), - next: document.getElementById("next"), - zoomIn: document.getElementById("zoomIn"), - zoomOut: document.getElementById("zoomOut"), - viewFind: document.getElementById("viewFind"), - openFile: document.getElementById("openFile"), - print: document.getElementById("print"), - presentationModeButton: document.getElementById("presentationMode"), - download: document.getElementById("download"), - viewBookmark: document.getElementById("viewBookmark") - }, - secondaryToolbar: { - toolbar: document.getElementById("secondaryToolbar"), - toggleButton: document.getElementById("secondaryToolbarToggle"), - toolbarButtonContainer: document.getElementById("secondaryToolbarButtonContainer"), - presentationModeButton: document.getElementById("secondaryPresentationMode"), - openFileButton: document.getElementById("secondaryOpenFile"), - printButton: document.getElementById("secondaryPrint"), - downloadButton: document.getElementById("secondaryDownload"), - viewBookmarkButton: document.getElementById("secondaryViewBookmark"), - firstPageButton: document.getElementById("firstPage"), - lastPageButton: document.getElementById("lastPage"), - pageRotateCwButton: document.getElementById("pageRotateCw"), - pageRotateCcwButton: document.getElementById("pageRotateCcw"), - cursorSelectToolButton: document.getElementById("cursorSelectTool"), - cursorHandToolButton: document.getElementById("cursorHandTool"), - scrollVerticalButton: document.getElementById("scrollVertical"), - scrollHorizontalButton: document.getElementById("scrollHorizontal"), - scrollWrappedButton: document.getElementById("scrollWrapped"), - spreadNoneButton: document.getElementById("spreadNone"), - spreadOddButton: document.getElementById("spreadOdd"), - spreadEvenButton: document.getElementById("spreadEven"), - documentPropertiesButton: document.getElementById("documentProperties") - }, - sidebar: { - outerContainer: document.getElementById("outerContainer"), - viewerContainer: document.getElementById("viewerContainer"), - toggleButton: document.getElementById("sidebarToggle"), - thumbnailButton: document.getElementById("viewThumbnail"), - outlineButton: document.getElementById("viewOutline"), - attachmentsButton: document.getElementById("viewAttachments"), - layersButton: document.getElementById("viewLayers"), - thumbnailView: document.getElementById("thumbnailView"), - outlineView: document.getElementById("outlineView"), - attachmentsView: document.getElementById("attachmentsView"), - layersView: document.getElementById("layersView"), - outlineOptionsContainer: document.getElementById("outlineOptionsContainer"), - currentOutlineItemButton: document.getElementById("currentOutlineItem") - }, - sidebarResizer: { - outerContainer: document.getElementById("outerContainer"), - resizer: document.getElementById("sidebarResizer") - }, - findBar: { - bar: document.getElementById("findbar"), - toggleButton: document.getElementById("viewFind"), - findField: document.getElementById("findInput"), - highlightAllCheckbox: document.getElementById("findHighlightAll"), - caseSensitiveCheckbox: document.getElementById("findMatchCase"), - entireWordCheckbox: document.getElementById("findEntireWord"), - findMsg: document.getElementById("findMsg"), - findResultsCount: document.getElementById("findResultsCount"), - findPreviousButton: document.getElementById("findPrevious"), - findNextButton: document.getElementById("findNext") - }, - passwordOverlay: { - overlayName: "passwordOverlay", - container: document.getElementById("passwordOverlay"), - label: document.getElementById("passwordText"), - input: document.getElementById("password"), - submitButton: document.getElementById("passwordSubmit"), - cancelButton: document.getElementById("passwordCancel") - }, - documentProperties: { - overlayName: "documentPropertiesOverlay", - container: document.getElementById("documentPropertiesOverlay"), - closeButton: document.getElementById("documentPropertiesClose"), - fields: { - fileName: document.getElementById("fileNameField"), - fileSize: document.getElementById("fileSizeField"), - title: document.getElementById("titleField"), - author: document.getElementById("authorField"), - subject: document.getElementById("subjectField"), - keywords: document.getElementById("keywordsField"), - creationDate: document.getElementById("creationDateField"), - modificationDate: document.getElementById("modificationDateField"), - creator: document.getElementById("creatorField"), - producer: document.getElementById("producerField"), - version: document.getElementById("versionField"), - pageCount: document.getElementById("pageCountField"), - pageSize: document.getElementById("pageSizeField"), - linearized: document.getElementById("linearizedField") - } - }, - errorWrapper: errorWrapper, - printContainer: document.getElementById("printContainer"), - openFileInputName: "fileInput", - debuggerScriptPath: "./debugger.js" - }; - } - - function webViewerLoad() { - var config = getViewerConfiguration(); - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("webviewerloaded", true, true, { - source: window - }); - - try { - parent.document.dispatchEvent(event); - } catch (ex) { - console.error("webviewerloaded: ".concat(ex)); - document.dispatchEvent(event); - } - - _app.PDFViewerApplication.run(config); - } - - if (document.blockUnblockOnload) { - document.blockUnblockOnload(true); - } - - if (document.readyState === "interactive" || document.readyState === "complete") { - webViewerLoad(); - } else { - document.addEventListener("DOMContentLoaded", webViewerLoad, true); - } - })(); - - /******/ -})() -; -//# sourceMappingURL=viewer.js.map \ No newline at end of file diff --git a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/viewer.js.map b/java/lc-mecha-javafx/src/main/resources/pdfjs/web/viewer.js.map deleted file mode 100644 index 6593ddf008b8390521e6f5fc11bf9299902da617..0000000000000000000000000000000000000000 --- a/java/lc-mecha-javafx/src/main/resources/pdfjs/web/viewer.js.map +++ /dev/null @@ -1,1697 +0,0 @@ -{ - "version": 3, - "sources": [ - "webpack://pdf.js/web/app_options.js", - "webpack://pdf.js/web/viewer_compatibility.js", - "webpack://pdf.js/web/app.js", - "webpack://pdf.js/node_modules/@babel/runtime/regenerator/index.js", - "webpack://pdf.js/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js", - "webpack://pdf.js/web/ui_utils.js", - "webpack://pdf.js/web/pdfjs.js", - "webpack://pdf.js/web/pdf_cursor_tools.js", - "webpack://pdf.js/web/grab_to_pan.js", - "webpack://pdf.js/web/pdf_rendering_queue.js", - "webpack://pdf.js/web/overlay_manager.js", - "webpack://pdf.js/web/password_prompt.js", - "webpack://pdf.js/web/pdf_attachment_viewer.js", - "webpack://pdf.js/web/base_tree_viewer.js", - "webpack://pdf.js/web/pdf_document_properties.js", - "webpack://pdf.js/web/pdf_find_bar.js", - "webpack://pdf.js/web/pdf_find_controller.js", - "webpack://pdf.js/web/pdf_find_utils.js", - "webpack://pdf.js/web/pdf_history.js", - "webpack://pdf.js/web/pdf_layer_viewer.js", - "webpack://pdf.js/web/pdf_link_service.js", - "webpack://pdf.js/web/pdf_outline_viewer.js", - "webpack://pdf.js/web/pdf_presentation_mode.js", - "webpack://pdf.js/web/pdf_scripting_manager.js", - "webpack://pdf.js/web/pdf_sidebar.js", - "webpack://pdf.js/web/pdf_sidebar_resizer.js", - "webpack://pdf.js/web/pdf_thumbnail_viewer.js", - "webpack://pdf.js/web/pdf_thumbnail_view.js", - "webpack://pdf.js/web/pdf_viewer.js", - "webpack://pdf.js/web/base_viewer.js", - "webpack://pdf.js/web/annotation_layer_builder.js", - "webpack://pdf.js/web/l10n_utils.js", - "webpack://pdf.js/web/pdf_page_view.js", - "webpack://pdf.js/web/text_layer_builder.js", - "webpack://pdf.js/web/xfa_layer_builder.js", - "webpack://pdf.js/web/secondary_toolbar.js", - "webpack://pdf.js/web/pdf_single_page_viewer.js", - "webpack://pdf.js/web/toolbar.js", - "webpack://pdf.js/web/view_history.js", - "webpack://pdf.js/web/genericcom.js", - "webpack://pdf.js/web/preferences.js", - "webpack://pdf.js/web/download_manager.js", - "webpack://pdf.js/web/genericl10n.js", - "webpack://pdf.js/external/webL10n/l10n.js", - "webpack://pdf.js/web/generic_scripting.js", - "webpack://pdf.js/web/pdf_print_service.js", - "webpack://pdf.js/webpack/bootstrap", - "webpack://pdf.js/webpack/runtime/node module decorator", - "webpack://pdf.js/web/viewer.js" - ], - "names": [ - "OptionKind", - "VIEWER", - "API", - "WORKER", - "PREFERENCE", - "defaultOptions", - "cursorToolOnLoad", - "value", - "kind", - "defaultUrl", - "defaultZoomValue", - "disableHistory", - "disablePageLabels", - "enablePermissions", - "enablePrintAutoRotate", - "enableScripting", - "enableWebGL", - "externalLinkRel", - "externalLinkTarget", - "historyUpdateUrl", - "ignoreDestinationZoom", - "imageResourcesPath", - "maxCanvasPixels", - "compatibility", - "viewerCompatibilityParams", - "pdfBugEnabled", - "printResolution", - "renderer", - "renderInteractiveForms", - "sidebarViewOnLoad", - "scrollModeOnLoad", - "spreadModeOnLoad", - "textLayerMode", - "useOnlyCssZoom", - "viewerCssTheme", - "viewOnLoad", - "cMapPacked", - "cMapUrl", - "disableAutoFetch", - "disableFontFace", - "disableRange", - "disableStream", - "docBaseUrl", - "enableXfa", - "fontExtraProperties", - "isEvalSupported", - "maxImageSize", - "pdfBug", - "verbosity", - "workerPort", - "workerSrc", - "navigator", - "userOptions", - "Object", - "constructor", - "userOption", - "defaultOption", - "options", - "valueType", - "Number", - "compatibilityParams", - "userAgent", - "platform", - "maxTouchPoints", - "isAndroid", - "isIOS", - "isIOSChrome", - "DEFAULT_SCALE_DELTA", - "DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT", - "FORCE_PAGES_LOADED_TIMEOUT", - "WHEEL_ZOOM_DISABLED_TIMEOUT", - "ENABLE_PERMISSIONS_CLASS", - "ViewOnLoad", - "UNKNOWN", - "PREVIOUS", - "INITIAL", - "ViewerCssTheme", - "AUTOMATIC", - "LIGHT", - "DARK", - "KNOWN_VERSIONS", - "KNOWN_GENERATORS", - "shadow", - "ctrlKey", - "metaKey", - "PDFViewerApplication", - "initialBookmark", - "document", - "_initializedCapability", - "fellback", - "appConfig", - "pdfDocument", - "pdfLoadingTask", - "printService", - "pdfViewer", - "pdfThumbnailViewer", - "pdfRenderingQueue", - "pdfPresentationMode", - "pdfDocumentProperties", - "pdfLinkService", - "pdfHistory", - "pdfSidebar", - "pdfSidebarResizer", - "pdfOutlineViewer", - "pdfAttachmentViewer", - "pdfLayerViewer", - "pdfCursorTools", - "pdfScriptingManager", - "store", - "downloadManager", - "overlayManager", - "preferences", - "toolbar", - "secondaryToolbar", - "eventBus", - "l10n", - "isInitialViewSet", - "downloadComplete", - "isViewerEmbedded", - "window", - "url", - "baseUrl", - "externalServices", - "_boundEvents", - "documentInfo", - "metadata", - "_contentDispositionFilename", - "_contentLength", - "triggerDelayedFallback", - "_saveInProgress", - "_wheelUnusedTicks", - "_idleCallbacks", - "AppOptions", - "LinkTarget", - "appContainer", - "source", - "console", - "reason", - "hash", - "hashParams", - "parseQueryString", - "waitOn", - "loadFakeWorker", - "TextLayerMode", - "viewer", - "enabled", - "loadAndEnablePDFBug", - "locale", - "dir", - "_forceCssTheme", - "cssTheme", - "styleSheet", - "cssRules", - "i", - "ii", - "rule", - "darkRules", - "isInAutomation", - "findController", - "linkService", - "sandboxBundleSrc", - "scriptingFactory", - "docPropertiesLookup", - "container", - "renderingQueue", - "scriptingManager", - "elements", - "run", - "zoomIn", - "newScale", - "Math", - "zoomOut", - "zoomReset", - "PDFPrintServiceFactory", - "doc", - "support", - "bar", - "initPassiveLoading", - "setTitleUsingUrl", - "title", - "getPdfFilenameFromUrl", - "decodeURIComponent", - "getFilenameFromUrl", - "setTitle", - "_cancelIdleCallbacks", - "sourceEventType", - "promises", - "webViewerResetPermissions", - "PDFBug", - "Promise", - "workerParameters", - "GlobalWorkerOptions", - "parameters", - "file", - "apiParameters", - "key", - "args", - "loadingTask", - "getDocument", - "loaded", - "exception", - "msg", - "message", - "_ensureDownloadComplete", - "filename", - "data", - "blob", - "type", - "downloadOrSave", - "_delayedFallback", - "featureId", - "fallback", - "UNSUPPORTED_FEATURES", - "download", - "_documentError", - "moreInfo", - "_otherError", - "moreInfoText", - "version", - "build", - "stack", - "line", - "errorWrapperConfig", - "errorWrapper", - "errorMessage", - "closeButton", - "errorMoreInfo", - "moreInfoButton", - "lessInfoButton", - "parts", - "progress", - "percent", - "level", - "isNaN", - "clearTimeout", - "load", - "firstPagePromise", - "pageLayoutPromise", - "pageModePromise", - "openActionPromise", - "baseDocumentUrl", - "storedPromise", - "page", - "zoom", - "scrollLeft", - "scrollTop", - "rotation", - "sidebarView", - "SidebarView", - "scrollMode", - "ScrollMode", - "spreadMode", - "SpreadMode", - "pdfPage", - "fingerprint", - "initialDest", - "openAction", - "stored", - "parseInt", - "pageMode", - "apiPageModeToSidebarView", - "pageLayout", - "apiPageLayoutToSpreadMode", - "resolve", - "setTimeout", - "pagesPromise", - "onePageRendered", - "outline", - "attachments", - "optionalContentConfig", - "callback", - "timeout", - "once", - "baseURL", - "filesize", - "authors", - "numPages", - "URL", - "markInfo", - "tagged", - "triggerAutoPrint", - "javaScript", - "js", - "AutoPrintRegExp", - "info", - "pdfTitle", - "metadataTitle", - "contentDispositionFilename", - "versionId", - "generatorId", - "producer", - "generator", - "formType", - "labels", - "numLabels", - "_initializePdfHistory", - "resetHistory", - "updateUrl", - "JSON", - "explicitDest", - "pageNumber", - "permissions", - "PermissionFlag", - "_initializeAnnotationStorageCallbacks", - "annotationStorage", - "setInitialView", - "setRotation", - "angle", - "isValidRotation", - "setViewerModes", - "isValidScrollMode", - "isValidSpreadMode", - "_cleanup", - "RendererType", - "forceRendering", - "beforePrint", - "pagesOverview", - "printContainer", - "optionalContentConfigPromise", - "afterPrint", - "rotatePages", - "requestPresentationMode", - "triggerPrinting", - "bindEvents", - "bindWindowEvents", - "event", - "detail", - "passive", - "unbindEvents", - "unbindWindowEvents", - "accumulateWheelTicks", - "ticks", - "wholeTicks", - "_unblockDocumentLoadEvent", - "HOSTED_VIEWER_ORIGINS", - "validateFileURL", - "viewerOrigin", - "origin", - "protocol", - "ex", - "loadScript", - "PDFWorker", - "OPS", - "Stats", - "pageView", - "pageStats", - "queryString", - "params", - "fileInput", - "files", - "evt", - "webViewerOpenFileViaURL", - "thumbnailView", - "timestamp", - "stats", - "view", - "webViewerSave", - "location", - "href", - "currentPage", - "loading", - "RenderingStates", - "currentScaleValue", - "webViewerFileInputChange", - "originalUrl", - "fileReader", - "buffer", - "webViewerOpenFile", - "openFileInputName", - "query", - "phraseSearch", - "caseSensitive", - "entireWord", - "highlightAll", - "findPrevious", - "result", - "matchesCount", - "rawQuery", - "setZoomDisabledTimeout", - "zoomDisabledTimeout", - "supportedMouseWheelZoomModifierKeys", - "previousScale", - "delta", - "normalizeWheelEventDirection", - "WheelEvent", - "PIXELS_PER_LINE_SCALE", - "currentScale", - "scaleCorrectionFactor", - "rect", - "dx", - "dy", - "handled", - "ensureViewerFocused", - "cmd", - "isViewerInPresentationMode", - "findState", - "curElement", - "curElementTagName", - "turnPage", - "turnOnlyIfPageFit", - "CursorTool", - "instance", - "supportsPrinting", - "createPrintService", - "module", - "runtime", - "Op", - "hasOwn", - "$Symbol", - "iteratorSymbol", - "asyncIteratorSymbol", - "toStringTagSymbol", - "enumerable", - "configurable", - "writable", - "obj", - "define", - "protoGenerator", - "outerFn", - "context", - "tryLocsList", - "makeInvokeMethod", - "exports", - "arg", - "fn", - "GenStateSuspendedStart", - "GenStateSuspendedYield", - "GenStateExecuting", - "GenStateCompleted", - "ContinueSentinel", - "IteratorPrototype", - "getProto", - "NativeIteratorPrototype", - "values", - "Gp", - "GeneratorFunctionPrototype", - "Generator", - "GeneratorFunction", - "ctor", - "genFun", - "__await", - "record", - "tryCatch", - "reject", - "invoke", - "previousPromise", - "callInvokeWithMethodAndArg", - "defineIteratorMethods", - "AsyncIterator", - "PromiseImpl", - "iter", - "wrap", - "state", - "method", - "doneResult", - "delegate", - "delegateResult", - "maybeInvokeDelegate", - "done", - "entry", - "tryLoc", - "locs", - "keys", - "next", - "iteratorMethod", - "iterable", - "Context", - "reset", - "name", - "stop", - "rootEntry", - "rootRecord", - "dispatchException", - "handle", - "hasCatch", - "hasFinally", - "abrupt", - "finallyEntry", - "complete", - "finish", - "resetTryEntry", - "thrown", - "delegateYield", - "iterator", - "resultName", - "nextLoc", - "regeneratorRuntime", - "Function", - "CSS_UNITS", - "DEFAULT_SCALE_VALUE", - "DEFAULT_SCALE", - "MIN_SCALE", - "MAX_SCALE", - "UNKNOWN_SCALE", - "MAX_AUTO_SCALE", - "SCROLLBAR_PADDING", - "VERTICAL_PADDING", - "LOADINGBAR_END_OFFSET_VAR", - "PresentationModeState", - "NORMAL", - "CHANGING", - "FULLSCREEN", - "NONE", - "THUMBS", - "OUTLINE", - "ATTACHMENTS", - "LAYERS", - "CANVAS", - "SVG", - "DISABLE", - "ENABLE", - "ENABLE_ENHANCE", - "VERTICAL", - "HORIZONTAL", - "WRAPPED", - "ODD", - "EVEN", - "devicePixelRatio", - "backingStoreRatio", - "ctx", - "pixelRatio", - "sx", - "sy", - "scaled", - "skipOverflowHiddenElements", - "parent", - "element", - "offsetY", - "offsetX", - "getComputedStyle", - "spot", - "debounceScroll", - "rAF", - "currentX", - "viewAreaElement", - "lastX", - "currentY", - "lastY", - "right", - "down", - "_eventHandler", - "param", - "minIndex", - "maxIndex", - "items", - "condition", - "currentIndex", - "currentItem", - "xinv", - "limit", - "x_", - "x", - "a", - "b", - "c", - "d", - "p", - "q", - "r", - "changeOrientation", - "rotate", - "width", - "height", - "index", - "elt", - "views", - "pageTop", - "sortByVisibility", - "horizontal", - "rtl", - "top", - "scrollEl", - "bottom", - "left", - "elementBottom", - "elementLeft", - "elementRight", - "visible", - "numViews", - "firstVisibleElementInd", - "binarySearchFirstItem", - "backtrackBeforeAllVisibleElements", - "lastEdge", - "currentWidth", - "currentHeight", - "viewWidth", - "viewHeight", - "viewRight", - "viewBottom", - "hiddenHeight", - "hiddenWidth", - "fractionHeight", - "fractionWidth", - "id", - "y", - "widthPercent", - "first", - "last", - "pc", - "MOUSE_DOM_DELTA_PIXEL_MODE", - "MOUSE_DOM_DELTA_LINE_MODE", - "MOUSE_PIXELS_PER_LINE", - "MOUSE_LINES_PER_PAGE", - "mode", - "size", - "WaitOnType", - "EVENT", - "TIMEOUT", - "delay", - "target", - "eventHandler", - "handler", - "timeoutHandler", - "animationStarted", - "on", - "external", - "off", - "dispatch", - "eventListeners", - "Array", - "listener", - "externalListeners", - "_on", - "_off", - "units", - "_updateBar", - "progressSize", - "clamp", - "setWidth", - "scrollbarWidth", - "hide", - "show", - "moved", - "len", - "arr", - "write", - "read", - "curRoot", - "curActiveOrFocused", - "pdfjsLib", - "__non_webpack_require__", - "SELECT", - "HAND", - "ZOOM", - "switchTool", - "tool", - "disableActiveTool", - "_dispatchEvent", - "_addEventListeners", - "previouslyActive", - "overlay", - "GrabToPan", - "CSS_CLASS_GRAB", - "activate", - "deactivate", - "toggle", - "ignoreTarget", - "node", - "_onmousedown", - "focusedElement", - "_onmousemove", - "isLeftMouseReleased", - "xDiff", - "yDiff", - "behavior", - "_endPan", - "chrome", - "isChrome15OrOpera15plus", - "isSafari6plus", - "CLEANUP_TIMEOUT", - "RUNNING", - "PAUSED", - "FINISHED", - "setViewer", - "setThumbnailViewer", - "isHighestPriority", - "renderHighestPriority", - "getHighestPriority", - "visibleViews", - "numVisible", - "nextPageIndex", - "previousPageIndex", - "isViewFinished", - "renderView", - "callerCloseMethod", - "canForceClose", - "_keyDown", - "_closeThroughCaller", - "e", - "passwordIncorrect", - "PasswordResponses", - "close", - "verify", - "password", - "setUpdateCallback", - "keepRenderedCapability", - "attachmentsCount", - "_bindLink", - "render", - "names", - "fragment", - "item", - "content", - "div", - "_appendAttachment", - "renderedPromise", - "TREEITEM_OFFSET_TOP", - "TREEITEM_SELECTED_CLASS", - "_normalizeTextContent", - "removeNullCharacters", - "_addToggleButton", - "hidden", - "toggler", - "shouldShowAll", - "_toggleTreeItem", - "root", - "_toggleAllTreeItems", - "_finishRendering", - "hasAnyNesting", - "_updateCurrentTreeItem", - "treeItem", - "_scrollToCurrentTreeItem", - "currentNode", - "DEFAULT_FIELD_CONTENT", - "NON_METRIC_LOCALES", - "US_PAGE_NAMES", - "METRIC_PAGE_NAMES", - "isPortrait", - "pageNames", - "freezeFieldData", - "currentPageNumber", - "pagesRotation", - "getPageSizeInches", - "fileName", - "fileSize", - "author", - "subject", - "keywords", - "creationDate", - "modificationDate", - "creator", - "pageCount", - "pageSize", - "linearized", - "_currentPageNumber", - "_pagesRotation", - "contentLength", - "setDocument", - "_reset", - "_updateUI", - "kb", - "mb", - "size_mb", - "size_kb", - "size_b", - "pageSizeInches", - "isPortraitOrientation", - "sizeInches", - "sizeMillimeters", - "rawName", - "getPageName", - "exactMillimeters", - "intMillimeters", - "unit", - "orientation", - "dateObject", - "PDFDateString", - "date", - "time", - "_parseLinearization", - "isLinearized", - "MATCHES_COUNT_LIMIT", - "dispatchEvent", - "updateUIState", - "findMsg", - "status", - "FindState", - "previous", - "updateResultsCount", - "current", - "total", - "matchCountMsg", - "open", - "_adjustWidth", - "findbarHeight", - "inputContainerHeight", - "FOUND", - "NOT_FOUND", - "PENDING", - "FIND_TIMEOUT", - "MATCH_SCROLL_OFFSET_TOP", - "MATCH_SCROLL_OFFSET_LEFT", - "CHARACTERS_TO_NORMALIZE", - "normalizationRegex", - "replace", - "diffs", - "normalizedText", - "normalizedCh", - "diff", - "ch", - "totalDiff", - "matchIndex", - "executeCommand", - "findbarClosed", - "pendingTimeout", - "scrollMatchIntoView", - "pageIndex", - "scrollIntoView", - "pageIdx", - "matchIdx", - "wrapped", - "normalize", - "_shouldDirtyMatch", - "_prepareMatches", - "currentElem", - "matchesWithLength", - "nextElem", - "prevElem", - "isSubTerm", - "matches", - "matchesLength", - "_isEntireWord", - "startIdx", - "getCharacterType", - "endIdx", - "_calculatePhraseMatch", - "queryLen", - "pageContent", - "originalMatchIdx", - "getOriginalIndex", - "matchEnd", - "originalQueryLen", - "_calculateWordMatch", - "queryArray", - "subquery", - "subqueryLen", - "match", - "matchLength", - "skipped", - "_calculateMatch", - "pageDiffs", - "pageMatchesCount", - "_extractText", - "promise", - "extractTextCapability", - "normalizeWhitespace", - "textContent", - "textItems", - "strBuf", - "j", - "jj", - "_updatePage", - "_updateAllPages", - "_nextMatch", - "currentPageIndex", - "offset", - "numPageMatches", - "_matchesReady", - "numMatches", - "_nextPageMatch", - "_advanceOffsetPage", - "_updateMatch", - "found", - "previousPage", - "_onFindBarClose", - "_requestMatchesCount", - "_updateUIResultsCount", - "_updateUIState", - "CharacterType", - "SPACE", - "ALPHA_LETTER", - "PUNCT", - "HAN_LETTER", - "KATAKANA_LETTER", - "HIRAGANA_LETTER", - "HALFWIDTH_KATAKANA_LETTER", - "THAI_LETTER", - "charCode", - "isAlphabeticalScript", - "isAscii", - "isAsciiSpace", - "isAsciiAlpha", - "isAsciiDigit", - "isThai", - "isHan", - "isKatakana", - "isHiragana", - "isHalfwidthKatakana", - "HASH_CHANGE_TIMEOUT", - "POSITION_UPDATED_THRESHOLD", - "UPDATE_VIEWAREA_TIMEOUT", - "initialize", - "reInitialized", - "getCurrentHash", - "destination", - "push", - "namedDest", - "forceReplace", - "isDestArraysEqual", - "dest", - "pushPage", - "pushCurrentPosition", - "back", - "forward", - "_pushOrReplaceState", - "shouldReplace", - "newState", - "uid", - "newUrl", - "_tryPushCurrentPosition", - "temporary", - "position", - "_isValidPage", - "val", - "_isValidState", - "checkReload", - "performance", - "perfEntry", - "_updateInternalState", - "removeTemporary", - "_parseCurrentHash", - "checkNameddest", - "unescape", - "nameddest", - "_updateViewarea", - "_popState", - "newHash", - "hashChanged", - "waitOnEventOrTimeout", - "_pageHide", - "_bindEvents", - "updateViewarea", - "popState", - "pageHide", - "_unbindEvents", - "destHash", - "second", - "isEntryEqual", - "firstDest", - "secondDest", - "layersCount", - "setVisibility", - "input", - "groups", - "queue", - "levelData", - "itemsDiv", - "groupId", - "group", - "label", - "externalLinkEnabled", - "setHistory", - "navigateTo", - "_goToDestinationHelper", - "destRef", - "destArray", - "goToPage", - "getDestinationHash", - "escape", - "str", - "getAnchorUrl", - "setHash", - "zoomArgs", - "zoomArg", - "zoomArgNumber", - "parseFloat", - "allowNegativeOffset", - "isValidExplicitDestination", - "executeNamedAction", - "action", - "cachePageRef", - "refStr", - "pageRef", - "_cachedPageNumber", - "isPageVisible", - "isPageCached", - "destLength", - "allowNull", - "outlineCount", - "enableCurrentOutlineItemButton", - "addLinkAttributes", - "newWindow", - "rel", - "_setStyles", - "count", - "totalCount", - "nestedCount", - "nestedItems", - "pageNumberToDestHash", - "linkElement", - "pageNumberNesting", - "nesting", - "currentNesting", - "DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS", - "DELAY_BEFORE_HIDING_CONTROLS", - "ACTIVE_SELECTOR", - "CONTROLS_SELECTOR", - "MOUSE_SCROLL_COOLDOWN_TIME", - "PAGE_SWITCH_THRESHOLD", - "SWIPE_MIN_DISTANCE_THRESHOLD", - "SWIPE_ANGLE_THRESHOLD", - "request", - "Element", - "_mouseWheel", - "normalizeWheelEventDelta", - "currentTime", - "Date", - "storedTime", - "totalDelta", - "success", - "_notifyStateChange", - "_setSwitchInProgress", - "_resetSwitchInProgress", - "_enter", - "_exit", - "_mouseDown", - "isInternalLink", - "_contextMenu", - "_showControls", - "_hideControls", - "_resetMouseScrollState", - "_touchSwipe", - "startX", - "startY", - "endX", - "endY", - "absAngle", - "_addWindowListeners", - "_removeWindowListeners", - "_fullscreenChange", - "_addFullscreenChangeListeners", - "_removeFullscreenChangeListeners", - "docProperties", - "objects", - "calculationOrder", - "appInfo", - "language", - "docInfo", - "actions", - "error", - "isInPresentationMode", - "visitedPages", - "actionsPromise", - "_createScripting", - "UI_NOTIFICATION_CLASS", - "switchView", - "forceOpen", - "_switchView", - "isViewChanged", - "shouldForceRendering", - "_forceRendering", - "_updateThumbnailViewer", - "pagesCount", - "_showUINotification", - "_hideUINotification", - "onTreeLoaded", - "button", - "SIDEBAR_WIDTH_VAR", - "SIDEBAR_MIN_WIDTH", - "SIDEBAR_RESIZING_CLASS", - "_updateWidth", - "maxWidth", - "_mouseMove", - "_mouseUp", - "updated", - "THUMBNAIL_SCROLL_MARGIN", - "THUMBNAIL_SELECTED_CLASS", - "watchScroll", - "_scrollUpdated", - "getThumbnail", - "_getVisibleThumbs", - "scrollThumbnailIntoView", - "prevThumbnailView", - "visibleThumbs", - "numVisibleThumbs", - "shouldScroll", - "cleanup", - "TempImageFactory", - "_resetView", - "firstPdfPage", - "viewport", - "scale", - "checkSetImageDisabled", - "pageNum", - "thumbnail", - "defaultViewport", - "disableCanvasToImageConversion", - "firstThumbnailView", - "_cancelRendering", - "setPageLabels", - "_ensurePdfPageLoaded", - "thumbView", - "MAX_NUM_SCALING_STEPS", - "THUMBNAIL_CANVAS_BORDER_WIDTH", - "THUMBNAIL_WIDTH", - "tempCanvasCache", - "getCanvas", - "tempCanvas", - "alpha", - "destroyCanvas", - "anchor", - "ring", - "borderAdjustment", - "setPdfPage", - "totalRotation", - "childNodes", - "update", - "cancelRendering", - "_getPageDrawContext", - "canvas", - "outputScale", - "getOutputScale", - "transform", - "_convertCanvasToImage", - "className", - "image", - "draw", - "finishRenderTask", - "renderTask", - "drawViewport", - "renderContinueCallback", - "cont", - "renderContext", - "canvasContext", - "resultPromise", - "pageCached", - "setImage", - "img", - "reducedWidth", - "reducedHeight", - "reducedImage", - "reducedImageCtx", - "setPageLabel", - "_scrollIntoView", - "pageSpot", - "pageDiv", - "_getVisiblePages", - "_updateHelper", - "currentId", - "stillFullyVisible", - "visiblePages", - "DEFAULT_CACHE_SIZE", - "pageIdsToKeep", - "iMax", - "pagesToKeep", - "moveToEndOfArray", - "viewerVersion", - "getPageView", - "_setCurrentPageNumber", - "resetCurrentPageView", - "pageLabel", - "_onePageRenderedOrForceFetch", - "isPureXfa", - "textLayerFactory", - "xfaLayerFactory", - "annotationLayerFactory", - "firstPageView", - "getPagesLeft", - "_scrollUpdate", - "_setScaleUpdatePages", - "noScroll", - "preset", - "newValue", - "isSameScale", - "presetValue", - "_setScale", - "noPadding", - "hPadding", - "vPadding", - "pageWidthScale", - "pageHeightScale", - "horizontalScale", - "_resetCurrentPageView", - "pageLabelToPageNumber", - "scrollPageIntoView", - "pageWidth", - "pageHeight", - "widthScale", - "heightScale", - "boundingRect", - "_updateLocation", - "normalizedScaleValue", - "firstPage", - "pdfOpenParams", - "currentPageView", - "topLeft", - "intLeft", - "intTop", - "numVisiblePages", - "newCacheSize", - "containsElement", - "focus", - "_getCurrentVisiblePage", - "currentlyVisiblePages", - "scrollAhead", - "createTextLayerBuilder", - "enhanceTextSelection", - "textLayerDiv", - "createAnnotationLayerBuilder", - "hasJSActionsPromise", - "mouseState", - "createXfaLayerBuilder", - "getPagesOverview", - "_updateScrollMode", - "_updateSpreadMode", - "pages", - "parity", - "spread", - "_getPageAdvance", - "yArray", - "expectedId", - "firstId", - "lastId", - "nextPage", - "advance", - "intent", - "hasJSActions", - "annotations", - "dontFlip", - "AnnotationLayer", - "cancel", - "DEFAULT_L10N_STRINGS", - "of_pages", - "page_of_pages", - "document_properties_kb", - "document_properties_mb", - "document_properties_date_string", - "document_properties_page_size_unit_inches", - "document_properties_page_size_unit_millimeters", - "document_properties_page_size_orientation_portrait", - "document_properties_page_size_orientation_landscape", - "document_properties_page_size_name_a3", - "document_properties_page_size_name_a4", - "document_properties_page_size_name_letter", - "document_properties_page_size_name_legal", - "document_properties_page_size_dimension_string", - "document_properties_page_size_dimension_name_string", - "document_properties_linearized_yes", - "document_properties_linearized_no", - "print_progress_percent", - "additional_layers", - "page_landmark", - "thumb_page_title", - "thumb_page_canvas", - "find_reached_top", - "find_reached_bottom", - "find_not_found", - "error_version_info", - "error_message", - "error_stack", - "error_file", - "error_line", - "rendering_error", - "page_scale_width", - "page_scale_fit", - "page_scale_auto", - "page_scale_actual", - "page_scale_percent", - "loading_error", - "invalid_file_error", - "missing_file_error", - "unexpected_response_error", - "printing_not_supported", - "printing_not_ready", - "web_fonts_disabled", - "NullL10n", - "getL10nFallback", - "formatL10nValue", - "MAX_CANVAS_PIXELS", - "destroy", - "_resetZoomLayer", - "removeFromDOM", - "zoomLayerCanvas", - "keepZoomLayer", - "keepAnnotations", - "currentZoomLayerNode", - "currentAnnotationNode", - "currentXfaLayerNode", - "cssTransform", - "isScalingRestricted", - "redrawAnnotations", - "relativeRotation", - "absRotation", - "scaleX", - "scaleY", - "textLayerViewport", - "textRelativeRotation", - "textAbsRotation", - "transX", - "transY", - "getPagePoint", - "canvasWrapper", - "textLayer", - "finishPaintTask", - "paintTask", - "readableStream", - "paintOnCanvas", - "renderCapability", - "onRenderContinue", - "isCanvasHidden", - "showCanvas", - "actualSizeViewport", - "pixelsInViewport", - "maxScale", - "sfx", - "approximateFraction", - "sfy", - "roundToDivide", - "paintOnSvg", - "cancelled", - "ensureNotCancelled", - "opList", - "svgGfx", - "svg", - "wrapper", - "EXPAND_DIVS_TIMEOUT", - "endOfContent", - "numTextDivs", - "textLayerFrag", - "textContentStream", - "textDivs", - "textContentItemsStr", - "setTextContentStream", - "setTextContent", - "_convertMatches", - "iIndex", - "end", - "m", - "mm", - "begin", - "divIdx", - "_renderMatches", - "isSelectedPage", - "selectedMatchIdx", - "prevEnd", - "infinity", - "appendTextToDiv", - "span", - "i0", - "i1", - "isSelected", - "highlightSuffix", - "beginText", - "n0", - "n1", - "_updateMatches", - "clearedUntilDivIdx", - "n", - "pageMatches", - "pageMatchesLength", - "_bindMouse", - "expandDivsTimer", - "adjustTop", - "divBounds", - "xfa", - "XfaLayer", - "eventName", - "eventDetails", - "lastPage", - "pageRotateCw", - "pageRotateCcw", - "setPageNumber", - "setPagesCount", - "_bindClickListeners", - "details", - "_bindCursorToolsListener", - "buttons", - "_bindScrollModeListener", - "isScrollModeHorizontal", - "scrollModeChanged", - "_bindSpreadModeListener", - "spreadModeChanged", - "_setMaxHeight", - "_ensurePageViewVisible", - "previousPageView", - "viewerNodes", - "scrolledDown", - "PAGE_NUMBER_LOADING_INDICATOR", - "SCALE_SELECT_CONTAINER_WIDTH", - "SCALE_SELECT_WIDTH", - "scaleSelectContainer", - "scaleSelect", - "customScaleOption", - "setPageScale", - "_bindListeners", - "self", - "resetNumPages", - "pageScale", - "predefinedValueFound", - "option", - "updateLoadingIndicatorState", - "pageNumberInput", - "predefinedValuesPromise", - "overflow", - "DEFAULT_VIEW_HISTORY_CACHE_SIZE", - "cacheSize", - "databaseStr", - "database", - "branch", - "localStorage", - "properties", - "GenericCom", - "prefs", - "prefValue", - "defaultValue", - "defaultType", - "downloadUrl", - "createValidAbsoluteUrl", - "downloadData", - "blobUrl", - "createObjectURL", - "openOrDownloadData", - "isPdfData", - "isPdfFile", - "contentType", - "viewerUrl", - "encodeURIComponent", - "webL10n", - "gL10nData", - "gTextData", - "gTextProp", - "gLanguage", - "gMacros", - "gReadyState", - "gAsyncResourceLoading", - "script", - "l10nId", - "l10nArgs", - "onSuccess", - "onFailure", - "xhr", - "text", - "dictionary", - "reBlank", - "reComment", - "reSection", - "reImport", - "reSplit", - "entries", - "rawText", - "currentLang", - "genericLang", - "lang", - "skipLang", - "parsedRawLinesCallback", - "loadImport", - "tmp", - "evalString", - "nextEntry", - "xhrLoadText", - "parseRawLines", - "parsedPropertiesCallback", - "parseProperties", - "prop", - "successCallback", - "clear", - "langLinks", - "getL10nResourceLinks", - "langCount", - "dict", - "getL10nDictionary", - "defaultLocale", - "anyCaseLang", - "onResourceLoaded", - "gResourceCount", - "link", - "parseResource", - "resource", - "locales2rules", - "list", - "start", - "pluralRules", - "isBetween", - "getPluralRules", - "rv", - "substIndexes", - "substArguments", - "reIndex", - "reMatch", - "macroName", - "paramName", - "macro", - "reArgs", - "getL10nAttributes", - "getL10nData", - "getChildElementCount", - "children", - "l", - "textNode", - "getTranslatableChildren", - "elementCount", - "translateElement", - "get", - "getData", - "getText", - "getLanguage", - "setLanguage", - "loadLocale", - "getDirection", - "rtlList", - "shortCode", - "translate", - "getReadyState", - "ready", - "sandbox", - "activeService", - "scratchCanvas", - "PRINT_UNITS", - "PDFPrintService", - "layout", - "body", - "hasEqualPageSizes", - "ensureOverlay", - "renderPages", - "renderNextPage", - "renderProgress", - "renderPage", - "useRenderedPage", - "performPrint", - "print", - "throwIfInactive", - "activeServiceOnEntry", - "abort", - "progressContainer", - "progressBar", - "progressPerc", - "stopPropagationIfNeeded", - "overlayPromise", - "pdfjsVersion", - "pdfjsBuild", - "require", - "mainContainer", - "viewerContainer", - "viewFind", - "openFile", - "presentationModeButton", - "viewBookmark", - "toggleButton", - "toolbarButtonContainer", - "openFileButton", - "printButton", - "downloadButton", - "viewBookmarkButton", - "firstPageButton", - "lastPageButton", - "pageRotateCwButton", - "pageRotateCcwButton", - "cursorSelectToolButton", - "cursorHandToolButton", - "scrollVerticalButton", - "scrollHorizontalButton", - "scrollWrappedButton", - "spreadNoneButton", - "spreadOddButton", - "spreadEvenButton", - "documentPropertiesButton", - "sidebar", - "outerContainer", - "thumbnailButton", - "outlineButton", - "attachmentsButton", - "layersButton", - "outlineView", - "attachmentsView", - "layersView", - "outlineOptionsContainer", - "currentOutlineItemButton", - "sidebarResizer", - "resizer", - "findBar", - "findField", - "highlightAllCheckbox", - "caseSensitiveCheckbox", - "entireWordCheckbox", - "findResultsCount", - "findPreviousButton", - "findNextButton", - "passwordOverlay", - "overlayName", - "submitButton", - "cancelButton", - "documentProperties", - "fields", - "debuggerScriptPath", - "config", - "getViewerConfiguration", - "webViewerLoad" - ], - "mappings": "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", - "file": "viewer.js", - "sourcesContent": [ - "/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { viewerCompatibilityParams } from \"./viewer_compatibility.js\";\n\nconst OptionKind = {\n VIEWER: 0x02,\n API: 0x04,\n WORKER: 0x08,\n PREFERENCE: 0x80,\n};\n\n/**\n * PLEASE NOTE: To avoid introducing unnecessary dependencies, we specify the\n * values below *explicitly* rather than relying on imported types.\n */\nconst defaultOptions = {\n cursorToolOnLoad: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n defaultUrl: {\n /** @type {string} */\n value: \"compressed.tracemonkey-pldi-09.pdf\",\n kind: OptionKind.VIEWER,\n },\n defaultZoomValue: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n disableHistory: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER,\n },\n disablePageLabels: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n /**\n * The `disablePreferences` is, conditionally, defined below.\n */\n enablePermissions: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePrintAutoRotate: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableScripting: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableWebGL: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n externalLinkRel: {\n /** @type {string} */\n value: \"noopener noreferrer nofollow\",\n kind: OptionKind.VIEWER,\n },\n externalLinkTarget: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n historyUpdateUrl: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n ignoreDestinationZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n imageResourcesPath: {\n /** @type {string} */\n value: \"./images/\",\n kind: OptionKind.VIEWER,\n },\n /**\n * The `locale` is, conditionally, defined below.\n */\n maxCanvasPixels: {\n /** @type {number} */\n value: 16777216,\n compatibility: viewerCompatibilityParams.maxCanvasPixels,\n kind: OptionKind.VIEWER,\n },\n pdfBugEnabled: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n printResolution: {\n /** @type {number} */\n value: 150,\n kind: OptionKind.VIEWER,\n },\n renderer: {\n /** @type {string} */\n value: \"canvas\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n renderInteractiveForms: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n sidebarViewOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n scrollModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n spreadModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n textLayerMode: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n useOnlyCssZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewerCssTheme: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewOnLoad: {\n /** @type {boolean} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n\n cMapPacked: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n cMapUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/bcmaps/\"\n : \"../web/cmaps/\",\n kind: OptionKind.API,\n },\n disableAutoFetch: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableFontFace: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableRange: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableStream: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n docBaseUrl: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.API,\n },\n enableXfa: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n fontExtraProperties: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n isEvalSupported: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n maxImageSize: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.API,\n },\n pdfBug: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n verbosity: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.API,\n },\n\n workerPort: {\n /** @type {Object} */\n value: null,\n kind: OptionKind.WORKER,\n },\n workerSrc: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../src/worker_loader.js\"\n : \"../build/pdf.worker.js\",\n kind: OptionKind.WORKER,\n },\n};\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n defaultOptions.disablePreferences = {\n /** @type {boolean} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\"),\n kind: OptionKind.VIEWER,\n };\n defaultOptions.locale = {\n /** @type {string} */\n value: typeof navigator !== \"undefined\" ? navigator.language : \"en-US\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../build/dev-sandbox/pdf.sandbox.js\"\n : \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n} else if (PDFJSDev.test(\"CHROME\")) {\n defaultOptions.disableTelemetry = {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value: \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n}\n\nconst userOptions = Object.create(null);\n\nclass AppOptions {\n constructor() {\n throw new Error(\"Cannot initialize AppOptions.\");\n }\n\n static get(name) {\n const userOption = userOptions[name];\n if (userOption !== undefined) {\n return userOption;\n }\n const defaultOption = defaultOptions[name];\n if (defaultOption !== undefined) {\n return defaultOption.compatibility ?? defaultOption.value;\n }\n return undefined;\n }\n\n static getAll(kind = null) {\n const options = Object.create(null);\n for (const name in defaultOptions) {\n const defaultOption = defaultOptions[name];\n if (kind) {\n if ((kind & defaultOption.kind) === 0) {\n continue;\n }\n if (kind === OptionKind.PREFERENCE) {\n const value = defaultOption.value,\n valueType = typeof value;\n\n if (\n valueType === \"boolean\" ||\n valueType === \"string\" ||\n (valueType === \"number\" && Number.isInteger(value))\n ) {\n options[name] = value;\n continue;\n }\n throw new Error(`Invalid type for preference: ${name}`);\n }\n }\n const userOption = userOptions[name];\n options[name] =\n userOption !== undefined\n ? userOption\n : defaultOption.compatibility ?? defaultOption.value;\n }\n return options;\n }\n\n static set(name, value) {\n userOptions[name] = value;\n }\n\n static setAll(options) {\n for (const name in options) {\n userOptions[name] = options[name];\n }\n }\n\n static remove(name) {\n delete userOptions[name];\n }\n}\n\nexport { AppOptions, OptionKind };\n", - "/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const userAgent =\n (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n const platform =\n (typeof navigator !== \"undefined\" && navigator.platform) || \"\";\n const maxTouchPoints =\n (typeof navigator !== \"undefined\" && navigator.maxTouchPoints) || 1;\n\n const isAndroid = /Android/.test(userAgent);\n const isIOS =\n /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||\n (platform === \"MacIntel\" && maxTouchPoints > 1);\n const isIOSChrome = /CriOS/.test(userAgent);\n\n // Checks if possible to use URL.createObjectURL()\n // Support: IE, Chrome on iOS\n (function checkOnBlobSupport() {\n // Sometimes Chrome on iOS loses data created with createObjectURL(),\n // see issue #8081.\n if (isIOSChrome) {\n compatibilityParams.disableCreateObjectURL = true;\n }\n })();\n\n // Limit canvas size to 5 mega-pixels on mobile.\n // Support: Android, iOS\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\nconst viewerCompatibilityParams = Object.freeze(compatibilityParams);\n\nexport { viewerCompatibilityParams };\n", - "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals PDFBug, Stats */\n\nimport {\n animationStarted,\n apiPageLayoutToSpreadMode,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n DEFAULT_SCALE_VALUE,\n EventBus,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport {\n build,\n createPromiseCapability,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n LinkTarget,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n PermissionFlag,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n version,\n} from \"pdfjs-lib\";\nimport { CursorTool, PDFCursorTools } from \"./pdf_cursor_tools.js\";\nimport { PDFRenderingQueue, RenderingStates } from \"./pdf_rendering_queue.js\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"./pdf_attachment_viewer.js\";\nimport { PDFDocumentProperties } from \"./pdf_document_properties.js\";\nimport { PDFFindBar } from \"./pdf_find_bar.js\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"./pdf_layer_viewer.js\";\nimport { PDFLinkService } from \"./pdf_link_service.js\";\nimport { PDFOutlineViewer } from \"./pdf_outline_viewer.js\";\nimport { PDFPresentationMode } from \"./pdf_presentation_mode.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"./pdf_sidebar.js\";\nimport { PDFSidebarResizer } from \"./pdf_sidebar_resizer.js\";\nimport { PDFThumbnailViewer } from \"./pdf_thumbnail_viewer.js\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"./secondary_toolbar.js\";\nimport { Toolbar } from \"./toolbar.js\";\nimport { viewerCompatibilityParams } from \"./viewer_compatibility.js\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\nconst ENABLE_PERMISSIONS_CLASS = \"enablePermissions\";\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_VERSIONS = [\n \"1.0\",\n \"1.1\",\n \"1.2\",\n \"1.3\",\n \"1.4\",\n \"1.5\",\n \"1.6\",\n \"1.7\",\n \"1.8\",\n \"1.9\",\n \"2.0\",\n \"2.1\",\n \"2.2\",\n \"2.3\",\n];\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_GENERATORS = [\n \"acrobat distiller\",\n \"acrobat pdfwriter\",\n \"adobe livecycle\",\n \"adobe pdf library\",\n \"adobe photoshop\",\n \"ghostscript\",\n \"tcpdf\",\n \"cairo\",\n \"dvipdfm\",\n \"dvips\",\n \"pdftex\",\n \"pdfkit\",\n \"itext\",\n \"prince\",\n \"quarkxpress\",\n \"mac os x\",\n \"microsoft\",\n \"openoffice\",\n \"oracle\",\n \"luradocument\",\n \"pdf-xchange\",\n \"antenna house\",\n \"aspose.cells\",\n \"fpdf\",\n];\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static async fallback(data) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager(options) {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n fellback: false,\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n triggerDelayedFallback: null,\n _saveInProgress: false,\n _wheelUnusedTicks: 0,\n _idleCallbacks: new Set(),\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._readPreferences();\n await this._parseHashParameters();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an